summaryrefslogtreecommitdiff
path: root/Master/xemtex/doc/ghostscript
diff options
context:
space:
mode:
Diffstat (limited to 'Master/xemtex/doc/ghostscript')
-rw-r--r--Master/xemtex/doc/ghostscript/API.htm671
-rw-r--r--Master/xemtex/doc/ghostscript/C-style.htm1588
-rw-r--r--Master/xemtex/doc/ghostscript/CJK.htm497
-rw-r--r--Master/xemtex/doc/ghostscript/CJKTTCID.htm409
-rw-r--r--Master/xemtex/doc/ghostscript/COPYING340
-rw-r--r--Master/xemtex/doc/ghostscript/COPYING.LGPL510
-rw-r--r--Master/xemtex/doc/ghostscript/Changes.htm288
-rw-r--r--Master/xemtex/doc/ghostscript/Current.htm272
-rw-r--r--Master/xemtex/doc/ghostscript/DLL.htm703
-rw-r--r--Master/xemtex/doc/ghostscript/Develop.htm4327
-rw-r--r--Master/xemtex/doc/ghostscript/Devices.htm6046
-rw-r--r--Master/xemtex/doc/ghostscript/Drivers.htm2538
-rw-r--r--Master/xemtex/doc/ghostscript/Fonts.htm1288
-rw-r--r--Master/xemtex/doc/ghostscript/Helpers.htm303
-rw-r--r--Master/xemtex/doc/ghostscript/Hershey.htm305
-rw-r--r--Master/xemtex/doc/ghostscript/History1.htm436
-rw-r--r--Master/xemtex/doc/ghostscript/History2.htm5231
-rw-r--r--Master/xemtex/doc/ghostscript/History3.htm8597
-rw-r--r--Master/xemtex/doc/ghostscript/History4.htm3980
-rw-r--r--Master/xemtex/doc/ghostscript/History5.htm13454
-rw-r--r--Master/xemtex/doc/ghostscript/History6.htm7293
-rw-r--r--Master/xemtex/doc/ghostscript/History7.htm5109
-rw-r--r--Master/xemtex/doc/ghostscript/Htmstyle.htm778
-rw-r--r--Master/xemtex/doc/ghostscript/Humor.htm99
-rw-r--r--Master/xemtex/doc/ghostscript/Install.htm540
-rw-r--r--Master/xemtex/doc/ghostscript/Issues.htm502
-rw-r--r--Master/xemtex/doc/ghostscript/Language.htm1897
-rw-r--r--Master/xemtex/doc/ghostscript/Lib.htm491
-rw-r--r--Master/xemtex/doc/ghostscript/Maintain.htm210
-rw-r--r--Master/xemtex/doc/ghostscript/Make.htm2766
-rw-r--r--Master/xemtex/doc/ghostscript/New-user.htm592
-rw-r--r--Master/xemtex/doc/ghostscript/News.htm96
-rw-r--r--Master/xemtex/doc/ghostscript/Projects.htm629
-rw-r--r--Master/xemtex/doc/ghostscript/Ps-style.htm514
-rw-r--r--Master/xemtex/doc/ghostscript/Ps2epsi.htm154
-rw-r--r--Master/xemtex/doc/ghostscript/Ps2pdf.htm502
-rw-r--r--Master/xemtex/doc/ghostscript/Psfiles.htm832
-rw-r--r--Master/xemtex/doc/ghostscript/README391
-rw-r--r--Master/xemtex/doc/ghostscript/Readme.htm634
-rw-r--r--Master/xemtex/doc/ghostscript/Release.htm769
-rw-r--r--Master/xemtex/doc/ghostscript/Source.htm383
-rw-r--r--Master/xemtex/doc/ghostscript/Unix-lpr.htm267
-rw-r--r--Master/xemtex/doc/ghostscript/Use.htm3036
-rw-r--r--Master/xemtex/doc/ghostscript/Xfonts.htm265
-rw-r--r--Master/xemtex/doc/ghostscript/examples/alphabet.ps62
-rw-r--r--Master/xemtex/doc/ghostscript/examples/annots.pdfbin0 -> 500156 bytes
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/all_ac1.ps221
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/all_ag1.ps218
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/all_aj1.ps218
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/all_aj2.ps214
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/all_ak1.ps215
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ac.ps120
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ag.ps120
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/gscjk_aj.ps114
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ak.ps116
-rw-r--r--Master/xemtex/doc/ghostscript/examples/cjk/iso2022.ps1256
-rw-r--r--Master/xemtex/doc/ghostscript/examples/colorcir.ps125
-rw-r--r--Master/xemtex/doc/ghostscript/examples/doretree.ps2485
-rw-r--r--Master/xemtex/doc/ghostscript/examples/escher.ps384
-rw-r--r--Master/xemtex/doc/ghostscript/examples/golfer.ps1401
-rw-r--r--Master/xemtex/doc/ghostscript/examples/grayalph.ps65
-rw-r--r--Master/xemtex/doc/ghostscript/examples/ridt91.eps135
-rw-r--r--Master/xemtex/doc/ghostscript/examples/snowflak.ps93
-rw-r--r--Master/xemtex/doc/ghostscript/examples/tiger.ps2737
-rw-r--r--Master/xemtex/doc/ghostscript/examples/vasarely.ps588
-rw-r--r--Master/xemtex/doc/ghostscript/examples/waterfal.ps80
-rw-r--r--Master/xemtex/doc/ghostscript/gs-vms.hlp293
-rw-r--r--Master/xemtex/doc/ghostscript/gs.css73
-rw-r--r--Master/xemtex/doc/ghostscript/gsdoc.el701
-rw-r--r--Master/xemtex/doc/ghostscript/index.html14
70 files changed, 92580 insertions, 0 deletions
diff --git a/Master/xemtex/doc/ghostscript/API.htm b/Master/xemtex/doc/ghostscript/API.htm
new file mode 100644
index 00000000000..01eff34f577
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/API.htm
@@ -0,0 +1,671 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>The Ghostscript Interpreter Application Programming Interface (API)</title>
+<!-- $Id: API.htm,v 1.11.2.13.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Supercedes the API in DLL.htm -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>The Ghostscript Interpreter Application Programming Interface (API)</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#API">What is the Ghostscript Interpreter API?</a>
+<li><a href="#Exported_functions ">Exported functions</a>
+<ul>
+<li><a href="#revision"><b><tt>gsapi_revision</tt></b></a>
+<li><a href="#new_instance"><b><tt>gsapi_new_instance</tt></b></a>
+<li><a href="#delete_instance"><b><tt>gsapi_delete_instance</tt></b></a>
+<li><a href="#set_stdio"><b><tt>gsapi_set_stdio</tt></b></a>
+<li><a href="#set_poll"><b><tt>gsapi_set_poll</tt></b></a>
+<li><a href="#set_display_callback"><b><tt>gsapi_set_display_callback</tt></b></a>
+<li><a href="#init"><b><tt>gsapi_init_with_args</tt></b></a>
+<li><a href="#run"><b><tt>gsapi_run_*</tt></b></a>
+<li><a href="#exit"><b><tt>gsapi_exit</tt></b></a>
+<li><a href="#return_codes">Return codes</a>
+</ul>
+<li><a href="#Example_usage">Example usage</a>
+<li><a href="#stdio">Standard input and output</a>
+<li><a href="#display">Display device</a>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<p>
+<b>WARNING:</b> The API described in this document is subject to changes in
+future releases, possibly ones that are not backward compatible with what
+is described here.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+
+<h2><a name="API"></a>What is the Ghostscript Interpreter API?</h2>
+
+<p>
+The Ghostscript interpreter can be built as a dynamic link library
+(DLL) on the Windows or OS/2 platforms, as a shared object on the
+GNU/Linux platform and as a framework on MacOS X.
+With some changes, it could be built as a static library.
+This document describes the Application Programming Interface (API)
+for the Ghostscript interpreter library.
+This should not be confused with the
+<a href="Lib.htm">Ghostscript library</a> which provides a graphics
+library but not the interpreter.
+<p>
+This supercedes the old <a href="DLL.htm">DLL</a> interface.
+<p>
+To provide the interface described in the
+<a href="Use.htm">usage documentation</a>, a smaller independent
+executable loads the DLL/shared object.
+This executable provides all the interaction with the windowing system,
+including image windows and, if necessary, a text window.
+
+<p>
+The Ghostscript interpreter library's name and characteristics differ
+for each platform:
+
+<ul>
+<li>The Win32 DLL <b><tt>gsdll32.dll</tt></b> has
+MULTIPLE NONSHARED data segments. Under Win32s it can be used by only one
+program at a time, but under Windows 95/98 or Windows NT it can be called by
+multiple programs simultaneously.
+
+<li>The OS/2 DLL <b><tt>gsdll2.dll</tt></b> has
+MULTIPLE NONSHARED data segments and can be called by multiple programs
+simultaneously.
+
+<li>The GNU/Linux shared object <b><tt>libgs.so</tt></b>
+can be used by multiple programs simultaneously.
+
+<li>The MacOS X <b><tt>Ghostscript.framework</tt></b> can also be used
+by multiple applications at once.
+</ul>
+
+<p>
+The source for the executable is in <b><tt>dw</tt></b>*.* (Windows),
+<b><tt>dp</tt></b>*.* (OS/2) and <b><tt>dx</tt></b>*.* (GNU/Linux).
+See these source files for examples of how to use the DLL.
+
+<p>
+The source file <tt>dxmainc.c</tt> can serve as an example of how to use the
+framework shared component on MacOS X. Just change the header includes to use
+the Ghostscript namespace:
+<blockquote><pre><tt>#include &lt;Ghostscript/errors.h&gt;
+#include &lt;Ghostscript/iapi.h&gt;</tt></pre></blockquote>
+and link with:
+<blockquote><pre><tt>cc -o gsc dxmainc.c -framework Ghostscript</tt></pre></blockquote>
+To get a useable executable. <tt>Ghostscript.framework</tt> must be properly
+installed in the search path for this to work.
+
+<p>
+At this stage, Ghostscript does not support multiple instances
+of the interpreter within a single process.
+
+<hr>
+
+<h2><a name="Exported_functions"></a>Exported functions</h2>
+
+<p>
+The functions exported by the DLL/shared object are described
+in the header file <a href="../src/iapi.h"><b><tt>iapi.h</tt></b></a>
+and are summarised below. Omitted from the summary are
+the calling convention (e.g. __stdcall), details of return
+values and error handling.
+
+
+<ul>
+<li><b><tt>
+int
+<a href="#revision">gsapi_revision</a>
+ (gsapi_revision_t *pr, int len));
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#new_instance">gsapi_new_instance</a>
+(gs_main_instance **pinstance, void *caller_handle);
+</tt></b>
+
+<li><b><tt>
+void
+<a href="#delete_instance">gsapi_delete_instance</a>
+(gs_main_instance *instance);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#set_stdio">gsapi_set_stdio</a>
+(gs_main_instance *instance,
+ int(*stdin_fn)(void *caller_handle, char *buf, int len),
+ int(*stdout_fn)(void *caller_handle, const char *str, int len),
+ int(*stderr_fn)(void *caller_handle, const char *str, int len));
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#set_poll">gsapi_set_poll</a>
+(gs_main_instance *instance, int(*poll_fn)(void *caller_handle));
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#set_display_callback">gsapi_set_display_callback</a>
+(gs_main_instance *instance, display_callback *callback);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#init">gsapi_init_with_args</a>
+(gs_main_instance *instance, int argc, char **argv);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#run">gsapi_run_string_begin</a>
+(gs_main_instance *instance, int user_errors, int *pexit_code);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#run">gsapi_run_string_continue</a>
+(gs_main_instance *instance,
+ const char *str, unsigned int length, int user_errors, int *pexit_code);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#run">gsapi_run_string_end</a>
+(gs_main_instance *instance, int user_errors, int *pexit_code);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#run">gsapi_run_string_with_length</a>
+(gs_main_instance *instance,
+ const char *str, unsigned int length, int user_errors, int *pexit_code);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#run">gsapi_run_string</a>
+(gs_main_instance *instance,
+ const char *str, int user_errors, int *pexit_code);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#run">gsapi_run_file</a>
+(gs_main_instance *instance,
+ const char *file_name, int user_errors, int *pexit_code);
+</tt></b>
+
+<li><b><tt>
+int
+<a href="#exit">gsapi_exit</a>
+(gs_main_instance *instance);
+</tt></b>
+
+</ul>
+
+<h3><a name="revision"></a><b><tt>gsapi_revision()</tt></b></h3>
+
+<blockquote>
+This function returns the revision numbers and strings of the Ghostscript
+interpreter library; you should call it before any other interpreter
+library functions to make sure that the correct version of the
+Ghostscript interpreter has been loaded.
+
+<blockquote>
+<pre>
+typedef struct gsapi_revision_s {
+ const char *product;
+ const char *copyright;
+ long revision;
+ long revisiondate;
+} gsapi_revision_t;
+gsapi_revision_t r;
+
+if (gsapi_revision(&amp;r, sizeof(r)) == 0) {
+ if (r.revision < 650)
+ printf("Need at least Ghostscript 6.50");
+}
+else {
+ printf("revision structure size is incorrect");
+}
+</pre></blockquote>
+</blockquote>
+
+
+<h3><a name="new_instance"></a><b><tt>gsapi_new_instance()</tt></b></h3>
+<blockquote>
+Create a new instance of Ghostscript.
+This instance is passed to most other gsapi functions.
+The caller_handle will be provided to callback functions.
+<b>At this stage, Ghostscript supports only one instance</b>.
+</blockquote>
+
+
+<h3><a name="delete_instance"></a><b><tt>gsapi_delete_instance()</tt></b></h3>
+<blockquote>
+Destroy an instance of Ghostscript.
+Before you call this, Ghostscript must have finished.
+If Ghostscript has been initialised, you must call
+<b><tt>gsapi_exit</tt></b> before <b><tt>gsapi_delete_instance</tt></b>.
+</blockquote>
+
+
+<h3><a name="set_stdio"></a><b><tt>gsapi_set_stdio()</tt></b></h3>
+<blockquote>
+Set the callback functions for stdio
+The stdin callback function should return the number of
+characters read, 0 for EOF, or -1 for error.
+The stdout and stderr callback functions should return
+the number of characters written.
+</blockquote>
+
+
+<h3><a name="set_poll"></a><b><tt>gsapi_set_poll()</tt></b></h3>
+<blockquote>
+Set the callback function for polling.
+This is used for handling window events or cooperative
+multitasking. This function will only be called if
+the Ghostscript interpreter was compiled with <b><tt>CHECK_INTERRUPTS</tt></b>
+as described in <b><tt><a href="../src/gpcheck.h">gpcheck.h</a></tt></b>.
+</blockquote>
+
+<h3><a name="set_display_callback"></a><b><tt>gsapi_set_display_callback()</tt></b></h3>
+<blockquote>
+Set the callback structure for the <a href="#display">display</a>
+device. If the <a href="#display">display</a> device is used,
+this must be called after
+<b><tt>gsapi_new_instance()</tt></b>
+and before <b><tt>gsapi_init_with_args()</tt></b>.
+See <b><tt><a href="../src/gdevdsp.h">gdevdsp.h</a></tt></b>
+for more details.
+</blockquote>
+
+<h3><a name="init"></a><b><tt>gsapi_init_with_args()</tt></b></h3>
+<blockquote>
+Initialise the interpreter.
+This calls <b><tt>gs_main_init_with_args()</tt></b> in
+<b><tt><a href="../src/imainarg.c">imainarg.c</a></tt></b>.
+See below for <a href="#return_codes">return codes</a>.
+The arguments are the same as the "C" main function:
+argv[0] is ignored and the user supplied arguments
+are argv[1] to argv[argc-1].
+</blockquote>
+
+<h3><a name="run"></a><b><tt>gsapi_run_*()</tt></b></h3>
+<blockquote>
+The <b><tt>gsapi_run_*</tt></b> functions are like
+<b><tt>gs_main_run_*</tt></b> except that the error_object is omitted.
+If these functions return <= -100, either quit or a fatal
+error has occured. You must call <b><tt>gsapi_exit()</tt></b> next.
+The only exception is <b><tt>gsapi_run_string_continue()</tt></b>
+which will return <b><tt>e_NeedInput</tt></b> if all is well.
+See below for <a href="#return_codes">return codes</a>.
+</blockquote>
+
+<h3><a name="exit"></a><b><tt>gsapi_exit()</tt></b></h3>
+<blockquote>
+Exit the interpreter.
+This must be called on shutdown if <b><tt>gsapi_init_with_args()</tt></b>
+has been called, and just before <b><tt>gsapi_delete_instance()</tt></b>.
+</blockquote>
+
+<h3><a name="return_codes"></a>Return codes</h3>
+
+<p>
+The <b><tt>gsapi_init_with_args</tt></b>, <b><tt>gsapi_run_*</tt></b> and
+<b><tt>gsapi_exit</tt></b> functions return an integer code.
+
+<p>
+<table width="80%" align="center" cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Return codes from <b><tt>gsapi_*()</tt></b></font><hr>
+<tr valign=bottom>
+ <th align=left>Code
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Status
+<tr> <td colspan=3><hr>
+<tr valign=top> <td align=left>0
+ <td>&nbsp;
+ <td>No errors
+<tr valign=top> <td align=left>e_Quit
+ <td>&nbsp;
+ <td>"<b><tt>quit</tt></b>" has been executed.
+ This is not an error.
+ <b><tt>gsapi_exit()</tt></b> must be called next.
+<tr valign=top> <td align=left>e_NeedInput
+ <td>&nbsp;
+ <td>More input is needed by
+ <b><tt>gsapi_run_string_continue()</tt></b>.
+ This is not an error.
+<tr valign=top> <td align=left>e_Info
+ <td>&nbsp;
+ <td>"<b><tt>gs -h</tt></b>" has been executed.
+ This is not an error.
+ <b><tt>gsapi_exit()</tt></b> must be called next.
+<tr valign=top> <td align=left>&lt; 0
+ <td>&nbsp;
+ <td>Error
+<tr valign=top> <td align=left>&lt;= -100
+ <td>&nbsp;
+ <td>Fatal error.
+<b><tt>gsapi_exit()</tt></b> must be called next.
+</table>
+</blockquote>
+
+<p>
+The <b><tt>gsapi_run_*()</tt></b> functions do not flush stdio.
+If you want to see output from Ghostscript you
+must do this explicitly as shown in the example below.
+
+<p>
+When executing a string with <b><tt>gsapi_run_string_*()</tt></b>,
+<b><tt>currentfile</tt></b> is the input from the string.
+Reading from <b><tt>%stdin</tt></b> uses the stdin callback.
+</blockquote>
+
+
+
+<h2><a name="Example_usage"></a>Example Usage</h2>
+Some overly simple examples of using the Ghostscript interpreter library are:
+
+<h3>Example 1</h3>
+<pre>
+/* Example of using GS DLL as a ps2pdf converter. */
+
+#ifdef _Windows
+/* Compile with:
+ * cl -D_Windows -Isrc -Febin\ps2pdf.exe ps2pdf.c bin\gsdll32.lib
+ */
+#include &lt;windows.h&gt;
+#define GSDLLEXPORT __declspec(dllimport)
+#endif
+
+#include "errors.h"
+#include "iapi.h"
+
+gs_main_instance *minst;
+
+int main(int argc, char *argv[])
+{
+ int code;
+ int exit_code;
+ const char * gsargv[10];
+ int gsargc;
+ gsargv[0] = "ps2pdf"; /* actual value doesn't matter */
+ gsargv[1] = "-dNOPAUSE";
+ gsargv[2] = "-dBATCH";
+ gsargv[3] = "-dSAFER";
+ gsargv[4] = "-sDEVICE=pdfwrite";
+ gsargv[5] = "-sOutputFile=out.pdf";
+ gsargv[6] = "-c";
+ gsargv[7] = ".setpdfwrite";
+ gsargv[8] = "-f";
+ gsargv[9] = "input.ps";
+ gsargc=10;
+
+ code = gsapi_new_instance(&minst, NULL);
+ if (code &lt; 0)
+ return 1;
+ code = gsapi_init_with_args(minst, gsargc, gsargv);
+ gsapi_exit(minst);
+
+ gsapi_delete_instance(minst);
+
+ if ((code == 0) || (code == e_Quit))
+ return 0;
+ return 1;
+}
+</pre>
+
+<h3>Example 2</h3>
+<pre>
+/* Similar to command line gs */
+
+#include &lt;stdio.h&gt;
+#include "errors.h"
+#include "iapi.h"
+
+/* stdio functions */
+static int GSDLLCALL
+gsdll_stdin(void *instance, char *buf, int len)
+{
+ int ch;
+ int count = 0;
+ while (count &lt; len) {
+ ch = fgetc(stdin);
+ if (ch == EOF)
+ return 0;
+ *buf++ = ch;
+ count++;
+ if (ch == '\n')
+ break;
+ }
+ return count;
+}
+
+static int GSDLLCALL
+gsdll_stdout(void *instance, const char *str, int len)
+{
+ fwrite(str, 1, len, stdout);
+ fflush(stdout);
+ return len;
+}
+
+static int GSDLLCALL
+gsdll_stderr(void *instance, const char *str, int len)
+{
+ fwrite(str, 1, len, stderr);
+ fflush(stderr);
+ return len;
+}
+
+gs_main_instance *minst;
+const char start_string[] = "systemdict /start get exec\n";
+
+int main(int argc, char *argv[])
+{
+ int code;
+ int exit_code;
+
+ code = gsapi_new_instance(&minst, NULL);
+ if (code < 0)
+ return 1;
+ gsapi_set_stdio(minst, gsdll_stdin, gsdll_stdout, gsdll_stderr);
+ code = gsapi_init_with_args(minst, argc, argv);
+ if (code == 0)
+ code = gsapi_run_string(minst, start_string, 0, &exit_code);
+ gsapi_exit(minst);
+
+ gsapi_delete_instance(minst);
+
+ if ((code == 0) || (code == e_Quit))
+ return 0;
+ return 1;
+}
+</pre>
+
+<h3>Example 3</h3>
+
+Replace main() in either of the above with the following code,
+showing how you can feed Ghostscript piecemeal:
+<pre>
+const char *command = "1 2 add == flush\n";
+
+int main(int argc, char *argv[])
+{
+ int code;
+ int exit_code;
+
+ code = gsapi_new_instance(&minst, NULL);
+ if (code < 0)
+ return 1;
+ code = gsapi_init_with_args(minst, argc, argv);
+
+ if (code == 0) {
+ gsapi_run_string_begin(minst, 0, &exit_code);
+ gsapi_run_string_continue(minst, command, strlen(command), 0, &exit_code);
+ gsapi_run_string_continue(minst, "qu", 2, 0, &exit_code);
+ gsapi_run_string_continue(minst, "it", 2, 0, &exit_code);
+ gsapi_run_string_end(minst, 0, &exit_code);
+ }
+
+ gsapi_exit(minst);
+
+ gsapi_delete_instance(minst);
+
+ if ((code == 0) || (code == e_Quit))
+ return 0;
+ return 1;
+}
+</pre>
+
+
+<h2><a name="Multiple_threads"></a>Multiple threads</h2>
+The Ghostscript library should have been compiled with a
+thread safe run time library.
+Synchronisation of threads is entirely up to the caller.
+
+<h2><a name="stdio"></a>Standard input and output</h2>
+<p>
+When using the Ghostscript interpreter library interface, you have a
+choice of two standard input/output methods.
+<ul>
+<li>If you do nothing, the "C" stdio will be used.
+<li>If you use <b><tt>gsapi_set_stdio()</tt></b>, all stdio will
+ be redirected to the callback functions you provide.
+ This would be used in a graphical user interface environment
+ where stdio is not available, or where you wish to process
+ Ghostscript input or output.
+</ul>
+<p>
+The callback functions are described in
+<a href="../src/iapi.h"><b><tt>iapi.h</tt></b></a>.
+
+
+<h2><a name="display"></a>Display device</h2>
+<p>
+The <b><tt>display</tt></b> device is available for use with
+the Ghostscript interpreter library. This is described in the file
+<b><tt><a href="../src/gdevdsp.h">gdevdsp.h</a></tt></b>.
+This device provides you with access to the raster output of
+Ghostscript. It is your responsibility to copy this raster
+to a display window or printer.
+<p>
+To use this device, you must provide a callback structure
+with addresses of a number of callback functions.
+The address of the callback structure is provided using
+<b><tt>gsapi_set_display_callback()</tt></b>.
+This must be called after
+<b><tt>gsapi_new_instance()</tt></b>
+and before
+<b><tt>gsapi_init_with_args()</tt></b>.
+<p>
+The callbacks are for device open, close, resize, sync, page,
+memory allocation and updating.
+Each callback function contains a handle can be set using
+<blockquote>
+ -dDisplayHandle=1234
+</blockquote>
+<p>
+The device raster format can be configured using
+<blockquote>
+ -dDisplayFormat=NNNN
+</blockquote>
+Options include
+<ul>
+<li> native, gray, RGB or CMYK color spaces.
+<li> alpha byte (ignored).
+<li> 1 to 16 bits/component.
+<li> bigendian (RGB) or littleendian (BGR) order.
+<li> top first or bottom first raster.
+<li> 16 bits/pixel with 555 or 565 bitfields.
+</ul>
+The format values are described in
+<b><tt><a href="../src/gdevdsp.h">gdevdsp.h</a></tt></b>.
+The format is flexible enough to support common Windows, OS/2, GNU/Linux
+and Mac raster formats. To select the display device with a
+Windows 24-bit RGB raster:
+<pre>
+ char **nargv;
+ char arg1[64];
+ char arg2[64];
+ char arg3[64];
+ code = gsapi_new_instance(&minst, NULL);
+ gsapi_set_stdio(minst, gsdll_stdin, gsdll_stdout, gsdll_stderr);
+ code = gsapi_set_display_callback(minst, &display_callback);
+ sprintf(arg1, "-sDEVICE=display");
+ sprintf(arg2, "-dDisplayHandle=%d", 0);
+ sprintf(arg3, "-dDisplayFormat=%d",
+ DISPLAY_COLORS_RGB | DISPLAY_ALPHA_NONE | DISPLAY_DEPTH_8 |
+ DISPLAY_LITTLEENDIAN | DISPLAY_BOTTOMFIRST);
+ nargv = (char **)malloc((argc + 4) * sizeof(char *));
+ nargv[0] = argv[0];
+ nargv[1] = arg1;
+ nargv[2] = arg2;
+ nargv[3] = arg3;
+ memcpy(nargv + 4, argv + 1, argc * sizeof(char *));
+ argc += 3;
+ code = gsapi_init_with_args(minst, argc, nargv);
+</pre>
+
+<p>
+The display device provides you with the address and size of the
+raster using the <b><tt>display_size()</tt></b> callback.
+You are then responsible for displaying this raster.
+Some examples are in
+<b><tt><a href="../src/dwmain.c">dwmain.c</a></tt></b> (Windows),
+<b><tt><a href="../src/dpmain.c">dpmain.c</a></tt></b> (OS/2) and
+<b><tt><a href="../src/dxmain.c">dxmain.c</a></tt></b> (X11/GNU/Linux).
+
+<p>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+
+<p>
+<small>Copyright &copy; 2001 artofcode LLC. 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>
diff --git a/Master/xemtex/doc/ghostscript/C-style.htm b/Master/xemtex/doc/ghostscript/C-style.htm
new file mode 100644
index 00000000000..0e17e4d5e0e
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/C-style.htm
@@ -0,0 +1,1588 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript C coding guidelines</title>
+<!-- $Id: C-style.htm,v 1.21.2.11.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: c-style.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript C coding guidelines</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#C_language">C language do's and don'ts</a>
+<ul>
+<li>Preprocessor:
+ <a href="#Conditionals">Conditionals</a>,
+ <a href="#Macros">Macros</a>,
+ <a href="#Preprocessor_other">Other</a>
+<li><a href="#Lexical_elements">Lexical elements</a>
+<li><a href="#Scoping">Scoping</a>
+<li>Data types:
+ <a href="#Scalars">Scalars</a>,
+ <a href="#Arrays">Arrays</a>,
+ <a href="#Typedefs">Typedefs</a>,
+ <a href="#Structures">Structures</a>,
+ <a href="#Unions">Unions</a>
+<li><a href="#Expressions">Expressions</a>
+<li><a href="#Statements">Statements</a>
+<li><a href="#Procedures">Procedures</a> (prototypes and definitions)
+<li><a href="#Standard_library">Standard library</a>
+</ul>
+<li><a href="#Language_extensions">Language extensions</a>
+<li><a href="#Stylistic_conventions">Stylistic conventions</a>
+<ul>
+<li>Formatting:
+ <a href="#Indentation">Indentation</a>,
+ <a href="#Spaces">Spaces</a>,
+ <a href="#Parentheses">Parentheses</a>
+<li><a href="#Preprocessor_style">Preprocessor</a>
+<li><a href="#Naming">Naming</a>
+<li><a href="#Types">Types</a>
+<li><a href="#Procedures_style">Procedures</a>,
+<li>Miscellany:
+ <a href="#Local_variables">Local variables</a>,
+ <a href="#Compiler_warnings">Compiler warnings</a>
+</ul>
+<li><a href="#File_structuring">File structuring and naming</a>
+<ul>
+<li><a href="#All_files">All files</a>
+<li><a href="#Makefiles">Makefiles</a>
+<li><a href="#General_C_code">General C Code</a>
+<li><a href="#Headers">Headers (<b><tt>.h</tt></b> files)</a>
+<li><a href="#Source">Source (<b><tt>.c</tt></b> files)</a>
+</ul>
+<li><a href="#Conventions">Ghostscript conventions</a>
+<ul>
+<li><a href="#Specific_names">Specific names</a>:
+ <a href="#code"><b><tt>code</tt></b></a>,
+ <a href="#status"><b><tt>status</tt></b></a>
+<li><a href="#Structure_type_descriptors">Structure type descriptors</a>
+<li><a href="#Objects">"Objects"</a>
+<li><a href="#Error_handling">Error handling</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+This document describes Ghostscript's C coding conventions. It is primarily
+<em>prescriptive</em>, documenting what developers should do when writing
+new code; the companion developer documentation (<a
+ href="Develop.htm">Develop.htm</a>) is primarily <em>descriptive</em>,
+documenting the way things are.
+
+<p>
+We encourage following the general language usage and stylistic rules for
+any code that will be integrated with Ghostscript, even if the code doesn't
+use Ghostscript's run-time facilities or have anything to do with
+PostScript, PDF, or page description languages. Ghostscript itself follows
+some additional conventions; these are documented separately under "<a
+href="#Conventions">Ghostscript conventions</a>" below.
+
+<hr>
+
+<h2><a name="C_language"></a>C language do's and don'ts</h2>
+
+<p>
+There are several different versions of the C language, and even of the ANSI
+C standard. Ghostscript versions through 7.0 were designed to compile on
+pre-ANSI compilers as well as on many compilers that implemented the ANSI
+standard with varying faithfulness. Ghostscript versions since 7.0 do not
+cater for pre-ANSI compilers: they must conform to the ANSI 1989 standard
+(ANS X3.159-1989), with certain restrictions and a few conventional
+additions.
+
+<h3>Preprocessor</h3>
+
+<h4><a name="Conditionals"></a>Conditionals</h4>
+
+Restrictions:
+
+<ul>
+
+<li>Don't assume that <b><tt>#if</tt></b> will treat undefined names as 0.
+While the ANSI standard requires this, it may produce a warning.
+
+<li>In <b><tt>.c</tt></b> files, don't use preprocessor conditionals that
+test for individual platforms or compilers. Use them only in header files
+named xxx<b><tt>_.h</tt></b>.
+
+</ul>
+
+<h4><a name="Macros"></a>Macros</h4>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Don't redefine a macro, even with the same definition, without using
+<b><tt>#undef</tt></b>.
+
+<li><b><tt>CAPITALIZE</tt></b> macro names unless there is a good reason not
+to.
+
+<li>Don't use a macro call within a macro argument if the call expands to a
+token sequence that includes any commas not within parentheses: this
+produces different results depending on whether the compiler expands the
+inner call before or after the argument is substituted into the macro body.
+(The ANSI standard says that calls must be expanded after substitution, but
+some compilers do it the other way.)
+
+<li>Don't use macro names, even inadvertently, in string constants. Some
+compilers erroneously try to expand them.
+
+<li>Don't use macros to define shorthands for casted pointers. For
+instance, avoid
+
+<blockquote><b><tt>
+#define fdev ((gx_device_fubar *)dev)
+</tt></b></blockquote>
+
+<p>
+and instead use
+
+<blockquote><b><tt>
+gx_device_fubar * const fdev = (gx_device_fubar *)dev;
+</tt></b></blockquote>
+
+<p>
+The use of <b><tt>const</tt></b> alerts the reader that this is effectively
+a synonym.
+
+<li>If a macro generates anything larger than a single expression (that is,
+one or more statements), surround it with <b><tt>BEGIN</tt></b> and
+<b><tt>END</tt></b>. These work around the fact that simple statements and
+compound statements in C can't be substituted for each other syntactically.
+
+</ul>
+
+<h3><a name="Preprocessor_other"></a>Other</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Only use <b><tt>#pragma</tt></b> in files that are explicitly identified
+as being platform-dependent. Many compilers complain if this is used at
+all, and some complain if they don't recognize the specific pragma being
+requested (both incorrect according to the ANSI standard).
+
+</ul>
+
+<h3><a name="Lexical_elements"></a>Lexical elements</h3>
+
+<p>
+Do not use:
+
+<ul>
+
+<li>ANSI trigraphs (??x)
+<li>Nested comments (/* /* */ */) (not ANSI compliant, but often accepted)
+<li>Multi-character character constants ('abc')
+<li>Wide-character character or string constants (L'x', L"x")
+
+</ul>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Procedure and static variable names must be 31 characters or less.
+
+<li>Externally visible procedure and variable names must be unique in the
+first 23 characters.
+
+</ul>
+
+<h3><a name="Scoping"></a>Scoping (extern, static, ...)</h3>
+
+<p>
+Do not use:
+
+<ul>
+
+<li><b><tt>register</tt></b>
+
+</ul>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Do not allow a global variable (constant) to have more than one
+non-<b><tt>extern</tt></b> definition, even though some ANSI C compilers
+allow this. Every global constant should have exactly one definition, in a
+<b><tt>.c</tt></b> file, and preferably just one <b><tt>extern</tt></b>
+declaration, in a header file.
+
+<li>Use <b><tt>private</tt></b> instead of <b><tt>static</tt></b> for
+procedures and variables declared at the outermost scope of a file. This
+allows making such constructs either visible or invisible to profilers by
+changing a single <b><tt>#define</tt></b>.
+
+<li><b><tt>static</tt></b> or <b><tt>private</tt></b> variables must be
+<b><tt>const</tt></b> and initialized: non-<b><tt>const</tt></b> statically
+allocated variables are incompatible with reentrancy, and we're in the
+process of eliminating all of them.
+
+<li>Do not use <b><tt>extern</tt></b> in <b><tt>.c</tt></b> files, only in
+<b><tt>.h</tt></b> files, unless you have a very good reason for it (e.g.,
+as in <a href="../src/iconf.c">iconf.c</a>). There are too many such
+<b><tt>extern</tt></b>s in the code now: we are eliminating them over time.
+
+<li>Do not declare the same name as both <b><tt>static</tt></b>
+(<b><tt>private</tt></b>) and non-<b><tt>static</tt></b> within the same
+compilation. (Some compilers complain, some do not.) This is especially a
+problem for procedures: it is easy to declare a procedure as
+<b><tt>private</tt></b> near the beginning of a file and accidentally not
+declare it <b><tt>private</tt></b> where it is defined later in the file.
+
+<li>Even though the ANSI standard allows initialized external declarations
+(<b><tt>extern&nbsp;int&nbsp;x&nbsp;=&nbsp;0</tt></b>), don't use them.
+
+</ul>
+
+<h3><a name="Scalars"></a>Scalars</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Avoid using <b><tt>char</tt></b>, except for <b><tt>char&nbsp;*</tt></b>
+for a pointer to a string. Don't assume that <b><tt>char</tt></b> is
+signed; also don't assume it is unsigned.
+
+<li>Never cast a <b><tt>float</tt></b> to a <b><tt>double</tt></b>
+explicitly. ANSI compilers in their default mode do all floating point
+computations in double precision, and handle such casts automatically.
+
+<li>Don't use <b><tt>long long</tt></b>: even though it is in the ANSI
+standard, not all compilers support it. Use <b><tt>bits64</tt></b> instead
+(see below under "<a href="#Language_extensions">Language extensions</a>").
+
+<li>Don't assume anything about whether <b><tt>sizeof(long)</tt></b> is less
+than, equal to, or greater than <b><tt>sizeof(ptr)</tt></b>. (However, you
+can make such comparisons in preprocessor conditionals using
+<b><tt>ARCH_SIZEOF_LONG</tt></b> and <b><tt>ARCH_SIZEOF_PTR</tt></b>.)
+
+</ul>
+
+<h3><a name="Arrays"></a>Arrays</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Don't declare arrays of size 0. (The newer ANSI standard allows this,
+but the older one doesn't.)
+
+<li>Don't declare an array of size 1 at the end of a structure to indicate
+that a variable-size array follows.
+
+<li>Don't declare initialized <b><tt>auto</tt></b> arrays.
+
+</ul>
+
+<h3><a name="Typedefs"></a>Typedefs</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Don't use <b><tt>typedef</tt></b> for function types, such as
+
+<blockquote>
+<b><tt>typedef int proc_xyz_t(double, int *);</tt></b>
+</blockquote>
+
+<p>Many compilers don't handle this correctly -- they will give errors, or
+do the wrong thing, when declaring variables of type
+<b><tt>proc_xyz_t</tt></b> and/or <b><tt>proc_xyz_t *</tt></b>. Instead, do
+this:
+
+<blockquote>
+<b><tt>#define PROC_XYZ(proc) int proc(double, int *)<br>
+PROC_XYZ(some_proc); /* declare a procedure of this type */<br>
+typedef PROC_XYZ((*proc_xyz_ptr_t)); /* define a type for procedure ptrs */<br>
+<br>
+proc_xyz_ptr_t pp; /* pointer to procedure */</tt></b>
+</blockquote>
+
+<li>Don't redefine <b><tt>typedef</tt></b>'ed names, even with the same
+definition. Some compilers complain about this, and the standard doesn't
+allow it.
+
+</ul>
+
+<h3><a name="Structures"></a>Structures</h3>
+
+<p>
+Restrictions:
+
+<li>Don't use anonymous structures if you can possibly avoid it, except
+occasionally as components of other structures. Ideally, use the
+<b><tt>struct</tt></b> keyword only for declaring named structure types,
+like this:
+
+<blockquote>
+<b><tt>typedef struct xxx_s {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... members ...<br>
+<b><tt>} xxx_t;</tt></b>
+</blockquote>
+
+<li>Use <b><tt>struct</tt></b> only when declaring structure types, never
+for referring to them (e.g., never declare a variable as type
+<b><tt>struct&nbsp;xxx_s&nbsp;*</tt></b>).
+
+<li>Don't assume that the compiler will (or won't) insert padding in
+structures to align members for best performance. To preserve alignment,
+only declare structure members that are narrower than an <b><tt>int</tt></b>
+if there will be a lot of instances of that structure in memory. For such
+structures, insert <b><tt>byte</tt></b> and/or <b><tt>short</tt></b> padding
+members as necessary to re-establish <b><tt>int</tt></b> alignment.
+
+<li>Don't declare initialized <b><tt>auto</tt></b> structures.
+
+</ul>
+
+<h3><a name="Unions"></a>Unions</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Use unions only as components of structures, not as typedefs in their
+own right.
+
+<li>Don't attempt to initialize unions: not all compilers support this, even
+though it is in the 1989 ANSI standard.
+
+</ul>
+
+<h3><a name="Expressions"></a>Expressions</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Don't assign a larger integer data type to a smaller one without a cast
+(<b><tt>int_x&nbsp;=&nbsp;long_y</tt></b>).
+
+<li>It's OK to use the address of a structure or array element
+(<b><tt>&p->e</tt></b>, <b><tt>&a[i]</tt></b>) locally, or pass it to a
+procedure that won't store it, but don't store such an address in allocated
+storage unless you're very sure of what you're doing.
+
+<li>Don't use conditional expressions with structure or union values.
+(Pointers to structures or unions are OK.)
+
+<li>For calling a variable or parameter procedure, use
+<b><tt>ptr-&gt;func(...)</tt></b>. Some old code uses explicit indirection,
+<b><tt>(*ptr-&gt;func)(...)</tt></b>: don't use this in new code.
+
+<li>Don't write expressions that depend on order of evaluation, unless the
+order is created explicitly by use of <b><tt>||</tt></b>,
+<b><tt>&amp;&amp;</tt></b>, <b><tt>?:</tt></b>, <b><tt>,</tt></b>, or
+function nesting (the arguments of a function must be evaluated before the
+function is called). In particular, don't assume that the arguments of a
+function will be evaluated left-to-right, or that the left side of an
+assignment will be evaluated before the right.
+
+<li>Don't mix integer and enumerated types ad lib: treat enumerated types as
+distinct from integer types, and use casts to convert between the two.
+(Some compilers generate warnings if you do not do this.)
+
+</ul>
+
+<h3><a name="Statements"></a>Statements</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>If you use an expression as a statement, other than an assignment or a
+function call with <b><tt>void</tt></b> return value, enclose it explicitly
+in <b><tt>DISCARD()</tt></b>.
+
+<li>The type of the operand of a <b><tt>switch</tt></b> must match the type
+of the case labels, whether the labels are <b><tt>int</tt></b>s or the
+members of an <b><tt>enum</tt></b> type. (Use a cast if necessary.)
+
+<li>It is OK for one case of a switch to "fall through" into another (i.e.,
+for the statement just before a case label not to be a control transfer),
+but a comment <b><tt>/*&nbsp;falls&nbsp;through&nbsp;*/</tt></b> is
+required.
+
+<li>If you are returning an error code specified explicitly (e.g.,
+<b><tt>return&nbsp;gs_error_rangecheck</tt></b> or
+<b><tt>return&nbsp;e_rangecheck</tt></b>), use
+<b><tt>return_error()</tt></b> rather than plain <b><tt>return</tt></b>.
+However, if the program is simply propagating an error code generated
+elsewhere, as opposed to generating the error, use <b><tt>return</tt></b>
+(e.g., <b><tt>if&nbsp;(code&nbsp;<&nbsp;0)&nbsp;return&nbsp;code</tt></b>).
+
+</ul>
+
+<h3><a name="Procedures"></a>Procedures</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Provide a prototype for every procedure, and make sure the prototype is
+available at every call site. If the procedure is local to a file
+(<b><tt>private</tt></b>), the prototype should precede the procedure, in
+the same file; if the procedure is global, the prototype should be in a
+header file.
+
+<li>If a procedure parameter is itself a procedure, do list its parameter
+types rather than just using <b><tt>()</tt></b>. For example,
+
+<blockquote><b><tt>
+int foo(int (*callback)(int, int));
+</tt></b></blockquote>
+
+<p>
+rather than just
+
+<blockquote><b><tt>
+int foo(int (*callback)());
+</tt></b></blockquote>
+
+<li>Don't use the <b><tt>P</tt></b>* macros in new code. (See the
+Procedures section of <a href="#Language_extensions">Language extensions</a>
+below for more information.)
+
+<li>Always provide an explicit return type for procedures, in both the
+prototype and the definition: don't rely on the implicit declaration as
+<b><tt>int</tt></b>.
+
+<li>Don't use <b><tt>float</tt></b> as the return type of a procedure,
+unless there's a special reason. Floating point hardware typically does
+everything in double precision internally and has to do extra work to
+convert between double and single precision.
+
+<li>Don't declare parameters as being of type <b><tt>float</tt></b>,
+<b><tt>short</tt></b>, or <b><tt>char</tt></b>. If you do this and forget
+to include the prototype at a call site, ANSI compilers will generate
+incompatible calling sequences. Use <b><tt>floatp</tt></b> (a synonym for
+<b><tt>double</tt></b>, mnemonic for "float parameter") instead of
+<b><tt>float</tt></b>, and use <b><tt>int</tt></b> or <b><tt>uint</tt></b>
+instead of <b><tt>short</tt></b> or <b><tt>char</tt></b>.
+
+</ul>
+
+<h3><a name="Standard_library"></a>Standard library</h3>
+
+<p>
+Restrictions:
+
+<ul>
+
+<li>Only use library features that are documented in the established ANSI
+standard (e.g., Harbison & Steele's book). Do not use procedures that are
+"standards" promulgated by Microsoft (e.g., <b><tt>stricmp</tt></b>), or
+originate in BSD Unix (e.g., <b><tt>strcasecmp</tt></b>), or were added in
+later versions of the standard such as C 9X.
+
+<li>Do not use any features from <b><tt>stdio.h</tt></b> that assume the
+existence of <b><tt>stdin</tt></b>, <b><tt>stdout</tt></b>, or
+<b><tt>stderr</tt></b>. See <a href="../src/gsio.h">gsio.h</a> for the full
+list. Instead, use <b><tt>gs_stdin</tt></b> et al.
+
+</ul>
+
+<hr>
+
+<h2><a name="Language_extensions"></a>Language extensions</h2>
+
+<h3>Scoping</h3>
+
+<dl>
+
+<dt><b><tt>inline</tt></b>
+
+<dd><b><tt>inline</tt></b> is available even if the compiler does not
+support it. Be aware, however, that it may have no effect. In particular,
+do not use <b><tt>inline</tt></b> in header files. Instead, use the
+<b><tt>extern_inline</tt></b> facility described just below.
+
+<dt><b><tt>extern_inline</tt></b>
+
+<dd>Compilers that do support <b><tt>inline</tt></b> vary in how they decide
+whether to (also) compile a closed-code copy of the procedure. Because of
+this, putting an <b><tt>inline</tt></b> procedure in a header file may
+produce multiple closed copies, causing duplicate name errors at link time.
+<b><tt>extern_inline</tt></b> provides a safe way to put
+<b><tt>inline</tt></b> procedures in header files, regardless of compiler.
+Unfortunately, the only way we've found to make this fully portable involves
+a fair amount of boilerplate. For details, please see <a
+href="../src/stdpre.h">stdpre.h</a>.
+
+<dt><b><tt>private</tt></b>
+
+<dd><b>Use <tt>private</tt></b> instead of <b><tt>static</tt></b> for all
+file-local procedures, and also for file-local variables defined at the
+outermost level. However, use <b><tt>static</tt></b>, not
+<b><tt>private</tt></b>, for variables defined within a procedure.
+
+<p>
+<b><tt>private</tt></b> is normally #define'd as <b><tt>static</tt></b>.
+However, it can also be #define'd as empty, which allows profilers to
+measure all procedures, and 'nm' to list all interesting statically
+allocated variables, not just public ones.
+
+</dl>
+
+<h3>Scalar types</h3>
+
+<dl>
+
+<dt><b><tt>bool, true, false</tt></b>
+
+<dd><b><tt>bool</tt></b> is intended as a Boolean type, with canonical
+values <b><tt>true</tt></b> and <b><tt>false</tt></b>. In a more reasonable
+language, such as Java, <b><tt>bool</tt></b> is an enumerated type requiring
+an explicit cast to or from <b><tt>int</tt></b>; however, because C's
+conditionals are defined as producing <b><tt>int</tt></b> values, we can't
+even define <b><tt>bool</tt></b> as a C <b><tt>enum</tt></b> without
+provoking compiler warnings.
+
+<p>
+Even though <b><tt>bool</tt></b> is a synonym for <b><tt>int</tt></b>, treat
+them as conceptually different types:
+
+<ul>
+<li>Initialize or set <b><tt>bool</tt></b> variables to <b><tt>true</tt></b>
+or <b><tt>false</tt></b>, not 0 or 1.
+<li>Use the Boolean operators <b><tt>!</tt></b>, <b><tt>&&</tt></b>,
+and <b><tt>||</tt></b> only with Booleans. Don't use the idiom
+<b><tt>!!x</tt></b> to create a Boolean that is true iff <b><tt>x</tt></b>
+!= 0: use <b><tt>x != 0</tt></b>.
+<li>Use an explicit <b><tt>(int)</tt></b> cast to convert a Boolean to an
+integer.
+</ul>
+
+<dt><b><tt>byte, ushort, uint, ulong</tt></b>
+
+<dd>These types are simply shorthands for <b><tt>unsigned char, short, int,
+long</tt></b>.
+
+<dt><b><tt>floatp</tt></b>
+
+<dd>This is a synonym for <b><tt>double</tt></b>. It should be used for,
+and only for, procedure parameters that would otherwise be
+<b><tt>float</tt></b>. (As noted above, procedure parameters should not be
+declared as <b><tt>float</tt></b>.)
+
+<dt><b><tt>bits8, bits16, bits32</tt></b>
+
+<dd>These are unsigned integer types of the given width. Use them wherever
+the actual width matters: do <em>not</em>, for example, use
+<b><tt>short</tt></b> assuming that it is 16 bits wide.
+
+<dt><b><tt>bits64</tt></b>
+
+<dd><strong>****** NOT IMPLEMENTED YET ******</strong>
+This is an unsigned 64-bit integer type, but it may not be available on all
+platforms. Any code that uses this type should be surrounded by
+<b><tt>#if&nbsp;ARCH_HAS_BITS64</tt></b>.
+
+</dl>
+
+<h3>Procedures</h3>
+
+<dl>
+
+<dt><b><tt>P0(), P1(p1), ..., P16(p1, ..., p16)</tt></b> [deprecated]
+
+<dd>Nearly all existing code uses these macros for the parameter lists of
+procedure prototypes, e.g.,
+<b><tt>int&nbsp;proc(P2(int&nbsp;a,&nbsp;int&nbsp;b))</tt></b>, to provide
+compatibility with pre-ANSI, a.k.a. "traditional" or "K &amp; R", compilers.
+Since only ANSI compilers are now supported, don't use these macros in new
+code: use the ANSI standard syntax
+<b><tt>int&nbsp;proc(int&nbsp;a,&nbsp;int&nbsp;b)</tt></b>.
+
+</dl>
+
+<hr>
+
+<h2><a name="Stylistic_conventions"></a>Stylistic conventions</h2>
+
+<p>
+Ghostscript's coding rules cover not only the use of the language, but also
+many stylistic issues like the choice of names and the use of whitespace.
+The stylistic rules are meant to produce code that is easy to read. It's
+important to observe them as much as possible in order to maintain a
+consistent style, but if you find these rules getting in your way or
+producing ugly-looking results once in a while, it's OK to break it.
+
+<h3><a name="Formatting"></a>Formatting</h3>
+
+<h4><a name="Indentation"></a>Indentation</h4>
+
+<p>
+We've formatted all of our code using the GNU <b><tt>indent</tt></b> program.
+
+<blockquote><b><tt>
+indent&nbsp;-bad&nbsp;-nbap&nbsp;-nsob&nbsp;-br&nbsp;-ce&nbsp;-cli4&nbsp;-npcs&nbsp;-ncs&nbsp;\<br>
+&nbsp;&nbsp;&nbsp;-i4&nbsp;-di0&nbsp;-psl&nbsp;-lp&nbsp;-lps&nbsp;somefile.c
+</tt></b></blockquote>
+
+<p>
+does a 98% accurate job of producing our preferred style. Unfortunately,
+there are bugs in all versions of GNU <b><tt>indent</tt></b>, requiring
+both pre- and post-processing of the code. The <b><tt>gsindent</tt></b>
+script in the Ghostscript fileset contains the necessary workarounds.
+
+<p>
+Put indentation points every 4 spaces, with 8 spaces = 1 tab stop.
+
+<p>
+For assignments (including chain assignments), put the entire statement on
+one line if it will fit; if not, break it after a <b><tt>=</tt></b> and
+indent all the following lines. I.e., format like this:
+
+<blockquote>
+var1&nbsp;<b><tt>=</tt></b>&nbsp;value<b><tt>;</tt></b><br>
+var1&nbsp;<b><tt>=</tt></b>&nbsp;var2&nbsp;<b><tt>=</tt></b>&nbsp;value<b><tt>;</tt></b><br>
+var1&nbsp;<b><tt>=</tt></b><br>
+&nbsp;&nbsp;&nbsp;&nbsp;value<b><tt>;</tt></b><br>
+var1&nbsp;<b><tt>=</tt></b><br>
+&nbsp;&nbsp;&nbsp;&nbsp;var2&nbsp;<b><tt>=</tt></b>&nbsp;value<b><tt>;</tt></b><br>
+var1&nbsp;<b><tt>=</tt></b>&nbsp;var2&nbsp;<b><tt>=</tt></b><br>
+&nbsp;&nbsp;&nbsp;&nbsp;value<b><tt>;</tt></b>
+</blockquote>
+
+<p>
+But not like this:
+
+<blockquote>
+var1&nbsp;<b><tt>=</tt></b><br>
+var2&nbsp;<b><tt>=</tt></b> value<b><tt>;</tt></b>
+</blockquote>
+
+<p>
+Indent in-line blocks thus:
+
+<blockquote>
+<b><tt>{</tt></b><br>
+&nbsp;&nbsp;&nbsp;... declarations ...<br>
+&nbsp;&nbsp;&nbsp;{{ blank line if any declarations above }}<br>
+&nbsp;&nbsp;&nbsp;... statements ...<br>
+<b><tt>}</tt></b>
+</blockquote>
+
+<p>
+Similarly, indent procedures thus:
+
+<blockquote>
+return_type<br>
+proc_name(... arguments ...)<br>
+<b><tt>{</tt></b><br>
+&nbsp;&nbsp;&nbsp;... declarations ...<br>
+&nbsp;&nbsp;&nbsp;{{ blank line if any declarations above }}<br>
+&nbsp;&nbsp;&nbsp;... statements ...<br>
+<b><tt>}</tt></b>
+</blockquote>
+
+<p>
+If a control construct (<b><tt>if</tt></b>, <b><tt>do</tt></b>,
+<b><tt>while</tt></b>, or <b><tt>for</tt></b>) has a one-line body, use
+this:
+
+<blockquote>
+... control construct ...<br>
+&nbsp;&nbsp;&nbsp;... subordinate simple statement ...
+</blockquote>
+
+<p>
+If it has a multi-line body, use this:
+
+<blockquote>
+... control construct ... <b><tt>{</tt></b><br>
+&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>}</tt></b>
+</blockquote>
+
+<p>
+If the subordinate code has declarations, see blocks above.
+
+<p>
+For if-else statements, do this:
+
+<blockquote>
+<b><tt>if (</tt></b> ...<b><tt> ) {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>} else if (</tt></b> ...<b><tt> ) {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>} else {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>}</tt></b>
+</blockquote>
+
+<p>
+When there are more than two alternatives, as in the example above, use the
+above ("parallel") syntax rather than the following ("nested") syntax:
+
+<blockquote>
+<b><tt>if (</tt></b> ...<b><tt> ) {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>} else {</tt></b><br>
+<b><tt>&nbsp;&nbsp;&nbsp;if (</tt></b> ...<b><tt> ) {</tt></b><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>&nbsp;&nbsp;&nbsp;} else {</tt></b><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... subordinate code ...<br>
+<b><tt>&nbsp;&nbsp;&nbsp;}</tt></b><br>
+<b><tt>}</tt></b>
+</blockquote>
+
+<p>
+Similarly, for do-while statements, do this:
+
+<blockquote>
+<b><tt>do {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... body ...<br>
+<b><tt>} while (</tt></b> ... condition ... <b><tt>);</tt></b>
+</blockquote>
+
+<h4><a name="Spaces"></a>Spaces</h4>
+
+<p>
+Do put a space:
+<ul>
+<li>after every comma and semicolon, unless it ends a line;
+<li>around every binary operator other than "<b><tt>-&gt;</tt></b>" and
+"<b><tt>.</tt></b>", although you can omit the spaces around the innermost
+operator in a nested expression if you like;
+<li>on both sides of the parentheses of an <b><tt>if</tt></b>, <b><tt>for</tt></b>, or <b><tt>while</tt></b>.
+</ul>
+
+<p>
+Don't put a space:
+<ul>
+<li>at the end of a line;
+<li>before a comma or semicolon;
+<li>after unary prefix operators;
+<li>before the parenthesis of a macro or procedure call.
+</ul>
+
+<h4><a name="Parentheses"></a>Parentheses</h4>
+
+<p>
+Parentheses are important in only a few places:
+
+<ul>
+<li>Around the inner subexpressions in expressions that mix
+<b><tt>&amp;&amp;</tt></b> and <b><tt>||</tt></b>, even if they are not
+required by precedence, for example
+
+<blockquote><b><tt>
+(xx &amp;&amp; yy) || zz
+</tt></b></blockquote>
+
+<li>Similarly around inner subexpressions in expressions that mix
+<b><tt>&amp;</tt></b>, <b><tt>|</tt></b>, or shifts, especially if mixing
+these with other operators, for instance
+
+<blockquote><b><tt>
+(x &lt;&lt; 3) | (y &gt;&gt; 5)
+</tt></b></blockquote>
+
+<li>In macro definitions around every use of an argument that logically
+could be an expression, for example
+
+<blockquote><b><tt>
+((x) * (x) + (y) * (y))
+</tt></b></blockquote>
+
+</ul>
+
+<p>
+Anywhere else, given the choice, use fewer parentheses.
+
+<p>
+For stylistic consistency with the existing Ghostscript code, put
+parentheses around conditional expressions even if they aren't
+syntactically required, unless you really dislike doing this. Note that
+the parentheses should go around the entire expression, not the condition.
+For instance, instead of
+
+<blockquote><b><tt>
+hpgl_add_point_to_path(pgls, arccoord_x, arccoord_y,<br>
+&nbsp;&nbsp;&nbsp;(pgls-&gt;g.pen_down) ? gs_lineto : gs_moveto);
+</tt></b></blockquote>
+
+<p>
+use
+
+<blockquote><b><tt>
+hpgl_add_point_to_path(pgls, arccoord_x, arccoord_y,<br>
+&nbsp;&nbsp;&nbsp;(pgls-&gt;g.pen_down ? gs_lineto : gs_moveto));
+</tt></b></blockquote>
+
+<h3><a name="Preprocessor_style"></a>Preprocessor</h3>
+
+<h4>Conditionals</h4>
+
+<p>
+Using preprocessor conditionals can easily lead to unreadable code, since
+the eye really wants to read linearly rather than having to parse the
+conditionals just to figure out what code is relevant. It's OK to use
+conditionals that have small scope and that don't change the structure or
+logic of the program (typically, they select between different sets of
+values depending on some configuration parameter), but where possible, break
+up source modules rather than use conditionals that affect the structure or
+logic.
+
+<h4>Macros</h4>
+
+<p>
+Ghostscript code uses macros heavily to effectively extend the rather
+weak abstraction capabilities of the C language, specifically in the area of
+memory management and garbage collection: in order to read Ghostscript code
+effectively, you simply have to learn some of these macros as though they
+were part of the language. The current code also uses macros heavily for
+other purposes, but we are trying to phase these out as rapidly as possible,
+because they make the code harder to read and debug, and to use the
+rules that follow consistently in new code.
+
+<p>
+Define macros in the smallest scope you can manage (procedure, file, or
+<b><tt>.h</tt></b> file), and <b><tt>#undef</tt></b> them at the end of
+that scope: that way, someone reading the code can see the definitions
+easily when reading the uses. If that isn't appropriate, define them in as
+large a scope as possible, so that they effectively become part of the
+language. This places an additional burden on the reader, but it can be
+amortized over reading larger amounts of code.
+
+<p>
+Try hard to use procedures instead of macros. Use "<b><tt>inline</tt></b>"
+if you really think the extra speed is needed, but only within a
+<b><tt>.c</tt></b> file: don't put inline procedures in <b><tt>.h</tt></b>
+files, because most compilers don't honor "<b><tt>inline</tt></b>" and
+you'll wind up with a copy of the procedure in every <b><tt>.c</tt></b>
+file that includes the <b><tt>.h</tt></b> file.
+
+<p>
+If you define a macro that looks like a procedure, make sure it will work
+wherever a procedure will work. In particular, put parentheses around every
+use of an argument within the macro body, so that the macro will parse
+correctly if some of the arguments are expressions, and put parentheses
+around the entire macro body. (This is still subject to the problem that an
+argument may be evaluated more than once, but there is no way around this in
+C, since C doesn't provide for local variables within expressions.)
+
+<p>
+If you define macros for special loop control structures, make their uses
+look somewhat like ordinary loops, for instance:
+
+<blockquote>
+<b><tt>BEGIN_RECT(xx, yy) {</tt></b><br>
+&nbsp;&nbsp;... body indented one position ...<br>
+<b><tt>} END_RECT(xx, yy);</tt></b>
+</blockquote>
+
+<p>
+If at all possible, don't use free variables in macros -- that is, variables
+that aren't apparent as arguments of the macro. If you must use free
+variables, list them all in a comment at the point where the macro is
+defined.
+
+<h3><a name="Comments"></a>Comments</h3>
+
+<p>
+The most important descriptive comments are ones in header files that
+describe structures, including invariants; but every procedure or structure
+declaration, or group of other declarations, should have a comment. Don't
+spend a lot of time commenting executable code unless something unusual or
+subtle is going on.
+
+<h3><a name="Naming"></a>Naming</h3>
+
+<p>
+Use fully spelled-out English words in names, rather than contractions.
+This is most important for procedure and macro names, global variables and
+constants, values of <b><tt>#define</tt></b> and <b><tt>enum</tt></b>,
+<b><tt>struct</tt></b> and other <b><tt>typedef</tt></b> names, and
+structure member names, and for argument and variable names which have
+uninformative types like <b><tt>int</tt></b>. It's not very important for
+arguments or local variables of distinctive types, or for local index or
+count variables.
+
+<p>
+Avoid names that run English words together:
+"<b><tt>hpgl_compute_arc_center</tt></b>" is better than
+"<b><tt>hpgl_compute_arccenter</tt></b>". However, for terms drawn from
+some predefined source, like the names of PostScript operators, use a term
+in its well-known form (for instance, <b><tt>gs_setlinewidth</tt></b>
+rather than <b><tt>gs_set_line_width</tt></b>).
+
+<p>
+Procedures, variables, and structures visible outside a single
+<b><tt>.c</tt></b> file should generally have prefixes that indicate what
+subsystem they belong to (in the case of Ghostscript, <b><tt>gs_</tt></b>
+or <b><tt>gx_</tt></b>). This rule isn't followed very consistently.
+
+<h3><a name="Types"></a>Types</h3>
+
+<p>
+Many older structure names don't have <b><tt>_t</tt></b> on the end, but
+this suffix should be used in all new code. (The <b><tt>_s</tt></b>
+structure name is needed only to satisfy some debuggers. No code other than
+the structure declaration should refer to it.)
+
+<p>
+Declare structure types that contain pointers to other instances of
+themselves like this:
+
+<blockquote>
+<b><tt>typedef struct xxx_s xxx_t;</tt></b><br>
+<b><tt>struct xxx_s {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... members ...<br>
+&nbsp;&nbsp;&nbsp;<b><tt>xxx_t *</tt></b>ptr_member_name;<br>
+&nbsp;&nbsp;&nbsp;... members ...<br>
+<b><tt>};</tt></b>
+</blockquote>
+
+<p>
+If, to maintain data abstraction and avoid including otherwise unnecessary
+header files, you find that you want the type <b><tt>xxx_t</tt></b> to be
+available in a header file that doesn't include the definition of the
+structure <b><tt>xxx_s</tt></b>, use this approach:
+
+<blockquote>
+<b><tt>#ifndef xxx_DEFINED</tt></b><br>
+<b><tt>#&nbsp;&nbsp;define xxx_DEFINED</tt></b><br>
+<b><tt>typedef struct xxx_s xxx_t;</tt></b><br>
+<b><tt>#endif</tt></b><br>
+<b><tt>struct xxx_s {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... members ...<br>
+<b><tt>};</tt></b>
+</blockquote>
+
+<p>
+You can then copy the first 4 lines in other header files. (Don't ever
+include them in an executable code file.)
+
+<p>
+Don't bother using <b><tt>const</tt></b> for anything other than with
+pointers as described below. However, in those places where it is necessary
+to cast a pointer of type <b><tt>const&nbsp;T&nbsp;*</tt></b> to type
+<b><tt>T&nbsp;*</tt></b>, always include a comment that explains why you are
+"breaking const".
+
+<h4>Pointers</h4>
+
+<p>
+Use <b><tt>const</tt></b> for pointer referents (that is,
+<b><tt>const&nbsp;T&nbsp;*</tt></b>) wherever possible and appropriate.
+
+<p>
+If you find yourself wanting to use <b><tt>void&nbsp;*</tt></b>, try to
+find an alternative using unions or (in the case of super- and subclasses)
+casts, unless you're writing something like a memory manager that really
+treats memory as opaque.
+
+<h3><a name="Procedures_style"></a>Procedures</h3>
+
+<p>
+In general, don't create procedures that are private and only called from
+one place. However, if a compound statement (especially an arm of a
+conditional) is too long for the eye easily to match its enclosing braces
+"<b><tt>{...}</tt></b>" -- that is, longer than 10 or 15 lines -- and it
+doesn't use or set a lot of state held in outer local variables, it may be
+more readable if you put it in a procedure.
+
+<h3>Miscellany</h3>
+
+<h4><a name="Local_variables"></a>Local variables</h4>
+
+<p>
+Don't assign new values to procedure parameters. It makes debugging very
+confusing when the parameter values printed for a procedure are not the
+ones actually supplied by the caller. Instead use a separate local
+variable initialized to the value of the parameter.
+
+<p>
+If a local variable is only assigned a value once, assign it that value at
+its declaration, if possible. For example,
+
+<blockquote>
+<b><tt>int x = </tt></b>some expression <b><tt>;</tt></b>
+</blockquote>
+
+<p>
+rather than
+
+<blockquote>
+<b><tt>int x;</tt></b><br>
+...<br>
+<b><tt>x = </tt></b> some expression <b><tt>;</tt></b>
+</blockquote>
+
+<p>
+Use a local pointer variable like this to "narrow" pointer types:
+
+<blockquote>
+<b><tt>int</tt></b><br>
+someproc(... <b><tt>gx_device *dev</tt></b> ...)<br>
+<b><tt>{<br>
+&nbsp;&nbsp;&nbsp;gx_device_printer *const pdev = (gx_device_printer *)dev;</tt></b><br>
+&nbsp;&nbsp;&nbsp;...<br>
+<b><tt>}</tt></b>
+</blockquote>
+
+<h4><a name="Compiler_warnings"></a>Compiler warnings</h4>
+
+<p>
+The following section refers to the warnings produced by <b><tt>gcc</tt></b>:
+your compiler may produce different ones.
+
+<p>
+It's OK if compilation produces the following warnings:
+
+<ul>
+<li><b><tt>&lt;name&gt; might be used uninitialized in this function</tt></b>
+<li><b><tt>cast discards `const' from pointer target type</tt></b>
+</ul>
+
+<p>
+The first of these often occurs because the compiler isn't aware of control
+flow restrictions that guarantee the variable will be initialized before
+use: if it occurs in new code, check the code carefully, but don't worry
+about the message. The second is often unavoidable in code that initializes
+or frees a structure that is otherwise <b><tt>const</tt></b> during its
+lifetime.
+<p>
+
+Do work hard to eliminate all warnings other than these,
+since they often indicate the possible presence of coding errors.
+In particular, get rid of warnings about parameter passing or
+initialization that discards <b><tt>const</tt></b>,
+by using explicit casts.
+
+<hr>
+
+<h2><a name="File_structuring"></a>File structuring</h2>
+
+<h3><a name="All_files"></a>All files</h3>
+
+<p>
+Keep file names within the "8.3" format for portability:
+<ul>
+<li>Use only letters, digits, dash, and underscore in file names.
+<li>Don't assume upper and lower case letters are distinct.
+<li>Put no more than 8 characters before the ".", if any.
+<li>If there is a ".", put between 1 and 3 characters after the ".".
+</ul>
+
+<p>
+For files other than documentation files, use only lower case letters
+in the names; for HTML documentation files, capitalize the first letter.
+
+<p>
+Every code file should start with comments containing
+
+<ol>
+<li>a copyright notice,
+<li>the name of the file in the form of an RCS Id:
+
+<blockquote><b><tt>
+/*Id$: filename.ext $*/
+</tt></b></blockquote>
+
+<p>
+(using the comment convention appropriate to the language of the file), and
+
+<li>a summary, no more than one line, of what the file contains.
+</ol>
+
+<p>
+If you create a file by copying the beginning of another file, be sure to
+update the copyright year and change the file name.
+
+<h3><a name="Makefiles"></a>Makefiles</h3>
+
+<p>
+Use the extension <b><tt>.mak</tt></b> for makefiles.
+
+<p>
+For each
+
+<blockquote><b><tt>
+#include "xxx.h"
+</tt></b></blockquote>
+
+<p>
+make sure there is a dependency on <b><tt>$(xxx_h)</tt></b> in the
+makefile. If xxx ends with a "<b><tt>_</tt></b>", this rule still holds,
+so that if you code
+
+<blockquote><b><tt>
+#include "math_.h"
+</tt></b></blockquote>
+
+<p>
+the makefile must contain a dependency on "<b><tt>$(math__h)</tt></b>"
+(note the two underscores "<b><tt>__</tt></b>").
+
+<p>
+List the dependencies bottom-to-top, like the <b><tt>#include</tt></b>
+statements themselves; within each level, list them alphabetically. Do
+this also with <b><tt>#include</tt></b> statements themselves whenever
+possible (but sometimes there are inter-header dependencies that require
+bending this rule).
+
+<p>
+For compatibility with the build utilities on OpenVMS, always put a space
+before the colon that separates the target(s) of a rule from the dependents.
+
+<h3><a name="General_C_code"></a>General C code</h3>
+
+<p>
+List <b><tt>#include</tt></b> statements from "bottom" to "top", that is,
+in the following order:
+
+<blockquote><ol>
+<li>System includes (<b><tt>"xxx_.h"</tt></b>)
+<li><b><tt>gs*.h</tt></b>
+<li><b><tt>gx*.h</tt></b> (yes, <b><tt>gs</tt></b> and <b><tt>gx</tt></b>
+are in the wrong order.)
+<li><b><tt>s*.h</tt></b>
+<li><b><tt>i*.h</tt></b> (or other interpreter headers that don't start
+with "<b><tt>i</tt></b>")
+</ol></blockquote>
+
+<h3><a name="Headers"></a>Headers (<b><tt>.h</tt></b> files)</h3>
+
+<p>
+In header files, always use the following at the beginning of a header file
+to prevent double inclusion:
+
+<blockquote>
+{{ Copyright notice etc. }}<br><br>
+
+<b><tt>#ifndef </tt></b>&lt;filename&gt;<b><tt>_INCLUDED</tt></b><br>
+<b><tt>#define </tt></b>&lt;filename&gt;<b><tt>_INCLUDED</tt></b><br><br>
+
+{{ The contents of the file }}<br><br>
+
+<b><tt>#endif /* </tt></b>&lt;filename&gt;<b><tt>_INCLUDED */</tt></b>
+</blockquote>
+
+<p>
+The header file is the first place that a reader goes for
+information about procedures, structures, constants, etc., so ensure that
+every procedure and structure has a comment that says what it does. Divide
+procedures into meaningful groups set off by some distinguished form of
+comment.
+
+<h3><a name="Source"></a>Source (<b><tt>.c</tt></b> files)</h3>
+
+<p>
+After the initial comments, arrange C files in the following order:
+
+<blockquote><ol>
+<li><b><tt>#include</tt></b> statements
+<li>Exported data declarations
+<li>Explicit externs (if necessary)
+<li>Forward declarations of procedures
+<li>Private data declarations
+<li>Exported procedures
+<li>Private procedures
+</ol></blockquote>
+
+<p>
+Be flexible about the order of the declarations if necessary to improve
+readability. Many older files don't follow this order, often without good
+reason.
+
+<hr>
+
+<h2><a name="Conventions"></a>Ghostscript conventions</h2>
+
+<h3><a name="Specific_names"></a>Specific names</h3>
+
+<p>
+The Ghostscript code uses certain names consistently for certain kinds of
+values. Some of the commonest and least obvious are these two:
+
+<h4><a name="code"></a><b><tt>code</tt></b></h4>
+
+<blockquote>
+A value to be returned from a procedure:
+
+<table cellpadding=0 cellspacing=0>
+<tr valign=top> <td align=right>&lt; 0
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>An error code defined in
+<a href="../src/gserrors.h">gserrors.h</a>
+(or <a href="../src/errors.h">errors.h</a>)
+<tr valign=top> <td align=right>0
+ <td>&nbsp;
+ <td>Normal return
+<tr valign=top> <td align=right>&gt; 0
+ <td>&nbsp;
+ <td>A non-standard but successful return (which must be documented, preferably with the procedure's prototype)
+</table>
+
+</blockquote>
+
+<h4><a name="status"></a><b><tt>status</tt></b></h4>
+
+<blockquote>
+A value returned from a stream procedure:
+
+<table cellpadding=0 cellspacing=0>
+<tr valign=top> <td align=right>&lt; 0
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>An exceptional condition as defined in
+<a href="../src/scommon.h">scommon.h</a>
+<tr valign=top> <td align=right>0
+ <td>&nbsp;
+ <td>Normal return (or, from the "<b><tt>process</tt></b>" procedure, means that more input is needed)
+<tr valign=top> <td align=right>1
+ <td>&nbsp;
+ <td>More output space is needed (from the "<b><tt>process</tt></b>" procedure)
+</table>
+</blockquote>
+
+<h3><a name="Structure_type_descriptors"></a>Structure type descriptors</h3>
+
+<p>
+The Ghostscript memory manager requires run-time type information for every
+structure. (We don't document this in detail here: see the <a
+href="Develop.htm#Structure_descriptors">Structure descriptors</a> section
+of the developer documentation for details.) Putting the descriptor for a
+structure next to the structure definition will help keep the two
+consistent, so immediately after the definition of a structure
+<b><tt>xxx_s</tt></b>, define its structure descriptor:
+
+<blockquote>
+<b><tt>struct xxx_s {</tt></b><br>
+&nbsp;&nbsp;&nbsp;... members ...<br>
+<b><tt>};</tt></b><br>
+<b><tt>#define private_st_xxx()&nbsp;&nbsp;/* in </tt></b>&lt;filename&gt;<tt><b>.c */\</tt></b><br>
+<b><tt>&nbsp;&nbsp;gs_private_st_</tt></b>&lt;whatever&gt;<b><tt>(st_xxx, xxx_t,\</tt></b><br>
+<b><tt>&nbsp;&nbsp;&nbsp;&nbsp;"xxx_t", xxx_enum_ptrs, xxx_reloc_ptrs,\</tt></b><br>
+<b><tt>&nbsp;&nbsp;&nbsp;&nbsp;</tt></b>... additional parameters as needed ...<b><tt>)</tt></b>
+</blockquote>
+
+<p>
+The file that implements operations on this structure
+(&lt;filename&gt;<b><tt>.c</tt></b>) should then include, near the
+beginning, the line:
+
+<blockquote>
+<b><tt>private_st_xxx();</tt></b>
+</blockquote>
+
+<p>
+In much existing code, structure descriptors are declared as
+<b><tt>public</tt></b>, which allows clients to allocate instances of the
+structure directly. We now consider this bad design. Instead, structure
+descriptors should always be <b><tt>private</tt></b>; the implementation
+file should provide one or more procedures for allocating instances, e.g.,
+
+<blockquote>
+<b><tt>xxx_t *gs_xxx_alloc(P1(gs_memory_t *mem));</tt></b>
+</blockquote>
+
+<p>
+If it is necessary to make a structure descriptor public, it should be
+declared in its clients as
+
+<blockquote>
+<b><tt>extern_st(st_xxx);</tt></b>
+</blockquote>
+
+<h3><a name="Objects"></a>"Objects"</h3>
+
+<p>
+Ghostscript makes heavy use of object-oriented constructs, including
+analogues of classes, instances, subclassing, and class-associated
+procedures. However, these constructs are implemented in C rather than C++,
+for two reasons:
+
+<ul>
+
+<li>The first Ghostscript code was written in 1986, long before C++ was
+codified or was well supported by tools. Even today, C++ tools rarely
+support C++ as well as C tools support C.
+
+<li>C++ imposes its own implementations for virtual procedures, inheritance,
+run-time type information, and (to some extent) memory management.
+Ghostscript requires use of its own memory manager, and also sometimes
+requires the ability to change the virtual procedures of an object
+dynamically.
+
+</ul>
+
+<h4>Classes</h4>
+
+<p>
+The source code representation of a class is simply a
+<b><tt>typedef</tt></b> for a C <b><tt>struct</tt></b>. See <a
+href="C-style.htm#Structures">Structures</a>, above, for details.
+
+<h4>Procedures</h4>
+
+<p>
+Ghostscript has no special construct for non-virtual procedures associated
+with a class. In some cases, the <b><tt>typedef</tt></b> for the class is
+in a header file but the <b><tt>struct</tt></b> declaration is in the
+implementation code file: this provides an extra level of opaqueness, since
+clients then can't see the representation and must make all accesses through
+procedures. You should use this approach in new code, if it doesn't
+increase the size of the code too much or require procedure calls for very
+heavily used accesses.
+
+<p>
+Ghostscript uses three different approaches for storing and accessing
+virtual procedures, plus a fourth one that is recommended but not currently
+used. For exposition, we assume the class (type) is named
+<b><tt>xxx_t</tt></b>, it has a virtual procedure
+<b><tt>void&nbsp;(*virtu)(P1(xxx_t&nbsp;*))</tt></b>, and we have a variable
+declared as <b><tt>xxx_t&nbsp;*pxx</tt></b>.
+
+<ol>
+
+<li>The procedures are stored in a separate, constant structure of type
+<b><tt>xxx_procs</tt></b>, of which <b><tt>virtu</tt></b> is a member. The
+structure definition of <b><tt>xxx_t</tt></b> includes a member defined as
+<b><tt>const&nbsp;xxx_procs&nbsp;*procs</tt></b> (always named
+<b><tt>procs</tt></b>). The construct for calling the virtual procedure is
+<b><tt>pxx->procs->virtu(pxx)</tt></b>.
+
+<li>The procedures are defined in a structure of type
+<b><tt>xxx_procs</tt></b> as above. The structure definition of
+<b><tt>xxx_t</tt></b> includes a member defined as
+<b><tt>xxx_procs&nbsp;procs</tt></b> (always named <b><tt>procs</tt></b>).
+The construct for calling the virtual procedure is
+<b><tt>pxx->procs.virtu(pxx)</tt></b>.
+
+<li>The procedures are not defined in a separate structure: each procedure
+is a separate member of <b><tt>xxx_t</tt></b>. The construct for calling
+the virtual procedure is <b><tt>pxx->virtu(pxx)</tt></b>.
+
+<li>The procedures are defined in a structure of type
+<b><tt>xxx_procs</tt></b> as above. The structure definition of
+<b><tt>xxx_t</tt></b> includes a member defined as
+<b><tt>xxx_procs&nbsp;procs[1]</tt></b> (always named
+<b><tt>procs</tt></b>). The construct for calling the virtual procedure is
+again <b><tt>pxx->procs->virtu(pxx)</tt></b>.
+
+</ol>
+
+<p>
+Note that in approach 1, the procedures are in a shared constant structure;
+in approaches 2 - 4, they are in a per-instance structure that can be
+changed dynamically, which is sometimes important.
+
+<p>
+In the present Ghostscript code, approach 1 is most common, followed by 2
+and 3; 4 is not used at all. For new code, you should use 1 or 4: that way,
+all virtual procedure calls have the same form, regardless of whether the
+procedures are shared and constant or per-instance and mutable.
+
+<h4>Subclassing</h4>
+
+<p>
+Ghostscript's class mechanism allows for subclasses that can add data
+members, or can add procedure members if approach 1 or 3 (above) is used.
+Since C doesn't support subclassing, we use a convention to accomplish it.
+In the example below, <b><tt>gx_device</tt></b> is the root class; it has a
+subclass <b><tt>gx_device_forward</tt></b>, which in turn has a subclass
+<b><tt>gx_device_null</tt></b>. First we define a macro for all the members
+of the root class, and the root class type. (As for structures in general,
+classes need a structure descriptor, as discussed in <a
+href="#Structures">Structures</a> above: we include these in the examples
+below.)
+
+<blockquote><b><tt>
+#define gx_device_common\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;type1 member1;\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;</tt></b>...<b><tt><br>
+&nbsp;&nbsp;&nbsp;&nbsp;typeN memberN<br>
+<br>
+typedef struct gx_device_s {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device_common;<br>
+} gx_device;<br>
+<br>
+#define private_st_gx_device()&nbsp;&nbsp;/* in gsdevice.c */\<br>
+&nbsp;&nbsp;gs_private_st_</tt></b>&lt;whatever&gt;<b><tt>(st_gx_device, gx_device,\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;"gx_device", device_enum_ptrs, device_reloc_ptrs,\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;</tt></b>... additional parameters as needed ...<b><tt>)</tt></b>
+</tt></b></blockquote>
+
+<p>
+We then define a similar macro and type for the subclass.
+
+<blockquote><b><tt>
+#define gx_device_forward_common\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device_common;\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device *target<br>
+<br>
+typedef struct gx_device_forward_s {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device_forward_common;<br>
+} gx_device_forward;<br>
+<br>
+#define private_st_device_forward()&nbsp;&nbsp;/* in gsdevice.c */\<br>
+&nbsp;&nbsp;gs_private_st_suffix_add1(st_device_forward, gx_device_forward,\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;"gx_device_forward", device_forward_enum_ptrs, device_forward_reloc_ptrs,\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device, target)
+</tt></b></blockquote>
+
+<p>
+Finally, we define a leaf class, which doesn't need a macro because we don't
+currently subclass it. (We can create the macro later if needed, with no
+changes anywhere else.) In this particular case, the leaf class has no
+additional data members, but it could have some.
+
+<blockquote><b><tt>
+typedef struct gx_device_null_s {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device_forward_common;<br>
+};<br>
+<br>
+#define private_st_device_null()&nbsp;&nbsp;/* in gsdevice.c */\<br>
+&nbsp;&nbsp;gs_private_st_suffix_add0_local(st_device_null, gx_device_null,\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;"gx_device_null", device_null_enum_ptrs, device_null_reloc_ptrs,\<br>
+&nbsp;&nbsp;&nbsp;&nbsp;gx_device_forward)
+</tt></b></blockquote>
+
+<p>
+Note that the above example is <strong>not</strong> the actual definition of
+the <b><tt>gx_device</tt></b> structure type: the actual type has some
+additional complications because it has a finalization procedure. See <a
+href="../src/gxdevcli.h">src/gxdevcli.h</a> for the details.
+
+<p>
+If you add members to a root class (such as <b><tt>gx_device</tt></b> in
+this example), or change existing members, do this in the
+<b><tt>gx_device_common</tt></b> macro, not the <b><tt>gx_device</tt></b>
+structure definition. Similarly, to change the
+<b><tt>gx_device_forward</tt></b> class, modify the
+<b><tt>gx_device_forward_common</tt></b> macro, not the structure
+definition. Only change the structure definition if the class is a leaf
+class (one with no <b><tt>_common</tt></b> macro and no possibility of
+subclassing), like <b><tt>gx_device_null</tt></b>.
+
+<h3><a name="Error_handling"></a>Error handling</h3>
+
+<p>
+Every caller should check for error returns and, in general, propagate them
+to <b>its</b> callers. By convention, nearly every procedure returns an
+<b><tt>int</tt></b> to indicate the outcome of the call:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td align=right>&lt; 0
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>Error return
+<tr valign=top> <td align=right>0
+ <td>&nbsp;
+ <td>Normal return
+<tr valign=top> <td align=right>&gt; 0
+ <td>&nbsp;
+ <td>Non-error return other than the normal case
+</table></blockquote>
+
+<p>
+To make a procedure generate an error and return it, as opposed to
+propagating an error generated by a lower procedure, you should use
+
+<blockquote>
+<b><tt>return_error(</tt></b><em>error_number</em><b><tt>);</tt></b>
+</blockquote>
+
+<p>
+Sometimes it is more convenient to generate the error in one place and
+return it in another. In this case, you should use
+
+<blockquote>
+<b><tt>code = gs_note_error(</tt></b><em>error_number</em><b><tt>);</tt></b><br>
+...<br>
+<b><tt>return code;</tt></b>
+</blockquote>
+
+<p>
+In executables built for debugging, the <b><tt>-E</tt></b> (or
+<b><tt>-Z#</tt></b>) command line switch causes <b><tt>return_error</tt></b>
+and <b><tt>gs_note_error</tt></b> to print the error number and the source
+file and line: this is often helpful for identifying the original cause of
+an error.
+
+<p>
+See the file <a href="../src/gserrors.h">src/gserrors.h</a> for the error
+return codes used by the graphics library, most of which correspond directly
+to PostScript error conditions.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+
+<p>
+<small>
+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.
+</small>
+
+<p>
+<small>Copyright &copy; 1996-2002 artofcode LLC.
+All rights reserved.</small>
+
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/CJK.htm b/Master/xemtex/doc/ghostscript/CJK.htm
new file mode 100644
index 00000000000..9833db35da4
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/CJK.htm
@@ -0,0 +1,497 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or
+g/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Features to support CJK CID-keyed in Ghostscript</title>
+<!-- $Id: CJK.htm,v 1.1.4.8.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Features to support CJK CID-keyed font in Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Font_License">Font license</a>
+<li><a href="#About_OCF_fonts">About OCF fonts</a>
+<li><a href="#About_CID_keyed_fonts">About CID-keyed fonts</a>
+<ul>
+ <li><a href="#About_CIDFontType0">CIDFontType 0</a>
+ <li><a href="#About_CIDFontType2">CJK TrueType font and CIDFontType 2</a>
+</ul>
+<li><a href="#About_CIDFnmap">About "CIDFnmap" of Ghostscript</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>Impatient users looking for step-by-step installation notes for
+CJK fonts should check gs-cjk documents at
+<a href="http://www.gyve.org/gs-cjk/supplement/">
+http://www.gyve.org/gs-cjk/supplement/</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+
+
+<h2><a name="Font_license"></a>Font license</h2>
+<p>
+As we note in <a href="Fonts.htm#Add_fonts">"Adding your own fonts"</a>,
+you have to read the license of fonts carefully.
+The fact you obtain the fonts legally does not mean
+always that you can use them with Ghostscript.
+
+Usually, outline fonts for east Asian scripts are licensed under
+more restricted conditions in comparison with ASCII or Latin
+fonts, because they must provide a large number of glyphs,
+more than 8000 glyphs.
+
+For example, Adobe licenses the Asian font package for Acrobat
+Reader as "solely for Acrobat Reader". So even if your system
+have pre-installed Acrobat Reader, you cannot use its Asian fonts
+in Ghostscript.
+
+
+<h2><a name="About_OCF_fonts"></a>About OCF fonts</h2>
+<p>
+Prior to PostScript level 2015, PostScript fonts for multibyte encoded
+script (Chinese, Japanese, Korean and Vietnamese etc) were implemented
+as a collection of many elemental Type1/Type3 fonts and a selector.
+Today these fonts are known as OCF (Original Composite Font).
+Ghostscript fully supports OCF.
+
+
+<p>
+Adobe has announced that OCF is obsolete.
+For details of OCF, refer<br>
+<blockquote>
+"CJKV Information Processing" (Ken Lunde, O'Reilly 1999) p. 281,<br>
+"PostScript Language Reference Manual, third edition" p. 357
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf"
+class="offsite">
+href="http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf
+</a><br>
+"PostScript Language Tutorial and Cookbook, Japanese edition" (Adobe Systems, Incorporated, ASCII Corporation 1989) pp. 241-271,<br>
+</blockquote>
+and Technical Notes for CID-keyed fonts.
+
+
+<h2><a name="About_CID_keyed_fonts"></a>About CID-keyed fonts</h2>
+<p>
+In PostScript level 2015, Adobe introduced a new font format
+"CID-keyed font" for CJK scripts.
+For details of the CID-keyed font format, refer<br>
+<blockquote>
+"PostScript Language Reference Manual, third edition"</a> p. 364
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf</a><br>
+Technical Specification #5014 "Adobe CMap and CIDFont Files Specification"
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5014.CMap_CIDFont_Spec.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5014.CMap_CIDFont_Spec.pdf
+</a><br>
+Technical Specification #5092 "CID-keyed Font Technology Overview"
+<a href="http://partners.adobe.com/asn/developer/pdfs/tn/5092.CID_Overview.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5092.CID_Overview.pdf
+</a><br>
+</blockquote>
+Ghostscript provides the basic functionalities of CID-keyed fonts,
+but the "rearranged font" feature is not implemented.
+The present functionalities are enough for common usage.
+Some Japanese PostScript programs expect that any system that
+supports CID-keyed fonts will also support "rearranged font".
+Such programs do not work well with ghostscript.
+Chinese and Korean scripts were never officially supplied by OCF,
+so such problems are rare.
+
+<p>
+The CID-keyed font format has a double layered structure.
+The lower layer is a CID-keyed font. The public interface of the
+CID-keyed font is a 16-bit CID (character identifier) number
+which is given to each unique "glyph" for subsets of various scripts.
+This is not a "character" code like ASCII/Unicode/etc.
+Adobe specifies CIDs for CJK scripts:
+Adobe-CNS1 &amp 2 (Traditional Chinese Hanzi glyphs),
+Adobe-GB1 (Simplified Chinese Hanzi glyphs),
+Adobe-Japan1 &amp; 2 (Japanese Kana and Kanji glyphs),
+Adobe-Korea1 &amp; 2 (Hangul and Hanja glyphs),
+Adobe-HongKong1 (Traditional Chinese Hanzi in HongKong),
+and Adobe-Vietnam1 (Chu-Han).
+The catalogues of glyphs for some CIDs are published by Adobe,
+refer Technical Notes service of Adobe:<br>
+<blockquote>
+<a
+href="http://partners.adobe.com/asn/developer/technotes/fonts.html"
+class="offsite">
+http://partners.adobe.com/asn/developer/technotes/fonts.html</a>
+</blockquote>
+
+
+
+
+<p>
+A CID-keyed font must provide the CID number interface,
+but the format of the glyph data may vary:<br>
+<ul>
+<li>CIDFontType 0 (FontType 9, CID-keyed Type1 font),</li>
+<li>CIDFontType 1 (FontType 10, CID-keyed Type3 font),</li>
+<li>CIDFontType 2 (FontType 11, CID-keyed Type42 font - TrueType)</li>
+</ul>
+
+
+
+
+
+
+<p>
+The higher layer is a CMap. A CMap provides a map from the multibyte
+character code to the CID of corresponding glyph, under a specified
+encoding system. PostScript fonts must provide a character
+code interface, so a bare CID-keyed font cannot be used as normal
+PostScript font without a CMap (e.g. <tt>findfont</tt>, <tt>show</tt>,
+etc are not usable, however <tt>glyphshow</tt> operator is usable for
+a bare CID-keyed font).
+In a CID-keyed font system, the various encoding systems can be supported
+by higher layer only. The lower layer is sharable.
+
+<p>
+A CMap file is stored in the /CMap resource category and the
+CID-keyed font file is stored in the /CIDFont resource category.
+Several operators introduced for CID-keyed fonts assume these locations,
+so CMap and CIDFont must not be stored in the /Font resource used
+traditionally used by PostScript fonts.
+
+<p>
+For "named resource category", refer
+<a href="Use.htm#PS_resources">Finding PostScript Level 2 resources</a> of Ghostscript.
+
+<p>
+Adobe distributes their official CMap (redistributable but no modification
+is permitted) on O'Reilly ftp site:
+<blockquote>
+<a
+href="ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/"
+class="offsite">
+ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/</a>
+</blockquote>
+
+To use CID-keyed font, these CMap files must be installed into the CMap
+resource directory.
+
+
+
+<h3><a name="About_CIDFontType0"></a>CIDFontType 0</h2>
+<p>
+CIDFontType0 is the most standard CIDFont of PostScript.
+It consists of two separated parts: PostScript
+program and attached binary data. The glyph data is stored in attached
+binary part and is dynamically accessed. In comparison with OCF,
+loading a CIDFontType0 is light-weight and comsumes less memory.
+
+<p>
+To make Ghostscript recognize a CIDFontType0 font is easy.
+If the CIDFontType0 font file is installed into a directory named "CIDFont"
+under GenericResourceDir (see
+<a href="Use.htm#PS_resources">Finding PostScript Level 2 resources</a>),
+Ghostscript will find it when searching for resources in /CIDFont category.
+
+
+
+
+<h3><a name="About_CIDFontType2"></a>CJK TrueType font and CIDFontType 2</h2>
+<p>
+In PostScript 2010, Adobe introduced the Type42 font format
+to embed a host-based TrueType font into a PostScript program.
+For details of the Type42 font format, refer to
+<blockquote>
+The Type 42 Font Format Specification. Technical Note #5012
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5012.Type42_Spec.pdf"
+class="offsite">
+"http://partners.adobe.com/asn/developer/pdfs/tn/5012.Type42_Spec.pdf
+</a>
+</blockquote>
+CIDFontType2 is a CID extension of the Type42 font format.
+If Ghostscript is compiled with
+<a href="Make.htm#Features_and_devices">ttfont device</a>
+and CMap files are installed, Ghostscript is capable of
+handling CIDFontType2 resource embedded in PostScript program
+or PDF document.
+The Type42 font specification notes that Type42 is an installable font
+format, but there's no font distributed in the Type42 format.
+This is a big difference from the standard PostScript fonts: Type1, Type3
+and CIDFontType0.
+
+<p>
+Ghostscript now provides "on-the-fly CIDFontType2 converter"
+for CJK TrueType, similar to the "on-the-fly Type42 converter" for
+Roman TrueType fonts.
+This does not mean you can perfectly substitute a required PostScript
+fonts by a TrueType font. CJK TrueType font often lack many
+non-popular glyphs and a few popular glyphs in Adobe CID.
+As a result, a TrueType font
+(designed as screen font for window system) cannot be a perfect
+replacement for an Adobe PostScript font
+Refer <a href="CJKTTCID.htm">CJKTTCID.htm</a> for further particulars.
+
+<p>
+The operator <b><tt>.openttcidfont</tt></b> constructs CIDFontType2
+font dictionary from a given TrueType font. <b><tt>.openttcidfont</tt></b>
+requires extra CMaps for PDF available from:
+
+<blockquote>
+<a
+href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html"
+class="offsite">
+http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html
+</a>
+</blockquote>
+
+The basic syntax of <b><tt>.openttcidfont</tt></b> is:<br>
+<blockquote>
+<b><tt>&lt;ttf_filename&gt; .openttcidfont</tt></b><br>
+</blockquote>
+
+<p>
+When a font file in Microsoft's TrueType Collection format
+(a font file with suffix <b><tt>.ttc</tt></b>
+ includes multiple fonts in single file) is given,
+the first font in it is used by default.
+To specify a font manually, index of the font should be passed
+to <b><tt>.openttcidfont</b></tt>, as:<br>
+
+<blockquote>
+<b><tt>&lt;ttc_filename&gt; 2 .openttcidfont</tt></b><br>
+</blockquote>
+
+<p>
+Old TrueType fonts were encoded by CJK-system specific encodings
+(e.g. Big5, Johab, ShiftJIS, etc) without stating what encoding
+is used.
+On the other hand, recent TrueType fonts are encoded by Unicode,
+but included glyphs are limited to specific language.
+By default, <b><tt>.openttcidfont</tt></b> detects encoding of
+TrueType font and the suitable Adobe CID automatically, but if
+you have trouble, these parameters should be specified manually.
+To specify Adobe CID and TrueType encoding explicitly, pass a name
+object as:
+
+<blockquote>
+<b><tt>&lt;ttf_filename&gt; /Adobe-Japan1-ShiftJIS .openttcidfont</tt></b><br>
+</blockquote>
+
+In such syntax, Adobe-Japan1 specifies Adobe CID to be mapped,
+and ShiftJIS specifies the encoding of TrueType fonts.
+Currently supported Adobe CIDs are:<br>
+
+<blockquote>
+<b><tt>Adobe-CNS1</tt></b><br>
+<b><tt>Adobe-GB1</tt></b><br>
+<b><tt>Adobe-Japan1</tt></b><br>
+<b><tt>Adobe-Japan2</tt></b><br>
+<b><tt>Adobe-Korea1</tt></b><br>
+</blockquote>
+
+and, supported TrueType encodings are:<br>
+
+<blockquote>
+<b><tt>Big5</tt></b><br>
+<b><tt>Johab</tt></b><br>
+<b><tt>PRC</tt></b><br>
+<b><tt>ShiftJIS</tt></b><br>
+<b><tt>Unicode</tt></b><br>
+<b><tt>Wansung</tt></b><br>
+</blockquote>
+
+In addition about on-the-fly CIDFontType2 conversion of TrueType fonts
+(of Big5, PRC, ShiftJIS, Wangsung), <tt>.openttcidfont</tt> requires
+more extra CMap files which are available from Asian font packages for
+Adobe Acrobat Reader. See <a href="Fonts.htm#CMap_Adobe"> "Adobe
+CMaps" subsection</a> of "Fonts and font facilities supplied with
+Ghostscript" section.
+
+
+
+<h2><a name="About_CIDFnmap"></a>About "CIDFnmap" of Ghostscript</h2>
+<p>
+By applying various CMap to single CIDFont, various font resources
+can be generated. To utilize this feature conveniently, "CIDFnmap"
+is introduced. CIDFnmap is similar to Fontmap, but it handles resource
+name of CIDFont.
+
+<p>
+To map all /Ryumin-Light-* fonts (/Ryumin-Light-H, /Ryumin-Light-RKSJ-H
+etc) derived from /Ryumin-Light CIDFont to those from /WadaMin-Regular,
+following single entry works enough:<br>
+
+<blockquote>
+<b><tt>/Ryumin-Light&nbsp;/WadaMin-Regular&nbsp;;</tt></b><br>
+</blockquote>
+
+Also CIDFnmap can define a resource from a file specified with full path,
+it is convenient to import resource from out of Ghostscript directory tree:<br>
+
+<blockquote>
+<b><tt>/WadaMin-Regular&nbsp;(/usr/lib/X11/fonts/CIDFont/WadaMin-Regular)&nbsp;;</tt></b><br>
+</blockquote>
+
+If the given file is TrueType font, CIDFnmap automatically detect it, and
+execute <b><tt>.openttcidfont</tt></b>:<br>
+
+<blockquote>
+<b><tt>/HG-MinchoL&nbsp;(/usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf)&nbsp;;</tt></b><br>
+</blockquote>
+
+Other operands for <b><tt>.openttcidfont</tt></b> (TTC index, CID/encoding
+specification) can be specified as:<br>
+
+<blockquote>
+<b><tt>
+/HeiseiMin-W3H&nbsp;(/usr/openwin/lib/locale/ja/X11/fonts/TT/HeiseiMin-W3H.ttf)&nbsp;/Adobe-Japan2-Unicode&nbsp;;<br>
+</blockquote>
+<blockquote>
+/Ryobi-PGothic&nbsp;(/usr/X11R6/lib/X11/fonts/TrueType/tcgothb.ttc)&nbsp;2&nbsp;/Adobe-Japan1-Unicode&nbsp;;<br>
+</tt></b>
+</blockquote>
+
+
+<p>
+For detail, please refer included sample CIDFnmap. For the sites
+to get font itself, refer <a href="Fonts.htm">Fonts.htm</a>.
+
+<dl>
+<dt>CIDFnmap.Ore</dt>
+<dd>
+ For free CJK CIDFontType0 fonts manufactured by Adobe.
+</dd>
+
+<dt>CIDFnmap.Bae</dt>
+<dd>
+ For free Hangul TrueType fonts manufactured by Hwan Design Inc..
+</dd>
+
+<dt>CIDFnmap.ARP</dt>
+<dd>
+ For free Simplified/Traditional Chinese TrueType fonts
+ manifactured by Arphic Technology.
+</dd>
+
+<dt>CIDFnmap.Koc</dt>
+<dd>
+ Japanese TrueType fonts and free CIDFontType0 version of them,
+ Kochi Mincho and Gothic.
+</dd>
+
+<dt>CIDFnmap.Sol</dt>
+<dd>
+ For CJK TrueType fonts bundled on Solaris 8 International edition.
+</dd>
+
+<dt>CIDFnmap.Win</dt>
+<dd>
+ For CJK TrueType fonts bundled on Windows.
+</dd>
+
+<dt>CIDFnmap.CJK</dt>
+<dd>
+ Aliasing for printer-based CJK fonts
+ (/HYGoThic-Medium, /MSung-Light, /Ryumin-Light, /STSong-Light, etc)
+ and fallback font definitions for missing fonts in PDF.
+</dd>
+
+<dt>CIDFnmap.b5, CIDFnmap.gb, CIDFnmap.ksx, CIDFnmap.sj</dt>
+<dd>
+ Aliasing locale-specific CIDFontNames which are often required
+ with multi-byte encoding in PS/PDF files.
+</dd>
+
+</dl>
+
+
+<b>NOTE:</b>
+In gs7.2x and later release,
+"CIDFnmap" feature will be merged into new mapping feature:
+"cidfmap" and "CIDFnmap" itself will be removed.
+
+
+<p>
+There are CJK samples in <b><tt>examples/cjk</tt></b>:
+<b><tt>
+all_ac1.ps, all_ag1.ps, all_aj1.ps, all_aj2.ps, all_ak1.ps
+</tt></b>
+(drawing all glyphs in Adobe CID for Traditional Chinese,
+Simplified Chinese, Japanese, Japanese Hojo Kanji, Korean)
+<b><tt>
+gscjk_ac.ps, gscjk_ag.ps, gscjk_aj.ps, gscjk_ak.ps
+</tt></b>
+(drawing short texts in horizontal and vertical writing modes)
+and multilingual sample <b><tt>iso2022.ps</tt></b>
+(this sample loads many fonts for various scripts, quite heavy).
+<b><tt>gscjk_*</tt></b> samples are written in Asian character encoding and
+iso2022.ps is in ISO-2022, not pure ASCII.
+To modify them, an internationalized or binary capable editor
+are recommended.
+
+<p>
+For proofing by PostScript printers (for Asian market),
+these samples use standard printer-based CJK fonts:
+/HYGoThic-Medium, /MSung-Light, /Ryumin-Light, /STSong-Light etc.
+To display them correctly by Ghostscript,
+printer-based fonts must be aliased to available fonts on Ghostscript.
+CIDFnmap.CJK lists known printer-based CJK fonts,
+modify it for your own environment.
+
+
+
+
+
+<p>
+This section by Suzuki Toshiya and gs-cjk project.
+&lt;<a href="mailto:mpsuzuki@gyve.org">mpsuzuki@gyve.org</a>&gt;
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<font size=2>
+
+<p>Copyright &copy; 2001 gs-cjk project
+&lt;<a href="http://www.gyve.org/gs-cjk/">http://www.gyve.org/gs-cjk/</a>&gt;.
+<p>Copyright &copy; 2002 artofocode LLC. All rights reserved.
+
+<p>This file is part of GNU Ghostscript. See the
+<a href="COPYING">GNU General Public License</a> (the "License") for
+full details of the terms of using, copying, modifying, and redistributing
+GNU Ghostscript.
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+</font>
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/CJKTTCID.htm b/Master/xemtex/doc/ghostscript/CJKTTCID.htm
new file mode 100644
index 00000000000..c777bc5b557
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/CJKTTCID.htm
@@ -0,0 +1,409 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Adobe CIDs and glyphs in CJK TrueType font</title>
+<!-- $Id: CJKTTCID.htm,v 1.1.4.8.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Adobe CIDs and glyphs in CJK TrueType font</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Overview">Overview</a></li>
+<li><a href="#Notes">Adobe CIDs that current Ghostscript can fills by CJK TTF</a></li>
+<li><a href="#References">References</a></li>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+This article is written by Taiji Yamada
+&lt;<a href="mailto:taiji@aihara.co.jp">taiji@aihara.co.jp</a>&gt;.
+He takes full responsibility for the wording and content of this article.
+
+<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] ================================================== -->
+
+
+<h2><a name="Overview"></a>Overview</h2>
+
+<p>
+This note provides information on utilization of CJK (Chinese,
+Japanese and Korean) TrueType fonts (TTF) as CIDFoneType 2 (Type11)
+CID-keyed fonts from the viewpoint of its validity and limitation.
+In order to compose CIDFontType 2 font from CJK TTF on the fly,
+Ghostscript uses not only standard CMaps (mapping from character
+encoding to CID, we call them ToCID CMaps in following) but also
+ToUnicode CMaps (mapping from CID to Unicode) and
+ToCode CMaps (mapping from CID to non-Unicode character encodings)
+which are freely distributed with Acrobat Reader by Adobe Systems
+Incorporated.
+
+For detail of ToUnicode CMaps, refer
+<blockquote>
+Adobe Systems Incorporated,
+"PDF Reference, Third Edition, Version 1.4",
+p. 368
+<a
+href="http://partners.adobe.com/asn/developer/acrosdk/docs/filefmtspecs/PDFReference.zip"
+class="offsite">
+http://partners.adobe.com/asn/developer/acrosdk/docs/filefmtspecs/PDFReference.zip
+</a><br>
+Adobe Systems Incorporated,
+"ToUnicode Mapping File Tutorial",
+Technical Note #5411</a><br>
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5411.ToUnicode.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5411.ToUnicode.pdf</a><br>
+</blockquote>
+ToUnicode and ToCode CMaps are designed for text-searching in PDF,
+and you should not expect Adobe ToUnicode CMap as a one-to-one map
+between Adobe glyph collection and glyph/character in Unicode.
+
+The current algorithm of Ghostscript to map CIDs to TTF glyph ID
+completely depends on Adobe CMaps, TrueType cmap and GSUB tables.
+
+<p>
+The current revision of on-the-fly CIDFontType 2 technology
+supports the following kinds Registry-Ordering (RO) of CID-keyed
+fonts:
+
+<tt><pre>
+ [RO]
+ Adobe-CNS1
+ Adobe-GB1
+ Adobe-Japan1
+ Adobe-Japan2
+ Adobe-Korea1
+</pre></tt><br>
+
+and doesn't support the following kinds of CID-keyed fonts:<br>
+
+<tt><pre>
+ [RO]
+ Adobe-CNS2
+ Adobe-HongKong1
+ Adobe-Korea2
+ Adobe-Vietnam1
+</pre></tt><br>
+
+The current revision can handle the following kinds (Encoding in cmap
+table) of TrueType fonts as CID-keyed fonts:<br>
+
+<tt><pre>
+ [Encoding] [RO]
+ Unicode Adobe-*
+ ShiftJIS Adobe-Japan1
+ PRC Adobe-GB1
+ Big5 Adobe-CNS1
+ Wansung Adobe-Korea1
+ Johab Adobe-Korea1
+</pre></tt><br>
+
+and doesn't support UCS-4 Encoding TrueType fonts for the present. In
+the case of Unicode Encoding, RO can be detected by reading ``Code
+Page Character Range'' of OS/2 table of TTF as follows:<br>
+
+<tt><pre>
+ [Encoding] [Code Page] [RO]
+ Unicode Japanese Adobe-Japan1
+ Simplified Chinese Adobe-GB1
+ Korean Wansung Adobe-Korea1
+ Traditional Chinese Adobe-CNS1
+ Korean Johab Adobe-Korea1
+</pre></tt><br>
+
+For each combination of RO and TTF Encoding, following Adobe CMaps are
+applied:<br>
+
+<tt><pre>
+ [RO-Encoding] [Supplement limit]
+ [used CMap] - [Comment]
+
+ Adobe-CNS1-Big5 0
+ Adobe-CNS1-ETen-B5 - ToCode CMap
+ ETen-B5-V - ToCID CMap
+ ETen-B5-H - ToCID CMap
+
+ Adobe-CNS1-Unicode 3
+ Adobe-CNS1-UCS2 - ToUnicode CMap
+ UniCNS-UCS2-V - ToCID CMap
+ UniCNS-UCS2-H - ToCID CMap
+
+ Adobe-GB1-PRC 2
+ Adobe-GB1-GBK-EUC - ToCode CMap
+ GBK-EUC-V - ToCID CMap
+ GBK-EUC-H - ToCID CMap
+
+ Adobe-GB1-Unicode 4
+ Adobe-GB1-UCS2 - ToUnicode CMap
+ UniGB-UCS2-V - ToCID CMap
+ UniGB-UCS2-H - ToCID CMap
+
+ Adobe-Japan1-ShiftJIS 2
+ Adobe-Japan1-90ms-RKSJ - ToCode CMap
+ 90ms-RKSJ-V - ToCID CMap
+ 90ms-RKSJ-H - ToCID CMap
+
+ Adobe-Japan1-Unicode 4
+ Adobe-Japan1-UCS2 - ToUnicode CMap
+ UniJIS-UCS2-V - ToCID CMap
+ UniJIS-UCS2-H - ToCID CMap
+
+ Adobe-Japan2-Unicode 0
+ UniHojo-UCS2-V - ToCID CMap
+ UniHojo-UCS2-H - ToCID CMap
+
+ Adobe-Korea1-Johab 1
+ KSC-Johab-V - ToCID CMap
+ KSC-Johab-H - ToCID CMap
+
+ Adobe-Korea1-Unicode 2
+ Adobe-Korea1-UCS2 - ToUnicode CMap
+ UniKS-UCS2-V - ToCID CMap
+ UniKS-UCS2-H - ToCID CMap
+
+ Adobe-Korea1-Wansung 1
+ Adobe-Korea1-KSCms-UHC - ToCode CMap
+ KSCms-UHC-V - ToCID CMap
+ KSCms-UHC-H - ToCID CMap
+</pre></tt><br>
+
+where Supplement values are denoted as the limit determined by the
+maximum CID in used CMaps.
+
+<p>
+The Glyph Substitution table (GSUB) of TTF, Single Substitution Format
+2 is read for vertically-used glyphs in CIDs. The current revision
+doesn't handle any other formats of GSUB, so handling ligatures and
+variants as CID-keyed fonts might be tasks to be solved in future.
+
+<p>
+In recent CID-keyed fonts, pre-rotated Latin glyphs are defined, but
+the current revision merely maps to normal Latin glyphs.
+Ghostscript cannot handle them at present.
+
+<h2><a name="Notes"></a>
+Adobe CIDs that current Ghostscript can fills by CJK TTF</h2>
+<p>
+Following tables and comments provide the details of validity and
+limitation for the individual kinds of CID-keyed fonts composed from
+generally-circulated and Unicode TrueType fonts at the current
+revision. Naturally, these results of glyphs lacking are affected by
+TrueType fonts you use.<br>
+
+<tt><pre>
+Adobe-CNS1 CID-keyed font composed from Traditional Chinese Unicode TTF
+-----------------------------------------------------------------------
+[ROS] [CID range] [Comment]
+Adobe-CNS1-0 0- 505 96,97,124-127,228,260 are lacking
+ 506- 561 no problem
+ 562- 594 all glyphs are lacking
+ 595-13645 no problem
+ 13646-13748 13646,13647 are lacking
+ 13749-13998 13996-13998 are lacking
+ 13999-14098 some glyphs are lacking
+Adobe-CNS1-1 14099-17407 lots of glyphs are lacking (*1)
+Adobe-CNS1-2 17408-17600 17503,17504 are lacking (*2)
+Adobe-CNS1-3 17601-17605 17603 is lacking
+ 17606-18845 lots of glyphs are lacking (*3)
+Adobe-CNS1-4 18846-18961 all glyphs assignment is impossible (*4)
+(*1) HK GCCS
+(*2) not pre-rotated
+(*3) HK SCS
+(*4) HK SCS (unused in UniCNS-UCS-2 CMap, though used in UniCNS-UTF8,
+UniCNS-UTF16, UniCNS-UTF32, also ETHK-B5, needless to say HKscs-B5)
+
+
+Adobe-GB1 CID-keyed font composed from Simplified Chinese Unicode TTF
+---------------------------------------------------------------------
+[ROS] [CID range] [Comment]
+Adobe-GB1-0 0- 939 99,695,698,737,935,938 are lacking
+ 940- 7702 no problem
+ 7703- 7716 7705,7708 are incorrect
+Adobe-GB1-1 7717- 9896 no problem
+Adobe-GB1-2 9897-22126 no problem
+Adobe-GB1-3 22127-22352 22347,22350,22352 are lacking (*1)
+Adobe-GB1-4 22353-22427 all glyphs are not available (*2)
+ 22428-29058 all glyphs are not available (*3)
+ 29059-29063 all glyphs are not available (*4)
+(*1) not pre-rotated
+(*2) additional Hiragana and Katakana, extended Bopomofo glyphs
+(*3) the Unified Han Ideographs Extension A
+(*4) pre-rotated glyphs
+
+
+Adobe-Japan1 CID-keyed font composed from Japanese Unicode TTF
+--------------------------------------------------------------
+[ROS] [CID range] [Comment]
+Adobe-Japan1-0 0- 1124 lots of glyphs are lacking or incorrect:
+ 96-98,127,128,130-133,135-137,226,326,
+ 390,396,422,424,502,506-509,512,513,515,
+ 606,607,632
+ 1125- 7477 no problem
+ 7478- 7632 7478 is lacking and 7608,7609 are incorrect
+ 7633- 8004 lots of glyphs are lacking or incorrect (*4)
+ 8005- 8283 lots of glyphs are lacking or incorrect:
+ 8008,8053,8059-8061,8091,8102-8111,8166-8181,
+ 8189,8190,8227-8229,8260
+Adobe-Japan1-1 8284- 8358 lots of glyphs are lacking or incorrect:
+ 8295-8297,8300-8302,
+ 8306,8307,8321,8322,8325,8326
+Adobe-Japan1-2 8359- 8717 no problem
+ 8718- 8719 8718 is lacking and 8719 is incorrect
+Adobe-Japan1-3 8720- 9353 some glyphs are lacking or incorrect (*1)
+Adobe-Japan1-4 9354- 9737 some glyphs are lacking or incorrect (*2)
+ 9738-13319 lots of glyphs are lacking or incorrect (*3)
+ 13320-15443 all glyphs are variants or lacking (*4)
+(*1) not pre-rotated
+(*2) not italic form
+(*3) many ligature, pre-rotated, pre-rotated and italic form glyphs
+(*4) lots of variants are assigned substitutes
+
+
+Adobe-Japan2 CID-keyed font composed from Japanese Unicode TTF
+--------------------------------------------------------------
+[ROS] [CID range] [Comment]
+Adobe-Japan2-0 0- 6067 no problem
+
+
+Adobe-Korea1 CID-keyed font composed from Korean Unicode TTF
+------------------------------------------------------------
+[ROS] [CID range] [Comment]
+Adobe-Korea1-0 0- 357 some glyphs are lacking or incorrect:
+ 61,97,100,104,111,227
+ 358- 3435 no problem
+ 3436- 8055 no problem
+ 8056- 8190 lots of glyphs are lacking or incorrect:
+ 8059,8061,8075,8083-8085,8089,8091,8093,8190
+ 8191- 9332 no problem
+Adobe-Korea1-1 9333-18154 perhaps no problem, but cannot check (*)
+Adobe-Korea1-2 18155-18351 some glyphs are lacking
+(*) Technical Note on Adobe-Korea1-1,2 has not been published yet[6].
+</pre></tt>
+
+<p>
+The current mapping algorithm based on ToCID CMaps and ToUnicode
+CMaps still has problems. The gs-cjk project[7] is considering how
+to settle the matters.
+
+
+<h2><a name="References"></a>References</h2>
+<ol>
+<li>Microsoft Corporation, "OpenType specification"
+<a
+href="http://www.asia.microsoft.com/typography/otspec/"
+class="offsite">
+http://www.asia.microsoft.com/typography/otspec/</a>
+</li>
+
+<li>
+Adobe Systems Incorporated,
+"Adobe-CNS1-4 Character Collection for CID-Keyed Fonts",
+Technical Note #5080
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5080.Adobe-CNS1-4.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5080.Adobe-CNS1-4.pdf</a>
+</li>
+
+<li>
+Adobe Systems Incorporated,
+"Adobe-GB1-4 Character Collection for CID-Keyed Fonts",
+Technical Note #5079
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5079.Adobe-GB1-4.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5079.Adobe-GB1-4.pdf</a>
+</li>
+
+<li>
+Adobe Systems Incorporated,
+"Adobe-Japan1-4 Character Collection for CID-Keyed Fonts",
+Technical Note #5078
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5078.Adobe-Japan1-4.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5078.Adobe-Japan1-4.pdf
+</a>
+</li>
+
+<li>
+Adobe Systems Incorporated,
+"Adobe-Japan2-0 Character Collection for CID-Keyed Fonts",
+Technical Note #5097
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5097.Adobe-Japan2-0.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5097.Adobe-Japan2-0.pdf
+</a>
+</li>
+
+<li>
+Adobe Systems Incorporated,
+"Adobe-Korea1-0 Character Collection for CID-Keyed Fonts"
+Technical Note #5093
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5093.Adobe-Korea1-0.pdf"
+class="offsite">
+http://partners.adobe.com/asn/developer/pdfs/tn/5093.Adobe-Korea1-0.pdf
+</a>
+</li>
+
+<li>
+Taiji Yamada, "Tips on PostScript"
+<a href="http://www.aihara.co.jp/~taiji/tops/" class="offsite">
+http://www.aihara.co.jp/~taiji/tops/</a></li>
+
+<li>"gs-cjk project"
+<a href="http://www.gyve.org/gs-cjk/" class="offsite">
+http://www.gyve.org/gs-cjk/</a></li>
+</ol>
+
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<font size=2>
+
+<p>Copyright &copy; 2001 Taiji Yamada &lt;<a href="mailto:taiji@aihara.co.jp">taiji@aihara.co.jp</a>&gt; and
+<a href="http://www.gyve.org/gs-cjk/" class="offsite">gs-cjk project</a>.
+<p>Copyright &copy; 2002 artofcode LLC. All rights reserved.
+
+<p>This file is part of GNU Ghostscript. See the
+<a href="COPYING">GNU General Public License</a> (the "License") for
+full details of the terms of using, copying, modifying, and redistributing
+GNU Ghostscript.
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+</font>
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/COPYING b/Master/xemtex/doc/ghostscript/COPYING
new file mode 100644
index 00000000000..fbdd65f6f8b
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Master/xemtex/doc/ghostscript/COPYING.LGPL b/Master/xemtex/doc/ghostscript/COPYING.LGPL
new file mode 100644
index 00000000000..cf9b6b99726
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/COPYING.LGPL
@@ -0,0 +1,510 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+^L
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+^L
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/Master/xemtex/doc/ghostscript/Changes.htm b/Master/xemtex/doc/ghostscript/Changes.htm
new file mode 100644
index 00000000000..e3626b64c5e
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Changes.htm
@@ -0,0 +1,288 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>Ghostscript 7.07 change history as of 2003-05-17 15:57:59</title>
+<link rel=stylesheet type="text/css" href="gs.css">
+</head><body>
+
+<!-- cvs command: cvs -d giles@cvs.ghostscript.com:/cvs/ghostscript -Q log -rGS_7_0X_GNU -->
+
+<ul>
+<li><a href="#7.07-Documentation">Documentation</a>,
+ <a href="#7.07-Procedures">Procedures</a>,
+ <a href="#7.07-Utilities">Utilities</a>,
+ <a href="#7.07-Drivers">Drivers</a>,
+ <a href="#7.07-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.07-Interpreter">Interpreter</a>,
+ <a href="#7.07-Library">Library</a>,
+ <a href="#7.07-Other">Other</a>
+</ul>
+
+
+<h2><a name="7.07-Documentation"></a>Documentation</h2><pre>
+
+Increment the version number after release. (doc/News.htm [1.90.2.18.2.6]:
+2003/04/08 11:05:47 giles)
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (doc/Readme.htm [1.31.2.16.2.5]: 2003/04/12 14:02:38
+giles)
+
+Update the version and data for the 7.07 release.
+(doc/API.htm [1.11.2.13.2.6], doc/C-style.htm [1.21.2.11.2.5],
+doc/DLL.htm [1.15.2.11.2.5], doc/Develop.htm [1.47.2.18.2.6],
+doc/Devices.htm [1.34.2.15.2.6], doc/Drivers.htm [1.21.2.11.2.5],
+doc/Fonts.htm [1.22.2.13.2.6], doc/Helpers.htm [1.17.2.11.2.5],
+doc/History1.htm [1.13.2.11.2.5], doc/History2.htm [1.13.2.11.2.6],
+doc/History3.htm [1.13.2.11.2.6], doc/History4.htm [1.13.2.11.2.6],
+doc/History5.htm [1.15.2.11.2.6], doc/History6.htm [1.30.2.11.2.6],
+doc/History7.htm [1.5.2.17.2.7], doc/Htmstyle.htm [1.18.2.11.2.5],
+doc/Install.htm [1.26.2.13.2.6], doc/Issues.htm [1.15.2.13.2.5],
+doc/Language.htm [1.34.2.16.2.5], doc/Lib.htm [1.14.2.11.2.5],
+doc/Maintain.htm [1.23.2.12.2.6], doc/Make.htm [1.36.2.19.2.6],
+doc/New-user.htm [1.30.2.14.2.6], doc/News.htm [1.90.2.18.2.7],
+doc/Projects.htm [1.33.2.11.2.6], doc/Ps-style.htm [1.13.2.11.2.5],
+doc/Ps2epsi.htm [1.15.2.12.2.6], doc/Ps2pdf.htm [1.32.2.11.2.5],
+doc/Psfiles.htm [1.22.2.12.2.5], doc/Readme.htm [1.31.2.16.2.6],
+doc/Release.htm [1.40.2.23.2.6], doc/Source.htm [1.13.2.11.2.5],
+doc/Unix-lpr.htm [1.13.2.11.2.5], doc/Use.htm [1.33.2.22.2.6],
+doc/Xfonts.htm [1.13.2.11.2.5], doc/gs-vms.hlp [1.12.2.10.2.5],
+man/dvipdf.1 [1.10.2.9.2.5], man/font2c.1 [1.10.2.9.2.5],
+man/gs.1 [1.10.2.10.2.5], man/gslp.1 [1.10.2.9.2.5],
+man/gsnd.1 [1.10.2.9.2.5], man/pdf2dsc.1 [1.10.2.9.2.5],
+man/pdf2ps.1 [1.12.2.9.2.5], man/pdfopt.1 [1.10.2.9.2.5],
+man/pf2afm.1 [1.10.2.9.2.5], man/pfbtopfa.1 [1.11.2.9.2.5],
+man/printafm.1 [1.10.2.9.2.5], man/ps2ascii.1 [1.10.2.9.2.5],
+man/ps2epsi.1 [1.10.2.10.2.5], man/ps2pdf.1 [1.14.2.11.2.5],
+man/ps2pdfwr.1 [1.13.2.10.2.5], man/ps2ps.1 [1.17.2.9.2.5],
+man/wftopfa.1 [1.10.2.9.2.5]: 2003/05/17 14:38:59 giles)
+
+Update the release notes. (doc/News.htm [1.90.2.18.2.8]: 2003/05/17 14:44:22
+giles)
+
+</pre><h2><a name="7.07-Procedures"></a>Procedures</h2><pre>
+
+Increment the version number after release. (version.mak [1.36.2.9.2.5]:
+2003/04/08 11:05:47 giles)
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (toolbin/3way.tcl [1.3.6.1.2.1],
+toolbin/cvs2hist.py [1.9.2.2.2.1], toolbin/errlist.tcl [1.3.6.1.2.1],
+toolbin/gsindent [1.3.6.1.2.1], toolbin/gsmake.tcl [1.5.6.1.2.1],
+toolbin/gssubst [1.1.4.1.2.1], toolbin/headers.tcl [1.3.6.1.2.1],
+toolbin/leaks.tcl [1.3.6.1.2.1], toolbin/makegnu.tcl [1.3.6.1.2.1],
+toolbin/makeset.tcl [1.10.2.3.2.1], toolbin/many2pdf.tcl [1.1.4.1.2.1],
+toolbin/pdfinflt.ps [1.1.2.1.2.1], toolbin/pre [1.11.2.3.2.1],
+toolbin/precheck.tcl [1.3.6.1.2.1], toolbin/suite.tcl [1.3.6.1.2.1],
+toolbin/tmake.tcl [1.3.6.1.2.1]: 2003/04/12 14:02:39 giles)
+
+Add the bbox device to the default macos shlib build. Bug 686811.
+(macos-mcp.mak [1.3.2.8.2.2]: 2003/04/27 23:50:11 giles)
+
+Add the display device to the default macos shlib build.
+(macos-mcp.mak [1.3.2.8.2.3]: 2003/04/27 23:52:55 giles)
+
+Log message: For the pngalpha device, set the default background color to
+white in the bKGD chunk. Add an option -dBackgroundColor=16#RRGGBB to
+explicitly set the background color. This is needed by a common web browser
+that doesn't correctly support PNG with alpha transparency. DETAILS:
+Programs that don't fully support alpha transparency let libpng convert an
+RGBA image to RGB. The background color used is either provided by the
+program, or in the bKGD chunk, or it falls back to gray. MSIE was defaulting
+to a gray background which is not commonly used on web pages. By writing a
+white bKGD chunk, PNG files will display correctly against a white
+background in MSIE. If a solid color for a web page background is used with
+&lt;body bgcolor="#CCCC00"&gt;, then PNG images appearing on that page would
+need to be created with -dBackgroundColor=16#CCCC00. For textured background
+there is no hope. Microsoft needs to fix Internet Explorer.
+(libpng.mak [1.10.2.3.2.2]: 2003/05/15 10:05:29 ghostgum)
+
+Update the version and data for the 7.07 release.
+(version.mak [1.36.2.9.2.6]: 2003/05/17 14:39:00 giles)
+
+</pre><h2><a name="7.07-Utilities"></a>Utilities</h2><pre>
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (lib/Fontmap.ATB [1.2.6.1.2.1],
+lib/Fontmap.ATM [1.2.6.1.2.1], lib/Fontmap.GS [1.2.6.1.2.1],
+lib/Fontmap.OS2 [1.2.6.1.2.1], lib/Fontmap.SGI [1.2.6.1.2.1],
+lib/Fontmap.Sol [1.2.6.1.2.1], lib/Fontmap.Ult [1.2.6.1.2.1],
+lib/addxchar.ps [1.2.6.1.2.1], lib/align.ps [1.2.6.1.2.1],
+lib/bdftops.ps [1.3.2.2.2.1], lib/caption.ps [1.2.6.1.2.1],
+lib/cid2code.ps [1.3.4.1.2.1], lib/docie.ps [1.2.6.1.2.1],
+lib/errpage.ps [1.2.6.1.2.1], lib/font2c.ps [1.3.2.1.2.1],
+lib/font2pcl.ps [1.2.6.2.2.1], lib/gslp.ps [1.2.6.2.2.1],
+lib/gsnup.ps [1.2.6.1.2.1], lib/image-qa.ps [1.3.2.1.2.1],
+lib/impath.ps [1.3.4.1.2.1], lib/jispaper.ps [1.2.6.1.2.1],
+lib/lines.ps [1.2.6.1.2.1], lib/markhint.ps [1.2.6.1.2.1],
+lib/markpath.ps [1.2.6.1.2.1], lib/packfile.ps [1.2.6.2.2.1],
+lib/pcharstr.ps [1.2.6.1.2.1], lib/pdf2dsc.ps [1.3.4.2.2.1],
+lib/pdfopt.ps [1.10.2.2.2.1], lib/pdfwrite.ps [1.7.2.1.2.1],
+lib/pfbtopfa.ps [1.2.6.1.2.1], lib/ppath.ps [1.2.6.1.2.1],
+lib/pphs.ps [1.3.2.1.2.1], lib/ps2ai.ps [1.2.6.1.2.1],
+lib/ps2ascii.ps [1.3.2.2.2.1], lib/ps2epsi.ps [1.5.2.3.2.1],
+lib/rollconv.ps [1.1.8.1], lib/showchar.ps [1.2.6.1.2.1],
+lib/stcinfo.ps [1.2.6.1.2.1], lib/stcolor.ps [1.2.6.1.2.1],
+lib/stocht.ps [1.3.6.1.2.1], lib/traceimg.ps [1.2.6.2.2.1],
+lib/traceop.ps [1.2.6.1.2.1], lib/type1enc.ps [1.2.6.1.2.1],
+lib/type1ops.ps [1.2.6.1.2.1], lib/uninfo.ps [1.2.6.1.2.1],
+lib/unprot.ps [1.2.6.1.2.1], lib/viewcmyk.ps [1.2.6.2.2.1],
+lib/viewgif.ps [1.2.6.1.2.1], lib/viewjpeg.ps [1.1.6.2.2.1],
+lib/viewmiff.ps [1.2.6.1.2.1], lib/viewpbm.ps [1.2.6.2.2.1],
+lib/viewpcx.ps [1.2.6.2.2.1], lib/viewps2a.ps [1.2.6.1.2.1],
+lib/wftopfa.ps [1.2.6.1.2.1], lib/winmaps.ps [1.2.6.1.2.1],
+lib/wrfont.ps [1.2.6.1.2.1], lib/zeroline.ps [1.2.6.1.2.1]: 2003/04/12
+14:02:38 giles)
+
+Avoid calling a null pgsdll_callback, as can happen with the new client api
+and CHECK_INTERRUPTS. This fix affects primarily MacOS; similar protections
+are already in place for other platforms, although the global was not
+explicitly initialized to null. Also return EOFC in the mac stdio stream
+process if no callback is defined. Closes bug 686768. Also backports some
+code cleanup from HEAD. (gp_mac.c [1.1.4.3.2.2], gp_macio.c [1.2.4.5.2.3]:
+2003/04/12 16:37:26 giles)
+
+Add a missing variable declaration for VMS. Patch from Forrest Cahoon and
+Jouk Jansen. (gp_vms.c [1.7.2.3.2.2]: 2003/04/14 13:58:04 giles)
+
+</pre><h2><a name="7.07-Drivers"></a>Drivers</h2><pre>
+
+Avoid calling a null pgsdll_callback, as can happen with the new client api
+and CHECK_INTERRUPTS. This fix affects primarily MacOS; similar protections
+are already in place for other platforms, although the global was not
+explicitly initialized to null. Also return EOFC in the mac stdio stream
+process if no callback is defined. Closes bug 686768. Also backports some
+code cleanup from HEAD. (gdevmac.c [1.1.4.3.2.2]: 2003/04/12 16:37:26 giles)
+
+In the display device, store the line pointers separately from the bits, so
+that the bits can be placed in special memory (e.g. allocated in video
+memory). Fixes Bug 686780 display_memalloc() asks for too much memory. If
+reopening the display device fails after setting the callback, display an
+error message. Allocate the large display bitmap using a low level allocator
+to avoid exceeding the memory limit of the previously used device stable
+memory allocator. Fixes bugs 686836 "-r doesn't work" and duplicate 686838
+"Ghostscript doesn't do anything". DETAILS: The display memory device and
+the raster including line pointers was allocated using the stable allocator
+of the display device. This had a limit of 1Mbyte, which was exceeded when
+the resolution was greater then 114dpi. This would cause subsequent
+allocations to fail, but it appears that nothing else tried to use this
+allocator after the display device. The display device was changed to
+allocate the line pointers separately to allow the raster to be allocated in
+special memory, e.g. video memory or shared memory. This caused the
+subsequent allocation of the line pointers to fail when resolution exceeded
+114dpi. The modified code now allocates the raster with
+gs_alloc_byte_array_immovable, which allocates directly from the C heap, not
+subject to any memory limit apart from the overall -K limit if specified,
+and is not subject to garbage collection. The normal allocator now has
+sufficient memory to allocate the line pointers without problem. The raster
+pointer is removed from the pointers that are enumerated during garbage
+collection. (gdevdsp.c [1.5.2.5.2.3]: 2003/05/01 10:06:26 ghostgum)
+
+Log message: For the pngalpha device, set the default background color to
+white in the bKGD chunk. Add an option -dBackgroundColor=16#RRGGBB to
+explicitly set the background color. This is needed by a common web browser
+that doesn't correctly support PNG with alpha transparency. DETAILS:
+Programs that don't fully support alpha transparency let libpng convert an
+RGBA image to RGB. The background color used is either provided by the
+program, or in the bKGD chunk, or it falls back to gray. MSIE was defaulting
+to a gray background which is not commonly used on web pages. By writing a
+white bKGD chunk, PNG files will display correctly against a white
+background in MSIE. If a solid color for a web page background is used with
+&lt;body bgcolor="#CCCC00"&gt;, then PNG images appearing on that page would
+need to be created with -dBackgroundColor=16#CCCC00. For textured background
+there is no hope. Microsoft needs to fix Internet Explorer.
+(gdevpng.c [1.4.2.1.2.3]: 2003/05/15 10:05:29 ghostgum)
+
+</pre><h2><a name="7.07-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (lib/pdf_base.ps [1.14.2.1.2.1],
+lib/pdf_draw.ps [1.36.2.2.2.1], lib/pdf_font.ps [1.23.2.6.2.1],
+lib/pdf_main.ps [1.35.2.7.2.3], lib/pdf_ops.ps [1.17.2.2.2.1]: 2003/04/12
+14:02:39 giles)
+
+</pre><h2><a name="7.07-Interpreter"></a>Interpreter</h2><pre>
+
+Increment the version number after release. (lib/gs_init.ps [1.40.2.12.2.2]:
+2003/04/08 11:05:47 giles)
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (examples/waterfal.ps [1.3.2.1.2.1],
+lib/gs_agl.ps [1.2.6.1.2.1], lib/gs_btokn.ps [1.5.2.1.2.1],
+lib/gs_ccfnt.ps [1.5.2.1.2.1], lib/gs_ce_e.ps [1.2.6.1.2.1],
+lib/gs_cff.ps [1.10.2.1.2.1], lib/gs_cidcm.ps [1.5.2.2.2.1],
+lib/gs_cidfn.ps [1.18.4.5.2.1], lib/gs_cmap.ps [1.11.2.4.2.1],
+lib/gs_cmdl.ps [1.2.6.1.2.1], lib/gs_css_e.ps [1.2.6.1.2.1],
+lib/gs_dbt_e.ps [1.2.6.1.2.1], lib/gs_diskf.ps [1.2.6.1.2.1],
+lib/gs_dpnxt.ps [1.2.6.1.2.1], lib/gs_dps.ps [1.4.6.1.2.1],
+lib/gs_dps1.ps [1.2.6.1.2.1], lib/gs_dps2.ps [1.3.4.1.2.1],
+lib/gs_dscp.ps [1.4.2.1.2.1], lib/gs_epsf.ps [1.2.6.11.2.3],
+lib/gs_fform.ps [1.2.6.1.2.1], lib/gs_fonts.ps [1.13.2.3.2.1],
+lib/gs_frsd.ps [1.4.6.1.2.1], lib/gs_icc.ps [1.2.2.1.2.1],
+lib/gs_il1_e.ps [1.2.6.1.2.1], lib/gs_il2_e.ps [1.2.6.1.2.1],
+lib/gs_init.ps [1.40.2.12.2.3], lib/gs_kanji.ps [1.2.6.1.2.1],
+lib/gs_ksb_e.ps [1.2.6.1.2.1], lib/gs_l2img.ps [1.2.6.1.2.1],
+lib/gs_lev2.ps [1.7.2.4.2.3], lib/gs_lgo_e.ps [1.3.6.1.2.1],
+lib/gs_lgx_e.ps [1.2.6.1.2.1], lib/gs_ll3.ps [1.10.2.2.2.1],
+lib/gs_mex_e.ps [1.2.6.1.2.1], lib/gs_mgl_e.ps [1.3.6.1.2.1],
+lib/gs_mro_e.ps [1.2.6.1.2.1], lib/gs_pdf_e.ps [1.2.6.1.2.1],
+lib/gs_pdfwr.ps [1.11.2.1.2.1], lib/gs_pfile.ps [1.2.6.1.2.1],
+lib/gs_rdlin.ps [1.2.6.1.2.1], lib/gs_res.ps [1.16.2.2.2.1],
+lib/gs_setpd.ps [1.8.2.2.2.2], lib/gs_statd.ps [1.5.2.2.2.1],
+lib/gs_std_e.ps [1.2.6.1.2.1], lib/gs_sym_e.ps [1.2.6.1.2.1],
+lib/gs_trap.ps [1.3.6.2.2.1], lib/gs_ttf.ps [1.9.2.4.2.1],
+lib/gs_typ32.ps [1.3.2.2.2.1], lib/gs_typ42.ps [1.2.6.1.2.1],
+lib/gs_type1.ps [1.5.2.1.2.1], lib/gs_wan_e.ps [1.2.6.1.2.1],
+lib/gs_wl1_e.ps [1.2.6.1.2.1], lib/gs_wl2_e.ps [1.2.6.1.2.1],
+lib/gs_wl5_e.ps [1.2.6.1.2.1]: 2003/04/12 14:02:38 giles)
+
+Sort the list of devices in the output of 'gs -h' so they're easier to read.
+List the default device separately as it's no longer first. Based on a patch
+from Nelson Beebe. Closes bug 416746. Also correct a warning in argproc().
+(imainarg.c [1.13.2.3.2.2]: 2003/04/12 16:43:14 giles)
+
+In the display device, store the line pointers separately from the bits, so
+that the bits can be placed in special memory (e.g. allocated in video
+memory). Fixes Bug 686780 display_memalloc() asks for too much memory. If
+reopening the display device fails after setting the callback, display an
+error message. Allocate the large display bitmap using a low level allocator
+to avoid exceeding the memory limit of the previously used device stable
+memory allocator. Fixes bugs 686836 "-r doesn't work" and duplicate 686838
+"Ghostscript doesn't do anything". DETAILS: The display memory device and
+the raster including line pointers was allocated using the stable allocator
+of the display device. This had a limit of 1Mbyte, which was exceeded when
+the resolution was greater then 114dpi. This would cause subsequent
+allocations to fail, but it appears that nothing else tried to use this
+allocator after the display device. The display device was changed to
+allocate the line pointers separately to allow the raster to be allocated in
+special memory, e.g. video memory or shared memory. This caused the
+subsequent allocation of the line pointers to fail when resolution exceeded
+114dpi. The modified code now allocates the raster with
+gs_alloc_byte_array_immovable, which allocates directly from the C heap, not
+subject to any memory limit apart from the overall -K limit if specified,
+and is not subject to garbage collection. The normal allocator now has
+sufficient memory to allocate the line pointers without problem. The raster
+pointer is removed from the pointers that are enumerated during garbage
+collection. (idisp.c [1.2.2.2.2.2]: 2003/05/01 10:06:26 ghostgum)
+
+Security fixes. Add detection of %pipe% device when in SAFER mode. Also fix
+detection of 'renamefile' to prevent rename from a file that is not on the
+PermitFileControl list. (zfile.c [1.11.2.4.2.2]: 2003/05/17 14:28:33 ray)
+
+</pre><h2><a name="7.07-Library"></a>Library</h2><pre>
+
+Increment the version number after release. (gscdef.c [1.15.2.4.2.3]:
+2003/04/08 11:05:47 giles)
+
+Update the version and data for the 7.07 release. (gscdef.c [1.15.2.4.2.4]:
+2003/05/17 14:39:00 giles)
+
+</pre><h2><a name="7.07-Other"></a>Other</h2><pre>
+
+Test the optimization compiler flag '-O2' before using it since some vendor
+compilers have different syntax. (Makefile.in [1.1.4.13.2.3],
+configure.ac [1.4.4.12.2.2]: 2003/04/16 13:59:56 giles)
+
+Include the bbox device in the default autoconf build.
+(Makefile.in [1.1.4.13.2.4]: 2003/04/29 18:33:31 giles)
+
+</pre></body></html>
diff --git a/Master/xemtex/doc/ghostscript/Current.htm b/Master/xemtex/doc/ghostscript/Current.htm
new file mode 100644
index 00000000000..1d4fd4270f6
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Current.htm
@@ -0,0 +1,272 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Information specifically about the current release</title>
+<!-- $Id: Current.htm,v 1.13.2.11.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: current.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Information specifically about Ghostscript 6.0</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#New_features">New features (since release 5.50)</a>
+<li><a href="#Changes">Changes (since release 5.50)</a>
+<li><a href="#Known_problems">Known problems</a>
+ <ul>
+ <li><a href="#Usage">Usage</a>
+ <li><a href="#Limitations">Limitations</a>
+ <li><a href="#Graphics_bugs">Graphics bugs</a>
+ <li><a href="#Non_graphics_bugs">Non-graphics bugs</a>
+ </ul>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="New_features"></a>New features (since release 5.50)</h2>
+
+<p>
+(This is not a complete list of new features: see <a href="News.htm">the
+news</a> for details.)
+
+<p>
+Ghostscript now handles essentially all of PostScript LanguageLevel 3 and
+PDF 1.3 (Acrobat 4.x compatibility). See <a
+href="Language.htm"><b>Language.htm</b></a> for details.
+
+<p>
+The PDF writer now implements most of the Acrobat (TM) Distiller parameters
+for compressing and downsampling images.
+
+<p>
+The PDF writer now recognizes nearly all varieties of pdfmark, other than
+the Distiller 3.0 "named object" pdfmarks and the Distiller 4.0 "document
+structure" pdfmarks.
+
+<p>
+The PDF writer now handles text in all fonts, not just the 14 built-in ones,
+and implements the Distiller parameters affecting font embedding and
+subsetting. (It still usually converts double-byte fonts to bitmaps.)
+
+<p>
+16- and 24-bit X Windows displays are now fully supported.
+
+<p>
+You now need only the header files and shared libraries, not the source
+code, if you want to use precompiled versions of the jpeg, libpng, or zlib
+libraries.
+
+<p>
+The syntax
+<b><tt>%</tt></b><em>iodevice</em><b><tt>%</tt></b><em>filename</em> is now
+supported with the <b><tt>-sOutputFile=</tt></b> switch, allowing you to
+send raster output to a piped command.
+
+<p>
+You can now use MMK or MMS to build Ghostscript on OpenVMS systems.
+
+<p>
+For driver writers, there are improved facilities for planar output,
+rasterizing directly into a driver-provided buffer, detecting bands that are
+all white or that only use a subset of the colorants, and providing CRDs
+from the driver.
+
+<p>
+The driver API now includes facilities for passing high-level text
+operations, completing the set of high-level operations (bitmap images and
+vector graphics were implemented in 5.50). See <a href="Drivers.htm">the
+documentation</a> for details.
+
+<p>
+Ghostscript as a dynamically linked library is now supported on the Mac as
+well as on Windows.
+
+<p>
+GNU readline was supported in most of the beta distributions for 6.0, but
+was removed at the last minute because of objections from the Free Software
+Foundation. Please see <a href="Make.htm#GNU_readline">here</a> for more
+information.
+
+<h2><a name="Changes"></a>Changes (since release 5.50)</h2>
+
+<h3>Directories and build procedure</h3>
+
+<p>
+The files in the release now have a more complex directory structure. In
+the table below, <em>top</em> refers to the top-level directory,
+<b><tt>gs</tt></b><em>n.nn</em>.
+
+<p>
+The <em>top</em><b><tt>/</tt></b> is where you create a link to the
+appropriate makefile in <em>top</em><b><tt>/src/</tt></b>. On all systems
+other than MS Windows, the build procedure does not write into this
+directory.
+
+<p>
+The files included in the Ghostscript release now are found in five
+subdirectories.
+
+<ul>
+<li><em>top</em><b><tt>/src/</tt></b> contains the C/C++ source code, the
+makefiles, and all other files needed to build the program. The build
+procedure reads from this directory but does not write into it. Nothing in
+this directory is needed at run time.
+
+<li><p><em>top</em><b><tt>/lib/</tt></b> contains PostScript and script
+files needed at run time. The build procedure reads from this directory but
+does not write into it. The contents of this directory are needed at run
+time and are copied by the Unix <b><tt>make install</tt></b> command.
+
+<li><em>top</em><b><tt>/doc/</tt></b> contains documentation. Copied by
+<b><tt>make install</tt></b>.
+
+<li><em>top</em><b><tt>/man/</tt></b> contains Unix <b><tt>man</tt></b>
+pages. Copied by <b><tt>make install</tt></b>.
+
+<li><em>top</em><b><tt>/examples/</tt></b> contains sample PostScript and
+PDF files. Copied by <b><tt>make install</tt></b>.
+
+</ul>
+
+<p>
+The build procedure creates two additional subdirectories,
+<em>top</em><b><tt>/obj/</tt></b> (or <b><tt>debugobj</tt></b> or
+<b><tt>pgobj</tt></b>) and <em>top</em><b><tt>/bin/</tt></b>. See the
+documentation on <a href="Make.htm">how to build Ghostscript</a> for more
+information.
+
+<h2>Other changes</h2>
+
+<p>
+If you are a developer working with the Ghostscript code in any way other
+than writing or modifying drivers, please read all of the "Incompatible
+changes" sections of the <a href="News.htm">release news</a> for important
+information.
+
+<h2><a name="Known_problems"></a>Known problems</h2>
+
+<p>
+See the <a href="News.htm">release news</a> for details.
+
+<h3><a name="Usage"></a>Usage</h3>
+
+<p>
+On a DOS system, interrupting the interpreter by typing control-C doesn't
+restore the display mode.
+
+<h3><a name="Limitations"></a>Limitations</h3>
+
+<p>
+<b><tt>serialnumber</tt></b> returns the same value in all copies.
+
+<p>
+Some floating point exceptions terminate the interpreter, rather than
+producing a <b><tt>limitcheck</tt></b> error.
+
+<p>
+The <b><tt>DCTEncode</tt></b> filter disregards the <b><tt>Blend</tt></b>
+parameter, and uses different <b><tt>QuantTables</tt></b> and
+<b><tt>HuffTables</tt></b> from Adobe's.
+
+<p>
+The DCT filters do not support nonintegral sample ratios. Also,
+<b><tt>DCTEncode</tt></b> will not create files with Sum(HS&times;VS)&gt;10
+(regardless of the value of the <b><tt>Relax</tt></b> parameter) because
+they violate the JPEG standard; but <b><tt>DCTDecode</tt></b> will read
+such files.
+
+<p>
+The size of the execution stack cannot be changed dynamically. (However,
+the sizes of the operand and dictionary stacks can be changed.)
+
+<p>
+<b><tt>Separation</tt></b> and <b><tt>DeviceN</tt></b> color spaces are
+implemented, but devices that actually produce color separations are not
+supported: these color spaces always use the alternate space. The special
+color separations <b><tt>All</tt></b> and <b><tt>None</tt></b>, and the
+primary separations (<b><tt>Red</tt></b>, <b><tt>Green</tt></b>, etc.), are
+not supported.
+
+<p>
+<b><tt>execform</tt></b> and <b><tt>ucache</tt></b> are implemented, but
+they do not actually do any caching; <b><tt>setucacheparams</tt></b> and
+<b><tt>ucachestatus</tt></b> are dummies. (This only impacts performance,
+not functionality.)
+
+<p>
+The <b><tt>image</tt></b> operator honors the <b><tt>Interpolate</tt></b>
+flag in the image dictionary only for ImageType 1 and 3 images, only if the
+combined transformation (<b><tt>ImageMatrix</tt></b> + CTM) doesn't involve
+rotation, skewing, or X-reflection, and only for certain scalings and color
+spaces; <b><tt>imagemask</tt></b> doesn't honor <b><tt>Interpolate</tt></b>
+at all.
+
+<p>
+Some path-building operations that would generate a device coordinate
+larger than +/-2^<small><sup>19</sup></small> will cause a
+limitcheck. However, the common ones (<b><tt>[r]moveto</tt></b>,
+<b><tt>[r]lineto</tt></b>, <b><tt>[r]curveto</tt></b>, <b><tt>closepath</tt></b>) will not.
+
+<h3><a name="Graphics_bugs"></a>Graphics bugs</h3>
+
+<p>
+There are no known graphics bugs in this release.
+
+<h3><a name="Non_graphics_bugs"></a>Non-graphics bugs</h3>
+
+<p>
+The <b><tt>definefont</tt></b> operator (Subrs (type 1 fonts)) expects
+arrays but won't accept packed arrays.
+
+<p>
+Syntax errors occurring within a binary token do not produce the error
+message specified by the Adobe documentation.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998, 1999 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>
diff --git a/Master/xemtex/doc/ghostscript/DLL.htm b/Master/xemtex/doc/ghostscript/DLL.htm
new file mode 100644
index 00000000000..180d4218349
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/DLL.htm
@@ -0,0 +1,703 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>How to use the Ghostscript Dynamic Link Library (DLL)</title>
+<!-- $Id: DLL.htm,v 1.15.2.11.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: dll.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>How to use the Ghostscript Dynamic Link Library (DLL)</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#DLL">What is the Ghostscript DLL?</a>
+<li><a href="#Common_functions">Platform-independent DLL functions</a>
+<ul>
+<li><a href="#revision"><b><tt>gsdll_revision()</tt></b></a>
+<li><a href="#init"><b><tt>gsdll_init()</tt></b></a>
+<li><a href="#execute_begin"><b><tt>gsdll_execute_begin()</tt></b></a>
+<li><a href="#execute_cont"><b><tt>gsdll_execute_cont()</tt></b></a>
+<li><a href="#execute_end"><b><tt>gsdll_execute_end()</tt></b></a>
+<li><a href="#exit"><b><tt>gsdll_exit()</tt></b></a>
+<li><a href="#lock_device"><b><tt>gsdll_lock_device()</tt></b></a>
+</ul>
+<li><a href="#Callback">Callback function</a>
+<li><a href="#OS2_device">Ghostscript DLL device for OS/2</a>
+<ul>
+<li><a href="#OS2_bmp"><b><tt>gsdll_get_bitmap()</tt></b></a>
+<li><a href="#OS2_example">Example DLL usage for OS/2</a>
+</ul>
+<li><a href="#Win_device">Ghostscript DLL device for MS Windows</a>
+<ul>
+<li><a href="#Win_copydib"><b><tt>gsdll_copy_dib()</tt></b></a>
+<li><a href="#Win_copypalette"><b><tt>gsdll_copy_palette()</tt></b></a>
+<li><a href="#Win_draw"><b><tt>gsdll_draw()</tt></b></a>
+<li><a href="#Win_get_row"><b><tt>gsdll_get_bitmap_row()</tt></b></a>
+</ul>
+<li><a href="#Win16">Ghostscript DLL Device for 16-bit MS Windows</a>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<p>
+<b>WARNING: The API described in this document is obsolete and will
+be removed in the future.</b>
+The current Ghostscript Interpreter API
+is described in <a href="API.htm">API.htm</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="DLL"></a>What is the Ghostscript DLL?</h2>
+
+<p>
+For the OS/2, Win16 and Win32 platforms, Ghostscript is built as a dynamic
+link library (DLL), and to provide the interface described in the <a
+href="Use.htm">usage documentation</a>, a smaller independent executable
+(<b><tt>.EXE</tt></b>) loads this DLL, which provides all the interaction
+with the windowing system, including image windows and, if necessary, a
+text window. This document describes the DLL interface, which consists of
+eight main functions, <a href="#functions">seven platform-independent
+ones</a> provided by the DLL and one, <a href="#Callback">the callback
+function</a>, provided by the caller. The DLL provides some other
+platform-specific functions for display devices.
+
+<p>
+The DLL's name and characteristics differ among the three platforms:
+
+<ul>
+<li>The <a href="#OS2_device">OS/2 DLL <b><tt>GSDLL2.DLL</tt></b></a> has
+MULTIPLE NONSHARED data segments and can be called by multiple programs
+simultaneously.
+
+<li>The <a href="#Win_device">Win32 DLL <b><tt>GSDLL32.DLL</tt></b></a> has
+MULTIPLE NONSHARED data segments. Under Win32s it can be used by only one
+program at a time, but under Windows 95/98 or Windows NT it can be called by
+multiple programs simultaneously.
+
+<li>The <a href="#Win16">Win16 DLL <b><tt>GSDLL16.DLL</tt></b></a> is a
+large-memory model DLL with far static data. Due to the limitations of
+16-bit MS Windows -- Windows 3.n -- the DLL can be used by only one program
+at a time.
+</ul>
+
+<p>
+The source for the executable is in <b><tt>dp</tt></b>*.* (OS/2) and
+<b><tt>dw</tt></b>*.* (Windows). See these source files for examples of
+how to use the DLL.
+
+<hr>
+
+<h2><a name="Common_functions"></a>Platform-independent DLL functions</h2>
+
+<p>
+The seven functions provided by the DLL are
+<ul>
+<li><b><tt>int GSDLLAPI <a href="#revision">gsdll_revision</a>(char **product, char **copyright, long *gs_revision, long *gs_revisiondate)</tt></b>
+<li><b><tt>int GSDLLAPI <a href="#init">gsdll_init</a>(GSDLL_CALLBACK callback, HWND hwnd, int argc, char *argv[]);</tt></b>
+<li><b><tt>int GSDLLAPI <a href="#execute_begin">gsdll_execute_begin</a>(void);</tt></b>
+<li><b><tt>int GSDLLAPI <a href="#execute_cont">gsdll_execute_cont</a>(const char *str, int len);</tt></b>
+<li><b><tt>int GSDLLAPI <a href="#execute_end">gsdll_execute_end</a>(void);</tt></b>
+<li><b><tt>int GSDLLAPI <a href="#exit">gsdll_exit</a>(void);</tt></b>
+<li><b><tt>int GSDLLAPI <a href="#lock_device">gsdll_lock_device</a>(unsigned char *device, int flag);</tt></b>
+
+<p>
+where <b><tt>GSDLLAPI</tt></b> is defined under OS/2 as
+
+<blockquote><b><tt>
+#define GSDLLAPI
+</tt></b></blockquote>
+
+<p>
+and under MS Windows as
+
+<blockquote><b><tt>
+#define GSDLLAPI CALLBACK _export
+</tt></b></blockquote>
+</ul>
+
+<h3><a name="revision"></a><b><tt>gsdll_revision()</tt></b></h3>
+
+<blockquote>
+This function returns the revision numbers and strings of the Ghostscript
+DLL; you should call it before <b><tt>gsdll_init()</tt></b> to make sure
+that the correct version of the Ghostscript DLL has been loaded. For
+example
+
+<blockquote>
+<pre>char *product;
+char *copyright;
+long revision;
+long revisiondate;
+gsdll_revision(&amp;product, &amp;copyright, &amp;revision, &amp;revisiondate);
+</pre></blockquote>
+
+<p>
+You may use <b><tt>NULL</tt></b> pointers if you do not want a particular
+value.
+</blockquote>
+
+<h3><a name="init"></a><b><tt>gsdll_init()</tt></b></h3>
+
+<blockquote>
+<b><tt>gsdll_init()</tt></b> must be called after loading the DLL and
+before executing any Ghostscript commands. The arguments are the address
+of the callback function, a parent window handle, the count of arguments
+and an array of pointers to the arguments. For example
+
+<blockquote>
+<pre>char *argv[5];
+argv[0] = "gswin.exe";
+argv[1] = "-Ic:\\gs;c:\gs\\fonts";
+argv[2] = "-dNOPAUSE",
+argv[3] = "-sDEVICE=djet500",
+argv[4] = NULL;
+argc = 4;
+
+code = gsdll_init(gsdll_callback, hwnd, argc, argv);
+</pre></blockquote>
+
+<p>
+<b><tt>hwnd</tt></b> is used as the parent window handle for any windows
+created by Ghostscript. <b><tt>hwnd</tt></b> may be <b><tt>NULL</tt></b>
+if the caller has no windows, but if it is <b><tt>NULL</tt></b>, you should
+avoid using devices which may open windows.
+
+<p>
+A return code of 0 (zero) indicates no errors, and the code may now call
+<b><tt>gsdll_execute_begin()</tt></b> or <b><tt>gsdll_exit()</tt></b>. If
+the return value is non-zero then <b><tt>gsdll_exit()</tt></b> must not be
+called.
+
+<p>
+A return value of <b><tt>GSDLL_INIT_QUIT</tt></b> indicates that one of the
+command line files or arguments called "<b><tt>quit</tt></b>", or that
+Ghostscript was reading stdin and reached end-of-file. This is not an
+error. <b><tt>gsdll_exit()</tt></b> must not be called.
+
+<p>
+A return value of <b><tt>GSDLL_INIT_IN_USE</tt></b> indicates that the DLL
+is in use by another application (Windows 3.1 only). The DLL should be
+immediately unloaded (or the caller terminated).
+<b><tt>gsdll_exit()</tt></b> must not be called.
+</blockquote>
+
+<h3><a name="execute_begin"></a><b><tt>gsdll_execute_begin()</tt></b></h3>
+
+<blockquote>
+This must be called after <b><tt>gsdll_init()</tt></b> and before
+<b><tt>gsdll_execute_cont()</tt></b>.
+</blockquote>
+
+<h3><a name="execute_cont"></a><b><tt>gsdll_execute_cont()</tt></b></h3>
+
+<blockquote>
+After successfully calling <b><tt>gsdll_init()</tt></b> and
+<b><tt>gsdll_execute_begin()</tt></b>, commands may be given to Ghostscript
+with <b><tt>gsdll_execute_cont()</tt></b>. Examples are:
+
+<blockquote>
+<pre>char *command = "1 2 add == flush\n";
+code = gsdll_execute_cont(command, strlen(command));
+command = "qu"
+code = gsdll_execute_cont(command, strlen(command));
+command = "it\n"
+code = gsdll_execute_cont(command, strlen(command));
+</pre>
+
+<a name="cont_returns"></a>
+<table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Return codes from <b><tt>gsdll_execute_cont()</tt></b></font><hr>
+<tr valign=bottom>
+ <th align=left>Code
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Status
+<tr> <td colspan=3><hr>
+<tr valign=top> <td align=left>0
+ <td>&nbsp;
+ <td>No errors
+<tr valign=top> <td align=left>&lt; 0
+ <td>&nbsp;
+ <td>Error
+<tr valign=top> <td align=left>&lt;= -100
+ <td>&nbsp;
+ <td>"<b><tt>quit</tt></b>" has been executed, or fatal error.
+<b><tt>gsdll_exit()</tt></b> must then be called: do not call
+<b><tt>gsdll_execute_end()</tt></b>.
+</table>
+</blockquote>
+
+<b><tt>gsdll_execute_cont()</tt></b>
+does not flush stdio, so if you want to see output from Ghostscript you
+must do this explicitly as shown in the example above.
+
+<p>
+When executing a string with <b><tt>gsdll_execute_cont()</tt></b>,
+<b><tt>currentfile</tt></b> is the input from
+<b><tt>gsdll_execute_cont()</tt></b>. Reading from <b><tt>%stdin</tt></b>
+uses the callback.
+
+</blockquote>
+
+<h3><a name="execute_end"></a><b><tt>gsdll_execute_end()</tt></b></h3>
+
+<blockquote>
+If <b><tt>gsdll_execute_cont()</tt></b> did not return an error, then
+<b><tt>gsdll_execute_end()</tt></b> must be called after
+<b><tt>gsdll_execute_cont()</tt></b> and before
+<b><tt>gsdll_exit()</tt></b>.
+</blockquote>
+
+<h3><a name="exit"></a><b><tt>gsdll_exit()</tt></b></h3>
+
+<blockquote>
+Call gsdll_exit() to terminate the Ghostscript DLL. It must be called if a
+fatal error has occurred; see the <a href="#cont_returns">return value
+of <b><tt>gsdll_execute_cont()</tt></b></a>. After calling
+<b><tt>gsdll_exit()</tt></b>, there are two options:
+
+<ul>
+<li>Unload the DLL, either by terminating the application or by
+calling <b><tt>DosFreeModule</tt></b> (OS/2) or <b><tt>FreeLibrary</tt></b> (MS Windows).
+
+<li>Call <b><tt>gsdll_init()</tt></b> again to restart Ghostscript.
+</ul>
+</blockquote>
+
+<h3><a name="lock_device"></a><b><tt>gsdll_lock_device()</tt></b></h3>
+
+<blockquote>
+Since the caller may be multithreaded, a lock is needed to control access
+to the display device, and <b><tt>gsdll_lock_device()</tt></b> provides that
+locking.
+
+<blockquote>
+<pre>int gsdll_lock_device(unsigned char *device, int flag);
+ /* Lock the device if flag = TRUE */
+ /* Unlock the device if flag = FALSE */
+ /* device is a pointer to Ghostscript os2dll or mswindll device */
+ /* from GSDLL_DEVICE message. */
+ /* Return value is the lock count. */
+</pre>
+
+<table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Locking and unlocking devices</font><hr>
+<tr valign=top> <td>To lock a device
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td><b><tt>gsdll_lock_device(device, 1)</tt></b>;
+<tr valign=top> <td>To unlock a device
+ <td>&nbsp;
+ <td><b><tt>gsdll_lock_device(device, 0)</tt></b>;
+</table>
+</blockquote>
+
+<p>
+This function is typically used to lock the device while repainting a
+window or copying the device bitmap to the clipboard. Ghostscript may draw
+into the device bitmap or update the palette entries while the device is
+locked by the caller, but locking the device prevents the Ghostscript DLL
+from closing the device or changing its size or depth.
+
+<p>
+Under OS/2, Windows 95/98 and Windows NT, this lock is implemented using a
+mutual exclusion semaphore (mutex). The return value is the lock count,
+which is either 0 ("unlocked") or 1 ("locked"). The function blocks until
+the device is locked by the caller.
+
+<p>
+Under Win16 or Win32s, <b><tt>gsdll_lock_device()</tt></b> always returns
+immediately with a lock count as its return value. A lock count of 2 or
+more is definite indication of an error, probably calling the function
+twice. Access to the device should be controlled by checking the Windows
+message queue only when the bitmap is not being accessed.
+</blockquote>
+
+<hr>
+
+<h2><a name="Callback"></a>Callback function</h2>
+
+<blockquote>
+As an argument to <a href="#init"><b><tt>gsdll_init()</tt></b></a> the
+caller must provide a callback function which the DLL invokes for stdio and
+to notify the caller about device events. The function provided by the
+caller has this prototype:
+
+<blockquote><b><tt>
+int gsdll_callback(int&nbsp;message, char&nbsp;*str, unsigned&nbsp;long&nbsp;count);
+</tt></b></blockquote>
+
+<p>
+The Pascal calling convention is not used. An example callback function
+is:
+
+<blockquote>
+<pre>int
+gsdll_callback(int message, char *str, unsigned long count)
+{
+char *p;
+ switch (message) {
+ case GSDLL_STDIN:
+ p = fgets(str, count, stdin);
+ if (p)
+ return strlen(str);
+ else
+ return 0;
+ case GSDLL_STDOUT:
+ if (str != (char *)NULL)
+ fwrite(str, 1, count, stdout);
+ return count;
+ case GSDLL_DEVICE:
+ fprintf(stdout,"Callback: DEVICE %p %s\n", str,
+ count ? "open" : "close");
+ break;
+ case GSDLL_SYNC:
+ fprintf(stdout,"Callback: SYNC %p\n", str);
+ break;
+ case GSDLL_PAGE:
+ fprintf(stdout,"Callback: PAGE %p\n", str);
+ break;
+ case GSDLL_SIZE:
+ fprintf(stdout,"Callback: SIZE %p width=%d height=%d\n", str,
+ (int)(count &amp; 0xffff), (int)((count&gt;&gt;16) &amp; 0xffff) );
+ break;
+ case GSDLL_POLL:
+ return 0; /* no error */
+ default:
+ fprintf(stdout,"Callback: Unknown message=%d\n",message);
+ break;
+ }
+ return 0;
+}
+</pre>
+
+<table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Messages used by callback</font><hr>
+<tr valign=bottom>
+ <th align=left>Symbol
+ <td>&nbsp;&nbsp;
+ <th align=left>
+ <td>&nbsp;&nbsp;
+ <th align=left>Use
+<tr> <td colspan=5><hr>
+<tr valign=top> <td><b><tt>GSDLL_STDIN</tt></b>
+ <td>&nbsp;
+ <td>1
+ <td>&nbsp;
+ <td>get <b><tt>count</tt></b> characters to <b><tt>str</tt></b> from stdin, return number of characters read
+<tr valign=top> <td><b><tt>GSDLL_STDOUT</tt></b>
+ <td>&nbsp;
+ <td>2
+ <td>&nbsp;
+ <td>put <b><tt>count</tt></b> characters from <b><tt>str</tt></b>
+ to stdout, return number of characters written
+<tr valign=top> <td><b><tt>GSDLL_DEVICE</tt></b>
+ <td>&nbsp;
+ <td>3
+ <td>&nbsp;
+ <td>device <b><tt>str</tt></b> has been opened if
+ <b><tt>count</tt></b>&nbsp;=&nbsp;1, closed if
+ <b><tt>count</tt></b>&nbsp;=&nbsp;0
+<tr valign=top> <td><b><tt>GSDLL_SYNC</tt></b>
+ <td>&nbsp;
+ <td>4
+ <td>&nbsp;
+ <td>sync_output for device <b><tt>str</tt></b>
+<tr valign=top> <td><b><tt>GSDLL_PAGE</tt></b>
+ <td>&nbsp;
+ <td>5
+ <td>&nbsp;
+ <td>output_page for device <b><tt>str</tt></b>
+<tr valign=top> <td><b><tt>GSDLL_SIZE</tt></b>
+ <td>&nbsp;
+ <td>6
+ <td>&nbsp;
+ <td>resize for device <b><tt>str</tt></b>:
+ LOWORD(<b><tt>count</tt></b>) is new <b><tt>xsize</tt></b>,
+ HIWORD(<b><tt>count</tt></b>) is new <b><tt>ysize</tt></b>
+<tr valign=top> <td><b><tt>GSDLL_POLL</tt></b>
+ <td>&nbsp;
+ <td>7
+ <td>&nbsp;
+ <td>Called from <b><tt>gp_check_interrupt()</tt></b><br>
+ Can be used by the caller to poll the message queue.
+ Normally returns 0. To abort
+ <b><tt>gsdll_execute_cont()</tt></b>, return a non-zero
+ error code until <b><tt>gsdll_execute_cont()</tt></b>
+ returns.
+</table>
+</blockquote>
+</blockquote>
+
+<hr>
+
+<h2><a name="OS2_device"></a>Ghostscript DLL device for OS/2</h2>
+
+<p>
+The <b><tt>os2dll</tt></b> device is provided in the Ghostscript DLL for
+use by the caller. No drawing facilities are provided by the DLL because
+the DLL may be loaded by a text-only (non-PM) application. The caller is
+notified via the <b><tt>gsdll_callback()</tt></b> when a new
+<b><tt>os2dll</tt></b> device is opened or closed
+(<b><tt>GSDLL_DEVICE</tt></b>), when the window should be redrawn
+(<b><tt>GSDLL_SYNC</tt></b> or <b><tt>GSDLL_PAGE</tt></b>) or when the
+bitmap size changes (<b><tt>GSDLL_SIZE</tt></b>).
+Note that more than one <b><tt>os2dll</tt></b> device may be opened.
+
+<h3><a name="OS2_bmp"></a><b><tt>gsdll_get_bitmap()</tt></b></h3>
+
+<blockquote>
+<b><tt>gsdll_get_bitmap()</tt></b> returns a pointer to a bitmap in BMP
+format. The <b><tt>os2dll</tt></b> device draws into this bitmap.
+
+<blockquote>
+<pre>unsigned long gsdll_get_bitmap(unsigned char *device, unsigned char **pbitmap);
+ /* return in pbitmap the address of the bitmap */
+ /* device is a pointer to Ghostscript os2dll device from GSDLL_DEVICE message */
+</pre></blockquote>
+
+<p>
+The caller can then display the bitmap however it likes, but should lock
+the bitmap with <b><tt>gsdll_lock_device()</tt></b> before painting from
+it, and unlock it afterwards. The bitmap address does not change until the
+<b><tt>os2dll</tt></b> device is closed; however the bitmap size and
+palette may change whenever the bitmap is not locked.
+</blockquote>
+
+<h3><a name="OS2_example"></a>Example DLL usage for OS/2</h3>
+
+<p>
+The example here shows a minimal usage of the Ghostscript DLL under OS/2.
+The sample callback function above is needed.
+
+<blockquote>
+<pre>#define INCL_DOS
+#include &lt;os2.h&gt;
+#include &lt;stdio.h&gt;
+#include "gsdll.h"
+
+PFN_gsdll_init pgsdll_init;
+PFN_gsdll_execute_begin pgsdll_execute_begin;
+PFN_gsdll_execute_cont pgsdll_execute_cont;
+PFN_gsdll_execute_end pgsdll_execute_end;
+PFN_gsdll_exit pgsdll_exit;
+
+HMODULE hmodule_gsdll;
+char buf[256];
+
+int
+main(int argc, char *argv[])
+{
+int code;
+APIRET rc;
+ if (!DosLoadModule(buf, sizeof(buf), "GSDLL2", &amp;hmodule_gsdll)) {
+ fprintf(stderr, "Loaded GSDLL2\n");
+ DosQueryProcAddr(hmodule_gsdll, 0, "gsdll_init", (PFN *)(&amp;pgsdll_init));
+ DosQueryProcAddr(hmodule_gsdll, 0, "gsdll_execute_begin", (PFN *)(&amp;pgsdll_execute_begin));
+ DosQueryProcAddr(hmodule_gsdll, 0, "gsdll_execute_cont", (PFN *)(&amp;pgsdll_execute_cont));
+ DosQueryProcAddr(hmodule_gsdll, 0, "gsdll_execute_end", (PFN *)(&amp;pgsdll_execute_end));
+ DosQueryProcAddr(hmodule_gsdll, 0, "gsdll_exit", (PFN *)(&amp;pgsdll_exit));
+ }
+ else {
+ fprintf(stderr, "Can't load GSDLL2\n");
+ }
+
+ code = (*pgsdll_init)(gsdll_callback, NULL, argc, argv);
+ fprintf(stdout,"gsdll_init returns %d\n", code);
+ code = (*pgsdll_execute_begin)();
+ if (code==0) {
+ while (fgets(buf, sizeof(buf), stdin)) {
+ code = (*pgsdll_execute_cont)(buf, strlen(buf));
+ fprintf(stdout,"gsdll_execute returns %d\n", code);
+ if (code &lt; 0)
+ break;
+ }
+ if (!code)
+ code = (*pgsdll_execute_end)();
+ code = (*pgsdll_exit)();
+ fprintf(stdout,"gsdll_exit returns %d\n", code);
+ }
+ rc = DosFreeModule(hmodule_gsdll);
+ fprintf(stdout,"DosFreeModule returns %d\n", rc);
+ return 0;
+}
+</pre></blockquote>
+
+<hr>
+
+<h2><a name="Win_device"></a>Ghostscript DLL device for MS Windows</h2>
+
+<p>
+The <b><tt>mswindll</tt></b> device is provided in the Ghostscript DLL for
+use by the caller. The caller is notified via the
+<b><tt>gsdll_callback()</tt></b> when a new <b><tt>mswindll</tt></b> device
+is opened or closed (<b><tt>GSDLL_DEVICE</tt></b>), when the window should
+be redrawn (<b><tt>GSDLL_SYNC</tt></b> or <b><tt>GSDLL_PAGE</tt></b>) or
+when the bitmap size changes (<b><tt>GSDLL_SIZE</tt></b>). Note that more
+than one <b><tt>mswindll</tt></b> device may be opened.
+
+<p>
+Four DLL functions are available to use the <b><tt>mswindll</tt></b>
+device.
+
+<h3><a name="Win_copydib"></a><b><tt>gsdll_copy_dib()</tt></b></h3>
+
+<blockquote>
+Copy the <b><tt>mswindll</tt></b> bitmap to the clipboard.
+
+<blockquote>
+<pre>HGLOBAL GSDLLAPI gsdll_copy_dib(unsigned char *device);
+ /* make a copy of the device bitmap and return shared memory handle to it */
+ /* device is a pointer to Ghostscript device from GSDLL_DEVICE message */
+</pre></blockquote>
+</blockquote>
+
+<h3><a name="Win_copypalette"></a><b><tt>gsdll_copy_palette()</tt></b></h3>
+
+<blockquote>
+Copy the <b><tt>mswindll</tt></b> palette to the clipboard.
+
+<blockquote>
+<pre>HPALETTE GSDLLAPI gsdll_copy_palette(unsigned char *device);
+/* make a copy of the device palette and return a handle to it */
+/* device is a pointer to Ghostscript device from GSDLL_DEVICE message */
+</pre></blockquote>
+</blockquote>
+
+<h3><a name="Win_draw"></a><b><tt>gsdll_draw()</tt></b></h3>
+
+<blockquote>
+Display output from the <b><tt>mswindll</tt></b> device. The caller should
+create a window and call <b><tt>gsdll_draw()</tt></b> in response to the
+<b><tt>WM_PAINT</tt></b> message. The device context <b><tt>hdc</tt></b>
+must be for a device because <b><tt>SetDIBitsToDevice()</tt></b> is used.
+
+<blockquote>
+<pre>void GSDLLAPI gsdll_draw(unsigned char *device, HDC hdc,
+ LPRECT dest, LPRECT src);
+/* copy the rectangle src from the device bitmap */
+/* to the rectangle dest on the device given by hdc */
+/* hdc must be a device context for a device (NOT a bitmap) */
+/* device is a pointer to Ghostscript device from GSDLL_DEVICE message */
+</pre></blockquote>
+</blockquote>
+
+<h3><a name="Win_get_row"></a><b><tt>gsdll_get_bitmap_row()</tt></b></h3>
+
+<blockquote>
+Get a BMP header, a palette, and a pointer to a row in the bitmap. This
+function exists to allow the bitmap to be copied to a file or structured
+storage without the overhead of having two copies of the bitmap in memory
+at the same time.
+
+<p>
+Ghostscript can change the palette while the device is locked. Do not call
+this function while Ghostscript is busy.
+
+<blockquote>
+<pre>int GSDLLAPI gsdll_get_bitmap_row(unsigned char *device, LPBITMAPINFOHEADER pbmih,
+ LPRGBQUAD prgbquad, LPBYTE *ppbyte, unsigned int row)
+/* If pbmih nonzero, copy the BITMAPINFOHEADER.
+ * If prgbquad nonzero, copy the palette.
+ * number of entries copied is given by pbmih-&gt;biClrUsed
+ * If ppbyte nonzero, return pointer to row.
+ * pointer is only valid while device is locked
+ */
+</pre></blockquote>
+</blockquote>
+
+<hr>
+
+<h2><a name="Win16"></a>Ghostscript DLL Device for 16-bit MS Windows</h2>
+
+<p>
+This platform has the most problems of the three. Support for it may be
+dropped in future.
+
+<p>
+The Win16 DLL <b><tt>GSDLL16.DLL</tt></b> is a large-memory model DLL with
+far static data. Due to the limitations of 16-bit MS Windows, the DLL can
+be used by only one program at a time.
+
+<p>
+However, <b><tt>GSDLL16</tt></b> is marked as having SINGLE SHARED data
+segments, allowing multiple applications to load it with no error
+indication. (The DLL wouldn't load at all if MULTIPLE NONSHARED was used).
+Nonetheless, <b>it cannot be used by more than one application at a
+time</b>, so applications loading <b><tt>GSDLL16</tt></b> should check the
+return value of <b><tt>gsdll_init()</tt></b>: if this value is non-zero,
+then <b><tt>GSDLL16</tt></b> is already in use by another application and
+should <b><em>not</em></b> be used: <b><tt>GSDLL16</tt></b> should be
+unloaded immediately using <b><tt>FreeLibrary()</tt></b>, or the calling
+program should quit without attempting to use the library..
+
+<p>
+The segmented architecture of the Intel 80286 causes the usual amount of
+grief when using <b><tt>GSDLL16</tt></b>. Because the callback is called
+from the DLL, which is using a different data segment, the callback must be
+declared as <b><tt>_far&nbsp;_export</tt></b>:
+
+<blockquote>
+<pre>int _far _export gsdll_callback(int message, char *str, unsigned long count);
+</pre></blockquote>
+
+<p>
+Instead of giving <b><tt>gsdll_init()</tt></b> the address of
+<b><tt>gsdll_callback()</tt></b>, it should instead be given the address of
+a thunk created by <b><tt>MakeProcInstance</tt></b>. This thunk changes
+the data segment back to that used by the caller:
+
+<blockquote>
+<pre>FARPROC lpfnCallback;
+lpfnCallback = (FARPROC)MakeProcInstance((FARPROC)gsdll_callback, hInstance);
+code = (*pgsdll_init)((GSDLL_CALLBACK)lpfnCallback, NULL, argc, argv);
+if (!code) {
+ fprintf(stderr, "GSDLL16 is already in use\n");
+ return -1;
+}
+</pre></blockquote>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/Develop.htm b/Master/xemtex/doc/ghostscript/Develop.htm
new file mode 100644
index 00000000000..d6080881fc8
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Develop.htm
@@ -0,0 +1,4327 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Information for Ghostscript developers</title>
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+<!-- $Id: Develop.htm,v 1.47.2.18.2.6 2003/05/17 14:38:59 giles Exp $ -->
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Information for Ghostscript developers</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#Architecture">Architecture</a>
+<ul>
+<li><a href="#Design_goals">Design goals</a>
+<li><a href="#Design_principles">Design principles</a>
+<li><a href="#Large_scale_structure">Large-scale structure</a>
+<li><a href="#Object_oriented_constructs">Object-oriented constructs</a>
+</ul>
+<li><a href="#File_roadmap">File roadmap</a>
+<ul>
+<li><a href="#Substrate">Substrate</a>
+<li><a href="#Graphics_library">Graphics library</a>
+<ul>
+<li><a href="#Library_support">Support</a>,
+ <a href="#Paths">Paths</a>,
+ <a href="#Text">Text</a>,
+ <a href="#Images">Images</a>,
+ <a href="#Paint">Paint</a>,
+ <a href="#Clipping">Clipping</a>,
+ <a href="#Other_graphics">Other graphics</a>,
+ <a href="#Driver_support">Driver support</a>
+</ul>
+<li><a href="#Device_drivers">Device drivers</a>
+<ul>
+<li><a href="#Internal_devices">Internal devices</a>,
+ <a href="#PS_and_PDF_writers">PostScript and PDF writers</a>,
+ <a href="#High_level_devices">Other high-level devices</a>,
+ <a href="#Other_maintained_drivers">Other maintained drivers</a>,
+ <a href="#Contributed_drivers">Contributed drivers</a>
+</ul>
+<li><a href="#PostScript_interpreter">PostScript interpreter</a>
+<ul>
+<li><a href="#Main_program">Main program</a>,
+ <a href="#Data_structures">Data structures</a>,
+ <a href="#Interpreter_loop">Interpreter loop</a>,
+ <a href="#Scanning_parsing">Scanning/parsing</a>,
+ <a href="#Standard_operators">Standard operators</a>,
+ <a href="#Non_standard_operators">Non-standard operators</a>,
+ <a href="#Interpreter_support">Interpreter support</a>,
+ <a href="#PostScript_code">PostScript code</a>
+</ul>
+<li><a href="#PDF_interpreter">PDF interpreter</a>
+<li><a href="#Build_process">Build process</a>
+<ul>
+<li><a href="#Makefile_structure">Makefile structure</a>,
+ <a href="#dev_files">.dev files</a>,
+ <a href="#Generators">Generators</a>,
+ <a href="#Build_support">Support</a>
+</ul>
+<li><a href="#Utilities">Utilities</a>
+<ul>
+<li><a href="#Utilities_in_PostScript">Utilities in PostScript</a>
+<li><a href="#Utility_scripts">Utility scripts</a>
+</ul>
+</ul>
+<li><a href="#Memory_management">Memory management</a>
+<ul>
+<li><a href="#Memory_manager_architecture">Memory manager architecture</a>
+<ul>
+<li><a href="#Objects_vs_strings">Objects vs strings</a>,
+ <a href="#Structure_descriptors">Structure descriptors</a>,
+ <a href="#Garbage_collection">Garbage collection</a>,
+ <a href="#Movability">Movability</a>,
+ <a href="#Parent_hierarchy">Parent hierarchy</a>,
+ <a href="#Allocator_API">Allocator API</a>
+</ul>
+<li><a href="#Freeing_storage">Freeing storage</a>
+<ul>
+<li><a href="#Explicit_freeing">Explicit freeing</a>,
+ <a href="#Reference_counting">Reference counting</a>,
+ <a href="#Real_garbage_collection">(Real) garbage collection</a>
+</ul>
+<li><a href="#Special_implementations">Special implementations</a>
+<ul>
+<li><a href="#malloc">malloc</a>,
+ <a href="#Locking">Locking</a>,
+ <a href="#Retrying">Retrying</a>
+</ul>
+<li><a href="#Standard_implementation">Standard implementation</a>
+<li><a href="#PostScript_interpreter_extensions">PostScript interpreter extensions</a>
+<ul>
+<li><a href="#Refs">Refs (PostScript "objects")</a>,
+ <a href="#save_forgetsave_restore">save/.forgetsave/restore</a>,
+ <a href="#Stable_allocators">Stable allocators</a>,
+ <a href="#Interpreter_GC">Garbage collection</a>
+</ul>
+</ul>
+<li><a href="#Portability">Portability</a>
+<ul>
+<li><a href="#Structural">Structural</a>
+<ul>
+<li><a href="#CPU_and_compiler">CPU and compiler</a>,
+ <a href="#Library_headers">Library headers</a>,
+ <a href="#Cross_platform_APIs">Cross-platform APIs</a>,
+ <a href="#Makefiles">Makefiles</a>
+</ul>
+<li><a href="#Coding">Coding</a>
+<ul>
+<li><a href="#Explicit_dependencies">Explicit dependencies</a>,
+ <a href="#Implicit_dependencies">Implicit dependencies</a>
+</ul>
+<li><a href="#Platform_specific_code">Platform-specific code</a>
+</ul>
+<li><a href="#Adding_features_and_options">Adding features and options</a>
+<li><a href="#Troubleshooting">Troubleshooting</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the documentation related to <a
+href="Maintain.htm">maintaining Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+This document provides a wealth of information about Ghostscript's
+internals, primarily for developers actively working on Ghostscript. It is
+primarily <strong>descriptive</strong>, documenting the way things are; the
+companion <a href="C-style.htm">C style guide</a> is primarily
+<strong>prescriptive</strong>, documenting what developers should do when
+writing new code.
+
+<p>
+THIS FILE IS A WORK IN PROGRESS. MANY SECTIONS ARE PLACE-HOLDERS.
+
+<h2><a name="Architecture"></a>Architecture</h2>
+
+<h3><a name="Design_goals"></a>Design goals</h3>
+
+<p>
+Ghostscript has the following high-level design goals (not listed in order
+of importance):
+
+<ul>
+<li>Functionality
+<ul>
+<li>Ability to interpret the current PostScript and PDF languages, as
+defined (and occasionally, in the case of conflict, as implemented) by
+Adobe.
+<li>Ability to convert PostScript to and from PDF, comparable to
+Adobe products.
+<li>Ability to produce output for a wide range of resolutions (from
+TV-resolution displays to imagesetters) and color models (black and white,
+multilevel gray, bilevel or multi-level RGB and CMYK, 6- or 8-color
+inkjet printers, spot color).
+</ul>
+<li>Performance
+<ul>
+<li>Ability to render PostScript and PDF with commercial-quality performance
+(memory usage, speed, and output quality) on all platforms.
+<li>Specifically, ability to render PostScript effectively in embedded
+environments with constrained RAM, including the ability to put the code and
+supporting data in ROM.
+</ul>
+<li>Licensing
+<ul>
+<li>Licensing that supports both the Open Source / Free software communities
+and a commercial licensing business.
+<li>Freedom from licensing restrictions or fees imposed by third parties.
+</ul>
+<li>Other
+<ul>
+<li>Easy source portability to any platform (CPU, operating system, and
+development tools) that has an ANSI or K&amp;R C compiler.
+<li>Support for writing new interpreters and new drivers with no change to
+any existing code; specifically, ability to support PCL 5e, PCL 5c, and PCL
+XL interpreters, and the ever-changing roster of inkjet printers.
+</ul>
+</ul>
+
+<p>
+These goals often conflict: part of Ghostscript's claim to quality is that
+the conflicts have been resolved well.
+
+<h3><a name="Design_principles"></a>Design principles</h3>
+
+<p>
+Part of what has kept Ghostscript healthy through many years of major code
+revisions and functional expansion is consistent and conscientious adherence
+to a set of design principles. We hope the following list captures the most
+important ones.
+
+<h4>Non-preemption</h4>
+
+<p>
+Ghostscript is designed to be used as a component. As such, it must share
+its environment with other components. Therefore, it must not require
+ownership of, or make decisions about, inherently shared resources.
+Specifically, it must not assume that it can "own" either the locus of
+control or the management of the address space.
+
+<p>
+Not owning control means that whenever Ghostscript passes control to its
+caller, it must do so in a way that doesn't constrain what the caller can do
+next. The caller must be able to call any other piece of software, wait for
+an external event, execute another task, etc., without having to worry about
+Ghostscript being in an unknown state. While this is easy to arrange in a
+multi-threaded environment (by running Ghostscript in a separate thread),
+multi-threading APIs are not well standardized at this time (December 2000),
+and may not be implemented efficiently, or at all, on some platforms.
+Therefore, Ghostscript must choose between only two options for interacting
+with its caller: to <em>return</em>, preserving its own state in data
+structures, or to <em>call back</em> through a caller-supplied procedure.
+Calling back constrains the client program unacceptably: the callback
+procedure only has the options of either returning, or aborting Ghostscript.
+In particular, if it wants (for whatever reason) to multi-task Ghostscript
+with another program, it cannot do so in general, especially if the other
+program also uses callback rather than suspension. Therefore, Ghostscript
+tries extremely hard to return, rather than calling back, for all caller
+interaction. In particular:
+
+<ul>
+
+<li>For callers that want to pass input to Ghostscript piece by piece,
+Ghostscript returns with an <b><tt>e_NeedInput</tt></b> code rather than
+using a callback. This allows the caller complete flexibility in its
+control structure for managing the source of input. (It might, for example,
+be generating the input dynamically.)
+
+<li>In the future, the same arrangement should be used for input from
+<b><tt>stdin</tt></b> and output to <b><tt>stdout</tt></b> and
+<b><tt>stderr</tt></b>.
+
+<li>Likewise, scheduling of Ghostscript's own threads (contexts), currently
+done with a callback, should be done with suspension. The Display
+Ghostscript project (GNU DGS) is working on this.
+
+</ul>
+
+<p>
+The one area where suspension is not feasible with Ghostscript's current
+architecture is device output. Device drivers are called from deep within
+the graphics library. (If Ghostscript were being redesigned from scratch,
+we might try to do this with suspension as well, or at least optional
+suspension.)
+
+<p>
+Not owning management of the address space means that even though
+Ghostscript supports garbage collection for its own data, it must not do any
+of the things that garbage collection schemes for C often require: it must
+not replace 'malloc' and 'free', must not require its clients to use its own
+allocator, must not rely on manipulating the read/write status of memory
+pages, must not require special compiler or run-time support (e.g., APIs for
+scanning the C stack), must not depend on the availability of
+multi-threading, and must not take possession of one of a limited number of
+timer interrupts. However, in order not to constrain its own code unduly,
+it must also not require using special macros or calls to enter or leave
+procedures or assign pointers, and must not constrain the variety of C data
+structures any more than absolutely necessary. It achieves all of these
+goals, at the expense of some complexity, some performance cost (mostly for
+garbage collection), and some extra manual work required for each structure
+type allocated by its allocator. The details appear in the <a
+href="#Memory_management">Memory management</a> section below.
+
+<h4>Multi-instantiability</h4>
+
+<p>
+From many years of experience with the benefits of object-oriented design,
+we have learned that when the word "the" appears in a software design --
+"the" process scheduler, "the" memory manager, "the" output device, "the"
+interpreter, "the" stack -- it often flags an area in which the software
+will have difficulty adapting to future needs. For this reason, Ghostscript
+attempts to make every internal structure capable of existing in multiple
+instances. For example, Ghostscript's memory manager is not a one-of-a-kind
+entity with global state and procedures: it is (or rather they are, since
+Ghostscript has multiple memory managers, some of which have multiple
+instances) objects with their own state and (virtual) procedures.
+Ghostscript's PostScript interpreter has no writable non-local data
+(necessary, but not sufficient, to allow multiple instances), and in the
+future will be extended to be completely reentrant and instantiable. The
+device driver API is designed to make this easy for drivers as well. The
+graphics library is currently not completely reentrant or instantiable: we
+hope this will occur in the future.
+
+<h4>Late configuration binding</h4>
+
+<p>
+Ghostscript is designed to make configuration choices as late as possible,
+subject to simplicity and performance considerations. The major binding
+times for such choices are compilation, linking, startup, and dynamic.
+
+<ul>
+
+<li>Compilation binds only CPU and compiler characteristics (including data
+type size, presence of floating point hardware, and data alignment), and
+whether the code will be used for production, debugging, or profiling.
+
+<li>Linking binds the choice of what features and device drivers will be
+included in the executable. (Work is underway to make the choice of drivers
+dynamic.)
+
+<li>Startup binds essentially nothing. Almost every option and parameter
+that can appear on the command line can also be changed dynamically.
+
+<li>The selection of output device, all parameters associated with the
+device, the selection of debugging printout and self-checking (in debugging
+configurations), the macro-allocation of memory, and almost all other
+operational parameters are dynamic.
+
+</ul>
+
+<p>
+In addition, a number of major implementation decisions are made dynamically
+depending on the availability of resources. For example, Ghostscript
+chooses between banded and non-banded rendering depending on memory
+availability.
+
+<h3><a name="Large_scale_structure"></a>Large-scale structure</h3>
+
+<p>
+At the largest design scale, Ghostscript consists of 4 layers. Layer N
+is allowed to use the facilities of all layers M &lt;= N.
+
+<ol>
+
+<li>The bottom layer is called the <a href="#Substrate">substrate</a>. It
+includes facilities like memory management, streams, fixed-point arithmetic,
+and low-level interfaces to the operating system. The substrate is written
+in C, with a little C++ and/or assembler code for some platforms.
+
+<li>The layer above the substrate is the graphics layer. It consists of two
+separate sub-parts. The graphics layer is written in C.
+
+<ul>
+
+<li>The <a href="#Graphics_library">graphics library</a> manages graphics
+state information for, and decomposes and renders 2-D images described
+using, a graphics model that is approximately the union of those of
+PostScript, PDF, and PCL 5e/5c/XL.
+
+<li>The <a href="#Device_drivers">device drivers</a> are called by the
+graphics library to produce actual output. The graphics library, and all
+higher layers, call device driver procedures only through virtual functions.
+
+</ul>
+
+<li>The principal clients of the graphics layer are language interpreters.
+Ghostscript as distributed includes the <a
+href="#PostScript_interpreter">PostScript interpreter</a>; there are also
+interpreters for PCL 5e, PCL 5c, and PCL XL, which are not currently freely
+redistributable and are not included in the standard Ghostscript package.
+The PostScript interpreter is written partly in C and partly in PostScript.
+
+<li>The <a href="#PDF_interpreter">PDF interpreter</a> is actually a client
+of the PostScript interpreter: it is written entirely in PostScript.
+
+</ol>
+
+<p>
+The most important interface in Ghostscript is the API between the graphics
+library and the device drivers: new printers (and, to a lesser extent,
+window systems, displays, plotters, film recorders, and graphics file
+formats) come on the scene frequently, and it must be possible to produce
+output for them with a minimum of effort and distruption. This API is the
+only one that is extensively documented (see <a
+href="Drivers.htm">Drivers.htm</a>) and kept stringently backward-compatible
+through successive releases.
+
+<h3><a name="Object_oriented_constructs"></a>Object-oriented constructs</h3>
+
+<p>
+Ghostscript makes heavy use of object-oriented constructs, including
+analogues of classes, instances, subclassing, and class-associated
+procedures. Since Ghostscript is written in C, not C++, implementing these
+constructs requires following coding conventions. The <a
+href="C-style.htm#Objects">"Objects"</a> section of the C style guide
+explains these.
+
+<p>
+The memory manager API provides run-time type information about each class,
+but this information does not include anything about subclassing. See under
+<a href="#Structure_descriptors">Structure descriptors</a> below.
+
+<hr>
+
+<h2><a name="File_roadmap"></a>File roadmap</h2>
+
+<p>
+This section of the document provides a roadmap to all of the Ghostscript
+source files.
+
+<h3><a name="Substrate"></a>Substrate</h3>
+
+<h4>Memory manager</h4>
+
+<p>
+See <a href="#Memory_management">below</a>.
+
+<h4>Streams</h4>
+
+<dl>
+
+<dt>
+Framework, file and string streams:
+<dd>
+<a href="../src/gsdsrc.c">src/gsdsrc.c</a>,
+<a href="../src/gsdsrc.h">src/gsdsrc.h</a>,
+<a href="../src/scommon.h">src/scommon.h</a>,
+<a href="../src/sfxboth.c">src/sfxboth.c</a>,
+<a href="../src/sfxfd.c">src/sfxfd.c</a>,
+<a href="../src/sfxstdio.c">src/sfxstdio.c</a>,
+<a href="../src/stream.h">src/stream.h</a>,
+<a href="../src/stream.c">src/stream.c</a>,
+<a href="../src/strimpl.h">src/strimpl.h</a>.
+
+<dt>
+Standard filters:
+<dd>
+
+<dl>
+
+<dt>
+CCITTFax:
+<dd>
+<a href="../src/scf.h">src/scf.h</a>,
+<a href="../src/scfd.c">src/scfd.c</a>,
+<a href="../src/scfdgen.c">src/scfdgen.c</a>,
+<a href="../src/scfdtab.c">src/scfdtab.c</a>,
+<a href="../src/scfe.c">src/scfe.c</a>,
+<a href="../src/scfetab.c">src/scfetab.c</a>,
+<a href="../src/scfparam.c">src/scfparam.c</a>,
+<a href="../src/scfx.h">src/scfx.h</a>.
+
+<dt>
+DCT (JPEG):
+<dd>
+<a href="../src/gsjconf.h">src/gsjconf.h</a>,
+<a href="../src/gsjmorec.h">src/gsjmorec.h</a>,
+<a href="../src/sdcparam.c">src/sdcparam.c</a>,
+<a href="../src/sdcparam.h">src/sdcparam.h</a>,
+<a href="../src/sdct.h">src/sdct.h</a>,
+<a href="../src/sdctc.c">src/sdctc.c</a>,
+<a href="../src/sdctd.c">src/sdctd.c</a>,
+<a href="../src/sdcte.c">src/sdcte.c</a>,
+<a href="../src/sddparam.c">src/sddparam.c</a>,
+<a href="../src/sdeparam.c">src/sdeparam.c</a>,
+<a href="../src/sjpeg.h">src/sjpeg.h</a>,
+<a href="../src/sjpegc.c">src/sjpegc.c</a>,
+<a href="../src/sjpegd.c">src/sjpegd.c</a>,
+<a href="../src/sjpege.c">src/sjpege.c</a>.
+
+<dt>
+Other compression/decompression:
+<dd>
+<a href="../src/slzwc.c">src/slzwc.c</a>,
+<a href="../src/slzwce.c">src/slzwce.c</a>,
+<a href="../src/slzwd.c">src/slzwd.c</a>,
+<a href="../src/slzwx.h">src/slzwx.h</a>,
+<a href="../src/srld.c">src/srld.c</a>,
+<a href="../src/srle.c">src/srle.c</a>,
+<a href="../src/srlx.h">src/srlx.h</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../src/sa85d.c">src/sa85d.c</a>,
+<a href="../src/sa85d.h">src/sa85d.h</a>,
+<a href="../src/sa85x.h">src/sa85x.h</a>,
+<a href="../src/sfilter1.c">src/sfilter1.c</a>,
+<a href="../src/sfilter2.c">src/sfilter2.c</a>,
+<a href="../src/sstring.c">src/sstring.c</a>,
+<a href="../src/sstring.h">src/sstring.h</a>.
+
+</dl>
+
+<dt>
+Non-standard filters used to implement standard filters:
+<dd>
+<a href="../src/seexec.c">src/seexec.c</a>,
+<a href="../src/sfilter.h">src/sfilter.h</a>,
+<a href="../src/shc.c">src/shc.c</a>,
+<a href="../src/shc.h">src/shc.h</a>,
+<a href="../src/shcgen.c">src/shcgen.c</a>,
+<a href="../src/shcgen.h">src/shcgen.h</a>,
+<a href="../src/spdiff.c">src/spdiff.c</a>,
+<a href="../src/spdiffx.h">src/spdiffx.h</a>,
+<a href="../src/spngp.c">src/spngp.c</a>,
+<a href="../src/spngpx.h">src/spngpx.h</a>,
+<a href="../src/szlibc.c">src/szlibc.c</a>,
+<a href="../src/szlibd.c">src/szlibd.c</a>,
+<a href="../src/szlibe.c">src/szlibe.c</a>,
+<a href="../src/szlibx.h">src/szlibx.h</a>,
+<a href="../src/szlibxx.h">src/szlibxx.h</a>.
+
+<dt>
+Non-standard filters:
+<dd>
+<a href="../src/sbcp.c">src/sbcp.c</a>,
+<a href="../src/sbcp.h">src/sbcp.h</a>,
+<a href="../src/sbhc.c">src/sbhc.c</a>,
+<a href="../src/sbhc.h">src/sbhc.h</a>,
+<a href="../src/sbtx.h">src/sbtx.h</a>,
+<a href="../src/sbwbs.c">src/sbwbs.c</a>,
+<a href="../src/sbwbs.h">src/sbwbs.h</a>,
+<a href="../src/smd5.c">src/smd5.c</a>,
+<a href="../src/smd5.h">src/smd5.h</a>,
+<a href="../src/sarc4.c">src/sarc4.c</a>,
+<a href="../src/sarc4.h">src/sarc4.h</a>,
+<a href="../src/smtf.c">src/smtf.c</a>,
+<a href="../src/smtf.h">src/smtf.h</a>.
+
+<dt>
+Internal filters:
+<dd>
+a<a href="../src/siinterp.c">src/siinterp.c</a>,
+<a href="../src/siinterp.h">src/siinterp.h</a>,
+<a href="../src/siscale.c">src/siscale.c</a>,
+<a href="../src/siscale.h">src/siscale.h</a>,
+<a href="../src/sisparam.h">src/sisparam.h</a>.
+
+<dt>
+Higher-level stream support:
+<dd>
+<a href="../src/spprint.c">src/spprint.c</a>,
+<a href="../src/spprint.h">src/spprint.h</a>,
+<a href="../src/spsdf.c">src/spsdf.c</a>,
+<a href="../src/spsdf.h">src/spsdf.h</a>,
+<a href="../src/srdline.h">src/srdline.h</a>.
+
+</dl>
+
+<h4>Platform-specific code</h4>
+
+See <a href="#Cross_platform_APIs">below</a>.
+
+<h4>Miscellaneous</h4>
+
+<dl>
+
+<dt>
+Library top level:
+<dd>
+<a href="../src/gsinit.c">src/gsinit.c</a>,
+<a href="../src/gslib.h">src/gslib.h</a>.
+
+<dt>
+Configuration-related:
+<dd>
+<a href="../src/gconf.c">src/gconf.c</a>,
+<a href="../src/gconf.h">src/gconf.h</a>,
+<a href="../src/gscdef.c">src/gscdef.c</a>,
+<a href="../src/gscdefs.h">src/gscdefs.h</a>.
+
+<dt>
+Arithmetic:
+<dd>
+<a href="../src/gsfemu.c">src/gsfemu.c</a>,
+<a href="../src/gxarith.h">src/gxarith.h</a>,
+<a href="../src/gxdda.h">src/gxdda.h</a>,
+<a href="../src/gxfarith.h">src/gxfarith.h</a>,
+<a href="../src/gxfixed.h">src/gxfixed.h</a>,
+<a href="../src/gxfrac.h">src/gxfrac.h</a>.
+
+<dt>
+Operating system interface:
+<dd>
+<a href="../src/gserror.h">src/gserror.h</a>,
+<a href="../src/gsexit.h">src/gsexit.h</a>,
+<a href="../src/gxstdio.h">src/gxstdio.h</a>,
+<a href="../src/gxsync.c">src/gxsync.c</a>,
+<a href="../src/gxsync.h">src/gxsync.h</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../src/gsargs.c">src/gsargs.c</a>,
+<a href="../src/gsargs.h">src/gsargs.h</a>,
+<a href="../src/gserrors.h">src/gserrors.h</a>,
+<a href="../src/gsnotify.c">src/gsnotify.c</a>,
+<a href="../src/gsnotify.h">src/gsnotify.h</a>,
+<a href="../src/gsrect.h">src/gsrect.h</a>,
+<a href="../src/gstypes.h">src/gstypes.h</a>,
+<a href="../src/gsuid.h">src/gsuid.h</a>,
+<a href="../src/gsutil.h">src/gsutil.h</a>,
+<a href="../src/gsutil.c">src/gsutil.c</a>,
+<a href="../src/gx.h">src/gx.h</a>,
+<a href="../src/md5.c">src/md5.c</a>,
+<a href="../src/md5.h">src/md5.h</a>.
+
+</dl>
+
+<h3><a name="Graphics_library"></a>Graphics library</h3>
+
+<h4><a name="Library_support"></a>Support</h4>
+
+<dl>
+
+<dt>
+Bitmap processing:
+<dd>
+<a href="../src/gsbitcom.c">src/gsbitcom.c</a>,
+<a href="../src/gsbitmap.h">src/gsbitmap.h</a>,
+<a href="../src/gsbitops.c">src/gsbitops.c</a>,
+<a href="../src/gsbitops.h">src/gsbitops.h</a>,
+<a href="../src/gsbittab.c">src/gsbittab.c</a>,
+<a href="../src/gsbittab.h">src/gsbittab.h</a>,
+<a href="../src/gsflip.c">src/gsflip.c</a>,
+<a href="../src/gsflip.h">src/gsflip.h</a>,
+<a href="../src/gxbitmap.h">src/gxbitmap.h</a>,
+<a href="../src/gxbitops.h">src/gxbitops.h</a>,
+<a href="../src/gxsample.c">src/gxsample.c</a>,
+<a href="../src/gxsample.h">src/gxsample.h</a>.
+
+<dt>
+Functions:
+<dd>
+<a href="../src/gsfunc.c">src/gsfunc.c</a>,
+<a href="../src/gsfunc.h">src/gsfunc.h</a>,
+<a href="../src/gsfunc0.c">src/gsfunc0.c</a>,
+<a href="../src/gsfunc0.h">src/gsfunc0.h</a>,
+<a href="../src/gsfunc3.c">src/gsfunc3.c</a>,
+<a href="../src/gsfunc3.h">src/gsfunc3.h</a>,
+<a href="../src/gsfunc4.c">src/gsfunc4.c</a>,
+<a href="../src/gsfunc4.h">src/gsfunc4.h</a>,
+<a href="../src/gsfuncv.c">src/gsfuncv.c</a>,
+<a href="../src/gsfuncv.h">src/gsfuncv.h</a>,
+<a href="../src/gxfunc.h">src/gxfunc.h</a>.
+
+<dt>
+Parameter lists:
+<dd>
+<a href="../src/gscparam.c">src/gscparam.c</a>,
+<a href="../src/gsparam.c">src/gsparam.c</a>,
+<a href="../src/gsparam.h">src/gsparam.h</a>,
+<a href="../src/gsparam2.c">src/gsparam2.c</a> (not used),
+<a href="../src/gsparams.c">src/gsparams.c</a>,
+<a href="../src/gsparams.h">src/gsparams.h</a>,
+<a href="../src/gsparamx.c">src/gsparamx.c</a>,
+<a href="../src/gsparamx.h">src/gsparamx.h</a>.
+
+<dt>
+I/O-related:
+<dd>
+<a href="../src/gdevpipe.c">src/gdevpipe.c</a>,
+<a href="../src/gsfname.c">src/gsfname.c</a>,
+<a href="../src/gsfname.h">src/gsfname.h</a>,
+<a href="../src/gsio.h">src/gsio.h</a>,
+<a href="../src/gsiodev.c">src/gsiodev.c</a>,
+<a href="../src/gsiodevs.c">src/gsiodevs.c</a>,
+<a href="../src/gxiodev.h">src/gxiodev.h</a>.
+
+</dl>
+
+<h4><a name="Paths"></a>Paths</h4>
+
+<dl>
+
+<dt>
+Coordinate transformation:
+<dd>
+<a href="../src/gscoord.c">src/gscoord.c</a>,
+<a href="../src/gscoord.h">src/gscoord.h</a>,
+<a href="../src/gsmatrix.c">src/gsmatrix.c</a>,
+<a href="../src/gsmatrix.h">src/gsmatrix.h</a>,
+<a href="../src/gxcoord.h">src/gxcoord.h</a>,
+<a href="../src/gxmatrix.h">src/gxmatrix.h</a>.
+
+<dt>
+Path building:
+<dd>
+<a href="../src/gsdps1.c">src/gsdps1.c</a>,
+<a href="../src/gspath.c">src/gspath.c</a>,
+<a href="../src/gspath.h">src/gspath.h</a>,
+<a href="../src/gspath1.c">src/gspath1.c</a>,
+<a href="../src/gspath2.h">src/gspath2.h</a>,
+<a href="../src/gxpath.c">src/gxpath.c</a>,
+<a href="../src/gxpath.h">src/gxpath.h</a>,
+<a href="../src/gxpath2.c">src/gxpath2.c</a>,
+<a href="../src/gxpcopy.c">src/gxpcopy.c</a>,
+<a href="../src/gxpdash.c">src/gxpdash.c</a>,
+<a href="../src/gxpflat.c">src/gxpflat.c</a>,
+<a href="../src/gzpath.h">src/gzpath.h</a>.
+
+<dt>
+Path rendering:
+<dd>
+<a href="../src/gdevddrw.c">src/gdevddrw.c</a>,
+<a href="../src/gsdps1.c">src/gsdps1.c</a>,
+<a href="../src/gspaint.c">src/gspaint.c</a>,
+<a href="../src/gspaint.h">src/gspaint.h</a>,
+<a href="../src/gspenum.h">src/gspenum.h</a>,
+<a href="../src/gxfill.c">src/gxfill.c</a>,
+<a href="../src/gxpaint.c">src/gxpaint.c</a>,
+<a href="../src/gxpaint.h">src/gxpaint.h</a>,
+<a href="../src/gxstroke.c">src/gxstroke.c</a>.
+
+<dt>
+Clipping:
+<dd>
+See under <a href="#Clipping">Clipping</a> below.
+
+</dl>
+
+<h4><a name="Text"></a>Text</h4>
+
+<dl>
+
+<dt>
+Fonts, generic:
+<dd>
+<a href="../src/gsfont.c">src/gsfont.c</a>,
+<a href="../src/gsfont.h">src/gsfont.h</a>,
+<a href="../src/gxfont.h">src/gxfont.h</a>.
+
+<dt>
+Fonts, specific FontTypes:
+<dd>
+<a href="../src/gsfcid.c">src/gsfcid.c</a>,
+<a href="../src/gsfcmap.c">src/gsfcmap.c</a>,
+<a href="../src/gsfcmap.h">src/gsfcmap.h</a>,
+<a href="../src/gsfont0.c">src/gsfont0.c</a>,
+<a href="../src/gxcid.h">src/gxcid.h</a>,
+<a href="../src/gxfcid.h">src/gxfcid.h</a>,
+<a href="../src/gxfcmap.h">src/gxfcmap.h</a>,
+<a href="../src/gxfont0.h">src/gxfont0.h</a>,
+<a href="../src/gxfont1.h">src/gxfont1.h</a>,
+<a href="../src/gxfont42.h">src/gxfont42.h</a>,
+<a href="../src/gxftype.h">src/gxftype.h</a>,
+<a href="../src/gxttf.h">src/gxttf.h</a>.
+
+<dt>
+Character rendering + font cache, generic:
+<dd>
+<a href="../src/gsccode.h">src/gsccode.h</a>,
+<a href="../src/gschar.c">src/gschar.c</a>,
+<a href="../src/gschar.h">src/gschar.h</a>,
+<a href="../src/gscpm.h">src/gscpm.h</a>,
+<a href="../src/gstext.c">src/gstext.c</a>,
+<a href="../src/gstext.h">src/gstext.h</a>,
+<a href="../src/gxbcache.c">src/gxbcache.c</a>,
+<a href="../src/gxbcache.h">src/gxbcache.h</a>,
+<a href="../src/gxccache.c">src/gxccache.c</a>,
+<a href="../src/gxccman.c">src/gxccman.c</a>,
+<a href="../src/gxchar.c">src/gxchar.c</a>,
+<a href="../src/gxchar.h">src/gxchar.h</a>,
+<a href="../src/gxfcache.h">src/gxfcache.h</a>,
+<a href="../src/gxtext.h">src/gxtext.h</a>.
+
+<dt>
+Character rendering, specific FontTypes:
+<dd>
+<a href="../src/gschar0.c">src/gschar0.c</a>,
+<a href="../src/gscrypt1.c">src/gscrypt1.c</a>,
+<a href="../src/gscrypt1.h">src/gscrypt1.h</a>,
+<a href="../src/gstype1.c">src/gstype1.c</a>,
+<a href="../src/gstype1.h">src/gstype1.h</a>,
+<a href="../src/gstype2.c">src/gstype2.c</a>,
+<a href="../src/gstype42.c">src/gstype42.c</a>,
+<a href="../src/gxchrout.c">src/gxchrout.c</a>,
+<a href="../src/gxchrout.h">src/gxchrout.h</a>,
+<a href="../src/gxhint1.c">src/gxhint1.c</a>,
+<a href="../src/gxhint2.c">src/gxhint2.c</a>,
+<a href="../src/gxhint3.c">src/gxhint3.c</a>,
+<a href="../src/gxop1.h">src/gxop1.h</a>,
+<a href="../src/gxtype1.c">src/gxtype1.c</a>,
+<a href="../src/gxtype1.h">src/gxtype1.h</a>.
+
+</dl>
+
+<h4><a name="Images"></a>Images</h4>
+
+<dl>
+
+<dt>
+Buffered API (mostly for PostScript interpreter):
+<dd>
+<a href="../src/gsimage.c">src/gsimage.c</a>,
+<a href="../src/gsimage.h">src/gsimage.h</a>.
+
+<dt>
+Generic support:
+<dd>
+<a href="../src/gsiparam.h">src/gsiparam.h</a>,
+<a href="../src/gxiclass.h">src/gxiclass.h</a>,
+<a href="../src/gximage.c">src/gximage.c</a>,
+<a href="../src/gximage.h">src/gximage.h</a>,
+<a href="../src/gxiparam.h">src/gxiparam.h</a>.
+
+<dt>
+Type 1 and 4 images:
+<dd>
+
+<dl>
+
+<dt>
+Setup:
+<dd>
+<a href="../src/gsiparm4.h">src/gsiparm4.h</a>,
+<a href="../src/gximage1.c">src/gximage1.c</a>,
+<a href="../src/gximage4.c">src/gximage4.c</a>.
+
+<dt>
+Rendering:
+<dd>
+<a href="../src/gxi12bit.c">src/gxi12bit.c</a>,
+<a href="../src/gxicolor.c">src/gxicolor.c</a>,
+<a href="../src/gxidata.c">src/gxidata.c</a>,
+<a href="../src/gxifast.c">src/gxifast.c</a>,
+<a href="../src/gximono.c">src/gximono.c</a>,
+<a href="../src/gxino12b.c">src/gxino12b.c</a>,
+<a href="../src/gxipixel.c">src/gxipixel.c</a>,
+<a href="../src/gxiscale.c">src/gxiscale.c</a>.
+
+</dl>
+
+<dt>
+Type 2 images (Display PostScript):
+<dd>
+<a href="../src/gsiparm2.h">src/gsiparm2.h</a>,
+<a href="../src/gximage2.c">src/gximage2.c</a>.
+
+<dt>
+Type 3 images:
+<dd>
+<a href="../src/gsipar3x.h">src/gsipar3x.h</a>,
+<a href="../src/gsiparm3.h">src/gsiparm3.h</a>,
+<a href="../src/gximag3x.c">src/gximag3x.c</a>,
+<a href="../src/gximag3x.h">src/gximag3x.h</a>,
+<a href="../src/gximage3.c">src/gximage3.c</a>,
+<a href="../src/gximage3.h">src/gximage3.h</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../src/gsimpath.c">src/gsimpath.c</a>.
+
+</dl>
+
+<h4><a name="Paint"></a>Paint</h4>
+
+<p>
+Ghostscript uses 4 internal representations of color. We list them here in
+the order in which they occur in the rendering pipeline.
+
+<ol>
+
+<li>Clients of the graphics library normally specify colors using the
+<em>client color</em> structure (<b><tt>gs_client_color</tt></b>, defined in
+<a href="../src/gsccolor.h">src/gsccolor.h</a>), consisting of one or more
+numeric values and/or a pointer to a Pattern instance. This corresponds
+directly to the values that would be passed to the PostScript
+<b><tt>setcolor</tt></b> operator: one or more (floating-point) numeric
+components and/or a Pattern. Client colors are interpreted relative to a
+color space (<b><tt>gs_color_space</tt></b>, defined in <a
+href="../src/gscspace.h">src/gscspace.h</a> and <a
+href="../src/gxcspace.h">src/gxcspace.h</a>, with specific color spaces
+defined in other files). Client colors do not explicitly reference the
+color space in which they are are interpreted: <b><tt>setcolor</tt></b> uses
+the color space in the graphics state, while images and shadings explicitly
+specify the color space to be used.
+
+<li>For ordinary non-Pattern colors, the first step in color rendering
+reduces a client color to a <em>concrete</em> color -- a set of values in a
+color space that corresponds to the device's color model (except for
+possible conversions between DeviceGray, DeviceRGB, and DeviceCMYK),
+together with an identification of the associated color space. (The
+confusion here between color spaces and color models will have to be cleaned
+up when we implement native Separation/DeviceN colors.) Concrete colors are
+like the numeric values in a client color, except that they are represented
+by arrays of <b><tt>frac</tt></b> values (defined in <a
+href="../src/gxfrac.h">src/gxfrac.h</a>) rather than floats. The procedure
+for this step is the virtual <b><tt>concretize_color</tt></b> and
+<b><tt>concrete_space</tt></b> procedures in the (original) color space.
+This step reduces Indexed colors, CIEBased colors, and Separation and
+DeviceN colors that use the alternate space.
+
+<li>The final step requires mapping a concrete color to the device's color
+model, done by procedures in <a href="../src/gxcmap.c">src/gxcmap.c</a>.
+These procedures combine the following three conceptual sub-steps:
+
+<ul>
+
+<li>A possible mapping between Device color spaces, possibly involving black
+generation and undercolor removal. The non-trivial cases are implemented in
+<a href="../src/gxdcconv.c">src/gxdcconv.c</a>.
+
+<li>Application of the transfer function(s) (done in-line).
+
+<li>Halftoning if necessary: see below.
+
+</ul>
+
+The result is called (inappropriately) a <em>device color</em>
+(<b><tt>gx_device_color</tt></b>, defined in <a
+href="../src/gsdcolor.h">src/gsdcolor.h</a> and <a
+href="../src/gxdcolor.h">src/gxdcolor.h</a>). For ordinary non-Pattern
+colors, a device color is either a pure color, or a halftone. The device
+and color model associated with a device color are implicit. The procedure
+for this step is the virtual <b><tt>remap_concrete_color</tt></b> procedure
+in the color space.
+
+<li>The pure colors that underlie a device color are opaque <em>pixel
+values</em> defined by the device (misnamed <b><tt>gx_color_index</tt></b>,
+defined in <a href="../src/gscindex.h">src/gscindex.h</a>). The device with
+which they are associated is implicit. Although the format and
+interpretation of a pixel value are known only to the device, the device's
+color model and color representation capabilities are public, defined by a
+<b><tt>gx_color_info</tt></b> structure stored in the device (defined in <a
+href="../src/gxdevcli.h">src/gxdevcli.h</a>). Virtual procedures of the
+device driver map between pixel values and RGB or CMYK. (This area is
+untidy and will need to be cleaned up when we implement native
+Separation/DeviceN colors.)
+
+</ol>
+
+<p>
+Steps 2 and 3 are normally combined into a single step for efficiency, as
+the <b><tt>remap_color</tt></b> virtual procedure in a color space.
+
+<p>
+Using a device color to actually paint pixels requires a further step called
+<em>color loading</em>, implemented by the <b><tt>load</tt></b> virtual
+procedure in the device color. This does nothing for pure colors, but loads
+the caches for halftones and Patterns.
+
+<p>
+All of the above steps -- concretizing, mapping to a device color, and color
+loading -- are done as late as possible, normally not until the color is
+actually needed for painting.
+
+<p>
+All painting operations (fill, stroke, imagemask/show) eventually call a
+virtual procedure in the device color, either <b><tt>fill_rectangle</tt></b>
+or <b><tt>fill_mask</tt></b> to actually paint pixels. For rectangle fills,
+pure colors call the device's <b><tt>fill_rectangle</tt></b> procedure;
+halftones and tiled Patterns call the device's
+<b><tt>tile_rectangle</tt></b>; shaded Patterns, and painting operations
+that involve a RasterOp, do something more complicated.
+
+<dl>
+
+<dt>
+Color specification:
+<dd>
+<a href="../src/gsccolor.h">src/gsccolor.h</a>,
+<a href="../src/gscolor.c">src/gscolor.c</a>,
+<a href="../src/gscolor.h">src/gscolor.h</a>,
+<a href="../src/gscolor1.c">src/gscolor1.c</a>,
+<a href="../src/gscolor1.h">src/gscolor1.h</a>,
+<a href="../src/gscolor2.c">src/gscolor2.c</a>,
+<a href="../src/gscolor2.h">src/gscolor2.h</a>,
+<a href="../src/gscolor3.c">src/gscolor3.c</a>,
+<a href="../src/gscolor3.h">src/gscolor3.h</a>,
+<a href="../src/gshsb.c">src/gshsb.c</a>,
+<a href="../src/gshsb.h">src/gshsb.h</a>,
+<a href="../src/gxcolor2.h">src/gxcolor2.h</a>,
+<a href="../src/gxcvalue.h">src/gxcvalue.h</a>.
+
+<dt>
+Color spaces:
+<dd>
+<a href="../src/gscdevn.c">src/gscdevn.c</a>,
+<a href="../src/gscdevn.h">src/gscdevn.h</a>,
+<a href="../src/gscie.c">src/gscie.c</a>,
+<a href="../src/gscie.h">src/gscie.h</a>,
+<a href="../src/gscpixel.c">src/gscpixel.c</a>,
+<a href="../src/gscpixel.h">src/gscpixel.h</a>,
+<a href="../src/gscscie.c">src/gscscie.c</a>,
+<a href="../src/gscsepnm.h">src/gscsepnm.h</a>,
+<a href="../src/gscsepr.c">src/gscsepr.c</a>,
+<a href="../src/gscsepr.h">src/gscsepr.h</a>,
+<a href="../src/gscspace.c">src/gscspace.c</a>,
+<a href="../src/gscspace.h">src/gscspace.h</a>,
+<a href="../src/gscssub.c">src/gscssub.c</a>,
+<a href="../src/gscssub.h">src/gscssub.h</a>,
+<a href="../src/gxcdevn.h">src/gxcdevn.h</a>,
+<a href="../src/gxcie.h">src/gxcie.h</a>,
+<a href="../src/gxcspace.h">src/gxcspace.h</a>.
+
+<dt>
+Color mapping:
+<dd>
+<a href="../src/gsciemap.c">src/gsciemap.c</a>,
+<a href="../src/gscindex.h">src/gscindex.h</a>,
+<a href="../src/gscrd.c">src/gscrd.c</a>,
+<a href="../src/gscrd.h">src/gscrd.h</a>,
+<a href="../src/gscrdp.c">src/gscrdp.c</a>,
+<a href="../src/gscrdp.h">src/gscrdp.h</a>,
+<a href="../src/gscsel.h">src/gscsel.h</a>,
+<a href="../src/gsdcolor.h">src/gsdcolor.h</a>,
+<a href="../src/gxcindex.h">src/gxcindex.h</a>,
+<a href="../src/gxcmap.c">src/gxcmap.c</a>,
+<a href="../src/gxcmap.h">src/gxcmap.h</a>,
+<a href="../src/gxctable.c">src/gxctable.c</a>,
+<a href="../src/gxctable.h">src/gxctable.h</a>,
+<a href="../src/gxdcconv.c">src/gxdcconv.c</a>,
+<a href="../src/gxdcconv.h">src/gxdcconv.h</a>,
+<a href="../src/gxdcolor.c">src/gxdcolor.c</a>,
+<a href="../src/gxdcolor.h">src/gxdcolor.h</a>,
+<a href="../src/gxdither.c">src/gxdither.c</a>,
+<a href="../src/gxdither.h">src/gxdither.h</a>,
+<a href="../src/gxfmap.h">src/gxfmap.h</a>,
+<a href="../src/gxlum.h">src/gxlum.h</a>,
+<a href="../src/gxtmap.h">src/gxtmap.h</a>.
+
+<p>
+ICC profiles are in some ways a special case of color mapping, but are
+not standard in PostScript.
+
+<dt>
+Color mapping:
+<dd>
+<a href="../src/gsicc.c">src/gsicc.c</a>,
+<a href="../src/gsicc.h">src/gsicc.h</a>,
+
+</dl>
+
+<p>
+Ghostscript represents halftones internally by "whitening orders" --
+essentially, arrays of arrays of bit coordinates within a halftone cell,
+specifying which bits are inverted to get from halftone level K to level
+K+1. The code does support all of the PostScript halftone types, but they
+are all ultimately reduced to whitening orders.
+
+<p>
+Threshold arrays, the more conventional representation of halftones, can be
+mapped to whitening orders straightforwardly; however, whitening orders can
+represent non-monotonic halftones (halftones where the bits turned on for
+level K+1 don't necessarily include all the bits turned on for level K),
+while threshold arrays cannot. On the other hand, threshold arrays allow
+rapid conversion of images (using a threshold comparison for each pixel)
+with no additional space, while whitening orders do not: they require
+storing the rendered halftone cell for each possible level as a bitmap.
+
+<p>
+Ghostscript uses two distinct types of rendered halftones -- that is, the
+bitmap(s) that represent a particular level.
+
+<ul>
+
+<li>Binary halftones. The rendered halftone is a single bit plane; each bit
+selects one of two pure colors. These are fast but limited: they are used
+for monochrome output devices, or for color devices in those cases where
+only two distinct colors are involved in a halftone (e.g., a pure cyan shade
+on a CMYK device). The device color for a binary halftone stores a pointer
+to the halftone bitmap, and the two pure colors.
+
+<li>Multi-plane halftones. Internally, each plane is rendered individually.
+Since there isn't enough room to store all 2^N pure colors, multi-plane
+halftones only store the scaled values for the individual components; the
+halftone renderer maps these to the pure colors on the fly, then combines
+the planes to assemble an N-bit index into the list of colors for each
+pixel, and stores the color into the fully rendered halftone.
+
+</ul>
+
+<p>
+The halftone level for rendering a color is computed in <a
+href="../src/gxdither.c">src/gxdither.c</a>; the actual halftone mask or
+tile is computed either in <a href="../src/gxcht.c">src/gxcht.c</a> (for
+multi-plane halftones), or in <a href="../src/gxht.c">src/gxht.c</a> and <a
+href="../src/gxhtbit.c">src/gxhtbit.c</a> (for binary halftones).
+
+<dl>
+
+<dt>
+Halftoning:
+<dd>
+<a href="../src/gsht.c">src/gsht.c</a>,
+<a href="../src/gsht.h">src/gsht.h</a>,
+<a href="../src/gsht1.c">src/gsht1.c</a>,
+<a href="../src/gsht1.h">src/gsht1.h</a>,
+<a href="../src/gshtscr.c">src/gshtscr.c</a>,
+<a href="../src/gshtx.c">src/gshtx.c</a>,
+<a href="../src/gshtx.h">src/gshtx.h</a>,
+<a href="../src/gxcht.c">src/gxcht.c</a>,
+<a href="../src/gxdht.h">src/gxdht.h</a>,
+<a href="../src/gxdhtres.h">src/gxdhtres.h</a>,
+<a href="../src/gxht.c">src/gxht.c</a>,
+<a href="../src/gxht.h">src/gxht.h</a>,
+<a href="../src/gxhtbit.c">src/gxhtbit.c</a>,
+<a href="../src/gxhttile.h">src/gxhttile.h</a>,
+<a href="../src/gxhttype.h">src/gxhttype.h</a>,
+<a href="../src/gzht.h">src/gzht.h</a>.
+
+</dl>
+
+<p>
+Pattern colors (tiled patterns and shadings) each use a slightly different
+approach from solid colors.
+
+<p>
+The device color for a tiled (PatternType 1) pattern contains a pointer to a
+pattern instance, plus (for uncolored patterns) the device color to be
+masked. The pattern instance includes a procedure that actually paints the
+pattern if the pattern is not in the cache. For the PostScript interpreter,
+this procedure returns an <b><tt>e_RemapColor</tt></b> exception code: this
+eventually causes the interpreter to run the pattern's PaintProc, loading
+the rendering into the cache, and then re-execute the original drawing
+operator.
+
+<dl>
+
+<dt>
+Patterns:
+<dd>
+<a href="../src/gspcolor.c">src/gspcolor.c</a>,
+<a href="../src/gspcolor.h">src/gspcolor.h</a>,
+<a href="../src/gsptype1.c">src/gsptype1.c</a>,
+<a href="../src/gsptype1.h">src/gsptype1.h</a>,
+<a href="../src/gxp1fill.c">src/gxp1fill.c</a>,
+<a href="../src/gxp1impl.h">src/gxp1impl.h</a>,
+<a href="../src/gxpcache.h">src/gxpcache.h</a>,
+<a href="../src/gxpcmap.c">src/gxpcmap.c</a>,
+<a href="../src/gxpcolor.h">src/gxpcolor.h</a>.
+
+</dl>
+
+<p>
+The device color for a shading (PatternType 2) pattern also contains a
+pointer to a pattern instance. Shadings are not cached: painting with a
+shading runs the shading algorithm every time.
+
+<dl>
+
+<dt>
+Shading:
+<dd>
+<a href="../src/gsptype2.c">src/gsptype2.c</a>,
+<a href="../src/gsptype2.h">src/gsptype2.h</a>,
+<a href="../src/gsshade.c">src/gsshade.c</a>,
+<a href="../src/gsshade.h">src/gsshade.h</a>,
+<a href="../src/gxshade.c">src/gxshade.c</a>,
+<a href="../src/gxshade.h">src/gxshade.h</a>,
+<a href="../src/gxshade1.c">src/gxshade1.c</a>,
+<a href="../src/gxshade4.c">src/gxshade4.c</a>,
+<a href="../src/gxshade4.h">src/gxshade4.h</a>,
+<a href="../src/gxshade6.c">src/gxshade6.c</a>.
+
+</dl>
+
+<p>
+In addition to the PostScript graphics model, Ghostscript supports RasterOp,
+a weak form of alpha channel, and eventually the full PDF 1.4 transparency
+model. The implemention of these facilities is quite slipshod and
+scattered: only RasterOp is really implemented fully. There is a general
+compositing architecture, but it is hardly used at all, and in particular is
+not used for RasterOp. ****** TO BE COMPLETED ******
+
+<dl>
+
+<dt>
+Compositing architecture:
+<dd>
+<a href="../src/gscompt.h">src/gscompt.h</a>,
+<a href="../src/gxcomp.h">src/gxcomp.h</a>.
+
+<dt>
+RasterOp:
+<dd>
+<a href="../src/gdevdrop.c">src/gdevdrop.c</a>,
+<a href="../src/gdevrops.c">src/gdevrops.c</a>,
+<a href="../src/gsnorop.c">src/gsnorop.c</a>,
+<a href="../src/gsrop.c">src/gsrop.c</a>,
+<a href="../src/gsrop.h">src/gsrop.h</a>,
+<a href="../src/gsropc.c">src/gsropc.c</a>,
+<a href="../src/gsropc.h">src/gsropc.h</a>,
+<a href="../src/gsropt.h">src/gsropt.h</a>,
+<a href="../src/gsroptab.c">src/gsroptab.c</a>,
+<a href="../src/gxdevrop.h">src/gxdevrop.h</a>,
+<a href="../src/gxropc.h">src/gxropc.h</a>.
+
+<dt>
+Alpha channel and compositing:
+<dd>
+<a href="../src/gsalpha.c">src/gsalpha.c</a>,
+<a href="../src/gsalpha.h">src/gsalpha.h</a>,
+<a href="../src/gsalphac.c">src/gsalphac.c</a>,
+<a href="../src/gsalphac.h">src/gsalphac.h</a>,
+<a href="../src/gsdpnext.h">src/gsdpnext.h</a>,
+<a href="../src/gxalpha.h">src/gxalpha.h</a>.
+
+<dt>
+Advanced transparency:
+<dd>
+<a href="../src/gstparam.h">src/gstparam.h</a>,
+<a href="../src/gstrans.c">src/gstrans.c</a>,
+<a href="../src/gstrans.h">src/gstrans.h</a>,
+<a href="../src/gxblend.c">src/gxblend.c</a>,
+<a href="../src/gxblend.h">src/gxblend.h</a>,
+<a href="../src/gdevp14.c">src/gdevp14.c</a>.
+<a href="../src/gdevp14.h">src/gdevp14.h</a>.
+<a href="../src/gdevpnga.c">src/gdevpnga.c</a>.
+
+</dl>
+
+<h4><a name="Clipping"></a>Clipping</h4>
+
+<p>
+The Ghostscript graphics library implements clipping by inserting a clipping
+device in the device pipeline. The clipping device modifies all drawing
+operations to confine them to the clipping region.
+
+<p>
+The library supports three different kinds of clipping:
+
+<dl>
+
+<dt>
+Region/path clipping
+<dd>
+This corresponds to the PostScript concept of a clipping path. The clipping
+region is specified either by a list of rectangles (subject to the
+constraints documented in <a href="../src/gxcpath.h">src/gxcpath.h</a>), or
+by a path that is converted to such a list of rectangles.
+
+<dt>
+Stationary mask clipping
+<dd>
+This corresponds to the mask operand of a PostScript ImageType 3 image. The
+clipping region is specified by a bitmap and an (X,Y) offset in the
+coordinate space.
+
+<dt>
+Tiled mask clipping
+<dd>
+This corresponds to the region painted by a PostScript Pattern, for the case
+where the Pattern does not completely cover its bounding box but the
+combined transformation matrix has no skew or non-orthogonal rotation (i.e.,
+XStep and YStep map respectively to (X,0) and (0,Y) or vice versa). The
+clipping region is specified by a bitmap and an (X,Y) offset in the
+coordinate space, and is replicated indefinitely in both X and Y.
+
+</dl>
+
+<p>
+Note that simply scan-converting a clipping path in the usual way does not
+produce a succession of rectangles that can simply be stored as the list for
+region-based clipping: in general, the rectangles do not satisfy the
+constraint for rectangle lists specified in <a
+href="../src/gxcpath.h">src/gxcpath.h</a>, since they may overlap in X, Y,
+or both. A non-trivial "clipping list accumulator" device is needed to
+produce a rectangle list that does satisfy the constraint.
+
+<dl>
+
+<dt>
+Clipping support:
+<dd>
+<a href="../src/gxclip.c">src/gxclip.c</a>,
+<a href="../src/gxclip.h">src/gxclip.h</a>.
+
+<dt>
+Region/path clipping:
+<dd>
+<a href="../src/gxcpath.c">src/gxcpath.c</a>,
+<a href="../src/gxcpath.h">src/gxcpath.h</a>,
+<a href="../src/gzcpath.h">src/gzcpath.h</a>.
+
+<dt>
+Clipping list accumulator:
+<dd>
+<a href="../src/gxacpath.c">src/gxacpath.c</a>,
+<a href="../src/gzacpath.h">src/gzacpath.h</a>.
+
+<dt>
+Mask clipping support:
+<dd>
+<a href="../src/gxmclip.c">src/gxmclip.c</a>,
+<a href="../src/gxmclip.h">src/gxmclip.h</a>.
+
+<dt>
+Stationary mask clipping:
+<dd>
+<a href="../src/gxclipm.c">src/gxclipm.c</a>,
+<a href="../src/gxclipm.h">src/gxclipm.h</a>.
+
+<dt>
+Tiled mask clipping:
+<dd>
+<a href="../src/gxclip2.c">src/gxclip2.c</a>,
+<a href="../src/gxclip2.h">src/gxclip2.h</a>.
+
+</dl>
+
+<h4><a name="Other_graphics"></a>Other graphics</h4>
+
+<dl>
+
+<dt>
+Miscellaneous graphics state:
+<dd>
+<a href="../src/gsclipsr.c">src/gsclipsr.c</a>,
+<a href="../src/gsclipsr.h">src/gsclipsr.h</a>,
+<a href="../src/gsdps.c">src/gsdps.c</a>,
+<a href="../src/gsdps.h">src/gsdps.h</a>,
+<a href="../src/gsdps1.c">src/gsdps1.c</a>,
+<a href="../src/gsistate.c">src/gsistate.c</a>,
+<a href="../src/gsline.c">src/gsline.c</a>,
+<a href="../src/gsline.h">src/gsline.h</a>,
+<a href="../src/gslparam.h">src/gslparam.h</a>,
+<a href="../src/gsstate.c">src/gsstate.c</a>,
+<a href="../src/gsstate.h">src/gsstate.h</a>,
+<a href="../src/gstrap.c">src/gstrap.c</a>,
+<a href="../src/gstrap.h">src/gstrap.h</a>,
+<a href="../src/gxclipsr.h">src/gxclipsr.h</a>,
+<a href="../src/gxistate.h">src/gxistate.h</a>,
+<a href="../src/gxline.h">src/gxline.h</a>,
+<a href="../src/gxstate.h">src/gxstate.h</a>,
+<a href="../src/gzline.h">src/gzline.h</a>,
+<a href="../src/gzstate.h">src/gzstate.h</a>.
+
+</dl>
+
+<h4><a name="Driver_support"></a>Driver support</h4>
+
+<dl>
+
+<dt>
+Generic driver support:
+<dd>
+<a href="../src/gdevdcrd.c">src/gdevdcrd.c</a>,
+<a href="../src/gdevdcrd.h">src/gdevdcrd.h</a>,
+<a href="../src/gdevemap.c">src/gdevemap.c</a>,
+<a href="../src/gsdevice.c">src/gsdevice.c</a>,
+<a href="../src/gsdevice.h">src/gsdevice.h</a>,
+<a href="../src/gsdparam.c">src/gsdparam.c</a>,
+<a href="../src/gsxfont.h">src/gsxfont.h</a>,
+<a href="../src/gxdevbuf.h">src/gxdevbuf.h</a>,
+<a href="../src/gxdevcli.h">src/gxdevcli.h</a>,
+<a href="../src/gxdevice.h">src/gxdevice.h</a>,
+<a href="../src/gxrplane.h">src/gxrplane.h</a>,
+<a href="../src/gxxfont.h">src/gxxfont.h</a>.
+
+<dt>
+Accessing rendered bits:
+<dd>
+<a href="../src/gdevdbit.c">src/gdevdbit.c</a>,
+<a href="../src/gdevdgbr.c">src/gdevdgbr.c</a>,
+<a href="../src/gxbitfmt.h">src/gxbitfmt.h</a>,
+<a href="../src/gxgetbit.h">src/gxgetbit.h</a>.
+
+<dt>
+"Printer" driver support:
+<dd>
+<a href="../src/gdevmeds.c">src/gdevmeds.c</a>,
+<a href="../src/gdevmeds.h">src/gdevmeds.h</a>,
+<a href="../src/gdevppla.c">src/gdevppla.c</a>,
+<a href="../src/gdevppla.h">src/gdevppla.h</a>,
+<a href="../src/gdevprn.c">src/gdevprn.c</a>,
+<a href="../src/gdevprn.h">src/gdevprn.h</a>,
+<a href="../src/gdevprna.c">src/gdevprna.c</a>,
+<a href="../src/gdevprna.h">src/gdevprna.h</a>,
+<a href="../src/gxband.h">src/gxband.h</a>,
+<a href="../src/gxpageq.c">src/gxpageq.c</a>,
+<a href="../src/gxpageq.h">src/gxpageq.h</a>.
+
+<dt>
+High-level device support:
+<dd>
+<a href="../src/gdevvec.c">src/gdevvec.c</a>,
+<a href="../src/gdevvec.h">src/gdevvec.h</a>.
+
+<dt>
+Banding:
+<dd>
+<a href="../src/gxclbits.c">src/gxclbits.c</a>,
+<a href="../src/gxcldev.h">src/gxcldev.h</a>,
+<a href="../src/gxclfile.c">src/gxclfile.c</a>,
+<a href="../src/gxclimag.c">src/gxclimag.c</a>,
+<a href="../src/gxclio.h">src/gxclio.h</a>,
+<a href="../src/gxclist.c">src/gxclist.c</a>,
+<a href="../src/gxclist.h">src/gxclist.h</a>,
+<a href="../src/gxcllzw.c">src/gxcllzw.c</a>,
+<a href="../src/gxclmem.c">src/gxclmem.c</a>,
+<a href="../src/gxclmem.h">src/gxclmem.h</a>,
+<a href="../src/gxclpage.c">src/gxclpage.c</a>,
+<a href="../src/gxclpage.h">src/gxclpage.h</a>,
+<a href="../src/gxclpath.c">src/gxclpath.c</a>,
+<a href="../src/gxclpath.h">src/gxclpath.h</a>,
+<a href="../src/gxclrast.c">src/gxclrast.c</a>,
+<a href="../src/gxclread.c">src/gxclread.c</a>,
+<a href="../src/gxclrect.c">src/gxclrect.c</a>,
+<a href="../src/gxclutil.c">src/gxclutil.c</a>,
+<a href="../src/gxclzlib.c">src/gxclzlib.c</a>.
+
+</dl>
+
+<h3><a name="Device_drivers"></a>Device drivers</h3>
+
+<p>
+See <a href="Drivers.htm">doc/Drivers.htm</a> for extensive documentation on
+the interface between the core code and drivers.
+
+<p>
+The driver API includes high-level (path / image / text), mid-level
+(polygon), and low-level (rectangle / raster) operations. Most devices
+implement only the low-level operations, and let generic code break down the
+high-level operations. However, some devices produce high-level output, and
+therefore must implement the high-level operations.
+
+<h4><a name="Internal_devices"></a>Internal devices</h4>
+
+<p>
+There are a number of "devices" that serve internal purposes. Some of these
+are meant to be real rendering targets; others are intended for use in
+device pipelines. The rendering targets are:
+
+<dl>
+
+<dt>
+Memory devices, depth-independent:
+<dd>
+<a href="../src/gdevmem.c">src/gdevmem.c</a>,
+<a href="../src/gdevmem.h">src/gdevmem.h</a>,
+<a href="../src/gdevmpla.c">src/gdevmpla.c</a>,
+<a href="../src/gdevmpla.h">src/gdevmpla.h</a>,
+<a href="../src/gdevmrop.h">src/gdevmrop.h</a>,
+<a href="../src/gsdevmem.c">src/gsdevmem.c</a>,
+<a href="../src/gxdevmem.h">src/gxdevmem.h</a>.
+
+<dt>
+Memory devices, specific depths:
+<dd>
+<a href="../src/gdevm1.c">src/gdevm1.c</a>,
+<a href="../src/gdevm2.c">src/gdevm2.c</a>,
+<a href="../src/gdevm4.c">src/gdevm4.c</a>,
+<a href="../src/gdevm8.c">src/gdevm8.c</a>,
+<a href="../src/gdevm16.c">src/gdevm16.c</a>,
+<a href="../src/gdevm24.c">src/gdevm24.c</a>,
+<a href="../src/gdevm32.c">src/gdevm32.c</a>,
+<a href="../src/gdevmr1.c">src/gdevmr1.c</a>,
+<a href="../src/gdevmr2n.c">src/gdevmr2n.c</a>,
+<a href="../src/gdevmr8n.c">src/gdevmr8n.c</a>.
+
+<dt>
+Alpha-related devices:
+<dd>
+<a href="../src/gdevabuf.c">src/gdevabuf.c</a>,
+<a href="../src/gdevalph.c">src/gdevalph.c</a>.
+
+<dt>
+Other devices:
+<dd>
+<a href="../src/gdevdflt.c">src/gdevdflt.c</a>,
+<a href="../src/gdevhit.c">src/gdevhit.c</a>,
+<a href="../src/gdevht.c">src/gdevht.c</a>,
+<a href="../src/gdevht.h">src/gdevht.h</a>,
+<a href="../src/gdevmrun.c">src/gdevmrun.c</a>,
+<a href="../src/gdevmrun.h">src/gdevmrun.h</a>,
+<a href="../src/gdevplnx.c">src/gdevplnx.c</a>,
+<a href="../src/gdevplnx.h">src/gdevplnx.h</a>,
+
+</dl>
+
+<p>
+The forwarding devices meant for use in pipelines are:
+
+<dl>
+
+<dt>
+The bounding box device:
+<dd>
+<a href="../src/gdevbbox.h">src/gdevbbox.h</a>,
+<a href="../src/gdevbbox.c">src/gdevbbox.c</a>.
+
+<dt>
+Clipping devices:
+<dd>
+See under <a href="#Clipping">Clipping</a> above.
+
+<dt>
+Device filter stack:
+<dd>
+<a href="../src/gsdfilt.c">src/gsdfilt.c</a>,
+<a href="../src/gsdfilt.h">src/gsdfilt.h</a>,
+
+<dt>
+Other devices:
+<dd>
+<a href="../src/gdevcmap.c">src/gdevcmap.c</a>,
+<a href="../src/gdevcmap.h">src/gdevcmap.h</a>,
+<a href="../src/gdevnfwd.c">src/gdevnfwd.c</a>.
+
+</dl>
+
+<h4><a name="PS_and_PDF_writers"></a>PostScript and PDF writers</h4>
+
+<p>
+Because PostScript and PDF have the same graphics model, lexical syntax, and
+stack-based execution model, the drivers that produce PostScript and PDF
+output share a significant amount of support code. In the future, the
+PostScript output driver should be replaced with a slightly modified version
+of the PDF driver, since the latter is far more sophisticated (in
+particular, it has extensive facilities for image compression and for
+handling text and fonts).
+
+<dl>
+
+<dt>
+Shared support:
+<dd>
+
+<dl>
+Writing fonts:
+<dd>
+<a href="../src/gdevpsf.h">src/gdevpsf.h</a>,
+<a href="../src/gdevpsf1.c">src/gdevpsf1.c</a>,
+<a href="../src/gdevpsf2.c">src/gdevpsf2.c</a>,
+<a href="../src/gdevpsfm.c">src/gdevpsfm.c</a>,
+<a href="../src/gdevpsft.c">src/gdevpsft.c</a>,
+<a href="../src/gdevpsfu.c">src/gdevpsfu.c</a>,
+<a href="../src/gdevpsfx.c">src/gdevpsfx.c</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../src/gdevpsdf.h">src/gdevpsdf.h</a>,
+<a href="../src/gdevpsdi.c">src/gdevpsdi.c</a>,
+<a href="../src/gdevpsdp.c">src/gdevpsdp.c</a>,
+<a href="../src/gdevpsds.c">src/gdevpsds.c</a>,
+<a href="../src/gdevpsds.h">src/gdevpsds.h</a>,
+<a href="../src/gdevpsdu.c">src/gdevpsdu.c</a>.
+
+</dl>
+
+<dt>
+PostScript output driver ([e]pswrite):
+<dd>
+<a href="../src/gdevps.c">src/gdevps.c</a>,
+<a href="../src/gdevpsu.c">src/gdevpsu.c</a>,
+<a href="../src/gdevpsu.h">src/gdevpsu.h</a>.
+
+<dt>
+PDF output driver (pdfwrite):
+<dd>
+<dl>
+
+<dt>
+Substrate:
+<dd>
+<a href="../src/gdevpdfo.c">src/gdevpdfo.c</a>,
+<a href="../src/gdevpdfo.h">src/gdevpdfo.h</a>,
+<a href="../src/gdevpdfr.c">src/gdevpdfr.c</a>,
+<a href="../src/gdevpdfu.c">src/gdevpdfu.c</a>.
+
+<dt>
+Text and fonts:
+<dd>
+<a href="../src/gdevpdfe.c">src/gdevpdfe.c</a>,
+<a href="../src/gdevpdff.c">src/gdevpdff.c</a>,
+<a href="../src/gdevpdff.h">src/gdevpdff.h</a>,
+<a href="../src/gdevpdfs.c">src/gdevpdfs.c</a>,
+<a href="../src/gdevpdft.c">src/gdevpdft.c</a>,
+<a href="../src/gdevpdfw.c">src/gdevpdfw.c</a>.
+
+<dt>
+Graphics:
+<dd>
+<a href="../src/gdevpdfc.c">src/gdevpdfc.c</a>,
+<a href="../src/gdevpdfd.c">src/gdevpdfd.c</a>,
+<a href="../src/gdevpdfg.c">src/gdevpdfg.c</a>,
+<a href="../src/gdevpdfg.h">src/gdevpdfg.h</a>,
+<a href="../src/gdevpdfv.c">src/gdevpdfv.c</a>.
+
+<dt>
+Images:
+<dd>
+<a href="../src/gdevpdfb.c">src/gdevpdfb.c</a>,
+<a href="../src/gdevpdfi.c">src/gdevpdfi.c</a>,
+<a href="../src/gdevpdfj.c">src/gdevpdfj.c</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../src/gdevpdf.c">src/gdevpdf.c</a>,
+<a href="../src/gdevpdfm.c">src/gdevpdfm.c</a>,
+<a href="../src/gdevpdfp.c">src/gdevpdfp.c</a>,
+<a href="../src/gdevpdfx.h">src/gdevpdfx.h</a>.
+
+</dl>
+
+</dl>
+
+<h4><a name="High_level_devices"></a>Other high-level devices</h4>
+
+<p>
+Currently, the CGM driver is raster-only. If anyone cares seriously about
+CGM in the future, this driver should be upgraded to a higher level.
+
+<dl>
+
+<dt>
+PCL XL output device (pxlmono, pxlcolor):
+<dd>
+<a href="../src/gdevpx.c">src/gdevpx.c</a>,
+<a href="../src/gdevpxat.h">src/gdevpxat.h</a>,
+<a href="../src/gdevpxen.h">src/gdevpxen.h</a>,
+<a href="../src/gdevpxop.h">src/gdevpxop.h</a>,
+<a href="../src/gdevpxut.c">src/gdevpxut.c</a>,
+<a href="../src/gdevpxut.h">src/gdevpxut.h</a>.
+
+<dt>
+Other high-level devices:
+<dd>
+<a href="../src/gdevtrac.c">src/gdevtrac.c</a>.
+
+</dl>
+
+<h4><a name="Other_maintained_drivers"></a>Other maintained drivers</h4>
+
+<p>
+The standard Ghostscript distribution includes a collection of drivers,
+mostly written by Aladdin Enterprises, that are "maintained" in the same
+sense as the Ghostscript core code.
+
+<dl>
+
+<dt>
+Display drivers:
+<dd>
+<a href="../src/gdev8bcm.c">src/gdev8bcm.c</a>,
+<a href="../src/gdev8bcm.h">src/gdev8bcm.h</a>,
+<a href="../src/gdevegaa.asm">src/gdevegaa.asm</a>,
+<a href="../src/gdevevga.c">src/gdevevga.c</a>,
+<a href="../src/gdevl256.c">src/gdevl256.c</a>,
+<a href="../src/gdevpccm.c">src/gdevpccm.c</a>,
+<a href="../src/gdevpccm.h">src/gdevpccm.h</a>,
+<a href="../src/gdevpcfb.c">src/gdevpcfb.c</a>,
+<a href="../src/gdevpcfb.h">src/gdevpcfb.h</a>,
+<a href="../src/gdevs3ga.c">src/gdevs3ga.c</a>,
+<a href="../src/gdevsco.c">src/gdevsco.c</a>,
+<a href="../src/gdevsvga.c">src/gdevsvga.c</a>,
+<a href="../src/gdevsvga.h">src/gdevsvga.h</a>,
+<a href="../src/gdevvglb.c">src/gdevvglb.c</a>.
+
+<dt>
+Window system drivers:
+<dd>
+
+<dl>
+
+<dt>
+X Windows:
+<dd>
+<a href="../src/gdevx.c">src/gdevx.c</a>,
+<a href="../src/gdevx.h">src/gdevx.h</a>,
+<a href="../src/gdevxalt.c">src/gdevxalt.c</a>,
+<a href="../src/gdevxcmp.c">src/gdevxcmp.c</a>,
+<a href="../src/gdevxcmp.h">src/gdevxcmp.h</a>,
+<a href="../src/gdevxini.c">src/gdevxini.c</a>,
+<a href="../src/gdevxres.c">src/gdevxres.c</a>,
+<a href="../src/gdevxxf.c">src/gdevxxf.c</a>.
+
+<dt>
+Microsoft Windows:
+<dd>
+<a href="../src/gdevmswn.c">src/gdevmswn.c</a>,
+<a href="../src/gdevmswn.h">src/gdevmswn.h</a>,
+<a href="../src/gdevmsxf.c">src/gdevmsxf.c</a>,
+<a href="../src/gdevwddb.c">src/gdevwddb.c</a>,
+<a href="../src/gdevwdib.c">src/gdevwdib.c</a>.
+
+<dt>
+OS/2 Presentation Manager:
+<dd>
+<a href="../src/gdevpm.c">src/gdevpm.c</a>,
+<a href="../src/gdevpm.h">src/gdevpm.h</a>,
+<a href="../src/gspmdrv.c">src/gspmdrv.c</a>,
+<a href="../src/gspmdrv.h">src/gspmdrv.h</a>.
+
+</dl>
+
+<dt>
+Raster file output drivers:
+<dd>
+
+<dl>
+
+<dt>
+Fax and TIFF:
+<dd>
+<a href="../src/gdevfax.c">src/gdevfax.c</a>,
+<a href="../src/gdevfax.h">src/gdevfax.h</a>,
+<a href="../src/gdevtfax.c">src/gdevtfax.c</a>,
+<a href="../src/gdevtfax.h">src/gdevtfax.h</a>,
+<a href="../src/gdevtifs.c">src/gdevtifs.c</a>,
+<a href="../src/gdevtifs.h">src/gdevtifs.h</a>,
+<a href="../src/gdevtfnx.c">src/gdevtfnx.c</a>.
+
+<dt>
+(Low-level) CGM:
+<dd>
+<a href="../src/gdevcgm.c">src/gdevcgm.c</a>,
+<a href="../src/gdevcgml.c">src/gdevcgml.c</a>,
+<a href="../src/gdevcgml.h">src/gdevcgml.h</a>,
+<a href="../src/gdevcgmx.h">src/gdevcgmx.h</a>.
+
+<dt>
+Other raster file formats:
+<dd>
+<a href="../src/gdevbit.c">src/gdevbit.c</a>,
+<a href="../src/gdevbmp.c">src/gdevbmp.c</a>,
+<a href="../src/gdevbmp.h">src/gdevbmp.h</a>,
+<a href="../src/gdevbmpa.c">src/gdevbmpa.c</a>,
+<a href="../src/gdevbmpc.c">src/gdevbmpc.c</a>,
+<a href="../src/gdevjpeg.c">src/gdevjpeg.c</a>,
+<a href="../src/gdevmiff.c">src/gdevmiff.c</a>,
+<a href="../src/gdevp2up.c">src/gdevp2up.c</a>,
+<a href="../src/gdevpcx.c">src/gdevpcx.c</a>,
+<a href="../src/gdevpbm.c">src/gdevpbm.c</a>,
+<a href="../src/gdevpng.c">src/gdevpng.c</a>,
+<a href="../src/gdevpsim.c">src/gdevpsim.c</a>.
+
+</dl>
+
+<dt>
+Printer drivers:
+<dd>
+
+<dl>
+
+<dt>
+Operating system printer services:
+<dd>
+<a href="../src/gdevos2p.c">src/gdevos2p.c</a>,
+<a href="../src/gdevwpr2.c">src/gdevwpr2.c</a>,
+<a href="../src/gdevwprn.c">src/gdevwprn.c</a>.
+
+<dt>
+H-P monochrome printers:
+<dd>
+<a href="../src/gdevdljm.c">src/gdevdljm.c</a>,
+<a href="../src/gdevdljm.h">src/gdevdljm.h</a>,
+<a href="../src/gdevdjet.c">src/gdevdjet.c</a>,
+<a href="../src/gdevlj56.c">src/gdevlj56.c</a>.
+
+<dt>
+Other printers:
+<dd>
+<a href="../src/gdevatx.c">src/gdevatx.c</a>.
+
+</dl>
+
+</dl>
+
+<h4><a name="Contributed_drivers"></a>Contributed drivers</h4>
+
+<p>
+This list is likely to be incomplete and inaccurate: see <a
+href="../src/contrib.mak">src/contrib.mak</a> for the real one.
+
+<dl>
+
+<dt>
+Display and window system drivers:
+<dd>
+<a href="../src/gdev3b1.c">src/gdev3b1.c</a>,
+<a href="../src/gdevherc.c">src/gdevherc.c</a>,
+<a href="../src/gdevpe.c">src/gdevpe.c</a>,
+<a href="../src/gdevsnfb.c">src/gdevsnfb.c</a>,
+<a href="../src/gdevsun.c">src/gdevsun.c</a>.
+
+<dt>
+Raster file output drivers:
+<dd>
+<a href="../src/gdevcfax.c">src/gdevcfax.c</a>,
+<a href="../src/gdevcif.c">src/gdevcif.c</a>,
+<a href="../src/gdevdfax.c">src/gdevdfax.c</a>,
+<a href="../src/gdevifno.c">src/gdevifno.c</a>,
+<a href="../src/gdevmgr.c">src/gdevmgr.c</a>,
+<a href="../src/gdevmgr.h">src/gdevmgr.h</a>,
+<a href="../src/gdevsgi.c">src/gdevsgi.c</a>,
+<a href="../src/gdevsgi.h">src/gdevsgi.h</a>,
+<a href="../src/gdevsunr.c">src/gdevsunr.c</a>.
+
+<dt>
+Printer drivers:
+<dd>
+<a href="../lib/bj8.rpd">lib/bj8.rpd</a>,
+<a href="../lib/cbjc600.ppd">lib/cbjc600.ppd</a>,
+<a href="../lib/cbjc800.ppd">lib/cbjc800.ppd</a>,
+<a href="../src/gdev3852.c">src/gdev3852.c</a>,
+<a href="../src/gdev4081.c">src/gdev4081.c</a>,
+<a href="../src/gdev4693.c">src/gdev4693.c</a>,
+<a href="../src/gdev8510.c">src/gdev8510.c</a>,
+<a href="../src/gdevadmp.c">src/gdevadmp.c</a>,
+<a href="../src/gdevbj10.c">src/gdevbj10.c</a>,
+<a href="../src/gdevbjc.h">src/gdevbjc.h</a>,
+<a href="../src/gdevbjcl.c">src/gdevbjcl.c</a>,
+<a href="../src/gdevbjcl.h">src/gdevbjcl.h</a>,
+<a href="../src/gdevccr.c">src/gdevccr.c</a>,
+<a href="../src/gdevcdj.c">src/gdevcdj.c</a>,
+<a href="../src/gdevclj.c">src/gdevclj.c</a>,
+<a href="../src/gdevcljc.c">src/gdevcljc.c</a>,
+<a href="../src/gdevcp50.c">src/gdevcp50.c</a>,
+<a href="../src/gdevcslw.c">src/gdevcslw.c</a>,
+<a href="../src/gdevdjtc.c">src/gdevdjtc.c</a>,
+<a href="../src/gdevdm24.c">src/gdevdm24.c</a>,
+<a href="../src/gdevepsc.c">src/gdevepsc.c</a>,
+<a href="../src/gdevepsn.c">src/gdevepsn.c</a>,
+<a href="../src/gdevescp.c">src/gdevescp.c</a>,
+<a href="../src/gdevhl7x.c">src/gdevhl7x.c</a>,
+<a href="../src/gdevhpij.c">src/gdevhpij.c</a>,
+<a href="../src/gdevhpij.h">src/gdevhpij.h</a>,
+<a href="../src/gdevijs.c">src/gdevijs.c</a>,
+<a href="../src/gdevimgn.c">src/gdevimgn.c</a>,
+<a href="../src/gdevl31s.c">src/gdevl31s.c</a>,
+<a href="../src/gdevlbp8.c">src/gdevlbp8.c</a>,
+<a href="../src/gdevlp8k.c">src/gdevlp8k.c</a>,
+<a href="../src/gdevlxm.c">src/gdevlxm.c</a>,
+<a href="../src/gdevn533.c">src/gdevn533.c</a>,
+<a href="../src/gdevo182.c">src/gdevo182.c</a>,
+<a href="../src/gdevokii.c">src/gdevokii.c</a>,
+<a href="../src/gdevpcl.c">src/gdevpcl.c</a>,
+<a href="../src/gdevpcl.h">src/gdevpcl.h</a>,
+<a href="../src/gdevphex.c">src/gdevphex.c</a>,
+<a href="../src/gdevpjet.c">src/gdevpjet.c</a>,
+<a href="../src/gdevsj48.c">src/gdevsj48.c</a>,
+<a href="../src/gdevsppr.c">src/gdevsppr.c</a>,
+<a href="../src/gdevstp.c">src/gdevstp.c</a>,
+<a href="../src/gdevstc.c">src/gdevstc.c</a>,
+<a href="../src/gdevstc.h">src/gdevstc.h</a>,
+<a href="../src/gdevstc1.c">src/gdevstc1.c</a>,
+<a href="../src/gdevstc2.c">src/gdevstc2.c</a>,
+<a href="../src/gdevstc3.c">src/gdevstc3.c</a>,
+<a href="../src/gdevstc4.c">src/gdevstc4.c</a>,
+<a href="../src/gdevtknk.c">src/gdevtknk.c</a>,
+<a href="../src/gdevupd.c">src/gdevupd.c</a>.
+<a href="../src/gdevhl12.c">src/gdevhl12.c</a>.
+
+</dl>
+
+<h3><a name="PostScript_interpreter"></a>PostScript interpreter</h3>
+
+<p>
+The PostScript interpreter is conceptually simple: in fact, an interpreter
+that could execute "3 4 add =" and print "7" was running 3 weeks after the
+first line of Ghostscript code was written. However, a number of
+considerations make the code large and complex.
+
+<p>
+The interpreter is designed to run in environments with very limited memory.
+The main consequence of this is that it cannot allocate its stacks
+(dictionary, execution, operand) as ordinary arrays, since the
+user-specified stack size limit may be very large. Instead, it allocates
+them as a linked list of blocks. See below for more details.
+
+<p>
+The interpreter must never cause a C runtime error that it cannot trap.
+Unfortunately, C implementations almost never provide the ability to trap
+stack overflow. In order to put a fixed bound on the C stack size, the
+interpreter never implements PostScript recursion by C recursion. This
+means that any C code that logically needs to call the interpreter must
+instead push a continuation (including all necessary state information) on
+the PostScript execution stack, followed by the PostScript object to be
+executed, and then <em>return</em> to the interpreter. Unfortunately, since
+PostScript Level 2 introduces streams whose data source can be a PostScript
+procedure, any code that reads or writes stream data must be prepared to
+suspend itself, storing all necessary state in a continuation. There are
+some places where this is extremely awkward, such as the scanner/parser.
+
+<p>
+The use of continuations affects many places in the interpreter, and even
+some places in the graphics library. For example, when processing an image,
+one may need to call a PostScript procedure as part of mapping a CIE color
+to a device color. Ghostscript uses a variety of dodges to handle this: for
+example, in the case of CIE color mapping, all of the PostScript procedures
+are pre-sampled and the results cached. The Adobe implementation limits
+this kind of recursion to a fixed number of levels (5?): this would be
+another acceptable approach, but at this point it would require far more
+code restructuring than it would be worth.
+
+<p>
+A significant amount of the PostScript language implementation is in fact
+written in PostScript. Writing in PostScript leverages the C code for
+multi-threading, garbage collection, error handling, continuations for
+streams, etc., etc.; also, we have found PostScript in general more concise
+and easier to debug than C, mostly because of memory management issues. So
+given the choice, we tended to implement a feature in PostScript if it
+worked primarily with PostScript data structures, wasn't heavily used
+(example: font loading), or if it interacted with the stream or other
+callback machinery (examples: ReusableFileDecode streams, resourceforall).
+Often we would add non-standard PostScript operators for functions that had
+to run faster or that did more C-like things, such as the media matching
+algorithm for setpagedevice.
+
+</ul>
+
+<h4><a name="Main_program"></a>Main program</h4>
+
+<p>
+The main program of the interpreter is normally invoked from the command
+line, but it has an API as well. In fact, it has two APIs: one that
+recognizes the existence of multiple "interpreter instances" (although it
+currently provides a default instance, which almost all clients use), and a
+completely different one designed for Windows DLLs. These should be unified
+as soon as possible, since there are two steadily growing incompatible
+bodies of client code.
+
+<dl>
+
+<dt>
+Files:
+<dd>
+<a href="../src/gs.c">src/gs.c</a>,
+<a href="../src/gserver.c">src/gserver.c</a>,
+<a href="../src/iccinit0.c">src/iccinit0.c</a>,
+<a href="../src/iinit.c">src/iinit.c</a>,
+<a href="../src/iinit.h">src/iinit.h</a>,
+<a href="../src/imain.c">src/imain.c</a>,
+<a href="../src/imain.h">src/imain.h</a>,
+<a href="../src/imainarg.c">src/imainarg.c</a>,
+<a href="../src/imainarg.h">src/imainarg.h</a>,
+<a href="../src/iminst.h">src/iminst.h</a>,
+<a href="../src/main.h">src/main.h</a>.
+
+</dl>
+
+<h4><a name="Data_structures"></a>Data structures</h4>
+
+<p>
+The main data structures visible to the PostScript programmers are arrays,
+contexts, dictionaries, names, and stacks.
+
+<p>
+Arrays have no unusual properties. See under <a href="#Refs">Refs</a> below
+for more information about how array elements are stored.
+
+<p>
+Contexts are used to hold the interpreter state even in configurations that
+don't include the Display PostScript multiple context extension. Context
+switching is implemented by a complex cooperation of C and PostScript code.
+
+<p>
+Dictionaries have two special properties worth noting:
+
+<ul>
+
+<li>They use an optimized storage representation if all the keys are names,
+which is almost always the case.
+
+<li>They interact with a caching scheme used to accelerate name lookup in
+the interpreter.
+
+</ul>
+
+<p>
+Names are allocated in blocks. The characters and hash chains are stored
+separately from the lookup cache information, so that in the future, most of
+the former can be compiled into the executable and shared or put in ROM.
+(This is not actually done yet.)
+
+<p>
+As mentioned above, each stack is allocated as a linked list of blocks.
+However, for reasonable performance, operators must normally be able to
+access their operands and produce their results using indexing rather than
+an access procedure. This is implemented by ensuring that all the operands
+of an operator are in the topmost block of the stack, using guard entries
+that cause an internal error if the condition isn't met. See <a
+href="../src/iostack.h">src/iostack.h</a> for more details.
+
+<dl>
+
+<dt>
+General data structures:
+<dd>
+
+<dl>
+
+<dt>
+Contexts:
+<dd>
+<a href="../src/icontext.c">src/icontext.c</a>,
+<a href="../src/icontext.h">src/icontext.h</a>,
+<a href="../src/icstate.h">src/icstate.h</a>.
+
+<dt>
+Dictionaries:
+<dd>
+<a href="../src/iddict.h">src/iddict.h</a>,
+<a href="../src/idict.h">src/idict.h</a>,
+<a href="../src/idict.c">src/idict.c</a>,
+<a href="../src/idictdef.h">src/idictdef.h</a>.
+
+<dt>
+Names:
+<dd>
+<a href="../src/iname.c">src/iname.c</a>,
+<a href="../src/iname.h">src/iname.h</a>,
+<a href="../src/inamedef.h">src/inamedef.h</a>,
+<a href="../src/inameidx.h">src/inameidx.h</a>,
+<a href="../src/inames.h">src/inames.h</a>,
+<a href="../src/inamestr.h">src/inamestr.h</a>.
+
+<dt>
+Stacks:
+<dd>
+<a href="../src/isdata.h">src/isdata.h</a>,
+<a href="../src/istack.c">src/istack.c</a>,
+<a href="../src/istack.h">src/istack.h</a>,
+<a href="../src/istkparm.h">src/istkparm.h</a>.
+
+</dl>
+
+<dt>
+Specific stacks:
+<dd>
+
+<dl>
+
+<dt>
+Dictionary stack:
+<dd>
+<a href="../src/dstack.h">src/dstack.h</a>,
+<a href="../src/estack.h">src/estack.h</a>,
+<a href="../src/iddstack.h">src/iddstack.h</a>,
+<a href="../src/idsdata.h">src/idsdata.h</a>,
+<a href="../src/idstack.c">src/idstack.c</a>,
+<a href="../src/idstack.h">src/idstack.h</a>.
+
+<dt>
+Execution stack:
+<dd>
+<a href="../src/iesdata.h">src/iesdata.h</a>,
+<a href="../src/iestack.h">src/iestack.h</a>.
+
+<dt>
+Operand stack:
+<dd>
+<a href="../src/iosdata.h">src/iosdata.h</a>,
+<a href="../src/iostack.h">src/iostack.h</a>,
+<a href="../src/ostack.h">src/ostack.h</a>.
+
+</dl>
+
+</dl>
+
+<h4><a name="Interpreter_loop"></a>Interpreter loop</h4>
+
+<dl>
+
+<dt>
+Files:
+<dd>
+<a href="../src/interp.c">src/interp.c</a>,
+<a href="../src/interp.h">src/interp.h</a>.
+
+</dl>
+
+<h4><a name="Scanning_parsing"></a>Scanning/parsing</h4>
+
+<p>
+PostScript parsing consists essentially of token scanning, and is simple in
+principle. The scanner is complex because it must be able to suspend its
+operation at any time (i.e., between any two input characters) to allow an
+interpreter callout, if its input is coming from a procedure-based stream
+and the procedure must be called to provide more input data.
+
+<dl>
+
+<dt>
+Main scanner:
+<dd>
+<a href="../src/iscan.c">src/iscan.c</a>,
+<a href="../src/iscan.h">src/iscan.h</a>,
+<a href="../src/iscannum.c">src/iscannum.c</a>,
+<a href="../src/iscannum.h">src/iscannum.h</a>,
+<a href="../src/scanchar.h">src/scanchar.h</a>,
+<a href="../src/scantab.c">src/scantab.c</a>.
+
+<dt>
+Binary tokens:
+<dd>
+<a href="../src/btoken.h">src/btoken.h</a>,
+<a href="../src/ibnum.c">src/ibnum.c</a>,
+<a href="../src/ibnum.h">src/ibnum.h</a>,
+<a href="../src/inobtokn.c">src/inobtokn.c</a>,
+<a href="../src/iscanbin.c">src/iscanbin.c</a>,
+<a href="../src/iscanbin.h">src/iscanbin.h</a>.
+
+<dt>
+DSC parsing:
+<dd>
+<a href="../src/dscparse.c">src/dscparse.c</a>,
+<a href="../src/dscparse.h">src/dscparse.h</a>.
+
+</dl>
+
+<h4><a name="Standard_operators"></a>Standard operators</h4>
+
+<dl>
+
+<dt>
+Non-output-related:
+<dd>
+
+<dl>
+
+<dt>
+Filters:
+<dd>
+<a href="../src/ifilter.h">src/ifilter.h</a>,
+<a href="../src/ifilter2.h">src/ifilter2.h</a>,
+<a href="../src/ifrpred.h">src/ifrpred.h</a>,
+<a href="../src/ifwpred.h">src/ifwpred.h</a>,
+<a href="../src/istream.h">src/istream.h</a>,
+<a href="../src/zfbcp.c">src/zfbcp.c</a>,
+<a href="../src/zfdctd.c">src/zfdctd.c</a>,
+<a href="../src/zfdcte.c">src/zfdcte.c</a>,
+<a href="../src/zfdecode.c">src/zfdecode.c</a>,
+<a href="../src/zfilter.c">src/zfilter.c</a>,
+<a href="../src/zfilter2.c">src/zfilter2.c</a>,
+<a href="../src/zfilterx.c">src/zfilterx.c</a>,
+<a href="../src/zfmd5.c">src/zfmd5.c</a>,
+<a href="../src/zfarc4.c">src/zfarc4.c</a>,
+<a href="../src/zfproc.c">src/zfproc.c</a>,
+<a href="../src/zfrsd.c">src/zfrsd.c</a>,
+<a href="../src/zfzlib.c">src/zfzlib.c</a>.
+
+<dt>
+File and stream I/O:
+<dd>
+<a href="../src/files.h">src/files.h</a>,
+<a href="../src/itoken.h">src/itoken.h</a>,
+<a href="../src/zbseq.c">src/zbseq.c</a>,
+<a href="../src/zdscpars.c">src/zdscpars.c</a>,
+<a href="../src/zfile.c">src/zfile.c</a>,
+<a href="../src/zfileio.c">src/zfileio.c</a>,
+<a href="../src/ztoken.c">src/ztoken.c</a>.
+
+<dt>
+Data structures:
+<dd>
+<a href="../src/zarray.c">src/zarray.c</a>,
+<a href="../src/zdict.c">src/zdict.c</a>,
+<a href="../src/zgeneric.c">src/zgeneric.c</a>,
+<a href="../src/zpacked.c">src/zpacked.c</a>,
+<a href="../src/zstring.c">src/zstring.c</a>.
+
+<dt>
+Functions:
+<dd>
+<a href="../src/ifunc.h">src/ifunc.h</a>,
+<a href="../src/zfunc.c">src/zfunc.c</a>,
+<a href="../src/zfunc0.c">src/zfunc0.c</a>,
+<a href="../src/zfunc3.c">src/zfunc3.c</a>,
+<a href="../src/zfunc4.c">src/zfunc4.c</a>,
+
+<dt>
+Other:
+<dd>
+<a href="../src/ivmem2.h">src/ivmem2.h</a>,
+<a href="../src/zarith.c">src/zarith.c</a>,
+<a href="../src/zcontext.c">src/zcontext.c</a>,
+<a href="../src/zcontrol.c">src/zcontrol.c</a>,
+<a href="../src/zmath.c">src/zmath.c</a>,
+<a href="../src/zmatrix.c">src/zmatrix.c</a>,
+<a href="../src/zmisc.c">src/zmisc.c</a>,
+<a href="../src/zmisc1.c">src/zmisc1.c</a>,
+<a href="../src/zmisc2.c">src/zmisc2.c</a>,
+<a href="../src/zmisc3.c">src/zmisc3.c</a>,
+<a href="../src/zrelbit.c">src/zrelbit.c</a>,
+<a href="../src/zstack.c">src/zstack.c</a>,
+<a href="../src/ztype.c">src/ztype.c</a>,
+<a href="../src/zusparam.c">src/zusparam.c</a>,
+<a href="../src/zvmem.c">src/zvmem.c</a>,
+<a href="../src/zvmem2.c">src/zvmem2.c</a>.
+
+</dl>
+
+<dt>
+Output-related:
+<dd>
+
+<dl>
+
+<dt>
+Device management:
+<dd>
+<a href="../src/zdevcal.c">src/zdevcal.c</a>,
+<a href="../src/zdevice.c">src/zdevice.c</a>,
+<a href="../src/zdevice2.c">src/zdevice2.c</a>,
+<a href="../src/ziodev.c">src/ziodev.c</a>,
+<a href="../src/ziodev2.c">src/ziodev2.c</a>,
+<a href="../src/ziodevs.c">src/ziodevs.c</a>,
+<a href="../src/ziodevsc.c">src/ziodevsc.c</a>,
+<a href="../src/zmedia2.c">src/zmedia2.c</a>,
+<a href="../src/zdfilter.c">src/zdfilter.c</a>.
+
+<dt>
+Fonts and text:
+<dd>
+<a href="../src/bfont.h">src/bfont.h</a>,
+<a href="../src/ccfont.h">src/ccfont.h</a>,
+<a href="../src/iccfont.c">src/iccfont.c</a>,
+<a href="../src/icfontab.c">src/icfontab.c</a>,
+<a href="../src/ichar.h">src/ichar.h</a>,
+<a href="../src/ichar1.h">src/ichar1.h</a>,
+<a href="../src/icharout.h">src/icharout.h</a>,
+<a href="../src/icid.h">src/icid.h</a>,
+<a href="../src/ifcid.h">src/ifcid.h</a>,
+<a href="../src/ifont.h">src/ifont.h</a>,
+<a href="../src/ifont1.h">src/ifont1.h</a>,
+<a href="../src/ifont2.h">src/ifont2.h</a>,
+<a href="../src/ifont42.h">src/ifont42.h</a>,
+<a href="../src/zbfont.c">src/zbfont.c</a>,
+<a href="../src/zcfont.c">src/zcfont.c</a>,
+<a href="../src/zchar.c">src/zchar.c</a>,
+<a href="../src/zchar1.c">src/zchar1.c</a>,
+<a href="../src/zchar2.c">src/zchar2.c</a>,
+<a href="../src/zchar32.c">src/zchar32.c</a>,
+<a href="../src/zchar42.c">src/zchar42.c</a>,
+<a href="../src/zcharout.c">src/zcharout.c</a>,
+<a href="../src/zcharx.c">src/zcharx.c</a>,
+<a href="../src/zcid.c">src/zcid.c</a>,
+<a href="../src/zfcid.c">src/zfcid.c</a>,
+<a href="../src/zfcid0.c">src/zfcid0.c</a>,
+<a href="../src/zfcid1.c">src/zfcid1.c</a>,
+<a href="../src/zfcmap.c">src/zfcmap.c</a>,
+<a href="../src/zfont.c">src/zfont.c</a>,
+<a href="../src/zfont0.c">src/zfont0.c</a>,
+<a href="../src/zfont1.c">src/zfont1.c</a>,
+<a href="../src/zfont2.c">src/zfont2.c</a>,
+<a href="../src/zfont32.c">src/zfont32.c</a>,
+<a href="../src/zfont42.c">src/zfont42.c</a>.
+
+<dt>
+Color, pattern, and halftone:
+<dd>
+<a href="../src/icie.h">src/icie.h</a>,
+<a href="../src/icolor.h">src/icolor.h</a>,
+<a href="../src/icremap.h">src/icremap.h</a>,
+<a href="../src/icsmap.h">src/icsmap.h</a>,
+<a href="../src/iht.h">src/iht.h</a>,
+<a href="../src/ipcolor.h">src/ipcolor.h</a>,
+<a href="../src/zcie.c">src/zcie.c</a>,
+<a href="../src/zcolor.c">src/zcolor.c</a>,
+<a href="../src/zcolor1.c">src/zcolor1.c</a>,
+<a href="../src/zcolor2.c">src/zcolor2.c</a>,
+<a href="../src/zcrd.c">src/zcrd.c</a>,
+<a href="../src/zcsdevn.c">src/zcsdevn.c</a>,
+<a href="../src/zcsindex.c">src/zcsindex.c</a>,
+<a href="../src/zcspixel.c">src/zcspixel.c</a>,
+<a href="../src/zcssepr.c">src/zcssepr.c</a>,
+<a href="../src/zicc.c">src/zicc.c</a>,
+<a href="../src/zhsb.c">src/zhsb.c</a>,
+<a href="../src/zht.c">src/zht.c</a>,
+<a href="../src/zht1.c">src/zht1.c</a>,
+<a href="../src/zht2.c">src/zht2.c</a>,
+<a href="../src/zpcolor.c">src/zpcolor.c</a>,
+<a href="../src/zshade.c">src/zshade.c</a>,
+<a href="../src/ztrans.c">src/ztrans.c</a>.
+
+<dt>
+Images:
+<dd>
+<a href="../src/iimage.h">src/iimage.h</a>,
+<a href="../src/iimage2.h">src/iimage2.h</a>,
+<a href="../src/zimage.c">src/zimage.c</a>,
+<a href="../src/zimage2.c">src/zimage2.c</a>,
+<a href="../src/zimage3.c">src/zimage3.c</a>.
+
+<dt>
+Other graphics:
+<dd>
+<a href="../src/igstate.h">src/igstate.h</a>,
+<a href="../src/zdpnext.c">src/zdpnext.c</a>,
+<a href="../src/zdps.c">src/zdps.c</a>,
+<a href="../src/zdps1.c">src/zdps1.c</a>,
+<a href="../src/zgstate.c">src/zgstate.c</a>,
+<a href="../src/zpaint.c">src/zpaint.c</a>,
+<a href="../src/zpath.c">src/zpath.c</a>,
+<a href="../src/zpath1.c">src/zpath1.c</a>,
+<a href="../src/zrop.c">src/zrop.c</a>,
+<a href="../src/ztrap.c">src/ztrap.c</a>,
+<a href="../src/zupath.c">src/zupath.c</a>.
+
+</dl>
+
+<dt>
+Operator support:
+<dd>
+<a href="../src/oparc.h">src/oparc.h</a>,
+<a href="../src/opcheck.h">src/opcheck.h</a>,
+<a href="../src/opdef.h">src/opdef.h</a>,
+<a href="../src/oper.h">src/oper.h</a>,
+<a href="../src/opextern.h">src/opextern.h</a>.
+
+</dl>
+
+<h4><a name="Non_standard_operators"></a>Non-standard operators</h4>
+
+<p>
+The interpreter includes many non-standard operators. Most of these provide
+some part of the function of a standard operator, so that the standard
+operator itself can be implemented in PostScript: these are not of interest
+to users, and their function is usually obvious from the way they are used.
+However, some non-standard operators provide access to additional,
+non-standard facilities that users might want to know about, such as
+transparency, RasterOp, and in-memory rendering. These are documented at <a
+href="Language.htm#Additional_operators">Language.htm#Additional_operators</a>.
+
+<p>
+We don't document the complete set of non-standard operators here, because
+the set changes frequently. However, all non-standard operators are
+supposed to have names that begin with '.', so you can find them all by
+executing the following (Unix) command:
+
+<blockquote><pre>
+grep '{".[.]' src/[zi]*.c
+</pre></blockquote>
+
+<p>
+In addition to individual non-standard operators implemented in the same
+files as standard ones, there are several independent optional packages of
+non-standard operators. As with other non-standard operators, the names of
+all the operators in these packages begin with '.'. We list those packages
+here.
+
+<dl>
+
+<dt>
+<a href="../src/zdosio.c">src/zdosio.c</a>
+<dd>
+Provides access to PC hardware I/O through MS-DOS system calls. Probably no
+longer useful.
+
+<dt>
+<a href="../src/zdouble.c">src/zdouble.c</a>
+<dd>
+Provides "double" floating point arithmetic, using 8-byte strings to hold
+values. Developed under a contract; probably used only by the group that
+funded the development.
+
+<dt>
+<a href="../src/zsysvm.c">src/zsysvm.c</a>
+<dd>
+Provides operators for allocating objects in specific VM spaces,
+disregarding the current VM mode.
+
+<dt>
+<a href="../src/zccube.c">src/zccube.c</a>
+<dd>
+Provides an operator for building a color cube from an arbitrary tint
+transform, so that tint transforms can be applied from inside the
+graphics library without calling back to the PostScript interpreter.
+
+</dl>
+
+<h4><a name="Interpreter_support"></a>Interpreter support</h4>
+
+<p>
+Memory management (refs, GC, save/restore) -- see <a
+href="#PostScript_interpreter_extensions">below</a>.
+
+<dl>
+
+<dt>
+Miscellaneous support:
+<dd>
+<a href="../src/errors.h">src/errors.h</a>,
+<a href="../src/ghost.h">src/ghost.h</a>,
+<a href="../src/iconf.c">src/iconf.c</a>,
+<a href="../src/iconf.h">src/iconf.h</a>,
+<a href="../src/idparam.c">src/idparam.c</a>,
+<a href="../src/idparam.h">src/idparam.h</a>,
+<a href="../src/ilevel.h">src/ilevel.h</a>,
+<a href="../src/inouparm.c">src/inouparm.c</a>,
+<a href="../src/iparam.c">src/iparam.c</a>,
+<a href="../src/iparam.h">src/iparam.h</a>,
+<a href="../src/iparray.h">src/iparray.h</a>,
+<a href="../src/iutil.c">src/iutil.c</a>,
+<a href="../src/iutil.h">src/iutil.h</a>,
+<a href="../src/iutil2.c">src/iutil2.c</a>,
+<a href="../src/iutil2.h">src/iutil2.h</a>,
+<a href="../src/iutilasm.asm">src/iutilasm.asm</a>.
+
+</dl>
+
+<h4><a name="PostScript_code"></a>PostScript code</h4>
+
+<dl>
+
+<dt>
+Initialization and language support:
+<dd>
+
+<dl>
+
+<dt>
+All configurations:
+<dd>
+<a href="../lib/gs_init.ps">lib/gs_init.ps</a>,
+<a href="../lib/gs_statd.ps">lib/gs_statd.ps</a>.
+
+<dt>
+Level 2:
+<dd>
+<a href="../lib/gs_btokn.ps">lib/gs_btokn.ps</a>,
+<a href="../lib/gs_dps1.ps">lib/gs_dps1.ps</a>,
+<a href="../lib/gs_dps2.ps">lib/gs_dps2.ps</a>,
+<a href="../lib/gs_lev2.ps">lib/gs_lev2.ps</a>,
+<a href="../lib/gs_res.ps">lib/gs_res.ps</a>,
+<a href="../lib/gs_setpd.ps">lib/gs_setpd.ps</a>.
+
+<dt>
+LanguageLevel 3:
+<dd>
+<a href="../lib/gs_frsd.ps">lib/gs_frsd.ps</a>,
+<a href="../lib/gs_ll3.ps">lib/gs_ll3.ps</a>,
+<a href="../lib/gs_trap.ps">lib/gs_trap.ps</a>.
+
+<dt>
+Display PostScript:
+<dd>
+<a href="../lib/gs_dpnxt.ps">lib/gs_dpnxt.ps</a>,
+<a href="../lib/gs_dps.ps">lib/gs_dps.ps</a>.
+
+<dt>
+ICC color profiles:
+<dd>
+<a href="../lib/gs_icc.ps">lib/gs_icc.ps</a>.
+
+</dl>
+
+<dt>
+Font loading and support:
+<dd>
+
+<dl>
+
+<dt>
+Font name mapping:
+<dd>
+<a href="../lib/Fontmap">lib/Fontmap</a>,
+<a href="../lib/Fontmap.ATB">lib/Fontmap.ATB</a>,
+<a href="../lib/Fontmap.ATM">lib/Fontmap.ATM</a>,
+<a href="../lib/Fontmap.GS">lib/Fontmap.GS</a>,
+<a href="../lib/Fontmap.OS2">lib/Fontmap.OS2</a>,
+<a href="../lib/Fontmap.OSF">lib/Fontmap.OSF</a>,
+<a href="../lib/Fontmap.SGI">lib/Fontmap.SGI</a>,
+<a href="../lib/Fontmap.Sol">lib/Fontmap.Sol</a>,
+<a href="../lib/Fontmap.Ult">lib/Fontmap.Ult</a>,
+<a href="../lib/Fontmap.VMS">lib/Fontmap.VMS</a>.
+
+<dt>
+CIDFont name mapping:
+<dd>
+<a href="../lib/CIDFnmap">lib/CIDFnmap</a>,
+<a href="../lib/CIDFnmap.ARP">lib/CIDFnmap.ARP</a>,
+<a href="../lib/CIDFnmap.Bae">lib/CIDFnmap.Bae</a>,
+<a href="../lib/CIDFnmap.CJK">lib/CIDFnmap.CJK</a>,
+<a href="../lib/CIDFnmap.Koc">lib/CIDFnmap.Koc</a>,
+<a href="../lib/CIDFnmap.Ore">lib/CIDFnmap.Ore</a>,
+<a href="../lib/CIDFnmap.Sol">lib/CIDFnmap.Sol</a>,
+<a href="../lib/CIDFnmap.Win">lib/CIDFnmap.Win</a>,
+<a href="../lib/CIDFnmap.b5">lib/CIDFnmap.b5</a>,
+<a href="../lib/CIDFnmap.gb">lib/CIDFnmap.gb</a>,
+<a href="../lib/CIDFnmap.ksx">lib/CIDFnmap.ksx</a>,
+<a href="../lib/CIDFnmap.sj">lib/CIDFnmap.sj</a>.
+
+<dt>
+Generic:
+<dd>
+<a href="../lib/gs_ccfnt.ps">lib/gs_ccfnt.ps</a>,
+<a href="../lib/gs_fonts.ps">lib/gs_fonts.ps</a>.
+
+<dt>
+Type 1 and CFF:
+<dd>
+<a href="../lib/gs_cff.ps">lib/gs_cff.ps</a>,
+<a href="../lib/gs_diskf.ps">lib/gs_diskf.ps</a>,
+<a href="../lib/gs_type1.ps">lib/gs_type1.ps</a>.
+
+<dt>
+TrueType:
+<dd>
+<a href="../lib/gs_ttf.ps">lib/gs_ttf.ps</a>,
+<a href="../lib/gs_typ42.ps">lib/gs_typ42.ps</a>.
+
+<dt>
+CID-keyed:
+<dd>
+<a href="../lib/gs_cidcm.ps">lib/gs_cidcm.ps</a>,
+<a href="../lib/gs_cidfn.ps">lib/gs_cidfn.ps</a>,
+<a href="../lib/gs_cmap.ps">lib/gs_cmap.ps</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../lib/gs_kanji.ps">lib/gs_kanji.ps</a>,
+<a href="../lib/gs_pfile.ps">lib/gs_pfile.ps</a>,
+<a href="../lib/gs_typ32.ps">lib/gs_typ32.ps</a>.
+
+</dl>
+
+<dt>
+Encodings:
+<dd>
+
+<dl>
+
+<dt>
+Adobe-specified:
+<dd>
+<a href="../lib/gs_ce_e.ps">lib/gs_ce_e.ps</a>,
+<a href="../lib/gs_dbt_e.ps">lib/gs_dbt_e.ps</a>,
+<a href="../lib/gs_il1_e.ps">lib/gs_il1_e.ps</a>,
+<a href="../lib/gs_mex_e.ps">lib/gs_mex_e.ps</a>,
+<a href="../lib/gs_mro_e.ps">lib/gs_mro_e.ps</a>,
+<a href="../lib/gs_pdf_e.ps">lib/gs_pdf_e.ps</a>,
+<a href="../lib/gs_std_e.ps">lib/gs_std_e.ps</a>,
+<a href="../lib/gs_sym_e.ps">lib/gs_sym_e.ps</a>,
+<a href="../lib/gs_wan_e.ps">lib/gs_wan_e.ps</a>.
+
+<dt>
+Additional:
+<dd>
+<a href="../lib/gs_il2_e.ps">lib/gs_il2_e.ps</a>,
+<a href="../lib/gs_ksb_e.ps">lib/gs_ksb_e.ps</a>,
+<a href="../lib/gs_wl1_e.ps">lib/gs_wl1_e.ps</a>,
+<a href="../lib/gs_wl2_e.ps">lib/gs_wl2_e.ps</a>,
+<a href="../lib/gs_wl5_e.ps">lib/gs_wl5_e.ps</a>.
+
+<dt>
+Pseudo-encodings for internal use:
+<dd>
+<a href="../lib/gs_css_e.ps">lib/gs_css_e.ps</a>,
+<a href="../lib/gs_lgo_e.ps">lib/gs_lgo_e.ps</a>,
+<a href="../lib/gs_lgx_e.ps">lib/gs_lgx_e.ps</a>,
+<a href="../lib/gs_mgl_e.ps">lib/gs_mgl_e.ps</a>.
+
+</dl>
+
+<dt>
+Miscellaneous:
+<dd>
+
+<dl>
+
+<dt>
+Other support:
+<dd>
+<a href="../lib/gs_agl.ps">lib/gs_agl.ps</a>,
+<a href="../lib/gs_dscp.ps">lib/gs_dscp.ps</a>,
+<a href="../lib/gs_epsf.ps">lib/gs_epsf.ps</a>,
+<a href="../lib/gs_pdfwr.ps">lib/gs_pdfwr.ps</a>,
+<a href="../lib/gs_rdlin.ps">lib/gs_rdlin.ps</a>.
+
+<dt>
+X Windows icon bitmaps:
+<dd>
+<a href="../lib/gs_l.xbm">lib/gs_l.xbm</a>,
+<a href="../lib/gs_l.xpm">lib/gs_l.xpm</a>,
+<a href="../lib/gs_l_m.xbm">lib/gs_l_m.xbm</a>,
+<a href="../lib/gs_m.xbm">lib/gs_m.xbm</a>,
+<a href="../lib/gs_m.xpm">lib/gs_m.xpm</a>,
+<a href="../lib/gs_m_m.xbm">lib/gs_m_m.xbm</a>,
+<a href="../lib/gs_s.xbm">lib/gs_s.xbm</a>,
+<a href="../lib/gs_s.xpm">lib/gs_s.xpm</a>,
+<a href="../lib/gs_s_m.xbm">lib/gs_s_m.xbm</a>,
+<a href="../lib/gs_t.xbm">lib/gs_t.xbm</a>,
+<a href="../lib/gs_t.xpm">lib/gs_t.xpm</a>,
+<a href="../lib/gs_t_m.xbm">lib/gs_t_m.xbm</a>.
+
+<dt>
+Not currently used:
+<dd>
+<a href="../lib/gs_cmdl.ps">lib/gs_cmdl.ps</a>,
+<a href="../lib/gs_fform.ps">lib/gs_fform.ps</a>,
+<a href="../lib/gs_l2img.ps">lib/gs_l2img.ps</a>.
+
+</dl>
+
+</dl>
+
+<h3><a name="PDF_interpreter"></a>PDF interpreter</h3>
+
+<p>
+Ghostscript's PDF interpreter is written entirely in PostScript, because its
+data structures are the same as PostScript's, and it is much more convenient
+to manipulate PostScript-like data structures in PostScript than in C.
+There is definitely a performance cost, but apparently not a substantial
+one: we considered moving the main interpreter loop (read a token using
+slightly different syntax than PostScript, push it on the stack if literal,
+look it up in a special dictionary for execution if not) into C, but we did
+some profiling and discovered that this wasn't accounting for enough of the
+time to be worthwhile.
+
+<p>
+Until recently, there was essentially no C code specifically for the purpose
+of supporting PDF interpretation. The one major exception is the PDF 1.4
+transparency features, which we (but not Adobe) have made available to
+PostScript code.
+
+<p>
+In addition to patching the <b><tt>run</tt></b> operator to detect PDF
+files, the interpreter provides some procedures in <a
+href="../lib/pdf_main.ps">lib/pdf_main.ps</a> that are meant to be called
+from applications such as previewers.
+
+<dl>
+
+<dt>
+Files:
+<dd>
+<a href="../lib/pdf_base.ps">lib/pdf_base.ps</a>,
+<a href="../lib/pdf_draw.ps">lib/pdf_draw.ps</a>,
+<a href="../lib/pdf_font.ps">lib/pdf_font.ps</a>,
+<a href="../lib/pdf_main.ps">lib/pdf_main.ps</a>,
+<a href="../lib/pdf_ops.ps">lib/pdf_ops.ps</a>,
+<a href="../lib/pdf_sec.ps">lib/pdf_sec.ps</a>.
+
+</dl>
+
+<h3><a name="Build_process"></a>Build process</h3>
+
+<h4><a name="Makefile_structure"></a>Makefile structure</h4>
+
+<p>
+Ghostscript's makefiles embody a number of design decisions and assumptions
+that may not be obvious from a casual reading of the code.
+
+<ul>
+
+<li>All files are stored in subdirectories. The names of all subdirectories
+used in the build process are defined in the top-level makefiles for the
+various platforms: there are no "hard wired" directory names in any makefile
+rule. Subdirectory names in the makefiles are relative to the directory
+that is current at build time: normally this directory is the parent of the
+various subdirectories, and holds only a <b><tt>makefile</tt></b>, which in
+turn simply references the real top-level makefile in the source
+subdirectory.
+
+<li>All compiler and linker switches are likewise defined by macros, again
+preferably in the top-level platform makefile.
+
+<li>There is an absolute distinction between "source-like" subdirectories,
+which are read-only during the build process, and "object-like"
+subdirectories, all of whose contents are generated by the build process and
+which can be emptied (<b><tt>rm&nbsp;*</tt></b>) at any time with no bad
+effects. The source subdirectories are defined by macros named
+<b><tt>xxxSRCDIR</tt></b>.
+
+<li>Object subdirectories may distinguish further between those that hold
+the results of the build process that are needed at run time (i.e., that
+should be included in a run-time distribution), defined by
+<b><tt>BINDIR</tt></b>, and those that are not needed at run time, defined
+by <b><tt>xxxGENDIR</tt></b> and <b><tt>xxxOBJDIR</tt></b>. (The
+distinction between these is historical and probably no longer relevant.)
+
+<li>There may be multiple object subdirectories for different build
+configurations. On Unix, the <b><tt>obj</tt></b> and <b><tt>bin</tt></b>
+directories are used for normal production builds, the
+<b><tt>debugobj</tt></b> directory for debugging builds, and the
+<b><tt>pgobj</tt></b> directory for profiling builds; other platforms may
+use different conventions. The Unix makefiles support targets named
+<b><tt>debug</tt></b> and <b><tt>pg</tt></b> for debugging and profiling
+builds respectively; other platforms generally do not.
+
+<li>Makefiles will be maintained by hand. This requires editing the
+following makefile elements whenever the relevant source files changes:
+
+<ul>
+
+<li>Every header (.h) file must have a corresponding macro definition in a
+makefile. If <b><tt>abc.h</tt></b> #includes <b><tt>def.h</tt></b> and
+<b><tt>xyz.h</tt></b>, the definition must have the form
+
+<blockquote><pre>
+xyz_h=$(xxxSRCD)xyz.h $(def_h) $(xyz_h)
+</pre></blockquote>
+
+where <b><tt>xxxSRCD</tt></b> is the macro defining the relevant source
+directory (including a trailing '/'). Note that the '.' in the file name
+has been replaced by an underscore. Note also that the definition must
+follow all definitions it references, since some <b><tt>make</tt></b>
+programs expand macros in definitions at the time of definition rather than
+at the time of use.
+
+<li>Every .c file must have a corresponding rule in a makefile. If
+<b><tt>abc.c</tt></b> #includes <b><tt>def.h</tt></b> and
+<b><tt>lmn.h</tt></b>, the rule must have approximately the form
+
+<blockquote><pre>
+$(xxxOBJD)abc.$(OBJ) : $(xxxSRCD)abc.c $(def_h) $(lmn_h)
+ $(xxCC) $(xxO_)abc.$(OBJ) $(C_) $(xxxSRCD)abc.c
+</pre></blockquote>
+
+where <b><tt>xxxSRCD</tt></b> is as before; <b><tt>xxxOBJD</tt></b> is the
+relevant object directory; <b><tt>xxCC</tt></b> defines the name of the C
+compiler plus the relevant compilation switches; and <b><tt>xxO_</tt></b>
+and <b><tt>C_</tt></b> are macros used to bridge syntactic differences
+between different <b><tt>make</tt></b> programs.
+
+</ul>
+
+</ul>
+
+<p>
+The requirement to keep makefiles up to date by hand has been controversial.
+Two alternatives are generally proposed.
+
+<ul>
+
+<li>Programs like <b><tt>makedeps</tt></b>, which generate build rules
+automatically from the #include lists in C files. We have found such
+programs useless: they "wire in" specific, concrete directory names, not
+only for our own code but even for the system header files; they have to be
+run manually whenever code files are added, renamed, or deleted, or whenever
+the list of #includes in any file changes; and they cannot deal with
+different source files requiring different compilation switches.
+
+<li>MSVC-style "project" files. These are equally useless: they are not
+portable across different vendors' tools -- in fact, there may not even be a
+usable import/export facility to convert their data to or from text form --
+and they cannot combine configuration-independent data with
+configuration-specific data.
+
+</ul>
+
+<p>
+We have seriously considered writing our own build program in Tcl or Python
+that would eliminate these problems, or perhaps porting the tools developed
+by Digital's Vesta research project (if we can get access to them); however,
+either of these approaches would create potential portability problems of
+its own, not to mention difficulties in integrating with others' build
+systems.
+
+<p>
+In the meantime, to ease the pain for mortal users and developers on
+Unix platforms, we have adopted the standard autoconf tool to
+systematically generate an appropriate top-level makefile for the
+target system. As currently implemented, its use makes no deep changes
+to the Ghostscript build system, but rather generates a makefile, more
+or less the same as would be achieved by starting from a
+platform-specific toplevel makefile and hand-editing. The relevant
+autoconf sources are in <a
+href="../src/Makefile.in">src/Makefile.in</a>, and <a
+href="../src/configure.ac">configure.ac</a>. These sources are used in
+the release process to create a <a href="../configure">configure</a>
+script in the toplevel directory of releases. Also, there is an <a
+href="../autogen.sh">autogen.sh</a> script to automate the autoconf
+process somewhat. The names and locations of these files were chosen
+to be clear to those familiar with autoconf, even though they represent
+a slight departure from Ghostscript tradition.
+
+<p>
+For more information about makefiles:
+
+<ul>
+
+<li>For a detailed list of makefiles, and a discussion of makefile issues
+related to portability, see the <a href="#Makefiles">Makefiles</a> section
+below.
+
+<li>For more detailed information about editing configuration information in
+makefiles, see <a
+href="Make.htm#Makefile_overview">doc/Make.htm#Makefile_overview</a>.
+
+<li>For a complete example of adding a new driver to a makefile, see <a
+href="Drivers.htm#Adding_drivers">doc/Drivers.htm#Adding_drivers</a>.
+
+<li>For a few more notes on makefile coding conventions, see <a
+href="C-style.htm#Makefiles">doc/C-style.htm#Makefiles</a>.
+
+</ul>
+
+<h4><a name="dev_files"></a>.dev files</h4>
+
+<p>
+On top of the general conventions just described, Ghostscript's makefiles
+add a further layer of structure in order to support an open-ended set of
+fine-grained, flexible configuration options. Selecting an option (usually
+called a "module") for inclusion in the build may affect the build in many
+ways:
+
+<ul>
+
+<li>Almost always, it requires linking in some compiled code files.
+
+<li>It may require running some additional initialization procedures at
+startup.
+
+<li>It may require reading in some additional PostScript files at startup.
+For example, a Level 2 PostScript build requires support for PostScript
+resources and for setpagedevice, which are implemented in PostScript code.
+
+<li>It may require adding entries to a variety of internal tables that
+catalogue such things as drivers, IODevices, Function types, etc.
+
+<li>It may require that other particular modules be included. For example,
+the "PostScript Level 2" module requires the modules for various filters,
+color spaces, etc.
+
+<li>It may require <em>removing</em> some other (default) module from the
+build. For example, the core (Level 1) PostScript build has a "stub" for
+binary tokens, which are a Level 2 feature but are referenced by the core
+scanner: a Level 2 build must remove the stub. For more information about
+this, look for the string <b><tt>-replace</tt></b> in the makefiles and in
+<a href="../src/genconf.c">src/genconf.c</a>.
+
+</ul>
+
+<p>
+Each module is defined in the makefiles by rules that create a file named
+<b><em>xxx</em><tt>.dev</tt></b>. The dependencies of the rule include all
+the files that make up the module (compiled code files, PostScript files,
+etc.); the body of the rule creates the .dev file by writing the description
+of the module into it. A program called <b><tt>genconf</tt></b>, described
+in the next section, merges all the relevant .dev files together. For
+examples of .dev rules, see any of the Ghostscript makefiles.
+
+<p>
+Ultimately, a person must specify the root set of modules to include in a
+build (which of course may require other modules, recursively).
+Ghostscript's makefiles do this with a set of macros called
+<b><tt>FEATURE_DEVS</tt></b> and <b><tt>DEVICE_DEVS</tt>n</b>, defined in
+each top-level makefile, but nothing in the module machinery depends on
+this.
+
+<h4><a name="Generators"></a>Generators</h4>
+
+<p>
+Ghostscript's build procedure is somewhat unusual in that it compiles and
+then executes some support programs during the build process. These
+programs then generate data or source code that is used later on in the
+build.
+
+<p>
+The most important and complex of the generator programs is
+<b><tt>genconf</tt></b>. <b><tt>genconf</tt></b> merges all the .dev files
+that make up the build, and creates three or more output files used in later
+stages:
+
+<ul>
+
+<li><b><tt>gconfig.h</tt></b>, consisting mainly of macro calls, one call
+per "resource" making up the build, other than "resources" listed in the
+other output files.
+
+<li><b><tt>gconfigf.h</tt></b>, produced only for PostScript builds with
+compiled-in fonts, consisting of one macro call per font.
+
+<li>A linker control file whose name varies from one platform to another,
+containing the list of compiled code files to be linked.
+
+<li>If necessary, another linker control file, also varying between
+platforms, that contains other information for the linker such as the list
+of system libraries to be searched. (On Unix platforms, the two linker
+control functions are combined in a single file.)
+
+</ul>
+
+<dl>
+
+<dt>
+Source generators:
+<dd>
+
+<dl>
+
+<dt>
+<a href="../src/genarch.c">src/genarch.c</a>
+<dd>
+Creates a header file containing a variety of information about the hardware
+and compiler that isn't provided in any standard system header file. Always
+used.
+
+<dt>
+<a href="../src/genconf.c">src/genconf.c</a> (also generates non-source)
+<dd>
+Constructs header files and linker control files from the collection of
+options and modules that make up the build. See above. Always used.
+
+<dt>
+<a href="../src/genht.c">src/genht.c</a>
+<dd>
+Converts a PostScript halftone (in a particular constrained format) to a C
+data structure that can be compiled into an executable. Only used if any
+such halftones are included in the build.
+
+<dt>
+<a href="../src/geninit.c">src/geninit.c</a>
+<dd>
+Converts PostScript initialization files to C data structures that can be
+compiled into an executable. Only used when building a PostScript
+interpreter, and only if <b><tt>COMPILE_INITS</tt></b> was set to 1 in the
+makefile.
+
+</dl>
+
+<dt>
+Other generators:
+<dd>
+
+<dl>
+
+<dt>
+<a href="../src/echogs.c">src/echogs.c</a>
+<dd>
+Implements a variety of shell-like functions to get around quirks,
+limitations, and omissions in the shells on various platforms. Always used.
+
+<dt>
+<a href="../src/genconf.c">src/genconf.c</a> (also generates source)
+<dd>
+See above.
+
+<dt>
+<a href="../src/gendev.c">src/gendev.c</a> (not used)
+<dd>
+Was intended as a replacement for <b><tt>genconf</tt></b>, but was never
+completed.
+
+</dl>
+
+</dl>
+
+<h4><a name="Build_support"></a>Support</h4>
+
+<p>
+There are a number of programs, scripts, and configuration files that exist
+only for the sake of the build process.
+
+<dl>
+
+<dt>
+Files for PC environments:
+<dd>
+<a href="../src/gswin.icx">src/gswin.icx</a>,
+<a href="../src/gswin16.icx">src/gswin16.icx</a>,
+<a href="../src/bcc32.cfg">src/bcc32.cfg</a>,
+<a href="../src/cp.bat">src/cp.bat</a>,
+<a href="../src/cp.cmd">src/cp.cmd</a>,
+<a href="../src/dw32c.def">src/dw32c.def</a>,
+<a href="../src/dwmain.rc">src/dwmain.rc</a>,
+<a href="../src/dwmain16.def">src/dwmain16.def</a>,
+<a href="../src/dwmain32.def">src/dwmain32.def</a>,
+<a href="../src/dwsetup.def">src/dwsetup.def</a>,
+<a href="../src/dwsetup.rc">src/dwsetup.rc</a>,
+<a href="../src/dwuninst.def">src/dwuninst.def</a>,
+<a href="../src/dwuninst.rc">src/dwuninst.rc</a>,
+<a href="../src/gs16spl.def">src/gs16spl.def</a>,
+<a href="../src/gs16spl.rc">src/gs16spl.rc</a>,
+<a href="../src/gsdll2.def">src/gsdll2.def</a>,
+<a href="../src/gsdll2.rc">src/gsdll2.rc</a>,
+<a href="../src/gsdll32.def">src/gsdll32.def</a>,
+<a href="../src/gsdll32.rc">src/gsdll32.rc</a>,
+<a href="../src/gsdll32w.lnk">src/gsdll32w.lnk</a>,
+<a href="../src/gsos2.def">src/gsos2.def</a>,
+<a href="../src/gsos2.icx">src/gsos2.icx</a>,
+<a href="../src/gsos2.rc">src/gsos2.rc</a>,
+<a href="../src/gspmdrv.def">src/gspmdrv.def</a>,
+<a href="../src/gspmdrv.icx">src/gspmdrv.icx</a>,
+<a href="../src/gspmdrv.rc">src/gspmdrv.rc</a>,
+<a href="../src/gswin.rc">src/gswin.rc</a>,
+<a href="../src/gswin32.rc">src/gswin32.rc</a>,
+<a href="../src/gswin386.rc">src/gswin386.rc</a>,
+<a href="../src/mv.bat">src/mv.bat</a>,
+<a href="../src/mv.cmd">src/mv.cmd</a>,
+<a href="../src/rm.bat">src/rm.bat</a>,
+<a href="../src/rm.cmd">src/rm.cmd</a>,
+<a href="../src/turboc.cfg">src/turboc.cfg</a>.
+
+<dt>
+Files for MacOS:
+<dd>
+<a href="../lib/Info-macos.plist">lib/Info-macos.plist</a>.
+
+<dt>
+Files for OpenVMS:
+<dd>
+<a href="../src/append_l.com">src/append_l.com</a>,
+<a href="../src/copy_one.com">src/copy_one.com</a>,
+<a href="../src/rm_all.com">src/rm_all.com</a>,
+<a href="../src/rm_one.com">src/rm_one.com</a>.
+
+<dt>
+Other files:
+<dd>
+<a href="../src/bench.c">src/bench.c</a>,
+<a href="../src/catmake">src/catmake</a>,
+<a href="../src/ccgs">src/ccgs</a>,
+<a href="../src/instcopy">src/instcopy</a>.
+
+</dl>
+
+<h3><a name="Utilities"></a>Utilities</h3>
+
+<p>
+Ghostscript comes with many utilities for doing things like viewing bitmap
+files and converting between file formats. Some of these are written in
+PostScript, some as scripts, and some as scripts that invoke special
+PostScript code.
+
+<h4><a name="Utilities_in_PostScript"></a>Utilities in PostScript</h4>
+
+<p>
+These are all documented in <a href="Psfiles.htm">doc/Psfiles.htm</a>, q.v.
+
+<h4><a name="Utility_scripts"></a>Utility scripts</h4>
+
+<p>
+Many of these scripts come in both Unix and MS-DOS (<b><tt>.bat</tt></b>
+versions; some also have an OS/2 (<b><tt>.cmd</tt></b>) version. The choice
+of which versions are provided is historical and irregular. These scripts
+should all be documented somewhere, but currently, many of them have man
+pages, a few have their own documentation in the doc directory, and some
+aren't documented at all.
+
+<dl>
+
+<dt>
+Script files without PC versions:
+<dd>
+<a href="../lib/afmdiff.awk">lib/afmdiff.awk</a>,
+<a href="../lib/dvipdf">lib/dvipdf</a>,
+<a href="../lib/fixmswrd.pl">lib/fixmswrd.pl</a>,
+<a href="../lib/lprsetup.sh">lib/lprsetup.sh</a>,
+<a href="../lib/pfbtopfa">lib/pfbtopfa</a>,
+<a href="../lib/pj-gs.sh">lib/pj-gs.sh</a>,
+<a href="../lib/pphs">lib/pphs</a>,
+<a href="../lib/printafm">lib/printafm</a>,
+<a href="../lib/pv.sh">lib/pv.sh</a>,
+<a href="../lib/sysvlp.sh">lib/sysvlp.sh</a>,
+<a href="../lib/unix-lpr.sh">lib/unix-lpr.sh</a>,
+<a href="../lib/wftopfa">lib/wftopfa</a>.
+
+<dt>
+Script files with PC versions:
+<dd>
+<a href="../lib/bdftops">lib/bdftops</a>,
+<a href="../lib/bdftops.bat">lib/bdftops.bat</a>,
+<a href="../lib/bdftops.cmd">lib/bdftops.cmd</a>,
+<a href="../lib/eps2eps">lib/eps2eps</a>,
+<a href="../lib/eps2eps.bat">lib/eps2eps.bat</a>,
+<a href="../lib/eps2eps.cmd">lib/eps2eps.cmd</a>,
+<a href="../lib/font2c">lib/font2c</a>,
+<a href="../lib/font2c.bat">lib/font2c.bat</a>,
+<a href="../lib/font2c.cmd">lib/font2c.cmd</a>,
+<a href="../lib/gsbj">lib/gsbj</a>,
+<a href="../lib/gsbj.bat">lib/gsbj.bat</a>,
+<a href="../lib/gsdj">lib/gsdj</a>,
+<a href="../lib/gsdj.bat">lib/gsdj.bat</a>,
+<a href="../lib/gsdj500">lib/gsdj500</a>,
+<a href="../lib/gsdj500.bat">lib/gsdj500.bat</a>,
+<a href="../lib/gslj">lib/gslj</a>,
+<a href="../lib/gslj.bat">lib/gslj.bat</a>,
+<a href="../lib/gslp">lib/gslp</a>,
+<a href="../lib/gslp.bat">lib/gslp.bat</a>,
+<a href="../lib/gsnd">lib/gsnd</a>,
+<a href="../lib/gsnd.bat">lib/gsnd.bat</a>,
+<a href="../lib/pdf2dsc">lib/pdf2dsc</a>,
+<a href="../lib/pdf2dsc.bat">lib/pdf2dsc.bat</a>,
+<a href="../lib/pdf2ps">lib/pdf2ps</a>,
+<a href="../lib/pdf2ps.bat">lib/pdf2ps.bat</a>,
+<a href="../lib/pdf2ps.cmd">lib/pdf2ps.cmd</a>,
+<a href="../lib/pdfopt">lib/pdfopt</a>,
+<a href="../lib/pdfopt.bat">lib/pdfopt.bat</a>,
+<a href="../lib/pf2afm">lib/pf2afm</a>,
+<a href="../lib/pf2afm.bat">lib/pf2afm.bat</a>,
+<a href="../lib/pf2afm.cmd">lib/pf2afm.cmd</a>,
+<a href="../lib/ps2ascii">lib/ps2ascii</a>,
+<a href="../lib/ps2ascii.bat">lib/ps2ascii.bat</a>,
+<a href="../lib/ps2ascii.cmd">lib/ps2ascii.cmd</a>,
+<a href="../lib/ps2epsi">lib/ps2epsi</a>,
+<a href="../lib/ps2epsi.bat">lib/ps2epsi.bat</a>,
+<a href="../lib/ps2epsi.cmd">lib/ps2epsi.cmd</a>,
+<a href="../lib/ps2pdf">lib/ps2pdf</a>,
+<a href="../lib/ps2pdf.bat">lib/ps2pdf.bat</a>,
+<a href="../lib/ps2pdf.cmd">lib/ps2pdf.cmd</a>,
+<a href="../lib/ps2pdf12">lib/ps2pdf12</a>,
+<a href="../lib/ps2pdf12.bat">lib/ps2pdf12.bat</a>,
+<a href="../lib/ps2pdf12.cmd">lib/ps2pdf12.cmd</a>,
+<a href="../lib/ps2pdf13">lib/ps2pdf13</a>,
+<a href="../lib/ps2pdf13.bat">lib/ps2pdf13.bat</a>,
+<a href="../lib/ps2pdf13.cmd">lib/ps2pdf13.cmd</a>,
+<a href="../lib/ps2pdf14">lib/ps2pdf14</a>,
+<a href="../lib/ps2pdf14.bat">lib/ps2pdf14.bat</a>,
+<a href="../lib/ps2pdf14.cmd">lib/ps2pdf14.cmd</a>,
+<a href="../lib/ps2pdfwr">lib/ps2pdfwr</a>,
+<a href="../lib/ps2pdfxx.bat">lib/ps2pdfxx.bat</a>,
+<a href="../lib/ps2ps">lib/ps2ps</a>,
+<a href="../lib/ps2ps.bat">lib/ps2ps.bat</a>,
+<a href="../lib/ps2ps.cmd">lib/ps2ps.cmd</a>.
+
+<dt>
+Script files with only PC versions:
+<dd>
+<a href="../lib/gsndt.bat">lib/gsndt.bat</a>,
+<a href="../lib/gssetgs.bat">lib/gssetgs.bat</a>,
+<a href="../lib/gst.bat">lib/gst.bat</a>,
+<a href="../lib/gstt.bat">lib/gstt.bat</a>,
+<a href="../lib/lp386.bat">lib/lp386.bat</a>,
+<a href="../lib/lp386r2.bat">lib/lp386r2.bat</a>,
+<a href="../lib/lpgs.bat">lib/lpgs.bat</a>,
+<a href="../lib/lpr2.bat">lib/lpr2.bat</a>,
+<a href="../lib/pftogsf.bat">lib/pftogsf.bat</a>,
+<a href="../lib/wmakebat.bat">lib/wmakebat.bat</a>.
+
+</dl>
+
+<hr>
+
+<h2><a name="Memory_management"></a>Memory management</h2>
+
+<h3><a name="Memory_manager_architecture"></a>Memory manager architecture</h3>
+
+<p>
+In many environments, the memory manager is a set of library facilities that
+implicitly manage the entire address space in a homogenous manner.
+Ghostscript's memory manager architecture has none of these properties:
+
+<ul>
+
+<li>Rather than a single library accessed as procedures, Ghostscript
+includes multiple allocator types, each of which in turn may have multiple
+instances (allocators). Allocators are 'objects' with a substantial set of
+virtual functions.
+
+<li>Rather than managing the entire address space, each allocator manages a
+storage pool, which it may or may not be able to expand or reduce by calling
+on a 'parent' allocator.
+
+<li>Rather than a single genus of untyped storage blocks, Ghostscript's
+allocators provide two genera -- type-tagged 'objects', and 'strings' --
+with substantially different properties.
+
+</ul>
+
+<h4><a name="Objects_vs_strings"></a>Objects vs strings</h4>
+
+<p>
+As noted above, allocators provide two different storage genera.
+
+<p>
+Objects:
+
+<ul>
+<li>Are aligned in storage to satisfy the most stringent alignment
+requirement imposed by the CPU or compiler;
+<li>Can be referenced only by pointers to their start, not to any internal
+location, unless special arrangements are made;
+<li>May contain pointers to other objects, or to strings;
+<li>Have an associated <em>structure descriptor</em> that specifies their
+size (usually) and the location of any pointers contained within them.
+</ul>
+
+<p>
+Given a pointer to an object, the allocator that allocated it must be able
+to return the object's size and the pointer to its structure descriptor.
+(It is up to the client to know what allocator allocated an object.)
+
+<p>
+Strings:
+
+<ul>
+<li>Are not aligned in storage;
+<li>Can be referenced by pointers (consisting of a starting address and a
+length) to any substring, starting anywhere within the string;
+<li>May not contain pointers;
+<li>Do not have a structure descriptor.
+</ul>
+
+<p>
+The object/string distinction reflects a space/capability tradeoff. The
+per-object space overhead of the standard type of allocator is typically 12
+bytes; this is too much to impose on every string of a few bytes. On the
+other hand, restricting object pointers to reference the start of the object
+currently makes object garbage collection and compaction more
+space-efficient. If we were to redesign the standard allocator, we would
+probably opt for a different design in which strings were allocated within
+container objects of a few hundred bytes, and pointers into the middle of
+all objects were allowed.
+
+<h4><a name="Structure_descriptors"></a>Structure descriptors</h4>
+
+<p>
+Every object allocated by a Ghostscript allocator has an associated
+structure descriptor, which the caller provides when allocating the object.
+The structure descriptor serves several purposes:
+
+<ul>
+<li>Specifying the size of the object for allocation;
+<li>Providing pointer-enumeration and pointer-relocation procedures for
+the garbage collector;
+<li>Providing an optional finalization procedure to be called when the
+object is freed (either explicitly or automatically).
+</ul>
+
+<p>
+Structure descriptors are read-only, and are normally defined statically
+using one of the large set of <b><tt>gs_private_st_</tt></b> or
+<b><tt>gs_public_st_</tt></b> macros in <a
+href="../src/gsstruct.h">src/gsstruct.h</a>.
+
+<p>
+While the structure descriptor normally specifies the size of the object,
+one can also allocate an array of bytes or objects, whose size is a multiple
+of the size in the descriptor. For this reason, every object stores its
+size as well as a reference to its descriptor.
+
+<p>
+Because the standard Ghostscript garbage collector is conservative and can
+move objects, every object allocated by a Ghostscript allocator must have an
+accurate structure descriptor. If you define a new type of object
+(structure) that will be allocated in storage managed by Ghostscript, you
+<em>must</em> create an accurate descriptor for it, and use that descriptor
+to allocate it. The process of creating accurate descriptors for all
+structures was long and painful, and accounted for many hard-to-diagnose
+bugs.
+
+<p>
+By convention, the structure descriptor for structure type
+<b><tt>xxx_t</tt></b> is named <b><tt>st_xxx</tt></b> (this is preferred),
+or occasionally <b><tt>st_xxx_t</tt></b>.
+
+<p>
+Note that a structure descriptor is only required for objects allocated by
+the Ghostscript allocator. A structure type <b><tt>xxx_t</tt></b> does not
+require a structure descriptor if instances of that type are used
+<em>only</em> in the following ways:
+
+<ul>
+
+<li>Instances are allocated only on the C stack, e.g., as
+<b><tt>xxx_t&nbsp;xxx1,&nbsp;xxx2;</tt></b>, or on the C heap, with
+<b><tt>malloc</tt></b> or through the Ghostscript "wrapper" defined in <a
+href="../src/gsmalloc.h">src/gsmalloc.h</a>.
+
+<li>Pointers to instances are not stored in places where the garbage
+collector will try to trace the pointer.
+
+<li>Code never attempts to get the structure type or size of an instance
+through the allocator API.
+
+</ul>
+
+<p>
+In general, structures without descriptors are problem-prone, and are
+deprecated; in new code, they should only be used if the structure is
+confined to a single .c file and its instances are only allocated on the C
+stack.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsstruct.h">src/gsstruct.h</a>,
+<a href="../src/gsstype.h">src/gsstype.h</a>.
+</dl>
+
+<h4><a name="Garbage_collection"></a>Garbage collection</h4>
+
+<p>
+The allocator architecture is designed to support compacting garbage
+collection. Every object must be able to enumerate all the pointers it
+contains, both for tracing and for relocation. As noted just above, the
+structure descriptor provides procedures that do this.
+
+<p>
+Whether or not a particular allocator type actually provides a garbage
+collector is up to the allocator: garbage collection is invoked through a
+virtual procedure. In practice, however, there are only two useful garbage
+collectors for Ghostscript's own allocator:
+
+<ul>
+<li>The "real" garbage collector associated with the PostScript interpreter,
+described <a href="#Interpreter_GC">below</a>;
+<li>A "non" garbage collector that only merges adjacent free blocks.
+</ul>
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsgc.h">src/gsgc.h</a>,
+<a href="../src/gsnogc.c">src/gsnogc.c</a>,
+<a href="../src/gsnogc.h">src/gsnogc.h</a>.
+</dl>
+
+<h4><a name="Movability"></a>Movability</h4>
+
+<p>
+As just noted, objects are normally movable by the garbage collector.
+However, some objects must be immovable, usually because some other piece of
+software must retain pointers to them. The allocator API includes
+procedures for allocating both movable (default) and immovable objects.
+Note, however, that even immovable objects must be traceable (have a
+structure descriptor), and may be freed, by the garbage collector.
+
+<h4><a name="Parent_hierarchy"></a>Parent hierarchy</h4>
+
+<p>
+When an allocator needs to add memory to the pool that it manages, it
+requests the memory from its <em>parent</em> allocator. Every allocator has
+a pointer to its parent; multiple allocators may share a single parent. The
+ultimate ancestor of all allocators that can expand their pool dynamically
+is an allocator that calls <b><tt>malloc</tt></b>, described <a
+href="#malloc">below</a>. However, especially in embedded environments, an
+allocator may be limited to a fixed-size pool assigned to it when it is
+created.
+
+<h4><a name="Allocator_API"></a>Allocator API</h4>
+
+In summary, the allocator API provides the following principal operations:
+
+<ul>
+<li>Allocate and free movable (default) or immovable objects and strings.
+<li>Return the structure type and size of an object.
+<li>Resize (shrink or grow) movable objects and strings, preserving
+the contents insofar as possible.
+<li>Report the size of the managed pool, and how much of it is in use.
+<li>Register and unregister root pointers for the garbage collector.
+<li>Free the allocator itself.
+<li>Consolidate adjacent free blocks to reduce fragmentation.
+</ul>
+
+<p>
+For details, see <a href="../src/gsmemory.h">src/gsmemory.h</a>.
+
+<p>
+The allocator API also includes one special hook for the PostScript
+interpreter: the concept of stable allocators. See the section on <a
+href="#save_forgetsave_restore"><b><tt>save</tt></b> and
+<b><tt>restore</tt></b></a> below for details.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsmemraw.h">src/gsmemraw.h</a>,
+<a href="../src/gsmemory.c">src/gsmemory.c</a>,
+<a href="../src/gsmemory.h">src/gsmemory.h</a>,
+<a href="../src/gsstruct.h">src/gsstruct.h</a>,
+<a href="../src/gsstype.h">src/gsstype.h</a>.
+</dl>
+
+<h3><a name="Freeing_storage"></a>Freeing storage</h3>
+
+<p>
+Ghostscript's memory management architecture provides three different ways
+to free objects: explicitly, by reference counting, or by garbage
+collection. They provide different safety / performance / convenience
+tradeoffs; we believe that all three are necessary.
+
+<p>
+Objects are always freed as a whole; strings may be freed piecemeal.
+
+<p>
+An object may have an associated finalization procedure, defined in the
+structure descriptor. This procedure is called just before the object is
+freed, independent of which method is being used to free the object. A few
+types of objects have a virtual finalization procedure as well: the
+finalization procedure defined in the descriptor simply calls the one in the
+object.
+
+<h4><a name="Explicit_freeing"></a>Explicit freeing</h4>
+
+<p>
+Objects and strings may be freed explicitly, using the
+<b><tt>gs_free_</tt></b> virtual procedures in the allocator API. It is up
+to the client to ensure that all allocated objects are freed at most once,
+and that there are no dangling pointers.
+
+<p>
+Explicit freeing is the fastest method, but is the least convenient and
+least safe. It is most appropriate when storage is freed in the same
+procedure where it is allocated, or for storage that is known to be
+referenced by only one pointer.
+
+<h4><a name="Reference_counting"></a>Reference counting</h4>
+
+<p>
+Objects may be managed by reference counting. When an object is allocated,
+its reference count may be set to 0 or 1. Subsequently, when the reference
+count is decremented to 0, the object is freed.
+
+<p>
+The reference counting machinery provides its own virtual finalization
+procedure for all reference-counted objects. The machinery calls this
+procedure when it is about to free the object (but not when the object is
+freed in any other way, which is probably a design bug). This is in
+addition to (and called before) any finalization procedure associated with
+the object type.
+
+<p>
+Reference counting is as fast as explicit freeing, but takes more space in
+the object. It is most appropriate for relatively large objects which are
+referenced only from a small set of pointers. Note that reference counting
+cannot free objects that are involved in a pointer cycle (e.g., A -> B -> C
+-> A).
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsrefct.h">src/gsrefct.h</a>.
+</dl>
+
+<h4><a name="Real_garbage_collection"></a>(Real) garbage collection</h4>
+
+<p>
+Objects and strings may be freed automatically by a garbage collector. See
+<a href="#Interpreter_GC">below</a>.
+
+<h3><a name="Special_implementations"></a>Special implementations</h3>
+
+<h4><a name="malloc"></a>malloc</h4>
+
+<p>
+As mentioned <a href="#Parent_hierarchy">above</a>, the ultimate ancestor of
+all allocators with an expandable pool is one that calls
+<b><tt>malloc</tt></b>.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsmalloc.h">src/gsmalloc.h</a>,
+<a href="../src/gsmalloc.c">src/gsmalloc.c</a>.
+</dl>
+
+<h4><a name="Locking"></a>Locking</h4>
+
+<p>
+In a multi-threaded environment, if an allocator must be callable from
+multiple threads (for example, if it is used to allocate structures in one
+thread that are passed to, and freed by, another thread), the allocator must
+provide mutex protection. Ghostscript provides this capability in the form
+of a <em>wrapper</em> allocator, that simply forwards all calls to a
+<em>target</em> allocator under protection of a mutex. Using the wrapper
+technique, any allocator can be made thread-safe.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsmemlok.h">src/gsmemlok.h</a>,
+<a href="../src/gsmemlok.c">src/gsmemlok.c</a>.
+</dl>
+
+<h4><a name="Retrying"></a>Retrying</h4>
+
+<p>
+In an embedded environment, job failure due to memory exhaustion is very
+undesirable. Ghostscript provides a wrapper allocator that, when an
+allocation attempt fails, calls a client-provided procedure that can attempt
+to free memory, then ask for the original allocation to be retried. For
+example, such a procedure can wait for a queue to empty, or can free memory
+occupied by caches.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsmemret.h">src/gsmemret.h</a>,
+<a href="../src/gsmemret.c">src/gsmemret.c</a>.
+</dl>
+
+<h3><a name="Standard_implementation"></a>Standard implementation</h3>
+
+<p>
+The standard Ghostscript allocator gets storage from its parent (normally
+the <b><tt>malloc</tt></b> allocator) in large blocks called
+<em>chunks</em>, and then allocates objects up from the low end and strings
+down from the high end. Large objects or strings are allocated in their own
+chunk.
+
+<p>
+The standard allocator maintains a set of free-block lists for small object
+sizes, one list per size (rounded up to the word size), plus a free-block
+list for large objects (but not for objects so large that they get their own
+chunk: when such an object is freed, its chunk is returned to the parent).
+The lists are not sorted; adjacent blocks are only merged if needed.
+
+<p>
+While the standard allocator implements the generic allocator API, and is
+usable with the library alone, it includes a special hook for the PostScript
+interpreter to aid in the efficient allocation of PostScript composite
+objects (arrays and dictionaries). See the section on <a
+href="#Refs">Refs</a> below for details.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/gsalloc.c">src/gsalloc.c</a>,
+<a href="../src/gsalloc.h">src/gsalloc.h</a>,
+<a href="../src/gxalloc.h">src/gxalloc.h</a>,
+<a href="../src/gxobj.h">src/gxobj.h</a>.
+</dl>
+
+<h3><a name="PostScript_interpreter_extensions"></a>PostScript interpreter extensions</h3>
+
+<p>
+The PostScript interpreter uses an allocator that extends the graphic
+library's standard allocator to handle PostScript objects,
+<b><tt>save</tt></b> and <b><tt>restore</tt></b>, and real garbage
+collection.
+
+<h4><a name="Refs"></a>Refs (PostScript "objects")</h4>
+
+<p>
+Ghostscript represents what the PLRM calls PostScript "objects" using a
+structure called a <b><tt>ref</tt></b>, defined in <a
+href="../src/iref.h">src/iref.h</a>; packed refs, used for the elements of
+packed arrays, are defined in <a href="../src/ipacked.h">src/ipacked.h</a>.
+See those files for detailed information.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/ipacked.h">src/ipacked.h</a>,
+<a href="../src/iref.h">src/iref.h</a>.
+</dl>
+
+<p>
+The PLRM calls for two types of "virtual memory" (VM) space: global and
+local. Ghostscript adds a third space, <em>system</em> VM, whose lifetime
+is an entire session -- i.e., it is effectively "permanent". All three
+spaces are subject to garbage collection. There is a separate allocator
+instance for each VM space (actually, two instances each for global and
+local spaces; see <a href="#save_forgetsave_restore">below</a>). In a
+system with multiple contexts and multiple global or local VMs, each global
+or local VM has its own allocator instance(s).
+
+<p>
+Refs that represent PostScript composite objects, and therefore include
+pointers to stored data, include a 2-bit VM space tag to indicate in which
+VM the object data are stored. In addition to system, global, and local VM,
+there is a tag for "foreign" VM, which means that the memory is not managed
+by a Ghostscript allocator at all. Every store into a composite object must
+check for <b><tt>invalidaccess</tt></b>: the VM space tag values are chosen
+to help make this check efficient. See <a
+href="../src/ivmspace.h">src/ivmspace.h</a>, <a
+href="../src/iref.h">src/iref.h</a>, and <a
+href="../src/store.h">src/store.h</a> for details.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/ivmspace.h">src/ivmspace.h</a>.
+</dl>
+
+<p>
+PostScript composite objects (arrays and dictionaries) are usually small.
+Using a separate memory manager object for each composite object would waste
+a lot of space for object headers. Therefore, the interpreter's memory
+manager packs multiple composite objects (also called "ref-containing
+objects") into a single memory manager object, similar to the way the memory
+manager packs multiple objects into a chunk (see <a
+href="#Standard_implementation">above</a>). See <a
+href="../src/gxalloc.h">src/gxalloc.h</a> for details. This memory manager
+object has a structure descriptor, like all other memory manager objects.
+
+<p>
+Note that the <b><tt>value.pdict</tt></b>, <b><tt>value.refs</tt></b>, or
+<b><tt>value.packed</tt></b> member of a ref must point to a PostScript
+composite object, and therefore can point into the middle of a memory
+manager object. This requires special handling by the garbage collector (<a
+href="#Interpreter_GC">q.v.</a>).
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/ialloc.c">src/ialloc.c</a>,
+<a href="../src/ialloc.h">src/ialloc.h</a>,
+<a href="../src/iastate.h">src/iastate.h</a>,
+<a href="../src/iastruct.h">src/iastruct.h</a>,
+<a href="../src/ilocate.c">src/ilocate.c</a>,
+<a href="../src/imemory.h">src/imemory.h</a>,
+<a href="../src/istruct.h">src/istruct.h</a>.
+</dl>
+
+<h4><a name="save_forgetsave_restore"></a>save/.forgetsave/restore</h4>
+
+<p>
+In addition to <b><tt>save</tt></b> and <b><tt>restore</tt></b>, Ghostscript
+provides a <b><tt>.forgetsave</tt></b> operator that makes things as though
+a given <b><tt>save</tt></b> had never happened. (In data base terminology,
+<b><tt>save</tt></b> is "begin transaction", <b><tt>restore</tt></b> is
+"abort transaction", and <b><tt>.forgetsave</tt></b> is "end/commit
+transaction"). <b><tt>.forgetsave</tt></b> was implemented for a specific
+commercial customer (who may no longer even be using it): it was a pain to
+make work, but it's in the code now, and should be maintained. See the
+extensive comments in <a href="../src/isave.c">src/isave.c</a> for more
+information about how these operations work.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/idosave.h">src/idosave.h</a>,
+<a href="../src/isave.c">src/isave.c</a>,
+<a href="../src/isave.h">src/isave.h</a>,
+<a href="../src/isstate.h">src/isstate.h</a>,
+<a href="../src/store.h">src/store.h</a>.
+</dl>
+
+<h4><a name="Stable_allocators"></a>Stable allocators</h4>
+
+<p>
+Even though <b><tt>save</tt></b> and <b><tt>restore</tt></b> are concepts
+from the PostScript interpreter, the generic allocator architecture and API
+include a feature to support them, called <em>stable</em> allocators. Every
+allocator has an associated stable allocator, which tags pointers with the
+same VM space number but which is not subject to <b><tt>save</tt></b> and
+<b><tt>restore</tt></b>. System VM is intrinsically stable (its associated
+stable allocator is the same allocator), so there are only 5 allocators in
+ordinary single-context usage: system VM, stable global VM, ordinary global
+VM, stable local VM, ordinary local VM.
+
+<p>
+The reason that we cannot simply allocate all stable objects in system VM is
+that their refs must still be tagged with the correct VM space number, so
+that the check against storing pointers from global VM to local VM can be
+enforced properly.
+
+<p>
+All PostScript objects are normally allocated with the non-stable
+allocators. The stable allocators should be used with care, since using
+them can easily create dangling pointers: if storage allocated with a stable
+allocator contains any references to PostScript objects, the client is
+responsible for ensuring that the references don't outlive the referenced
+objects, normally by ensuring that any such referenced objects are allocated
+at the outermost <b><tt>save</tt></b> level. (The original reason for
+wanting stable allocators was the PostScript stacks, which are essentially
+PostScript arrays but are not subject to <b><tt>save</tt></b> and
+<b><tt>restore</tt></b>.) For more examples, search the sources for
+references to <b><tt>gs_memory_stable</tt></b>.
+
+<h4><a name="Interpreter_GC"></a>Garbage collection</h4>
+
+<p>
+The interpreter's garbage collector is a compacting, non-conservative,
+mark-and-sweep collector.
+
+<ul>
+<li>It compacts storage because that is the only way to avoid permanent
+sandbars, which is essential in limited-memory environments.
+<li>It is non-conservative because conservative collectors (which attempt
+to determine whether arbitrary bit patterns are pointers) cannot compact.
+<li>It uses mark-and-sweep, rather than a more modern copying approach,
+because it cannot afford the extra memory required for copying.
+</ul>
+
+<p>
+Roots for tracing must be registered with the allocator. Most roots are
+registered during initialization.
+
+<p>
+"Mark-and-sweep" is a bit of a misnomer. The garbage collector actually has
+5 main phases:
+
+<ul>
+<li>Sweep to clear marks;
+<li>Trace and mark;
+<li>Sweep to compute relocation;
+<li>Sweep to relocate pointers;
+<li>Sweep and compact.
+</ul>
+
+<p>
+There is some extra complexity to handle collecting local VM only. In this
+case, all pointers in global VM are treated as roots, and global VM is not
+compacted.
+
+<p>
+As noted above, PostScript arrays and strings can have refs that point
+within them (because of <b><tt>getinterval</tt></b>). Thus the garbage
+collector must mark each element of an array, and even each byte of a
+string, individually. Specifically, it marks objects, refs, and strings
+using 3 different mechanisms:
+
+<ul>
+
+<li>Objects have a mark bit in their header: see
+<a href="../src/gxobj.h">src/gxobj.h</a>,
+
+<li>Refs and packed refs have a reserved mark bit: see <a
+href="../src/iref.h">src/iref.h</a> and <a
+href="../src/ipacked.h">src/ipacked.h</a>.
+
+<li>Strings use a separate bit table, with one bit per string byte: see
+<a href="../src/gxalloc.h">src/gxalloc.h</a>,
+
+</ul>
+
+<p>
+Similarly, it records the relocation information for objects, refs, and
+strings differently:
+
+<ul>
+
+<li>Objects record relocation in the object header.
+
+<li>Refs record relocation in unused fields of refs such as nulls that
+don't use their <b><tt>value</tt></b> field. Every memory manager object
+that stores ref-containing objects as described above has an extra, unused
+ref at the end for this purpose.
+
+<li>Strings use a separate relocation table.
+
+</ul>
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/igc.c">src/igc.c</a>,
+<a href="../src/igc.h">src/igc.h</a>,
+<a href="../src/igcref.c">src/igcref.c</a>,
+<a href="../src/igcstr.c">src/igcstr.c</a>,
+<a href="../src/igcstr.h">src/igcstr.h</a>,
+<a href="../src/ireclaim.c">src/ireclaim.c</a>.
+</dl>
+
+<hr>
+
+<h2><a name="Portability"></a>Portability</h2>
+
+<p>
+One of Ghostscript's most important features is its great portability across
+platforms (CPUs, operating systems, compilers, and build tools). The code
+supports portability through two mechanisms:
+
+<ul>
+
+<li><a href="#Structural">Structural mechanisms</a> -- segregating
+platform-dependent information into files in a particular way.
+
+<li><a href="#Coding">Coding standards</a> -- avoiding relying on byte
+order, scalar size, and platform-specific compiler or library features.
+
+</ul>
+
+<h3><a name="Structural"></a>Structural</h3>
+
+<h4><a name="CPU_and_compiler"></a>CPU and compiler</h4>
+
+<p>
+Ghostscript attempts to discover characteristics of the CPU and compiler
+automatically during the build process, by compiling and then executing a
+program called <b><tt>genarch</tt></b>. <b><tt>genarch</tt></b> generates a
+file <b><tt>obj/arch.h</tt></b>, which almost all Ghostscript files then
+include. This works well for things like word size, byte order, and
+floating point representation, but it can't determine whether or not a
+compiler supports a particular feature, because if a feature is absent, the
+compilation may fail.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/genarch.c">src/genarch.c</a>,
+<a href="../obj/arch.h">obj/arch.h</a>.
+</dl>
+
+<h4><a name="Library_headers"></a>Library headers</h4>
+
+<p>
+Despite the supposed standardization of ANSI C, platforms vary considerably
+in where (and whether) they provide various standard library facilities.
+Currently, Ghostscript's build process doesn't attempt to sort this out
+automatically. Instead, for each library header file
+<b><tt>&lt;</tt></b><em>xxx</em><b><tt>.h&gt;</tt></b> there is a
+corresponding Ghostscript source file
+<b><tt>src/</tt></b><em>xxx</em><b><tt>_.h</tt></b>, containing a set of
+compile-time conditionals that attempt to select the correct platform header
+file, or in some cases substitute Ghostscript's own code for a missing
+facility. You may need to edit these files when moving to platforms with
+unusually non-standard libraries.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/ctype_.h">src/ctype_.h</a>,
+<a href="../src/dirent_.h">src/dirent_.h</a>,
+<a href="../src/dos_.h">src/dos_.h</a>,
+<a href="../src/errno_.h">src/errno_.h</a>,
+<a href="../src/fcntl_.h">src/fcntl_.h</a>,
+<a href="../src/jerror_.h">src/jerror_.h</a>,
+<a href="../src/malloc_.h">src/malloc_.h</a>,
+<a href="../src/math_.h">src/math_.h</a>,
+<a href="../src/memory_.h">src/memory_.h</a>,
+<a href="../src/pipe_.h">src/pipe_.h</a>,
+<a href="../src/png_.h">src/png_.h</a>,
+<a href="../src/stat_.h">src/stat_.h</a>,
+<a href="../src/stdio_.h">src/stdio_.h</a>,
+<a href="../src/string_.h">src/string_.h</a>,
+<a href="../src/time_.h">src/time_.h</a>,
+<a href="../src/unistd_.h">src/unistd_.h</a>,
+<a href="../src/vmsmath.h">src/vmsmath.h</a>,
+<a href="../src/windows_.h">src/windows_.h</a>,
+<a href="../src/x_.h">src/x_.h</a>.
+</dl>
+
+<p>
+It has been suggested that the GNU <b><tt>configure</tt></b> scripts do the
+above better, for Unix systems, than Ghostscript's current methods. While
+this may be true, we have found <b><tt>configure</tt></b> scripts difficult
+to write, understand, and maintain; and the <b><tt>autoconf</tt></b> tool
+for generating <b><tt>configure</tt></b> scripts, which we found easy to
+use, doesn't cover much of the ground that Ghostscript requires.
+
+<h4><a name="Cross_platform_APIs"></a>Cross-platform APIs</h4>
+
+<p>
+For a few library facilities that are available on all platforms but are not
+well standardized, or that may need to be changed for special environments,
+Ghostscript defines its own APIs. It is an architectural property of
+Ghostscript that the implementations of these APIs are the only .c files for
+which the choice of platform (as opposed to choices of drivers or optional
+features) determines whether they are compiled and linked into an
+executable.
+
+<dl>
+
+<dt>
+API:
+<dd>
+<a href="../src/gp.h">src/gp.h</a>,
+<a href="../src/gpcheck.h">src/gpcheck.h</a>,
+<a href="../src/gpgetenv.h">src/gpgetenv.h</a>,
+<a href="../src/gpmisc.h">src/gpmisc.h</a>,
+<a href="../src/gpsync.h">src/gpsync.h</a>.
+
+<dt>
+Implementation files shared among multiple platforms:
+<dd>
+<a href="../src/gp_getnv.c">src/gp_getnv.c</a>,
+<a href="../src/gp_mktmp.c">src/gp_mktmp.c</a>,
+<a href="../src/gp_nsync.c">src/gp_nsync.c</a>,
+<a href="../src/gp_psync.c">src/gp_psync.c</a>,
+<a href="../src/gp_strdl.c">src/gp_strdl.c</a>,
+<a href="../src/gpmisc.c">src/gpmisc.c</a>.
+
+<dt>
+Platform-specific implementation files:
+<dd>
+<a href="../src/gp_dosfe.c">src/gp_dosfe.c</a>,
+<a href="../src/gp_dosfs.c">src/gp_dosfs.c</a>,
+<a href="../src/gp_dvx.c">src/gp_dvx.c</a>,
+<a href="../src/gp_iwatc.c">src/gp_iwatc.c</a>,
+<a href="../src/gp_msdos.c">src/gp_msdos.c</a>,
+<a href="../src/gp_mshdl.c">src/gp_mshdl.c</a>,
+<a href="../src/gp_msio.c">src/gp_msio.c</a>,
+<a href="../src/gp_mslib.c">src/gp_mslib.c</a>,
+<a href="../src/gp_mswin.c">src/gp_mswin.c</a>,
+<a href="../src/gp_mswin.h">src/gp_mswin.h</a>,
+<a href="../src/gp_ntfs.c">src/gp_ntfs.c</a>,
+<a href="../src/gp_os2.c">src/gp_os2.c</a>,
+<a href="../src/gp_os9.c">src/gp_os9.c</a>,
+<a href="../src/gp_stdia.c">src/gp_stdia.c</a>,
+<a href="../src/gp_stdin.c">src/gp_stdin.c</a>,
+<a href="../src/gp_sysv.c">src/gp_sysv.c</a>,
+<a href="../src/gp_unifn.c">src/gp_unifn.c</a>,
+<a href="../src/gp_unifs.c">src/gp_unifs.c</a>,
+<a href="../src/gp_unix.c">src/gp_unix.c</a>,
+<a href="../src/gp_vms.c">src/gp_vms.c</a>,
+<a href="../src/gp_wgetv.c">src/gp_wgetv.c</a>,
+<a href="../src/gp_win32.c">src/gp_win32.c</a>,
+<a href="../src/gp_wsync.c">src/gp_wsync.c</a>.
+
+</dl>
+
+<h4><a name="Makefiles"></a>Makefiles</h4>
+
+<p>
+For information on the structure and conventions used within makefiles, see
+the <a href="#Makefile_structure">Makefile structure</a> section above.
+
+<p>
+Ghostscript's makefiles are structured very similarly to the cross-platform
+library files. The great majority of the makefiles are portable across all
+platforms and all versions of <b><tt>make</tt></b>. To achieve this, the
+platform-independent makefiles must obey two constraints beyond those of the
+POSIX <b><tt>make</tt></b> program:
+
+<ul>
+
+<li>No conditionals or <b><tt>include</tt></b>s are allowed. While most
+<b><tt>make</tt></b> programs now provide some form of conditional execution
+and some form of inclusion, there is no agreement on the syntax.
+(Conditionals and includes are allowed in platform-dependent makefiles; in
+fact, an inclusion facility is required.)
+
+<li>There must be a space on both sides of the : that separates the target
+of a rule from its dependencies. This is required for compatibility with
+the OpenVMS <b><tt>MMS</tt></b> and <b><tt>MMK</tt></b> programs.
+
+</ul>
+
+<p>
+The top-level makefile for each platform (where "platform" includes the OS,
+the compiler, and the flavor of <b><tt>make</tt></b>) contains all the build
+options, plus <b><tt>include</tt></b>s for the generic makefiles and any
+platform-dependent makefiles that are shared among multiple platforms.
+
+<p>
+While most of the top-level makefiles build a PostScript and/or PDF
+interpreter configuration, there are also a few makefiles that build a test
+program that only uses the graphics library without any language
+interpreter. Among other things, this can be helpful in verifying that no
+accidental dependencies on the interpreter have crept into the library or
+drivers.
+
+<p>
+For families of similar platforms, the question arises whether to use
+multiple top-level makefiles, or whether to use a single top-level makefile
+that may require minor editing for some (or all) platforms. Ghostscript
+currently uses the following top-level makefiles for building interpreter
+configurations:
+
+<ul>
+
+<li>Unix (including GNU/Linux):
+<ul>
+<li><a href="../src/Makefile.in">src/Makefile.in</a>,
+template for autoconf-based builds.
+<li><a href="../src/unix-gcc.mak">src/unix-gcc.mak</a>,
+for Unix with gcc.
+<li><a href="../src/unixansi.mak">src/unixansi.mak</a>,
+for Unix with an ANSI C compiler other than gcc.
+</ul>
+
+<li>PC:
+<ul>
+<li><a href="../src/bcwin32.mak">src/bcwin32.mak</a>,
+for MS Windows with Borland C++ Builder.
+<li><a href="../src/msvc32.mak">src/msvc32.mak</a>,
+for MS Windows with Microsoft Visual C (MSVC).
+<li><a href="../src/os2.mak">src/os2.mak</a>,
+for MS-DOS or OS/2 GCC/EMX environment.
+<li><a href="../src/watc.mak">src/watc.mak</a>,
+for extended MS-DOS with Watcom C.
+<li><a href="../src/watcw32.mak">src/watcw32.mak</a>,
+for MS Windows with Watcom C.
+</ul>
+
+<li>Macintosh:
+<ul>
+<li><a href="../src/macosx.mak">src/macosx.mak</a>,
+commandline makefile for MacOS X.
+<li><a href="../src/macos-mcp.mak">src/macos-mcp.mak</a>,
+dummy makefile to generate an xml project file for Metrowerks Codewarrior.
+</ul>
+
+
+<li>Other:
+<ul>
+<li><a href="../src/all-arch.mak">src/all-arch.mak</a>,
+for building on many Unix systems in a networked test environment.
+<li><a href="../src/dvx-gcc.mak">src/dvx-gcc.mak</a>,
+for DesqView/X with gcc.
+<li><a href="../src/openvms.mak">src/openvms.mak</a>,
+for OpenVMS with Digital's CC compiler and the MMS build program.
+<li><a href="../src/openvms.mmk">src/openvms.mmk</a>,
+for OpenVMS with Digital's CC compiler and the MMK build program.
+</ul>
+
+</ul>
+
+<p>
+The following top-level makefiles build the library test program:
+
+<ul>
+<li><a href="../src/ugcclib.mak">src/ugcclib.mak</a>,
+on Unix with gcc.
+<li><a href="../src/msvclib.mak">src/msvclib.mak</a>,
+on MS Windows with MSVC.
+<li><a href="../src/watclib.mak">src/watclib.mak</a>,
+on extended MS-DOS with Watcom C.
+</ul>
+
+<p>
+The MSVC makefiles may require editing to select between different versions
+of MSVC, since different versions may have slightly incompatible command
+line switches or customary installation path names. The Unix makefiles
+often require editing to deal with differing library path names and/or
+library names. For details, see <a href="Make.htm#Unix_build">the Unix
+section</a> of the documentation for building Ghostscript.
+
+<dl>
+
+<dt>
+Library test program:
+<dd>
+<a href="../src/gslib.c">src/gslib.c</a>.
+
+<dt>
+Platform-independent makefiles:
+<dd>
+
+<dl>
+
+<dt>
+Graphics library and support:
+<dd>
+<a href="../src/contrib.mak">src/contrib.mak</a>,
+<a href="../src/devs.mak">src/devs.mak</a>,
+<a href="../src/gnudevs.mak">src/gnudevs.mak</a>,
+<a href="../src/gs.mak">src/gs.mak</a>,
+<a href="../src/lib.mak">src/lib.mak</a>,
+<a href="../src/version.mak">src/version.mak</a>.
+
+<dt>
+PostScript interpreter and fonts:
+<dd>
+<a href="../src/cfonts.mak">src/cfonts.mak</a>,
+<a href="../src/int.mak">src/int.mak</a>,
+<a href="../src/wmin.mak">src/wmin.mak</a>.
+
+<dt>
+Third-party libraries:
+<dd>
+<a href="../src/icclib.mak">src/icclib.mak</a>,
+<a href="../src/ijs.mak">src/ijs.mak</a>,
+<a href="../src/jpeg.mak">src/jpeg.mak</a>,
+<a href="../src/libpng.mak">src/libpng.mak</a>,
+<a href="../src/zlib.mak">src/zlib.mak</a>.
+
+</dl>
+
+<dt>
+Shared platform-dependent makefiles:
+<dd>
+
+<dl>
+
+<dt>
+Unix:
+<dd>
+<a href="../src/unix-aux.mak">src/unix-aux.mak</a>,
+<a href="../src/unix-dll.mak">src/unix-dll.mak</a>,
+<a href="../src/unix-end.mak">src/unix-end.mak</a>,
+<a href="../src/unixhead.mak">src/unixhead.mak</a>,
+<a href="../src/unixinst.mak">src/unixinst.mak</a>,
+<a href="../src/unixlink.mak">src/unixlink.mak</a>.
+
+<dt>
+Microsoft Windows and MS-DOS:
+<dd>
+<a href="../src/msvccmd.mak">src/msvccmd.mak</a>,
+<a href="../src/msvctail.mak">src/msvctail.mak</a>,
+<a href="../src/pcwin.mak">src/pcwin.mak</a>,
+<a href="../src/wccommon.mak">src/wccommon.mak</a>,
+<a href="../src/wctail.mak">src/wctail.mak</a>,
+<a href="../src/winint.mak">src/winint.mak</a>,
+<a href="../src/winlib.mak">src/winlib.mak</a>,
+<a href="../src/winplat.mak">src/winplat.mak</a>.
+
+<dt>
+Other:
+<dd>
+<a href="../src/dvx-head.mak">src/dvx-head.mak</a>,
+<a href="../src/dvx-tail.mak">src/dvx-tail.mak</a>,<br>
+<a href="../src/macos-fw.mak">src/macos-fw.mak</a>,
+for building as a MacOS X Framework.
+
+</dl>
+
+</dl>
+
+<h3><a name="Coding"></a>Coding</h3>
+
+<p>
+Coding for portability requires avoiding both <em>explicit</em>
+dependencies, such as platform-dependent <b><tt>#ifdef</tt></b>s, and
+<em>implicit</em> dependencies, such as dependencies on byte order or the
+size of the integral types.
+
+<h4><a name="Explicit_dependencies"></a>Explicit dependencies</h4>
+
+<p>
+The platform-independent .c files never, ever, use <b><tt>#ifdef</tt></b> or
+<b><tt>#if</tt></b> to select code for specific platforms. Instead, we
+always try to characterize some abstract property that is being tested. For
+example, rather than checking for macros that are defined on those specific
+platforms that have 64-bit <b><tt>long</tt></b> values, we define a macro
+<b><tt>ARCH_SIZEOF_LONG</tt></b> that can then be tested. Such macros are
+always defined in a .h file, either automatically in <b><tt>arch.h</tt></b>,
+or explicitly in a <em>xxx</em><b><tt>_.h</tt></b> file, as described in
+earlier sections.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="../src/std.h">src/std.h</a>,
+<a href="../src/stdpre.h">src/stdpre.h</a>.
+</dl>
+
+<h4><a name="Implicit_dependencies"></a>Implicit dependencies</h4>
+
+<p>
+The most common source of byte ordering dependencies is casting between
+types (T1 *) and (T2 *) where T1 and T2 are numeric types that aren't merely
+signed/unsigned variants of each other. To avoid this, the only casts
+allowed in the code are between numeric types, from a pointer type to a long
+integral type, and between pointer types.
+
+<p>
+Ghostscript's code assumes the following about the sizes of various types:
+
+<dl>
+<dt>char<dd>8 bits
+<dt>short<dd>16 bits
+<dt>int<dd>32 or 64 bits
+<dt>long<dd>32 or 64 bits
+<dt>float<dd>32 bits (may work with 64 bits)
+<dt>double<dd>64 bits (may work with 128 bits)
+</dl>
+
+<p>
+The code does not assume that the <b><tt>char</tt></b> type is signed (or
+unsigned); except for places where the value is always a literal string, or
+for interfacing to library procedures, the code uses <b><tt>byte</tt></b> (a
+Ghostscript synonym for <b><tt>unsigned char</tt></b>) almost everywhere.
+
+<p>
+Pointers are signed on some platforms and unsigned on others. In the few
+places in the memory manager where it's necessary to reliably order-compare
+(as opposed to equality-compare) pointers that aren't known to point to the
+same allocated block of memory, the code uses the
+<b><tt>PTR_</tt></b><em>relation</em> macros rather than direct comparisons.
+
+<p>
+See the files listed above for other situations where a macro provides
+platform-independence or a workaround for bugs in specific compilers or
+libraries (of which there are a distressing number).
+
+<h4><a name="Platform_specific_code"></a>Platform-specific code</h4>
+
+<p>
+There are some features that are inherently platform-specific:
+
+<ul>
+
+<li>Microsoft Windows requires a lot of special top-level code, and also has
+an installer and uninstaller.
+
+<li>OS/2 requires a little special code.
+
+<li>MacOS also requires special top-level code (now distributed with the
+standard Ghostscript package).
+
+<li>All platforms supporting DLLs (currently all three of the above) share
+some special top-level code.
+
+</ul>
+
+<dl>
+
+<dt>
+MS Windows files:
+<dd>
+<a href="../src/dpmain.c">src/dpmain.c</a>,
+<a href="../src/dwdll.c">src/dwdll.c</a>,
+<a href="../src/dwdll.h">src/dwdll.h</a>,
+<a href="../src/dwimg.c">src/dwimg.c</a>,
+<a href="../src/dwimg.h">src/dwimg.h</a>,
+<a href="../src/dwinst.cpp">src/dwinst.cpp</a>,
+<a href="../src/dwinst.h">src/dwinst.h</a>,
+<a href="../src/dwmain.c">src/dwmain.c</a>,
+<a href="../src/dwmain.h">src/dwmain.h</a>,
+<a href="../src/dwmainc.c">src/dwmainc.c</a>,
+<a href="../src/dwnodll.c">src/dwnodll.c</a>,
+<a href="../src/dwreg.c">src/dwreg.c</a>,
+<a href="../src/dwreg.h">src/dwreg.h</a>,
+<a href="../src/dwsetup.cpp">src/dwsetup.cpp</a>,
+<a href="../src/dwsetup.h">src/dwsetup.h</a>,
+<a href="../src/dwtext.c">src/dwtext.c</a>,
+<a href="../src/dwtext.h">src/dwtext.h</a>,
+<a href="../src/dwuninst.cpp">src/dwuninst.cpp</a>,
+<a href="../src/dwuninst.h">src/dwuninst.h</a>,
+<a href="../src/gp_msdll.c">src/gp_msdll.c</a>,
+<a href="../src/gp_mspol.c">src/gp_mspol.c</a>,
+<a href="../src/gp_msprn.c">src/gp_msprn.c</a>,
+<a href="../src/gs16spl.c">src/gs16spl.c</a>,
+<a href="../src/gsdllwin.h">src/gsdllwin.h</a>.
+
+<dt>
+OS/2 files:
+<dd>
+<a href="../src/gsdllos2.h">src/gsdllos2.h</a>.
+
+<dt>
+Unix files:
+<dd>
+<a href="../src/dxmain.c">src/dxmain.c</a>.
+<a href="../src/dxmainc.c">src/dxmainc.c</a>.
+
+<dt>
+Macintosh files:
+<dd>
+<a href="../src/gdevmac.c">src/gdevmac.c</a>.
+<a href="../src/gdevmac.h">src/gdevmac.h</a>.
+<a href="../src/gdevmacpictop.h">src/gdevmacpictop.h</a>.
+<a href="../src/gdevmacttf.h">src/gdevmacttf.h</a>.
+<a href="../src/gdevmacxf.c">src/gdevmacxf.c</a>.
+<a href="../src/gp_mac.c">src/gp_mac.c</a>.
+<a href="../src/gp_mac.h">src/gp_mac.h</a>.
+<a href="../src/gp_macio.c">src/gp_macio.c</a>.
+<a href="../src/macgenmcpxml.sh">src/macgenmcpxml.sh</a>.
+<a href="../src/macsysstat.h">src/macsysstat.h</a>.
+<a href="../src/macsystypes.h">src/macsystypes.h</a>.
+
+<dt>
+VMS files:
+<dd>
+<a href="../src/vms_x_fix.h">src/vms_x_fix.h</a>.
+
+<dt>
+DLL files:
+<dd>
+<a href="../src/gsdll.c">src/gsdll.c</a>,
+<a href="../src/gsdll.h">src/gsdll.h</a>,
+<a href="../src/gdevdsp.c">src/gdevdsp.c</a>,
+<a href="../src/gdevdsp.h">src/gdevdsp.h</a>,
+<a href="../src/gdevdsp2.h">src/gdevdsp2.h</a>,
+<a href="../src/iapi.c">src/iapi.c</a>,
+<a href="../src/iapi.h">src/iapi.h</a>,
+<a href="../src/idisp.c">src/idisp.c</a>,
+<a href="../src/idisp.h">src/idisp.h</a>.
+<p>
+The new DLL interface (new as of 7.0) is especially useful with the
+new display device, so it is included here. Both are due to Russell
+Lang.
+
+</dl>
+
+
+<hr>
+
+<h2><a name="Adding_features_and_options"></a>Adding features and options</h2>
+
+<p>
+[Ray, please supply more information about what you want here]
+
+<h2><a name="Troubleshooting"></a>Troubleshooting</h2>
+
+<p>
+The Ghostscript code has many tracing and debugging features that can be
+enabled at run time using the <b><tt>-Z</tt></b> command line switch, if the
+executable was compiled with <b><tt>DEBUG</tt></b> defined. One
+particularly useful combination is <b><tt>-Z@\?</tt></b>, which fills free
+memory blocks with a pattern and also turns on run-time memory consistency
+checking. For more information, see <a
+href="Use.htm#Debugging">doc/Use.htm#Debugging</a>; you can also search for
+occurrences of <b><tt>if_debug</tt></b> or <b><tt>gs_debug_c</tt></b> in the
+source code. Note that many of these features are in the graphics library
+and do not require a PostScript interpreter.
+
+<p>
+The code also contains many run-time procedures whose only purpose is to be
+called from the debugger to print out various data structures, including all
+the procedures in <a href="../src/idebug.c">src/idebug.c</a> (for the
+PostScript interpreter) and the <b><tt>debug_dump_</tt></b> procedures in <a
+href="../src/gsmisc.c">src/gsmisc.c</a>.
+
+<dl>
+<dt>
+Files:
+<dd>
+<a href="Use.htm#Debugging">doc/Use.htm#Debugging</a>,
+<a href="../src/gdebug.h">src/gdebug.h</a>,
+<a href="../src/gsmdebug.h">src/gsmdebug.h</a>,
+<a href="../src/idebug.h">src/idebug.h</a>,
+<a href="../src/idebug.c">src/idebug.c</a>.
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2001 artofcode LLC.
+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>
diff --git a/Master/xemtex/doc/ghostscript/Devices.htm b/Master/xemtex/doc/ghostscript/Devices.htm
new file mode 100644
index 00000000000..57d39eec9da
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Devices.htm
@@ -0,0 +1,6046 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Details of Ghostscript output devices</title>
+<!-- $Id: Devices.htm,v 1.34.2.15.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: devices.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Details of Ghostscript output devices</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Measurements">Notes on measurements</a>
+<li><a href="#IJS">IJS - Inkjet and other raster devices</a>
+<li><a href="#Win">MS Windows printers</a>
+<li><a href="#File_formats">File formats</a>
+<ul>
+<li><a href="#JFIF">JPEG file format (JFIF)</a>
+<li><a href="#TIFF">TIFF file formats</a>
+</ul>
+<li><a href="#Display_devices">Display devices</a>
+<ul>
+<li><a href="#x11_devices">X Window System</a>
+</ul>
+<li><a href="#HP_ijs">HP Deskjet official drivers</a>
+<li><a href="#STP">Gimp-Print (stp) drivers</a>
+<li><a href="#HP_color_inkjet">Other H-P color inkjet printers</a>
+<ul>
+<li><a href="#HP_gdevcdj">Drivers contained in <b><tt>gdevcdj.c</tt></b></a>
+<li><a href="#HP_paper_size">Default paper size</a>
+<li><a href="#HP_limits">Deskjet physical limits</a>
+<li><a href="#HP_command_line">Printer properties (command-line parameters)</a>
+<ul>
+<li><a href="#HP_bpp">Bits per pixel</a>
+<li><a href="#HP_deskjet_properties">Deskjet properties</a>
+<li><a href="#HP_paintjet_properties">Paintjet XL300 / Paintjet XL properties</a>
+</ul>
+<li><a href="#HP_gamma">Gamma correction</a>
+<li><a href="#HP_resolution_enhance">HP's resolution-enhanced mode for Inkjet printers</a>
+<li><a href="#HP_tips">General tips</a>
+</ul>
+<li><a href="#BJC_8200">Canon BJC-8200 printer</a>
+<li><a href="#BJC">Other Canon BubbleJet (BJC) printers</a>
+<ul>
+<li><a href="#BJC_history">History</a>
+<li><a href="#BJC_build">Configuring and building the BJC drivers</a>
+<ul>
+<li><a href="#BJC_defaults">Modify values in <b><tt>gdevbjc.h</tt></b></a>
+<li><a href="#BJC_CMYK_RGB">CMYK-to-RGB color conversion</a>
+<li><a href="#BJC_vertical_centering">Vertical centering of the printable area</a>
+<li><a href="#BJC_margins">Page margins</a>
+<li><a href="#BJC_compile">Makefile and compilation</a>
+</ul>
+<li><a href="#BJC_usage">Use of the drivers</a>
+<ul>
+<li><a href="#BJC_options">Supported Options and Defaults</a>
+<li><a href="#BJC_device_info">Device information</a>
+<li><a href="#BJC_HW_margins">Hardware margins</a>
+<li><a href="#BJC_PPD">PostScript printer description (PPD) files</a>
+<li><a href="#BJC_PPD_custom">Customizing the PPD files</a>
+</ul>
+<li><a href="#BJC_bugs">How to report problems</a>
+<li><a href="#BJC_acks">Acknowledgements</a>
+</ul>
+<li><a href="#STC_epson_stylus">Epson Stylus color printer (see also <b><tt>uniprint</tt></b>)</a>
+<ul>
+<li><a href="#STC_usage">Usage</a>
+<li><a href="#STC_options">Options</a>
+<li><a href="#STC_FAQ">Application note and FAQ</a>
+<ul>
+<li><a href="#STC_FAQ_A3">Support for A3 paper</a>
+<li><a href="#STC_FAQ_margins">Margins, PageSize</a>
+<li><a href="#STC_FAQ_II_IIS_1500">Stylus Color II / IIs and 1500</a>
+</ul>
+<li><a href="#STC_recommendations">Recommendations</a>
+<ul>
+<li><a href="#STC_dither_experiment">Color dithering experiments with <b><tt>gdevstc</tt></b> 1.21</a>
+</ul>
+<li><a href="#STC_color_transform">Color transformation</a>
+<li><a href="#STC_CAM"><b><tt>ColorAdjustMatrix</tt></b></a>
+<li><a href="#STC_RGBCMYK_coding">RGB / CMYK coding and transfer, and <b><tt>BitsPerPixel</tt></b></a>
+<li><a href="#What_is_weaving">What is weaving?</a>
+<li><a href="#STC_print_modes">Print mode parameters</a>
+<ul>
+<li><a href="#STC_unidirectional"><b><tt>Unidirectional</tt></b></a>
+<li><a href="#STC_noweave"><b><tt>Microweave</tt></b>, <b><tt>noWeave</tt></b> and <b><tt>OutputCode=deltarow</tt></b></a>
+<li><a href="#STC_model"><b><tt>Model</tt></b></a>
+</ul>
+<li><a href="#STC_Pitfalls">Bugs and pitfalls</a>
+<li><a href="#STC_Tests">Tests</a>
+<ul>
+<li><a href="#STC_OutputCodes">The various OutputCodes</a>
+<li><a href="#STC_printing_time">Printing time related to other options</a>
+</ul>
+<li><a href="#STC_acks">Acknowledgments</a>
+</ul>
+<li><a href="#Uniprint">uniprint, a flexible unified printer driver</a>
+<ul>
+<li><a href="#Uni_state">The state of this driver</a>
+<li><a href="#Uni_background">Notes on <b><tt>uniprint</tt></b>'s background</a>
+<li><a href="#Uni_make_pfile">Godzilla's guide to the creation of Unified Printer Parameter (<b><tt>.upp</tt></b>) files</a>
+<li><a href="#Uni_all_parameters">All parameters in brief</a>
+<li><a href="#Uni_honors"><b><tt>Uniprint</tt></b>'s Roll of Honor</a>
+<li><a href="#Uni_weaving_howto"><b><tt>Uniprint</tt></b> weaving parameters howto</a></li>
+<li><a href="#Uni_esc300">Extension to <b><tt>uniprint</tt></b> for the Epson Stylus Color 300</a></li>
+</ul>
+<li><a href="#SPARCprinter">Sun SPARCprinter</a>
+<ul>
+<li><a href="#SPARC_install">Installation</a>
+<li><a href="#SPARC_problems">Problems</a>
+</ul>
+<li><a href="#Apple">Apple dot matrix printer</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>. You may also be interested in <a href="Make.htm">how to
+build Ghostscript</a> and <a href="Install.htm">install it</a>, as well as
+the description of the <a href="Drivers.htm">driver interface</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Measurements"></a>Notes on measurements</h2>
+
+<p>
+Several different important kinds of measures appear throughout this
+document: inches, centimeters and millimeters, points, and bits per pixel.
+
+<dl>
+<dt><b>Inches</b>
+<dd>1 inch equals 2.54 centimeters. The inch measure is sometimes
+represented by "<b>in</b>" or a quotation mark (<b>&quot;</b>) to the right
+of a measure, like <b>8.5in</b> or <b>8.5""</b>. Dots per inch,
+"<b>dpi</b>", are the common measure of printing resolution for dot-matrix,
+laser, and ink-jet printers. U.S. "letter" paper is exactly
+8.5in&times;11in, approximately 21.6cm&times;27.9cm. (See in the usage
+documentation all the <a href="Use.htm#Known_paper_sizes">paper sizes
+predefined in Ghostscript</a>.)
+
+<dt><b>Centimeters</b> and <b>millimeters</b>
+<dd>ISO standard paper sizes such as A4 and A3 are commonly represented in
+the SI units of centimeters and millimeters. Centimeters are abbreviated
+"<b><tt>cm</tt></b>", millimeters "<b><tt>mm</tt></b>". ISO A4 paper is
+quite close to 21.0&times;29.7 centimeters (approximately 8.3&times;11.7
+inches).
+
+<dt><b>Points</b>
+<dd>Points are a measure traditionally used in the printing trade and now
+in PostScript, which specifies exactly 72 points per inch (approximately
+28.35 per centimeter). The <a href="Use.htm#Known_paper_sizes">paper sizes
+known to Ghostscript</a> are defined in the initialization file
+<b><tt>gs_statd.ps</tt></b> in terms of points.
+
+<dt><b>Bits per pixel</b>
+<dd>Commonly abbreviated "<b><tt>bpp</tt></b>".
+</dl>
+
+<hr>
+
+<h2><a name="IJS"></a>IJS - Inkjet and other raster devices</h2>
+
+<p>
+IJS is a relatively new initiative to improve the quality and ease of
+use of inkjet printing with Ghostscript. Using IJS, you can add new
+drivers or upgrade existing ones without recompiling Ghostscript.
+All driver authors are encouraged to adapt their drivers for IJS, and
+if there is an IJS driver available for your printer, it should be
+your first choice. The non-ijs raster printer drivers are deprecated
+and will be removed in future versions of ghostscript.
+</p>
+
+<p>
+Even more importantly, the vast majority of inkjet printers are now
+supported by one of the two free collections described below:
+<a href="#STP">Gimp-Print</a> and <a href="#HP_ijs">HPIJS</a>. Therefore
+the ijs interface is your best bet for such printers from a practical
+point of view as well.
+</p>
+
+<p>Please see the <a href="http://www.linuxprinting.org/ijs/">IJS web
+page</a> for more information about IJS, including a listing of
+IJS-compatible drivers.
+</p>
+
+<p>
+A typical command line for IJS is:
+</p>
+
+<blockquote>
+<b><tt>
+gs -DSAFER -sDEVICE=ijs -sIjsServer=hpijs
+ -sDeviceManufacturer=HEWLETT-PACKARD -sDeviceModel='DESKJET 990'
+ -DIjsUseOutputFD -sOutputFile=/dev/usb/lp1 -DNOPAUSE --
+ examples/tiger.eps
+</tt></b>
+</blockquote>
+
+
+<p>
+Individual IJS command line parameters are as follows:
+</p>
+
+<dl>
+<dt><b><tt>-sIjsServer=</tt></b><em>{path}</em>
+<dd>Sets the pathname for the IJS server (ie printer driver). Examples
+are "hpijs" and "ijsgimpprint".
+Ghostscript will spawn a new process for this driver, and communicate
+with it using the IJS protocol. The pathname need not be absolute,
+as the PATH environment variable is searched, but it's probably a good
+idea for robustness and security. Note also that if -dSAFER is not
+specified, it's possible for PostScript code to set this parameter,
+so it can cause arbitrary code to be executed. See the section on <a
+href="Use.htm#Security">Security</a> for more information.
+</dl>
+
+<dl>
+<dt><b><tt>-sDeviceManufacturer=</tt></b><em>{name}</em>
+<dt><b><tt>-sDeviceModel=</tt></b><em>{name}</em>
+<dd>These parameters select the device according to IEEE-1284 standard
+device ID strings. In general, consult the documentation for the
+driver to find the appropriate settings. Note that, if the value
+contains a space, you'll want to quote the value in your shell, as
+in the example above.
+</dl>
+
+<dl>
+<dt><b><tt>-sIjsParams=</tt></b><em>{params}</em>
+<dd>This parameter allows you to set arbitrary IJS parameters on
+the IJS driver. The format is a comma-separated list of
+<b><tt>key=value</tt></b> pairs. If it is necessary to send a
+value containing a comma or backslash, it can be escaped with
+a backslash. Thus, <b><tt>'-sIjsParams=Foo=bar,Baz=a\,b'</tt></b> sets
+the parameter Foo to "bar", and Baz to "a,b".
+</dl>
+
+<dl>
+<dt><b><tt>-dIjsUseOutputFD</tt></b>
+<dd>This flag indicates that Ghostscript should open the output file
+and pass a file descriptor to the server. If not set, Ghostscript
+simply passes the filename set in OutputFile to the server. In most
+cases, this flag won't matter, but if you have a driver which works
+only with OutputFD (such as hpijs 1.0.2), or if you're using the
+-sOutputFile="|cmd" syntax, you'll need to set it.
+</dl>
+
+<dl>
+<dt><b><tt>-dBitsPerSample=</tt></b><em>N</em>
+<dd>This parameter controls the number of bits per sample. The
+default value of 8 should be appropriate for most work. For monochrome
+images, use -dBitsPerSample=1.
+</dl>
+
+<p>Generic Ghostscript options that are particularly relevant for IJS
+are summarized below:
+</p>
+
+<dl>
+<dt><b><tt>-r</tt></b><em>number</em>
+<br><b><tt>-r</tt></b><em>number1</em><b><tt>x</tt></b><em>number2</em>
+<dd>Sets the resolution, in dpi. If the resolution is not specified,
+Ghostscript queries the IJS server to determine the preferred resolution.
+When the resolution is specified, it overrides the value (if any)
+preferred by the IJS server.
+</dl>
+
+<dl>
+<dt><b><tt>-dDuplex</tt></b>
+<dt><b><tt>-dTumble</tt></b>
+<dd>These flags enable duplex (two-sided) printing. Tumble controls
+the orientation. When Tumble is false, the pages
+are oriented suitably at the left or right. When Tumble is true,
+the pages are oriented suitably for binding at the top or
+bottom.
+</dl>
+
+<dl>
+<dt><b><tt>-sProcessColorModel=</tt></b><em>{name}</em>
+<dd>Use this flag to select the process color model. Suitable values
+include DeviceGray, DeviceRGB, and DeviceCMYK.
+</dl>
+
+<h3>Building IJS</h3>
+
+<p> IJS is included by default on Unix gcc builds, and also in
+autoconf'ed builds. Others may need some makefile tweaking. First,
+make sure the IJS device is selected:
+
+<blockquote>
+DEVICE_DEVS2=$(DD)ijs.dev
+</blockquote>
+
+<p> Next, make sure that the path and execution type are set in
+the toplevel makefile. The values for Unix are as follows:
+
+<blockquote>
+IJSSRCDIR=ijs
+IJSEXECTYPE=unix
+</blockquote>
+
+<p> At present, "unix" and "win" are the only supported values for
+IJSEXECTYPE. If neither sounds appropriate for your system, it's
+possible that more porting work is needed.
+
+<p> Last, make sure that ijs.mak is included in the toplevel makefile.
+It should be present right after the include of icclib.mak.
+
+<p> IJS is not inherently platform-specific. We're very much interested
+in taking patches from people who have ported it to non-mainstream
+platforms. And once it's built, you won't have to recompile Ghostscript
+to support new drivers!
+
+<hr>
+
+<h2><a name="STP"></a>Gimp-Print drivers</h2>
+
+<p>
+The Gimp-Print driver collection supports a wide variety of inkjet
+printers and supports Ghostscript's 'ijs' interface. Just set the
+IjsServer parameter to 'ijsgimpprint'.
+Please see <a href="http://gimp-print.sourceforge.net/"
+class="offsite">http://gimp-print.sourceforge.net/</a> for more
+information including supported printers and appropriate options.
+
+<p>
+GNU Ghostscript also includes a special client device for the Gimp-Print
+family of drivers. The device itself is called <tt>stp</tt> for historical
+reasons. This device will not be supported in future versions of Ghostscript
+or Gimp-print.
+
+<p>
+You will need to have the Gimp-Print library installed to use this
+device. The library distribution also includes extensive documentation
+on supported printers and the options available with each. Thanks to the
+Gimp-Print team for all their hard work integrating their excellent
+driver suite.
+
+<p>
+Please note that the stp driver interface is only supported through
+gimp-print version 4.2. If you have 4.2.1 or later, please use the IJS
+interface (described above) instead.
+
+<h2><a name="HP_ijs"></a>HP Inkjet official drivers</h2>
+
+<p>
+HP provides official drivers for many of their printer models.
+In order to use these drivers, you will need the HP Inkjet Server as
+well as Ghostscript, available from <a
+href="http://hpinkjet.sourceforge.net">http://hpinkjet.sourceforge.net</a>.
+
+<p>
+This version of ghostscript also contains a special client driver 'hpijs'
+that predates the current ijs interface. It will not be supported in future
+versions of Ghostscript.
+
+<p>
+Thanks to the folks at HP,
+especially David Suffield for making these drivers available and working to
+integrate it with Ghostscript.
+
+<hr>
+
+<h2><a name="Win"></a>MS Windows printers</h2>
+
+<p>
+This section was written by Russell Lang, the author of Ghostscript's
+MS&nbsp;Windows-specific printer driver, and updated by
+<a href="mailto:Pierre.Arnaud@opac.ch">Pierre Arnaud</a>,
+the current maintainer.
+</p>
+
+<p>
+The <b><tt>mswinpr2</tt></b> device uses MS&nbsp;Windows printer drivers, and
+thus should work with any printer with device-independent bitmap (DIB)
+raster capabilities. The printer resolution cannot be selected directly
+using PostScript commands from Ghostscript: use the printer setup in the
+Control Panel instead. It is however possible to specify a maximum resolution
+for the printed document (see below).
+</p>
+
+<p>
+If no Windows printer name is specified in <b><tt>-sOutputFile</tt></b>,
+Ghostscript prompts for a Windows printer using the standard Print Setup
+dialog box. You must set the orientation to Portrait and the page size to
+that expected by Ghostscript; otherwise the image will be clipped.
+Ghostscript sets the physical device size to that of the Windows printer
+driver, but it does not update the PostScript clipping path.
+</p>
+
+<p>
+If a Windows printer name is specified in <b><tt>-sOutputFile</tt></b> using
+the format <tt>"\\spool\printer_name"</tt>, for instance
+</p>
+
+<blockquote><b><tt>
+gs ... -sOutputFile="\\spool\Apple LaserWriter II NT"
+</tt></b></blockquote>
+
+<p>
+then Ghostscript attempts to open the Windows printer without prompting
+(except, of course, if the printer is connected to <b><tt>FILE:</tt></b>).
+Ghostscript attempts to set the Windows printer page size and orientation
+to match that expected by Ghostscript, but doesn't always succeed. It uses
+this algorithm:
+</p>
+
+<ol>
+<li>If the requested page size matches one of the Windows standard page
+sizes +/- 2mm, request that standard size.</li>
+
+<li>Otherwise if the requested page size matches one of the Windows
+standard page sizes in landscape mode, ask for that standard size in
+landscape.</li>
+
+<li>Otherwise ask for the page size by specifying only its dimensions.</li>
+
+<li>Merge the requests above with the defaults. If the printer driver
+ignores the requested paper size, no error is generated: it will print on
+the wrong paper size.</li>
+
+<li>Open the Windows printer with the merged orientation and size.</li>
+</ol>
+
+<p>
+The Ghostscript physical device size is updated to match the Windows
+printer physical device.
+</p>
+
+<h3><a name="Win_properties"></a>Supported command-line parameters</h3>
+
+<p>
+The <b><tt>mswinpr2</tt></b> device supports a limited number of command-line
+parameters (e.g. it does not support setting the printer resolution). The
+recognized parameters are the following:
+</p>
+
+<blockquote>
+<dl>
+<dt><b><tt>-sDEVICE=mswinpr2</tt></b></dt>
+<dd>Selects the MS&nbsp;Windows printer device. If Ghostscript was not
+compiled with this device as the default output device, you have to specify
+it on the command line.</dd>
+
+<dt><b><tt>-dNoCancel</tt></b></dt>
+<dd>Hides the progress dialog, which shows the percent of the document page
+already processed and also provides a <em>cancel</em> button. This option
+is useful if GS is intended to print pages in the background, without any
+user intervention.</dd>
+
+<dt><b><tt>-sOutputFile=</tt></b><b>"\\spool\<em>printer_name</em>"</b></dt>
+<dd>Specifies which printer should be used. The <em>printer_name</em> should be
+typed exactly as it appears in the Printers control panel, including spaces.</dd>
+
+</dl>
+</blockquote>
+
+<h3><a name="Win_options"></a>Supported options (device properties)</h3>
+
+<p>
+Several extra options exist which cannot be set through the command-line,
+but only by executing the appropriate PostScript setup code. These options
+can be set through the inclusion of a setup file on the command-line:
+</p>
+
+<blockquote><b><tt>
+gs ... setup.ps ...
+</tt></b></blockquote>
+
+<p>
+The <tt>setup.ps</tt> file is responsible for the device selection, therefore
+you should not specify the <b><tt>-sDEVICE=mswinpr2</tt></b> option on the
+command-line if you are using such a setup file. Here is an example of such
+a setup file:
+</p>
+
+<blockquote><pre>
+mark
+ /NoCancel true % don't show the cancel dialog
+ /BitsPerPixel 4 % force 4 bits/pixel
+ /UserSettings
+ &lt;&lt;
+ /DocumentName (Ghostscript document) % name for the Windows spooler
+ /MaxResolution 360 % maximum document resolution
+ &gt;&gt;
+ (mswinpr2) finddevice % select the Windows device driver
+ putdeviceprops
+setdevice
+</pre></blockquote>
+
+<p>
+This example disables the progress dialog (same as the <tt><b>-dNoCancel</b></tt>
+option), forces a 4 bits/pixel output resolution and specifies additional user
+settings, such as the document name (which will be displayed by the Windows
+spooler for the queued document) and the maximum resolution (here 360&nbsp;dpi).
+It then finds and selects an instance of the MS&nbsp;Windows device printer
+and activates it. This will show the standard printer dialog, since no
+<tt><b>/OutputFile</b></tt> property was specified.
+</p>
+
+<p>
+The following options are available:
+</p>
+
+<blockquote>
+<dl>
+<dt><b><tt>/NoCancel <em>boolean</em></tt></b></dt>
+<dd>Disables (hides) the progress dialog when set to <em><tt>true</tt></em> or
+show the progress dialog if not set or set to <em><tt>false</tt></em>.</dd>
+
+<dt><b><tt>/OutputFile <em>string</em></tt></b></dt>
+<dd>Specifies which printer should be used. The string should be of the form
+<tt><b>\\spool\<em>printer_name</em></b></tt>, where the <em>printer_name</em> should be
+typed exactly as it appears in the Printers control panel, including spaces.</dd>
+
+<dt><b><tt>/QueryUser <em>integer</em></tt></b></dt>
+<dd>Shows the standard printer dialog (<tt><b>1</b></tt> or any other value),
+shows the <em>printer setup dialog</em> (<tt><b>2</b></tt>) or selects the
+<em>default Windows printer</em> without any user interaction (<tt><b>3</b></tt>).</dd>
+
+<dt><b><tt>/BitsPerPixel <em>integer</em></tt></b></dt>
+<dd>Sets the device depth to the specified bits per pixel. Currently supported
+values are <tt><b>1</b></tt> (monochrome), <tt><b>4</b></tt> (CMYK with screening
+handled by Ghostscript) and <tt><b>24</b></tt> (True Color, dithering handled by
+the Windows printer driver; this option can produce huge print jobs).</dd>
+
+<dt><b><tt>/UserSettings <em>dict</em></tt></b></dt>
+<dd>Sets additional options, defined in a dictionary. The following properties can
+be set:
+
+<dl>
+<dt><b><tt>/DocumentName <em>string</em></tt></b></dt>
+<dd>Defines the user friendly document name which will be displayed by the
+Windows spooler.</dd>
+
+<dt><b><tt>/DocumentRange <em>[n1 n2]</em></tt></b></dt>
+<dd>Defines the range of pages contained in the document. This information can
+be used by the printer dialog, in conjunction with the following property.</dd>
+
+<dt><b><tt>/SelectedRange <em>[n1 n2]</em></tt></b></dt>
+<dd>Defines the selected range of pages. This information will be displayed in
+the printer dialog and will be updated after the user interaction. A PostScript
+program could check these values and print only the selected page range.</dd>
+
+<dt><b><tt>/MaxResolution <em>dpi</em></tt></b></dt>
+<dd>Specifies the maximum tolerated output resolution. If the selected printer has
+a higher resolution than <tt><b>dpi</b></tt>, then Ghostscript will render the
+document with a submultiple of the printer resolution. For example, if
+<tt><b>MaxResolution</b></tt> is set to 360 and the output printer supports
+up to 1200 dpi, then Ghostscript renders the document with an internal
+resolution of 1200/4=300 dpi. This can be very useful to reduce the memory
+requirements when printing in True Color on some high resolution ink-jet color
+printers.</dd>
+
+</dl></dd>
+
+</dl>
+</blockquote>
+
+<p>
+These properties can be queried through the <tt><b>currentpagedevice</b></tt>
+operator. The following PostScript code snippet shows how to do it for some
+of the properties:
+</p>
+
+<blockquote><pre>
+currentpagedevice /BitsPerPixel get == % displays the selected depth
+
+currentpagedevice /UserSettings get % get the additional options..
+/us exch def % ..and assign them to a variable
+
+us /DocumentName get == % displays the document name
+us /SelectedRange get == % displays the selected page range
+
+% other misc. informations (don't rely on them)
+
+us /Color get == % 1 => monochrome output, 2 => color output
+us /PrintCopies get == % displays the number of copies requested
+</pre></blockquote>
+
+<p>
+There are a few undocumented informations stored in the <tt><b>UserSettings</b></tt>
+dictionary. You should not rely on them. Their use is still experimental and
+they could be removed in a future version.
+</p>
+
+<h3><a name="Win_duplex"></a>Duplex printing</h3>
+
+<p>
+If the Windows printer supports the duplex printing feature, then it will
+also be available through the <b><tt>mswinpr2</tt></b> device. You can query
+for this support through the <b><tt>/Duplex</tt></b> propery of the
+<b><tt>currentpagedevice</tt></b>. If it returns <b><tt>null</tt></b>, then
+the feature is not supported by the selected printer. Otherwise, <b><tt>true</tt></b>
+means that the printer is currently set up to print on both faces of the paper
+and <b><tt>false</tt></b> that it is not, but that it can.
+</p>
+
+<p>
+The following example shows how to print on both faces of the paper (using
+the long side of the paper as the reference):
+</p>
+
+<blockquote><pre>
+&lt;&lt; /Duplex true /Tumble false &gt;&gt; setpagedevice
+</pre></blockquote>
+
+<p>
+</p>
+
+
+<hr>
+
+<h2><a name="File_formats"></a>File formats</h2>
+
+<h3><a name="JFIF"></a>JPEG file format (JFIF)</h3>
+
+<p>
+Ghostscript includes output drivers that can produce <a
+href="http://www.ijg.org/">Independent JPEG Group</a> JFIF (JPEG File
+Interchange Format) files from PostScript images. <b>Please note</b> that
+JPEG is a compression method specifically intended for continuous-tone
+images such as photographs, not for graphics, and it is therefore quite
+unsuitable for the vast majority of page images produced with PostScript,
+which should be saved in a form better for graphics, such as
+<a href="http://www.libpng.org/pub/png/">Portable Network Graphics</a>
+(PNG) format. If you get crummy-looking JPEG files, don't blame
+Ghostscript; instead consult a reference about uses and abuses of JPEG,
+such as the JPEG FAQ
+
+<blockquote>
+<a href="http://www.faqs.org/faqs/jpeg-faq/">http://www.faqs.org/faqs/jpeg-faq/</a>
+</blockquote>
+
+<p>
+You can use the JPEG output drivers -- <b><tt>jpeg</tt></b> to produce
+color JPEG files and <b><tt>jpeggray</tt></b> for grayscale JPEGs -- the
+same as other file-format drivers: by specifying the device name and an
+output file name, for example
+
+<blockquote><b><tt>
+gs -sDEVICE=jpeg -sOutputFile=foo.jpg foo.ps
+</tt></b></blockquote>
+
+<p>
+You can also use the <a href="Use.htm#Resolution_switch"><b><tt>-r</tt></b>
+switch</a> to specify the imaging resolution and thus the output file's
+size in pixels. The default resolution is normally 72&times;72dpi.
+
+<p>
+The JPEG devices support several special parameters to control the JPEG
+"quality setting" (DCT quantization level).
+
+<blockquote>
+<dl>
+<dt><b><tt>-dJPEGQ=</tt></b><b><em>N</em></b> (integer from 0 to 100, default 75)
+<dd>Set the quality level <b><em>N</em></b> according to the widely used
+IJG quality scale, which balances the extent of compression against the
+fidelity of the image when reconstituted. Lower values drop more
+information from the image to achieve higher compression, and therefore
+have lower quality when reconstituted.
+
+<dt><b><tt>-dQFactor=</tt></b><b><em>M</em></b> (float from 0.0 to 1.0)
+<dd>Adobe's QFactor quality scale, which you may use in place of
+<b><tt>JPEGQ</tt></b> above. The QFactor scale is used by PostScript's
+DCTEncode filter but is nearly unheard-of elsewhere.
+</dl>
+</blockquote>
+
+<p>
+At this writing the default JPEG quality level of 75 is equivalent to
+<b><tt>-dQFactor=0.5</tt></b>, but the JPEG default might change in the
+future. The JPEG drivers could be extended to support additional JPEG
+compression options, such as the other DCTEncode filter parameters, but so
+far they haven't been.
+
+<h3><a name="TIFF"></a>TIFF file formats</h3>
+
+<p>
+There are two unrelated sets of TIFF drivers. There are two color TIFF
+drivers that produce uncompressed output:
+
+<blockquote>
+<dl>
+<dt><b><tt>tiff12nc</tt></b>
+<dd>Produces 12-bit RGB output (4 bits per component).
+<dt><b><tt>tiff24nc</tt></b>
+<dd>Produces 24-bit RGB output (8 bits per component).
+</dl>
+</blockquote>
+
+<p>
+The remaining TIFF drivers all produce black-and-white output with different
+compression modes:
+
+<blockquote>
+<dl>
+<dt><b><tt>tiffcrle</tt></b>
+<dd>G3 fax encoding with no EOLs
+<dt><b><tt>tiffg3</tt></b>
+<dd>G3 fax encoding with EOLs
+<dt><b><tt>tiffg32d</tt></b>
+<dd>2-D G3 fax encoding
+<dt><b><tt>tiffg4</tt></b>
+<dd>G4 fax encoding
+<dt><b><tt>tifflzw</tt></b>
+<dd>LZW-compatible (tag = 5) compression
+<dt><b><tt>tiffpack</tt></b>
+<dd>PackBits (tag = 32773) compression
+</dl>
+</blockquote>
+
+<p>
+The black-and-white TIFF drivers support creation of files that are
+comprised of more than a single strip. Multi-strip files reduce the memory
+requirement on the reader, since readers need only store and process one
+strip at a time. These drivers provide two parameters beyond the standard
+set:
+
+<blockquote>
+<dl>
+<dt><b><tt>-dMaxStripSize=</tt><em>N</em></b> (non-negative integer; default = 0)
+<dd>Set the maximum (uncompressed) size of a strip.
+
+<dt><b><tt>-dAdjustWidth=</tt><em>true|false</em></b> (Boolean; default =
+true)
+<dd>If true, then if the requested page width is close to either A4 (1728
+columns) or B4 (2048 columns), set the page width to A4 or B4 respectively.
+</dl></blockquote>
+
+<p>
+The TIFF 6.0 specification, Section 7, page 27, recommends that the size of
+each strip be about 8 Kbytes. As an example, to generate the 'tiger' in
+tiffg4 format that has the recommended strip size, use:
+
+<blockquote><pre>
+gs -sDEVICE=tiffg4 -sOutputFile=tiger.tif -dMaxStripSize=8192 examples/tiger.ps
+</pre></blockquote>
+
+<p>
+If the value of the <b><tt>MaxStripSize</tt></b> parameter is smaller than a
+single image row, then no error will be generated, and the TIFF file will be
+generated correctly using one row per strip. Note that smaller strip sizes
+increase the size of the file by increasing the size of the StripOffsets and
+StripByteCounts tables, and by reducing the effectiveness of the compression
+which must start over for each strip.
+
+<p>
+If the value of MaxStripSize is 0 (the default), then the entire image will
+be a single strip.
+
+
+<hr>
+
+<h2><a name="Display_devices"></a>Display Devices</h2>
+
+<p>
+Ghostscript is often used for screen display of postscript and pdf documents.
+In many cases, a client or 'viewer' application calls the ghostscript engine
+to do the rasterization and handles the display of the resulting image itself,
+but it is also possible to invoke ghostscript directly and select an output
+device which directly handles displaying the image on screen.
+
+<p>
+This section describes the various display-oriented devices that are available
+in ghostscript.
+
+<h3><a name="x11_devices"></a>X Window System</h3>
+
+<p>
+Perhaps the most common use of of a display device is with the X Window System
+on unix-like systems. It is the default device on the command line client on
+such systems, and is used more creatively by the gv client application.
+
+<p>
+The available devices are:
+
+<dl>
+<dt><b>x11</b>
+<dd>This is the default device, handling display on X11R6.
+
+<dt><b>x11alpha</b>
+<dd>This is the x11 device, but with antialiasing. It is equivalent to
+invoking the x11 device with the options <tt>-dGraphicsAlphaBits=4
+-dTextAlphaBits=4 -dMaxBitmap=50000000</tt>.
+
+<dt><b>x11cmyk</b>
+<dd>This device rasterizes the image in the CMKY color space, then flattens
+it to RGB for display. It's intended for testing only.
+
+<dt><b>x11mono</b>
+<dd>This is a strict black-and-white device for 1-bit monochrome displays.
+
+<dt><b>x11gray2</b>
+<dd>This is a device for 2 bpp (4-level) monochrome displays.
+
+<dt><b>x11gray4</b>
+<dd>This is a device for 4 bpp (16-level) monochrome displays.
+</dl>
+
+
+<hr>
+
+<h2><a name="HP_color_inkjet"></a>H-P color inkjet printers</h2>
+
+<p>
+This section, written by George Cameron, deals with the DeskJet 500C,
+DeskJet 550C, PaintJet, PaintJet XL, PaintJet XL300, the DEC LJ250
+operating in PaintJet-compatible mode.
+
+<h3><a name="HP_gdevcdj"></a>Drivers contained in <b><tt>gdevcdj.c</tt></b></h3>
+
+<p>
+The source module <b><tt>gdevcdj.c</tt></b> contains six generic drivers:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>cdj500</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>HP DeskJet 500C and 540C
+<tr valign=top> <td><b><tt>cdj550</tt></b>
+ <td>&nbsp;
+ <td>HP DeskJet 550C, 560C, 660C, 660Cse
+<tr valign=top> <td><b><tt>pjxl300</tt></b>
+ <td>&nbsp;
+ <td>HP PaintJet XL300, DeskJet 1200C, and CopyJet
+<tr valign=top> <td><b><tt>pjtest</tt></b>
+ <td>&nbsp;
+ <td>HP PaintJet
+<tr valign=top> <td><b><tt>pjxltest</tt></b>
+ <td>&nbsp;
+ <td>HP PaintJet XL
+<tr valign=top> <td><b><tt>declj250</tt></b>
+ <td>&nbsp;
+ <td>DEC LJ250
+</table></blockquote>
+
+<p>
+All these drivers have 8-bit (monochrome), 16-bit and 24-bit (colour) and
+for the DJ 550C, 32-bit (colour, CMYK mode) options in addition to standard
+colour and mono drivers. It is also possible to set various
+printer-specific parameters from the command line, for example
+
+<blockquote><b><tt>
+gs&nbsp;-sDEVICE=cDeskJet&nbsp;-dBitsPerPixel=16&nbsp;-dDepletion=1&nbsp;-dShingling=2&nbsp;tiger.ps
+</tt></b></blockquote>
+
+<p>
+<b>Note:</b> the old names <b><tt>cDeskJet</tt></b>,
+<b><tt>cdjcolor</tt></b> and <b><tt>cdjmono</tt></b> drivers have been
+retained; however, their functionality duplicates that available using the
+drivers above (and <b><tt>cDeskJet</tt></b> is identical to
+<b><tt>cdj500</tt></b>). That is, we can use
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>gs -sDEVICE=cdj500 -dBitsPerPixel=24</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>for <b><tt>cdjcolor</tt></b>, and
+<tr valign=top> <td><b><tt>gs -sDEVICE=cdj500 -dBitsPerPixel=1</tt></b>
+ <td>&nbsp;
+ <td>for <b><tt>cdjmono</tt></b>
+</table></blockquote>
+
+<h3><a name="HP_paper_size"></a>Default paper size</h3>
+
+<p>
+If the preprocessor symbol <b><tt>A4</tt></b> is defined, the default paper
+size is ISO A4; otherwise it is U.S. letter size (see about
+<a href="Use.htm#Known_paper_sizes">paper sizes</a> in the usage
+documentation). You can <a href="Use.htm#Paper_size">specify other paper
+sizes</a> on the command line, including A3 for the PaintJet XL and
+PaintJet XL300, as also explained in the usage documentation.
+
+<h3><a name="HP_limits"></a>DeskJet physical limits</h3>
+
+<p>
+The DeskJet's maximum printing width is 2400 dots, or 8 inches
+(20.32cm). The printer manuals say that the maximum recommended printing
+height on the page is 10.3 inches (26.16cm), but since this is obviously
+not true for A4 paper, and I have been unable to detect any problems in
+printing longer page lengths, this would seem to be a rather artificial
+restriction.
+
+<p>
+All DeskJets have 0.5 inches (1.27cm) of unprintable bottom margin, due to the mechanical
+arrangement used to grab the paper. Side margins are approximately 0.25 inches (0.64cm)
+for U.S. letter paper, and 0.15 inches (0.38cm) for A4.
+
+<h4><a name="HP_command_line"></a>Printer properties (command-line parameters)</h4>
+
+<p>
+Several printer "properties" have been implemented for these printers.
+Those available so far are all integer quantities, and thus may be
+specified, for instance, like
+
+<blockquote>
+<b><tt>gs -dBitsPerPixel=32 -dShingling=1</tt></b> ...
+</blockquote>
+
+<p>
+which sets the <b><tt>BitsPerPixel</tt></b> parameter to 32 and the
+<b><tt>Shingling</tt></b> parameter to 1.
+
+<h4><a name="HP_bpp"></a>Bits per pixel</h4>
+
+<p>
+If the preprocessor symbol <b><tt>BITSPERPIXEL</tt></b> is defined as an
+integer (see below for the range of allowable values), that number defines
+the default bits per pixel (bit depth) for the generic drivers. If the
+symbol is undefined, the default is 24 bits per pixel. It is, of course,
+still possible to specify the value from the command line as described
+below. Note also that the <b><tt>cDeskJet</tt></b>,
+<b><tt>cdjcolor</tt></b> and <b><tt>cdjmono</tt></b> drivers are unaffected
+by setting this symbol, as their default settings are predefined to be 1, 3
+and 24 respectively.
+
+<p>
+All of the drivers in <b><tt>gdevcdj.c</tt></b> accept a command line
+option to set the <b><tt>BitsPerPixel</tt></b> property. This gives
+considerable flexibility in choosing various tradeoffs among speed,
+quality, colour, etc. The valid numbers are:
+
+<blockquote><dl compact>
+<dt><b>1</b>
+<dd>A standard Ghostscript monochrome driver, using black ink (by
+installing the separate mono cartridge in the case of the DeskJet 500C, or
+automatically for the other printers).
+
+<dt><b>3</b>
+<dd>A standard Ghostscript colour driver, using internal dithering. This
+is fast to compute and to print, but the clustered dithering can lose some
+detail and colour fidelity.
+
+<dt><b>8</b>
+<dd>An "error-diffusion" monochrome driver which uses Floyd-Steinberg
+dithering to print greyscale images. The patterns are much more randomised
+than with the normal clustered dithering, but the data files can be much
+larger and somewhat slower to print.
+
+<dt><b>16</b>
+<dd>A "cheaper" version of the 24-bit driver, which generates
+Floyd-Steinberg colour dithered output using the minimum memory (this may
+be helpful when using Ghostscript has not been compiled using a 16-bit
+build environment). The quality can be almost as good as the 24-bit
+version.
+
+<dt><b>24</b>
+<dd>A high-quality colour driver using Floyd-Steinberg dithering for
+maximum detail and colour range. However, it is very memory-intensive, and
+thus can be slow to compute. It tends to produce rather larger raw data
+files, so they can also take longer to print.
+
+<dt><b>32</b>
+<dd>Only for the DeskJet 550C, which uses the black cartridge and the
+colour cartridge simultaneously (that is, CMYK printing). This printer can
+both be faster and give higher quality than the DeskJet 500C, because of
+the true black ink. (Note that the 24-bit mode also permits CMYK printing
+on this printer, and uses less memory. Any differences between 24-bit and
+32-bit should be small.)
+</dl></blockquote>
+
+<h4><a name="HP_DeskJet_properties"></a>DeskJet properties</h4>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Name
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>&nbsp;
+<tr> <td colspan=5><hr>
+<tr valign=top> <td><b><tt>BlackCorrect</tt></b>
+ <td>&nbsp;
+ <td><b><tt>int</tt></b>
+ <td>&nbsp;
+ <td>Colour correction to give better blacks when using the DJ500C in colour mode. For example, the default of 4 reduces the cyan component to 4/5. Range accepted: 0 - 9 (0 = none).
+<tr valign=top> <td><b><tt>Shingling</tt></b>
+ <td>&nbsp;
+ <td><b><tt>int</tt></b>
+ <td>&nbsp;
+ <td>Interlaced, multi-pass printing: 0 = none, 1 = 50%, 2 = 25%, 2 is best and slowest.
+<tr valign=top> <td><b><tt>Depletion</tt></b>
+ <td>&nbsp;
+ <td><b><tt>int</tt></b>
+ <td>&nbsp;
+ <td>"Intelligent" dot-removal: 0 = none, 1 = 25%, 2 = 50%, 1 best for graphics? Use 0 for transparencies.
+</table></blockquote>
+
+<h4><a name="HP_PaintJet_properties"></a>PaintJet XL300 / PaintJet XL properties</h4>
+
+<blockquote>
+<table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Name
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>
+<tr> <td colspan=5><hr>
+<tr valign=top> <td><b><tt>PrintQuality</tt></b>
+ <td>&nbsp;
+ <td><b><tt>int</tt></b>
+ <td>&nbsp;
+ <td>Mechanical print quality: -1 = fast, 0 = normal, 1 = presentation. Fast mode reduces ink usage and uses single-pass operation for some media types. Presentation uses more ink and the maximum number of passes, giving slowest printing for highest quality
+<tr valign=top> <td><b><tt>RenderType</tt></b>
+ <td>&nbsp;
+ <td><b><tt>int</tt></b>
+ <td>&nbsp;
+ <td><dl compact>
+ <dt><b>0</b><dd>driver does dithering
+ <dt><b>1</b><dd>snap to primaries
+ <dt><b>2</b><dd>snap black to white, others to black
+ <dt><b>3</b><dd>ordered dither
+ <dt><b>4</b><dd>error diffusion
+ <dt><b>5</b><dd>monochrome ordered dither
+ <dt><b>6</b><dd>monochrome error diffusion
+ <dt><b>7</b><dd>cluster ordered dither
+ <dt><b>8</b><dd>monochrome cluster ordered dither
+ <dt><b>9</b><dd>user-defined dither (not supported)
+ <dt><b>10</b><dd>monochrome user-defined dither ns.
+ </dl>
+</table>
+
+<p>
+The PaintJet (non-XL) has no additional properties.
+
+</blockquote>
+
+<h3><a name="HP_gamma"></a>Gamma correction</h3>
+
+<p>
+One consequence of using Floyd-Steinberg dithering rather than Ghostscript's
+default clustered ordered dither is that it is much more obvious that the
+ink dots are rather larger on the page than their nominal 1/180-inch or 1/300-inch
+size (clustering the dots tends to minimise this effect). Thus it is often
+the case that the printed result is rather too dark. A simple empirical
+correction for this may be achieved by preceding the actual PostScript
+file to be printed by a short file which effectively sets the gamma for
+the device, such as
+
+<blockquote><b><tt>
+gs ... gamma.ps colorpic.ps -c quit
+</tt></b></blockquote>
+
+<p>
+where <b><tt>gamma.ps</tt></b> is
+
+<blockquote>
+<pre>%!
+/.fixtransfer {
+ currentcolortransfer 4 {
+ mark exch
+ dup type dup /arraytype eq exch /packedarraytype eq or
+ 1 index xcheck and { /exec load } if
+ 0.333 /exp load
+ ] cvx 4 1 roll
+ } repeat setcolortransfer
+} bind odef
+.fixtransfer
+/setpagedevice { setpagedevice .fixtransfer } bind odef</pre>
+</blockquote>
+
+<p>
+This does the gamma correction <b><em>after</em></b> whatever correction
+the device might be doing already. To do the correction
+<b><em>before</em></b> the current correction,
+
+<blockquote>
+<pre>%!
+/.fixtransfer {
+ currentcolortransfer 4 {
+ mark 0.333 /exp load 4 -1 roll
+ dup type dup /arraytype eq exch /packedarraytype eq or
+ 1 index xcheck and { /exec load } if
+ ] cvx 4 1 roll
+ } repeat setcolortransfer
+} bind odef
+.fixtransfer
+/setpagedevice { setpagedevice .fixtransfer } bind odef</pre>
+</blockquote>
+
+<p>
+This example sets the gamma for R, G, and B to 3, which seems to work
+reasonably well in practice.
+
+<h3><a name="HP_resolution_enhance"></a>HP's resolution-enhanced mode for Inkjet printers</h3>
+
+<p>
+This feature is available on HP's more recent inkjet printers, including
+the DeskJet 520 (mono), 540 (mono or colour) and 560C (mono and colour).
+The colour and monochrome drivers for the HP DeskJet 550c are (probably)
+the best you will get for use with Ghostscript, for the following reasons.
+
+<p>
+These printers do not offer true 600&times;300dpi resolution. Those that
+print in colour are strictly 300&times;300dpi in colour mode, while in mono
+mode there is a pseudo 600&times;300dpi mode with the restriction that you
+can't print two adjacent dots. In effect what you have is 600dpi dot
+positioning, but on average you don't get more dots per line. This
+provides the possibility, for instance, to have sharper character outlines,
+because you can place dots on the edges nearer to their ideal positions.
+This is why it is worth doing.
+
+<p>
+However, HP will not support user-level programming of this
+resolution-enhanced mode, one reason being that (I understand) all the dot
+spacing has to be done by the driver, and if you get it wrong, you can
+actually damage the print head.
+
+<p>
+To summarise, you may lose a smidgin of (potential) text clarity using the
+550c drivers (<b><tt>cdj550</tt></b>, <b><tt>cdjcolor</tt></b>,
+<b><tt>cdjmono</tt></b> etc.), but other than that, they are the ones for
+the job.
+
+<h3><a name="HP_tips"></a>General tips</h3>
+
+<p>
+For all the printers above, the choice of paper is critically important to
+the final results. The printer manuals suggest type of paper, but in
+general, smoother, less fibrous types give better results. In particular,
+the special ink-jet paper can make a big difference: colours are brighter,
+but most importantly, there is almost no colour bleed, even with adjacent
+areas of very heavy inking. Similarly the special coated transparencies
+also work well (and ordinary transparencies do not work at all!).
+
+<p>
+The Unix procedure <a href="Unix-lpr.htm"><b><tt>unix-lpr.sh</tt></b></a>
+provides one example of setting up a multi-option colour PostScript
+<b><tt>lpr</tt></b> queue on Unix systems, and includes the ability to
+choose a range of different colour options and printer accounting and error
+logging.
+
+<p>
+<b>Caveat emptor!</b> It is not always easy for me to test all of these
+drivers, as the only colour printer I have here is the DeskJet 500C. I rely
+on others to test drivers for the additional machines and report their
+findings back to me.
+
+<hr>
+
+<h2><a name="BJC_8200"></a>Canon BJC-8200 printer</h2>
+
+<p>
+This section was contributed by the author of the <b><tt>uniprint</tt></b>
+configuration files for the Canon BJC-8200, Stephan C. Buchert &lt;<a
+href="mailto:scb@stelab.nagoya-u.ac.jp">scb@stelab.nagoya-u.ac.jp</a>&gt;.
+These files also handle the Japanese Canon F850 printer.
+
+<p>
+Warning: Usage of this program is neither supported nor endorsed by
+the Canon corporation. Please see the Ghostscript <a
+href="Public.htm">license</a> regarding warranty.
+
+<h3>Introduction</h3>
+
+<p>
+The Canon Bubble Jet printer BJC-8200 is designed for printing digital
+photos and halftone images. Software drivers for Windows 95-2000 and Mac are
+usually included and can be downloaded from the Canon web sites like
+<a href="http://consumer.usa.canon.com/bjc/bjc8200/">http://consumer.usa.canon.com/bjc/bjc8200/</a>
+for the US market. If these drivers cannot be used for some reason, then at
+present Ghostscript is probably the alternative giving the best results.
+
+<p>
+The BJC-8200 has features not found among the specs of earlier bubble jet
+models (except the even more advanced BJC-8500) and is advertised to offer:
+
+<ol>
+
+<li>microfine droplet technology;
+
+<li>support for printing on a new type of paper, Photo Paper Pro;
+
+<li>a printhead capable of printing up to 1200 DpI;
+
+<li>individual ink tanks for 6 colors;
+
+<li>an internal status monitor reporting low ink back to a driver;
+
+<li>an optional color scanner cartridge for up to 600 DpI resolution.
+
+</ol>
+
+<p>
+Access to features 5 and 6 requires use of the original Canon drivers for
+the foreseeable future. This README is about getting the printer features
+1-3 working with Ghostscript. No (re)compilation of Ghostscript is normally
+required.
+
+<p>
+Ghostscript comes with a relatively highly configurable driver, called
+<a href="#Uniprint">uniprint</a>, for printers which understand raster
+images in various propriety formats. Most options for this driver are
+usually organized into files having the suffix ".upp." Ghostscript
+versions >= 5.10 (or even earlier) include such uniprint control files
+for the Canon BJC-610. They work also well for some other Canon Bubble
+Jet models, for example for my BJC-35vII. But when using them for a
+BJC-8200 the result is unsatisfactory.
+
+<h3>The uniprint control files for the BJC-8200</h3>
+
+<p>
+After some experimenting with the options for uniprint I have obtained quite
+satisfactory prints with my printer(*). This distribution includes six new
+uniprint control files:
+
+<ul>
+<li>bj8pp12f.upp
+<li>bj8hg12f.upp
+<li>bj8gc12f.upp
+<li>bj8oh06n.upp
+<li>bj8ts06n.upp
+<li>bj8pa06n.upp
+</ul>
+
+<p>
+They are included in Ghostscript >=6.21. For older versions you can put
+them anywhere in the Ghostscript search path (type "gs -h" to see the
+path), but should perhaps add the files to the directory with the
+other *.upp files. This is "/usr/share/ghostscript/gs6.01/lib" in my
+RedHat Linux 6.1 box with Aladdin Ghostscript 6.01.
+
+<p>
+Here is an explanation of my file name convention: the prefix "bj8" should
+perhaps be used for the Canon BJC-8200 and compatible (like the Japanese
+F850 and perhaps the non-Japanese BJC-8500) models. The next two letters
+indicate the print media:
+
+<ul>
+<li>pp "Photo Paper Pro"
+<li>hg "High Gloss Photo Film"
+<li>gc "Glossy Photo Cards"
+<li>oh "OHP transparencies"
+<li>ts "T-shirt transfer"
+<li>pa "Plain Paper"
+</ul>
+
+<p>
+The numbers at positions 6 and 7 indicate the resolution
+
+<ul>
+<li>12 1200x1200 DpIxDpI
+<li>06 600x600 DpIxDpI
+</ul>
+
+<p>
+The last letter stands for a quality factor that effects also the print
+speed (presumably related to the number of passes that the printhead makes).
+
+<ul>
+<li>f highest quality
+<li>n normal quality
+</ul>
+
+<p>
+Printing a postcard size (~10x15 cm^2) image at 1200x1200 DpI^2 takes about
+3 minutes. The output of Ghostscript is then typically 4-5 MByte. The
+bootleneck seems to be the transfer of the raster image in run-length
+encoded Canon format to the printer (via the parallel port on my system) or
+the printer's speed, not Ghostscript or the uniprint renderer.
+
+<h3>Further Optimization for the Canon BJC-8200</h3>
+
+So far I have only experimented with the printer initialization code at the
+beginning of each page (-dupBeginPageCommand) and the resolution (-r). Other
+options, particularly the transfer arrays (-dupBlackTransfer,
+-dupCyanTransfer, -dupMagentaTransfer, -dupYellowTransfer) and the margins
+(-dupMargins) were simply copied from the files for the BJC-610, but they
+may need to be changed for optimized performance.
+
+<p>
+Here is information useful for changing or adding uniprint control files for
+the BJC-8200:
+
+<p>
+In "-dupBeginPageCommand=..." use the line
+
+<blockquote>
+ 1b28 64 0400 04b0 04b0
+</blockquote>
+
+<p>
+for 1200x1200 resolution, and
+
+<blockquote>
+ 1b28 64 0400 0258 0258
+</blockquote>
+
+<p>
+for 600x600. The "-r" option in the control file must of course match this
+line. Other resolutions might work as well, but I didn't try.
+
+<p>
+Crucial are the numbers in the lines like
+
+<blockquote><pre>
+ 1b28 63 0300 3005 04
+ ^ ^
+ Plain Paper 0 4 Highest quality
+ OHP transparency 2 .
+ T-shirt transfer 3 .
+ Glossy Photo Film 5 .
+ High Gloss Paper 6 0 Lowest quality
+ Photo Paper Pro 9
+</pre></blockquote>
+
+<h3>Outlook</h3>
+
+<p>
+Presently uniprint can use the black (K), cyan (C), magenta (M), and
+yellow (Y) colors in the BJC-8200. The unused colors are photo (or
+light) cyan (c) and magenta (m). Also the Canon driver seems to use
+only CMYK, for example when printing on Photo Paper Pro in "Camera" or
+"SuperPhoto" mode. These modes supposedly produce prints of the best
+quality that the Canon driver can offer. Other modes of Canon driver
+do use up to all six color cartridges (CMYKcm). Therefore expanding
+uniprint's capabilities for six colors would be interesting, but it may
+not increase the output quality of 6-color printers such as the
+BJC-8200 drastically.
+
+<p>
+More control files for uniprint could be added in order to offer more
+versatility for controlling the BJC-8200 within a Ghostscript
+installation. The number of possible combinations for media type, resolution
+and print quality factor is very large, many combinations would not make
+much sense, many might be used here and there, but relatively rarely. The
+user would have to remember a name for each combination that is used.
+
+<p>
+A better way would be to let the user patch optionally a user owned or
+system wide uniprint control file before each print via some print
+tool. This is similar to the approach taken by Canon with their driver for
+Windows. Similarly a uniprint tool could also incorporate other functions
+such as printing test and demo pages and the low ink warning once the
+protocol for this is known. Clearly it would be difficult to code such a
+uniprint tool for all the platforms where Ghostscript is running.
+
+<h3>Usage on RedHat Linux</h3>
+
+<p>
+In order to install a BJC-8200 printer on a RedHat Linux system with
+RedHat's printtool, you need also to insert with a text editor the contents
+of the file <b><tt>bj8.rpd</tt></b> into the RedHat printer database
+<b><tt>/usr/lib/rhs/rhs-printfilters/printerdb</tt></b>. Insert it most
+appropriately after the section
+
+<blockquote><pre>
+StartEntry: U_CanonBJC610
+.
+.
+.
+EndEntry
+
+< --- insert here "bj8.rpd" from this distribution:
+< --- StartEntry: U_CanonBJC8200
+ .
+ .
+ .
+</pre></blockquote>
+
+<h3>Contacting the Author</h3>
+
+<p>
+E-mail address: &lt;<a
+href="mailto:scb@stelab.nagoya-u.ac.jp">scb@stelab.nagoya-u.ac.jp</a>&gt;
+
+<p>
+Footnotes:
+
+<p>
+(*) Actually I have a F850, not a BJC-8200. That model is sold for the
+Japanese market only. The specs and also the external look are the
+same as those of the BJC-8200 models for the American and European
+markets. I expect that the raster image mode which is used exclusively
+by Ghostscript is entirely compatible for both models.
+
+<p>
+Stephan C. Buchert
+
+<hr>
+
+<h2><a name="BJC"></a>Other Canon BubbleJet (BJC) printers</h2>
+
+<p>
+This section was contributed by the author of the drivers, Yves Arrouye
+(&lt;<a href="mailto:yves.arrouye@usa.net">yves.arrouye@usa.net</a>&gt;, but
+please do not send questions to him: he no longer maintains these drivers.)
+The drivers handle Canon BJC-600, BJC-4xxx, BJC-70, Stylewriter 2x00, and
+BJC-800 printers.
+
+<h3><a name="BJC_history"></a>History</h3>
+
+<p>
+The BJC-600 driver was written in the first place by Yoshio Kuniyoshi and
+later modified by Yves Arrouye. We tried to make it evolve synchronously,
+though Yoshio cannot be reached since a long time ago. The drivers are
+based on code for the HP printers by George Cameron (in fact, they are in
+the same file!), so he's the first person to thank.
+
+<p>
+The 2.00 version of the drivers was a complete rewrite of the driver
+(arguments, optimization, colour handling, in short: everything!) by Yves
+Arrouye. That release was also the first one to be able to use the full
+width of an A3 paper size. PostScript Printer Description (PPD) files for
+the drivers were released with version 2.15. They are incomplete,
+but they can be used to drive the printers' main features.
+
+<h3><a name="BJC_build"></a>Configuring and building the BJC drivers</h3>
+
+<h4><a name="BJC_defaults"></a>Modify values in
+<b><tt>gdevbjc.h</tt></b></h4>
+
+<p>
+Configure the drivers by modifying the default values in the file
+<b><tt>gdevbjc.h</tt></b> or on the compilation line. If you don't do
+that, the drivers use reasonable defaults that make them work "as
+expected". All default values shown here are defined in that file.
+
+<h4><a name="BJC_CMYK_RGB"></a>CMYK-to-RGB color conversion</h4>
+
+<p>
+By default, the drivers use the same algorithm as Ghostscript to convert
+CMYK colors to RGB. If you prefer to use Adobe formulas, define
+<b><tt>USE_ADOBE_CMYK_RGB</tt></b> when compiling. (See the top of the
+file <b><tt>gdevcdj.c</tt></b> to see the difference between the two.)
+
+<h4><a name="BJC_vertical_centering"></a>Vertical centering of the
+printable area</h4>
+
+<p>
+The drivers center the imageable area horizontally but not vertically, so
+that what can be printed does use the most of the output media. If you
+define <b><tt>BJC_DEFAULT_CENTEREDAREA</tt></b> when compiling, then the
+top and bottom margins will be the same, resulting in a (smaller)
+vertically centered imageable area also.
+
+<h4><a name="BJC_margins"></a>Page margins</h4>
+
+<p>
+If you define <b><tt>USE_RECOMMENDED_MARGINS</tt></b>, then the top and
+bottom margins will be the same (that is,
+<b><tt>BJC_DEFAULT_CENTEREDAREA</tt></b> will be defined for you) and the
+margins will be the 12.4mm recommended by Canon. Since margins are
+complicated (because one must rely on the mechanical precision of the
+printer), the drivers do something about the bottom margin: by default the
+bottom margin is 9.54mm for the BJC-600 driver and 7mm for the BJC-800. If
+you define <b><tt>USE_TIGHT_MARGINS</tt></b>, then the bottom margin is 7mm
+for both drivers (but I never managed to get my own BJC-600 to print a line
+on this low bound, hence the larger default). Regardless of the presence
+of this definition, <b><tt>USE_FIXED_MARGINS</tt></b> will not allow the
+BJC-800 to use the lower 7mm bottom margin, so if you have a problem with
+the bottom margin on a BJC-800, just define that (without defining
+<b><tt>USE_TIGHT_MARGINS</tt></b>, of course).
+
+<p>
+A quick way to be sure the margins you selected is to print a file whose
+contents are:
+
+<blockquote><b><tt>
+%!<br>
+clippath stroke showpage
+</tt></b></blockquote>
+
+<p>
+If the margins are okay, you will get a rectangle visibly surrounding
+the printable area. If they're not correct, one or more of the sides will
+be either incomplete or completely unprinted.
+
+<h4><a name="BJC_compile"></a>Makefile and compilation</h4>
+
+<p>
+Make sure the <b><tt>bjc600</tt></b> or <b><tt>bjc800</tt></b> devices are
+in <a href="Make.htm#Features_and_devices"><b><tt>DEVICE_DEVS</tt></b> in
+the makefile</a>; that is, look in the makefile for your platform and add
+them if necessary -- they may already be there. As of Ghostscript 5.10,
+for instance, one makefile has
+
+<blockquote><b><tt>
+DEVICE_DEVS6=bj10e.dev&nbsp;bj200.dev&nbsp;bjc600.dev&nbsp;bjc800.dev
+</tt></b></blockquote>
+
+<h3><a name="BJC_usage"></a>Use of the drivers</h3>
+
+<p>
+There are two drivers here. The "<b><tt>bjc600</tt></b>" one supports the BJC-600 and
+BJC-4xxx (maybe the BJC-70 as well) and the "<b><tt>bjc800</tt></b>" one supports the
+BJC-800 series. Remarks here that apply to both drivers use the name
+"bjc".
+
+<h4><a name="BJC_options"></a>Supported Options and Defaults</h4>
+
+<p>
+Note: "options", "properties", and "parameters" designate the same thing:
+device parameters that you can change.
+
+<p>
+Giving an option an incorrect value causes an error. Unless stated
+otherwise, this error will be a rangecheckerror. Options may be set from
+the Ghostscript command line (using the <b><tt>-d</tt></b> and
+<b><tt>-s</tt></b> switches or other predetermined switches if they have an
+effect on the driver) or using the PostScript Level 2
+<b><tt>setpagedevice</tt></b> operator if Ghostscript has been compiled
+with the <b><tt>level2</tt></b> or <b><tt>level3</tt></b> device (which it should
+<b><tt>;-)</tt></b>). There are <b>no</b> special-purpose operators such as
+one was able to find in Level 1 printers.
+
+<p>
+The bjc uses 24 bits per pixel by default (unless you change the value of
+<b><tt>BJC_BITSPERPIXEL</tt></b>), corresponding to CMYK printing.
+Supported modes are 1 bpp and 4 bpp (gray levels), 8 bpp, 16 bpp, 24 bpp
+and 32 bpp (colours). Colours are preferably stored in the CMYK model
+(which means, for example, that with 16 bpp there are only 16 different
+shades of each color) but it is possible to store them as RGB color for
+some depths. Some modes do Floyd-Steinberg dithering and some don't, but
+use the default Ghostscript halftoning (in fact, when halftoning is used,
+dithering takes also place but because of the low point density it is
+usually not efficient, and thus invisible).
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Descriptions of printing modes by bpp and <b><tt>Colors</tt></b></font><hr>
+<tr valign=bottom>
+ <th align=left>bpp
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left><b><tt>Colors</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Mode
+<tr> <td colspan=5><hr>
+<tr valign=top> <td>32
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td>CMYK colour printing, Floyd-Steinberg dithering
+<tr valign=top> <td>24
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td>The same. (But each primary colour is stored on 6 bits instead of 8.)
+<tr valign=top> <td>24
+ <td>&nbsp;
+ <td align=center>3
+ <td>&nbsp;
+ <td>RGB colour printing, Floyd-Steinberg dithering. This mode does
+ <b><tt>not</tt></b> use the black cartridge (that's why it
+ exists, for when you don't want to use it <b><tt>;-)</tt></b>).
+ Each primary colour is stored in 8 bits as in the 32/4 mode,
+ but black generation and under-color removal are done on the
+ driver side and not by Ghostscript, so you have no control over
+ it. (This mode is no longer supported in this driver.)
+<tr valign=top> <td>16
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td>CMYK colour printing, halftoned by Ghostscript. F-S dithering
+ is still visible here (but the halftone patterns are visible
+ too!).
+<tr valign=top> <td>8
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td>The same. (But each primary colour is stored in 2 bits instead of 4.)
+<tr valign=top> <td>8
+ <td>&nbsp;
+ <td align=center>3
+ <td>&nbsp;
+ <td>RGB colour printing. This mode is not intended for use. What I
+ mean is that it should be used only if you want to use custom
+ halftone screens <b>and</b> the halftoning is broken using the
+ 8/4 mode (some versions of Ghostscript have this problem).
+<tr valign=top> <td>8
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td>Gray-level printing, Floyd-Steinberg dithering
+<tr valign=top> <td>1
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td>Gray-level printing halftoned by Ghostscript
+</table></blockquote>
+
+<p>
+These modes are selected using the <b><tt>BitsPerPixel</tt></b> <b>and</b>
+<b><tt>Colors</tt></b> integer options (either from the command line or in
+a PostScript program using <b><tt>setpagedevice</tt></b>). See below.
+
+<p>
+A note about darkness of what is printed: Canon printers do print dark,
+really. And the Floyd-Steinberg dithering may eventually darken your image
+too. So you may need to apply gamma correction by calling Ghostscript as in
+
+<blockquote><b><tt>
+gs -sDEVICE=bjc600 gamma.ps myfile.ps
+</tt></b></blockquote>
+
+<p>
+where <b><tt>gamma.ps</tt></b> changes the gamma correction (here to 3 for
+all colors); 0.45 gives me good results, but your mileage may vary. The
+bigger the value the lighter the output:
+
+<blockquote><b><tt>
+{ 0.45 exp } dup dup currenttransfer setcolortransfer
+</tt></b></blockquote>
+
+<p>
+The drivers support printing at 90dpi, 180dpi and 360dpi. Horizontal and
+vertical resolutions must be the same or a limitcheck error will happen. A
+rangecheck will happen too if the resolution is not
+90&nbsp;&times;2^<small><sup><b>N</b></sup></small>. If the driver
+is compiled with <b><tt>-DBJC_STRICT</tt></b> a rangecheck also happens if
+the resolution is not one of those supported. This is not the case, as we
+expect that there may be a 720dpi bjc some day.
+
+<p>
+Here are the various options supported by the bjc drivers, along with
+their types, supported values, effects, and usage:
+
+<dl>
+<dt><b><tt>BitsPerPixel</tt></b> (int)
+<dd>Choose the depth of the page. Valid values are 1, 8, 16, 24 (the
+default) and 32.
+
+<p>
+Note that when this is set for the first time, the <b><tt>Colors</tt></b>
+property is automatically adjusted unless it is also specified. The table
+here shows the corresponding color models and the rendering method visible:
+"GS" for Ghostscript halftoning and "F-S" for Floyd-Steinberg dithering.
+When both are present it means that the dithering of halftones is visible.
+Default choices are indicated by asterisk "*".
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=9 bgcolor="#CCCC00"><hr><font size="+1">Valid <b><tt>Colors</tt></b> values for<br>allowed <b><tt>BitsPerPixel</tt></b> values
+</font><hr>
+<tr valign=bottom>
+ <th align=left>bpp
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left><b><tt>Colors</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>&nbsp;
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Color model
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Dithering
+<tr> <td colspan=9><hr>
+<tr valign=top> <td>32
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>&nbsp;
+ <td>CMYK
+ <td>&nbsp;
+ <td>F-S
+<tr valign=top> <td>24
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td><b>*</b>
+ <td align=center>&nbsp;
+ <td>CMYK
+ <td>&nbsp;
+ <td>F-S
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>3
+ <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>&nbsp;
+ <td>RGB
+ <td>&nbsp;
+ <td>F-S
+<tr valign=top> <td>16
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>&nbsp;
+ <td>CMYK
+ <td>&nbsp;
+ <td>GS, F-S
+<tr valign=top> <td>8
+ <td>&nbsp;
+ <td align=center>4
+ <td>&nbsp;
+ <td><b>*</b>
+ <td align=center>&nbsp;
+ <td>CMYK
+ <td>&nbsp;
+ <td>GS
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>3
+ <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>&nbsp;
+ <td>RGB
+ <td>&nbsp;
+ <td>GS
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td>&nbsp;
+ <td align=center>&nbsp;
+ <td>K (CMYK)
+ <td>&nbsp;
+ <td>F-S
+<tr valign=top> <td>1
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td><b>*</b>
+ <td align=center>&nbsp;
+ <td>K (CMYK)
+ <td>&nbsp;
+ <td>GS
+</table></blockquote>
+
+<p>Also note that automagical change of one parameter depending on the
+other one does not work in a <b><tt>setpagedevice</tt></b> call. This
+means that if you want to change <b><tt>BitsPerPixel</tt></b> to a value
+whose valid <b><tt>Colors</tt></b> values do not include the actual
+<b><tt>Colors</tt></b> value, you must change <b><tt>Colors</tt></b> too.
+</dl>
+
+<dl>
+<dt><b><tt>Colors</tt></b> (int)
+<dd>Choose the number of color components from among 1, 3 and 4 (the
+default). This setting cannot be used in a PostScript program, only on
+Ghostscript's command line. See <b><tt>ProcessColorModel</tt></b> below
+for what to use to change the number of colors with PostScript code.
+
+<p>
+Note that setting this property does limit the choices of
+<b><tt>BitsPerPixel</tt></b>. As for the previous property, its first
+setting may induce a setting of the "other value"
+(<b><tt>BitsPerPixel</tt></b> here). The table here indicates valid
+combinations with "V", default values with asterisk "*".
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=13 bgcolor="#CCCC00"><hr><font size="+1">Valid <b><tt>BitsPerPixel</tt></b> values<br>for allowed <b><tt>Colors</tt></b> values</font><hr>
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <th align=left colspan=9><b><tt>BitsPerPixel</tt></b> OK values<hr>
+<tr valign=top> <th>Colors
+ <td>&nbsp;&nbsp;
+ <th>Type
+ <td>&nbsp;&nbsp;
+ <td>32
+ <td>&nbsp;&nbsp;
+ <td>24
+ <td>&nbsp;&nbsp;
+ <td>16
+ <td>&nbsp;&nbsp;
+ <td>8
+ <td>&nbsp;&nbsp;
+ <td>1
+<tr> <td colspan=13><hr>
+<tr valign=top> <td>4
+ <td>&nbsp;
+ <td>CMYK
+ <td>&nbsp;
+ <td><b>V</b>
+ <td>&nbsp;
+ <td><b>*</b>
+ <td>&nbsp;
+ <td><b>V</b>
+ <td>&nbsp;
+ <td><b>V</b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>3
+ <td>&nbsp;
+ <td>RGB
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td><b>*</b>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td><b>V</b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>1
+ <td>&nbsp;
+ <td>K
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td><b>V</b>
+ <td>&nbsp;
+ <td><b>*</b>
+</table></blockquote>
+
+<p>Also note that automagical change of one parameter depending on the
+other one does not work in a <b><tt>setpagedevice</tt></b> call. This
+means that if you want to change <b><tt>Colors</tt></b> to a value whose
+valid <b><tt>BitsPerPixel</tt></b> values don't include the actual
+<b><tt>BitsPerPixel</tt></b> value, you must change
+<b><tt>BitsPerPixel</tt></b> too.
+</dl>
+
+<dl>
+<dt><b><tt>ProcessColorModel</tt></b> (symbol)
+<dd>A symbol taken from <b><tt>/DeviceGray</tt></b>,
+<b><tt>/DeviceRGB</tt></b> or <b><tt>/DeviceCMYK</tt></b> which can be used
+to select 1, 3 or 4 colors respectively. Note that this parameter takes
+precedence over <b><tt>Colors</tt></b>, and that both affect the same
+variable of the driver. (See <b><tt>Colors</tt></b> above for values
+combined with <b><tt>BitsPerPixel</tt></b>.)
+</dl>
+
+<dl>
+<dt><b><tt>HWResolution</tt></b> (floats array)
+<dd>An array of two floats giving the horizontal and vertical resolution in
+dots per inch from among 90, 180 and 360 (the default). Both values must
+be the same. On the Ghostscript command line, the resolution may be
+changed with the <a href="Use.htm#Resolution_switch"><b><tt>-r</tt></b>
+switch</a>.
+</dl>
+
+<dl>
+<dt><b><tt>ManualFeed</tt></b> (bool)
+<dd>Indicate that the sheets won't be fed automatically by the printer,
+<b><tt>false</tt></b> by default. (Not meaningful on the BJC-600, I fear.)
+</dl>
+
+<dl>
+<dt><b><tt>MediaType</tt></b> (string)
+<dd>The media to print on, chosen from among "<b><tt>PlainPaper</tt></b>",
+"<b><tt>CoatedPaper</tt></b>", "<b><tt>TransparencyFilm</tt></b>",
+"<b><tt>Envelope</tt></b>", "<b><tt>Card</tt></b>" and
+"<b><tt>Other</tt></b>". Default is "<b><tt>PlainPaper</tt></b>". For
+"<b><tt>Envelope</tt></b>", "<b><tt>Card</tt></b>" or
+"<b><tt>Other</tt></b>" the driver puts the printer into thick mode
+automatically regardless of the actual media weight.
+</dl>
+
+<dl>
+<dt><b><tt>MediaWeight</tt></b> (int or null)
+<dd>The weight of the media in grams per square meter. Null (the default)
+indicates that the weight is of no importance. If the specified media
+weight is greater than 105 (that is, the value of the compilation default
+<b><tt>BJC</tt></b>???<b><tt>_MEDIAWEIGHT_THICKLIMIT</tt></b>) then the
+printer will be set to use thick paper.
+</dl>
+
+<dl>
+<dt><b><tt>PrintQuality</tt></b> (string)
+<dd>The quality of printing.
+<table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Value
+ <td>&nbsp;&nbsp;
+ <th align=left><b><tt>bjc600</tt></b>
+ <td>&nbsp;&nbsp;
+ <th align=left><b><tt>bjc800</tt></b>
+ <td>&nbsp;&nbsp;
+ <th align=left>&nbsp;
+<tr> <td colspan=7><hr>
+<tr valign=top> <td><b><tt>Low</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td>Has the effect of making only two printing passes instead of four, so should be twice the speed; known as "CN" (Color Normal) mode
+<tr valign=top> <td><b><tt>Draft</tt></b>
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td>Unlights the "HQ" light on a BJC-600
+<tr valign=top> <td><b><tt>Normal</tt></b>
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td>Default for both drivers; lights the "HQ" light on a BJC-600
+<tr valign=top> <td><b><tt>High</tt></b>
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td align=center><b>X</b>
+ <td>&nbsp;
+ <td>Means 200% black and 100% CMY; lights the "Bk+" light on a BJC-600
+</table>
+</dl>
+
+<dl>
+<dt><b><tt>DitheringType</tt></b> (string)
+<dd>Dithering algorithm from between "<b><tt>Floyd-Steinberg</tt></b>" and
+"<b><tt>None</tt></b>". "<b><tt>None</tt></b>" is the default for 1/1 print
+mode, "<b><tt>Floyd-Steinberg</tt></b>" for other modes. At the moment
+this parameter is read-only, though no error is generated if one tries to
+change it. This parameter is not of much value at the moment and is here
+mainly to reserve the name for future addition of dithering algorithms.
+</dl>
+
+<dl>
+<dt><b><tt>PrintColors</tt></b> (int)
+<dd>Mask for printing color. If 0, use black for any color; otherwise the
+value must be the sum of any of 1 (cyan), 2 (magenta), 4 (yellow) and 8
+(black), indicating which colors will be used for printing. When printing
+colour, only colours specified will be printed (this means that some planes
+will be missing if a color's value above is omitted). When printing grays,
+black is used if it is present in the <b><tt>PrintColors</tt></b>;
+otherwise, the image is printed by superimposing each requested color.
+</dl>
+
+<dl>
+<dt><b><tt>MonochromePrint</tt></b> (bool)
+<dd><b>For <tt>bjc600</tt> only</b>, <b><tt>false</tt></b> by default.
+Substitute black for Cyan, Magenta and Yellow when printing -- useful, for
+example, to get some monochrome output of a dithered printing This is a
+hardware mechanism as opposed to the previous software one. I think that
+using this or setting <b><tt>PrintColors</tt></b> to 0 will give the same
+results.
+</dl>
+
+<p>
+Note that the <b><tt>MediaType</tt></b> and <b><tt>ThickMedia</tt></b>
+options will be replaced by the use of the device
+<b><tt>InputAttributes</tt></b> and <b><tt>OutputAttributes</tt></b> as
+soon as possible. Please note too that the print mode may be reset at the
+start of printing, not at the end. This is the expected behaviour. If you
+need to reset the printer to its default state, simply print a file that
+does just a <b><tt>showpage</tt></b>.
+
+<h4><a name="BJC_device_info"></a>Device information</h4>
+
+<p>
+Here is other information published by the driver that you will find
+in the <b><tt>deviceinfo</tt></b> dictionary.
+
+<dl>
+<dt><b><tt>OutputFaceUp</tt></b> (bool)
+<dd>This has the boolean value <b><tt>true</tt></b>, indicating that the
+sheets are stacked face up.
+</dl>
+
+<dl>
+<dt><b><tt>Version</tt></b> (float)
+<dd>In the form <b>M.</b><em>mm</em>pp, where <b>M</b> is the major
+version, <em>mm</em> the bjc driver's minor version, and pp the specific
+driver minor version (that is, <b><tt>M.</tt></b><em>mm</em> will always be
+the same for the <b><tt>bjc600</tt></b> and <b><tt>bjc800</tt></b>
+drivers).
+</dl>
+
+<dl>
+<dt><b><tt>VersionString</tt></b> (string)
+<dd> A string showing the driver version and other indications. At the
+moment, things like "a" or "b" may follow the version to indicate alpha or
+beta versions. The date of the last change to this version is given in the
+form MM/DD/YY (no, it won't adapt to your locale).
+</dl>
+
+<h4><a name="BJC_HW_margins"></a>Hardware margins</h4>
+
+<p>
+The BJC printers have top and bottom hardware margins of 3mm and 7.1mm
+respectively (Canon says 7mm, but this is unusable because of the rounding
+of paper sizes to PostScript points). The left margin is 3.4mm for A4 and
+smaller paper sizes, 6.4mm for U.S. paper sizes, envelopes and cards. It
+is 4.0mm for A3 paper on the BJC-800.
+
+<p>
+The maximum printing width of a BJC-600 printer is 203mm. The maximum
+printing width of a BJC-800 printer is 289mm on A3 paper, 203mm on
+U.S. letter and ISO A4 paper.
+
+<h4><a name="BJC_PPD"></a>PostScript printer description (PPD) files</h4>
+
+<p>
+The files <b><tt>CBJC600.PPD</tt></b> and <b><tt>CBJC800.PPD</tt></b> (whose
+long names are, respectively, <b><tt>Canon_BubbleJetColor_600.ppd</tt></b>
+and <b><tt>Canon_BubbleJetColor_800.ppd</tt></b>) are PPD files to drive the
+features of the <b><tt>bjc600</tt></b> and <b><tt>bjc800</tt></b> drivers.
+They can be used, for example, on NextStep systems (presumably on OpenStep
+systems too) and on Unix systems with Adobe's TranScript and
+<b><tt>pslpr</tt></b> (not tested). The files are not complete at the
+moment. Please note that NextStep's printing interface does not
+correctly enforce constraints specified in these files (in UIConstraints
+descriptions): you must force yourself to use valid combinations of
+options.
+
+<h4><a name="BJC_PPD_custom"></a>Customizing the PPD files</h4>
+
+<p>
+By default the PPD files are set for U.S. letter size paper, and they use a
+normalized transfer function. If you choose to use A4 printing by default,
+you must replace "<b><tt>Letter</tt></b>" with "<b><tt>A4</tt></b>" in
+these (noncontiguous) lines:
+
+<blockquote>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]<br>
+<b><tt>*DefaultPageSize: Letter<br></tt></b>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]<br>
+<b><tt>*DefaultRegion: Letter<br></tt></b>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]<br>
+<b><tt>*DefaultImageableArea: Letter</tt></b><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]<br>
+</blockquote>
+
+<p>
+Some versions of Ghostscript have problems with normalized colors, which
+makes them add magenta in gray levels. If you experience this problem,
+in the PPD file replace the line
+
+<blockquote><b><tt>
+*DefaultTransfer: Normalized
+</tt></b></blockquote>
+
+<p>
+with the alternate line
+
+<blockquote><b><tt>
+*DefaultTransfer: Null
+</tt></b></blockquote>
+
+<p>
+The "thick media" option is implemented by choosing a value of 120 or 80
+(for thick and thin media respectively) for the <b><tt>MediaWeight</tt></b>
+feature of the drivers. If you ever change the threshold for thick media
+in the driver code, you may need to change the values in the PPD files too.
+
+<p>
+All customization should be done using the "<b><tt>*Include:</tt></b>"
+feature of PPD files so that your local changes will be retained if you
+update the PPD files.
+
+<h3><a name="BJC_bugs"></a>How to report problems</h3>
+
+<p>
+Yves Arrouye no longer maintains this driver, and will not answer questions
+about it. If you are posting a question about it in a public form, please
+be as descriptive as possible, and please send information that can be used
+to reproduce the problem. Don't forget to say which driver you use, and in
+what version. Version information can be found in the source code of the
+driver or by issuing the following command in a shell:
+
+<blockquote><b><tt>
+echo&nbsp;"currentpagedevice&nbsp;/VersionString&nbsp;get&nbsp;=="&nbsp;|&nbsp;gs&nbsp;-q&nbsp;-sDEVICE=bjc600&nbsp;-
+</tt></b></blockquote>
+
+<h3><a name="BJC_acks"></a>Acknowledgements</h3>
+
+<p>
+I am particularly grateful to Yoshio Kuniyoshi &lt;<a
+href="mailto:yoshio@nak.math.keio.ac.jp">yoshio@nak.math.keio.ac.jp</a>&gt;
+without whom I'd never make these drivers, and also to L. Peter Deutsch,
+who answered all my (often silly) questions about Ghostscript's driver
+interface.
+
+<p>
+Thanks also to the people who volunteered to beta-test the v2.x BJC
+drivers: David Gaudine
+&lt;<a href="mailto:david@donald.concordia.ca">david@donald.concordia.ca</a>&gt;,
+Robert M. Kenney &lt;<a href="mailto:rmk@unh.edu">rmk@unh.edu</a>&gt;,
+James McPherson
+&lt;<a href="mailto:someone@erols.com">someone@erols.com</a>&gt;
+and Ian Thurlbeck
+&lt;<a href="mailto:ian@stams.strath.ac.uk">ian@stams.strath.ac.uk</a>&gt;
+(listed alphabetically) were particularly helpful by discovering bugs and
+helping find out exact paper margins on printers I don't have access to.
+
+<p>
+And many thanks to Klaus-Gunther Hess
+&lt;<a href="mailto:ghess@elmos.de">ghess@elmos.de</a>&gt; for looking
+at the dithering code and devising a good CMYK dithering algorithm for the
+Epson Stylus Color, which I then adapted to the code of these drivers.
+
+<hr>
+
+<h2><a name="STC_epson_stylus"></a>Epson Stylus color printer (see also <b><tt>uniprint</tt></b>)</h2>
+
+<p>
+This section was contributed by Gunther Hess
+&lt;<a href="mailto:ghess@elmos.de">ghess@elmos.de</a>&gt;, who also wrote
+<b><tt>uniprint</tt></b>, a later set of drivers. You should probably see
+the section on <a href="#Uniprint"><b><tt>uniprint</tt></b></a> for whether
+it might be better for your uses than this driver.
+
+<h3><a name="STC_usage"></a>Usage</h3>
+
+<p>
+
+This driver is selected with "<b><tt>-sDEVICE=stcolor</tt></b>", producing
+output for an Epson Stylus Color at 360dpi resolution by default. But it
+can do much more with this printer, and with significantly better quality,
+than with the default mode; and it can also produce code for monochrome
+versions of the printer. This can be achieved via either command-line
+options or Ghostscript input. For convenience a PostScript file is
+supplied for use as an initial input file. Try the following command:
+
+<blockquote>
+<b><tt>gs -sDEVICE=stcolor -r</tt></b><b>{Xdpi}</b><b><tt>x</tt></b><b>{Ydpi}</b><b><tt> stcolor.ps</tt></b> <b>{YourFile.ps}</b>
+</blockquote>
+
+<p>
+where <b>{Xdpi}</b> is one of 180, 360, or 720 and <b>{Ydpi}</b> is one of
+90, 180, 360, or 720. The result should be significantly better. You may
+use <b><tt>stcolor.ps</tt></b> with other devices too, but I do not
+recommend this, since it does nothing then. <b><tt>stcolor.ps</tt></b>
+should be available with binary distributions and should reside in the same
+directory as other Ghostscript initialization files or in the same
+directory as the files to be printed. Thus if Ghostscript is part of your
+printer-spooler, you can insert
+
+<blockquote><b><tt>
+(stcolor.ps) findlibfile { pop run } if pop
+</tt></b></blockquote>
+
+<p>
+in files you want to use the improved algorithms. You may want to adapt
+<b><tt>stcolor.ps</tt></b> file to your specific needs. The methods and
+options for this are described here, but this description is restricted to
+Ghostscript options, while their manipulation at the PostScript level is
+documented in the material on <a href="Language.htm">the relationship of
+Ghostscript and PostScript</a> and in <b><tt>stcolor.ps</tt></b>.
+
+<h3><a name="STC_options"></a>Options</h3>
+
+<p>
+Now to explain the options (as written on my UNIX system). The order is
+somehow related to their use during the printing process:
+
+<dl>
+<dt><b><tt>-dUnidirectional</tt></b>
+<dd>Force unidirectional printing, recommended for transparencies
+</dl>
+
+<dl>
+<dt><b><tt>-dMicroweave</tt></b>
+<dd>Enable the printer's "microweave" feature; see
+"<a href="#What_is_weaving">What is weaving?</a>" below.
+</dl>
+
+<dl>
+<dt><b><tt>-dnoWeave</tt></b>
+<dd>Disable any Weaving (overrides <b><tt>-dMicroweave</tt></b>)
+</dl>
+
+<dl>
+<dt><b><tt>-dSoftweave</tt></b>
+<dd>Enable the driver's internal weaving. Note that <b><tt>Softweave</tt></b> works <b>only</b> with the original Stylus Color and the PRO-Series.
+</dl>
+
+<dl>
+<dt><b><tt>-sDithering=</tt></b><em>{name}</em>
+<dd>Select another dithering algorithm (name) from among
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>gscmyk</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>fast color output, CMYK process color model (default)
+<tr valign=top> <td><b><tt>gsmono</tt></b>
+ <td>&nbsp;
+ <td>fast monochrome output
+<tr valign=top> <td><b><tt>gsrgb</tt></b>
+ <td>&nbsp;
+ <td>fast color output, RGB process color model
+<tr valign=top> <td><b><tt>fsmono</tt></b>
+ <td>&nbsp;
+ <td>Floyd-Steinberg, monochrome
+<tr valign=top> <td><b><tt>fsrgb</tt></b>
+ <td>&nbsp;
+ <td>Floyd-Steinberg, RGB process color model (almost identical to the <b><tt>cdj550</tt></b>/<b><tt>bjc</tt></b> algorithm)
+<tr valign=top> <td><b><tt>fsx4</tt></b>
+ <td>&nbsp;
+ <td>Floyd-Steinberg, CMYK process color model (shares code with <b><tt>fsmono</tt></b> and <b><tt>fsrgb</tt></b>, but is algorithmically really bad)
+<tr valign=top> <td><b><tt>fscmyk</tt></b>
+ <td>&nbsp;
+ <td>Floyd-Steinberg, CMYK process color model and proper modifications for CMYK
+<tr valign=top> <td><b><tt>hscmyk</tt></b>
+ <td>&nbsp;
+ <td>modified Floyd-Steinberg with CMYK model ("hs" stands for "hess" not for "high speed", but the major difference from <b><tt>fscmyk</tt></b> is speed)
+<tr valign=top> <td><b><tt>fs2</tt></b>
+ <td>&nbsp;
+ <td>algorithm by Steven Singer (RGB) should be identical to <b><tt>escp2cfs2</tt></b>.
+</table></blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>-dBitsPerPixel=</tt></b><em>{1...32}</em>
+<dd>number of bits used for pixel storage; the larger the value, the better
+the quality -- at least in theory. In <b><tt>fsrgb</tt></b> one can gain
+some speed by restricting to 24 bits rather than the default 30.
+</dl>
+
+<dl>
+<dt><b><tt>-dFlag0</tt></b>
+<dd>causes some algorithms to select a uniform initialisation rather than a
+set of random values. May yield a sharper image impression at the cost of
+dithering artifacts. (Applies to <b><tt>hscmyk</tt></b> and all fs modes,
+except for fs2, which always uses a constant initialization.)
+</dl>
+
+<dl>
+<dt><b><tt>-dFlag1</tt></b> ... <b><tt>-dFlag4</tt></b>
+<dd>Available for future algorithms.
+</dl>
+
+<dl>
+<dt><b><tt>-dColorAdjustMatrix='{</tt></b><em>three, nine, or sixteen
+floating-point values</em><b><tt>}'</tt></b>
+<dd>This is a matrix to adjust the colors. Values should be between -1.0
+and 1.0, and the number of values depends on the color model the selected
+algorithm uses. In RGB and CMYK modes a matrix with 1.0 on the diagonal
+produces no transformation. This feature is really required, but I could
+not identify a similar feature at the language level, so I implemented it,
+but I don't know reasonable values yet.
+</dl>
+
+<dl>
+<dt><b><tt>-dCtransfer='{</tt></b><em>float float ...</em><b><tt>}'</tt></b> or
+<dt><b><tt>-dMtransfer=</tt></b>..., <b><tt>-dY</tt></b>..., <b><tt>-dK</tt></b>... or
+<dt><b><tt>-dRtransfer='{</tt></b><em>float float ...</em><b><tt>}'</tt></b> or
+<dt><b><tt>-dG</tt></b>..., <b><tt>-dB</tt></b>... or
+<dt><b><tt>-dKtransfer='{</tt></b><em>float float ...</em><b><tt>}'</tt></b>
+<dd>Which you use depends on the algorithm, which may be either either
+CMYK, RGB or monochrome. The values are arrays of floats in the range from
+0 to 1.0, representing the visible color intensity for the device. One may
+achieve similar effects with <b><tt>setcolortransfer</tt></b> at the
+language level, but this takes more time and the underlying code for the
+driver-specific parameters is still required. The size of the arrays is
+arbitrary and the defaults are "<b><tt>{0.0&nbsp;1.0}</tt></b>", which is a
+linear characteristic. Most of the code in <b><tt>stcolor.ps</tt></b> are
+better transfer arrays.
+</dl>
+
+<dl>
+<dt><b><tt>-dKcoding='{</tt></b><em>float...</em><b><tt>}'</tt></b>
+<dt><b><tt>-dC</tt></b>..., <b><tt>-dM</tt></b>... etc.
+<dd>Arrays between 0.0 and 1.0, controlling the internal coding of the
+color values. Clever use of these arrays may yield further enhancements,
+but I have no experience yet. (To be discontinued with version 2.x.)
+</dl>
+
+<dl>
+<dt><b><tt>-sModel=st800</tt></b>
+<dd>Causes output to be suitable for the monochrome Stylus 800 (no weaving,
+no color).
+</dl>
+
+<dl>
+<dt><b><tt>-sOutputCode=</tt></b><em>{name}</em>
+<dd>Can be either "<b><tt>plain</tt></b>", "<b><tt>runlength</tt></b>" or
+"<b><tt>deltarow</tt></b>" and changes the ESC/P2 coding technique
+used by the driver. The default is to use runlength encoding.
+"<b><tt>plain</tt></b>" selects uncompressed encoding and generates
+enormous amounts of data.
+</dl>
+
+<dl>
+<dt><b><tt>-descp_Band=</tt></b><em>1/8/15/24</em>
+<dd>Number of nozzles of scanlines used in printing, Useful only with
+<b><tt>-dnoWeave</tt></b>. Larger Values yield smaller code, but this
+doesn't increase the printing speed.
+</dl>
+
+<dl>
+<dt><b><tt>-descp_Width=</tt></b><em>N</em>
+<dd>Number of pixels Printed in each scan Line. (Useful only when tuning
+margins; see below)
+</dl>
+
+<dl>
+<dt><b><tt>-descp_Height=</tt></b><em>pixels</em>
+<dd>Length of the entire page in pixels. (Parameter of
+"<b><tt>ESC(C</tt></b>" in default initialization.)
+</dl>
+
+<dl>
+<dt><b><tt>-descp_Top=</tt></b><em>scan lines</em>
+<dd>Top margin in scan lines. (First parameter of "<b><tt>ESC(c</tt></b>"
+in default initialization.)
+</dl>
+
+<dl>
+<dt><b><tt>-descp_Bottom=</tt></b><em>scan lines</em>
+<dd>Bottom margin in scan lines. (Second parameter of
+"<b><tt>ESC(c</tt></b>" in default initialization.)
+</dl>
+
+<dl>
+<dt><b><tt>-sescp_Init=</tt></b>"<em>string</em>"
+<dd>Override for the initialization sequence. (Must set graphics mode 1
+and units.)
+</dl>
+
+<dl>
+<dt><b><tt>-sescp_Release=</tt></b>"<em>string</em>"
+<dd>Overrides the release sequence, "<b><tt>ESC&nbsp;@&nbsp;FF</tt></b>" by
+default.
+</dl>
+
+<p>
+ESC/P2 allows any resolutions to be valid in theory, but only
+<b><tt>-r360x360</tt></b> (the default) and <b><tt>-r720x720</tt></b> (not
+on STC-IIs ? and st800) are known to work with most printers.
+
+<p>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=7 bgcolor="#CCCC00"><hr><font size="+1">Valid option combinations<br>Stylus I &amp; Pro-Series only</font><hr>
+<tr valign=bottom>
+ <th valign=bottom align=left>Resolution
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left><b><tt>escp_Band</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left>Weave usable
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left><b><tt>escp_Band</tt></b> &amp;<br>number of passes
+<tr> <td colspan=7><hr>
+<tr valign=top> <td>180x90
+ <td>&nbsp;
+ <td>15
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>180x180
+ <td>&nbsp;
+ <td>1 , 8, 24
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>, <b><tt>Microweave</tt></b>
+ <td>&nbsp;
+ <td>15/2 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>180x360
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>15/4 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>180x720
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>15/8 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>360x90
+ <td>&nbsp;
+ <td>15
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>360x180
+ <td>&nbsp;
+ <td>1, 8, 24
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>, <b><tt>Microweave</tt></b>
+ <td>&nbsp;
+ <td>15/2 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>360x360
+ <td>&nbsp;
+ <td>1, 8, 24
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>, <b><tt>Microweave</tt></b>
+ <td>&nbsp;
+ <td>15/4 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>360x720
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>15/8 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>720x90
+ <td>&nbsp;
+ <td>15
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>720x180
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>15/2 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>720x360
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>15/4 <b><tt>SoftWeave</tt></b>
+<tr valign=top> <td>720x720
+ <td>&nbsp;
+ <td>1
+ <td>&nbsp;
+ <td><b><tt>noWeave</tt></b>, <b><tt>Microweave</tt></b>
+ <td>&nbsp;
+ <td>15/8 <b><tt>SoftWeave</tt></b>
+</table></blockquote>
+
+<blockquote>
+<b>Beware:</b> there are only few validity checks for parameters. A good
+example is <b><tt>escp_Band</tt></b>: if you set this, the driver uses your
+value even if the value is not supported by the printer. <b>You asked for
+it and you got it!</b>
+</blockquote>
+
+<h3><a name="STC_FAQ"></a>Application note and FAQ</h3>
+
+<p>
+Quite a bunch of parameters. Hopefully you never need any of them, besides
+feeding <b><tt>stcolor.ps</tt></b> to Ghostscript in front of your input.
+
+<p>
+After answering some questions over fifty times I prepared a FAQ. Here is
+version 1.3 of the FAQ, as of <b><tt>stcolor</tt></b> version 1.20 (for
+Ghostscript 3.50).
+
+<h4><a name="STC_FAQ_A3"></a>Support for A3 paper</h4>
+
+<p>
+Yes, this driver supports the A3-size printer: merely set the required
+pagesize and margins. A simple way to do this is to specify the
+command-line switch "<b><tt>-sPAPERSIZE=a3</tt></b>" or include the
+procedure call "<b><tt>a3</tt></b>" in the PostScript prolog section. To
+optimize the printable area or set the proper margins, see the next
+paragraph.
+
+<h4><a name="STC_FAQ_margins"></a>Margins, PageSize</h4>
+
+<p>
+I refuse to add code to <b><tt>stcolor</tt></b> that tries to guess the
+proper margins or page size, because I found that such guessing is usually
+wrong and needs correction in either the source or the parameters. You can
+modify <b><tt>stcolor.ps</tt></b> to do that, however. After the line
+
+<blockquote><b><tt>
+mark % prepare stack for "putdeviceprops"
+</tt></b></blockquote>
+
+<p>
+insert these lines, which define page size and margins in points:
+
+<blockquote>
+<pre>/.HWMargins [9.0 39.96 12.6 9.0] % Left, bottom, right, top (1/72")
+/PageSize [597.6 842.4] % Paper, including margins (1/72")
+/Margins [ % neg. Offset to Left/Top in Pixels
+ 4 index 0 get STCold /HWResolution get 0 get mul 72 div neg
+ 5 index 3 get STCold /HWResolution get 1 get mul 72 div neg
+]</pre></blockquote>
+
+<p>
+Feel free to change the values of <b><tt>.HWMargins</tt></b> and
+<b><tt>PageSize</tt></b> to match your needs; the values given are the
+defaults when the driver is compiled with "<b><tt>-DA4</tt></b>". This
+option or its omission may cause trouble: the Stylus Color can print up to
+exactly 8 inches (2880 pixels) at 360dpi. The remaining paper is the
+margin, where the left margin varies only slightly with the paper size,
+while the right margin is significantly increased for wider paper, such as
+U.S. letter size.
+
+<p>
+<b>Note</b> that if you are using an ISO paper size with a version of
+<b><tt>stcolor</tt></b> after 1.20 and compiled without
+"<b><tt>-DA4</tt></b>", then the default margin is too large, and you need
+to add the proper "<b><tt>.HWMargins</tt></b>" to the command line or to
+<b><tt>stcolor.ps</tt></b>.
+
+<h4><a name="STC_FAQ_II_IIS_1500"></a>Stylus Color II / IIs and 1500</h4>
+
+<p>
+First the good news: the driver can print on the Stylus Color II.
+Now the bad news:
+<ul>
+<li>According to Epson support the driver "abuses" the color
+capabilities. (See "Future Plans" for details.)
+<li>You need some parameters on the command line (or in
+<b><tt>stcolor.ps</tt></b>).
+<li>I doubted that it would be usable with the Stylus Color IIs, but
+it <b>is</b> usable and suffers from mixing problems!
+</ul>
+
+<p>
+
+To make things work, you <b>MUST</b> disable the driver's internal
+weaving (<b><tt>Softweave</tt></b>), in one of these two ways:
+
+<blockquote>
+<b><tt>gs -dMicroweave</tt></b> ...<br>
+<b><tt>gs -dnoWeave -descp_Band=1</tt></b> ...
+</blockquote>
+
+<p>
+Version 1.90, current as of Ghostscript 5.10, fixes this bug by new default
+behaviour. I experienced significantly increased printing speed with the
+second variant on the old Stylus Color, when printing mostly monochrome
+data.
+
+<h3><a name="STC_recommendations"></a>Recommendations</h3>
+
+<p>
+The next section is a contribution from Jason Patterson &lt;jason@reflections.com.au&gt;
+who evaluated a previous version (1.17). Ghostscript was invoked as follows:
+
+<blockquote><dl compact>
+<dt><b><tt>gs</tt></b>
+<dd><b><tt>-sDEVICE=stcolor -r720x720
+-sDithering=</tt></b>... <b><tt>-sOutputFile=escp.out stcolor.ps
+whatsoever.ps</tt></b>
+
+</dl></blockquote>
+
+<p>
+where "..." is the name of the desired algorithm.
+<b><tt>stcolor.ps</tt></b> was omitted for the gs-algorithms
+(<b><tt>gsmono</tt></b>, <b><tt>gsrgb</tt></b> and <b><tt>gscmyk</tt></b>),
+for which it is useless and would not allow the selection of
+"<b><tt>gscmyk</tt></b>".
+
+<h4><a name="STC_dither_experiment"></a>Color dithering experiments with
+<b><tt>gdevstc</tt></b> 1.21</h4>
+
+<p>
+Here are data about the EPSON Stylus Color driver's different dithering
+methods, based on a little experiment using four good quality scanned
+images of quite varied nature, to begin with, a summary of the results of
+the four experiments. <b>Sanity note:</b> the results here are from only
+four images and a total of 24 printouts (eight on 720dpi paper, sixteen on
+plain paper). Your results will almost certainly vary, and your standards
+might not be the same as mine, so use these results only as a guide, not as
+a formal evaluation.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Quality of output by method</font><hr>
+<tr valign=bottom>
+ <th align=left>
+ <td>&nbsp;&nbsp;
+ <th align=left>
+<tr> <td colspan=3><hr>
+<tr> <td valign=top><b><tt>gsmono</tt></b>
+<td>&nbsp;&nbsp;&nbsp;&nbsp;
+<td>Pretty much what you'd expect from a mono ordered pattern.
+Looks like what a lot of mono laser printers produce.
+<tr> <td valign=top><b><tt>fsmono</tt></b>
+<td>&nbsp;
+<td>Excellent for monochrome.
+<tr> <td valign=top><b><tt>gscmyk</tt></b>
+<td>&nbsp;
+<td>Not very good, but expected from an ordered pattern.
+<tr> <td valign=top><b><tt>gsrgb</tt></b>
+<td>&nbsp;
+<td>A little better than <b><tt>gscmyk</tt></b>. More consistent
+looking.
+<tr> <td valign=top><b><tt>fs2</tt></b>
+<td>&nbsp;
+<td>Good, but not quite as good as <b><tt>fsrgb</tt></b>. Gets the
+brightness wrong: too light at 720dpi, too dark at 360dpi.
+<tr> <td valign=top><b><tt>fsrgb</tt></b>
+<td>&nbsp;
+<td>Very good, but a little too dark and has a slight blue tint.
+<tr> <td valign=top><b><tt>hscmyk</tt></b>
+<td>&nbsp;
+<td>Excellent. Slightly better than <b><tt>fsrgb</tt></b> and
+<b><tt>fs2</tt></b>. Better than <b><tt>fscmyk</tt></b> on
+some images, almost the same on most.
+<tr> <td valign=top><b><tt>fscmyk</tt></b>
+<td>&nbsp;
+<td>Best. Very, very slightly better than <b><tt>hscmyk</tt></b>.
+On some images nearly as good as the EPSON demos done with
+the MS Windows driver.
+</table></blockquote>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=4 bgcolor="#CCCC00"><hr><font size="+1">Overall visual quality (1-10), best to worst</font><hr>
+<tr valign=top> <th colspan=4 align=left>Monochrome
+<tr> <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td><b><tt>fsmono</tt></b>
+ <td>&nbsp;&nbsp;
+ <td><b><tt>******************</tt></b>
+<tr> <td>&nbsp;
+ <td><b><tt>gsmono</tt></b>
+ <td>&nbsp;
+ <td><b><tt>**********</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td><b><tt>0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;10</tt></b>
+<tr> <td colspan=4><hr>
+<tr valign=top> <th colspan=4 align=left>Colour
+<tr> <td>&nbsp;
+ <td><b><tt>fscmyk</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*******************</tt></b>
+<tr> <td>&nbsp;
+ <td><b><tt>hscmyk</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*******************</tt></b>
+<tr> <td>&nbsp;
+ <td><b><tt>fsrgb</tt></b>
+ <td>&nbsp;
+ <td><b><tt>******************</tt></b>
+<tr> <td>&nbsp;
+ <td><b><tt>fs2</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*****************</tt></b>
+<tr> <td>&nbsp;
+ <td><b><tt>gsrgb</tt></b>
+ <td>&nbsp;
+ <td><b><tt>**********</tt></b>
+<tr> <td>&nbsp;
+ <td><b><tt>gscmyk</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*********</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td><b><tt>0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;10</tt></b>
+</table></blockquote>
+
+<h3><a name="STC_color_transform"></a>Color transformation</h3>
+
+<p>
+In the initial version of the driver distributed with Ghostscript 3.33, the
+parameter "<b><tt>SpotSize</tt></b>" was the only way to manipulate the
+colors at the driver level. According to the parameters enumerated above,
+this has changed significantly with version 1.16 and above as a result an
+ongoing discussion about dithering algorithms and "false color" on the
+Epson Stylus Color. This initiated the transformation of the
+<b><tt>stcolor</tt></b> driver into a framework for different dithering
+algorithms, providing a generalized interface to the internal Ghostscript
+color models and the other data structures related to Ghostscript drivers.
+
+<p>
+The main thing such a framework should be able to do is to deliver the
+values the dithering algorithm needs; and since this directly influences
+the optical image impression, this transformation should be adjustable
+without the need for recompilation and relinking. In general the process
+can be described as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td colspan=3><b><tt>ColorAdjustMatrix</tt></b>
+ <td align=center>Coding
+ <td colspan=3>&nbsp;
+ <td align=center>Transfer
+ <td colspan=3>&nbsp;
+<tr valign=top> <td>|
+ <td align=center>Ghostscript color
+ <td>|
+ <td align=center>=&gt;
+ <td>|
+ <td align=center>Ghostscript raster
+ <td>|
+ <td align=center>=&gt;
+ <td>|
+ <td align=center>Dithering data
+ <td>|
+<tr valign=top> <td>|
+ <td>&nbsp;
+ <td>|
+ <td>&nbsp;
+ <td>|
+ <td align=center>1/2/4/8/16/32-bit
+ <td>|
+ <td>&nbsp;
+ <td>|
+ <td>&nbsp;
+ <td>|
+<tr valign=top> <td>|
+ <td align=center>1/3/4 16-bit values
+ <td>|
+ <td>&nbsp;
+ <td>|
+ <td align=center>1/3/4 values
+ <td>|
+ <td>&nbsp;
+ <td>|
+ <td align=center>(arbitrary type)
+ <td>|
+</table></blockquote>
+
+<p>
+Due to the limitations on raster storage, information is lost in the first
+transformation step, except for the 16-bit monochrome mode. So any color
+adjustment should take place before this step and this is where the optional
+<b><tt>ColorAdjustMatrix</tt></b> works.
+
+<p>
+The first transformation step, called "coding", is controlled by the
+<b><tt>?coding</tt></b> arrays. The decoding process expands the range of
+values expontentially to a larger range than that provided by the initial
+Ghostscript color model, and is therefore a reasonable place to make
+device- or algorithm-specific adjustments. This is where the
+<b><tt>?transfer</tt></b> arrays are used. Array access might be not the
+fastest method, but its generality is superior, so this step is always
+based upon internally algorithm-specific array access. If 8 bits are stored
+per color component and if the algorithm uses bytes too, the second
+transformation is included within the first, which saves significant
+computation time when printing the data.
+
+<h3><a name="STC_CAM"></a><b><tt>ColorAdjustMatrix</tt></b></h3>
+
+<p>
+The driver supports different values for <b><tt>ProcessColorModel</tt></b>,
+which raises the need for different color adjustments. Here
+"<b><tt>CAM</tt></b>" stands for "<b><tt>ColorAdjustMatrix</tt></b>".
+
+<dl>
+<dt><b><tt>DeviceGray</tt></b> (three floats)
+<dd><pre>if ((r == g) &amp;&amp; (g == b))
+ K' = 1.0 - R;
+else
+ K' = 1.0 - CAM[0] * R + CAM[1] * G + CAM[2] * B;</pre>
+
+<p>
+According to the <a href="Drivers.htm">documentation on drivers</a>, the
+latter (the "else" clause) should never happen.
+</dl>
+
+<dl>
+<dt><b><tt>DeviceRGB</tt></b> (nine floats)
+<dd><pre>if((r == g) &amp;&amp; (g == b))
+ R' = B' = G' = R;
+else
+ R' = CAM[0]*R + CAM[1]*G + CAM[2]*B;
+ G' = CAM[3]*R + CAM[4]*G + CAM[5]*B;
+ B' = CAM[6]*R + CAM[7]*G + CAM[8]*B;</pre>
+
+<p>
+The printer always uses four inks, so a special treatment of black is
+provided. Algorithms may take special action if R, G, and B are all
+equal.
+</dl>
+
+<dl>
+<dt><b><tt>DeviceCMYK</tt></b> (sixteen floats)
+<dd>
+<pre>if((c == m) &amp;&amp; (m == y))
+ K' = max(C,K);
+ C' = M' = Y' = 0;
+else
+ K = min(C,M,Y);
+ if((K &gt; 0) &amp;&amp; ColorAdjustMatrix_present) { =&gt; UCR
+ C -= K;
+ M -= K;
+ Y -= K;
+ }
+
+ C' = CAM[ 0]*C + CAM[ 1]*M + CAM[ 2]*Y + CAM[ 3]*K;
+ M' = CAM[ 4]*C + CAM[ 5]*M + CAM[ 6]*Y + CAM[ 7]*K;
+ Y' = CAM[ 8]*C + CAM[ 9]*M + CAM[10]*Y + CAM[11]*K;
+ K' = CAM[12]*C + CAM[13]*M + CAM[14]*Y + CAM[15]*K;</pre>
+
+<p>
+Again we have a special black treatment. "<b><tt>max(C,K)</tt></b>" was introduced
+because of a slight misbehaviour of Ghostscript, which delivers
+black under certain circumstances as (1,1,1,0). Normally, when
+no special black separation and undercolor removal procedures
+are defined at the PostScript level, either (C,M,Y,0) or (0,0,0,K)
+values are mapped. This would make the extended <b><tt>ColorAdjustMatrix</tt></b>
+quite tedious, and so during mapping, black separation is done for
+(C,M,Y,0) requests; and if there is a <b><tt>ColorAdjustMatrix</tt></b>, undercolor
+removal is used too. In other words the default matrix is:
+
+<blockquote><table>
+<tr> <td>1 <td>0 <td>0 <td>1
+<tr> <td>0 <td>1 <td>0 <td>1
+<tr> <td>0 <td>0 <td>1 <td>1
+<tr> <td>0 <td>0 <td>0 <td>1
+</table></blockquote>
+
+<p>
+and it is applied to CMYK values with separated and removed black. Raising
+the CMY coefficients while lowering the K coefficients reduces black and
+intensifies color. But be careful, because even small deviations from the
+default cause drastic changes.
+</dl>
+
+<p>
+If no <b><tt>ColorAdjustMatrix</tt></b> is set, the matrix computations are
+skipped. Thus the transformation reduces to range inversion in monochrome
+mode and black separation in CMYK mode.
+
+<h3><a name="STC_RGBCMYK_coding"></a>RGB / CMYK coding and transfer, and <b><tt>BitsPerPixel</tt></b></h3>
+
+<p>
+These two (groups of) parameters are arrays of floating-point numbers in
+the range 0.0 to 1.0. They control the truncation to the desired number of
+bits stored in raster memory (<b><tt>BitsPerPixel</tt></b>) and the ink
+density. The "truncation" may become a nonlinear function if any of the
+<b><tt>?coding</tt></b> arrays is set. Assume the following Ghostscript
+invocation:
+
+<blockquote><pre>gs -sDEVICE=stcolor -sDithering=fscmyk -dBitsPerPixel=16 \
+ -dKcoding='{ 0.0 0.09 0.9 1.0 }' \
+ -dMcoding='{ 0.0 0.09 0.9 1.0 }' \
+ -dKtransfer='{ 0.0 0.09 0.9 1.0 }' \
+ -dYtransfer='{ 0.0 0.09 0.9 1.0 }'</pre>
+</blockquote>
+
+<p>
+We may have either or both of <b><tt>?coding</tt></b> and
+<b><tt>?transfer</tt></b>, giving four possible combinations. (These four
+combinations appear in the given example.) The resulting mapping appears
+in the following tables, where except for the internal Indices (4
+components &times; 4 bits = 16 <b><tt>BitsPerPixel</tt></b>), all values
+are normalized to the range 0 to 1. The actual range is 0 to 65535 for the
+Ghostscript color and 0 to 16777215 for the ink values delivered to the
+<b><tt>fscmyk</tt></b> algorithm. Sorry for the bunch of numbers
+following, but you may try this example in conjunction with
+<b><tt>stcinfo.ps</tt></b>, which should give you a graphical printout of
+the following numbers when you issue a <b><tt>showpage</tt></b> command.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <th colspan=5>Cyan<hr>
+ <td>&nbsp;
+ <th colspan=5>Magenta<hr>
+<tr valign=top> <th>CI/15
+ <td>&nbsp;
+ <th>gs_color_values
+ <td>&nbsp;
+ <th>CI
+ <td>&nbsp;
+ <th>Ink
+ <td>&nbsp;
+ <th>gs_color_values
+ <td>&nbsp;
+ <th>CI
+ <td>&nbsp;
+ <th>Ink
+<tr> <td colspan=13><hr>
+<tr valign=top> <td align=center>0.000
+ <td>&nbsp;
+ <td align=center>0.000 - 0.062
+ <td>&nbsp;
+ <td align=right>0
+ <td>&nbsp;
+ <td align=center>0.000
+ <td>&nbsp;
+ <td align=center>-0.123 - 0.123
+ <td>&nbsp;
+ <td align=right>0
+ <td>&nbsp;
+ <td align=center>0.000
+<tr valign=top> <td align=center>0.067
+ <td>&nbsp;
+ <td align=center>0.063 - 0.125
+ <td>&nbsp;
+ <td align=right>1
+ <td>&nbsp;
+ <td align=center>0.067
+ <td>&nbsp;
+ <td align=center>0.123 - 0.299
+ <td>&nbsp;
+ <td align=right>1
+ <td>&nbsp;
+ <td align=center>0.247
+<tr valign=top> <td align=center>0.133
+ <td>&nbsp;
+ <td align=center>0.125 - 0.187
+ <td>&nbsp;
+ <td align=right>2
+ <td>&nbsp;
+ <td align=center>0.133
+ <td>&nbsp;
+ <td align=center>0.299 - 0.365
+ <td>&nbsp;
+ <td align=right>2
+ <td>&nbsp;
+ <td align=center>0.351
+<tr valign=top> <td align=center>0.200
+ <td>&nbsp;
+ <td align=center>0.188 - 0.250
+ <td>&nbsp;
+ <td align=right>3
+ <td>&nbsp;
+ <td align=center>0.200
+ <td>&nbsp;
+ <td align=center>0.365 - 0.392
+ <td>&nbsp;
+ <td align=right>3
+ <td>&nbsp;
+ <td align=center>0.379
+<tr valign=top> <td align=center>0.267
+ <td>&nbsp;
+ <td align=center>0.250 - 0.312
+ <td>&nbsp;
+ <td align=right>4
+ <td>&nbsp;
+ <td align=center>0.267
+ <td>&nbsp;
+ <td align=center>0.392 - 0.420
+ <td>&nbsp;
+ <td align=right>4
+ <td>&nbsp;
+ <td align=center>0.406
+<tr valign=top> <td align=center>0.333
+ <td>&nbsp;
+ <td align=center>0.313 - 0.375
+ <td>&nbsp;
+ <td align=right>5
+ <td>&nbsp;
+ <td align=center>0.333
+ <td>&nbsp;
+ <td align=center>0.420 - 0.447
+ <td>&nbsp;
+ <td align=right>5
+ <td>&nbsp;
+ <td align=center>0.433
+<tr valign=top> <td align=center>0.400
+ <td>&nbsp;
+ <td align=center>0.375 - 0.437
+ <td>&nbsp;
+ <td align=right>6
+ <td>&nbsp;
+ <td align=center>0.400
+ <td>&nbsp;
+ <td align=center>0.447 - 0.475
+ <td>&nbsp;
+ <td align=right>6
+ <td>&nbsp;
+ <td align=center>0.461
+<tr valign=top> <td align=center>0.467
+ <td>&nbsp;
+ <td align=center>0.438 - 0.500
+ <td>&nbsp;
+ <td align=right>7
+ <td>&nbsp;
+ <td align=center>0.467
+ <td>&nbsp;
+ <td align=center>0.475 - 0.502
+ <td>&nbsp;
+ <td align=right>7
+ <td>&nbsp;
+ <td align=center>0.488
+<tr valign=top> <td align=center>0.533
+ <td>&nbsp;
+ <td align=center>0.500 - 0.562
+ <td>&nbsp;
+ <td align=right>8
+ <td>&nbsp;
+ <td align=center>0.533
+ <td>&nbsp;
+ <td align=center>0.502 - 0.529
+ <td>&nbsp;
+ <td align=right>8
+ <td>&nbsp;
+ <td align=center>0.516
+<tr valign=top> <td align=center>0.600
+ <td>&nbsp;
+ <td align=center>0.563 - 0.625
+ <td>&nbsp;
+ <td align=right>9
+ <td>&nbsp;
+ <td align=center>0.600
+ <td>&nbsp;
+ <td align=center>0.529 - 0.557
+ <td>&nbsp;
+ <td align=right>9
+ <td>&nbsp;
+ <td align=center>0.543
+<tr valign=top> <td align=center>0.667
+ <td>&nbsp;
+ <td align=center>0.625 - 0.687
+ <td>&nbsp;
+ <td align=right>10
+ <td>&nbsp;
+ <td align=center>0.667
+ <td>&nbsp;
+ <td align=center>0.557 - 0.584
+ <td>&nbsp;
+ <td align=right>10
+ <td>&nbsp;
+ <td align=center>0.571
+<tr valign=top> <td align=center>0.733
+ <td>&nbsp;
+ <td align=center>0.688 - 0.750
+ <td>&nbsp;
+ <td align=right>11
+ <td>&nbsp;
+ <td align=center>0.733
+ <td>&nbsp;
+ <td align=center>0.584 - 0.612
+ <td>&nbsp;
+ <td align=right>11
+ <td>&nbsp;
+ <td align=center>0.598
+<tr valign=top> <td align=center>0.800
+ <td>&nbsp;
+ <td align=center>0.750 - 0.812
+ <td>&nbsp;
+ <td align=right>12
+ <td>&nbsp;
+ <td align=center>0.800
+ <td>&nbsp;
+ <td align=center>0.612 - 0.639
+ <td>&nbsp;
+ <td align=right>12
+ <td>&nbsp;
+ <td align=center>0.626
+<tr valign=top> <td align=center>0.867
+ <td>&nbsp;
+ <td align=center>0.813 - 0.875
+ <td>&nbsp;
+ <td align=right>13
+ <td>&nbsp;
+ <td align=center>0.867
+ <td>&nbsp;
+ <td align=center>0.639 - 0.715
+ <td>&nbsp;
+ <td align=right>13
+ <td>&nbsp;
+ <td align=center>0.653
+<tr valign=top> <td align=center>0.933
+ <td>&nbsp;
+ <td align=center>0.875 - 0.937
+ <td>&nbsp;
+ <td align=right>14
+ <td>&nbsp;
+ <td align=center>0.933
+ <td>&nbsp;
+ <td align=center>0.715 - 0.889
+ <td>&nbsp;
+ <td align=right>14
+ <td>&nbsp;
+ <td align=center>0.778
+<tr valign=top> <td align=center>1.000
+ <td>&nbsp;
+ <td align=center>0.938 - 1.000
+ <td>&nbsp;
+ <td align=right>15
+ <td>&nbsp;
+ <td align=center>1.000
+ <td>&nbsp;
+ <td align=center>0.889 - 1.111
+ <td>&nbsp;
+ <td align=right>15
+ <td>&nbsp;
+ <td align=center>1.000
+</table></blockquote>
+
+<p>
+The difference between cyan and magenta is the presence of a coding array.
+The coding process must map a range of color values to each of the sixteen
+component indices. If no coding array is given, this is accomplished
+by dividing by 4096, equivalent to a right shift by 12 bits. The
+final ink density resides in the given interval and moves from the left to
+the right side from 0 to 15. For magenta there is a coding array
+and the ink value matches the center of the intervals. But the distribution
+of the mapped intervals follows the given coding array and is nonlinear in
+the linear color space of Ghostscript.
+
+<p>
+Now let us take a look at the case with transfer arrays:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <th colspan=5>Yellow<hr>
+ <td>&nbsp;
+ <th colspan=5>Black<hr>
+<tr valign=top> <th>CI/15
+ <td>&nbsp;
+ <th>gs_color_values
+ <td>&nbsp;
+ <th>CI
+ <td>&nbsp;
+ <th>Ink
+ <td>&nbsp;
+ <th>gs_color_values
+ <td>&nbsp;
+ <th>CI
+ <td>&nbsp;
+ <th>Ink
+<tr> <td colspan=13><hr>
+<tr valign=top> <td align=center>0.000
+ <td>&nbsp;
+ <td align=center>0.000 - 0.062
+ <td>&nbsp;
+ <td align=right>0
+ <td>&nbsp;
+ <td align=center>0.000
+ <td>&nbsp;
+ <td align=center>-0.123 - 0.123
+ <td>&nbsp;
+ <td align=right>0
+ <td>&nbsp;
+ <td align=center>0.000
+<tr valign=top> <td align=center>0.067
+ <td>&nbsp;
+ <td align=center>0.063 - 0.125
+ <td>&nbsp;
+ <td align=right>1
+ <td>&nbsp;
+ <td align=center>0.018
+ <td>&nbsp;
+ <td align=center>0.123 - 0.299
+ <td>&nbsp;
+ <td align=right>1
+ <td>&nbsp;
+ <td align=center>0.067
+<tr valign=top> <td align=center>0.133
+ <td>&nbsp;
+ <td align=center>0.125 - 0.187
+ <td>&nbsp;
+ <td align=right>2
+ <td>&nbsp;
+ <td align=center>0.036
+ <td>&nbsp;
+ <td align=center>0.299 - 0.365
+ <td>&nbsp;
+ <td align=right>2
+ <td>&nbsp;
+ <td align=center>0.133
+<tr valign=top> <td align=center>0.200
+ <td>&nbsp;
+ <td align=center>0.188 - 0.250
+ <td>&nbsp;
+ <td align=right>3
+ <td>&nbsp;
+ <td align=center>0.054
+ <td>&nbsp;
+ <td align=center>0.365 - 0.392
+ <td>&nbsp;
+ <td align=right>3
+ <td>&nbsp;
+ <td align=center>0.200
+<tr valign=top> <td align=center>0.267
+ <td>&nbsp;
+ <td align=center>0.250 - 0.312
+ <td>&nbsp;
+ <td align=right>4
+ <td>&nbsp;
+ <td align=center>0.072
+ <td>&nbsp;
+ <td align=center>0.392 - 0.420
+ <td>&nbsp;
+ <td align=right>4
+ <td>&nbsp;
+ <td align=center>0.267
+<tr valign=top> <td align=center>0.333
+ <td>&nbsp;
+ <td align=center>0.313 - 0.375
+ <td>&nbsp;
+ <td align=right>5
+ <td>&nbsp;
+ <td align=center>0.090
+ <td>&nbsp;
+ <td align=center>0.420 - 0.447
+ <td>&nbsp;
+ <td align=right>5
+ <td>&nbsp;
+ <td align=center>0.333
+<tr valign=top> <td align=center>0.400
+ <td>&nbsp;
+ <td align=center>0.375 - 0.437
+ <td>&nbsp;
+ <td align=right>6
+ <td>&nbsp;
+ <td align=center>0.252
+ <td>&nbsp;
+ <td align=center>0.447 - 0.475
+ <td>&nbsp;
+ <td align=right>6
+ <td>&nbsp;
+ <td align=center>0.400
+<tr valign=top> <td align=center>0.467
+ <td>&nbsp;
+ <td align=center>0.438 - 0.500
+ <td>&nbsp;
+ <td align=right>7
+ <td>&nbsp;
+ <td align=center>0.414
+ <td>&nbsp;
+ <td align=center>0.475 - 0.502
+ <td>&nbsp;
+ <td align=right>7
+ <td>&nbsp;
+ <td align=center>0.467
+<tr valign=top> <td align=center>0.533
+ <td>&nbsp;
+ <td align=center>0.500 - 0.562
+ <td>&nbsp;
+ <td align=right>8
+ <td>&nbsp;
+ <td align=center>0.576
+ <td>&nbsp;
+ <td align=center>0.502 - 0.529
+ <td>&nbsp;
+ <td align=right>8
+ <td>&nbsp;
+ <td align=center>0.533
+<tr valign=top> <td align=center>0.600
+ <td>&nbsp;
+ <td align=center>0.563 - 0.625
+ <td>&nbsp;
+ <td align=right>9
+ <td>&nbsp;
+ <td align=center>0.738
+ <td>&nbsp;
+ <td align=center>0.529 - 0.557
+ <td>&nbsp;
+ <td align=right>9
+ <td>&nbsp;
+ <td align=center>0.600
+<tr valign=top> <td align=center>0.667
+ <td>&nbsp;
+ <td align=center>0.625 - 0.687
+ <td>&nbsp;
+ <td align=right>10
+ <td>&nbsp;
+ <td align=center>0.900
+ <td>&nbsp;
+ <td align=center>0.557 - 0.584
+ <td>&nbsp;
+ <td align=right>10
+ <td>&nbsp;
+ <td align=center>0.667
+<tr valign=top> <td align=center>0.733
+ <td>&nbsp;
+ <td align=center>0.688 - 0.750
+ <td>&nbsp;
+ <td align=right>11
+ <td>&nbsp;
+ <td align=center>0.920
+ <td>&nbsp;
+ <td align=center>0.584 - 0.612
+ <td>&nbsp;
+ <td align=right>11
+ <td>&nbsp;
+ <td align=center>0.733
+<tr valign=top> <td align=center>0.800
+ <td>&nbsp;
+ <td align=center>0.750 - 0.812
+ <td>&nbsp;
+ <td align=right>12
+ <td>&nbsp;
+ <td align=center>0.940
+ <td>&nbsp;
+ <td align=center>0.612 - 0.639
+ <td>&nbsp;
+ <td align=right>12
+ <td>&nbsp;
+ <td align=center>0.800
+<tr valign=top> <td align=center>0.867
+ <td>&nbsp;
+ <td align=center>0.813 - 0.875
+ <td>&nbsp;
+ <td align=right>13
+ <td>&nbsp;
+ <td align=center>0.960
+ <td>&nbsp;
+ <td align=center>0.639 - 0.715
+ <td>&nbsp;
+ <td align=right>13
+ <td>&nbsp;
+ <td align=center>0.867
+<tr valign=top> <td align=center>0.933
+ <td>&nbsp;
+ <td align=center>0.875 - 0.937
+ <td>&nbsp;
+ <td align=right>14
+ <td>&nbsp;
+ <td align=center>0.980
+ <td>&nbsp;
+ <td align=center>0.715 - 0.889
+ <td>&nbsp;
+ <td align=right>14
+ <td>&nbsp;
+ <td align=center>0.933
+<tr valign=top> <td align=center>1.000
+ <td>&nbsp;
+ <td align=center>0.938 - 1.000
+ <td>&nbsp;
+ <td align=right>15
+ <td>&nbsp;
+ <td align=center>1.000
+ <td>&nbsp;
+ <td align=center>0.889 - 1.111
+ <td>&nbsp;
+ <td align=right>15
+ <td>&nbsp;
+ <td align=center>1.000
+</table></blockquote>
+
+<p>
+Yellow uses a transfer array. There is no linear correspondence between
+the color and the ink values: this correspondence is defined through the
+given array. In other words, the transfer arrays define a nonlinear ink
+characteristic, which is exactly the same functionality that PostScript's
+"(color)transfer" function provides.
+
+<p>
+While for yellow the intervals match the intervals used with cyan, for
+black the intervals match the magenta intervals. But watch the
+correspondence between the CI/15 values and the ink density for black: this
+is a linear distribution in the ink domain.
+
+<p>
+Not a bad idea, I think. Consider the <b><tt>fs2</tt></b> algorithm: it
+uses values in the range 0 to 255. If any transfer array were alone, some
+of the 256 possible values would never be used and others would be used for
+adjacent intervals several times. Establishing an identical coding array
+solves this problem, so the full potential of the algorithm is used.
+
+<p>
+Another useful feature of the coding arrays is that they are internally
+normalized to the range 0-1. In 720x720dpi mode the transfer arrays in
+<b><tt>stcolor.ps</tt></b> limit the dot density to about 50%, so these
+arrays end at 0.5 (and begin at 0.5 for RGB). Because of automatic
+normalization, these arrays can also be used as coding arrays. But of
+course in the <b><tt>fs2</tt></b> case mentioned above, values from 0 to
+127 will never be delivered to the algorithm, while values 128-255 are
+delivered for adjacent intervals.
+
+<p>
+To clarify the intended use of the three parameters (parameter groups), keep this in mind:
+
+<blockquote><ul>
+<li><b><tt>ColorAdjustMatrix</tt></b> is never used when transferring gray
+values. This restricts it to what the name says: adjustment of colors,
+that is, correction for miscolored ink. Do not use it for saturation or
+brightness control.
+
+<li><b><tt>?transfer</tt></b> arrays control the values delivered to the
+driver, which in turn controls the ink quantity. Use these arrays to
+control saturation and brightness. In general these arrays are identical
+for all inks. If they differ they provide a simpler scheme for color
+correction, which is not necessarily faster than the
+<b><tt>ColorAdjustMatrix</tt></b>.
+
+<li><b><tt>?coding</tt></b> arrays control the color value intervals mapped
+to the internal color indices.
+</ul></blockquote>
+
+<h3><a name="What_is_weaving"></a>What is weaving?</h3>
+
+<p>
+The Epson Stylus Color has a head assembly that contains two physically
+identifiable heads, one for black and one for cyan, magenta, and yellow
+(CMY). This makes four "logical" heads, one for each color component.
+Each of these four heads has several jets at some vertical (Y) distance
+from one another, so several horizontal lines can be printed of a given
+color during one pass of the heads. From experience I think there are
+fifteen jets per color, spaced at 1/90in.
+
+<p>
+So the question arises of how to print at a Y resolution of 360dpi with
+90dpi jets. Simply by division one gets 360dpi/90dpi = 4, which tells us
+that 4 passes of the head assembly are needed to achieve a Y resolution of
+360dpi.
+
+<p>
+Weaving is the method of how the fifteen jets are used to print adjacent
+horizontal rows separated here by 1/360 inch:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=17 bgcolor="#CCCC00"><hr><font size="+1">Print-head jets used with and without weaving</font><hr>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <th valign=bottom colspan=7>Weaving<hr>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom colspan=7>noWeave<hr>
+<tr valign=top> <td>&nbsp;
+ <th>Pass
+ <th>1
+ <td>&nbsp;
+ <th>2
+ <td>&nbsp;
+ <th>3
+ <td>&nbsp;
+ <th>4
+ <td>&nbsp;
+ <th>1
+ <td>&nbsp;
+ <th>2
+ <td>&nbsp;
+ <th>3
+ <td>&nbsp;
+ <th>4
+<tr> <th>Row
+<tr valign=top> <td align=center>0
+ <td>&nbsp;
+ <td align=center>jet 0
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 0
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+<tr valign=top> <td align=center>1
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 1
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 0
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+<tr valign=top> <td align=center>2
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 2
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 0
+ <td>&nbsp;
+ <td align=center>--
+<tr valign=top> <td align=center>3
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 3
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 0
+<tr valign=top> <td align=center>4
+ <td>&nbsp;
+ <td align=center>jet 1
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 1
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+<tr valign=top> <td align=center>5
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 2
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 1
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+<tr valign=top> <td align=center>6
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 3
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>jet 1
+ <td>&nbsp;
+ <td align=center>--
+<tr valign=top> <th>...
+</table></blockquote>
+
+<p>
+Now let's assume that the dot diameter is different for each individual
+jet, but the average among the jets matches the desired resolution. With
+weaving, adjacent rows are printed by different jets, thus some averaging
+takes place. Without weaving, adjacent rows are printed by the same jet
+and this makes the dot diameter deviations visible as 1/90in stripes on
+the paper.
+
+<h3><a name="STC_print_modes"></a>Print mode parameters</h3>
+
+<p>
+The parameters "<b><tt>Unidirectional</tt></b>",
+"<b><tt>Microweave</tt></b>", "<b><tt>noWeave</tt></b>",
+"<b><tt>OutputCode</tt></b>", "<b><tt>Model</tt></b>" and the given
+resolution control the data generated for the printer.
+
+<h4><a name="STC_unidirectional"></a><b><tt>Unidirectional</tt></b></h4>
+
+<p>
+Simply toggles the unidirectional mode of the printer. Setting
+"<b><tt>Unidirectional</tt></b>" definitely slows printing speed, but may
+improve the quality. I use this for printing transparencies, where fast
+head movement could smear the ink.
+
+<h4><a name="STC_noweave"></a><b><tt>Microweave</tt></b>,
+<b><tt>noWeave</tt></b> and <b><tt>OutputCode=deltarow</tt></b></h4>
+
+<p>
+The first are two booleans, which implies that four combinations are
+possible. Actually only three exist (if you don't count for
+<b><tt>deltarow</tt></b>): <b><tt>Softweave</tt></b>,
+<b><tt>Microweave</tt></b>, and <b><tt>noWeave</tt></b>. The first and
+second are functionally identical, the difference being whether the driver
+or the printer does the job.
+
+<p>
+In the default <b><tt>Softweave</tt></b> mode the driver sends the data
+properly arranged to the printer, while in <b><tt>Microweave</tt></b> mode,
+it is the printer that arranges the data. But in general the host processor
+is much faster than the printer's processor, and thus it is faster for the
+host do the job. In addition to that, for 720dpi eight passes are
+required, and the amount of buffer space needed to buffer the data for the
+passes is far beyond the printer's memory. <b><tt>Softweave</tt></b>
+requires an odd value of "<b><tt>escp_Band</tt></b>"; the Stylus Color
+provides fifteen for that.
+
+<p>
+"<b><tt>OutputCode</tt></b>" controls the encoding used. In the basic
+modes, the choice consists of "plain" and "runlength". The computation of
+runlength-encoded data does not take much time, less than the data tranfer
+to the printer; thus this is the recommended mode, and of course the
+default. With the Stylus Color, Epson introduced some new encoding
+principles, namely "tiff" and "deltarow". While the first was omitted from
+this driver for lack of apparent advantages, "<b><tt>deltarow</tt></b>" is
+available as an option. "<b><tt>Softweave</tt></b>" cannot be used with
+this encoding, so if <b><tt>OutputCode=deltarow</tt></b> is set,
+<b><tt>Microweave</tt></b> becomes the default. Maybe that the size of the
+ESC/P2 code becomes smaller, but I have never observed faster printing
+speed. Things tend to become slower with <b><tt>deltarow</tt></b> compared
+to <b><tt>Softweave</tt></b>.
+
+<h4><a name="STC_model"></a><b><tt>Model</tt></b></h4>
+
+<p>
+Some ESC/P2 printers such as the Stylus 800 do not offer
+<b><tt>Microweave</tt></b> or the commands required to do
+<b><tt>Softweave</tt></b>. Setting <b><tt>Model</tt></b> just changes the
+defaults and omits some parts of the initialization sequence which are not
+compatible with the given printer model. Currently only
+"<b><tt>st800</tt></b>" is supported besides the default
+<b><tt>stcolor</tt></b>.
+
+<h3><a name="STC_Pitfalls"></a>Bugs and pitfalls</h3>
+
+<ul>
+<li>The given <b><tt>?coding</tt></b> and <b><tt>?transfer</tt></b> arrays
+should be strictly monotonic.
+
+<li>It is impossible to change <b><tt>WHITE</tt></b>: that's your paper.
+Thus RGB transfer should end at 1.0 and CMYK transfer should start at 0.0.
+
+<li>Usually 8 bits per component yields fastest operation.
+
+<li>The <b><tt>ColorAdjustMatrix</tt></b> is not used in the reverse
+transformation used when Ghostscript does the dithering
+(<b><tt>gs</tt></b>* modes). Expect funny results.
+
+<li>If <b><tt>BitsPerPixel</tt></b> is less than 6, the entire coding and
+transfer process does not work. This is always true for the
+<b><tt>gs</tt></b>* modes and becomes true for the other modes if
+<b><tt>BitsPerPixel</tt></b> is forced to low values.
+
+<li>720&times;720dpi printing should never select the <b><tt>gs</tt></b>*
+modes and should always use <b><tt>stcolor.ps</tt></b>. (I prefer
+360&times;720.)
+</ul>
+
+<h3><a name="STC_Tests"></a>Tests</h3>
+
+<p>
+This section gives an overview of performance in terms of processing and
+printing times, from tests run after version 1.13. Printing was done
+offline (simply copying a processed file to the printer) to measure real
+printing speed without regard to speed of processing on the host, since at
+high resolutions, processing time is the same order of magnitude and thus
+may become the limiting factor.
+
+<h4><a name="STC_OutputCodes"></a>The various OutputCodes</h4>
+
+<p>
+I ran several files though Ghostscript and recorded the size of the
+resulting print code, the processing time, and the printing time, at least
+for some of the files, always using these options:
+
+<blockquote><b><tt>
+gs -sDEVICE=stcolor -sPAPERSIZE=a4 stcolor.ps - &lt; file.ps
+</tt></b></blockquote>
+
+<p>
+(Actually "<b><tt>-sPAPERSIZE=a4</tt></b>" is in my
+<b><tt>gs_init.ps</tt></b> since I'm a germ.)
+
+<p>"<b><tt>deltarow</tt></b>" is the new encoding principle
+("<b><tt>ESC&nbsp;.&nbsp;3&nbsp;10&nbsp;10&nbsp;1</tt></b>") with
+<b><tt>Microweave</tt></b> on. It is activated with
+"<b><tt>-sOutputCode=deltarow</tt></b>".
+
+<p>"<b><tt>Softweave</tt></b>" actually means that nothing else was used:
+it is the default, and implies that odd v=40/h=10/m=15 mode
+("<b><tt>ESC&nbsp;.&nbsp;1&nbsp;40&nbsp;10&nbsp;15</tt></b>").
+
+<p>"<b><tt>Microweave</tt></b>" means "<b><tt>-dMicroweave</tt></b>",
+equivalent to "<b><tt>ESC&nbsp;.&nbsp;1&nbsp;10&nbsp;10&nbsp;1</tt></b>",
+with full skip optimization and microweave activated.
+
+<p>
+Finally I wanted to see the plain Kathy Ireland, and used
+"<b><tt>-sOutputCode=plain</tt></b>", which just replaces runlength
+encoding (RLE) by no encoding, thus using
+"<b><tt>ESC&nbsp;.&nbsp;0&nbsp;40&nbsp;10&nbsp;15</tt></b>". [So sorry
+<b><tt>;-)</tt></b> Kathy was still dressed in blue in front of the blue
+sea on a blue air cushion -- nice to see but hard to dither.]
+
+<p>
+So here are the results.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=9 bgcolor="#CCCC00"><hr><font size="+1">File sizes and printing speeds with various weaving methods</font><hr>
+<tr valign=bottom>
+ <td>&nbsp;
+ <td>&nbsp;
+ <th><b><tt>golfer.ps</tt></b>
+ <td>&nbsp;
+ <th><b><tt>colorcir.ps</tt></b>
+ <td>&nbsp;
+ <th><b><tt>drawing.ps</tt></b>
+ <td>&nbsp;
+ <th><b><tt>brief.ps</tt></b>
+<tr> <td colspan=9><hr>
+<tr valign=top> <td><b><tt>deltarow</tt></b>
+ <td>&nbsp;
+ <td>572751/48.180u
+ <td>&nbsp;
+ <td>643374/41.690u
+ <td>&nbsp;
+ <td>90142/46.180u/1:50
+ <td>&nbsp;
+ <td>178563/49.350u/2:22
+<tr valign=top> <td><b><tt>Softweave</tt></b>
+ <td>&nbsp;
+ <td>559593/46.810u
+ <td>&nbsp;
+ <td>669966/44.960u
+ <td>&nbsp;
+ <td>296168/48.160u/1:30
+ <td>&nbsp;
+ <td>269808/43.320u/1:55
+<tr valign=top> <td><b><tt>Microweave</tt></b>
+ <td>&nbsp;
+ <td>590999/56.060u
+ <td>&nbsp;
+ <td>754276/42.890u
+ <td>&nbsp;
+ <td>338885/47.060u/1:50
+ <td>&nbsp;
+ <td>282314/44.690u/2:22
+</table></blockquote>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Kathy Ireland</font><hr>
+<tr valign=bottom>
+ <td>&nbsp;
+ <td>&nbsp;
+ <th><b><tt>kathy.ps</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>deltarow</tt></b>
+ <td>&nbsp;
+ <td>3975334/111.940u/5:35
+<tr valign=top> <td><b><tt>Softweave</tt></b>
+ <td>&nbsp;
+ <td>3897112/101.940u/3:10
+<tr valign=top> <td><b><tt>Microweave</tt></b>
+ <td>&nbsp;
+ <td>4062829/100.990u/3:15
+<tr valign=top> <td><b><tt>plain/soft</tt></b>
+ <td>&nbsp;
+ <td>5072255/104.390u/3:05
+</table></blockquote>
+
+<p>
+It may be that I've not chosen the optimal <b><tt>deltarow</tt></b> code,
+but even if it saves at lot of bytes, printing-speed is not increased.
+
+<p>
+At least the printer prefers plain Kathy. In other words, sending 1
+Megabyte or 20% more data has no impact on printing speed.
+<b><tt>drawing.ps</tt></b> is an exception to this rule: plain prints
+slower than RLE.
+
+<p>
+"Unclever" coding -- especially with <b><tt>deltarow</tt></b> -- can
+significantly slow down printing. But even if very significant advantages
+in the size of the code are achieved, "<b><tt>deltarow</tt></b>" is not
+competitive. <b><tt>colorcir.ps</tt></b> shows savings with
+<b><tt>deltarow</tt></b>, but printing is a mess.
+
+<h4><a name="STC_printing_time"></a>Printing time related to other options</h4>
+
+<p>
+Full page halftone images printed, unless otherwise noted.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=11 bgcolor="#CCCC00"><hr><font size="+1">Printing time related to other options</font><hr>
+<tr valign=top> <th>dpi
+ <td>&nbsp;
+ <th colspan=3>Print mode
+ <td>&nbsp;
+ <th>Size KB
+ <td>&nbsp;
+ <th>Time
+ <td>&nbsp;
+ <th align=left>Comments
+<tr> <td colspan=11><hr>
+<tr valign=top> <td>180x180
+ <td>&nbsp;
+ <td>mono
+ <td>&nbsp;
+ <td align=right>-/uni
+ <td>&nbsp;
+ <td align=right>358
+ <td>&nbsp;
+ <td align=right>1:15
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>-/bi
+ <td>&nbsp;
+ <td align=right>358
+ <td>&nbsp;
+ <td align=right>0:45
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>micro/bi
+ <td>&nbsp;
+ <td align=right>205
+ <td>&nbsp;
+ <td align=right>0:45
+ <td>&nbsp;
+ <td>Not weaving
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>179
+ <td>&nbsp;
+ <td align=right>1:25
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td>color
+ <td>&nbsp;
+ <td align=right>-/bi
+ <td>&nbsp;
+ <td align=right>641
+ <td>&nbsp;
+ <td align=right>2:45
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>556
+ <td>&nbsp;
+ <td align=right>1:32
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>360x360
+ <td>&nbsp;
+ <td>mono
+ <td>&nbsp;
+ <td align=right>-/uni
+ <td>&nbsp;
+ <td align=right>269
+ <td>&nbsp;
+ <td align=right>0:50
+ <td>&nbsp;
+ <td>Monochrome text
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>-/bi
+ <td>&nbsp;
+ <td align=right>269
+ <td>&nbsp;
+ <td align=right>0:35
+ <td>&nbsp;
+ <td>Monochrome text
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>micro/bi
+ <td>&nbsp;
+ <td align=right>269
+ <td>&nbsp;
+ <td align=right>2:25
+ <td>&nbsp;
+ <td>Monochrome text
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/uni
+ <td>&nbsp;
+ <td align=right>250
+ <td>&nbsp;
+ <td align=right>3:15
+ <td>&nbsp;
+ <td>Monochrome text
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>250
+ <td>&nbsp;
+ <td align=right>1:55
+ <td>&nbsp;
+ <td>Monochrome text
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td>color
+ <td>&nbsp;
+ <td align=right>-/bi
+ <td>&nbsp;
+ <td align=right>346
+ <td>&nbsp;
+ <td align=right>1:00
+ <td>&nbsp;
+ <td>Sparse-color page, visible displacements
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>micro/bi
+ <td>&nbsp;
+ <td align=right>346
+ <td>&nbsp;
+ <td align=right>1:50
+ <td>&nbsp;
+ <td>Sparse-color page, looks buggy -- printer?
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>294
+ <td>&nbsp;
+ <td align=right>1:30
+ <td>&nbsp;
+ <td>Sparse-color page, O.K.
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>-/bi
+ <td>&nbsp;
+ <td align=right>2218
+ <td>&nbsp;
+ <td align=right>2:45
+ <td>&nbsp;
+ <td>Visible stripes
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>micro/bi
+ <td>&nbsp;
+ <td align=right>5171
+ <td>&nbsp;
+ <td align=right>3:17
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>3675
+ <td>&nbsp;
+ <td align=right>3:05
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>360x720
+ <td>&nbsp;
+ <td>mono
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>2761
+ <td>&nbsp;
+ <td align=right>5:40
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td>color
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>7789
+ <td>&nbsp;
+ <td align=right>6:15
+ <td>&nbsp;
+ <td>Just a small difference!
+<tr valign=top> <td>720x360
+ <td>&nbsp;
+ <td>color
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>7182
+ <td>&nbsp;
+ <td align=right>5:40
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>720x720
+ <td>&nbsp;
+ <td>color
+ <td>&nbsp;
+ <td align=right>micro/bi
+ <td>&nbsp;
+ <td align=right>14748
+ <td>&nbsp;
+ <td align=right>30:26
+ <td>&nbsp;
+ <td>Actually beyond printer's capabilities
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td align=right>&nbsp;
+ <td>&nbsp;
+ <td align=right>soft/bi
+ <td>&nbsp;
+ <td align=right>14407
+ <td>&nbsp;
+ <td align=right>11:08
+ <td>&nbsp;
+ <td>&nbsp;
+</table></blockquote>
+
+<h3><a name="STC_acks"></a>Acknowledgments</h3>
+
+<p>
+This driver was copied from <b><tt>gdevcdj.c</tt></b> (Ghostscript 3.12),
+which was contributed by George Cameron, Koert Zeilstra, and Eckhard
+Rueggeberg. Some of the ESC/P2 code was drawn from Richard Brown's
+<b><tt>gdevescp.c</tt></b>. The POSIX interrupt code (compilation option
+<b><tt>-DSTC_SIGNAL</tt></b>) is from Frederic Loyer. Several improvements
+are based on discussions with Brian Converse, Bill Davidson, Gero Guenther,
+Jason Patterson, ? Rueschstroer, and Steven Singer.
+
+<p>
+While I wish to thank everyone mentioned above, they are by no means
+responsible for bugs in the stcolor driver -- just for the features.
+
+<address>
+Gunther Hess<br>
+Richard Wagner Strasse 112<br>
+D-47057 Duisburg<br>
+Germany<br>
++49 203 376273 telephone (MET evening hours)<br>
+&lt;<a href="mailto:ghess@elmos.de">ghess@elmos.de</a>&gt;
+</address>
+
+<hr>
+
+<h2><a name="Uniprint"></a>uniprint, a flexible unified printer driver</h2>
+
+<p>
+<b><tt>uniprint</tt></b> is a unified parametric driver by Gunther Hess
+&lt;<a href="mailto:ghess@elmos.de">ghess@elmos.de</a>&gt; for several
+kinds of printers and devices, including
+
+<blockquote>
+<ul>
+<li>any Epson Stylus Color, Stylus, or Stylus Pro
+<li>HP PCL/RTL
+<li>Canon BubbleJet Color 610
+<li>NEC P2X
+<li>Sun raster file format
+</ul></blockquote>
+
+<p>
+This driver is intended to <em>become</em> a unified printer driver. If you
+consider it ugly, please send me your suggestions for improvements. The
+driver will be updated with them. Thus the full explanation of the driver's
+name is:
+
+<blockquote>
+Ugly- -&gt; Updated- -&gt; Unified Printer Driver
+</blockquote>
+
+<p>
+But you probably want to know something about the functionality.
+At the time of this writing uniprint drives:
+
+<ul>
+<li>NEC Pinwriter P2X (24-pin monochrome impact printer, ESC/P style)
+<li>Several Epson Stylus Color models (ESC/P2 style)
+<li>HP-DeskJet 550c (basic HP-RTL)
+<li>Canon BJC 610
+</ul>
+
+<p>
+It can be configured for various other printers without recompilation
+and offers uncompressed (ugly) Sun rasterfiles as another format, but
+this format is intended for testing purposes rather than real use.
+The usage of this driver is quite simple. The typical command line looks
+like this:
+
+<blockquote>
+<b><tt>gs @</tt></b>{MODEL}<b><tt>.upp -sOutputFile=</tt></b>{printable file}<b><tt> MyFile.ps -c quit</tt></b>
+</blockquote>
+
+<p>
+For example, from my GNU/Linux box:
+
+<blockquote><b><tt>
+gs @stc.upp -sOutputFile=/dev/lp1 tiger.ps -c quit
+</tt></b></blockquote>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=6 bgcolor="#CCCC00"><hr><font size="+1">Unified Printer Parameter files distributed with Ghostscript</font><hr>
+<tr> <th align=left colspan=6>Canon BJC 610 (color, rendered)
+<tr valign=top> <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td><b><tt>bjc610a0.upp</tt></b>
+ <td>&nbsp;&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;&nbsp;
+ <td>plain paper, high speed
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a1.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a2.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>coated paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a3.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>transparency film
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a4.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>back print film
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a5.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>fabric sheet
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a6.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>glossy paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a7.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>high gloss film
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610a8.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>high resolution paper
+<tr> <td>&nbsp;
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b1.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b2.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>coated paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b3.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>transparency film
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b4.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>back print film
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b6.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>glossy paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b7.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>high-gloss paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>bjc610b8.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>high resolution paper
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>HP Ink-Printers
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>cdj550.upp</tt></b>
+ <td>&nbsp;
+ <td>300&times;300dpi
+ <td>&nbsp;
+ <td>32-bit CMYK
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>cdj690.upp</tt></b>
+ <td>&nbsp;
+ <td>300&times;300dpi
+ <td>&nbsp;
+ <td>Normal mode
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>cdj690ec.upp</tt></b>
+ <td>&nbsp;
+ <td>300&times;300dpi
+ <td>&nbsp;
+ <td>Economy mode
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>dnj750c.upp</tt></b>
+ <td>&nbsp;
+ <td>300&times;300dpi
+ <td>&nbsp;
+ <td>Color -- also good for 450C
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>dnj750m.upp</tt></b>
+ <td>&nbsp;
+ <td>600&times;600dpi
+ <td>&nbsp;
+ <td>Monochrome
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>NEC P2X
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>necp2x.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>8-bit (Floyd-Steinberg)
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Any Epson Stylus Color
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stcany.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>4-bit, PostScript halftoning
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stcany_h.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>4-bit, PostScript halftoning
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Original Epson Stylus and Stylus Pro Color
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 15-pin
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc_l.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>4-bit, PostScript halftoning, weaved noWeave
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc_h.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 15-pin Weave
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color II
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc2.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 20-pin, Epson Stylus Color II(s)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc2_h.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 20-pin, Epson Stylus Color II
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc2s_h.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 20-pin, Epson Stylus Color IIs
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color 200
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc200.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;720dpi
+ <td>&nbsp;
+ <td>Plain Paper
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color 300
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc300.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc300bl.upp</tt></b>
+ <td>&nbsp;
+ <td>180&times;180dpi
+ <td>&nbsp;
+ <td>black only, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc300bm.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>black only, plain paper
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color 500 (good transfer curves for plain paper)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc500p.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, noWeave, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc500ph.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, noWeave, plain paper
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color 600, 32/90-inch weaving
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc600pl.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 32-pin, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc600p.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 32-pin, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc600ih.upp</tt></b>
+ <td>&nbsp;
+ <td>1440&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 30-pin, inkjet paper
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color 640
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc640p.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>plain paper?
+
+
+
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>st640p.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>CMYK, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>st640pg.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>grayscale, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>st640pl.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>CMYK, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>st640plg.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>grayscale, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>st640ih.upp</tt></b>
+ <td>&nbsp;
+ <td>1440&times;720dpi
+ <td>&nbsp;
+ <td>CMYK, inkjet paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>st640ihg.upp</tt></b>
+ <td>&nbsp;
+ <td>1440&times;720dpi
+ <td>&nbsp;
+ <td>grayscale, inkjet paper
+
+
+
+
+
+
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Epson Stylus Color 800, 64/180-inch weaving
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc800pl.upp</tt></b>
+ <td>&nbsp;
+ <td>360&times;360dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 64-pin, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc800p.upp</tt></b>
+ <td>&nbsp;
+ <td>720&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 64-pin, plain paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc800ih.upp</tt></b>
+ <td>&nbsp;
+ <td>1440&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 62-pin, inkjet paper
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>stc1520.upp</tt></b>
+ <td>&nbsp;
+ <td>1440&times;720dpi
+ <td>&nbsp;
+ <td>32-bit CMYK, 62-pin, inkjet paper
+<tr> <td>&nbsp;
+<tr> <th align=left colspan=6>Sun raster file
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>ras1.upp</tt></b>
+ <td>&nbsp;
+ <td>1-bit
+ <td>&nbsp;
+ <td>monochrome (Ghostscript)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>ras3.upp</tt></b>
+ <td>&nbsp;
+ <td>3-bit
+ <td>&nbsp;
+ <td>RGB (Ghostscript)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>ras4.upp</tt></b>
+ <td>&nbsp;
+ <td>4-bit
+ <td>&nbsp;
+ <td>CMYK (Ghostscript)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>ras8m.upp</tt></b>
+ <td>&nbsp;
+ <td>8-bit
+ <td>&nbsp;
+ <td>grayscale (Floyd-Steinberg)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>ras24.upp</tt></b>
+ <td>&nbsp;
+ <td>24-bit
+ <td>&nbsp;
+ <td>RGB (Floyd-Steinberg)
+<tr valign=top> <td>&nbsp;
+ <td><b><tt>ras32.upp</tt></b>
+ <td>&nbsp;
+ <td>32-bit
+ <td>&nbsp;
+ <td>CMYK (CMYK-Floyd-Steinberg)
+</table></blockquote>
+
+<p>
+Thanks to Danilo Beuche, Guido Classen, Mark Goldberg and Hans-Heinrich
+Viehmann for providing the files for the stc200, hp690, stc500 and the
+stc640. Thanks to Michael Lossin &lt;losse@germanymail.com&gt; for the
+newer st640 parameter sets.
+
+<p>
+Please note the following:
+
+<blockquote><ul>
+<li>Changing the resolution with Ghostscript's
+<a href="Use.htm#Resolution_switch"><b><tt>-r</tt></b> switch</a> is
+usually not possible.
+<li>For Epson Stylus Color models not listed above, the two
+<b><tt>stc500</tt></b> variants are likely to work in addition to
+<b><tt>stcany</tt></b>, but their gamma correction might be wrong.
+</ul></blockquote>
+
+<h3><a name="Uni_state"></a>The state of this driver</h3>
+
+<p>
+The coding of <b><tt>uniprint</tt></b> was triggered by the requirements of
+the various Stylus Color models and some personal needs for HP and NEC
+drivers. Thus the Epson models are well represented among the distributed
+parameter files. When this driver entered the beta test phase, three other
+drivers appreared on the scene that could be at least partially integrated
+into <b><tt>uniprint</tt></b>: <b><tt>cdj850</tt></b> by Uli Wortmann
+(available at <a href="http://www.erdw.ethz.ch/~bonk/hp850/hp850.html">http://www.erdw.ethz.ch/~bonk/hp850/hp850.html</a>),
+<b><tt>hpdj</tt></b> by Martin Lottermoser, and <b><tt>bjc610</tt></b> by
+Helmut Riegler.
+
+<p>
+Uli addresses features of the more recent DeskJet models that will not be
+available in <b><tt>uniprint</tt></b> soon. Martin taught me a lesson on
+HP-PCL3 headers that will be available in <b><tt>uniprint</tt></b>
+soon. Helmut in turn followed an almost similar idea, but targetted
+primarily for printing on Canon printers from the pbmplus library. Starting
+with version 1.68 of uniprint, BJC support is available. Work on the
+<b><tt>hpdj</tt></b> integration will start after the update of my website.
+
+<h3><a name="Uni_background"></a>Notes on <b><tt>uniprint</tt></b>'s background</h3>
+
+<p>
+<b><tt>uniprint</tt></b> is actually an update of <b><tt>stcolor</tt></b>,
+but much more versatile than its predecessor; <b><tt>stcolor</tt></b>, in
+its turn, started as a clone of the color DeskJet family of drivers
+(<b><tt>cdj</tt></b>*). Finally, <b><tt>cdj</tt></b>* can be considered an
+addition of features to the simpler monochrome drivers of Ghostscript. This
+addition of features is useful to get an idea of the functionality of
+<b><tt>uniprint</tt></b>:
+
+<blockquote>
+<dl>
+<dt>Monochrome to advanced color (<b><tt>cdj</tt></b>*):
+<dd>This adds color mapping and rendering functions to the driver.
+Error diffusion is especially important for the quality of printing.
+</dl>
+
+<dl>
+<dt>HP color to Epson Color (<b><tt>stcolor</tt></b>)
+<dd>The Epson Stylus Color offered two features simultaneously: it could
+produce 720&times;720dpi output and it could soak the paper. In other
+words, it required more color management features inside the driver. This
+is still the major conceptual difference in the data generation for HP and
+Epson printers.
+</dl>
+
+<dl>
+<dt>Weaving techniques (<b><tt>stcolor</tt></b>)
+<dd>Besides the internal color management, the Stylus Color did not provide
+enough buffer space to operate the printer fast at 720&times;720dpi. The
+use of weaving could yield triple the print speed. Weaving, also called
+interleaving, is present in some monochrome drivers too. The new thing in
+<b><tt>stcolor</tt></b> was the combination with error diffusion.
+Unfortunately the weaving was somehow hard-coded, as the problems with the
+newer members of the Stylus Color family of printers demonstrated.
+</dl>
+
+<dl>
+<dt>Generalized output format and weaving (<b><tt>uniprint</tt></b>)
+<dd>The features mentioned above yield about 90% of
+<b><tt>stcolor</tt></b>'s source code; only 10% is related to the
+formatting of the output. The idea to make the output format switchable
+came up soon after completing <b><tt>stcolor</tt></b>, but its final design
+was triggered by the (personal) necessity to drive a NEC P2X and a
+Designjet 750c.
+</dl></blockquote>
+
+<p>
+Thus <b><tt>uniprint</tt></b> accumulates almost any features that can be
+found among the other printer drivers, which clearly has some disadvantage
+in processing speed -- true in particular of version 1.75, since it was
+targetted for functionality, and several speed-gaining features were
+(knowingly) omitted.
+
+<p>
+To summarize and to introduce the terms used in the description of the
+parameters, the features of <b><tt>uniprint</tt></b> that can be
+parameterized are:
+
+<blockquote><ul>
+<li>color mapping,
+<li>color rendering (error diffusion or Floyd-Steinberg),
+<li>output format, including
+<li>weaving.
+</ul></blockquote>
+
+<h3><a name="Uni_make_pfile"></a>Godzilla's guide to the creation of Unified Printer Parameter (<b><tt>.upp</tt></b>) files</h3>
+
+<p>
+Here is one of the distributed parameter files (<b><tt>stc_l.upp</tt></b>)
+with some added comments. Also see the section that describes
+<a href="#Uni_all_parameters">all <b><tt>uniprint</tt></b>'s parameters in
+brief</a>.
+
+<pre>
+-supModel="Epson Stylus Color I (and PRO Series), 360x360DpI, noWeave"
+-sDEVICE=uniprint -- Select the driver
+-dNOPAUSE -- Useful with printers
+-dSAFER -- Provides some security
+-dupColorModel=/DeviceCMYK -- Selects the color mapping
+-dupRendering=/ErrorDiffusion -- Selects the color rendering
+-dupOutputFormat=/EscP2 -- Selects the output format
+-r360x360 -- Adjusts the resolution
+-dupMargins="{ 9.0 39.96 9.0 9.0}" -- Establishes (L/B/R/T margins in points)
+-dupComponentBits="{1 1 1 1}" -- Map: bits per component (default: 8)
+-dupWeaveYPasses=4 -- Weave: Y-passes (default: 1)
+-dupOutputPins=15 -- Format/weave: scans per Command
+-dupBeginPageCommand="&lt; -- Goes to the printer
+ 1b40 1b40 -- ESC '@' ESC '@' -&gt; dual reset
+ 1b2847 0100 01 -- ESC '(' 'G' 1 0 1 -&gt; graphics
+ 1b2869 0100 00 -- ESC '(' 'i' 1 0 1 -&gt; no HW weave
+ 1b2855 0100 0A -- ESC '(' 'U' 1 0 10 -&gt; 360dpi
+ 1b5500 -- ESC 'U' 0 -&gt; bidir print
+ 1b2843 0200 0000 -- ESC '(' 'C' 2 0 xx -&gt; page length
+ 1b2863 0400 0000 0000 -- ESC '(' 'c' 4 0 xxxx -&gt; margins
+&gt;" -- as it is, unless:
+-dupAdjustPageLengthCommand -- Adjust page length in BOP requested
+-dupAdjustTopMarginCommand -- Adjust top margin in BOP
+-dupAdjustBottomMarginCommand -- Adjust bottom margin in BOP
+-dupEndPageCommand="(\033@\014)" -- Last (but one) data to the printer
+-dupAbortCommand="(\033@\15\12\12\12\12 Printout-Aborted\15\014)"
+</pre>
+
+<p>
+That's short, and if one removes <b><tt>upWeaveYPasses</tt></b> and
+<b><tt>upOutputPins</tt></b> it becomes shorter, almost
+<b><tt>stcany.upp</tt></b>. This miniature size is because I am most
+familiar with ESC/P2, and was able to add defaults for the omitted
+parameters. Now a few notes about the parameters used in this example:
+
+<ul>
+<li><b><tt>upModel</tt></b> is a string serving as a comment (and nothing else).
+
+<li><a href="Use.htm#Output_device"><b><tt>DEVICE</tt></b></a>,
+<a href="Use.htm#NoPause"><b><tt>NOPAUSE</tt></b></a>, <a
+href="Use.htm#Safer"><b><tt>SAFER</tt></b></a> are well-known Ghostscript
+parameters described in the <a href="Use.htm">usage documentation</a>.
+
+<li><b><tt>upColorModel</tt></b> is one of major <b><tt>uniprint</tt></b>
+parameters: it selects the color mapping and in turn the PostScript color
+model. It supports the devices <b><tt>/DeviceGray</tt></b>, <b><tt>/DeviceRGBW</tt></b>, <b><tt>/DeviceRGB</tt></b>, <b><tt>/DeviceCMYK</tt></b>, and <b><tt>/DeviceCMYKgenerate</tt></b>.
+
+<li><b><tt>upRendering</tt></b> selects the (color) rendering, supporting
+the values <b><tt>/ErrorDiffusion</tt></b> and <b><tt>/FSCMYK32</tt></b>.
+<b><tt>/ErrorDiffusion</tt></b> is similar to <b><tt>fsmono</tt></b>,
+<b><tt>fsrgb</tt></b> and <b><tt>fsx4</tt></b> of <b><tt>stcolor</tt></b>,
+while <b><tt>/FSCMYK32</tt></b> is (almost) identical to
+<b><tt>fscmyk</tt></b> and <b><tt>hscmyk</tt></b>, but is restricted to
+32-bit data and should be used in conjunction with
+<b><tt>/DeviceCMYKgenerate</tt></b>.
+
+<li><b><tt>upOutputFormat</tt></b> selects the output method, supporting the values
+<b><tt>/SunRaster</tt></b>, <b><tt>/Epson</tt></b>, <b><tt>/EscP2</tt></b>, <b><tt>/EscP2XY</tt></b>, and<b><tt>/Pcl</tt></b>.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>/SunRaster</tt></b>
+ <td>&nbsp;
+ <td>creates Sun raster files and requires no other parameters
+<tr valign=top> <td><b><tt>/Epson</tt></b>
+ <td>&nbsp;
+ <td>is used for the elderly ESC/P format (used by many printers)
+<tr valign=top> <td><b><tt>/EscP2</tt></b>
+ <td>&nbsp;
+ <td>is used by more recent Epson printers (no X weaving supported)
+<tr valign=top> <td><b><tt>/EscP2XY</tt></b>
+ <td>&nbsp;
+ <td>supports X-Weaving, used with 1440dpi printers and in <b><tt>stc2s_h</tt></b>
+<tr valign=top> <td><b><tt>/Pcl</tt></b>
+ <td>&nbsp;
+ <td>HP PCL/RTL-style output formatter without weaving
+</table></blockquote>
+
+<li><b><tt>-r360x360</tt></b> is Ghostscript's standard
+<a href="Use.htm#Resolution_switch">resolution switch</a>.
+
+<li><b><tt>upMargins="{&nbsp;9.0&nbsp;39.96&nbsp;9.0&nbsp;9.0}"</tt></b>
+has function similar to the Ghostscript parameter
+<b><tt>.HWMargins</tt></b>: it sets the left, bottom, right, and top
+margins in points. <b><tt>uniprint</tt></b> provides this parameter to
+enable automatic left-right exchange if <b><tt>upYFlip</tt></b> is active.
+
+<li><b><tt>upComponentBits</tt></b> is an array of integers that selects
+the bits stored in raster memory, by default 8 bits per component. In this
+example, 1 bit is selected for each component, thus turning down the
+Floyd-Steinberg algorithm (but still carrying out the time-consuming
+computation). The related parameter "<b><tt>upComponentShift</tt></b>"
+controls positioning the components within raster memory. Each of the
+numbers given corresponds to a component which depends on the selected
+"<b><tt>upColorModel</tt></b>":
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td align=center>&nbsp;
+ <td>&nbsp;
+ <td align=center><b><tt>/DeviceGray</tt></b>
+ <td>&nbsp;
+ <td align=center><b><tt>/DeviceRGBW</tt></b>
+ <td>&nbsp;
+ <td align=center><b><tt>/DeviceRGB</tt></b>
+ <td>&nbsp;
+ <td align=center><b><tt>/DeviceCMYK</tt></b>
+ <td>&nbsp;
+ <td align=center><b><tt>/DeviceCMYKgenerate</tt></b>
+<tr> <td colspan=11><hr>
+<tr valign=top> <td align=center>0
+ <td>&nbsp;
+ <td align=center>White
+ <td>&nbsp;
+ <td align=center>White
+ <td>&nbsp;
+ <td align=center>Red
+ <td>&nbsp;
+ <td align=center>Black
+ <td>&nbsp;
+ <td align=center>Black
+<tr valign=top> <td align=center>1
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>Red
+ <td>&nbsp;
+ <td align=center>Green
+ <td>&nbsp;
+ <td align=center>Cyan
+ <td>&nbsp;
+ <td align=center>Cyan
+<tr valign=top> <td align=center>2
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>Green
+ <td>&nbsp;
+ <td align=center>Blue
+ <td>&nbsp;
+ <td align=center>Magenta
+ <td>&nbsp;
+ <td align=center>Magenta
+<tr valign=top> <td align=center>3
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>Blue
+ <td>&nbsp;
+ <td align=center>--
+ <td>&nbsp;
+ <td align=center>Yellow
+ <td>&nbsp;
+ <td align=center>Yellow
+</table>
+
+<p>
+This order may not be suitable for some printers, so another parameter
+"<b><tt>upOutputComponentOrder</tt></b>", also an array of integers,
+selects the output order using the numbers on the left.
+</blockquote>
+
+<p>
+One group of very important parameters not used in the example above
+deserves to be mentioned here: the transfer arrays, named
+"<b><tt>up</tt><em>{color}</em><tt>Transfer</tt></b>", where
+<b><em>{color}</em></b> is one of the names in the table above. These are
+arrays of floats in the range 0.0 - 1.0 representing the color transfer
+functions. They are used during mapping and rendering. In the simplest
+case, these arrays ensure an equidistant distribution of the stored values
+within the device space (which means a nonlinear mapping from Ghostscript's
+point of view). If the given array does not cover the entire range from 0
+to 1, which applies for the Stylus Color family at high resolution for some
+media, only the relevant part gets mapped to raster memory (meaning that
+is's fully utilized) and the rendering takes care of the "overhang" (in
+this case the post-diffusion of 1-bit components makes sense).
+
+<p>
+Finally an important note on the transfer arrays: for monochrome devices
+the stored component is <b><tt>White</tt></b>, which is the way PostScript
+defines these devices, but most printers require <b><tt>Black</tt></b>.
+Thus one has to provide a falling "<b><tt>upWhiteTransfer</tt></b>" for
+such printers.
+
+<li><b><tt>upWeaveYPasses</tt></b> is an integer that gives the number of
+print head passes required to achieve the requested Ydpi. This makes sense
+only if
+
+<li><b><tt>upOutputPins</tt></b> is set to something greater than 1. Thus
+multiple pins or nozzles are transferred with a single command, and of
+course such a command must be supported by the device.
+
+</ul>
+
+<p>
+If no other weave parameters are given, <b><tt>uniprint</tt></b> computes
+several defaults which together do no weaving. The <b><tt>/Epson</tt></b>
+and <b><tt>/EscP2XY</tt></b> formats take care of
+"<b><tt>upWeaveXPasses</tt></b>" too.
+
+<ul>
+
+<li><b><tt>upBeginPageCommand</tt></b> represents the data transferred to
+the printer whenever a new page begins. Before that,
+"<b><tt>upBeginJobCommand</tt></b>" is written to the device only once per
+output file. (Intended for the HP PJL sequences).
+
+<li><b><tt>upAdjustBottomMarginCommand</tt></b>,
+<b><tt>upAdjustMediaSize</tt></b>,
+<b><tt>upAdjustPageLengthCommand</tt></b>,
+<b><tt>upAdjustPageWidthCommand</tt></b>,
+<b><tt>upAdjustResolutionCommand</tt></b>, and
+<b><tt>upAdjustTopMarginCommand</tt></b>
+
+<p>
+Normally <b><tt>uniprint</tt></b> does not change the
+"<b><tt>upBeginPageCommand</tt></b>", nor does it provide a default.
+However, if the above boolean values are set, the corresponding values are
+changed (provided that the code of the formatters supports this change and
+the commands to be adjusted are included in the BOP string).
+
+<li><b><tt>upEndPageCommand</tt></b> is the fixed termination sequence for
+each page, and of course there is an "<b><tt>upEndJobCommand</tt></b>" too.
+
+<li><b><tt>upAbortCommand</tt></b> is written if <b><tt>uniprint</tt></b>'s
+interrupt detection is enabled and a signal is caught. It replaces
+"<b><tt>upEndPageCommand</tt></b>" and "<b><tt>upEndJobCommand</tt></b>",
+thus allowing the indication of an aborted job. (Ghostscript gets an error
+return from <b><tt>uniprint</tt></b> in this case, and abandons further
+processing.)
+
+</ul>
+
+<p>
+For the ESC/P(2) formats all commands represent binary data, while for
+the PCL/RTL formatter some of them are formats for <b><tt>fprintf</tt></b>. These strings
+<b><em>must</em></b> explicitly have a trailing "\0'.
+
+<p>
+I should write more, but the only recommendation is to
+take a look at the various parameter files. Here are a few more hints.
+
+<ul>
+<li>If the Driver rejects a configuration, nothing happens until
+<b><tt>showpage</tt></b>; then an error is raised and a message with
+"CALL-REJECTED upd_print_page..." is printed on stderr.
+
+<li><b><tt>uniprint</tt></b> has lots of messages that can be activated by
+setting bits in the preprocessor macro <b><tt>UPD_MESSAGES</tt></b>. I
+usually use the compile-time option <b><tt>-DUPD_MESSAGES=0x17</tt></b> for
+configuration development. (For the semantics, check the
+<b><tt>UPD_M_</tt></b> macros in the source.)
+
+<li>A program "<b><tt>uninfo.ps</tt></b>" distributed with Ghostscript
+displays interactively in alphabetical order the contents of the current
+pagedevice dictionary. This includes any parameters generated or changed by
+<b><tt>uniprint</tt></b>.
+</ul>
+
+<h3><a name="Uni_all_parameters"></a>All parameters in brief</h3>
+
+<p>
+This table gives a brief explanation of every parameter known to
+<b><tt>uniprint</tt></b>, listing them in alphabetical order. "[&nbsp;]"
+denotes that a parameter is an array, and "(RO)" that it is read-only.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">All <b><tt>uniprint</tt></b> parameters</font><hr>
+<tr valign=bottom>
+ <th align=left>Parameter
+ <td>&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Use
+<tr> <td colspan=5><hr>
+<tr valign=top> <td><b><tt>upAbortCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>End of page and file on interrupt
+<tr valign=top> <td><b><tt>upAdjustBottomMarginCommand</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Manipulate bottom margin in <b><tt>upBeginPageCommand</tt></b>
+<tr valign=top> <td><b><tt>upAdjustMediaSizeCommand</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Manipulate <b><tt>Mediasize</tt></b> [intended]
+<tr valign=top> <td><b><tt>upAdjustPageLengthCommand</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Manipulate page length in <b><tt>upBeginPageCommand</tt></b>
+<tr valign=top> <td><b><tt>upAdjustPageWidthCommand</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Manipulate page width in <b><tt>upBeginPageCommand</tt></b>
+<tr valign=top> <td><b><tt>upAdjustResolutionCommand</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Manipulate resolution
+<tr valign=top> <td><b><tt>upAdjustTopMarginCommand</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Manipulate top margin in <b><tt>upBeginPageCommand</tt></b>
+<tr valign=top> <td><b><tt>upBeginJobCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Begin each output file
+<tr valign=top> <td><b><tt>upBeginPageCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Begin each page
+<tr valign=top> <td><b><tt>upBlackTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Black transfer (CMYK only!)
+<tr valign=top> <td><b><tt>upBlueTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Blue transfer
+<tr valign=top> <td><b><tt>upColorInfo</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>struct <b><tt>gx_device_color_info</tt></b>
+<tr valign=top> <td><b><tt>upColorModel</tt></b>
+ <td>&nbsp;
+ <td>Name
+ <td>&nbsp;
+ <td>Select color mapping
+<tr valign=top> <td><b><tt>upColorModelInitialized</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>Color mapping OK
+<tr valign=top> <td><b><tt>upComponentBits</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Bits stored per component
+<tr valign=top> <td><b><tt>upComponentShift</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Positioning within <b><tt>gx_color_index</tt></b>
+<tr valign=top> <td><b><tt>upCyanTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Cyan transfer
+<tr valign=top> <td><b><tt>upEndJobCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>End each file unless <b><tt>upAbortCommand</tt></b>
+<tr valign=top> <td><b><tt>upEndPageCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>End each page unless <b><tt>upAbortCommand</tt></b>
+<tr valign=top> <td><b><tt>upErrorDetected</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>Severe (VM) error, not fully operational
+<tr valign=top> <td><b><tt>upFSFixedDirection</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Inhbits direction toggling in rendering
+<tr valign=top> <td><b><tt>upFSProcessWhiteSpace</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Causes white-space rendering
+<tr valign=top> <td><b><tt>upFSReverseDirection</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Run rendering in reverse (if fixed)
+<tr valign=top> <td><b><tt>upFSZeroInit</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Non-random rendering initialization
+<tr valign=top> <td><b><tt>upFormatXabsolute</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Write absolute X coordinates
+<tr valign=top> <td><b><tt>upFormatYabsolute</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Write absolute Y coordinates
+<tr valign=top> <td><b><tt>upGreenTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Green transfer
+<tr valign=top> <td><b><tt>upMagentaTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Magenta transfer
+<tr valign=top> <td><b><tt>upMargins</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>L/B/R/T margins in points
+<tr valign=top> <td><b><tt>upModel</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Comment string, holds some info
+<tr valign=top> <td><b><tt>upOutputAborted</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>Caught an interrupt
+<tr valign=top> <td><b><tt>upOutputBuffers</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Number of rendering buffers (2^<small><sup><b>N</b></sup></small>)
+<tr valign=top> <td><b><tt>upOutputComponentOrder</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Order of components when printing
+<tr valign=top> <td><b><tt>upOutputComponents</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Number of written components, not fully operational
+<tr valign=top> <td><b><tt>upOutputFormat</tt></b>
+ <td>&nbsp;
+ <td>Name
+ <td>&nbsp;
+ <td>Select output format
+<tr valign=top> <td><b><tt>upOutputFormatInitialized</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>Format data OK
+<tr valign=top> <td><b><tt>upOutputHeight</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Output height in pixels
+<tr valign=top> <td><b><tt>upOutputPins</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Number of pins / nozzles per command
+<tr valign=top> <td><b><tt>upOutputWidth</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Output width in pixels
+<tr valign=top> <td><b><tt>upOutputXOffset</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Offset in pixels, if <b><tt>upFormatXabsolute</tt></b>
+<tr valign=top> <td><b><tt>upOutputXStep</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Divisor or multiplier for X coords
+<tr valign=top> <td><b><tt>upOutputYOffset</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Offset in pixels, if <b><tt>upFormatYabsolute</tt></b>
+<tr valign=top> <td><b><tt>upOutputYStep</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Divisor or multiplier for Y coords
+<tr valign=top> <td><b><tt>upRasterBufferInitialized</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>GS buffer OK
+<tr valign=top> <td><b><tt>upRedTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Red transfer
+<tr valign=top> <td><b><tt>upRendering</tt></b>
+ <td>&nbsp;
+ <td>Name
+ <td>&nbsp;
+ <td>Select rendering algorithm
+<tr valign=top> <td><b><tt>upRenderingInitialized</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>Rendering parameters OK
+<tr valign=top> <td><b><tt>upSelectComponentCommands</tt></b>
+ <td>&nbsp;
+ <td>String[&nbsp;]
+ <td>&nbsp;
+ <td>Establish color (output order!)
+<tr valign=top> <td><b><tt>upSetLineFeedCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Adjust linefeed (Epson only)
+<tr valign=top> <td><b><tt>upVersion</tt></b>
+ <td>&nbsp;
+ <td>String (RO)
+ <td>&nbsp;
+ <td>Source code version
+<tr valign=top> <td><b><tt>upWeaveFinalPins</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Number of bottom pins on EOP passes
+<tr valign=top> <td><b><tt>upWeaveFinalScan</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Begin EOP passes (Y-coord)
+<tr valign=top> <td><b><tt>upWeaveFinalXStarts</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>X-pass indices for EOP passes
+<tr valign=top> <td><b><tt>upWeaveFinalYFeeds</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Y increments for EOP passes
+<tr valign=top> <td><b><tt>upWeaveInitialPins</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Number of top pins on BOP passes
+<tr valign=top> <td><b><tt>upWeaveInitialScan</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>End BOP passes (Y coord)
+<tr valign=top> <td><b><tt>upWeaveInitialXStarts</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>X-pass indices for BOP passes
+<tr valign=top> <td><b><tt>upWeaveInitialYFeeds</tt></b>
+ <td>&nbsp;
+ <td>int[&nbsp;]
+ <td>&nbsp;
+ <td>Y increments for BOP passes
+<tr valign=top> <td><b><tt>upWeavePasses</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>XPasses &times; YPasses
+<tr valign=top> <td><b><tt>upWeaveXPasses</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Number of X passes
+<tr valign=top> <td><b><tt>upWeaveXStarts</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>X-pass indices for normal passes
+<tr valign=top> <td><b><tt>upWeaveYFeeds</tt></b>
+ <td>&nbsp;
+ <td>Int[&nbsp;]
+ <td>&nbsp;
+ <td>Y increments for normal passes
+<tr valign=top> <td><b><tt>upWeaveYOffset</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Number of blank or incomplete scans at BOP
+<tr valign=top> <td><b><tt>upWeaveYPasses</tt></b>
+ <td>&nbsp;
+ <td>Int
+ <td>&nbsp;
+ <td>Number of X passes
+<tr valign=top> <td><b><tt>upWhiteTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>White transfer (monochrome devices!)
+<tr valign=top> <td><b><tt>upWriteComponentCommands</tt></b>
+ <td>&nbsp;
+ <td>String[&nbsp;]
+ <td>&nbsp;
+ <td>Commands to write each component
+<tr valign=top> <td><b><tt>upWroteData</tt></b>
+ <td>&nbsp;
+ <td>Bool (RO)
+ <td>&nbsp;
+ <td>Something (<b><tt>BeginJob</tt></b>) written to output
+<tr valign=top> <td><b><tt>upXMoveCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>X positioning command
+<tr valign=top> <td><b><tt>upXStepCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Single step to the right
+<tr valign=top> <td><b><tt>upYFlip</tt></b>
+ <td>&nbsp;
+ <td>Bool
+ <td>&nbsp;
+ <td>Flips output along the Y axis
+<tr valign=top> <td><b><tt>upYMoveCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Y positioning command
+<tr valign=top> <td><b><tt>upYStepCommand</tt></b>
+ <td>&nbsp;
+ <td>String
+ <td>&nbsp;
+ <td>Single step down
+<tr valign=top> <td><b><tt>upYellowTransfer</tt></b>
+ <td>&nbsp;
+ <td>Float[&nbsp;]
+ <td>&nbsp;
+ <td>Yellow transfer
+</table></blockquote>
+
+<h3><a name="Uni_honors"></a><b><tt>uniprint</tt></b>'s Roll of Honor</h3>
+
+<p>
+I should mention all of the people who were involved in
+<b><tt>stcolor</tt></b>'s evolution, but I've decided to start from scratch
+here for <b><tt>uniprint</tt></b>:
+
+<blockquote>
+<dl>
+<dt>John P. Beale
+<dd>for testing the <b><tt>stc600</tt></b> modes
+<dt>Bill Davidson
+<dd>who triggered some weaving research and tested <b><tt>stc2s_h</tt></b>
+<dt>L. Peter Deutsch
+<dd>who triggered ease of configuration
+<dt>Mark Goldberg
+<dd>who prepared the <b><tt>stc500</tt></b> transfers
+<dt>Scott F. Johnston and Scott J. Kramer
+<dd>for testing the <b><tt>stc800</tt></b> modes
+<dt>Martin Lottermoser
+<dd>for his great commented H-P DeskJet driver
+<dt>Helmut Riegler
+<dd>for the BJC extension
+<dt>Hans-Gerd Straeter
+<dd>for some measured transfer curves and more
+<dt>Uli Wortmann
+<dd>for discussions and his <b><tt>cdj850</tt></b> driver
+<dt>My family
+<dd>for tolerating my printer-driver hacking
+</dl>
+</blockquote>
+
+<address>
+Gunther Hess<br>
+Duesseldorfer Landstr. 16b<br>
+D-47249 Duisburg<br>
+Germany<br>
++49 203 376273 telephone (MET evening hours)<br>
+&lt;<a href="mailto:ghess@elmos.de">ghess@elmos.de</a>&gt;
+</address>
+<h3><a name="Uni_weaving_howto"></a><tt>Uniprint</tt> weaving parameters howto</h3>
+This section was contributed by Glenn Ramsey.<p>
+<p>I wrote this because the documentation was very brief and I really struggled
+with it for a while, but it is very simple once you understand what is going
+on.
+<p>This only describes how to work out the Y parameters, I haven't looked
+at the X parameters yet.
+<ol>
+<li>
+<b>Determine the nozzle geometry (upOutputPins)</b>
+<p>
+You need to know how many nozzles the printer has and the spacing between
+them. Usually you can find this out from the printer manual, or the printer
+supplier, but you may have to dissect a couple of printer output files
+produced with the driver supplied with the printer. There is a utility
+called escp2ras<a href="#escp2ras"><sup>*</sup></a> that will help with that.
+Sometimes the term pin is used instead of nozzle but they mean the same thing.
+<p>The number of nozzles will be the value assigned to the upOutputPins
+parameter.
+<p>Actually you don't have to print with all the pins available but for
+the purpose of demonstration I'll assume that we are using them all.
+<p>
+<a name="escp2ras"></a>* escp2ras is available from Gunther Hess' page at <a href="http://www-md.e-technik.uni-rostock.de/ma/gunther/gs/index.html">http://www-md.e-technik.uni-rostock.de/ma/gunther/gs/index.html</a>
+</li>
+<p>
+<li><b>Determine how many passes are required (upWeaveYPasses)</b>
+<p>The number of passes required is going to depend on the required resolution
+and the nozzle spacing.
+<blockquote>
+<tt>passes = resolution * nozzle spacing
+</tt>
+</blockquote>
+This will be the value assigned to the upWeaveYPasses parameter.
+<p>For example if the desired resolution is 360 dpi and the nozzles are
+spaced at 1/90in then 360 * 1/90 = 4 passes are required. For 720 dpi 8
+passes would be required. The printer would, of course, have to be capable
+of moving the paper in increments of either 360 or 720 dpi too.
+</li>
+<p>
+<li>
+<b>Determine the normal Y feed increment (upWeaveYFeeds)</b>
+<p>
+You need to work out how much to feed the paper so that when the paper
+has moved by one head length in however many passes you have then each
+row space on the paper has been passed over by at least one nozzle. There
+will be one feed value for each pass and the feed values must comply with
+the following rules:
+<blockquote>
+<tt>
+<p>sum of feeds = passes * nozzles
+<br>feed%passes != 0 (feed is not exactly divisible by passes)
+<br>sum of (nozzles - feed) = 0
+</tt>
+</blockquote>
+<p>For example if passes=4 and nozzles=15, then sum of feeds=60. The feed
+values could be 1,1,1,57 or 15,15,15,15 or 14,15,18,13.
+<p>These values will be assigned to the upWeaveYFeeds parameter.
+<p>You would need to experiment to see what combination looks best on the
+printer.
+<p>I found it convenient to draw several lines of nozzles and then move
+them around to see how the different combinations would fill the paper.
+A computer drawing tool makes this easier than pencil and paper (I used
+Dia, a GNOME app). The number of nozzles would probably be be a good place
+to start.
+<p>Remember that if the number of passes is more than 1 then the feed increment
+will be less than the nozzle spacing and <tt>passes &times; feed increment size</tt>
+must equal the physical distance between each nozzle.
+</li>
+<p>
+<li>
+<b>Determine the beginning of page pins (upWeaveInitialPins)</b>
+<p>
+These values will be assigned to the upWeaveInitialPins parameter and are
+the numbers of nozzles to operate in each of the initial passes at the top
+of a page. The nozzles that the values refer to are the topmost nozzles
+on the head, nearest the top margin. If the image doesn't start at the
+top margin then uniprint doesn't use these feeds.
+<p>I don't know a mathematical relation for this except that at least one
+of the values must be the number of nozzles, but I'm sure that there must
+be one. I used a graphical method, the description that follows refers
+to the ascii diagram in below.
+<p>Draw a line of nozzles for each pass arranged as they would be using
+the normal Y feed increment determined in step 3. In the diagram below
+this would be passes 5-8.
+<p>Draw a line of nozzles that would print just before the first normal
+pass. The feed increment for this pass will be close to and most likely
+1 or 2 units less than the feed increment of the last normal pass. In the
+example below this line is pass 4 and the feed increment is 13 whereas
+the normal feed increment is 15.
+<p>Draw each pass before that with a small feed increment so that if all
+of the nozzles appearing above the first nozzle of the first normal pass
+operate then all of the spaces will be filled. This feed increment is usually
+1 except in cases where some jiggery pokery is going on to make the printer
+print at an apparent higher resolution than the nozzle diameter.
+<p>Now select the nozzles that will operate in each of theses initial passes
+so that the paper is filled. In each pass the nozzles must be adjacent
+to each other and at least one of the passes will have all the nozzles
+operating. I suspect that for each combination of normal Y feed increments
+there will only be one set of valid beginning of page increments.
+</li>
+</ol>
+<h4>Example: stc.upp from Aladdin Ghostscript 6.01</h4>
+15 nozzles spaced at 1/90 in, 360 dpi requires 4 passes.
+<blockquote><tt><pre>
+-dupWeaveYPasses=4
+-dupOutputPins=15
+-dupWeaveYFeeds="{15 15 15 15}"
+-dupWeaveInitialYFeeds="{1 1 1 13}"
+-dupWeaveInitialPins="{ 4 15 11 7}"
+</pre></tt></blockquote>
+The following diagram shows which nozzles operate during each pass.
+<br>Passes 1-4 are beginning of page passes and passes 5-8 are normal passes.
+<blockquote>
+<p>x=nozzle operates, o=nozzle not used in this pass<tt></tt>
+<p><tt>&nbsp; 1 2 3 4 5 6 7 8 - pass no</tt>
+<br><tt>0 x</tt>
+<br><tt>1&nbsp;&nbsp; x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>4 x</tt>
+<br><tt>5&nbsp;&nbsp; x</tt>
+<br><tt>6&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>8 x</tt>
+<br><tt>9&nbsp;&nbsp; x</tt>
+<br><tt>0&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>2 x</tt>
+<br><tt>3&nbsp;&nbsp; x</tt>
+<br><tt>4&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>6 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>7&nbsp;&nbsp; x</tt>
+<br><tt>8&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>0 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>1&nbsp;&nbsp; x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>4 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>5&nbsp;&nbsp; x</tt>
+<br><tt>6&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>8 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>9&nbsp;&nbsp; x</tt>
+<br><tt>0&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>2 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>3&nbsp;&nbsp; x</tt>
+<br><tt>4&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>6 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>7&nbsp;&nbsp; x</tt>
+<br><tt>8&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>0 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>1&nbsp;&nbsp; x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>4 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>5&nbsp;&nbsp; x</tt>
+<br><tt>6&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>8 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>9&nbsp;&nbsp; x</tt>
+<br><tt>0&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>2 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>3&nbsp;&nbsp; x</tt>
+<br><tt>4&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>6 o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>7&nbsp;&nbsp; x</tt>
+<br><tt>8&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;&nbsp; x</tt>
+<br><tt>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>6</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>0</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>4</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</tt>
+<br><tt>8</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>1</tt>
+<br><tt>2</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>5</tt>
+<br><tt>6</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>9</tt>
+<br><tt>0</tt>
+<br><tt>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>3</tt>
+<br><tt>4</tt>
+<br><tt>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>6</tt>
+<br><tt>7</tt>
+<br><tt>8</tt>
+<br><tt>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>0</tt>
+<br><tt>1</tt>
+<br><tt>2</tt>
+<br><tt>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+<br><tt>4</tt>
+<br><tt>5</tt>
+<br><tt>6</tt>
+<br><tt>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+x</tt>
+</blockquote>
+<p>These parameters would also work:
+<blockquote><tt><pre>
+-dupWeaveYPasses=4
+-dupOutputPins=15
+-dupWeaveYFeeds="{14 15 18 13}"
+-dupWeaveInitialYFeeds="{1 1 1 13}"
+-dupWeaveInitialPins="{ 4 11 7 15}"
+</pre></tt></blockquote>
+<p>
+<hr>
+<h3><a name="Uni_esc300"></a>Extension to <tt>uniprint</tt> for the Epson Stylus Color 300</h3>
+This section was contributed by Glenn Ramsey.<p>
+The Epson Stylus Color 300 uses a different command set to other Epson
+Stylus Color printers that use the ESC/P2 language. As far as I can
+tell its commands are a subset of ESC/P2. In ESC/P2 the colour to be
+printed is selected by a 'set colour' command and then the data sent
+is only printed in that colour until the colour is changed with another
+'set colour' command. The Stylus Color 300 lacks this functionality.
+The data sent to the printer maps directly to the ink nozzles and colour
+of an output scan line in the printed output is determined by the position
+of the scan line within the data. This means that the driver must know
+how the nozzles are arranged and must format the output accordingly.
+The extension adds a format that I have called EscNozzleMap and adds some
+ additional parameters to uniprint.<br>
+<ul>
+ <li><b><tt>upOutputFormat</tt></b>selects the output method, and should be set to the value
+<b><tt>/EscNozzleMap</tt></b> to select this format.
+ <blockquote>
+ <table cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr valign="Top">
+ <td><b><tt>/EscNozzleMap</tt></b></td>
+ <td>&nbsp;</td>
+ <td>produces output for the Epson Stylus Color 300
+ </td>
+ </tr>
+ <tbody>
+ </table>
+ </blockquote>
+</ul>
+
+<blockquote>
+ <table cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <th colspan="5" bgcolor="#cccc00">
+ <hr><font size="+1"><b><tt>uniprint</tt></b> parameters for the
+ EscNozzleMap format</font>
+ <hr></th>
+ </tr>
+ <tr valign="Bottom">
+ <th align="Left">Parameter
+ </th>
+ <td>&nbsp;
+ </td>
+ <th align="Left">Type
+ </th>
+ <td>&nbsp;&nbsp;&nbsp;
+ </td>
+ <th align="Left">Use
+ </th>
+ </tr>
+ <tr>
+ <td colspan="5">
+ <hr></td>
+ </tr>
+ <tr valign="Top">
+ <td><b><tt>upNozzleMapRowsPerPass</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>Int
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>output rows to generate for each pass of the head
+ </td>
+ </tr>
+ <tr valign="Top">
+ <td><b><tt>upNozzleMapPatternRepeat</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>Int
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>no. of rows that correspond to the repeat pattern of the
+ nozzles
+ </td>
+ </tr>
+ <tr valign="Top">
+ <td><b><tt>upNozzleMapRowMask</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>Int[]
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>mask indicating the colour of the nozzles
+ </td>
+ </tr>
+ <tr valign="Top">
+ <td><b><tt>upNozzleMapMaskScanOffset</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>Int[]
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>mask indicating the physical position of the nozzles
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</blockquote>
+
+<h4>A more detailed description of the new parameters</h4>
+<ul>
+ <li><b><tt>upNozzleMapRowsPerPass</tt></b><br>
+ The number of rows of data that are required to address all nozzles for a
+ single pass of the head. There will always be this number of rows of output
+ data generated. I'd expect it to be the same as the total number of nozzles but
+ it wouldn't break the formatter if it wasn't. So if you wanted to print with
+ only the 10th nozzle then row 10 would contain data corresponding to the bit
+ pattern and all of the others would be padded with zeros.
+ </li>
+ <li><b><tt>upNozzleMapPatternRepeat</tt></b><br>
+ The number of nozzles in each repeated group on the printing head.
+ This parameter must correspond with the length of the upNozzleMapRowMask array.
+ </li>
+ <li><b><tt>upNozzleMapRowMask</tt></b><br>
+ An array of integers that defines the colour of the nozzles on the
+ head and whether the nozzles will be used to print. The array index
+ defines the row index for the nozzle in the output data
+ and the value defines the colour of the nozzle. The mapping
+ of colours to values is defined in the table below.
+ <blockquote>
+ <table cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr valign="Bottom">
+ <th align="Left">colour
+ </th>
+ <td>&nbsp;
+ </td>
+ <th align="center">mask value
+ </th>
+ </tr>
+ <tr>
+ <td colspan="5">
+ <hr></td>
+ </tr>
+ <tr valign="Top" align="middle">
+ <td><b><tt>K</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>1
+ </td>
+ </tr>
+ <tr valign="Top" align="middle">
+ <td><b><tt>C</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>2
+ </tr>
+ <tr valign="Top" align="middle">
+ <td><b><tt>M</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>3
+ </td>
+ </tr>
+ <tr valign="Top" align="middle">
+ <td><b><tt>Y</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>4
+ </td>
+ </tr>
+ <tr valign="Top" align="middle">
+ <td><b><tt>no data</tt></b></td>
+ <td>&nbsp;
+ </td>
+ <td>0
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
+ A value of 0 means that the nozzle is not used and the row in the output data will be
+ padded with zeros.<br>
+ </li>
+ <li><b><tt>upNozzleMapMaskScanOffset</tt></b><br>
+ An array of integers that defines the physical position of the nozzles relative
+ to the first nozzle in the repeated group. The relative distance is measured in
+ printed line widths and will be different for different printing resolutions.
+ This parameter is used because the physical spacing of the nozzles may not
+ correspond to their mapping in the output data. For example the ESC300 has nozzles
+ physically arranged something like this:
+ <table>
+ <tr>
+ <td bgcolor="#00ffff">&nbsp;
+ </td>
+ <td bgcolor="#ffff00">&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td bgcolor="#ff00ff">&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td bgcolor="#00ffff">&nbsp;
+ </td>
+ <td bgcolor="#ffff00">&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td bgcolor="#ff00ff">&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td bgcolor="#ffffff">&nbsp;
+ </td>
+ </tr>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td bgcolor="#00ffff">&nbsp;
+ </td>
+ <td bgcolor="#ffff00">&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td bgcolor="#ff00ff">&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td bgcolor="#000000">&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td>&nbsp;
+ </td>
+ <td bgcolor="#00ffff">&nbsp;
+ </td>
+ <td bgcolor="#ffff00">&nbsp;
+ </td>
+ <td>etc ...
+ </td>
+
+ <tr>
+ </tr>
+ </table>
+ There is a one nozzle width space between the last two nozzles in each group.
+ In the output data the data for the last nozzle in the group would be in row 5
+ (numbering starts at 0) but the nozzle is physically positioned at 6 spaces from
+ the first nozzle.
+</ul>
+<h4>Example 1 - Epson Stylus Color 300 - 360 dpi colour</h4>
+<blockquote><pre>
+-dupWeaveYPasses=6
+-dupOutputPins=11
+-dupWeaveYFeeds="{ 11 11 11 11 11 11 }"
+-dupWeaveInitialYFeeds="{ 1 1 1 1 1 7 }"
+-dupWeaveInitialPins="{ 2 11 9 7 5 3 }"
+-dupNozzleMapRowsPerPass=64
+-dupNozzleMapPatternRepeat=6
+-dupNozzleMapRowMask="{ 2 4 1 3 0 0 }"
+-dupNozzleMapMaskScanOffset="{ 0 1 2 3 0 0 }"
+</pre></blockquote>
+The weaving parameters are the same as for any other uniprint driver
+but they must be consistent with the nozzle map parameters. In this printer
+the coloured nozzles are spaced at 1/60" so 6 passes are required for 360
+dpi resolution.
+<p>
+In the example there are 64 rows of data required for each head pass. Each
+row must be completely filled with data for each pass so if certain nozzles
+do not print in the pass then the rows for those nozzles will be padded
+with zeroes.
+<P>
+The row mask translates to "C Y K M 0 0" so in the output data rows 0,7,13,...
+will contain data for cyan, rows 1,8,14,... will contain data for yellow, etc. Rows 4,10,16,...
+and 5, 11,15,... will always be padded with zeroes. The <i>upNozzleMapPatternRepeat</i>
+parameter defines the length of the mask.
+<p>
+The row mask is repeated for each group of <i>upNozzleMapPatternRepeat</i> rows
+in the output data. In this case there are 64 rows so there will be 10 groups
+of "C Y K M 0 0" followed by "C Y K M" which is equivalent to 11 output
+pins.
+<P>
+The <i>upNozzleMaskScanOffset</i> array indicates how the data from the scan
+buffer is mapped to the output data. The data is presented to the formatter
+as a buffer of four colour scanlines. The index of the scanline being printed,
+lets call it y, always corresponds, in this example, to the physical position of
+the cyan nozzle but since the nozzles are not on the same horizontal
+line then the other colours for the current pass must come from other
+scanlines in the scan buffer. The example is { 0 1 2 3 0 0 }, this means that
+when printing a 4 colour image the magenta data would come from scanline y+3,
+the black from scanline y+2, etc. It would have been possible in this case
+to use the array index instead of the <i>upNozzleMaskScanOffset</i> parameter
+however the parameter is necessary to be able to use the full capability of the
+printer in black only mode.
+
+<h4>Example 2 - Epson Stylus Color 300 - 180 dpi black only</h4>
+<blockquote>
+<pre>
+-dupMargins="{ 9.0 39.96 9.0 9.0}"
+-dupWeaveYPasses=1
+-dupOutputPins=31
+-dupNozzleMapRowsPerPass=64
+-dupNozzleMapPatternRepeat=6
+-dupNozzleMapRowMask="{ 0 0 1 0 1 1}"
+-dupNozzleMapMaskScanOffset="{ 0 0 0 0 1 2 }"
+</pre>
+</blockquote>
+In this example there is no weaving.
+<p>
+The ESC300 has black nozzles evenly physically arranged as K K K but the data must
+be sent to the printer as 00K0KK. This is handled by the <i>upNozzleMapRowMask</i>
+and <i>upNozzleMaskScanOffset</i> arrays. The <i>upNozzleMapRowMask</i> array is
+{ 0 0 1 0 1 1} which translates to { 0 0 K 0 K K } so rows 0, 1 and 3 will always
+contain zeros and the other rows will contain data.
+<p>
+The <i>upNozzleMaskScanOffset</i> array
+in this case is { 0 0 0 0 1 2 } so if the data for the 1st nozzle comes from row
+y in the scan buffer then the data for the 2nd and 3rd nozzles will come from rows
+y+1 and y+2.
+
+<h4>Example 3 - Epson Stylus Color 300 - 360 dpi black only</h4>
+<blockquote>
+<pre>
+-dupWeaveYPasses=2
+-dupOutputPins=31
+-dupWeaveYFeeds="{31 31}"
+-dupWeaveInitialYFeeds="{1 31}"
+-dupWeaveInitialPins="{16 31}"
+-dupNozzleMapRowsPerPass=64
+-dupNozzleMapPatternRepeat=6
+-dupNozzleMapRowMask="{ 0 0 1 0 1 1}"
+-dupNozzleMapMaskScanOffset="{ 0 0 0 0 2 4 }"
+</pre>
+</blockquote>
+In this example 2 weave passes are required to achieve the desired resolution.
+<p>
+The <i>upNozzleMaskScanOffset</i> array in this case is { 0 0 0 0 2 4 } because
+there are two weave passes so if the data for the first nozzle comes from row y
+in the scan buffer then the data for the 2nd and 3rd nozzles must come from rows
+y+(1*2) and y+(2*2).
+<p>
+<address>
+Glenn Ramsey<br>
+glennr at users.sourceforge.net<br>
+February 2001
+</address>
+<br>
+<hr>
+
+<h2><a name="SPARCprinter"></a>Sun SPARCprinter</h2>
+
+<p>
+This section was contributed by Martin Schulte.
+
+<p>
+With a SPARCprinter you always buy software that enables you to do
+PostScript printing on it. A page image is composed on the host, which
+sends a bitmap to the SPARCprinter through a special SBUS video interface.
+So the need for a Ghostscript interface to the SPARCPrinter seems low, but
+on the other hand, Sun's software prints some PostScript drawings
+incorrectly: some pages contain a thin vertical line of rubbish, and on
+some Mathematica drawings the text at the axes isn't rotated. Ghostscript,
+however, gives the correct results. Moreover, replacing proprietary
+software should never be a bad idea.
+
+<p>
+The problem is that there has yet been no effort to make the SPARCPrinter
+driver behave like a BSD output filter. I made my tests using the script
+shown here.
+
+<h3><a name="SPARC_install"></a>Installation</h3>
+
+<p>
+Add <b><tt>sparc.dev</tt></b> to <b><tt>DEVICE_DEVS</tt></b> and compile
+Ghostscript as described in the documentation on <a href="Make.htm">how to
+build Ghostscript</a>. Afterwards you can use the following script as an
+example for printing after modifying it with the right pathnames --
+including for <b>{GSPATH}</b> the full pathname of the Ghostscript
+executable:
+
+<blockquote>
+<pre>outcmd1='/vol/local/lib/troff2/psxlate -r'
+outcmd2='<b><em>{GSPATH}</em></b> -sDEVICE=sparc -sOUTPUTFILE=/dev/lpvi0 -'
+
+if [ $# -eq 0 ]
+then
+ $outcmd1 | $outcmd2
+else
+ cat $* | $outcmd1 | $outcmd2
+fi
+</pre></blockquote>
+
+<h3><a name="SPARC_problems"></a>Problems</h3>
+
+<p>
+Since <b><tt>/dev/lpi</tt></b> can be opened only for exclusive use, if
+another job has it open (engine_ctl_sparc or another Ghostscript are the
+most likely candidates), Ghostscript stops with "Error: /invalidfileaccess
+in --.outputpage--"
+
+<p>
+In case of common printer problems like being out of paper, a warning
+describing the reason is printed to stdout. The driver tries access again
+each five seconds. Due to a problem with the device driver (in the kernel)
+the reason for printer failure isn't always reported correctly to the
+program. This is the case, for instance, if you open the top cover (error
+E5 on the printer's display). Look at the display on the printer itself if
+a "Printer problem with unknown reason" is reported. Fatal errors cause
+the print job to be terminated.
+
+<hr>
+
+<h2><a name="Apple"></a>Apple dot matrix printer</h2>
+
+<p>
+This section was contributed by Mark Wedel
+&lt;<a href="mailto:master@cats.ucsc.edu">master@cats.ucsc.edu</a>&gt;.
+
+<p>
+The Apple Dot Matrix Printer (DMP) was a parallel predecessor to the
+Imagewriter printer. As far as I know, Imagewriter commands are a superset
+of the Dot Matrix printer's, so the driver should generate output that can
+be printed on Imagewriters.
+
+<p>
+To print images, the driver sets the printer for unidirectional printing
+and 15 characters per inch (cpi), or 120dpi. It sets the line feed to 1/9
+inch. When finished, it sets the printer to bidirectional printing,
+1/8-inch line feeds, and 12 cpi. There appears to be no way to reset the
+printer to initial values.
+
+<p>
+This code does not set for 8-bit characters (which is required). It also
+assumes that carriage return-newline is needed, and not just carriage
+return. These are all switch settings on the DMP, and I have configured
+them for 8-bit data and carriage return exclusively. Ensure that the Unix
+printer daemon handles 8-bit (binary) data properly; in my SunOS 4.1.1
+<b><tt>printcap</tt></b> file the string "<b><tt>ms=pass8,-opost</tt></b>"
+works fine for this.
+
+<p>
+Finally, you can search <b><tt>devdemp.c</tt></b> for
+"<b><tt>Init</tt></b>" and "<b><tt>Reset</tt></b>" to find the strings that
+initialize the printer and reset things when finished, and change them to
+meet your needs.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996-2002 artofcode LLC.
+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>
+
diff --git a/Master/xemtex/doc/ghostscript/Drivers.htm b/Master/xemtex/doc/ghostscript/Drivers.htm
new file mode 100644
index 00000000000..c97bfaeb642
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Drivers.htm
@@ -0,0 +1,2538 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>The interface between Ghostscript and device drivers</title>
+<!-- $Id: Drivers.htm,v 1.21.2.11.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: drivers.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>The interface between Ghostscript and device drivers</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Adding_drivers">Adding a driver</a>
+<li><a href="#KISS">Keeping things simple</a>
+<li><a href="#Structure">Driver structure</a>
+<ul>
+<li><a href="#Structure_definition">Structure definition</a>
+<li><a href="#Sophisticated">For sophisticated developers only</a>
+</ul>
+<li><a href="#coordinates_and_types">Coordinates and types</a>
+<ul>
+<li><a href="#Coordinate_system">Coordinate system</a>
+<li><a href="#Color_definition">Color definition</a>
+<li><a href="#Types">Types</a>
+</ul>
+<li><a href="#Coding_conventions">Coding conventions</a>
+<ul>
+<li><a href="#Allocating_storage">Allocating storage</a>
+<li><a href="#Driver_instance_allocation">Driver instance allocation</a>
+</ul>
+<li><a href="#Printer_drivers">Printer drivers</a>
+<li><a href="#Driver_procedures">Driver procedures</a>
+<ul>
+<li><a href="#Life_cycle">Life cycle</a>
+<li><a href="#Open_close">Open, close, sync, copy</a>
+<li><a href="#Color_mapping">Color and alpha mapping</a>
+<li><a href="#Pixel_level_drawing">Pixel-level drawing</a>
+<ul>
+<li><a href="#Bitmap_imaging">Bitmap imaging</a>
+<li><a href="#Pixmap_imaging">Pixmap imaging</a>
+<li><a href="#Compositing">Compositing</a>
+ [<a href="#S_spec">S</a>, <a href="#T_spec">T</a>, <a href="#F_spec">f</a>,
+ <a href="#Compositing_notes">Notes</a>]
+</ul>
+<li><a href="#Polygon_level_drawing">Polygon-level drawing</a>
+<li><a href="#High_level_drawing">High-level drawing</a>
+<ul>
+<li><a href="#Paths">Paths</a>
+<li><a href="#Images">Images</a> [<a href="#Images_notes">Notes</a>]
+<li><a href="#Text">Text</a> [<a href="#Text_notes">Notes</a>]
+</ul>
+<li><a href="#Reading_bits_back">Reading bits back</a>
+<li><a href="#Parameters">Parameters</a>
+<ul>
+<li><a href="#Default_CRD_parameters">Default color rendering dictionary (CRD) parameters</a>
+</ul>
+<li><a href="#External_fonts">External fonts</a>
+<li><a href="#Page_devices">Page devices</a>
+<li><a href="#Miscellaneous">Miscellaneous</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the documentation on <a href="Make.htm">how to build
+Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Adding_drivers"></a>Adding a driver</h2>
+
+<p>
+To add a driver to Ghostscript, first pick a name for your device, say
+"<b><tt>smurf</tt></b>". (Device names must be 1 to 8 characters, begin
+with a letter, and consist only of letters, digits, and underscores. Case
+is significant: all current device names are lower case.) Then all you
+need do is edit <b><tt>contrib.mak</tt></b> in two places.
+
+<ol>
+<li>The list of devices, in the section headed "Catalog". Add
+<b><tt>smurf</tt></b> to the list.
+
+<li>The section headed "Device drivers".
+
+<p>
+Suppose the files containing the smurf driver are called
+"<b><tt>joe</tt></b>" and "<b><tt>fred</tt></b>". Then you should add the
+following lines:
+
+<blockquote>
+<pre># ------ The SMURF device ------ #
+
+smurf_=$(GLOBJ)joe.$(OBJ) $(GLOBJ)fred.$(OBJ)
+$(DD)smurf.dev: $(smurf_)
+ $(SETDEV) $(DD)smurf $(smurf_)
+
+$(GLOBJ)joe.$(OBJ) : $(GLSRC)joe.c
+ $(GLCC) $(GLO_)joe.$(OBJ) $(C_) $(GLSRC)joe.c
+
+$(GLOBJ)fred.$(OBJ) : $(GLSRC)fred.c
+ $(GLCC) $(GLO_)fred.$(OBJ) $(C_) $(GLSRC)fred.c</pre>
+</blockquote>
+
+<p>
+and whatever <b><tt>joe.c</tt></b> and <b><tt>fred.c</tt></b> depend on.
+If the smurf driver also needs special libraries, for instance a library
+named "<b><tt>gorf</tt></b>", then the entry should look like this:
+
+<blockquote>
+<pre>$(DD)smurf.dev : $(smurf_)
+ $(SETDEV) $(DD)smurf $(smurf_)
+ $(ADDMOD) $(DD)smurf -lib gorf</pre>
+</blockquote>
+
+<p>
+If, as will usually be the case, your driver is a printer driver (as
+<a href="#Printer_drivers">discussed below</a>), the device entry should
+look like this:
+
+<blockquote>
+<pre>$(DD)smurf.dev : $(smurf_) $(GLD)page.dev
+ $(SETPDEV) $(DD)smurf $(smurf_)</pre>
+</blockquote>
+
+<p>
+or
+
+<blockquote>
+<pre>$(DD)smurf.dev : $(smurf_) $(GLD)page.dev
+ $(SETPDEV) $(DD)smurf $(smurf_)
+ $(ADDMOD) $(DD)smurf -lib gorf</pre>
+</blockquote>
+
+<p>
+Note that the space before the :, and the explicit compilation rules for the
+.c files, are required for portability,
+</ol>
+
+<hr>
+
+<h2><a name="KISS"></a>Keeping things simple</h2>
+
+<p>
+If you want to add a simple device (specifically, a monochrome printer), you
+probably don't need to read the rest of this document; just use the code in
+an existing driver as a guide. The Epson and Canon BubbleJet drivers <a
+href="../src/gdevepsn.c">gdevepsn.c</a> and <a
+href="../src/gdevbj10.c">gdevbj10.c</a> are good models for dot-matrix
+printers, which require presenting the data for many scan lines at once; the
+DeskJet/LaserJet drivers in <a href="../src/gdevdjet.c">gdevdjet.c</a> are
+good models for laser printers, which take a single scan line at a time but
+support data compression. For color printers, there are unfortunately no
+good models: the two major color inkjet printer drivers, <a
+href="../src/gdevcdj.c">gdevcdj.c</a> and <a
+href="../src/gdevstc.c">gdevstc.c</a>, are far too complex to read.
+
+<p>
+On the other hand, if you're writing a driver for some more esoteric
+device, you probably do need at least some of the information in the rest
+of this document. It might be a good idea for you to read it in
+conjunction with one of the existing drivers.
+
+<p>
+Duplication of code, and sheer volume of code, is a serious maintenance and
+distribution problem for Ghostscript. If your device is similar to an
+existing one, try to implement your driver by adding some parameterization
+to an existing driver rather than by copying code to create an entirely new
+source module. <a href="../src/gdevepsn.c">gdevepsn.c</a> and <a
+href="../src/gdevdjet.c">gdevdjet.c</a> are good examples of this approach.
+
+<hr>
+
+<h2><a name="Structure"></a>Driver structure</h2>
+
+<p>
+A device is represented by a structure divided into three parts:
+
+<ul>
+<li>procedures that are (normally) shared by all instances of each device;
+
+<li>parameters that are present in all devices but may be different for
+each device or instance; and
+
+<li>device-specific parameters that may be different for each instance.
+</ul>
+
+<p>
+Normally the procedure structure is defined and initialized at compile
+time. A prototype of the parameter structure (including both generic and
+device-specific parameters) is defined and initialized at compile time, but
+is copied and filled in when an instance of the device is created. Both of
+these structures should be declared as <b><tt>const</tt></b>, but for backward
+compatibility reasons the latter is not.
+
+<p>
+The <b><tt>gx_device_common</tt></b> macro defines the common structure
+elements, with the intent that devices define and export a structure along
+the following lines. Do not fill in the individual generic parameter values
+in the usual way for C structures: use the macros defined for this purpose
+in <a href="../src/gxdevice.h">gxdevice.h</a> or, if applicable, <a
+href="../src/gdevprn.h">gdevprn.h</a>.
+
+<blockquote>
+<pre>typedef struct smurf_device_s {
+ gx_device_common;
+ <b><em>... device-specific parameters ...</em></b>
+} smurf_device;
+smurf_device gs_smurf_device = {
+ <b><em>... macro for generic parameter values ...,</em></b>
+ { <b><em>... procedures ...</em></b> }, /* std_procs */
+ <b><em>... device-specific parameter values if any ...</em></b>
+};</pre>
+</blockquote>
+
+<p>
+The device structure instance <b>must</b> have the name
+<b><tt>gs_smurf_device</tt></b>, where <b><tt>smurf</tt></b> is the device
+name used in <b><tt>contrib.mak</tt></b>. <b><tt>gx_device_common</tt></b>
+is a macro consisting only of the element definitions.
+
+<p>
+All the device procedures are called with the device as the first argument.
+Since each device type is actually a different structure type, the device
+procedures must be declared as taking a <b><tt>gx_device&nbsp;*</tt></b> as
+their first argument, and must cast it to
+<b><tt>smurf_device&nbsp;*</tt></b> internally. For example, in the code
+for the "memory" device, the first argument to all routines is called
+<b><tt>dev</tt></b>, but the routines actually use <b><tt>mdev</tt></b> to
+refer to elements of the full structure, using the following standard
+initialization statement at the beginning of each procedure:
+
+<blockquote>
+<pre>gx_memory_device *const mdev = (gx_device_memory *)dev;</pre>
+</blockquote>
+
+<p>
+(This is a cheap version of "object-oriented" programming: in C++, for
+example, the cast would be unnecessary, and in fact the procedure table
+would be constructed by the compiler.)
+
+<h3><a name="Structure_definition"></a>Structure definition</h3>
+
+<p>
+You should consult the definition of struct <b><tt>gx_device_s</tt></b> in
+<a href="../src/gxdevice.h">gxdevice.h</a> for the complete details of the
+generic device structure. Some of the most important members of this
+structure for ordinary drivers are:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>const char *dname;</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>The device name
+<tr valign=top> <td><b><tt>bool is_open;</tt></b>
+ <td>&nbsp;
+ <td>True if device has been opened
+<tr valign=top> <td><b><tt>gx_device_color_info color_info;</tt></b>
+ <td>&nbsp;
+ <td>Color information
+<tr valign=top> <td><b><tt>int width;</tt></b>
+ <td>&nbsp;
+ <td>Width in pixels
+<tr valign=top> <td><b><tt>int height;</tt></b>
+ <td>&nbsp;
+ <td>Height in pixels
+</table></blockquote>
+
+<p>
+The name in the structure (<b><tt>dname</tt></b>) should be the same as the
+name in <a href="../src/contrib.mak">contrib.mak</a>.
+
+<h3><a name="Sophisticated"></a>For sophisticated developers only</h3>
+
+<p>
+If for any reason you need to change the definition of the basic device
+structure, or to add procedures, you must change the following places:
+
+<blockquote><ul>
+<li>This document and the <a href="News.htm">news document</a> (if you want
+ to keep the documentation up to date).
+<li>The definition of <b><tt>gx_device_common</tt></b> and the procedures
+ in <a href="../src/gxdevcli.h">gxdevcli.h</a>.
+<li>Possibly, the default forwarding procedures declared in
+ <a href="../src/gxdevice.h">gxdevice.h</a> and implemented in
+ <a href="../src/gdevnfwd.c">gdevnfwd.c</a>.
+<li>The device procedure record completion routines in
+ <a href="../src/gdevdflt.c">gdevdflt.c</a>.
+<li>Possibly, the default device implementation in
+ <a href="../src/gdevdflt.c">gdevdflt.c</a>,
+ <a href="../src/gdevddrw.c">gdevddrw.c</a>, and
+ <a href="../src/gxcmap.c">gxcmap.c</a>.
+<li>The bounding box device in <a href="../src/gdevbbox.c">gdevbbox.c</a>
+ (probably just adding <b><tt>NULL</tt></b> procedure entries if the
+ new procedures don't produce output).
+<li>These devices that must have complete (non-defaulted) procedure vectors:
+<ul>
+<li>The null device in <a href="../src/gdevnfwd.c">gdevnfwd.c</a>.
+<li>The command list "device" in <a href="../src/gxclist.c">gxclist.c</a>.
+ This is not an actual device; it only defines procedures.
+<li>The "memory" devices in <a href="../src/gdevmem.h">gdevmem.h</a> and
+ <b><tt>gdevm*.c</tt></b>.
+<li>The halftoning device in <a href="../src/gdevht.c">gdevht.c</a>.
+</ul>
+<li>The clip list accumulation "device" in
+ <a href="../src/gxacpath.c">gxacpath.c</a>.
+<li>The clipping "devices" <a href="../src/gxclip.c">gxclip.c</a>,
+ <a href="../src/gxclip2.c">gxclip2.c</a>,
+ and <a href="../src/gxclipm.c">gxclipm.c</a>.
+<li>The pattern accumulation "device" in
+ <a href="../src/gxpcmap.c">gxpcmap.c</a>.
+<li>The hit detection "device" in <a href="../src/gdevhit.c">gdevhit.c</a>.
+<li>The generic printer device macros in
+ <a href="../src/gdevprn.h">gdevprn.h</a>.
+<li>The generic printer device code in
+ <a href="../src/gdevprn.c">gdevprn.c</a>.
+<li>The RasterOp source device in
+ <a href="../src/gdevrops.c">gdevrops.c</a>.
+</ul></blockquote>
+
+<p>
+You may also have to change the code for
+<b><tt>gx_default_get_params</tt></b> or
+<b><tt>gx_default_put_params</tt></b> in <a
+href="../src/gsdparam.c">gsdparam.c</a>.
+
+<p>
+You should not have to change any of the real devices in the standard
+Ghostscript distribution (listed in <a href="../src/devs.mak">devs.mak</a>
+and <a href="../src/contrib.mak">contrib.mak</a>) or any of your own
+devices, because all of them are supposed to use the macros in <a
+href="../src/gxdevice.h">gxdevice.h</a> or <a
+href="../src/gdevprn.h">gdevprn.h</a> to define and initialize their state.
+
+<hr>
+
+<h2><a name="coordinates_and_types"></a>Coordinates and types</h2>
+
+<h3><a name="Coordinate_system"></a>Coordinate system</h3>
+
+<p>
+Since each driver specifies the initial transformation from user
+coordinates to device coordinates, the driver can use any coordinate system
+it wants, as long as a device coordinate will fit in an
+<b><tt>int</tt></b>. (This is only an issue on DOS systems, where ints are
+only 16 bits. User coordinates are represented as floats.) Most current
+drivers use a coordinate system with (0,0) in the upper left corner, with
+<b><em>X</em></b> increasing to the right and <b><em>Y</em></b> increasing
+toward the bottom. However, there is supposed to be nothing in the rest of
+Ghostscript that assumes this, and indeed some drivers use a coordinate
+system with (0,0) in the lower left corner.
+
+<p>
+Drivers must check (and, if necessary, clip) the coordinate parameters given
+to them: they should not assume the coordinates will be in bounds. The
+<b><tt>fit_fill</tt></b> and <b><tt>fit_copy</tt></b> macros in <a
+href="../src/gxdevice.h">gxdevice.h</a> are very helpful in doing this.
+
+<h3><a name="Color_definition"></a>Color definition</h3>
+
+<p>
+Ghostscript represents colors internally as RGB or CMYK values. In
+communicating with devices, however, it assumes that each device has a
+palette of colors identified by integers (to be precise, elements of type
+<b><tt>gx_color_index</tt></b>). Drivers may provide a uniformly spaced
+gray ramp or color cube for halftoning, or they may do their own color
+approximation, or both.
+
+<p>
+The <b><tt>color_info</tt></b> member of the device structure defines the
+color and gray-scale capabilities of the device. Its type is defined as
+follows:
+
+<blockquote>
+<pre>typedef struct gx_device_color_info_s {
+ int num_components; /* 1 = gray only, 3 = RGB, */
+ /* 4 = CMYK */
+ int depth; /* # of bits per pixel */
+ gx_color_value max_gray; /* # of distinct gray levels -1 */
+ gx_color_value max_rgb; /* # of distinct color levels -1 */
+ /* (only relevant if num_comp. &gt; 1) */
+ gx_color_value dither_gray; /* size of gray ramp for halftoning */
+ gx_color_value dither_rgb; /* size of color cube ditto */
+ /* (only relevant if num_comp. &gt; 1) */
+} gx_device_color_info;</pre>
+</blockquote>
+
+<p>
+The following macros (in <a href="../src/gxdevice.h">gxdevice.h</a>) provide
+convenient shorthands for initializing this structure for ordinary
+black-and-white or color devices:
+
+<blockquote>
+<b><tt>#define dci_black_and_white</tt></b> ...<br>
+<b><tt>#define dci_color(depth,maxv,dither)</tt></b> ...
+</blockquote>
+
+<p>
+The idea is that a device has a certain number of gray levels
+(<b><tt>max_gray</tt></b>+1) and a certain number of colors
+(<b><tt>max_rgb</tt></b>+1) that it can produce directly. When Ghostscript
+wants to render a given RGB or CMYK color as a device color, it first tests
+whether the color is a gray level (if <b><tt>num_components</tt></b> is 1,
+it converts all colors to gray levels), and if so:
+
+<blockquote>
+If <b><tt>max_gray</tt></b> is large (&gt;= 31), Ghostscript asks the
+device to approximate the gray level directly. If the device returns a
+valid <b><tt>gx_color_index</tt></b>, Ghostscript uses it. Otherwise,
+Ghostscript assumes that the device can represent
+<b><tt>dither_gray</tt></b> distinct gray levels, equally spaced along the
+diagonal of the color cube, and uses the two nearest ones to the desired
+color for halftoning.
+</blockquote>
+
+<p>
+If the color is not a gray level:
+
+<blockquote>
+If <b><tt>max_rgb</tt></b> is large (&gt;= 31), Ghostscript asks the device
+to approximate the color directly. If the device returns a valid
+<b><tt>gx_color_index</tt></b>, Ghostscript uses it. Otherwise,
+Ghostscript assumes that the device can represent
+
+<blockquote>
+<b><tt>dither_rgb</tt></b> &times; <b><tt>dither_rgb</tt></b> &times; <b><tt>dither_rgb</tt></b>
+</blockquote>
+
+<p>
+distinct colors, equally spaced throughout the color cube, and uses two of
+the nearest ones to the desired color for halftoning.
+</blockquote>
+
+<h3><a name="Types"></a>Types</h3>
+
+<p>
+Here is a brief explanation of the various types that appear as parameters
+or results of the drivers.
+
+<dl>
+<dt><b><tt>gx_color_value</tt></b> (defined in <b><tt>gxdevice.h</tt></b>)
+<dd>This is the type used to represent RGB or CMYK color values. It is
+currently equivalent to unsigned short. However, Ghostscript may use less
+than the full range of the type to represent color values:
+<b><tt>gx_color_value_bits</tt></b> is the number of bits actually used,
+and <b><tt>gx_max_color_value</tt></b> is the maximum value, equal to
+(2^<small><sup><b><tt>gx_max_color_value_bits</tt></b></sup></small>)-1.
+</dl>
+
+<dl>
+<dt><b><tt>gx_device</tt></b> (defined in <b><tt>gxdevice.h</tt></b>)
+<dd>This is the device structure, as explained above.
+</dl>
+
+<dl>
+<dt><b><tt>gs_matrix</tt></b> (defined in <b><tt>gsmatrix.h</tt></b>)
+<dd>This is a 2-D homogeneous coordinate transformation matrix, used by
+many Ghostscript operators.
+</dl>
+
+<dl>
+<dt><b><tt>gx_color_index</tt></b> (defined in <b><tt>gxdevice.h</tt></b>)
+<dd>This is meant to be whatever the driver uses to represent a device
+color. For example, it might be an index in a color map, or it might be R,
+G, and B values packed into a single integer. Ghostscript doesn't ever do
+any computations with <b><tt>gx_color_index</tt></b> values: it gets them
+from <b><tt>map_rgb_color</tt></b> or <b><tt>map_cmyk_color</tt></b> and
+hands them back as arguments to several other procedures. The special
+value <b><tt>gx_no_color_index</tt></b> (defined as
+<b><tt>(gx_color_index)(-1)</tt></b>&nbsp;) means "transparent" for some of
+the procedures. The type definition is simply:
+
+<blockquote><b><tt>
+typedef unsigned long gx_color_index;
+</tt></b></blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>gs_param_list</tt></b> (defined in <a
+href="../src/gsparam.h">gsparam.h</a>)
+<dd>This is a parameter list, which is used to read and set attributes in a
+device. See the comments in <a href="../src/gsparam.h">gsparam.h</a>, and
+the <a href="#Parameters">description of the <b><tt>get_params</tt></b> and
+<b><tt>put_params</tt></b> procedures</a> below, for more detail.
+</dl>
+
+<dl>
+<dt><b><tt>gx_tile_bitmap</tt></b> (defined in
+<a href="../src/gxbitmap.h">gxbitmap.h</a>)
+<br><b><tt>gx_strip_bitmap</tt></b> (defined in
+<a href="../src/gxbitmap.h">gxbitmap.h</a>)
+<dd>These structure types represent bitmaps to be used as a tile for
+filling a region (rectangle). <b><tt>gx_tile_bitmap</tt></b> is an older
+type lacking <b><tt>shift</tt></b> and <b><tt>rep_shift</tt></b>;
+<b><tt>gx_strip_bitmap</tt></b> has superseded it, and it should not be
+used in new code. Here is a copy of the relevant part of the file:
+
+<blockquote>
+<pre>/*
+ * Structure for describing stored bitmaps.
+ * Bitmaps are stored bit-big-endian (i.e., the 2^7 bit of the first
+ * byte corresponds to x=0), as a sequence of bytes (i.e., you can't
+ * do word-oriented operations on them if you're on a little-endian
+ * platform like the Intel 80x86 or VAX). Each scan line must start on
+ * a (32-bit) word boundary, and hence is padded to a word boundary,
+ * although this should rarely be of concern, since the raster and width
+ * are specified individually. The first scan line corresponds to y=0
+ * in whatever coordinate system is relevant.
+ *
+ * For bitmaps used as halftone tiles, we may replicate the tile in
+ * X and/or Y, but it is still valuable to know the true tile dimensions
+ * (i.e., the dimensions prior to replication). Requirements:
+ * width % rep_width = 0
+ * height % rep_height = 0
+ *
+ * For halftones at arbitrary angles, we provide for storing the halftone
+ * data as a strip that must be shifted in X for different values of Y.
+ * For an ordinary (non-shifted) halftone that has a repetition width of
+ * W and a repetition height of H, the pixel at coordinate (X,Y)
+ * corresponds to halftone pixel (X mod W, Y mod H), ignoring phase;
+ * for a shifted halftone with shift S, the pixel at (X,Y) corresponds
+ * to halftone pixel ((X + S * floor(Y/H)) mod W, Y mod H). Requirements:
+ * strip_shift &lt; rep_width
+ * strip_height % rep_height = 0
+ * shift = (strip_shift * (size.y / strip_height)) % rep_width
+ */
+typedef struct gx_strip_bitmap_s {
+ byte *data;
+ int raster; /* bytes per scan line */
+ gs_int_point size; /* width, height */
+ gx_bitmap_id id;
+ ushort rep_width, rep_height; /* true size of tile */
+ ushort strip_height;
+ ushort strip_shift;
+ ushort shift;
+} gx_strip_bitmap;</pre>
+</blockquote>
+</dl>
+
+<hr>
+
+<h2><a name="Coding_conventions"></a>Coding conventions</h2>
+
+<p>
+All the driver procedures defined below that return <b><tt>int</tt></b>
+results return 0 on success, or an appropriate negative error code in the
+case of error conditions. The error codes are defined in <a
+href="../src/gserrors.h">gserrors.h</a>; they correspond directly to the
+errors defined in the PostScript language reference manuals. The most
+common ones for drivers are:
+
+<blockquote><dl>
+<dt><b><tt>gs_error_invalidfileaccess</tt></b>
+<dd>An attempt to open a file failed.
+
+<dt><b><tt>gs_error_ioerror</tt></b>
+<dd>An error occurred in reading or writing a file.
+
+<dt><b><tt>gs_error_limitcheck</tt></b>
+<dd>An otherwise valid parameter value was too large for the
+implementation.
+
+<dt><b><tt>gs_error_rangecheck</tt></b>
+<dd>A parameter was outside the valid range.
+
+<dt><b><tt>gs_error_VMerror</tt></b>
+<dd>An attempt to allocate memory failed. (If this happens, the procedure
+should release all memory it allocated before it returns.)
+</dl></blockquote>
+
+<p>
+If a driver does return an error, rather than a simple return statement it
+should use the <b><tt>return_error</tt></b> macro defined in <a
+href="../src/gx.h">gx.h</a>, which is automatically included by <a
+href="../src/gdevprn.h">gdevprn.h</a> but not by <a
+href="../src/gserrors.h">gserrors.h</a>. For example
+
+<blockquote><b><tt>
+return_error(gs_error_VMerror);
+</tt></b></blockquote>
+
+<h3><a name="Allocating_storage"></a>Allocating storage</h3>
+
+<p>
+While most drivers (especially printer drivers) follow a very similar
+template, there is one important coding convention that is not obvious from
+reading the code for existing drivers: driver procedures must not use
+<b><tt>malloc</tt></b> to allocate any storage that stays around after the
+procedure returns. Instead, they must use <b><tt>gs_malloc</tt></b> and
+<b><tt>gs_free</tt></b>, which have slightly different calling conventions.
+(The prototypes for these are in <a href="../src/gsmemory.h">gsmemory.h</a>,
+which is included in <a href="../src/gx.h">gx.h</a>, which is included in <a
+href="../src/gdevprn.h">gdevprn.h</a>.) This is necessary so that
+Ghostscript can clean up all allocated memory before exiting, which is
+essential in environments that provide only single-address-space
+multi-tasking (some versions of Microsoft Windows).
+
+<blockquote>
+<pre>char *gs_malloc(uint num_elements, uint element_size,
+ const char *client_name);</pre>
+</blockquote>
+
+<p>
+Like <b><tt>calloc</tt></b>, but unlike <b><tt>malloc</tt></b>,
+<b><tt>gs_malloc</tt></b> takes an element count and an element size. For
+structures, <b><tt>num_elements</tt></b> is 1 and
+<b><tt>element_size</tt></b> is <b><tt>sizeof</tt></b> the structure; for
+byte arrays, <b><tt>num_elements</tt></b> is the number of bytes and
+<b><tt>element_size</tt></b> is 1. Unlike <b><tt>calloc</tt></b>,
+<b><tt>gs_malloc</tt></b> does <b>not</b> clear the block of storage.
+
+<p>
+The <b><tt>client_name</tt></b> is used for tracing and debugging. It must
+be a real string, not <b><tt>NULL</tt></b>. Normally it is the name of the
+procedure in which the call occurs.
+
+<blockquote>
+<pre>void gs_free(char *data, uint num_elements, uint element_size,
+ const char *client_name);</pre>
+</blockquote>
+
+<p>
+Unlike <b><tt>free</tt></b>, <b><tt>gs_free</tt></b> demands that
+<b><tt>num_elements</tt></b> and element_size be supplied. It also
+requires a client name, like <b><tt>gs_malloc</tt></b>.
+
+<h3><a name="Driver_instance_allocation"></a>Driver instance allocation</h3>
+
+<p>
+All driver instances allocated by Ghostscript's standard allocator must
+point to a "structure descriptor" that tells the garbage collector how to
+trace pointers in the structure. For drivers registered in the normal way
+(using the makefile approach described above), no special care is needed as
+long as instances are created only by calling the
+<b><tt>gs_copydevice</tt></b> procedure defined in <a
+href="../src/gsdevice.h">gsdevice.h</a>. If you have a need to define
+devices that are not registered in this way, you must fill in the stype
+member in any dynamically allocated instances with a pointer to the same
+structure descriptor used to allocate the instance. For more information
+about structure descriptors, see <a href="../src/gsmemory.h">gsmemory.h</a>
+and <a href="../src/gsstruct.h">gsstruct.h</a>.
+
+<hr>
+
+<h2><a name="Printer_drivers"></a>Printer drivers</h2>
+
+<p>
+Printer drivers (which include drivers that write some kind of raster file)
+are especially simple to implement. Of the driver procedures defined in the
+next section, they only need implement two: <b><tt>map_rgb_color</tt></b>
+(or <b><tt>map_cmyk_color</tt></b>) and <b><tt>map_color_rgb</tt></b>. In
+addition, they must implement a <b><tt>print_page</tt></b> or
+<b><tt>print_page_copies</tt></b> procedure. There are macros in <a
+href="../src/gdevprn.h">gdevprn.h</a> that generate the device structure for
+such devices, of which the simplest is <b><tt>prn_device</tt></b>; for an
+example, see <a href="../src/gdevbj10.c">gdevbj10.c</a>. If you are writing
+a printer driver, we suggest you start by reading <a
+href="../src/gdevprn.h">gdevprn.h</a> and the <a
+href="#Color_mapping">subsection on "Color mapping"</a> below; you may be
+able to ignore all the rest of the driver procedures.
+
+<p>
+The <b><tt>print_page</tt></b> procedures are defined as follows:
+
+<blockquote>
+<pre>int (*print_page)(P2(gx_device_printer *, FILE *))
+int (*print_page_copies)(P3(gx_device_printer *, FILE *, int))</pre>
+</blockquote>
+
+<p>
+This procedure must read out the rendered image from the device and write
+whatever is appropriate to the file. To read back one or more scan lines
+of the image, the <b><tt>print_page</tt></b> procedure must call one of the
+following procedures:
+
+<blockquote>
+<pre>int gdev_prn_copy_scan_lines(P4(gx_device_printer *pdev, int y, byte *str,
+ uint size)</pre>
+</blockquote>
+
+<p>
+For this procedure, <b><tt>str</tt></b> is where the data should be copied to, and <b><tt>size</tt></b> is
+the size of the buffer starting at <b><tt>str</tt></b>. This procedure returns the number
+of scan lines copied, or &lt;0 for an error. <b><tt>str</tt></b> need not be aligned.
+
+<blockquote>
+<pre>int gdev_prn_get_bits(gx_device_printer *pdev, int y, byte *str,
+ byte **actual_data)</pre>
+</blockquote>
+
+<p>
+This procedure reads out exactly one scan line. If the scan line is
+available in the correct format already, <b><tt>*actual_data</tt></b> is
+set to point to it; otherwise, the scan line is copied to the buffer
+starting at <b><tt>str</tt></b>, and <b><tt>*actual_data</tt></b> is set to
+<b><tt>str</tt></b>. This saves a copying step most of the time.
+<b><tt>str</tt></b> need not be aligned; however, if
+<b><tt>*actual_data</tt></b> is set to point to an existing scan line, it
+will be aligned. (See the description of the <b><tt>get_bits</tt></b>
+procedure below for more details.)
+
+<p>
+In either case, each row of the image is stored in the form described in
+the comment under <b><tt>gx_tile_bitmap</tt></b> above; each pixel takes
+the number of bits specified as <b><tt>color_info.depth</tt></b> in the
+device structure, and holds values returned by the device's
+<b><tt>map_</tt></b>{<b><tt>rgb</tt></b>,<b><tt>cmyk</tt></b>}<b><tt>_color</tt></b>
+procedure.
+
+<p>
+The <b><tt>print_page</tt></b> procedure can determine the number of bytes
+required to hold a scan line by calling:
+
+<blockquote>
+<pre>uint gdev_prn_raster(P1(gx_device_printer *))</pre>
+</blockquote>
+
+<p>
+For a very simple concrete example, we suggest reading the code in
+<b><tt>bit_print_page</tt></b> in <a href="../src/gdevbit.c">gdevbit.c</a>.
+
+<p>
+If the device provides <b><tt>print_page</tt></b>, Ghostscript will call
+<b><tt>print_page</tt></b> the requisite number of times to print the
+desired number of copies; if the device provides
+<b><tt>print_page_copies</tt></b>, Ghostscript will call
+<b><tt>print_page_copies</tt></b> once per page, passing it the desired
+number of copies.
+
+<hr>
+
+<h2><a name="Driver_procedures"></a>Driver procedures</h2>
+
+<p>
+Most of the procedures that a driver may implement are optional. If a
+device doesn't supply an optional procedure <b><tt>WXYZ</tt></b>, the entry
+in the procedure structure may be either <b><tt>gx_default_WXYZ</tt></b>,
+for instance <b><tt>gx_default_tile_rectangle</tt></b>, or
+<b><tt>NULL</tt></b> or 0. (The device procedure must also call the
+<b><tt>gx_default_</tt></b> procedure if it doesn't implement the function
+for particular values of the arguments.) Since C compilers supply 0 as the
+value for omitted structure elements, this convention means that statically
+initialized procedure structures continue to work even if new (optional)
+members are added.
+
+<h3><a name="Life_cycle"></a>Life cycle</h3>
+
+<p>
+A device instance begins life in a closed state. In this state, no output
+operations will occur. Only the following procedures may be called:
+
+<blockquote><b><tt>
+open_device<br>
+finish_copydevice<br>
+get_initial_matrix<br>
+get_params<br>
+put_params<br>
+get_hardware_params
+</tt></b></blockquote>
+
+<p>
+When <b><tt>setdevice</tt></b> installs a device instance in the graphics
+state, it checks whether the instance is closed or open. If the instance
+is closed, <b><tt>setdevice</tt></b> calls the open routine, and then sets
+the state to open. There is currently no user-accessible operation to
+close a device instance. Device instances are only closed when they are
+about to be freed, which occurs in three situations:
+
+<ul>
+<li>When a <b><tt>restore</tt></b> occurs, if the instance was created since
+the corresponding <b><tt>save</tt></b> and is in a VM being restored. I.e.,
+if the instance was created in local VM since a <b><tt>save</tt></b>, it
+will always be closed and freed by the corresponding
+<b><tt>restore</tt></b>; if it was created in global VM, it will only be
+closed by the outermost <b><tt>restore</tt></b>, regardless of the save
+level at the time the instance was created.
+
+<li>By the garbage collector, if the instance is no longer accessible.
+
+<li>When Ghostscript exits (terminates).
+</ul>
+
+<h3><a name="Open_close"></a>Open, close, sync, copy</h3>
+
+<dl>
+<dt><b><tt>int (*open_device)(P1(gx_device *))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Open the device: do any initialization associated with making the device
+instance valid. This must be done before any output to the device. The
+default implementation does nothing. <b>NOTE</b>: Clients should never call
+a device's <b><tt>open_device</tt></b> procedure directly: they should
+always call <b><tt>gs_opendevice</tt></b> instead.
+</dl>
+
+<dl>
+<dt><b><tt>int (*finish_copydevice)(P2(gx_device *dev, const gx_device
+*from_dev))</tt></b> <b><em>[OPTIONAL]</em></b> <dd>Perform any cleanup
+required after <b><tt>copydevice</tt></b> has created a new device instance
+by copying <b><tt>from_dev</tt></b>. If the copy operation should not be
+allowed, this procedure should return an error; the copy will be freed. The
+default implementation allows copying the device prototype, but does not
+allow copying device instances, because instances may contain internal
+pointers that should not be shared between copies, and there is no way to
+determine this from outside the device. <b>NOTE</b>: Clients should never
+call a device's <b><tt>finish_copydevice</tt></b> procedure: this procedure
+is only intended for use by <b><tt>gs_copydevice[2]</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>void (*get_initial_matrix)(P2(gx_device *, gs_matrix *))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Construct the initial transformation matrix mapping user coordinates
+(nominally 1/72 inch per unit) to device coordinates. The default
+procedure computes this from width, height, and
+[<b><tt>xy</tt></b>]<b><tt>_pixels_per_inch</tt></b> on the assumption that
+the origin is in the upper left corner, that is
+<blockquote>
+<b><tt>xx</tt></b> = <b><tt>x_pixels_per_inch</tt></b>/72, <b><tt>xy</tt></b> = 0,<br>
+<b><tt>yx = 0, yy = -y_pixels_per_inch</tt></b>/72,<br>
+<b><tt>tx = 0, ty = height</tt></b>.
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>int (*sync_output)(P1(gx_device *))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Synchronize the device. If any output to the device has been
+buffered, send or write it now. Note that this may be called several times
+in the process of constructing a page, so printer drivers should <b>not</b>
+implement this by printing the page. The default implementation does
+nothing.
+</dl>
+
+<dl>
+<dt><b><tt>int (*output_page)(P3(gx_device *, int num_copies, int flush))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Output a fully composed page to the device. The
+<b><tt>num_copies</tt></b> argument is the number of copies that should be
+produced for a hardcopy device. (This may be ignored if the driver has
+some other way to specify the number of copies.) The <b><tt>flush</tt></b>
+argument is true for <b><tt>showpage</tt></b>, false for
+<b><tt>copypage</tt></b>. The default definition just calls
+<b><tt>sync_output</tt></b>. Printer drivers should implement this by
+printing and ejecting the page.
+</dl>
+
+<dl>
+<dt><b><tt>int (*close_device)(P1(gx_device *))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Close the device: release any associated resources. After this, output
+to the device is no longer allowed. The default implementation does
+nothing. <b>NOTE</b>: Clients should never call a device's
+<b><tt>close_device</tt></b> procedure directly: they should always call
+<b><tt>gs_closedevice</tt></b> instead.
+</dl>
+
+<h3><a name="Color_mapping"></a>Color and alpha mapping</h3>
+
+<p>
+A given driver normally implements either <b><tt>map_rgb_color</tt></b> or
+<b><tt>map_cmyk_color</tt></b>, but not both. Black-and-white drivers need
+implement neither. Note that the <b><tt>map_xxx_color</tt></b> procedures
+must not return <b><tt>gx_no_color_index</tt></b> (all 1s).
+
+<p>
+Note that code in the Ghostscript library may cache the results of calling
+one or more of the color mapping procedures. If the result returned by any
+of these procedures would change (other than as a result of a change made by
+the driver's <b><tt>put_params</tt></b> procedure), the driver must call
+<b><tt>gx_device_decache_colors(dev)</tt></b>.
+
+<dl>
+<dt><b><tt>gx_color_index (*map_rgb_color)(P4(gx_device&nbsp;*,
+gx_color_value&nbsp;red, gx_color_value&nbsp;green,
+gx_color_value&nbsp;blue))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Map a RGB color to a device color. The range of legal values of the
+RGB arguments is 0 to <b><tt>gx_max_color_value</tt></b>. The default
+algorithm uses the <b><tt>map_cmyk_color</tt></b> procedure if the driver
+supplies one, otherwise returns 1 if any of the values exceeds
+<b><tt>gx_max_color_value</tt></b>&nbsp;/&nbsp;2, 0 otherwise.
+
+<p>
+Ghostscript assumes that for devices that have color capability (that is,
+<b><tt>color_info.num_components</tt></b> &gt; 1),
+<b><tt>map_rgb_color</tt></b> returns a color index for a gray level (as
+opposed to a non-gray color) iff red = green = blue.
+</dl>
+
+<dl>
+<dt><b><tt>gx_color_index (*map_cmyk_color)(P5(gx_device&nbsp;*,
+gx_color_value&nbsp;cyan, gx_color_value&nbsp;magenta,
+gx_color_value&nbsp;yellow, gx_color_value&nbsp;black))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Map a CMYK color to a device color. The range of legal values of the
+CMYK arguments is 0 to <b><tt>gx_max_color_value</tt></b>. The default
+algorithm calls the <b><tt>map_rgb_color</tt></b> procedure, with suitably
+transformed arguments.
+
+<p>
+Ghostscript assumes that for devices that have color capability (that is,
+<b><tt>color_info.num_components</tt></b> &gt; 1),
+<b><tt>map_cmyk_color</tt></b> returns a color index for a gray level (as
+opposed to a non-gray color) iff cyan = magenta = yellow.
+</dl>
+
+<dl>
+<dt><b><tt>int (*map_color_rgb)(P3(gx_device&nbsp;*,
+gx_color_index&nbsp;color, gx_color_value&nbsp;rgb[3]))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Map a device color code to RGB values. The default algorithm returns
+(0 if <b><tt>color</tt></b>==0 else <b><tt>gx_max_color_value</tt></b>) for
+all three components.
+</dl>
+
+<dl>
+<dt><b><tt>gx_color_index (*map_rgb_alpha_color)(P5(gx_device&nbsp;*,
+gx_color_value&nbsp;red, gx_color_value&nbsp;green,
+gx_color_value&nbsp;blue, gx_color_value&nbsp;alpha))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Map a RGB color and an opacity value to a device color. The range of
+legal values of the RGB and alpha arguments is 0 to
+<b><tt>gx_max_color_value</tt></b>; <b><tt>alpha</tt></b> = 0 means
+transparent, <b><tt>alpha</tt></b> = <b><tt>gx_max_color_value</tt></b>
+means fully opaque. The default is to use the
+<b><tt>map_rgb_color</tt></b> procedure and ignore alpha.
+
+<p>
+Note that if a driver implements <b><tt>map_rgb_alpha_color</tt></b>, it
+must also implement <b><tt>map_rgb_color</tt></b>, and must implement them
+in such a way that
+<b><tt>map_rgb_alpha_color(dev,&nbsp;r,&nbsp;g,&nbsp;b,&nbsp;gx_max_color_value)</tt></b>
+returns the same value as
+<b><tt>map_rgb_color(dev,&nbsp;r,&nbsp;g,&nbsp;b)</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>int (*map_color_rgb_alpha)(P3(gx_device&nbsp;*,
+gx_color_index&nbsp;color, gx_color_value&nbsp;rgba[4]))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>Map a device color code to RGB and alpha values. The default
+implementation calls <b><tt>map_color_rgb</tt></b> and fills in
+<b><tt>gx_max_color_value</tt></b> for alpha.
+
+<p>
+Note that if a driver implements <b><tt>map_color_rgb_alpha</tt></b>, it
+must also implement <b><tt>map_color_rgb</tt></b>, and must implement them
+in such a way that the first 3 values returned by
+<b><tt>map_color_rgb_alpha</tt></b> are the same as the values returned by
+<b><tt>map_color_rgb</tt></b>.
+
+<p>
+Note that CMYK devices currently do not support variable opacity; alpha is
+ignored on such devices.
+</dl>
+
+<dl>
+<dt><b><tt>typedef&nbsp;enum&nbsp;{&nbsp;go_text,
+go_graphics&nbsp;}&nbsp;graphic_object_type;&nbsp;int
+(*get_alpha_bits)(P4(gx_device&nbsp;*dev,
+graphic_object_type&nbsp;type))</tt></b> <b><em>[OPTIONAL] [OBSOLETE]</em></b>
+<dd>This procedure is no longer used: it is replaced by the
+color_info.anti_alias member of the driver structure. However, it still
+appears in the driver procedure vector for backward compatibility. It
+should never be called, and drivers should not implement it.
+</dl>
+
+<h3><a name="Pixel_level_drawing"></a>Pixel-level drawing</h3>
+
+<p>
+This group of drawing operations specifies data at the pixel level. All
+drawing operations use device coordinates and device color values.
+
+<dl>
+<dt><b><tt>int (*fill_rectangle)(P6(gx_device&nbsp;*, int&nbsp;x,
+int&nbsp;y, int&nbsp;width, int&nbsp;height,
+gx_color_index&nbsp;color))</tt></b>
+<dd>Fill a rectangle with a color. The set of pixels filled is {(px,py) |
+x &lt;= px &lt; x + width and y &lt;= py &lt; y + height}. In other words,
+the point <em>(x,y)</em> is included in the rectangle, as are
+<em>(x+w-1,y)</em>, <em>(x,y+h-1)</em>, and <em>(x+w-1,y+h-1)</em>, but
+<b><em>not</em></b> <em>(x+w,y)</em>, <em>(x,y+h)</em>, or
+<em>(x+w,y+h)</em>. If <b><tt>width</tt></b>&nbsp;&lt;=&nbsp;0 or
+height&nbsp;&lt;=&nbsp;0, <b><tt>fill_rectangle</tt></b> should return 0
+without drawing anything.
+
+<p>
+Note that <b><tt>fill_rectangle</tt></b> is the only non-optional procedure
+in the driver interface.
+</dl>
+
+<h4><a name="Bitmap_imaging"></a>Bitmap imaging</h4>
+
+<p>
+Bitmap (or pixmap) images are stored in memory in a nearly standard way.
+The first byte corresponds to <em>(0,0)</em> in the image coordinate
+system: bits (or polybit color values) are packed into it left to right.
+There may be padding at the end of each scan line: the distance from one
+scan line to the next is always passed as an explicit argument.
+
+<dl>
+<dt><b><tt>int (*copy_mono)(P11(gx_device&nbsp;*,
+const&nbsp;unsigned&nbsp;char&nbsp;*data, int&nbsp;data_x, int&nbsp;raster,
+gx_bitmap_id&nbsp;id, int&nbsp;x, int&nbsp;y, int&nbsp;width,
+int&nbsp;height, gx_color_index&nbsp;color0,
+gx_color_index&nbsp;color1))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Copy a monochrome image (similar to the PostScript image operator).
+Each scan line is raster bytes wide. Copying begins at
+(<b><tt>data_x</tt></b>,0) and transfers a rectangle of the given width and
+height to the device at device coordinate <em>(x,y)</em>. (If the transfer
+should start at some non-zero y value in the data, the caller can adjust
+the data address by the appropriate multiple of the raster.) The copying
+operation writes device color <b><tt>color0</tt></b> at each 0-bit, and
+<b><tt>color1</tt></b> at each 1-bit: if <b><tt>color0</tt></b> or
+<b><tt>color1</tt></b> is <b><tt>gx_no_color_index</tt></b>, the device
+pixel is unaffected if the image bit is 0 or 1 respectively. If
+<b><tt>id</tt></b> is different from <b><tt>gx_no_bitmap_id</tt></b>, it
+identifies the bitmap contents unambiguously; a call with the same
+<b><tt>id</tt></b> will always have the same <b><tt>data</tt></b>,
+<b><tt>raster</tt></b>, and data contents.
+
+<p>
+This operation, with
+<b><tt>color0</tt></b>&nbsp;=&nbsp;<b><tt>gx_no_color_index</tt></b>, is
+the workhorse for text display in Ghostscript, so implementing it
+efficiently is very important.
+</dl>
+
+<dl>
+<dt><b><tt>int (*tile_rectangle)(P10(gx_device&nbsp;*,
+const&nbsp;gx_tile_bitmap&nbsp;*tile, int&nbsp;x, int&nbsp;y,
+int&nbsp;width, int&nbsp;height, gx_color_index&nbsp;color0,
+gx_color_index&nbsp;color1, int&nbsp;phase_x, int&nbsp;phase_y))</tt></b>
+<b><em>[OPTIONAL] [OBSOLETE]</em></b>
+<dd>This procedure is still supported, but has been superseded by
+<b><tt>strip_tile_rectangle</tt></b>. New drivers should implement
+<b><tt>strip_tile_rectangle</tt></b>; if they cannot cope with non-zero
+shift values, they should test for this explicitly and call the default
+implementation (<b><tt>gx_default_strip_tile_rectangle</tt></b>) if
+shift&nbsp;!=&nbsp;0. Clients should call
+<b><tt>strip_tile_rectangle</tt></b>, not <b><tt>tile_rectangle</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>int (*strip_tile_rectangle)(P10(gx_device&nbsp;*,
+const&nbsp;gx_strip_bitmap&nbsp;*tile, int&nbsp;x, int&nbsp;y,
+int&nbsp;width, int&nbsp;height, gx_color_index&nbsp;color0,
+gx_color_index&nbsp;color1, int&nbsp;phase_x, int&nbsp;phase_y))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>Tile a rectangle. Tiling consists of doing multiple
+<b><tt>copy_mono</tt></b> operations to fill the rectangle with copies of
+the tile. The tiles are aligned with the device coordinate system, to
+avoid "seams". Specifically, the (<b><tt>phase_x</tt></b>,
+<b><tt>phase_y</tt></b>) point of the tile is aligned with the origin of
+the device coordinate system. (Note that this is backwards from the
+PostScript definition of halftone phase.) <b><tt>phase_x</tt></b> and
+<b><tt>phase_y</tt></b> are guaranteed to be in the range
+<em>[0..</em><b><tt>tile-&gt;width</tt></b><em>)</em> and
+<em>[0..</em><b><tt>tile-&gt;height</tt></b><em>)</em> respectively.
+
+<p>
+If <b><tt>color0</tt></b> and <b><tt>color1</tt></b> are both
+<b><tt>gx_no_color_index</tt></b>, then the tile is a color pixmap, not a
+bitmap: see the next section.
+
+<p>
+This operation is the workhorse for halftone filling in Ghostscript, so
+implementing it efficiently for solid tiles (that is, where either
+<b><tt>color0</tt></b> and <b><tt>color1</tt></b> are both
+<b><tt>gx_no_color_index</tt></b>, for colored halftones, or neither one is
+<b><tt>gx_no_color_index</tt></b>, for monochrome halftones) is very
+important.
+</dl>
+
+<h4><a name="Pixmap_imaging"></a>Pixmap imaging</h4>
+
+<p>
+Pixmaps are just like bitmaps, except that each pixel occupies more than
+one bit. All the bits for each pixel are grouped together (this is
+sometimes called "chunky" or "Z" format). For <b><tt>copy_color</tt></b>,
+the number of bits per pixel is given by the
+<b><tt>color_info.depth</tt></b> parameter in the device structure: the
+legal values are 1, 2, 4, 8, 16, 24, or 32. The pixel values are device
+color codes (that is, whatever it is that <b><tt>map_rgb_color</tt></b>
+returns).
+
+<dl>
+<dt><b><tt>int (*copy_color)(P9(gx_device&nbsp;*,
+const&nbsp;unsigned&nbsp;char&nbsp;*data, int&nbsp;data_x, int&nbsp;raster,
+gx_bitmap_id&nbsp;id, int&nbsp;x, int&nbsp;y, int&nbsp;width,
+int&nbsp;height))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Copy a color image with multiple bits per pixel. The raster is in
+bytes, but <b><tt>x</tt></b> and <b><tt>width</tt></b> are in pixels, not
+bits. If <b><tt>id</tt></b> is different from
+<b><tt>gx_no_bitmap_id</tt></b>, it identifies the bitmap contents
+unambiguously; a call with the same <b><tt>id</tt></b> will always have the
+same <b><tt>data</tt></b>, <b><tt>raster</tt></b>, and data contents.
+
+<p>
+We do not provide a separate procedure for tiling with a pixmap; instead,
+<b><tt>tile_rectangle</tt></b> can also take colored tiles. This is
+indicated by the <b><tt>color0</tt></b> and <b><tt>color1</tt></b>
+arguments' both being <b><tt>gx_no_color_index</tt></b>. In this case, as
+for <b><tt>copy_color</tt></b>, the <b><tt>raster</tt></b> and
+<b><tt>height</tt></b> in the "bitmap" are interpreted as for real bitmaps,
+but the <b><tt>x</tt></b> and <b><tt>width</tt></b> are in pixels, not
+bits.
+</dl>
+
+<h4><a name="Compositing"></a>Compositing</h4>
+
+<p>
+In addition to direct writing of opaque pixels, devices must also support
+compositing. Currently two kinds of compositing are defined
+(<b><tt>RasterOp</tt></b> and alpha-based), but more may be added in the
+future.
+
+<blockquote>
+<b><em>THIS AREA OF THE INTERFACE IS SOMEWHAT UNSTABLE: USE AT YOUR OWN
+RISK.</em></b>
+</blockquote>
+
+<dl>
+<dt><b><tt>int (*copy_alpha)(P11(gx_device&nbsp;*dev,
+const&nbsp;unsigned&nbsp;char&nbsp;*data, int&nbsp;data_x, int&nbsp;raster,
+gx_bitmap_id&nbsp;id, int&nbsp;x, int&nbsp;y, int&nbsp;width,
+int&nbsp;height, gx_color_index&nbsp;color, int&nbsp;depth))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>This procedure is somewhat misnamed: it was added to the interface
+before we really understood alpha channel and compositing.
+
+<p>
+Fill a given region with a given color modified by an individual alpha
+value for each pixel. For each pixel, this is equivalent to
+alpha-compositing with a source pixel whose alpha value is obtained from
+the pixmap (<b><tt>data</tt></b>, <b><tt>data_x</tt></b>, and
+<b><tt>raster</tt></b>) and whose color is the given color (which has
+<b><em>not</em></b> been premultiplied by the alpha value), using the Sover
+rule. <b><tt>depth</tt></b>, the number of bits per alpha value, is either
+2 or 4, and in any case is always a value returned by a previous call on
+the <b><tt>get_alpha_bits</tt></b> procedure. Note that if
+<b><tt>get_alpha_bits</tt></b> always returns 1, this procedure will never
+be called.
+</dl>
+
+<dl>
+<dt><b><tt>int (*create_compositor)(P5(dev_t&nbsp;*dev,
+gx_device_t&nbsp;**pcdev, const&nbsp;gs_composite_t&nbsp;*pcte,
+const&nbsp;gs_imager_state&nbsp;*pis, gs_memory_t&nbsp;*memory))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>Create a new device (called a "compositing device" or "compositor")
+that will composite data written to it with the device's existing data,
+according to the compositing function defined by <b><tt>*pcte</tt></b>.
+Devices will normally implement this in one of the following standard ways:
+
+<ul>
+<li>Devices that don't do any imaging and don't forward any imaging
+operations (for example, the null device, the hit detection device, and the
+clipping list accumulation device) simply return themselves, which
+effectively ignores the compositing function.
+
+<li>"Leaf" devices that do imaging and have no special optimizations for
+compositing (for example, some memory devices) ask the
+<b><tt>gs_composite_t</tt></b> to create a default compositor.
+
+<li>Leaf devices that can implement some kinds of compositing operation
+efficiently (for example, monobit memory devices and RasterOp) inspect the
+type and values of <b><tt>*pcte</tt></b> to determine whether it specifies
+such an operation: if so, they create a specialized compositor, and if not,
+they ask the <b><tt>gs_composite_t</tt></b> to create a default compositor.
+</ul>
+
+<p>
+Other kinds of forwarding devices, which don't fall into any of these
+categories, require special treatment. In principle, what they do is ask
+their target to create a compositor, and then create and return a copy of
+themselves with the target's new compositor as the target of the copy.
+There is a possible default implementation of this approach: if the
+original device was <b>D</b> with target <b>T</b>, and <b>T</b> creates a
+compositor <b>C</b>, then the default implementation creates a device
+<b>F</b> that for each operation temporarily changes <b>D</b>'s target to
+<b>C</b>, forwards the operation to <b>D</b>, and then changes <b>D</b>'s
+target back to <b>T</b>. However, the Ghostscript library currently only
+creates a compositor with an imaging forwarding device as target in a few
+specialized situations (banding, and bounding box computation), and these
+are handled as special cases.
+
+<p>
+Note that the compositor may have a different color space, color
+representation, or bit depth from the device to which it is compositing.
+For example, alpha-compositing devices use standard-format chunky color
+even if the underlying device doesn't.
+
+<p>
+Closing a compositor frees all of its storage, including the compositor
+itself. However, since the <b><tt>create_compositor</tt></b> call may
+return the same device, clients must check for this case, and only call the
+close procedure if a separate device was created.
+</dl>
+
+<p>
+<font size="+1">
+<b><em>[strip_]copy_rop WILL BE SUPERSEDED BY COMPOSITORS</em></b>
+</font>
+
+<dl>
+<dt><b><tt>int (*copy_rop)(P15(gx_device&nbsp;*dev,
+const&nbsp;byte&nbsp;*sdata, int&nbsp;sourcex, uint&nbsp;sraster,
+gx_bitmap_id&nbsp;id, const&nbsp;gx_color_index&nbsp;*scolors,
+const&nbsp;gx_tile_bitmap&nbsp;*texture,
+const&nbsp;gx_color_index&nbsp;*tcolors, int&nbsp;x, int&nbsp;y,
+int&nbsp;width, int&nbsp;height, int&nbsp;phase_x, int&nbsp;phase_y,
+int&nbsp;command))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>This procedure is still supported, but has been superseded by
+<b><tt>strip_copy_rop</tt></b>. New drivers should implement
+<b><tt>strip_copy_rop</tt></b>; if they cannot cope with non-zero shift
+values in the texture, they should test for this explicitly and call the
+default implementation (<b><tt>gx_default_strip_copy_rop</tt></b>) if
+shift&nbsp;!=&nbsp;0. Clients should call <b><tt>strip_copy_rop</tt></b>,
+not <b><tt>copy_rop</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>int (*strip_copy_rop)(P15(gx_device&nbsp;*dev,
+const&nbsp;byte&nbsp;*sdata, int&nbsp;sourcex, uint&nbsp;sraster,
+gx_bitmap_id&nbsp;id, const&nbsp;gx_color_index&nbsp;*scolors,
+const&nbsp;gx_strip_bitmap&nbsp;*texture,
+const&nbsp;gx_color_index&nbsp;*tcolors, int&nbsp;x, int&nbsp;y,
+int&nbsp;width, int&nbsp;height, int&nbsp;phase_x, int&nbsp;phase_y,
+int&nbsp;command))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Combine an optional source image <b>S</b> (as for
+<b><tt>copy_mono</tt></b> or <b><tt>copy_color</tt></b>) and an optional
+texture <b>T</b> (a tile, as for <b><tt>tile_rectangle</tt></b>) with the
+existing bitmap or pixmap <b>D</b> held by the driver, pixel by pixel,
+using any 3-input Boolean operation as modified by "transparency" flags:
+schematically, set <b>D&nbsp;=&nbsp;f(D,S,T)</b>, computing <b>f</b> in RGB
+space rather than using actual device pixel values. <b>S</b> and <b>T</b>
+may each (independently) be a solid color, a bitmap with "foreground" and
+"background" colors, or a pixmap. This is a complex (and currently rather
+slow) operation. The arguments are as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>dev</tt></b>
+ <td>&nbsp;
+ <td>the device, as for all driver procedures
+<tr valign=top> <td><b><tt>sdata</tt></b>, <b><tt>sourcex</tt></b>, <b><tt>sraster</tt></b>, <b><tt>id</tt></b>, <b><tt>scolors</tt></b>
+ <td>&nbsp;
+ <td>specify <b>S</b>, <a href="#S_spec">see below</a>
+<tr valign=top> <td><b><tt>texture</tt></b>, <b><tt>tcolors</tt></b>
+ <td>&nbsp;
+ <td>specify <b>T</b>, <a href="#T_spec">see below</a>
+<tr valign=top> <td><b><tt>x</tt></b>, <b><tt>y</tt></b>, <b><tt>width</tt></b>, <b><tt>height</tt></b>
+ <td>&nbsp;
+ <td>as for the other copy and fill procedures
+<tr valign=top> <td><b><tt>phase_x</tt></b>, <b><tt>phase_y</tt></b>
+ <td>&nbsp;
+ <td>part of <b>T</b> specification, <a href="#T_spec">see below</a>
+<tr valign=top> <td><b><tt>command</tt></b>
+ <td>&nbsp;
+ <td><a href="#F_spec">see below</a>
+</table></blockquote>
+</dl>
+
+<h5><a name="S_spec"></a>The source specification S</h5>
+
+<p>
+As noted above, the source <b>S</b> may be a solid color, a bitmap, or a
+pixmap. If <b>S</b> is a solid color:
+
+<ul>
+<li><b><tt>sdata</tt></b>, <b><tt>sourcex</tt></b>,
+<b><tt>sraster</tt></b>, and <b><tt>id</tt></b> are irrelevant.
+
+<li><b><tt>scolors</tt></b> points to two <b><tt>gx_color_index</tt></b>
+values; <b><tt>scolors[0]</tt></b> = <b><tt>scolors[1]</tt></b> = the
+color.
+</ul>
+
+<p>
+If <b>S</b> is a bitmap:
+
+<ul>
+<li><b><tt>sdata</tt></b>, <b><tt>sourcex</tt></b>,
+<b><tt>sraster</tt></b>, and <b><tt>id</tt></b> arguments are as for
+<b><tt>copy_mono</tt></b> or <b><tt>copy_color</tt></b>
+(<b><tt>data</tt></b>, <b><tt>data_x</tt></b>, <b><tt>raster</tt></b>,
+<b><tt>id</tt></b>), and specify a source bitmap.
+
+<li><b><tt>scolors</tt></b> points to two <b><tt>gx_color_index</tt></b>
+values; <b><tt>scolors[0]</tt></b> is the background color (the color
+corresponding to 0-bits in the bitmap), <b><tt>scolors[1]</tt></b> is the
+foreground color (the color corresponding to 1-bits in the bitmap).
+</ul>
+
+<p>
+If <b>S</b> is a pixmap:
+
+<ul>
+<li><b><tt>sdata</tt></b>, <b><tt>sourcex</tt></b>,
+<b><tt>sraster</tt></b>, and <b><tt>id</tt></b> arguments are as for
+<b><tt>copy_mono</tt></b> or <b><tt>copy_color</tt></b>
+(<b><tt>data</tt></b>, <b><tt>data_x</tt></b>, <b><tt>raster</tt></b>,
+<b><tt>id</tt></b>), and specify a source pixmap whose depth is the same as
+the depth of the destination.
+
+<li><b><tt>scolors</tt></b> is <b><tt>NULL</tt></b>.
+</ul>
+
+<p>
+Note that if the source is a bitmap with background=0 and foreground=1, and
+the destination is 1 bit deep, then the source can be treated as a pixmap
+(scolors=<b><tt>NULL</tt></b>).
+
+<h5><a name="T_spec"></a>The texture specification T</h5>
+
+<p>
+Similar to the source, the texture <b>T</b> may be a solid color, a bitmap,
+or a pixmap. If <b>T</b> is a solid color:
+
+<ul>
+<li>The texture pointer is irrelevant.
+
+<li><b><tt>tcolors</tt></b> points to two <b><tt>gx_color_index</tt></b>
+values; <b><tt>tcolors[0]</tt></b> = <b><tt>tcolors[1]</tt></b> = the
+color.
+</ul>
+
+<p>
+If <b>T</b> is a bitmap:
+
+<ul>
+<li>The texture argument points to a <b><tt>gx_tile_bitmap</tt></b>, as for
+the <b><tt>tile_rectangle</tt></b> procedure. Similarly,
+<b><tt>phase_x</tt></b> and <b><tt>phase_y</tt></b> specify the offset of
+the texture relative to the device coordinate system origin, again as for
+<b><tt>tile_rectangle</tt></b>. The tile is a bitmap (1 bit per pixel).
+
+<li><b><tt>tcolors</tt></b> points to two <b><tt>gx_color_index</tt></b>
+values; <b><tt>tcolors[0]</tt></b> is the background color (the color
+corresponding to 0-bits in the bitmap), <b><tt>tcolors[1]</tt></b> is the
+foreground color (the color corresponding to 1-bits in the bitmap).
+</ul>
+
+<p>
+If <b>T</b> is a pixmap:
+
+<ul>
+<li>The texture argument points to a <b><tt>gx_tile_bitmap</tt></b> whose
+depth is the same as the depth of the destination.
+
+<li>tcolors is <b><tt>NULL</tt></b>.
+</ul>
+
+<p>
+Again, if the texture is a bitmap with background=0 and foreground=1, and
+the destination depth is 1, the texture bitmap can be treated as a pixmap
+(tcolors=<b><tt>NULL</tt></b>).
+
+<p>
+Note that while a source bitmap or pixmap has the same width and height as
+the destination, a texture bitmap or pixmap has its own width and height
+specified in the <b><tt>gx_tile_bitmap</tt></b> structure, and is
+replicated or clipped as needed.
+
+<h5><a name="F_spec"></a>The function specification f</h5>
+
+<p>
+"Command" indicates the raster operation and transparency as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th>Bits
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>7-0
+ <td>&nbsp;
+ <td>raster op
+<tr valign=top> <td>8
+ <td>&nbsp;
+ <td>0 if source opaque, 1 if source transparent
+<tr valign=top> <td>9
+ <td>&nbsp;
+ <td>0 if texture opaque, 1 if texture transparent
+<tr valign=top> <td>?-10
+ <td>&nbsp;
+ <td>unused, must be 0
+</table></blockquote>
+
+<p>
+The raster operation follows the Microsoft and H-P specification. It is an
+8-element truth table that specifies the output value for each of the
+possible 2&times;2&times;2 input values as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th>Bit
+ <td>&nbsp;
+ <th>Texture
+ <td>&nbsp;
+ <th>Source
+ <td>&nbsp;
+ <th>Destination
+<tr> <td colspan=7><hr>
+<tr valign=top> <td align=center>7
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>1
+<tr valign=top> <td align=center>6
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>0
+<tr valign=top> <td align=center>5
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>1
+<tr valign=top> <td align=center>4
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>0
+<tr valign=top> <td align=center>3
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>1
+<tr valign=top> <td align=center>2
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>1
+ <td>&nbsp;
+ <td align=center>0
+<tr valign=top> <td align=center>1
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>1
+<tr valign=top> <td align=center>0
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>0
+ <td>&nbsp;
+ <td align=center>0
+</table></blockquote>
+
+<p>
+Transparency affects the output in the following way. A source or texture
+pixel is considered transparent if its value is all 1s (for instance, 1 for
+bitmaps, <tt>0xffffff</tt> for 24-bit RGB pixmaps) <b><em>and</em></b> the
+corresponding transparency bit is set in the command. For each pixel, the
+result of the Boolean operation is written into the destination iff neither
+the source nor the texture pixel is transparent. (Note that the H-P
+RasterOp specification, on which this is based, specifies that if the
+source and texture are both all 1s and the command specifies transparent
+source and opaque texture, the result <b><em>should</em></b> be written in
+the output. We think this is an error in the documentation.)
+
+<h5><a name="Compositing_notes"></a>Notes</h5>
+
+<p>
+<b><tt>copy_rop</tt></b> is defined to operate on pixels in RGB space,
+again following the H-P and Microsoft specification. For devices that
+don't use RGB (or gray-scale with black = 0, white = all 1s) as their
+native color representation, the implementation of <b><tt>copy_rop</tt></b>
+must convert to RGB or gray space, do the operation, and convert back (or
+do the equivalent of this). Here are the <b><tt>copy_rop</tt></b>
+equivalents of the most important previous imaging calls. We assume the
+declaration:
+
+<blockquote><b><tt>
+static const gx_color_index white2[2] = { 1, 1 };
+</tt></b></blockquote>
+
+<p>
+Note that <b><tt>rop3_S</tt></b> may be replaced by any other Boolean operation.
+For monobit devices, we assume that black = 1.
+
+<blockquote>
+<pre>/* For all devices: */
+(*fill_rectangle)(dev, x, y, w, h, color) ==&gt;
+
+ { gx_color_index colors[2];
+ colors[0] = colors[1] = color;
+ (*dev_proc(dev, copy_rop))(dev, NULL, 0, 0, gx_no_bitmap_id, colors,
+ NULL, colors /*irrelevant*/,
+ x, y, w, h, 0, 0, rop3_S);
+ }
+
+/* For black-and-white devices only: */
+(*copy_mono)(dev, base, sourcex, sraster, id,
+ x, y, w, h, (gx_color_index)0, (gx_color_index)1) ==&gt;
+
+ (*dev_proc(dev, copy_rop))(dev, base, sourcex, sraster, id, NULL,
+ NULL, white2 /*irrelevant*/,
+ x, y, w, h, 0, 0, rop3_S);
+
+/* For color devices, where neither color0 nor color1 is gx_no_color_index: */
+(*copy_mono)(dev, base, sourcex, sraster, id,
+ x, y, w, h, color0, color1) ==&gt;
+
+ { gx_color_index colors[2];
+ colors[0] = color0, colors[1] = color1;
+ (*dev_proc(dev, copy_rop))(dev, base, sourcex, sraster, id, colors,
+ NULL, white2 /*irrelevant*/,
+ x, y, w, h, 0, 0, rop3_S);
+ }
+
+/* For black-and-white devices only: */
+(*copy_mono)(dev, base, sourcex, sraster, id,
+ x, y, w, h, gx_no_color_index, (gx_color_index)1) ==&gt;
+
+ (*dev_proc(dev, copy_rop))(dev, base, sourcex, sraster, id, NULL,
+ NULL, white2 /*irrelevant*/,
+ x, y, w, h, 0, 0,
+ rop3_S | lop_S_transparent);
+
+/* For all devices: */
+(*copy_color)(dev, base, sourcex, sraster, id,
+ x, y, w, h) ==&gt; [same as first copy_mono above]
+
+/* For black-and-white devices only: */
+(*tile_rectangle)(dev, tile, x, y, w, h,
+ (gx_color_index)0, (gx_color_index)1, px, py) ==&gt;
+
+ (*dev_proc(dev, copy_rop))(dev, NULL, 0, 0, gx_no_bitmap_id,
+ white2 /*irrelevant*/,
+ tile, NULL,
+ x, y, w, h, px, py, rop3_T)
+</pre></blockquote>
+
+<h3><a name="Polygon_level_drawing"></a>Polygon-level drawing</h3>
+
+<p>
+In addition to the pixel-level drawing operations that take integer device
+coordinates and pure device colors, the driver interface includes
+higher-level operations that draw polygons using fixed-point coordinates,
+possibly halftoned colors, and possibly a non-default logical operation.
+
+<p>
+The <b><tt>fill_</tt></b>* drawing operations all use the center-of-pixel
+rule: a pixel is colored iff its center falls within the polygonal region
+being filled. If a pixel center <em>(X+0.5,Y+0.5)</em> falls exactly on
+the boundary, the pixel is filled iff the boundary is horizontal and the
+filled region is above it, or the boundary is not horizontal and the filled
+region is to the right of it.
+
+<dl>
+<dt><b><tt>int (*fill_trapezoid)(P10(gx_device&nbsp;*dev,
+const&nbsp;gs_fixed_edge&nbsp;*left, const&nbsp;gs_fixed_edge&nbsp;*right,
+fixed&nbsp;ybot, fixed&nbsp;ytop, bool&nbsp;swap_axes,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+gs_logical_operation_t&nbsp;lop))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Fill a trapezoid. The bottom and top edges are parallel to the x
+axis, and are defined by <b><tt>ybot</tt></b> and <b><tt>ytop</tt></b>,
+respectively. The left and right edges are defined by <b><tt>left</tt></b>
+and <b><tt>right</tt></b>. Both of these respresent lines (<b><tt>gs_fixed_edge</tt></b>
+is defined in <a href="../src/gxdevcli.h">gxdevcli.h</a> and consists
+of <b><tt>gs_fixed_point</tt></b> <b><tt>start</tt></b> and <b><tt>end</tt></b> points).
+The y coordinates of these lines need not have any specific relation to
+<b><tt>ybot</tt></b> and <b><tt>ytop</tt></b>. The routine is defined this way so
+that the filling algorithm can subdivide edges and still guarantee
+that the exact same pixels will be filled. If
+<b><tt>swap_axes</tt></b> is set, the meanings of X and Y are
+interchanged.
+</dl>
+
+<dl>
+<dt><b><tt>int (*fill_parallelogram)(P9(gx_device&nbsp;*dev,
+fixed&nbsp;px, fixed&nbsp;py, fixed&nbsp;ax, fixed&nbsp;ay, fixed&nbsp;bx,
+fixed&nbsp;by, const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+gs_logical_operation_t&nbsp;lop))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Fill a parallelogram whose corners are <em>(px,py)</em>,
+<em>(px+ax,py+ay)</em>, <em>(px+bx,py+by)</em>, and
+<em>(px+ax+bx,py+ay+by)</em>. There are no constraints on the values of
+any of the parameters, so the parallelogram may have any orientation
+relative to the coordinate axes.
+</dl>
+
+<dl>
+<dt><b><tt>int (*fill_triangle)(P9(gx_device&nbsp;*dev, fixed&nbsp;px,
+fixed&nbsp;py, fixed&nbsp;ax, fixed&nbsp;ay, fixed&nbsp;bx, fixed&nbsp;by,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+gs_logical_operation_t&nbsp;lop))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Fill a triangle whose corners are <em>(px,py)</em>,
+<em>(px+ax,py+ay)</em>, and <em>(px+bx,py+by)</em>.
+</dl>
+
+<dl>
+<dt><b><tt>int (*draw_thin_line)(P7(gx_device&nbsp;*dev,
+fixed&nbsp;fx0, fixed&nbsp;fy0, fixed&nbsp;fx1, fixed&nbsp;fy1,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+gs_logical_operation_t&nbsp;lop))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Draw a one-pixel-wide line from <em>(fx0,fy0)</em> to
+<em>(fx1,fy1)</em>.
+</dl>
+
+<dl>
+<dt><b><tt>int (*draw_line)(P6(gx_device&nbsp;*dev, int&nbsp;x0, int&nbsp;y0,
+int&nbsp;x1, int&nbsp;y1, gx_color_index&nbsp;color))</tt></b>
+<b><em>[OPTIONAL] [OBSOLETE]</em></b>
+<dd>This procedure is no longer used: it is replaced by the draw_thin_line
+procedure. However, still appears in the driver procedure vector for
+backward compatibility. It should never be called, and drivers should not
+implement it.
+</dl>
+
+<h3><a name="High_level_drawing"></a>High-level drawing</h3>
+
+<p>
+In addition to the lower-level drawing operations described above, the
+driver interface provides a set of high-level operations. Normally these
+will have their default implementation, which converts the high-level
+operation to the low-level ones just described; however, drivers that
+generate high-level output formats such as CGM, or communicate with devices
+that have firmware for higher-level operations such as polygon fills, may
+implement these high-level operations directly. For more details, please
+consult the source code, specifically:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <th align=left>Header
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Defines
+<tr valign=top> <td><a href="../src/gxpaint.h">gxpaint.h</a>
+ <td>&nbsp;
+ <td><b><tt>gx_fill_params</tt></b>, <b><tt>gx_stroke_params</tt></b>
+<tr valign=top> <td><a href="../src/gxfixed.h">gxfixed.h</a>
+ <td>&nbsp;
+ <td><b><tt>fixed</tt></b>, <b><tt>gs_fixed_point</tt></b> (used by
+ <b><tt>gx_*_params</tt></b>)
+<tr valign=top> <td><a href="../src/gxistate.h">gxistate.h</a>
+ <td>&nbsp;
+ <td><b><tt>gs_imager_state</tt></b> (used by <b><tt>gx_*_params</tt></b>)
+<tr valign=top> <td><a href="../src/gxline.h">gxline.h</a>
+ <td>&nbsp;
+ <td><b><tt>gx_line_params</tt></b> (used by <b><tt>gs_imager_state</tt></b>)
+<tr valign=top> <td><a href="../src/gslparam.h">gslparam.h</a>
+ <td>&nbsp;
+ <td>line cap/join values (used by <b><tt>gx_line_params</tt></b>)
+<tr valign=top> <td><a href="../src/gxmatrix.h">gxmatrix.h</a>
+ <td>&nbsp;
+ <td><b><tt>gs_matrix_fixed</tt></b> (used by <b><tt>gs_imager_state</tt></b>)
+<tr valign=top> <td><a href="../src/gspath.h">gspath.h</a>, <a href="../src/gxpath.h">gxpath.h</a>, <a href="../src/gzpath.h">gzpath.h</a>
+ <td>&nbsp;
+ <td><b><tt>gx_path</tt></b>
+<tr valign=top> <td><a href="../src/gxcpath.h">gxcpath.h</a>, <a href="../src/gzcpath.h">gzcpath.h</a>
+ <td>&nbsp;
+ <td><b><tt>gx_clip_path</tt></b>
+</table></blockquote>
+
+<p>
+For a minimal example of how to implement the high-level drawing operations,
+see <a href="../src/gdevtrac.c">gdevtrac.c</a>.
+
+<h4><a name="Paths"></a>Paths</h4>
+
+<dl>
+<dt><b><tt>int (*fill_path)(P6(gx_device&nbsp;*dev,
+const&nbsp;gs_imager_state&nbsp;*pis, gx_path&nbsp;*ppath,
+const&nbsp;gx_fill_params&nbsp;*params,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+const&nbsp;gx_clip_path&nbsp;*pcpath))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Fill the given path, clipped by the given clip path, according to the
+given parameters, with the given color. The clip path pointer may be
+<b><tt>NULL</tt></b>, meaning do not clip.
+</dl>
+
+<dl>
+<dt><b><tt>int (*stroke_path)(P6(gx_device&nbsp;*dev,
+const&nbsp;gs_imager_state&nbsp;*pis, gx_path&nbsp;*ppath,
+const&nbsp;gx_stroke_params&nbsp;*params,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+const&nbsp;gx_clip_path&nbsp;*pcpath))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Stroke the given path, clipped by the given clip path, according to the
+given parameters, with the given color. The clip path pointer may be
+<b><tt>NULL</tt></b>, meaning not to clip.
+</dl>
+
+<dl>
+<dt><b><tt>int (*fill_mask)(P13(gx_device&nbsp;*dev,
+const&nbsp;byte&nbsp;*data, int&nbsp;data_x, int&nbsp;raster,
+gx_bitmap_id&nbsp;id, int&nbsp;x, int&nbsp;y, int&nbsp;width,
+int&nbsp;height, const&nbsp;gx_drawing_color&nbsp;*pdcolor, int&nbsp;depth,
+int&nbsp;command, const&nbsp;gx_clip_path&nbsp;*pcpath))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>Color the 1-bits in the given mask (or according to the alpha values,
+if <b><tt>depth</tt></b>&nbsp;&gt;&nbsp;1), clipped by the given clip path,
+with the given color and logical operation. The clip path pointer may be
+<b><tt>NULL</tt></b>, meaning do not clip. The parameters
+<b><tt>data</tt></b>, ..., <b><tt>height</tt></b> are as for
+<b><tt>copy_mono</tt></b>; depth is as for <b><tt>copy_alpha</tt></b>;
+command is as for <b><tt>copy_rop</tt></b>.
+</dl>
+
+<h4><a name="Images"></a>Images</h4>
+
+<p>
+Similar to the high-level interface for fill and stroke graphics, a high-level
+interface exists for bitmap images. The procedures in this part of the
+interface are optional.
+
+<p>
+Bitmap images come in a variety of types, corresponding closely (but not
+precisely) to the PostScript ImageTypes. The generic or common part of all
+bitmap images is defined by:
+
+<blockquote>
+<pre>typedef struct {
+ const gx_image_type_t *type;
+ gs_matrix ImageMatrix;
+} gs_image_common_t;</pre>
+</blockquote>
+
+<p>
+Bitmap images that supply data (all image types except
+<b><tt>image_type_from_device</tt></b> (2)) are defined by:
+
+<blockquote>
+<pre>#define gs_image_max_components 5
+typedef struct {
+ &lt;&lt; gs_image_common_t &gt;&gt;
+ int Width;
+ int Height;
+ int BitsPerComponent;
+ float Decode[gs_image_max_components * 2];
+ bool Interpolate;
+} gs_data_image_t;</pre>
+</blockquote>
+
+<p>
+Images that supply pixel (as opposed to mask) data are defined by:
+
+<blockquote>
+<pre>typedef enum {
+ /* Single plane, chunky pixels. */
+ gs_image_format_chunky = 0,
+ /* num_components planes, chunky components. */
+ gs_image_format_component_planar = 1,
+ /* BitsPerComponent * num_components planes, 1 bit per plane */
+ gs_image_format_bit_planar = 2
+} gs_image_format_t;
+typedef struct {
+ &lt;&lt; gs_data_image_t &gt;&gt;
+ const gs_color_space *ColorSpace;
+ bool CombineWithColor;
+} gs_pixel_image_t;</pre>
+</blockquote>
+
+<p>
+Ordinary PostScript Level 1 or Level 2 (<b><tt>ImageType</tt></b> 1) images
+are defined by:
+
+<blockquote>
+<pre>typedef enum {
+ /* No alpha. */
+ gs_image_alpha_none = 0,
+ /* Alpha precedes color components. */
+ gs_image_alpha_first,
+ /* Alpha follows color components. */
+ gs_image_alpha_last
+} gs_image_alpha_t;
+typedef struct {
+ &lt;&lt; gs_pixel_image_t &gt;&gt;
+ bool ImageMask;
+ bool adjust;
+ gs_image_alpha_t Alpha;
+} gs_image1_t;
+typedef gs_image1_t gs_image_t;</pre>
+</blockquote>
+
+<p>
+Of course, standard PostScript images don't have an alpha component. For
+more details, consult the source code in <a
+href="../src/gsiparam.h">gsiparam.h</a> and <b><tt>gsiparm*.h</tt></b>,
+which define parameters for an image.
+
+<p>
+The <b><tt>begin[_typed_]image</tt></b> driver procedures create image
+enumeration structures. The common part of these structures consists of:
+
+<blockquote>
+<pre>typedef struct gx_image_enum_common_s {
+ const gx_image_type_t *image_type;
+ const gx_image_enum_procs_t *procs;
+ gx_device *dev;
+ gs_id id;
+ int num_planes;
+ int plane_depths[gs_image_max_planes]; /* [num_planes] */
+ int plane_widths[gs_image_max_planes] /* [num_planes] */
+} gx_image_enum_common_t;</pre>
+</blockquote>
+
+<p>
+where <b><tt>procs</tt></b> consists of:
+
+<blockquote>
+<pre>typedef struct gx_image_enum_procs_s {
+
+ /*
+ * Pass the next batch of data for processing.
+ */
+#define image_enum_proc_plane_data(proc)\
+ int proc(P4(gx_device *dev,\
+ gx_image_enum_common_t *info, const gx_image_plane_t *planes,\
+ int height))
+
+ image_enum_proc_plane_data((*plane_data));
+
+ /*
+ * End processing an image, freeing the enumerator.
+ */
+#define image_enum_proc_end_image(proc)\
+ int proc(P3(gx_device *dev,\
+ gx_image_enum_common_t *info, bool draw_last))
+
+ image_enum_proc_end_image((*end_image));
+
+ /*
+ * Flush any intermediate buffers to the target device.
+ * We need this for situations where two images interact
+ * (currently, only the mask and the data of ImageType 3).
+ * This procedure is optional (may be 0).
+ */
+#define image_enum_proc_flush(proc)\
+ int proc(P1(gx_image_enum_common_t *info))
+
+ image_enum_proc_flush((*flush));
+
+} gx_image_enum_procs_t;</pre>
+</blockquote>
+
+<p> In other words, <b><tt>begin[_typed]_image</tt></b> sets up an
+enumeration structure that contains the procedures that will process the
+image data, together with all variables needed to maintain the state of the
+process. Since this is somewhat tricky to get right, if you plan to create
+one of your own you should probably read an existing implementation of
+<b><tt>begin[_typed]_image</tt></b>, such as the one in <a
+href="../src/gdevbbox.c">gdevbbox.c</a> or <a
+href="../src/gdevps.c">gdevps.c</a>.
+
+<p>
+The data passed at each call of <b><tt>image_plane_data</tt></b> consists of
+one or more planes, as appropriate for the type of image.
+<b><tt>begin[_typed]_image</tt></b> must initialize the
+<b><tt>plane_depths</tt></b> array in the enumeration structure with the
+depths (bits per element) of the planes. The array of
+<b><tt>gx_image_plane_t</tt></b> structures passed to each call of
+<b><tt>image_plane_data</tt></b> then defines where the data are stored, as
+follows:
+
+<blockquote>
+<pre>typedef struct gx_image_plane_s {
+ const byte *data;
+ int data_x;
+ uint raster;
+} gx_image_plane_t;</pre>
+</blockquote>
+
+<dl>
+<dt><b><tt>int (*begin_image)(P9(gx_device&nbsp;*dev,
+const&nbsp;gs_imager_state&nbsp;*pis, const&nbsp;gs_image_t&nbsp;*pim,
+gs_image_format_t&nbsp;format, gs_int_rect&nbsp;*prect,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+const&nbsp;gx_clip_path&nbsp;*pcpath, gs_memory_t&nbsp;*memory,
+gx_image_enum_common_t&nbsp;**pinfo))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Begin the transmission of an image. Zero or more calls of
+<b><tt>image_plane_data</tt></b> will follow, and then a call of
+<b><tt>end_image</tt></b>. The parameters of <b><tt>begin_image</tt></b>
+are as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>pis</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>pointer to an imager state. The only relevant elements of the
+ imager state are the CTM (coordinate transformation matrix),
+ the logical operation (<b><tt>RasterOp</tt></b> or
+ transparency), and the color rendering information.
+<tr valign=top> <td><b><tt>pim</tt></b>
+ <td>&nbsp;
+ <td>pointer to the <b><tt>gs_image_t</tt></b> structure that
+ defines the image parameters
+<tr valign=top> <td><b><tt>format</tt></b>
+ <td>&nbsp;
+ <td>defines how pixels are represented for
+ <b><tt>image_plane_data</tt></b>. See the description of
+ <b><tt>image_plane_data</tt></b> below
+<tr valign=top> <td><b><tt>prect</tt></b>
+ <td>&nbsp;
+ <td>if not <b><tt>NULL</tt></b>, defines a subrectangle of the
+ image; only the data for this subrectangle will be passed to
+ <b><tt>image_plane_data</tt></b>, and only this subrectangle should
+ be drawn
+<tr valign=top> <td><b><tt>pdcolor</tt></b>
+ <td>&nbsp;
+ <td>defines a drawing color, only needed for masks or if
+ <b><tt>CombineWithColor</tt></b> is true
+<tr valign=top> <td><b><tt>pcpath</tt></b>
+ <td>&nbsp;
+ <td>if not <b><tt>NULL</tt></b>, defines an optional clipping path
+<tr valign=top> <td><b><tt>memory</tt></b>
+ <td>&nbsp;
+ <td>defines the allocator to be used for allocating bookkeeping
+ information
+<tr valign=top> <td><b><tt>pinfo</tt></b>
+ <td>&nbsp;
+ <td>the implementation should return a pointer to its state
+ structure here
+</table></blockquote>
+
+<p>
+<b><tt>begin_image</tt></b> is expected to allocate a structure for its
+bookkeeping needs, using the allocator defined by the memory parameter, and
+return it in <b><tt>*pinfo</tt></b>. <b><tt>begin_image</tt></b> should not assume that
+the structures in <b><tt>*pim</tt></b>, <b><tt>*prect</tt></b>, or
+<b><tt>*pdcolor</tt></b> will survive the call on
+<b><tt>begin_image</tt></b> (except for the color space in
+<b><tt>*pim-&gt;ColorSpace</tt></b>): it should copy any necessary parts of
+them into its own bookkeeping structure. It may, however, assume that
+<b><tt>*pis</tt></b>, <b><tt>*pcpath</tt></b>, and of course
+<b><tt>*memory</tt></b> will live at least until <b><tt>end_image</tt></b>
+is called.
+
+<p>
+<b><tt>begin_image</tt></b> returns 0 normally, or 1 if the image does not
+need any data. In the latter case, <b><tt>begin_image</tt></b> does not
+allocate an enumeration structure.
+</dl>
+
+<dl>
+<dt><b><tt>int (*begin_typed_image)(P9(gx_device&nbsp;*dev,
+const&nbsp;gs_imager_state&nbsp;*pis, const&nbsp;gs_matrix&nbsp;*pmat,
+const&nbsp;gs_image_common_t&nbsp;*pim, gs_int_rect&nbsp;*prect,
+const&nbsp;gx_drawing_color&nbsp;*pdcolor,
+const&nbsp;gx_clip_path&nbsp;*pcpath, gs_memory_t&nbsp;*memory,
+gx_image_enum_common_t&nbsp;**pinfo))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>This has the same function as <b><tt>begin_image</tt></b>, except
+<ul>
+<li>The image may be of any <b><tt>ImageType</tt></b>, not only
+<b><tt>image_type_simple</tt></b> (1);
+
+<li>The image format is included in the image structure, not supplied as a
+separate argument;
+
+<li>The optional <b><tt>pmat</tt></b> argument provides a matrix that
+substitutes for the one in the imager state;
+
+<li>For mask images, if <b><tt>pmat</tt></b> is not <b><tt>NULL</tt></b>
+and the color is pure, <b><tt>pis</tt></b> may be <b><tt>NULL</tt></b>.
+</ul>
+</dl>
+
+<p>
+The actual transmission of data uses the procedures in the enumeration
+structure, not driver procedures, since the handling of the data usually
+depends on the image type and parameters rather than the device. These
+procedures are specified as follows.
+
+<dl>
+<dt><b><tt>int (*image_plane_data)(P4(gx_device&nbsp;*dev,
+gx_image_enum_common_t&nbsp;*info,
+const&nbsp;gx_image_plane_t&nbsp;*planes, int&nbsp;height))</tt></b>
+<dd>This call provides more of the image source data: specifically,
+<b><tt>height</tt></b> rows, with <b><tt>Width</tt></b> pixels supplied for
+each row.
+
+<p>
+The data for each row are packed big-endian within each byte, as for
+<b><tt>copy_color</tt></b>. The <b><tt>data_x</tt></b> (starting X position
+within the row) and <b><tt>raster</tt></b> (number of bytes per row) are
+specified separately for each plane, and may include some padding at the
+beginning or end of each row. Note that for non-mask images, the input data
+may be in any color space and may have any number of bits per component (1,
+2, 4, 8, 12); currently mask images always have 1 bit per component, but in
+the future, they might allow multiple bits of alpha. Note also that each
+call of <b><tt>image_plane_data</tt></b> passes complete pixels: for example, for
+a chunky image with 24 bits per pixel, each call of
+<b><tt>image_plane_data</tt></b> passes 3N bytes of data (specifically,
+3&nbsp;&times;&nbsp;Width&nbsp;&times;&nbsp;height).
+
+<p>
+The interpretation of planes depends on the <b><tt>format</tt></b> member of
+the <b><tt>gs_image[_common]_t</tt></b> structure:
+
+<ul>
+<li>If the format is <b><tt>gs_image_format_chunky</tt></b>,
+<b><tt>planes[0].data</tt></b> points to data in "chunky" format, in which
+the components follow each other (for instance, RGBRGBRGB....)
+
+<li>If the format is <b><tt>gs_image_format_component_planar</tt></b>,
+<b><tt>planes[0&nbsp;..&nbsp;N-1].data</tt></b> point to data for the
+<b><em>N</em></b> components (for example, <b><em>N</em></b>=3 for RGB
+data); each plane contains samples for a single component, for instance,
+RR..., GG..., BB.... Note that the planes are divided by component, not by
+bit: for example, for 24-bit RGB data, <b><em>N</em></b>=3, with 8-bit
+values in each plane of data.
+
+<li>If the format is <b><tt>gs_image_format_bit_planar</tt></b>,
+<b><tt>planes[0&nbsp;..&nbsp;N*B-1].data</tt></b> point to data for the
+<b><em>N</em></b> components of <b><em>B</em></b> bits each (for example,
+<b><em>N</em></b>=3 and <b><em>B</em></b>=4 for RGB data with 4 bits per
+component); each plane contains samples for a single bit, for instance, R0
+R1 R2 R3 G0 G1 G2 G3 B0 B1 B2 B3. Note that the most significant bit of
+each plane comes first.
+</ul>
+
+<p>
+If, as a result of this call, <b><tt>image_plane_data</tt></b> has been called with all
+the data for the (sub-)image, it returns 1; otherwise, it returns 0 or an
+error code as usual.
+
+<p>
+<b><tt>image_plane_data</tt></b>, unlike most other procedures that take bitmaps as
+arguments, does not require the data to be aligned in any way.
+
+<p>
+Note that for some image types, different planes may have different
+numbers of bits per pixel, as defined in the <b><tt>plane_depths</tt></b> array.
+</dl>
+
+<dl>
+<dt><b><tt>int (*end_image)(P3(gx_device&nbsp;*dev, void&nbsp;*info,
+bool&nbsp;draw_last))</tt></b>
+<dd>Finish processing an image, either because all data have been supplied
+or because the caller has decided to abandon this image.
+<b><tt>end_image</tt></b> may be called at any time after
+<b><tt>begin_image</tt></b>. It should free the info structure and any
+subsidiary structures. If <b><tt>draw_last</tt></b> is true, it should
+finish drawing any buffered lines of the image.
+</dl>
+
+<h5><a name="Images_notes"></a>Notes</h5>
+
+<p>
+While there will almost never be more than one image enumeration in
+progress -- that is, after a <b><tt>begin_image</tt></b>,
+<b><tt>end_image</tt></b> will almost always be called before the next
+<b><tt>begin_image</tt></b> -- driver code should not rely on this
+property; in particular, it should store all information regarding the
+image in the info structure, not in the driver structure.
+
+<p>
+Note that if <b><tt>begin_[typed_]image</tt></b> saves its parameters in
+the info structure, it can decide on each call whether to use its own
+algorithms or to use the default implementation. (It may need to call
+<b><tt>gx_default_begin</tt></b>/<b><tt>end_image</tt></b> partway
+through.) [A later revision of this document may include an example here.]
+
+<h4><a name="Text"></a>Text</h4>
+
+<p>
+The third high-level interface handles text. As for images, the interface
+is based on creating an enumerator which then may execute the operation in
+multiple steps. As for the other high-level interfaces, the procedures are
+optional.
+
+<dl>
+<dt><b><tt>int (*text_begin)(P9(gx_device&nbsp;*dev,
+gs_imager_state&nbsp;*pis, const&nbsp;gs_text_params_t&nbsp;*text,
+gs_font&nbsp;*font, gx_path&nbsp;*path,
+const&nbsp;gx_device_color&nbsp;*pdcolor,
+const&nbsp;gx_clip_path&nbsp;*pcpath, gs_memory_t&nbsp;*memory,
+gs_text_enum_t&nbsp;**ppte))</tt></b> <b><em>[OPTIONAL]</em></b>
+
+<dd>
+Begin processing text, by creating a state structure and storing it in
+<b><tt>*ppte</tt></b>. The parameters of <b><tt>text_begin</tt></b> are as
+follows:
+</dl>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>dev</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>The usual pointer to the device.
+<tr valign=top> <td><b><tt>pis</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>A pointer to an imager state. All elements may be relevant,
+ depending on how the text is rendered.
+<tr valign=top> <td><b><tt>text</tt></b>
+ <td>&nbsp;
+ <td>A pointer to the structure that defines the text operation
+ and parameters. See <a href="../src/gstext.h">gstext.h</a> for details.
+<tr valign=top> <td><b><tt>font</tt></b>
+ <td>&nbsp;
+ <td>Defines the font for drawing.
+<tr valign=top> <td><b><tt>path</tt></b>
+ <td>&nbsp;
+ <td>Defines the path where the character outline will be appended
+ (if the text operation includes <b><tt>TEXT_DO_...PATH</tt></b>),
+ and whose current point indicates where drawing should occur
+ and will be updated by the string width (unless the text
+ operation includes <b><tt>TEXT_DO_NONE</tt></b>).
+<tr valign=top> <td><b><tt>pdcolor</tt></b>
+ <td>&nbsp;
+ <td>Defines the drawing color for the text. Only relevant if
+ the text operation includes <b><tt>TEXT_DO_DRAW</tt></b>.
+<tr valign=top> <td><b><tt>pcpath</tt></b>
+ <td>&nbsp;
+ <td>If not <b><tt>NULL</tt></b>, defines an optional clipping path.
+ Only relevant if the text operation includes
+ <b><tt>TEXT_DO_DRAW</tt></b>.
+<tr valign=top> <td><b><tt>memory</tt></b>
+ <td>&nbsp;
+ <td>Defines the allocator to be used for allocating bookkeeping
+ information.
+<tr valign=top> <td><b><tt>ppte</tt></b>
+ <td>&nbsp;
+ <td>The implementation should return a pointer to its state
+ structure here.
+</table></blockquote>
+
+<p>
+<b><tt>text_begin</tt></b> must allocate a structure for its bookkeeping
+needs, using the allocator defined by the <b><tt>memory</tt></b> parameter,
+and return it in <b><tt>*ppte</tt></b>. <b><tt>text_begin</tt></b> may
+assume that the structures passed as parameters will survive until text
+processing is complete.
+
+<p>
+Clients should not call the driver <b><tt>text_begin</tt></b> procedure
+directly. Instead, they should call <b><tt>gx_device_text_begin</tt></b>,
+which takes the same parameters and also initializes certain common elements
+of the text enumeration structure, or <b><tt>gs_text_begin</tt></b>, which
+takes many of the parameters from a graphics state structure. For details,
+see <a href="../src/gstext.h">gstext.h</a>.
+
+<p>
+The actual processing of text uses the procedures in the enumeration
+structure, not driver procedures, since the handling of the text may depend
+on the font and parameters rather than the device. Text processing may also
+require the client to take action between characters, either because the
+client requested it (<b><tt>TEXT_INTERVENE</tt></b> in the operation) or
+because rendering a character requires suspending text processing to call an
+external package such as the PostScript interpreter. (It is a deliberate
+design decision to handle this by returning to the client, rather than
+calling out of the text renderer, in order to avoid potentially unknown
+stack requirements.) Specifically, the client must call the following
+procedures, which in turn call the procedures in the text enumerator.
+
+<dl>
+<dt><b><tt>int gs_text_process(P1(gs_text_enum_t&nbsp;*pte))</tt></b>
+<dd>Continue processing text. This procedure may return 0 or a negative
+error code as usual, or one of the following values (see
+<a href="../src/gstext.h">gstext.h</a> for details).
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>TEXT_PROCESS_RENDER</tt></b>
+ <td>The client must cause the current character to be rendered.
+ This currently only is used for PostScript Type 0-4 fonts
+ and their CID-keyed relatives.
+<tr valign=top> <td><b><tt>TEXT_PROCESS_INTERVENE</tt></b>
+ <td>The client has asked to intervene between characters.
+ This is used for <b><tt>cshow</tt></b> and <b><tt>kshow</tt></b>.
+</table></blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>int gs_text_release(P2(gs_text_enum_t&nbsp;*pte,
+client_name_t&nbsp;cname))</tt></b> <dd>Finish processing text and release
+all associated structures. Clients must call this procedure after
+<b><tt>gs_text_process</tt></b> returns 0 or an error, and may call it at
+any time.
+</dl>
+
+<p>
+There are numerous other procedures that clients may call during text
+processing. See <a href="../src/gstext.h">gstext.h</a> for details.
+
+<h5><a name="Text_notes"></a>Notes</h5>
+
+<p>
+Note that unlike many other optional procedures, the default implementation
+of <b><tt>text_begin</tt></b> cannot simply return: like the default
+implementation of <b><tt>begin[_typed]_image</tt></b>, it must create and
+return an enumerator. Furthermore, the implementation of the
+<b><tt>process</tt></b> procedure (in the enumerator structure, called by
+<b><tt>gs_text_process</tt></b>) cannot simply return without doing
+anything, even if it doesn't want to draw anything on the output. See the
+comments in <a href="../src/gxtext.h">gxtext.h</a> for details.
+
+<h3><a name="Reading_bits_back"></a>Reading bits back</h3>
+
+<dl>
+<dt><b><tt>int (*get_bits_rectangle)(P4(gx_device&nbsp;*dev,
+const&nbsp;gs_int_rect&nbsp;*prect, gs_get_bits_params_t&nbsp;*params,
+gs_int_rect&nbsp;**unread))</tt></b> <b><em>[OPTIONAL]</em></b>
+
+<dd>
+Read a rectangle of bits back from the device. The <b><tt>params</tt></b>
+structure consists of:
+
+<table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>options</tt></b>
+ <td>&nbsp;
+ <td>the allowable formats for returning the data
+<tr valign=top> <td><b><tt>data[32]</tt></b>
+ <td>&nbsp;
+ <td>pointers to the returned data
+<tr valign=top> <td><b><tt>x_offset</tt></b>
+ <td>&nbsp;
+ <td>the X offset of the first returned pixel in data
+<tr valign=top> <td><b><tt>raster</tt></b>
+ <td>&nbsp;
+ <td>the distance between scan lines in the returned data
+</table>
+
+<p>
+<b><tt>options</tt></b> is a bit mask specifying what formats the client is
+willing to accept. (If the client has more flexibility, the implementation
+may be able to return the data more efficiently, by avoiding representation
+conversions.) The options are divided into groups.
+
+<blockquote><dl>
+<dt><b><em>alignment</em></b>
+<dd>Specifies whether the returned data must be aligned in the normal
+manner for bitmaps, or whether unaligned data are acceptable.
+
+<dt><b><em>pointer or copy</em></b>
+<dd>Specifies whether the data may be copied into storage provided by the
+client and/or returned as pointers to existing storage. (Note that if
+copying is not allowed, it is much more likely that the implementation will
+return an error, since this requires that the client accept the data in the
+implementation's internal format.)
+
+<dt><b><em>X offset</em></b>
+<dd>Specifies whether the returned data must have a specific X offset
+(usually zero, but possibly other values to avoid skew at some later stage
+of processing) or whether it may have any X offset (which may avoid skew in
+the <b><tt>get_bits_rectangle</tt></b> operation itself).
+
+<dt><b><em>raster</em></b>
+<dd>Specifies whether the raster (distance between returned scan lines)
+must have its standard value, must have some other specific value, or may
+have any value. The standard value for the raster is the device width
+padded out to the alignment modulus when using pointers, or the minimum
+raster to accommodate the X offset + width when copying (padded out to the
+alignment modulus if standard alignment is required).
+
+<dt><b><em>format</em></b>
+<dd>Specifies whether the data are returned in chunky (all components of a
+single pixel together), component-planar (each component has its own scan
+lines), or bit-planar (each bit has its own scan lines) format.
+
+<dt><b><em>color space</em></b>
+<dd>Specifies whether the data are returned as native device pixels, or in
+a standard color space. Currently the only supported standard space is
+RGB.
+
+<dt><b><em>standard component depth</em></b>
+<dd>Specifies the number of bits per component if the data are returned in
+the standard color space. (Native device pixels use
+<b><tt>dev</tt></b>-&gt;<b><tt>color_info.depth</tt></b> bits per pixel.)
+
+<dt><b><em>alpha</em></b>
+<dd>Specifies whether alpha channel information should be returned as the
+first component, the last component, or not at all. Note that for devices
+that have no alpha capability, the returned alpha values will be all 1s.
+</dl></blockquote>
+
+<p>
+The client may set more than one option in each of the above groups; the
+implementation will choose one of the selected options in each group to
+determine the actual form of the returned data, and will update
+<b><tt>params[].options</tt></b> to indicate the form. The returned
+<b><tt>params[].options</tt></b> will normally have only one option set per
+group.
+
+<p>
+For further details on <b><tt>params</tt></b>, see <a
+href="../src/gxgetbit.h">gxgetbit.h</a>. For further details on
+<b><tt>options</tt></b>, see <a href="../src/gxbitfmt.h">gxbitfmt.h</a>.
+
+<p>
+Define w = <b><tt>prect</tt></b>-&gt;q.x - <b><tt>prect</tt></b>-&gt;p.x, h
+= <b><tt>prect</tt></b>-&gt;q.y - <b><tt>prect</tt></b>-&gt;p.y. If the
+bits cannot be read back (for example, from a printer), return
+<b><tt>gs_error_unknownerror</tt></b>; if raster bytes is not enough space
+to hold <b><tt>offset_x</tt></b> + w pixels, or if the source rectangle
+goes outside the device dimensions (p.x &lt; 0 || p.y &lt; 0 || q.x &gt;
+<b><tt>dev</tt></b>-&gt;width || q.y &gt; <b><tt>dev</tt></b>-&gt;height),
+return <b><tt>gs_error_rangecheck</tt></b>; if any regions could not be
+read, return <b><tt>gs_error_ioerror</tt></b> if unpainted is
+<b><tt>NULL</tt></b>, otherwise the number of rectangles (see below);
+otherwise return 0.
+
+<p>
+The caller supplies a buffer of <b><tt>raster</tt></b>&nbsp;&times;&nbsp;h
+bytes starting at <b><tt>data[0]</tt></b> for the returned data in chunky
+format, or <b><em>N</em></b> buffers of
+<b><tt>raster</tt></b>&nbsp;&times;&nbsp;h bytes starting at
+<b><tt>data[0]</tt></b> through
+<b><tt>data[</tt></b><b><em>N-1</em></b><b><tt>]</tt></b> in planar format
+where <b><em>N</em></b> is the number of components or bits. The contents
+of the bits beyond the last valid bit in each scan line (as defined by w)
+are unpredictable. data need not be aligned in any way. If
+<b><tt>x_offset</tt></b> is non-zero, the bits before the first valid bit
+in each scan line are undefined. If the implementation returns pointers to
+the data, it stores them into <b><tt>data[0]</tt></b> or
+<b><tt>data[</tt></b><b><em>0..N-1</em></b><b><tt>]</tt></b>.
+
+<p>
+If not all the source data are available (for example, because the source
+was a partially obscured window and backing store was not available or not
+used), or if the rectangle does not fall completely within the device's
+coordinate system, any unread bits are undefined, and the value returned
+depends on whether unread is <b><tt>NULL</tt></b>. If unread is
+<b><tt>NULL</tt></b>, return <b><tt>gs_error_ioerror</tt></b>; in this case,
+some bits may or may not have been read. If unread is not
+<b><tt>NULL</tt></b>, allocate (using <b><tt>dev</tt></b>-&gt;memory) and
+fill in a list of rectangles that could not be read, store the pointer to
+the list in <b><tt>*unread</tt></b>, and return the number of rectangles; in
+this case, all bits not listed in the rectangle list have been read back
+properly. The list is not sorted in any particular order, but the
+rectangles do not overlap. Note that the rectangle list may cover a
+superset of the region actually obscured: for example, a lazy implementation
+could return a single rectangle that was the bounding box of the region.
+</dl>
+
+<dl>
+<dt><b><tt>int (*get_bits)(P4(gx_device&nbsp;*dev, int&nbsp;y,
+byte&nbsp;*data, byte&nbsp;**actual_data))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>Read scan line <b><tt>y</tt></b> of bits back from the device into the
+area starting at data. This call is functionally equivalent to
+
+<blockquote>
+<pre>(*get_bits_rectangle)
+ (dev, {0, y, dev-&gt;width, y+1},
+ {(GB_ALIGN_ANY | (GB_RETURN_COPY | GB_RETURN_POINTER) | GB_OFFSET_0 |
+ GB_RASTER_STANDARD | GB_FORMAT_CHUNKY | GB_COLORS_NATIVE |
+ GB_ALPHA_NONE),
+ {data}})</pre></blockquote>
+
+<p>
+with the returned value of
+<b><tt>params</tt></b>-&gt;<b><tt>data[0]</tt></b> stored in
+<b><tt>*actual_data</tt></b>, and will in fact be implemented this way if
+the device defines a <b><tt>get_bits_rectangle</tt></b> procedure and does
+not define one for <b><tt>get_bits</tt></b>. (If
+<b><tt>actual_data</tt></b> is <b><tt>NULL</tt></b>,
+<b><tt>GB_RETURN_POINTER</tt></b> is omitted from the options.)
+</dl>
+
+<h3><a name="Parameters"></a>Parameters</h3>
+
+<p>
+Devices may have an open-ended set of parameters, which are simply pairs
+consisting of a name and a value. The value may be of various types:
+integer (int or long), boolean, float, string, name, <b><tt>NULL</tt></b>,
+array of integer, array of float, or arrays or dictionaries of mixed types.
+For example, the <b><tt>Name</tt></b> of a device is a string; the
+<b><tt>Margins</tt></b> of a device is an array of two floats. See
+<a href="../src/gsparam.h">gsparam.h</a> for more details.
+
+<p>
+If a device has parameters other than the ones applicable to all devices
+(or, in the case of printer devices, all printer devices), it must provide
+<b><tt>get_params</tt></b> and <b><tt>put_params</tt></b> procedures. If
+your device has parameters beyond those of a straightforward display or
+printer, we strongly advise using the <b><tt>_get_params</tt></b> and
+<b><tt>_put_params</tt></b> procedures in an existing device (for example,
+<a href="../src/gdevcdj.c">gdevcdj.c</a> or <a
+href="../src/gdevbit.c">gdevbit.c</a>) as a model for your own code.
+
+<dl>
+<dt><b><tt>int (*get_params)(P2(gx_device&nbsp;*dev,
+gs_param_list&nbsp;*plist))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Read the parameters of the device into the parameter list at
+<b><tt>plist</tt></b>, using the <b><tt>param_write_*</tt></b>
+macros or procedures defined in <a href="../src/gsparam.h">gsparam.h</a>.
+</dl>
+
+<dl>
+<dt><b><tt>int (*get_hardware_params)(P2(gx_device&nbsp;*dev,
+gs_param_list&nbsp;*plist))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Read the hardware-related parameters of the device into the parameter
+list at plist. These are any parameters whose values are under control of
+external forces rather than the program -- for example, front panel
+switches, paper jam or tray empty sensors, etc. If a parameter involves
+significant delay or hardware action, the driver should only determine the
+value of the parameter if it is "requested" by the
+<b><tt>gs_param_list</tt></b> [<b><tt>param_requested</tt></b>(plist,
+<b><tt>key_name</tt></b>)]. This function may cause the asynchronous
+rendering pipeline (if enabled) to be drained, so it should be used
+sparingly.
+</dl>
+
+<dl>
+<dt><b><tt>int (*put_params)(P2(gx_device&nbsp;*dev,
+gs_param_list&nbsp;*plist))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Set the parameters of the device from the parameter list at
+<b><tt>plist</tt></b>, using the <b><tt>param_read_</tt></b>*
+macros/procedures defined in <a href="../src/gsparam.h">gsparam.h</a>. All
+<b><tt>put_params</tt></b> procedures must use a "two-phase commit"
+algorithm; see <a href="../src/gsparam.h">gsparam.h</a> for details.
+</dl>
+
+<h4><a name="Default_CRD_parameters"></a>Default color rendering
+dictionary (CRD) parameters</h4>
+
+<p>
+Drivers that want to provide one or more default CIE color rendering
+dictionaries (CRDs) can do so through <b><tt>get_params</tt></b>. To do
+this, they create the CRD in the usual way (normally using the
+<b><tt>gs_cie_render1_build</tt></b> and <b><tt>_initialize</tt></b>
+procedures defined in <a href="../src/gscrd.h">gscrd.h</a>), and then write
+it as a parameter using <b><tt>param_write_cie_render1</tt></b> defined in
+<a href="../src/gscrdp.h">gscrdp.h</a>. However, the TransformPQR procedure
+requires special handling. If the CRD uses a TransformPQR procedure
+different from the default (identity), the driver must do the following:
+
+<ul>
+<li>The TransformPQR element of the CRD must include a
+<b><tt>proc_name</tt></b>, and optionally <b><tt>proc_data</tt></b>. The
+<b><tt>proc_name</tt></b> is an arbitrary name chosen by the driver to
+designate the particular TransformPQR function. It must not be the same as
+any device parameter name; we strongly suggest it include the device name,
+for instance, "<b><tt>bitTPQRDefault</tt></b>".
+
+<li>For each such named TransformPQR procedure, the driver's
+<b><tt>get_param</tt></b> procedure must provide a parameter of the same
+name. The parameter value must be a string whose bytes are the actual
+procedure address.
+</ul>
+
+<p>
+For a complete example, see the <b><tt>bit_get_params</tt></b> procedure in
+<a href="../src/gdevbit.c">gdevbit.c</a>. Note that it is essential that
+the driver return the CRD or the procedure address only if specifically
+requested (<b><tt>param_requested(...)</tt></b> &gt; 0); otherwise, errors
+will occur.
+
+<h3><a name="External_fonts"></a>External fonts</h3>
+
+<p>
+Drivers may include the ability to display text. More precisely, they may
+supply a set of procedures that in turn implement some font and text
+handling capabilities, described in <a href="Xfonts.htm">a separate
+document</a>. The link between the two is the driver procedure that
+supplies the font and text procedures:
+
+<dl>
+<dt><b><tt>xfont_procs&nbsp;*(*get_xfont_procs)(P1(gx_device&nbsp;*dev))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Return a structure of procedures for handling external fonts and text
+display. A <b><tt>NULL</tt></b> value means that this driver doesn't
+provide this capability.
+</dl>
+
+<p>
+For technical reasons, a second procedure is also needed:
+
+<dl>
+<dt><b><tt>gx_device&nbsp;*(*get_xfont_device)(P1(gx_device&nbsp;*dev))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Return the device that implements <b><tt>get_xfont_procs</tt></b> in a
+non-default way for this device, if any. Except for certain special
+internal devices, this is always the device argument.
+</dl>
+
+<h3><a name="Page_devices"></a>Page devices</h3>
+
+<dl>
+<dt><b><tt>gx_device&nbsp;*(*get_page_device)(P1(gx_device&nbsp;*dev))</tt></b>
+<b><em>[OPTIONAL]</em></b>
+<dd>According to the Adobe specifications, some devices are "page devices"
+and some are not. This procedure returns <b><tt>NULL</tt></b> if the
+device is not a page device, or the device itself if it is a page device.
+In the case of forwarding devices, <b><tt>get_page_device</tt></b> returns
+the underlying page device (or <b><tt>NULL</tt></b> if the underlying
+device is not a page device).
+</dl>
+
+<h3><a name="Miscellaneous"></a>Miscellaneous</h3>
+
+<dl>
+<dt><b><tt>int (*get_band)(P3(gx_device&nbsp;*dev, int&nbsp;y,
+int&nbsp;*band_start))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>If the device is a band device, this procedure stores in
+<b><tt>*band_start</tt></b> the scan line (device Y coordinate) of the band
+that includes the given Y coordinate, and returns the number of scan lines
+in the band. If the device is not a band device, this procedure returns 0.
+The latter is the default implementation.
+</dl>
+
+<dl>
+<dt><b><tt>void (*get_clipping_box)(P2(gx_device&nbsp;*dev,
+gs_fixed_rect&nbsp;*pbox))</tt></b> <b><em>[OPTIONAL]</em></b>
+<dd>Stores in <b><tt>*pbox</tt></b> a rectangle that defines the device's
+clipping region. For all but a few specialized devices, this is
+<em>((0,0),(width,height))</em>.
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Fonts.htm b/Master/xemtex/doc/ghostscript/Fonts.htm
new file mode 100644
index 00000000000..add24f89d7f
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Fonts.htm
@@ -0,0 +1,1288 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Fonts and font facilities supplied with Ghostscript</title>
+<!-- $Id: Fonts.htm,v 1.22.2.13.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: fonts.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Fonts and font facilities supplied with Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#About">About Ghostscript fonts</a>
+<li><a href="#Free_fonts">Ghostscript's free fonts</a>
+<li><a href="#Other_fonts">Other free fonts</a>
+<ul>
+<li><a href="#Computer_Modern">Computer Modern Fontmap</a>
+<li><a href="#CID_Adobe">CJK CID-keyed fonts by Adobe</a>
+<li><a href="#CMap_Adobe">Adobe CMaps</a>
+<li><a href="#Chinese">Free Chinese (Hanzi) fonts</a>
+<li><a href="#Japanese">Free Japanese (Kanji) fonts</a>
+<li><a href="#Korean">Free Korean (Hangul and Hanja) fonts</a>
+<li><a href="#Cyrillic">Free Cyrillic fonts</a>
+<li><a href="#Partial_Unicode_fonts">(Partial) Unicode fonts</a>
+</ul>
+<li><a href="#Get_fonts">How Ghostscript gets fonts when it runs</a>
+<li><a href="#Platform_fonts">Platform fonts</a>
+<li><a href="#Add_fonts">Adding your own fonts</a>
+<ul>
+<li><a href="#Convert_BDF">Converting BDF fonts</a>
+</ul>
+<li><a href="#For_developers">For developers only</a>
+<ul>
+<li><a href="#Font_contents">Contents of fonts</a>
+<li><a href="#Precompiling">Precompiling fonts</a>
+<li><a href="#Short_identifiers">Precompiling fonts on platforms with identifier length limits</a>
+<li><a href="#Unique_IDs">Font names and unique IDs</a>
+<li><a href="#Codes">Codes used to make font file names</a>
+</ul>
+<li><a href="#Use_gs_fonts_with_X">Using Ghostscript fonts on X Windows displays</a>
+<ul>
+<li><a href="#Using_xset">Using <b><tt>xset</tt></b></a>
+<li><a href="#Font_permanent_installation">Permanent installation</a>
+<ul>
+<li><a href="#Configure_xfs">Configuring the <b><tt>xfs</tt></b> font server</a>
+<li><a href="#Configure_Xfree86">Xfree86 display servers</a>
+</ul>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="About"></a>About Ghostscript fonts</h2>
+
+<p>
+Ghostscript is distributed with two kinds of files related to fonts:
+
+<ul>
+<li>the fonts themselves in individual files, and
+<li>a file "<tt><b>Fontmap</b></tt>" that defines for
+Ghostscript which file represents which font.
+</ul>
+
+<p>
+Most of the font files supplied with Ghostscript have the extension
+<tt><b>.pfb</b></tt>, and a few have <tt><b>.pfa</b></tt> or
+<tt><b>.gsf</b></tt>. Each file defines one ordinary PostScript Type 1
+outline font which any PostScript language interpreter can use. Files with
+<tt><b>.pfa</b></tt> or <tt><b>.pfb</b></tt> extensions are also compatible
+with Adobe Type Manager (ATM) and with tools that don't include a full
+PostScript language interpreter; files with <tt><b>.gsf</b></tt> extension
+are incompatible with ATM and other tools. Ghostscript compiled with the
+"ttfont" option can also use TrueType fonts with the extension
+<tt><b>.ttf</b></tt>.
+
+<p><a name="Fontmap"></a>
+When Ghostscript needs a font, it must have some way to know where to look
+for it: that's the purpose of the <b><tt>Fontmap</tt></b> file, which
+associates the names of <em>fonts</em> such as <b><tt>/Times-Roman</tt></b>
+with the names of font <em>files</em>, such as
+<tt><b>n021003l.pfb</b></tt>. <b><tt>Fontmap</tt></b> can also create
+aliases for font names, so that for instance,
+<b><tt>/NimbusNo9L-Regu</tt></b> means the same font as
+<b><tt>/Times-Roman</tt></b>.
+
+<hr>
+
+<h2><a name="Free_fonts"></a>Ghostscript's free fonts</h2>
+
+<p>
+Two sets of free fonts are supplied for Ghostscript:
+
+<ul>
+<li>35 commercial-quality Type 1 basic PostScript fonts -- Times,
+Helvetica, Courier, Symbol, etc. -- contributed by URW++ Design and
+Development Incorporated, of Hamburg, Germany
+(<a href="http://www.urwpp.de/">http://www.urwpp.de/</a>). Fontmap names
+them all.
+
+<li>A miscellaneous set including Cyrillic, kana, and fonts derived from
+the free Hershey fonts, with improvements (such as adding accented
+characters) by Thomas Wolff. The Hershey-based fonts are quite different
+from traditional printer or display fonts; you can read about them in more
+detail in the <a href="Hershey.htm">documentation on Hershey fonts</a>.
+
+</ul>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=7 bgcolor="#CCCC00"><hr><font size="+1">Font packages</font><hr>
+<tr> <td><b>System</b>
+ <td>&nbsp;&nbsp;
+ <td><b>File name</b>
+ <td>&nbsp;&nbsp;
+ <td><b>Contents</b>
+ <td>&nbsp;&nbsp;
+ <td><b>Types</b>
+<tr> <td colspan=7><hr>
+<tr valign=top> <td>Unix
+ <td>&nbsp;
+ <td><b><tt>gnu-gs-fonts-std-#.##.tar.gz</tt></b>
+ <td>&nbsp;
+ <td>Basic
+ <td>&nbsp;
+ <td><b><tt>.afm</tt></b>,
+ <b><tt>.pfb</tt></b>,<br><b><tt>.pfm</tt></b> <tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td><b><tt>gnu-gs-fonts-other-#.##.tar.gz</tt></b>
+ <td>&nbsp;
+ <td>Miscellaneous
+ <td>&nbsp;
+ <td><b><tt>.afm</tt></b>,
+ <b><tt>.gsf</tt></b>,<br><b><tt>.pfa</tt></b>, <b><tt>.pfm</tt></b>
+
+</table>
+</blockquote>
+
+<p>
+"#.##" and "###" are the version number with and without punctuation. The
+fonts are not updated every release, so just use the most recent
+versions.
+Fonts can be found at
+
+<blockquote>
+<a href="ftp://ftp.gnu.org/gnu/ghostscript/"
+class="offsite">ftp://ftp.gnu.org/gnu/ghostscript/</a> (and mirrors)<br>
+</blockquote>
+
+<hr>
+
+<h2><a name="Other_fonts"></a>Other free fonts</h2>
+
+<h3><a name="Computer_Modern"></a>Computer Modern Fontmap</h3>
+
+<p>
+Don Knuth's Computer Modern fonts are popular, free, and widely available.
+A Fontmap appropriate for these fonts is available from:
+
+<blockquote>
+<a
+href="ftp://tug.ctan.org/tex-archive/fonts/cm/ps-type1/contrib/Fontmap.cmr"
+class="offsite">
+ftp://tug.ctan.org/tex-archive/fonts/cm/ps-type1/contrib/Fontmap.cmr</a>
+</blockquote>
+
+<p>
+or from other <a href="New-user.htm#CTAN">CTAN</a> sites.
+
+<h3><a name="Chinese"></a>Free Chinese (Hanzi) fonts</h3>
+
+<p>
+A free PostScript font for Traditional Chinese "KaiSu" in
+<a href="CJK.htm#About_OCF_fonts">OCF</a> format,
+originally provided courtesy of Jackson Technology,
+Ltd., Taiwan under the GPL and now distributed by the Taiwan NeXT User
+Group, is available from:
+
+<blockquote>
+<a
+href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/hanzi/"
+class="offsite">
+ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/hanzi/
+</a>
+</blockquote>
+
+<h3><a name="Japanese"></a>Free Japanese (Kanji) fonts</h3>
+
+<p>
+Mr. Norio Katayama has done some work to make Ghostscript work well with
+Kanji fonts. An easy-to-install Kanji font for Ghostscript, with
+installation instructions, is at
+
+<blockquote>
+<a
+href="http://www.enel.ucalgary.ca/People/far/howto/gs-ttf.html"
+class="offsite">
+http://www.enel.ucalgary.ca/People/far/howto/gs-ttf.html
+</a>
+</blockquote>
+
+<p>
+The same site has patches to make Ghostscript work with Japanese OCF fonts via VFlib,
+with documentation in both English and Japanese:
+
+<blockquote>
+<a
+href="http://www.enel.ucalgary.ca/People/far/howto/gs-vflib.html"
+class="offsite">
+http://www.enel.ucalgary.ca/People/far/howto/gs-vflib.html
+</a>
+</blockquote>
+
+<p>
+Here are some other resources in Japanese relating to VFlib and using
+Ghostscript with Japanese OCF fonts:
+
+<blockquote><dl compact>
+<dt><a href="http://kakugawa.aial.hiroshima-u.ac.jp/~kakugawa/Hacks/"
+class="offsite">http://kakugawa.aial.hiroshima-u.ac.jp/~kakugawa/Hacks/</a>
+<dt><a href="http://itohws03.ee.noda.sut.ac.jp/~matsuda/VFlib-FT/"
+class="offsite">http://itohws03.ee.noda.sut.ac.jp/~matsuda/VFlib-FT/</a>
+<dd>Author &lt;<a href="mailto:matsuda@itohws01.ee.noda.sut.ac.jp">matsuda@itohws01.ee.noda.sut.ac.jp</a>&gt;
+</dl></blockquote>
+
+<h3><a name="Korean"></a>Free Korean (Hangul and Hanja) fonts</h3>
+
+<p>
+Hwan Design Inc. created Hangul TrueType fonts (including Hanja)
+and released under license similar to BSD.
+These fonts can be used as <a href="CJK.htm#About_CID_keyed_fonts">
+CID-keyed font</a> via on-the-fly CIDFontType2 conversion. Refer
+<a href="CJK.htm">CJK.htm</a>
+
+<blockquote>
+<a href="ftp://ftp.mizi.com/pub/baekmuk/"
+class="offsite">
+ftp://ftp.mizi.com/pub/baekmuk/</a>
+</blockquote>
+
+
+<h3><a name="Cyrillic"></a>Free Cyrillic fonts</h3>
+
+<p>
+N. Glonty and A. Samarin created in 1989 a Cyrillic extension of TeX's
+"Computer Modern" fonts, now freely available through the
+<a href="New-user.htm#CTAN">Comprehensive TeX Archive Network</a> (CTAN),
+for instance at
+
+<blockquote>
+<a
+href="ftp://ctan.tug.org/tex-archive/fonts/cyrillic/cmcyr/"
+class="offsite">
+ftp://ctan.tug.org/tex-archive/fonts/cyrillic/cmcyr/
+</a>
+</blockquote>
+
+<hr>
+
+<h3><a name="Partial_Unicode_fonts"></a>(Partial) Unicode fonts</h3>
+
+<p>
+George W. Wilson is distributing some free partial Unicode fonts he created.
+These fonts currently lack Arabic and CJK characters, but they include a
+very large subset of the remaining Unicode set. They are available in both
+Type 1 and TrueType formats. See
+
+<blockquote>
+<a href="http://bibliofile.mc.duke.edu/gww/fonts/Unicode.html"
+class="offsite">http://bibliofile.mc.duke.edu/gww/fonts/Unicode.html</a>
+</blockquote>
+
+<h2><a name="Get_fonts"></a>How Ghostscript gets fonts when it runs</h2>
+
+<p>
+Fonts occupy about 50KB each, so Ghostscript doesn't load them all
+automatically when it runs. Instead, as part of normal initialization
+Ghostscript runs a file <tt><b>gs_fonts.ps</b></tt>, which arranges to load
+fonts on demand using information from the font map. To preload all of the
+known fonts, invoke the procedure
+
+<blockquote><tt><b>
+loadallfonts
+</b></tt></blockquote>
+
+<p>
+The file <tt><b>prfont.ps</b></tt> contains code to print a sample page of
+a font. Load this program by including it in the <tt><b>gs</b></tt>
+command line or by invoking
+
+<blockquote><tt><b>
+(prfont.ps) run
+</b></tt></blockquote>
+
+<p>
+Then to produce a sampler of a particular font XYZ, invoke
+
+<blockquote><tt><b>
+/XYZ DoFont
+</b></tt></blockquote>
+
+<p>For example,
+
+<blockquote><tt><b>
+/Times-Roman DoFont
+</b></tt></blockquote>
+
+<p>
+For more information about how Ghostscript loads fonts during execution,
+see <a href="Use.htm#Font_lookup">here</a>.
+
+<hr>
+
+<h2><a name="Platform_fonts"></a>Platform fonts</h2>
+
+<p>
+Ghostscript displays text on screen using whatever font technology is
+provided by the system on which it runs, by calling the system's API to
+display text. On platforms with X Windows, this is X Windows; on MS
+Windows it may be TrueType or ATM; Ghostscript neither knows nor cares.
+
+<p>
+The PostScript language specifies that fonts are data structures with
+particular contents (for instance, they include a bounding box for the
+font, an Encoding vector to specify the character set, etc.), and it is
+common for PostScript files to use this fact; also, characters can be used
+as clipping regions, and can be arbitrarily algorithmically rotated,
+skewed, expanded or condensed, etc. Most of this information is available
+in some form from the underlying graphics system, but one crucial piece is
+not: the actual scalable outlines of the characters, which Ghostscript
+needs in order to implement both clipping with character shapes and
+arbitrarily transformed characters. Consequently
+
+<blockquote>
+Ghostscript needs the scalable outlines of any font mentioned in a
+document, and loads them from the disk (<tt><b>.pfa</b></tt>,
+<tt><b>.pfb</b></tt>, or <tt><b>.gsf</b></tt>
+file) in the usual way, even if it uses the platform's font machinery to
+display the characters. In other words, Ghostscript must still be able to
+find its font files.
+</blockquote>
+
+<p>
+To make matters worse, platforms use different names for their standard
+fonts. For example, the Times Roman font, for which PostScript files use
+the name "<b><tt>Times-Roman</tt></b>", may be known as
+"<b><tt>Times-Roman</tt></b>", "<b><tt>Times&nbsp;Roman</tt></b>",
+"<b><tt>Tms&nbsp;Rmn</tt></b>",
+"<b><tt>Times&nbsp;New&nbsp;Roman</tt></b>", or
+"<b><tt>TimesNewRoman</tt></b>". The name may even be completely
+different: the usual Helvetica-equivalent TrueType font is called
+"<b><tt>Arial</tt></b>". It is possible to deal with this situation by
+introducing aliases in Fontmap, but there are two reasons why Ghostscript
+does not currently do this:
+
+<ol>
+<li>Methods of naming in different systems are so unstandardized that there
+seems to be no small set of alternative names likely to cover most
+situations. All five of the names above for Times Roman have been seen
+under Windows and OS/2, depending on the version of the system, whether it
+uses TrueType or ATM, and other unknown factors.
+
+<li>Each alias takes up space at run time. If each of the standard fonts
+has three additional aliases, this might amount to 50KB of wasted space,
+which may be a lot on some smaller systems.
+</ol>
+
+<p>
+If you don't seem to be getting nice characters on the screen under MS
+Windows, you can try adding aliases to Fontmap, according to the
+documentation you'll find in there.
+
+<hr>
+
+<h2><a name="Add_fonts"></a>Adding your own fonts</h2>
+
+<p>
+Ghostscript can use any Type 0, 1, 3, 4, or 42 font acceptable to
+other PostScript language interpreters or to ATM, including MultiMaster
+fonts. Beginning with release 4.0, Ghostscript can also use TrueType fonts
+if it was compiled with the "ttfont" option.
+
+<p>
+To add fonts of your own, you must edit Fontmap to include at the end an
+entry for your new font; the format for entries is documented
+in Fontmap itself. Since later entries in Fontmap override earlier
+entries, a font you add at the end supersedes any corresponding fonts supplied
+with Ghostscript and defined earlier in the file.
+In the PC world, Type 1 fonts are customarily given names ending in
+<tt><b>.PFA</b></tt> or <tt><b>.PFB</b></tt>. Ghostscript can use these
+directly: you just need to make the entry in Fontmap.
+To add CID-keyed fonts, refer <a href="CJK.htm">CJK.htm</a>.
+
+<p>
+If you want to use with Ghostscript a commercial fonts
+(fonts sold as individual package,
+ Type 1 and CID fonts bundled to Adobe products,
+ TrueType fonts bundled to Microsoft Windows and Apple Macintosh, etc),
+please read carefully the license that accompanies the font to
+satisfy yourself that you may do so legally.
+
+The license of bundled fonts are usually quite varied:
+browsing-only, printable, and embeddable.
+The license of the system and the license of fonts on
+the system must be descriminated.
+Even if you have officially licensed system,
+it does not mean you can use bundled fonts as you want.
+In addition to, TrueType and OpenType format have internal
+flags to restrict embedding, but, unfortunately,
+sometimes they does not reflect the license
+correctly.
+You have to check the license of EACH fonts which you want to
+use with Ghostscript.
+
+We take no responsibility for any possible violations of such licenses.
+
+
+<h3><a name="Convert_BDF"></a>Converting BDF fonts</h3>
+
+<p>
+Ghostscript provides a way to construct a (low-quality) Type 1 font from a
+bitmap font in the BDF format popular in the Unix world. The shell script
+<tt><b>bdftops</b></tt> (Unix) or the command file
+<tt><b>bdftops.bat</b></tt> (DOS) converts a BDF file to a
+scalable outline using <tt><b>bdftops.ps</b></tt> . Run the
+shell command
+
+<blockquote><tt><b>
+bdftops&nbsp;BDF_filename&nbsp;[AFM_file1_name&nbsp;...]&nbsp;gsf_filename&nbsp;fontname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UniqueID&nbsp;[XUID]&nbsp;[encodingname]
+</b></tt></blockquote>
+
+<p>
+The arguments have these meanings:
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><tt><b>BDF_filename</b></tt>
+ <td>&nbsp;&nbsp;
+ <td>Input bitmap file in BDF format
+ <td>&nbsp;&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td><tt><b>AFM_file1_name</b></tt>
+ <td>&nbsp;
+ <td>AFM files giving metrics
+ <td>&nbsp;
+ <td>(Optional)
+<tr valign=top> <td><tt><b>gsf_filename</b></tt>
+ <td>&nbsp;
+ <td>Output file
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td><tt><b>fontname</b></tt>
+ <td>&nbsp;
+ <td>Name of the font
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td><tt><b>UniqueID</b></tt>
+ <td>&nbsp;
+ <td>UniqueID (<a href="#Unique_IDs">as described below</a>)
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td><tt><b>XUID</b></tt>
+ <td>&nbsp;
+ <td>XUID, in the form <tt><b>n1.n2.n3...</b></tt> (<a href="#Unique_IDs">as described below</a>)
+ <td>&nbsp;
+ <td>(Optional)
+<tr valign=top> <td><tt><b>encodingname</b></tt>
+ <td>&nbsp;
+ <td>"StandardEncoding" (the default), "ISOLatin1Encoding",<br>"SymbolEncoding", "DingbatsEncoding"
+ <td>&nbsp;
+ <td>(Optional)
+</table></blockquote>
+
+<p>
+For instance
+
+<blockquote><tt><b>
+bdftops&nbsp;pzdr.bdf&nbsp;ZapfDingbats.afm&nbsp;pzdr.gsf&nbsp;ZapfDingbats&nbsp;4100000&nbsp;1000000.1.41
+</b></tt></blockquote>
+
+<p>
+Then make an entry in Fontmap for the <tt><b>.gsf</b></tt>
+file (<tt><b>pzdr.gsf</b></tt> in the example) as
+<a href="#Add_fonts">described above</a>.
+
+<hr>
+
+<h2><a name="For_developers"></a>For developers only</h2>
+
+<p>
+The rest of this document is very unlikely to be of value to ordinary
+users.
+
+<h3><a name="Font_contents"></a>Contents of fonts</h3>
+
+<p>
+As noted above, Ghostscript accepts fonts in the same formats as PostScript
+interpreters. Type 0, 1, and 3 fonts are documented in the PostScript
+Language Reference Manual (Second Edition); detailed documentation for Type
+1 fonts appears in a separate Adobe book. Type 2 (compressed format) fonts
+are documented in separate Adobe publications. Type 4 fonts are not
+documented anywhere; they are essentially Type 1 fonts with a BuildChar or
+BuildGlyph procedure. Types 9, 10, and 11 (CIDFontType 0, 1, and 2) and
+Type 32 (downloaded bitmap) fonts are documented in Adobe supplements.
+Type 42 (encapsulated TrueType) fonts are documented in an Adobe
+supplement; the TrueType format is documented in publications available
+from Apple and Microsoft. Ghostscript does not support Type 14 (Chameleon)
+fonts, which use a proprietary Adobe format.
+
+<h3><a name="Precompiling"></a>Precompiling fonts</h3>
+
+<p>
+You can precompile -- convert -- any Type 1 font into C, then compile and
+build it into the Ghostscript executable. (Type 1 fonts include any font
+whose name ends with <tt><b>.pfa</b></tt> or
+<tt><b>.pfb</b></tt>, and it also includes all the
+Ghostscript <tt><b>.gsf</b></tt> fonts except the Hershey
+fonts.) This has no effect on rendering speed, but it eliminates the time
+to load the font dynamically, which may make a big improvement in total
+rendering time, especially for multi-page documents. It also reduces the
+number of auxiliary files required at run time. Fonts precompiled and
+built into Ghostscript this way need not appear in Fontmap, although if
+they do appear there, no harm is done.
+
+<p><a name="font2c"></a> The utility for precompiling fonts is named
+<tt><b>font2c</b></tt>. Note that since
+<tt><b>font2c</b></tt> uses the PostScript language program
+<tt><b>font2c.ps</b></tt>, Ghostscript must already be
+available to run it, and Fontmap must contain entries for the fonts you
+want to compile. For example, to precompile the Times-Italic font,
+
+<blockquote><tt><b>
+font2c Times-Italic ptmri.c
+</b></tt></blockquote>
+
+<p>
+The first argument ("<b><tt>Times-Italic</tt></b>" above) is the font's
+name and the second ("<b><tt>ptmri.c</tt></b>") is the name of the
+resulting C file. You can use any file name you want, as long as it ends
+in "<tt><b>.c</b></tt>". It needn't be limited to eight characters unless
+your operating system requires this. If "<b><tt>XYZ.gsf</tt></b>" or
+"<b><tt>XYZ.pfa</tt></b>" is the font file's name in Fontmap,
+"<b><tt>XYZ.c</tt></b>" is a good choice for the C file.
+
+<p>
+Under VMS, or other systems whose the C compilers limit the length of
+identifiers, you must do something slightly more complicated; for that see
+the section on <a href="#Short_identifiers">short identifiers in C</a>. On
+VMS also, you must quote the font name ("{font name}") to preserve the
+name's mixed upper and lower case. For VMS environments in general see
+<a href="Make.htm#VMS">the VMS directions</a> in the documentation on
+building Ghostscript, and ignore the rest of this section.
+
+<p>
+Note that fonts are not supplied with Ghostscript in precompiled form, since
+those files are quite large and can easily be recreated using <a
+href="#font2c"><tt><b>font2c</b></tt></a>. There is a makefile target to
+run <tt><b>font2c</b></tt> on all the fonts supplied with Ghostscript.
+Invoke it with
+
+<blockquote><b><tt>
+make fonts_standard_c
+</tt></b></blockquote>
+
+<p>Besides running <tt><b>font2c</b></tt>, you must compile the fonts and
+link them into the executable. To do this, add the compiled fonts feature
+to your platform-specific makefile. See the
+<a href="Make.htm#Makefile_overview">overview of makefiles</a> in the
+documentation on building Ghostscript for the list of makefiles for each
+platform. Find the definition of the <tt><b>FEATURE_DEVS</b></tt> macro in
+the makefile, which looks something like this:
+
+<blockquote><tt><b>
+FEATURE_DEVS=$(PSD)psl3.dev&nbsp;$(PSD)pdf.dev&nbsp;$(PSD)dpsnext.dev&nbsp;$(PSD)pipe.dev
+</b></tt></blockquote>
+
+<p>
+and add "ccfonts.dev":
+
+<blockquote><tt><b>
+FEATURE_DEVS=$(PSD)psl3.dev&nbsp;$(PSD)pdf.dev&nbsp;$(PSD)dpsnext.dev&nbsp;$(PSD)pipe.dev&nbsp;$(PSD)ccfonts.dev
+</b></tt></blockquote>
+
+<p>
+Next you must add the specific fonts to <tt><b>int.mak</b></tt>, the
+platform-independent makefile for the interpreter. This makefile already
+has rules for the standard fonts supplied with Ghostscript, so if you just
+want to compile the standard fonts, you needn't do anything else. Now we
+describe how to compile other fonts into the executable, such as the Utopia
+or Kana fonts, or your own fonts.
+
+<p>
+Suppose you want to compile the Kana fonts into the executable. First pick
+one of <b><tt>ccfonts10</tt></b> through <b><tt>ccfonts15</tt></b> as the
+place you will do this, say <b><tt>ccfonts10</tt></b>. Add your compiled
+font file names, for instance
+
+<blockquote><tt><b>
+ccfonts10_=$(CFOBJ)fhirw.$(OBJ)
+</b></tt></blockquote>
+
+<p>
+(Note the underscore "_".) If this makes the line too long, use another
+line of the same form, for instance,
+
+<blockquote><tt><b>
+ccfonts11_=$(CFOBJ)fkarw.$(OBJ)
+</b></tt></blockquote>
+
+<p>
+Just below the <b><tt>ccfonts10_=</tt></b> line is a line
+
+<blockquote><tt><b>
+ccfonts10=
+</b></tt></blockquote>
+
+<p>
+(Note no underscore.) Add your own fonts to the end of this line, replacing
+dashes ("-") with underscores ("_") in the font names. For instance:
+
+<blockquote><tt><b>
+ccfonts10=Calligraphic_Hiragana
+</b></tt></blockquote>
+
+<p>
+Again, if a line becomes too long, add another line of the same form, for
+instance,
+
+<blockquote><tt><b>
+ccfonts10=Calligraphic_Hiragana<br>
+ccfonts11=Calligraphic_Katakana
+</b></tt></blockquote>
+
+<p>
+After all the lines of this form, add a pair of lines to compile each font,
+separating these entries from the "ccfonts*" lines and from each other with
+a blank line. In our example this becomes
+
+<blockquote>
+<pre>$(CFOBJ)fhirw.$(OBJ): $(CFGEN)fhirw.c $(CCFONT)
+ $(CFCC) $(CFO_)fhirw.$(OBJ) $(C_) $(CFGEN)fhirw.c
+
+$(CFOBJ)fkarw.$(OBJ): $(CFGEN)fkarw.c $(CCFONT)
+ $(CFCC) $(CFO_)fkarw.$(OBJ) $(C_) $(CFGEN)fkarw.c
+</pre></blockquote>
+
+<p>
+Finally, run <tt><b>make</b></tt> to build an executable that includes the
+fonts you added. They are present in <b><tt>FontDirectory</tt></b> when
+Ghostscript starts up.
+
+<h3><a name="Short_identifiers"></a>Precompiling fonts on platforms with identifier length limits</h3>
+
+<p>
+On some platforms the C compiler or linker limits the number of significant
+characters usable in an identifier. On such platforms, you must do a
+little extra work.
+
+<p>
+Let <em><b>N</b></em> be the maximum number of significant characters in an
+identifier (typically 31). For each font whose name is longer than
+<em><b>N</b></em>-5 characters, pick an arbitrary identifier that we will
+call the "short name". This can be any string you want, as long as it
+contains only letters, digits, and underscores; is no longer than
+<em><b>N</b></em>-5 characters; and is different from all other font names
+and short names. A good choice for this is the name of the C file. There
+is no harm in doing this for fonts with names shorter than
+<em><b>N</b></em>-5 characters, but it's unnecessary.
+
+<p>
+You must do two different things for fonts that require a short name.
+
+<ol>
+<li>You must supply the short name as a third argument to
+<tt><b>font2c</b></tt>. For example, to compile
+<b><tt>NewCenturySchlbk-BoldItalic</tt></b> using the short name
+<b><tt>pncbi</tt></b>,
+
+<blockquote><tt><b>
+font2c&nbsp;NewCenturySchlbk-BoldItalic&nbsp;pncbi.c&nbsp;pncbi
+</b></tt></blockquote>
+
+<li>
+Then when you add the font name to the definition of one of the ccfonts*
+macros in the makefile, use the short name, not the actual font name, for
+instance,
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td>Use
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td><tt><b>ccfonts12=pncbi</b></tt>
+<tr> <td>Rather than
+ <td>&nbsp;
+ <td><tt><b>ccfonts12=NewCenturySchlbk_BoldItalic</b></tt>
+</table></blockquote>
+</ol>
+
+<p>
+Everything else is as described above. This procedure doesn't change the
+name of the font in Fontmap or as seen from within Ghostscript; it just
+works around a limitation of some older compilers.
+
+<hr>
+
+<h3><a name="Unique_IDs"></a>Font names and unique IDs</h3>
+
+<p>
+If you create your own fonts and will use them only within your own
+organization, you should use <tt><b>UniqueID</b></tt> values between
+4000000 and 4999999, coded like this (see the <a href="#Codes">tables of
+codes</a> for font file names below):
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Coding of UniqueID "<tt><b>4TTWVE0</b></tt>"</font><hr>
+<tr> <td><tt><b>TT</b></tt>
+ <td>&nbsp;&nbsp;
+ <td><a href="#Typeface">Typeface</a>
+ <td>&nbsp;&nbsp;
+ <td>two-digit identifier
+<tr> <td><tt><b>W</b></tt>
+ <td>&nbsp;
+ <td><a href="#Weight">Weight</a>
+ <td>&nbsp;
+ <td>normal, bold, etc.
+<tr> <td><tt><b>V</b></tt>
+ <td>&nbsp;
+ <td><a href="#Variant">Variant</a>
+ <td>&nbsp;
+ <td>normal, italic, etc.
+<tr> <td><tt><b>E</b></tt>
+ <td>&nbsp;
+ <td><a href="#Expansion">Expansion</a>
+ <td>&nbsp;
+ <td>normal, condensed, etc.
+</table></blockquote>
+
+<p>
+This scheme will not work forever: as soon there are more than 99
+typefaces, or more than 9 weights or variants, we will have to do something
+else. But it suffices for the near future.
+
+<p>
+If you plan to distribute fonts, ask Adobe to assign you some UniqueIDs and
+also an <tt><b>XUID</b></tt> for your organization. Contact
+
+<blockquote><address>
+Unique ID Coordinator<br>
+Adobe Developers Association<br>
+Adobe Systems, Inc.<br>
+345 Park Avenue<br>
+San Jose, CA 95110-2704<br>
++1-408-536-9000 telephone (ADA)<br>
++1-408-536-6883 fax<br>
+<a href="mailto:fontdev-person@adobe.com">fontdev-person@adobe.com</a><br>
+</address></blockquote>
+
+<p>
+The XUID is a Level 2 PostScript feature that serves the same function as
+the UniqueID, but is not limited to a single 24-bit integer. The
+<tt><b>bdftops</b></tt> program creates XUIDs of the form
+"<tt><b>[-X-&nbsp;0&nbsp;-U-]</b></tt>" where "<tt><b>-X-</b></tt>" is the
+organization XUID and "<tt><b>-U-</b></tt>" is the UniqueID. (Aladdin
+Enterprises' organization XUID, which appears in a few places in various
+font-related files distributed with Ghostscript, is 107; do not use this for
+your own fonts that you distribute.)
+
+<p>
+Because Ghostscript runs on many different systems, including DOS, the
+names of font files can be no longer than 8 characters. We therefore
+construct a font's filename <tt><b>FTTWVVVE.gsf</b></tt>
+similarly to the construction for temporary UniqueIDs.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Coding of font file name "<tt><b>FTTWVVVE.gsf</b></tt>"</font><hr>
+<tr> <td><tt><b>F</b></tt>
+ <td>&nbsp;&nbsp;
+ <td><a href="#Foundries">Foundry</a>
+ <td>&nbsp;&nbsp;
+ <td>&nbsp;
+<tr> <td><tt><b>TT</b></tt>
+ <td>&nbsp;
+ <td><a href="#Typeface">Typeface</a>
+ <td>&nbsp;
+ <td>two-digit identifier
+<tr> <td><tt><b>W</b></tt>
+ <td>&nbsp;
+ <td><a href="#Weight">Weight</a>
+ <td>&nbsp;
+ <td>normal, bold, etc.
+<tr> <td><tt><b>V</b></tt>
+ <td>&nbsp;
+ <td><a href="#Variant">Variant</a>
+ <td>&nbsp;
+ <td>normal, italic, etc.
+<tr> <td><tt><b>E</b></tt>
+ <td>&nbsp;
+ <td><a href="#Expansion">Expansion</a>
+ <td>&nbsp;
+ <td>normal, condensed, etc.
+</table></blockquote>
+
+<p>
+Since a font can have multiple variants (for example, Lucida Regular Sans
+Typewriter Italic) we allocate three letters to that; if a font has four
+variants, you're on your own. If a font does have multiple variants, it's
+best to add the expansion letter "<b><tt>r</tt></b>" to make clear which
+letters are variants and which the expansion. This scheme is very close to
+the one proposed in "Filenames for fonts", published in the first 1990
+issue of <em>TUGboat</em> (the journal of the TeX Users Group).
+
+<h3><a name="Codes"></a>Codes used to make font file names</h3>
+
+<p>
+In the following tables we make no attempt to be exhaustive: instead we
+have simply allocated entries for those things that we needed for the fonts
+that we are actually distributing.
+
+<p>
+<a name="Foundries"></a>
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Font foundry codes</font><hr>
+<tr> <th>ID
+ <th>&nbsp;&nbsp;
+ <th align=left>Foundry
+<tr> <td colspan=3><hr>
+<tr> <td><tt><b>b</b></tt>
+ <td>&nbsp;&nbsp;
+ <td>Bitstream
+<tr> <td><tt><b>f</b></tt>
+ <td>&nbsp;
+ <td>Freely distributable and public-domain
+<tr> <td><tt><b>hr</b></tt>
+ <td>&nbsp;
+ <td>Hershey
+<tr> <td><tt><b>n</b></tt>
+ <td>&nbsp;
+ <td>IBM
+<tr> <td><tt><b>p</b></tt>
+ <td>&nbsp;
+ <td>Adobe ("p" for PostScript)
+<tr> <td><tt><b>u</b></tt>
+ <td>&nbsp;
+ <td>URW[++]
+</table></blockquote>
+
+<p>
+<a name="Typeface"></a>
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=7 bgcolor="#CCCC00"><hr><font size="+1">Typeface codes</font><hr>
+<tr valign=bottom> <th>ID
+ <td>&nbsp;&nbsp;
+ <th align=left>Name
+ <td>&nbsp;&nbsp;
+ <th align=left>Filename<br>prefix
+ <td>&nbsp;&nbsp;
+ <th align=left>Source
+<tr> <td colspan=7><hr>
+<tr> <td><tt><b>08</b></tt>
+ <td>&nbsp;
+ <td>Avant Garde
+ <td>&nbsp;
+ <td><tt><b>pag</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>11</b></tt>
+ <td>&nbsp;
+ <td>Bookman
+ <td>&nbsp;
+ <td><tt><b>pbk</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>01</b></tt>
+ <td>&nbsp;
+ <td>CharterBT
+ <td>&nbsp;
+ <td><tt><b>bch</b></tt>
+ <td>&nbsp;
+ <td>Bitstream
+<tr> <td><tt><b>02</b></tt>
+ <td>&nbsp;
+ <td>Courier
+ <td>&nbsp;
+ <td><tt><b>ncr</b></tt>
+ <td>&nbsp;
+ <td>IBM
+<tr> <td><tt><b>03</b></tt>
+ <td>&nbsp;
+ <td>Helvetica
+ <td>&nbsp;
+ <td><tt><b>phv</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>04</b></tt>
+ <td>&nbsp;
+ <td>New Century Schoolbook
+ <td>&nbsp;
+ <td><tt><b>pnc</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>09</b></tt>
+ <td>&nbsp;
+ <td>Palatino
+ <td>&nbsp;
+ <td><tt><b>ppl</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>05</b></tt>
+ <td>&nbsp;
+ <td>Symbol
+ <td>&nbsp;
+ <td><tt><b>psy</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>06</b></tt>
+ <td>&nbsp;
+ <td>Times
+ <td>&nbsp;
+ <td><tt><b>ptm</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td>--
+ <td>&nbsp;
+ <td>Utopia
+ <td>&nbsp;
+ <td><tt><b>put</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>07</b></tt>
+ <td>&nbsp;
+ <td>Zapf Chancery
+ <td>&nbsp;
+ <td><tt><b>zc</b></tt>
+ <td>&nbsp;
+ <td>public domain
+<tr> <td><tt><b>10</b></tt>
+ <td>&nbsp;
+ <td>Zapf Dingbats
+ <td>&nbsp;
+ <td><tt><b>pzd</b></tt>
+ <td>&nbsp;
+ <td>Adobe
+<tr> <td><tt><b>12</b></tt>
+ <td>&nbsp;
+ <td>public domain Cyrillic
+ <td>&nbsp;
+ <td><tt><b>fcy</b></tt>
+ <td>&nbsp;
+ <td>public domain
+<tr> <td><tt><b>13</b></tt>
+ <td>&nbsp;
+ <td>Kevin Hartig Hiragana
+ <td>&nbsp;
+ <td><tt><b>fhi</b></tt>
+ <td>&nbsp;
+ <td>shareware
+<tr> <td><tt><b>14</b></tt>
+ <td>&nbsp;
+ <td>Kevin Hartig Katakana
+ <td>&nbsp;
+ <td><tt><b>fka</b></tt>
+ <td>&nbsp;
+ <td>shareware
+<tr> <td><tt><b>90</b></tt>
+ <td>&nbsp;
+ <td>Hershey Gothic English
+ <td>&nbsp;
+ <td><tt><b>hrge</b></tt>
+ <td>&nbsp;
+ <td>freeware
+<tr> <td><tt><b>91</b></tt>
+ <td>&nbsp;
+ <td>Hershey Gothic Italian
+ <td>&nbsp;
+ <td><tt><b>hrit</b></tt>
+ <td>&nbsp;
+ <td>freeware
+<tr> <td><tt><b>92</b></tt>
+ <td>&nbsp;
+ <td>Hershey Gothic German
+ <td>&nbsp;
+ <td><tt><b>hrgr</b></tt>
+ <td>&nbsp;
+ <td>freeware
+<tr> <td><tt><b>93</b></tt>
+ <td>&nbsp;
+ <td>Hershey Greek
+ <td>&nbsp;
+ <td><tt><b>hrgk</b></tt>
+ <td>&nbsp;
+ <td>freeware
+<tr> <td><tt><b>94</b></tt>
+ <td>&nbsp;
+ <td>Hershey Plain
+ <td>&nbsp;
+ <td><tt><b>hrpl</b></tt>
+ <td>&nbsp;
+ <td>freeware
+<tr> <td><tt><b>95</b></tt>
+ <td>&nbsp;
+ <td>Hershey Script
+ <td>&nbsp;
+ <td><tt><b>hrsc</b></tt>
+ <td>&nbsp;
+ <td>freeware
+<tr> <td><tt><b>96</b></tt>
+ <td>&nbsp;
+ <td>Hershey Symbol
+ <td>&nbsp;
+ <td><tt><b>hrsy</b></tt>
+ <td>&nbsp;
+ <td>freeware
+</table></blockquote>
+
+<p>
+<a name="Weight"></a>
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Font weight codes</font><hr>
+<tr> <th>ID
+ <td>&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;
+ <th align=left>Filename
+<tr> <td colspan=5><hr>
+<tr> <td><tt><b>0</b></tt>
+ <td>&nbsp;&nbsp;
+ <td>normal
+ <td>&nbsp;&nbsp;
+ <td><tt><b>r</b></tt>
+<tr> <td><tt><b>1</b></tt>
+ <td>&nbsp;
+ <td>bold
+ <td>&nbsp;
+ <td><tt><b>b</b></tt>
+<tr> <td><tt><b>2</b></tt>
+ <td>&nbsp;
+ <td>book
+ <td>&nbsp;
+ <td><tt><b>k</b></tt>
+<tr> <td><tt><b>3</b></tt>
+ <td>&nbsp;
+ <td>demi
+ <td>&nbsp;
+ <td><tt><b>d</b></tt>
+<tr> <td><tt><b>4</b></tt>
+ <td>&nbsp;
+ <td>light
+ <td>&nbsp;
+ <td><tt><b>l</b></tt>
+<tr> <td>&nbsp;
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1"><a name="Variant"></a>Font variants</font><hr>
+<tr> <th>ID
+ <td>&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;
+ <th align=left>Filename
+<tr> <td colspan=5><hr>
+<tr> <td><tt><b>0</b></tt>
+ <td>&nbsp;&nbsp;
+ <td>normal
+ <td>&nbsp;&nbsp;
+ <td><tt><b>r</b></tt> (omitted when weight is normal)
+<tr> <td><tt><b>1</b></tt>
+ <td>&nbsp;
+ <td>italic
+ <td>&nbsp;
+ <td><tt><b>i</b></tt>
+<tr> <td><tt><b>2</b></tt>
+ <td>&nbsp;
+ <td>oblique
+ <td>&nbsp;
+ <td><tt><b>o</b></tt>
+<tr valign=top> <td><tt><b>3</b></tt>
+ <td>&nbsp;
+ <td>script, handwritten, swash
+ <td>&nbsp;
+ <td><tt><b>w</b></tt>
+<tr> <td>&nbsp;
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1"><a name="Expansion"></a>Expansion</font><hr>
+<tr> <th>ID
+ <td>&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;
+ <th align=left>Filename
+<tr> <td colspan=5><hr>
+<tr> <td><tt><b>0</b></tt>
+ <td>&nbsp;&nbsp;
+ <td>normal
+ <td>&nbsp;&nbsp;
+ <td><tt><b>r</b></tt> (omitted when weight and variant are normal)
+<tr> <td><tt><b>1</b></tt>
+ <td>&nbsp;
+ <td>narrow
+ <td>&nbsp;
+ <td><tt><b>n</b></tt>
+</table></blockquote>
+
+<hr>
+
+<h2><a name="Use_gs_fonts_with_X"></a>Using Ghostscript fonts on X Windows displays</h2>
+
+<p>
+The standard X11 distribution can display various kinds of fonts, including
+the Adobe Type 1 format, so font files distributed with Ghostscript can be
+used on X Windows displays. Beginning with Ghostscript version 6.0, the
+font archive contains the directory files needed to map Ghostscript's font
+files to XLFDs. Those files are named "<b><tt>fonts.dir</tt></b>" and
+"<b><tt>fonts.scale</tt></b>". There are two main methods to configure
+your display to use these files.
+
+<ul>
+<li><a href="#Using_xset">With <b><tt>xset</tt></b></a> any user can add a
+new directory to the font search path for the duration of a session.
+<li>An administrator with root access can <a
+href="#Font_permanent_installation">add the Ghostscript font directory
+permanently</a> to the <a href="#X_font_catalog">X font server's
+catalog</a> or to an <a href="#Xfree86_fontpath">X display server's list of
+directories</a>.
+</ul>
+
+<h3><a name="Using_xset"></a>Using <b><tt>xset</tt></b></h3>
+
+<p>
+Users without root access can add the Ghostscript font directories to the
+font search path using <b><tt>xset</tt></b>. Such a setting is transient
+and must be repeated each time the display server is reset or restarted,
+typically at login, so the call to <b><tt>xset</tt></b> should be added to
+the user's "<b><tt>.xsession</tt></b>" or "<b><tt>.xinitrc</tt></b>"
+startup script to make the fonts available at each login.
+
+<p>
+To add a new font directory, invoke <b><tt>xset</tt></b> like this:
+
+<blockquote>
+<b><tt>xset fp+</tt> <em>{directory}</em></b>
+</blockquote>
+
+<p>
+where <b><em>{directory}</em></b> is the full pathname to the directory
+containing the fonts on the host running the X display server. For common
+Ghostscript installations the path is
+
+<blockquote>
+<b><tt>/usr/local/Ghostscript/share/fonts</tt></b>
+</blockquote>
+
+<h3><a name="Font_permanent_installation"></a>Permanent installation</h3>
+
+<p> A system administrator, or anyone with the necessary root privilege,
+can make Ghostscript's fonts permanently available to the managed X display
+servers. This setup depends on the servers and the methods used
+to make the fonts available.
+
+<h4><a name="Configure_xfs"></a>Configuring the <b><tt>xfs</tt></b> font server</h4>
+
+<p>
+An X display server can obtain its font resources from a dedicated X font
+server. <b><tt>xfs</tt></b> is a prototype font server included in the X
+Consortium X11 distribution. It is configured with a file located in a
+directory whose exact location is installation-dependent and could be any
+of
+
+<blockquote><b><tt>
+/usr/lib/X11/fs/config
+<br>/usr/X11/lib/X11/fs/config
+<br>/usr/X11R6/lib/X11/fs/config
+</tt></b></blockquote>
+
+<p>
+or some similar name. You can also use <b><tt>xfs</tt></b>'s
+"<b><tt>-config</tt></b>" command-line option to specify the location of
+the configuration file.
+
+<p><a name="X_font_catalog"></a>
+The configuration file designates a list ("catalog") of directories, each
+of which contains fonts and a font mapping database (the file
+"<b><tt>fonts.dir</tt></b>"). This list is specified with the
+"<b><tt>catalogue=</tt></b>" keyword followed by a list of absolute
+directory paths separated by commas. To add the Ghostscript directory,
+include its full name in the catalog list, for example:
+
+<blockquote><b><tt>
+catalogue&nbsp;=&nbsp;/usr/local/share/Ghostscript/fonts/,
+<br>/usr/X11R6/lib/X11/fonts/misc/,
+<br>/usr/X11R6/lib/X11/fonts/Speedo/,
+<br>/usr/X11R6/lib/X11/fonts/Type1/,
+<br>/usr/X11R6/lib/X11/fonts/75dpi/,
+<br>/usr/X11R6/lib/X11/fonts/100dpi/
+</tt></b></blockquote>
+
+<p>
+The fonts are searched in the order the directories are specified, so an
+XLFD mapped by the Ghostscript directory could shadow a previous similar
+description specified in the following directories. Once the file is
+modified, instruct the font server to reload the configuration file by
+sending it the USR1 signal:
+
+<blockquote>
+<b><tt>kill -HUP</tt> <em>{pid}</em></b>
+</blockquote>
+
+<p>
+where <b><em>{pid}</em></b> is the font server process's numeric process
+ID, as obtained with the "<b><tt>ps</tt></b>" command. Be sure to check
+that the server is still alive after signaling it: it is very picky and
+could decide to shut itself down if something is wrong in the new
+configuration. If this happens, restart the server by hand and try to
+figure out from its output what's happening. If the font server dies,
+display servers using it will experience problems, so be sure to send the
+signal from the console or from a display not using that font server!
+
+<h4><a name="Configure_Xfree86"></a>Xfree86 display servers</h4>
+
+<p><a name="Xfree86_fontpath"></a>
+With the family of Xfree86 display servers, adding a new font directory
+permanently requires editing the "<b><tt>/etc/XF86Config</tt></b>" setup
+file to add a new "<b><tt>FontPath</tt></b>" to the "<b><tt>Files</tt></b>"
+section:
+
+<blockquote>
+<b><tt>Section "Files"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RgbPath&nbsp;&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/rgb"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontPath&nbsp;&nbsp;&nbsp;"/usr/local/share/Ghostscript/fonts"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontPath&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/fonts/misc:unscaled"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontPath&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontPath&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontPath&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/fonts/Type1"
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontPath&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/fonts/Speedo"
+<br>EndSection</tt></b>
+</blockquote>
+
+<p>
+The fonts are searched in the order the directories are specified, so an
+XLFD mapped by the Ghostscript directory could shadow a previous similar
+description specified in the following directories. Once this global
+configuration is edited, the new fonts become available to all Xfree86
+servers in use on that host. If a server is running, it must be restarted
+to take effect: just quit the current session in the usual way. If the
+server is under the control of <b><tt>xdm</tt></b>, you may have to kill
+it, because it is usually reset only between successive sessions.
+
+<p>
+This section by Bertrand Petit
+&lt;<a href="mailto:eegs@phoe.frmug.org">eegs@phoe.frmug.org</a>&gt;
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Helpers.htm b/Master/xemtex/doc/ghostscript/Helpers.htm
new file mode 100644
index 00000000000..993388cfbde
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Helpers.htm
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>People who have helped with Ghostscript</title>
+<!-- $Id: Helpers.htm,v 1.17.2.11.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: helpers.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>People who have helped with Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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>
+Many people have contributed to the development of Ghostscript. In the
+<a href="New-user.htm#Acknowledgments">new-user documentation</a> we give special thanks to a few major contributors; here
+we wish to acknowledge and thank the following other people (in
+alphabetical order) who have contributed substantially to improving
+Ghostscript since its inception in 1986:
+
+<blockquote>
+<dl>
+<dt>Hitoshi Aida
+ <dd>for help with the SunView driver
+<dt>Pierre Arnaud
+ <dd>for bug reports and fixes
+<dt>Juan Manuel Acosta
+ <dd>for LN03+ driver and fixes of arc and circle rendering on SunOS
+<dt>William Bader
+ <dd>for several drivers and bug reports
+<dt>Alan Barclay
+ <dd>for the RGB TIFF drivers
+<dt>Nelson H. F. Beebe
+ <dd>for testing on a wide variety of Unix architectures, and for
+ the multi-architecture makefile
+<dt>Karl Berry and Kathy Hargreaves
+ <dd>for helping create the fonts originally distributed with
+ Ghostscript
+<dt>James W. Birdsall
+ <dd>for the IBM ProPrinter driver
+<dt>Andrew Birrell
+ <dd>for a challenging application
+<dt>Jan Bottorff
+ <dd>for help with the Microsoft Windows driver
+<dt>Tom Brosnan
+ <dd>for the Desqview/X port
+<dt>Philip Brown
+ <dd>for the LaserJet IIID duplex additions
+<dt>Tobias Burnus
+ <dd>for many challenging bug reports
+<dt>George Cameron
+ <dd>for DeskJet 500C and 550C drivers
+<dt>Maurice Castro
+ <dd>a collaborator of Russell Lang's
+<dt>Jeff Chua
+ <dd>for the idea and first implementation of
+ <b><tt>ReopenPerPage</tt></b>
+<dt>Phil Conrad
+ <dd>for originating the PPM utilities and the PCX and GIF drivers,
+ and lots of bug reports
+<dt>Michel Dagenais
+ <dd>for major help with the DeskJet driver
+<dt>John Desrosiers
+ <dd>for the final work on the Microsoft Visual C++ makefiles,
+ and for enhancements to the memory manager
+<dt>Jim Dunham
+ <dd>for the OpenVMS makefile
+<dt>Gershon Elber
+ <dd>for improvements to the BGI driver
+<dt>Fritz Elfert
+ <dd>for the Unix file enumeration routine
+<dt>George Ferguson
+ <dd>for some added man pages
+<dt>Mike Ferrara
+ <dd>for help with the LaserJet driver and HP-UX
+<dt>Andy Fyfe
+ <dd>for the BJ200 driver modifications to the BJ10e driver, and for
+ the 3B1 driver
+<dt>Tim Gallivan
+ <dd>for a port to the Atari ST
+<dt>J. Greely
+ <dd>for help with the PostScript-to-ASCII filter
+<dt>Gintautas Grigelionis
+ <dd>for a set of XBM/XPM icons
+<dt>Paul Haeberli
+ <dd>for the ideas behind better color selection and trapezoid fill
+ algorithms
+<dt>Karl Hakimian
+ <dd>for the Tek 4693d drivers
+<dt>Richard Hesketh
+ <dd>for GSPreview
+<dt>Gunther Hess
+ <dd>for the unified inkjet printer driver
+<dt>Thomas Hiller
+ <dd>for the Trident TVGA driver
+<dt>Frans van Hoesel
+ <dd>for improvements to the DeskJet driver
+<dt>Berthold K. P. Horn
+ <dd>for a better spot halftone screen
+<dt>B. Jackowski and GUST (the Polish TeX users group)
+ <dd>for improvements to the TrueType font reader, and for the
+ <b><tt>tiff2ps</tt></b> and <b><tt>ttf2pf</tt></b> utilities
+<dt>Jouk Jansen
+ <dd>for motivating, testing, and providing some of the script
+ file for the MMK/MMS build procedure
+<dt>Earl Johnson
+ <dd>for the motivation for the <b><tt>ps2ascii</tt></b> utility
+<dt>Ray Johnston
+ <dd>for a first draft of FAKEFONTS and EPSF recognition, and for
+ many small bug fixes
+<dt>Larry Jones
+ <dd>for simplifying and improving the portability of the pthreads
+ interface code
+<dt>Pete Kaiser
+ <dd>for beta testing, several versions of the OSF/1 font map, and
+ an HTML version of the documentation
+<dt>Norio Katayama
+ <dd>for the first implementation of composite fonts, and for
+ testing and helping debug the later implementation
+<dt>Alfred Kayser
+ <dd>for a DeskJet 500C driver and beta testing
+<dt>Richard Keeney
+ <dd>for help with the SunView driver
+<dt>Markku Koppinen
+ <dd>for a better circle-to-curve algorithm
+<dt>Eleftherios Koutsofios
+ <dd>for help with the SunView driver
+<dt>Tom Lane
+ <dd>for major help with adapting and integrating the IJG code
+<dt>Sam Leffler
+ <dd>for the original TIFF G3 driver, and for finding some subtle
+ bugs in the CCITTFaxEncode filter
+<dt>Jonathan Luckey
+ <dd>for the high-resolution Imagewriter drivers
+<dt>Ken Lunde
+ <dd>for providing pointers to freely available CJKV font-related
+ resource
+<dt>Ian MacPhedran
+ <dd>for a sixel driver
+<dt>Jim Mayer
+ <dd>for help with the DeskJet and LaserJet drivers
+<dt>Paul McJones
+ <dd>for help in identifying a variety of bugs
+<dt>William L. Menninger
+ <dd>for a version of the PC display state save/restore code
+<dt>Richard Mlynarik
+ <dd>for a nearly overwhelming volume of improvements and
+ suggestions
+<dt>Ulrich Mueller
+ <dd>for the LN03 driver
+<dt>Daniel Newman
+ <dd>for major help with VMS and the CCITTFax filters
+<dt>Bjorn S. Nilsson
+ <dd>for major help with VMS, including many updates of the DCL
+ build scripts and creating the VMS help file
+<dt>Roque Donizete de Oliveira
+ <dd>for testing and debugging, and a "man" page
+<dt>Gerbert Orasche
+ <dd>for some minor bug fixes
+<dt>Marc Paquette
+ <dd>for the original PaintJet driver
+<dt>Hal Peterson
+ <dd>for major help with BDF fonts
+<dt>Andy Piper
+ <dd>for the first draft of the WindowID feature
+<dt>Martin Pirker
+ <dd>for fixing two major problems with TrueType fonts
+<dt>Tom Quinn
+ <dd>for the Canon LBP-8II driver
+<dt>Matthias Rabe
+ <dd>for work on an OS/2 port
+<dt>Jerry Roylance
+ <dd>for help with statusdict
+<dt>Dave St. Clair
+ <dd>for the color Epson/Fujitsu driver
+<dt>Jan Sanislo
+ <dd>for two subtle but vital fixes
+<dt>Clemens Schrimpe
+ <dd>for help with accented characters
+<dt>Scott Schwartz
+ <dd>for improvements to <b><tt>gslp.ps</tt></b>
+<dt>Mike Smolenski
+ <dd>for the Sony drivers
+<dt>Snoopy
+ <dd>for major help with Hershey fonts, and many other contributions
+<dt>Karsten Spang
+ <dd>for the Tektronix 4695/4696 driver
+<dt>Andreas Stolcke
+ <dd>for help with the SunView driver
+<dt>Hans-Gerd Straeter
+ <dd>for finding many obscure bugs
+<dt>Christoph Strozyk
+ <dd>for getting the URW fonts made available
+<dt>Alexey Subbotin
+ <dd>for contributing an interface to GNU readline, and for the
+ rewritten implementation of ==
+<dt>Michael Sweet
+ <dd>for help with the high-density Epson driver
+<dt>Guenther Thomsen
+ <dd>for the mid-density Epson driver
+<dt>Gregg Townsend
+ <dd>for the low-resolution dithering algorithm
+<dt>Christian Tschudin
+ <dd>for fixes to the virtual memory package, and for the original
+ BubbleJet driver
+<dt>Stephen Turnbull
+ <dd>for help with the DesqView/X port
+<dt>Jos Vos
+ <dd>for the original PBM/PGM/PPM driver, and for much beta testing
+<dt>Renze de Waal
+ <dd>for an improvement to the "<b><tt>SAFER</tt></b>" feature
+<dt>Allan Wax
+ <dd>for the AT&amp;T 6300 modification to the BGI driver
+<dt>Mark Wedel
+ <dd>for the Apple DMP driver
+<dt>David Wexelblat
+ <dd>for the high-resolution 9-pin Epson driver
+<dt>George N. White III
+ <dd>for testing the PDF writer and contributing documentation
+<dt>Elizabeth Zwicky
+ <dd>for some very challenging examples
+</dl>
+</blockquote>
+
+<p>
+The following people have also helped out by beta testing, by reporting
+bugs and/or fixes, or in other ways:
+
+<blockquote>
+Vikas Aggarwal, Michael Almond,
+Abramo Bagnara, Malcolm Bennett, David Brooks,
+Alex Cherepanov, Jim Collins,
+Peter da Silva, Art Dederick, Paul DuBois,
+Toerless Eckert,
+Bernhard Fabricius, Mark Friedman, Richard Foulk,
+Glenn Geers, Dave Goldblatt, Ben Goren, Dirk Grunwald,
+Lars Haakedal, Howard B. Halstead, Adam Hammer, George Hartzell, Mike Hoffmann, Charles Hulse,
+Brad Jones, Terry Jones,
+David Keppel,
+Anthony Lee, Marty Leisner, John Lundin Jr., Lee McLoughlin,
+Stergios Marinopoulos, Herb Martin, David Mathog, David Maynard, Doug McDonald, Rich Murphey,
+Russ Nelson,
+Peter Phillips,
+Mark Rawling, Philippe Robert, Tomas Rokicki, Wolfgang Rupprecht,
+Bill Schelter, Larry Schwimmer, Bakul Shah,
+Erik Talvola, Henrik Theiling, Mark A. Thomas, Kjetil Bernhard Thomassen,
+Amanda Walker, Peter Wan, John L. Wehle, Carsten Wiethoff, Carl Witty,
+Frank Yellin,
+Jamie Zawinski
+</blockquote>
+
+<p>
+If your name appears on the above list and we've omitted a particular
+contribution you made, or if we've accidentally overlooked you entirely,
+please forgive us: just let us know at <a href="mailto:raph@artofcode.com">raph@artofcode.com</a>, and you will be
+properly acknowledged in the next release.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/Hershey.htm b/Master/xemtex/doc/ghostscript/Hershey.htm
new file mode 100644
index 00000000000..a08bae318b9
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Hershey.htm
@@ -0,0 +1,305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Hershey fonts for Ghostscript</title>
+<!-- $Id: Hershey.htm,v 1.3 2000/11/04 05:00:00 giles Exp $ -->
+<!-- Originally: hershey.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Hershey fonts for Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This file, unlike the rest of Ghostscript, consists entirely of information
+copied from public sources. It therefore is not covered by the
+Ghostscript copyright or license: it is in the public domain.
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>. You can also read about <a href="Fonts.htm">Ghostscript
+fonts</a> in general.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<pre>
+Mod.sources: Volume 4, Issue 42
+Submitted by: pyramid!octopus!pete (Pete Holzmann)
+
+This is part 1 of five parts of the first Usenet distribution of
+the Hershey Fonts. See the README file for more details.
+
+Peter Holzmann, Octopus Enterprises
+USPS: 19611 La Mar Court, Cupertino, CA 95014
+UUCP: {hplabs!hpdsd,pyramid}!octopus!pete
+Phone: 408/996-7746
+
+This distribution is made possible through the collective encouragement
+of the Usenet Font Consortium, a mailing list that sprang to life to get
+this accomplished and that will now most likely disappear into the mists
+of time... Thanks are especially due to Jim Hurt, who provided the packed
+font data for the distribution, along with a lot of other help.
+
+This file describes the Hershey Fonts in general, along with a description of
+the other files in this distribution and a simple re-distribution restriction.
+
+USE RESTRICTION:
+ This distribution of the Hershey Fonts may be used by anyone for
+ any purpose, commercial or otherwise, providing that:
+ 1. The following acknowledgements must be distributed with
+ the font data:
+ - The Hershey Fonts were originally created by Dr.
+ A. V. Hershey while working at the U. S.
+ National Bureau of Standards.
+ - The format of the Font data in this distribution
+ was originally created by
+ James Hurt
+ Cognition, Inc.
+ 900 Technology Park Drive
+ Billerica, MA 01821
+ (mit-eddie!ci-dandelion!hurt)
+ 2. The font data in this distribution may be converted into
+ any other format *EXCEPT* the format distributed by
+ the U.S. NTIS (which organization holds the rights
+ to the distribution and use of the font data in that
+ particular format). Not that anybody would really
+ *want* to use their format... each point is described
+ in eight bytes as "xxx yyy:", where xxx and yyy are
+ the coordinate values as ASCII numbers.
+
+*PLEASE* be reassured: The legal implications of NTIS' attempt to control
+a particular form of the Hershey Fonts *are* troubling. HOWEVER: We have
+been endlessly and repeatedly assured by NTIS that they do not care what
+we do with our version of the font data, they do not want to know about it,
+they understand that we are distributing this information all over the world,
+etc etc etc... but because it isn't in their *exact* distribution format, they
+just don't care!!! So go ahead and use the data with a clear conscience! (If
+you feel bad about it, take a smaller deduction for something on your taxes
+next week...)
+
+The Hershey Fonts:
+ - are a set of more than 2000 glyph (symbol) descriptions in vector
+ ( &lt;x,y&gt; point-to-point ) format
+ - can be grouped as almost 20 'occidental' (english, greek,
+ cyrillic) fonts, 3 or more 'oriental' (Kanji, Hiragana,
+ and Katakana) fonts, and a few hundred miscellaneous
+ symbols (mathematical, musical, cartographic, etc etc)
+ - are suitable for typographic quality output on a vector device
+ (such as a plotter) when used at an appropriate scale.
+ - were digitized by Dr. A. V. Hershey while working for the U.S.
+ Government National Bureau of Standards (NBS).
+ - are in the public domain, with a few caveats:
+ - They are available from NTIS (National Technical Info.
+ Service) in a computer-readable from which is *not*
+ in the public domain. This format is described in
+ a hardcopy publication "Tables of Coordinates for
+ Hershey's Repertory of Occidental Type Fonts and
+ Graphic Symbols" available from NTIS for less than
+ $20 US (phone number +1 703 487 4763).
+ - NTIS does not care about and doesn't want to know about
+ what happens to Hershey Font data that is not
+ distributed in their exact format.
+ - This distribution is not in the NTIS format, and thus is
+ only subject to the simple restriction described
+ at the top of this file.
+
+Hard Copy samples of the Hershey Fonts are best obtained by purchasing the
+book described above from NTIS. It contains a sample of all of the Occidental
+symbols (but none of the Oriental symbols).
+
+This distribution:
+ - contains
+ * a complete copy of the Font data using the original
+ glyph-numbering sequence
+ * a set of translation tables that could be used to generate
+ ASCII-sequence fonts in various typestyles
+ * a couple of sample programs in C and Fortran that are
+ capable of parsing the font data and displaying it
+ on a graphic device (we recommend that if you
+ wish to write programs using the fonts, you should
+ hack up one of these until it works on your system)
+
+ - consists of the following files...
+ hershey.doc - details of the font data format, typestyles and
+ symbols included, etc.
+ hersh.oc[1-4] - The Occidental font data (these files can
+ be catenated into one large database)
+ hersh.or[1-4] - The Oriental font data (likewise here)
+ *.hmp - Occidental font map files. Each file is a translation
+ table from Hershey glyph numbers to ASCII
+ sequence for a particular typestyle.
+ hershey.f77 - A fortran program that reads and displays all
+ of the glyphs in a Hershey font file.
+ hershey.c - The same, in C, using GKS, for MS-DOS and the
+ PC-Color Graphics Adaptor.
+
+Additional Work To Be Done (volunteers welcome!):
+
+ - Integrate this complete set of data with the hershey font typesetting
+ program recently distributed to mod.sources
+ - Come up with an integrated data structure and supporting routines
+ that make use of the ASCII translation tables
+ - Digitize additional characters for the few places where non-ideal
+ symbol substitutions were made in the ASCII translation tables.
+ - Make a version of the demo program (hershey.c or hershey.f77) that
+ uses the standard Un*x plot routines.
+ - Write a banner-style program using Hershey Fonts for input and
+ non-graphic terminals or printers for output.
+ - Anything else you'd like!
+
+This file provides a brief description of the contents of the Occidental
+Hershey Font Files. For a complete listing of the fonts in hard copy, order
+NBS Special Publication 424, "A contribution to computer typesetting
+techniques: Tables of Coordinates for Hershey's Repertory of Occidental
+Type Fonts and Graphic Symbols". You can get it from NTIS (phone number is
++1 703 487 4763) for less than twenty dollars US.
+
+Basic Glyph (symbol) data:
+
+ hersh.oc1 - numbers 1 to 1199
+ hersh.oc2 - numbers 1200 to 2499
+ hersh.oc3 - numbers 2500 to 3199
+ hersh.oc4 - numbers 3200 to 3999
+
+ These four files contain approximately 19 different fonts in
+the A-Z alphabet plus greek and cyrillic, along with hundreds of special
+symbols, described generically below.
+
+ There are also four files of Oriental fonts (hersh.or[1-4]). These
+files contain symbols from three Japanese alphabets (Kanji, Hiragana, and
+Katakana). It is unknown what other symbols may be contained therein, nor
+is it known what order the symbols are in (I don't know Japanese!).
+
+ Back to the Occidental files:
+
+Fonts:
+ Roman: Plain, Simplex, Duplex, Complex Small, Complex, Triplex
+ Italic: Complex Small, Complex, Triplex
+ Script: Simplex, Complex
+ Gothic: German, English, Italian
+ Greek: Plain, Simplex, Complex Small, Complex
+ Cyrillic: Complex
+
+Symbols:
+ Mathematical (227-229,232,727-779,732,737-740,1227-1270,2227-2270,
+ 1294-1412,2294-2295,2401-2412)
+ Daggers (for footnotes, etc) (1276-1279, 2276-2279)
+ Astronomical (1281-1293,2281-2293)
+ Astrological (2301-2312)
+ Musical (2317-2382)
+ Typesetting (ffl,fl,fi sorts of things) (miscellaneous places)
+ Miscellaneous (mostly in 741-909, but also elsewhere):
+ - Playing card suits
+ - Meteorology
+ - Graphics (lines, curves)
+ - Electrical
+ - Geometric (shapes)
+ - Cartographic
+ - Naval
+ - Agricultural
+ - Highways
+ - Etc...
+
+ASCII sequence translation files:
+
+ The Hershey glyphs, while in a particular order, are not in an
+ ASCII sequence. I have provided translation files that give the
+ sequence of glyph numbers that will most closely approximate the
+ ASCII printing sequence (from space through ~, with the degree
+ circle tacked on at the end) for each of the above fonts:
+
+ File names are made up of fffffftt.hmp,
+
+ where ffffff is the font style, one of:
+ roman Roman
+ greek Greek
+ italic Italic
+ script Script
+ cyril Cyrillic (some characters not placed in
+ the ASCII sequence)
+ gothgr Gothic German
+ gothgb Gothic English
+ gothit Gothic Italian
+
+ and tt is the font type, one of:
+ p Plain (very small, no lower case)
+ s Simplex (plain, normal size, no serifs)
+ d Duplex (normal size, no serifs, doubled lines)
+ c Complex (normal size, serifs, doubled lines)
+ t Triplex (normal size, serifs, tripled lines)
+ cs Complex Small (Complex, smaller than normal size)
+
+The three sizes are coded with particular base line (bottom of a capital
+ letter) and cap line (top of a capital letter) values for 'y':
+
+ Size Base Line Cap Line
+
+ Very Small -5 +4
+ Small -6 +7
+ Normal -9 +12
+
+ (Note: some glyphs in the 'Very Small' fonts are actually 'Small')
+
+The top line and bottom line, which are normally used to define vertical
+ spacing, are not given. Maybe somebody can determine appropriate
+ values for these!
+
+The left line and right line, which are used to define horizontal spacing,
+ are provided with each character in the database.
+
+Format of Hershey glyphs:
+
+5 bytes - glyphnumber
+3 bytes - length of data length in 16-bit words including left&amp;right numbers
+1 byte - x value of left margin
+1 byte - x value of right margin
+(length*2)-2 bytes - stroke data
+
+left&amp;right margins and stroke data are biased by the value of the letter 'R'
+Subtract the letter 'R' to get the data.
+
+e.g. if the data byte is 'R', the data is 0
+ if the data byte is 'T', the data is +2
+ if the data byte is 'J', the data is -8
+
+and so on...
+
+The coordinate system is x-y, with the origin (0,0) in the center of the
+glyph. X increases to the right and y increases *down*.
+
+The stroke data is pairs of bytes, one byte for x followed by one byte for y.
+
+An 'R' in the stroke data indicates a 'lift pen and move' instruction.
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+
+<hr>
+
+<p>
+<small>Public Domain.</small>
+<small>Distributed with Ghostscript 6.50, November 2000</small>
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/History1.htm b/Master/xemtex/doc/ghostscript/History1.htm
new file mode 100644
index 00000000000..58dab2ecfc5
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History1.htm
@@ -0,0 +1,436 @@
+<!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 1.n</title>
+<!-- $Id: History1.htm,v 1.13.2.11.2.5 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: history1.txt -->
+<!--
+ 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 1.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version1.3">Version 1.3 (6/20/89)</a>
+<ul>
+<li><a href="#V1.3_Interpreter">Interpreter</a>,
+ <a href="#V1.3_Fonts">Fonts</a>,
+ <a href="#V1.3_Library">Library</a>,
+ <a href="#V1.3_Usage_procedures">Usage procedures</a>
+</ul>
+<li><a href="#Version1.2">Version 1.2 (2/22/89)</a>
+<ul>
+<li><a href="#V1.2_Interpreter">Interpreter</a>,
+ <a href="#V1.2_Library">Library</a>,
+ <a href="#V1.2_Usage_procedures">Usage procedures</a>
+</ul>
+<li><a href="#Version1.1">Version 1.1 (2/12/89)</a>
+<ul>
+<li><a href="#V1.1_Interpreter">Interpreter</a>,
+ <a href="#V1.1_Initialization">Initialization (ghost.ps, gfonts.ps)</a>,
+ <a href="#V1.1_Library">Library</a>,
+ <a href="#V1.1_Usage_procedures">Usage procedures</a>
+</ul>
+<li><a href="#Version1.0">Version 1.0 (8/11/88)</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a history of Ghostscript releases numbered 1.n. For more
+recent changes, see the the other history documents and, for the latest
+versions, the news:
+
+<blockquote>
+<a href="News.htm">News</a><br>
+<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>
+History of Ghostscript versions 1.n (this document)<br>
+</blockquote>
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+
+<h2><a name="Version1.3"></a>Version 1.3 (6/20/89)</h2>
+<pre>
+This release should have had a lot more things in it, but time pressure
+and the already long delay in getting it out made it necessary to push it
+out the door in an incomplete state (e.g., no testing on X systems
+whatsoever).
+
+</pre>
+<h3><a name="V1.3_Interpreter"></a>Interpreter</h3>
+
+<pre>
+Makes -d and -D equivalent on the command line. Adds a new switch -s / -S
+that defines a name as a string rather than a token.
+
+Arranges things so that if -sLIB=_a_prefix_ is defined on the command
+line, (filename) run will look for _a_prefix_filename before giving up if
+filename isn't the name of an accessible file.
+
+Changes showpage from an operator to a procedure. The definition of
+showpage in ghost.ps does a copypage, beeps the console, waits for the
+user to type a character (normally a &lt;return&gt;, since line buffering is
+always enabled), and then does an erasepage and an initgraphics.
+
+Adds a new initialization file, gdevs.ps, containing device-dependent
+parameters. The default window size for X Windows is properly set to 612
+x 792, i.e., 8.5" x 11".
+
+Adds a new optional initialization file, statusd.ps, that provides dummy
+definitions for the names found in statusdict on LaserWriters.
+
+Adds a new operator, getenv, to get information from the shell
+environment.
+
+Adds a new predefined operator, defaultdevicename, that returns either (X)
+or (EGA) according to how the interpreter was built.
+
+Adds a new type, devicetype, and new operators deviceparams, getscanlines,
+makedevice, makeimagedevice, and setdevice. Changes currentdevice to
+return a device object rather than a set of parameters.
+
+Makes the scanner recognize reals with 'e' exponent notation, and handle
+reals with more than 9 digits.
+
+Fixes a bug that made names starting with digits read incorrectly.
+
+Fixes a bug in the exp operator that made it not pop its first argument
+from the stack.
+
+Fixes a bug in the rand operator that made it return negative values about
+half the time.
+
+Fixes a bug in equality comparison (eq, ne, and several other operators)
+that made unequal operator objects occasionally appear to be equal on DOS
+systems.
+
+Fixes a bug in the bind operator that made it not work on packed arrays.
+
+Changes the internal representation of dictionaries so they can be
+expanded or contracted dynamically. Adds a new operator, setmaxlength, to
+change the allocated size of a dictionary.
+
+Changes sstorei.h so that non-DOS compilers don't encounter the #pragma
+directive used by Turbo C.
+
+Restores the display mode (on MS-DOS systems) when exiting.
+
+</pre>
+<h3><a name="V1.3_Fonts"></a>Fonts</h3>
+
+<pre>
+Makes undefined characters in the standard font display as tilde rather
+than blank (or causing an error). Unmapped character codes (those mapped
+to .notdef in the encoding) still display as nothing, per the PostScript
+manual.
+
+</pre>
+<h3><a name="V1.3_Library"></a>Library</h3>
+
+<pre>
+Adds a new header file, gxbitmap.h, with some new documentation describing
+the internal storage format for bitmaps.
+
+Makes numerous internal changes in the character / font cache, affecting
+many of the routines in gxcache.c.
+
+Fixes a bug in gz_draw_line / gz_fill_trapezoid that made nearly
+horizontal lines display wrong.
+
+Fixes a bug in gs_scale that made scaling not work if the coordinate
+system was rotated or skewed.
+
+Extends the font cache so it will handle characters rotated by multiples
+of 90 degrees.
+
+Changes the second argument of gx_path_bbox and gx_path_is_rectangle to be
+a gs_fixed_rect * rather than a fixed [4].
+
+Changes gs_matrix_rotate so it handles multiples of 90 degrees as a
+special case.
+
+Changes the definition of the gx_device structure to accommodate the new
+device operators, and adds corresponding library calls.
+
+Changes the type for a device color index from int to gx_color_index
+(equivalent to unsigned long). ***NOTE***: this affects existing clients
+and drivers in a non-trivial way on MS-DOS systems.
+
+Changes gs_malloc and gs_free to take a client name string as an argument.
+
+</pre>
+<h3><a name="V1.3_Usage_procedures"></a>Usage procedures</h3>
+
+<pre>
+Changes the compilation rules for Unix systems to not use the -o and -c
+compiler flags together, to be compatible with more versions of cc.
+
+Changes the gcc makefile to use $(GCC) rather than gcc as the compiler
+name.
+
+Moves the -1 flag for the MS-DOS compiler from the cc*.bat files to the
+makefile.
+
+Changes CCDEBUG to CCFLAGS, and adds ASMFLAGS, in DOS makefile.
+
+Adds -DFOR80386 and /DFOR80386 to enable use of 80386 instructions in
+assembly code on DOS systems.
+
+Merges the DEBUG and gs_DEBUG switches. There is now only a single DEBUG
+switch that affects both the interpreter and the library.
+
+Adds a new compilation switch, -DNOPRIVATE, that makes private (static)
+variables and procedures public for debugging and profiling (only needed
+on DOS systems).
+
+Adds the DOS executable (gs.exe and gs.map) to the distribution fileset.
+
+Adds new platform-specific code files, gp-*.c, for a few things like
+reading the clock.
+
+Adds a new documentation file, drivers.doc, that describes the interface
+between Ghostscript and device drivers.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version1.2"></a>Version 1.2 (2/22/89)</h2>
+
+<h3><a name="V1.2_Interpreter"></a>Interpreter</h3>
+
+<pre>
+Adds the new facilities in version 25 of PostScript: //name for immediate
+lookup, packed arrays (setpacking, currentpacking, packedarray operators),
+and new font cache parameters (setcacheparams, currentcacheparams
+operators).
+
+Adds new operators (setfileposition, currentfileposition) for random
+access to files.
+
+Extends readhexstring to take either a string or a file, just like token.
+
+Fixes a bug that caused the 'for' operator (and a couple of others) to
+randomly smash memory locations on PC platforms.
+
+</pre>
+<h3><a name="V1.2_Library"></a>Library</h3>
+
+<pre>
+Renames the init_device driver procedure as open_device, and adds a
+corresponding close_device.
+
+Adds new procedures to read and set the cache limit values (implementing
+the currentcacheparams and setcacheparams operators).
+
+</pre>
+<h3><a name="V1.2_Usage_procedures"></a>Usage procedures</h3>
+
+<pre>
+Changes the name of the Unix makefile to ux-cc-x.mak, and adds a new Unix
+makefile, ux-gcc-x.mak, for using gcc instead of cc. (The latter doesn't
+actually work yet.)
+
+Changes the name of the single built-in font from uglyfont.cp to
+ugly10.cp.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version1.1"></a>Version 1.1 (2/12/89)</h2>
+
+<h3><a name="V1.1_Interpreter"></a>Interpreter</h3>
+
+<pre>
+Makes the scanner treat ^Z (ASCII code 26) as whitespace: it erroneously
+treated ^R (ASCII code 22, or octal 26) as whitespace.
+
+Makes the token and readline operators, and the syntax for comments,
+recognize \r (code 13), \n (code 10), and \r\n as equivalent end-of-line
+indicators. The token and readline operators will skip over any of these
+sequences at the end of a token or line respectively, and a comment will
+read through any of these sequences. The other file operators (read,
+write, readstring, writestring) do nothing special with these characters.
+
+Changes the debug switch name from -D to -Z. Adds a -D switch for
+defining names in systemdict from the command line. Defines -DDEBUG for
+printing out debugging information during initialization, and -DNODISPLAY
+for suppressing display output.
+
+Corrects a bug that prevented the error machinery from working -- in
+version 1.0, errors always dumped the stacks and aborted interpretation.
+
+Corrects a bug that made eq and ne not work for strings.
+
+Makes the atan (arctangent) operator normalize its results according to
+the PostScript convention.
+
+Makes the div operator check for zero divisor.
+
+Makes unimplemented operators (resetfile, echo, save, restore, strokepath,
+reversepath) truly undefined.
+
+Makes the interactive loop exit gracefully on end-of-file: in version 1.0
+this caused an infinite loop.
+
+Implements the status operator.
+
+Corrects a bug that made the 'for' operator deliver garbage values if one
+or more of the operands (start, increment, end) was a real.
+
+Corrects a bug that made the arc and arcn operators not pop their operands
+from the stack.
+
+Corrects a bug that made the kshow operator crash the interpreter.
+
+Corrects a bug that made the print operator fail on machines that don't
+pass structure arguments by simply pushing the contents of the structure.
+
+Adds a new operator, imagecharpath, to convert images to
+addcharpath-compatible outlines.
+
+Changes alloc and alloc_free to use char * rather than byte *, and
+alloc_free to return void rather than int, making them compatible with the
+library's expectations and with malloc/free.
+
+Explicitly casts all expressions of the form (ptr1 - ptr2) used as
+procedure arguments to unsigned, to handle an incompatibility between
+Turbo C versions 1.5 and 2.0.
+
+Changes some of the internal conventions for operators: operators that
+push on the operand stack must check for overflow explicitly, and
+operators that modify the execution stack must return a special code.
+(See oper.h for details.)
+
+</pre>
+<h3><a name="V1.1_Initialization"></a>Initialization (ghost.ps, gfonts.ps)</h3>
+
+<pre>
+Modifies ghost.ps and gfonts.ps so they print debugging information only
+if the name DEBUG is defined. (Presumably the user will set this from the
+command line with -DDEBUG.)
+
+Changes ghost.ps so it initializes the nominal screen size to 640 x 350 on
+MS-DOS systems as before, but to 612 x 792 on Unix systems, which is an
+8.5" x 11" page at 72 pixels per inch.
+
+</pre>
+<h3><a name="V1.1_Library"></a>Library</h3>
+
+<pre>
+Corrects a bug that made the fill and eofill operators (gs_fill and
+gs_eofill) not perform a newpath afterward.
+
+Corrects the bug that made thin, nearly horizontal lines display wrong (as
+a series of disconnected dots) in the MS-DOS implementation.
+
+Fixes a bug in the EGA driver that often made it fill rectangular regions
+with black around information being displayed in white.
+
+Completely changes the internal representation of outline fonts, and
+changes btoi.ps (a Ghostscript language program for converting bitmaps to
+outlines) to use a new library call, gs_imagecharpath.
+
+Changes the extension for outline font files from .gf to .cp.
+
+Adds a new debugging switch, q, that traces all rectangle fill operations.
+
+Adds a new debugging switch, v, that traces all device-level output calls.
+
+Explicitly casts pointer differences passed as procedure arguments, as in
+the interpreter.
+
+Makes stringwidth work if there is no current point. In version 1.0, this
+gave a nocurrentpoint error.
+
+</pre>
+<h3><a name="V1.1_Usage_procedures"></a>Usage procedures</h3>
+
+<pre>
+Changes the name of the 'read me' file from READ.ME to README.
+
+Removes a bogus line (invoking the 'mcopy' utility) from the makefile.
+
+Splits up the makefile into a generic part (ghost.mak) and
+platform-specific parts (dos-ega.mak, unix-x11.mak). The latter are what
+is actually executed.
+
+Puts the definitions of the DEBUG and gs_DEBUG compilation flags into the
+makefile instead of in ghost.h and gx.h respectively.
+
+Changes the names of the documentation files to be a little less cryptic.
+Changes all the file names to lower-case in the documentation. Adds
+installation information to make.doc.
+
+Changes all function definitions (but not prototype declarations) to ANSI
+syntax, and adds a preprocessing step (ansi2knr) to convert them to K&amp;R
+syntax on Unix systems.
+
+Changes the normal MS-DOS link configuration to not assume the presence of
+an 80x87 coprocessor, and describes how to increase performance if a
+coprocessor is present.
+
+Changes the names of all the interpreter .c files, except stream.c, to
+begin with 'i'.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version1.0"></a>Version 1.0 (8/11/88)</h2>
+
+<pre>
+First version released to the public.
+</pre>
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p><small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
+All rights reserved.</small>
+
+<p>This software is provided AS-IS with no warranty, either express or
+implied.
+
+<p>
+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>
diff --git a/Master/xemtex/doc/ghostscript/History2.htm b/Master/xemtex/doc/ghostscript/History2.htm
new file mode 100644
index 00000000000..62964ee41af
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History2.htm
@@ -0,0 +1,5231 @@
+<!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 1.n</title>
+<!-- $Id: History2.htm,v 1.13.2.11.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: history2.txt -->
+<!--
+ 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 2.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version2.9.10b">Version 2.9.10-beta (7/28/94)</a>
+<ul>
+<li><a href="#V2.9.10b_Documentation">Documentation</a>,
+ <a href="#V2.9.10b_Procedures">Procedures</a>,
+ <a href="#V2.9.10b_Utilities">Utilities</a>,
+ <a href="#V2.9.10b_Drivers">Drivers</a>,
+ <a href="#V2.9.10b_Platforms">Platforms</a>,
+ <a href="#V2.9.10b_Fonts">Fonts</a>,
+ <a href="#V2.9.10b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.10b_Streams">Streams</a>,
+ <a href="#V2.9.10b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.9b">Version 2.9.9-beta (6/23/94)</a>
+<ul>
+<li><a href="#V2.9.9b_Documentation">Documentation</a>,
+ <a href="#V2.9.9b_Platforms">Platforms</a>,
+ <a href="#V2.9.9b_Fonts">Fonts</a>,
+ <a href="#V2.9.9b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.9b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.8">Version 2.9.8 (6/20/94)</a>
+<ul>
+<li><a href="#V2.9.8_Documentation">Documentation</a>,
+ <a href="#V2.9.8_Procedures">Procedures</a>,
+ <a href="#V2.9.8_Utilities">Utilities</a>,
+ <a href="#V2.9.8_Drivers">Drivers</a>,
+ <a href="#V2.9.8_Platforms">Platforms</a>,
+ <a href="#V2.9.8_Fonts">Fonts</a>,
+ <a href="#V2.9.8_Interpreter">Interpreter</a>,
+ <a href="#V2.9.8_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.7b">Version 2.9.7-beta (6/5/94)</a>
+<ul>
+<li><a href="#V2.9.7b_Documentation">Documentation</a>,
+ <a href="#V2.9.7b_Procedures">Procedures</a>,
+ <a href="#V2.9.7b_Utilities">Utilities</a>,
+ <a href="#V2.9.7b_Drivers">Drivers</a>,
+ <a href="#V2.9.7b_Platforms">Platforms</a>,
+ <a href="#V2.9.7b_Fonts">Fonts</a>,
+ <a href="#V2.9.7b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.7b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.6b">Version 2.9.6-beta (5/23/94, not distributed to the public)</a>
+<ul>
+<li><a href="#V2.9.6b_Documentation">Documentation</a>,
+ <a href="#V2.9.6b_Procedures">Procedures</a>,
+ <a href="#V2.9.6b_Utilities">Utilities</a>,
+ <a href="#V2.9.6b_Drivers">Drivers</a>,
+ <a href="#V2.9.6b_Platforms">Platforms</a>,
+ <a href="#V2.9.6b_Fonts">Fonts</a>,
+ <a href="#V2.9.6b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.6b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.5b">Version 2.9.5-beta (4/11/94)</a>
+<ul>
+<li><a href="#V2.9.5b_Documentation">Documentation</a>,
+ <a href="#V2.9.5b_Procedures">Procedures</a>,
+ <a href="#V2.9.5b_Utilities">Utilities</a>,
+ <a href="#V2.9.5b_Drivers">Drivers</a>,
+ <a href="#V2.9.5b_Platforms">Platforms</a>,
+ <a href="#V2.9.5b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.5b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.4b">Version 2.9.4-beta (2/19/94)</a>
+<ul>
+<li><a href="#V2.9.4b_Procedures">Procedures</a>,
+ <a href="#V2.9.4b_Utilities">Utilities</a>,
+ <a href="#V2.9.4b_Drivers">Drivers</a>,
+ <a href="#V2.9.4b_Platforms">Platforms</a>,
+ <a href="#V2.9.4b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.4b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.3b">Version 2.9.3-beta (1/19/94)</a>
+<ul>
+<li><a href="#V2.9.3b_Documentation">Documentation</a>,
+ <a href="#V2.9.3b_Procedures">Procedures</a>,
+ <a href="#V2.9.3b_Drivers">Drivers</a>,
+ <a href="#V2.9.3b_Platforms">Platforms</a>,
+ <a href="#V2.9.3b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.3b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.2b">Version 2.9.2-beta (1/2/94)</a>
+<ul>
+<li><a href="#V2.9.2b_Documentation">Documentation</a>,
+ <a href="#V2.9.2b_Utilities">Utilities</a>,
+ <a href="#V2.9.2b_Drivers">Drivers</a>,
+ <a href="#V2.9.2b_Platforms">Platforms</a>,
+ <a href="#V2.9.2b_Fonts">Fonts</a>,
+ <a href="#V2.9.2b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.2b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9.1b">Version 2.9.1-beta (12/7/93)</a>
+<ul>
+<li><a href="#V2.9.1b_Utilities">Utilities</a>,
+ <a href="#V2.9.1b_Interpreter">Interpreter</a>,
+ <a href="#V2.9.1b_Library">Library</a>
+</ul>
+<li><a href="#Version2.9b">Version 2.9-beta (12/6/93)</a>
+<ul>
+<li><a href="#V2.9b_Documentation">Documentation</a>,
+ <a href="#V2.9b_Procedures">Procedures</a>,
+ <a href="#V2.9b_Utilities">Utilities</a>,
+ <a href="#V2.9b_Drivers">Drivers</a>,
+ <a href="#V2.9b_Platforms">Platforms</a>,
+ <a href="#V2.9b_Interpreter">Interpreter</a>,
+ <a href="#V2.9b_Library">Library</a>
+</ul>
+<li><a href="#Version2.8b">Version 2.8-beta (11/10/93)</a>
+<ul>
+<li><a href="#V2.8b_Documentation">Documentation</a>,
+ <a href="#V2.8b_Procedures">Procedures</a>,
+ <a href="#V2.8b_Utilities">Utilities</a>,
+ <a href="#V2.8b_Drivers">Drivers</a>,
+ <a href="#V2.8b_Platforms">Platforms</a>,
+ <a href="#V2.8b_Fonts">Fonts</a>,
+ <a href="#V2.8b_Interpreter">Interpreter</a>,
+ <a href="#V2.8b_Library">Library</a>
+</ul>
+<li><a href="#Version2.7.2b">Version 2.7.2-beta (10/11/93)</a>
+<ul>
+<li><a href="#V2.7.2b_Utilities">Utilities</a>,
+ <a href="#V2.7.2b_Interpreter">Interpreter</a>,
+ <a href="#V2.7.2b_Library">Library</a>
+</ul>
+<li><a href="#Version2.7.1b">Version 2.7.1-beta (10/4/93, not distributed to the public)</a>
+<ul>
+<li><a href="#V2.7.1b_Documentation">Documentation</a>,
+ <a href="#V2.7.1b_Utilities">Utilities</a>,
+ <a href="#V2.7.1b_Drivers">Drivers</a>,
+ <a href="#V2.7.1b_Platforms">Platforms</a>,
+ <a href="#V2.7.1b_Fonts">Fonts</a>,
+ <a href="#V2.7.1b_Interpreter">Interpreter</a>,
+ <a href="#V2.7.1b_Library">Library</a>
+</ul>
+<li><a href="#Version2.7b">Version 2.7-beta (9/20/93, not distributed to the public)</a>
+<ul>
+<li><a href="#V2.7b_Documentation">Documentation</a>,
+ <a href="#V2.7b_Procedures">Procedures</a>,
+ <a href="#V2.7b_Utilities">Utilities</a>,
+ <a href="#V2.7b_Drivers">Drivers</a>,
+ <a href="#V2.7b_Platforms">Platforms</a>,
+ <a href="#V2.7b_Fonts">Fonts</a>,
+ <a href="#V2.7b_Interpreter">Interpreter</a>,
+ <a href="#V2.7b_Library">Library</a>
+</ul>
+<li><a href="#Version2.6.1">Version 2.6.1 (5/28/93)</a>
+<ul>
+<li><a href="#V2.6.1_Documentation">Documentation</a>,
+ <a href="#V2.6.1_Procedures">Procedures</a>,
+ <a href="#V2.6.1_Utilities">Utilities</a>,
+ <a href="#V2.6.1_Drivers">Drivers</a>,
+ <a href="#V2.6.1_Platforms">Platforms</a>,
+ <a href="#V2.6.1_Fonts">Fonts</a>,
+ <a href="#V2.6.1_Interpreter">Interpreter</a>,
+ <a href="#V2.6.1_Library">Library</a>
+</ul>
+<li><a href="#Version2.6">Version 2.6 (5/9/93)</a>
+<ul>
+<li><a href="#V2.6_Documentation">Documentation</a>,
+ <a href="#V2.6_Procedures">Procedures</a>,
+ <a href="#V2.6_Utilities">Utilities</a>,
+ <a href="#V2.6_Platforms">Platforms</a>,
+ <a href="#V2.6_Fonts">Fonts</a>,
+ <a href="#V2.6_Drivers">Drivers</a>,
+ <a href="#V2.6_Interpreter">Interpreter</a>,
+ <a href="#V2.6_Library">Library</a>
+</ul>
+<li><a href="#Version2.5.2">Version 2.5.2 (9/20/92)</a>
+<ul>
+<li><a href="#V2.5.2_Procedures">Procedures</a>,
+ <a href="#V2.5.2_Utilities">Utilities</a>,
+ <a href="#V2.5.2_Platforms">Platforms</a>,
+ <a href="#V2.5.2_Drivers">Drivers</a>,
+ <a href="#V2.5.2_Interpreter">Interpreter</a>,
+ <a href="#V2.5.2_Library">Library</a>
+</ul>
+<li><a href="#Version2.5.1">Version 2.5.1 (9/11/92)</a>
+<ul>
+<li><a href="#V2.5.1_Procedures">Procedures</a>,
+ <a href="#V2.5.1_Utilities">Utilities</a>,
+ <a href="#V2.5.1_Platforms">Platforms</a>,
+ <a href="#V2.5.1_Fonts">Fonts</a>,
+ <a href="#V2.5.1_Drivers">Drivers</a>,
+ <a href="#V2.5.1_Interpreter">Interpreter</a>,
+ <a href="#V2.5.1_Library">Library</a>
+</ul>
+<li><a href="#Version2.5">Version 2.5 (8/18/92)</a>
+<ul>
+<li><a href="#V2.5_Procedures">Procedures</a>,
+ <a href="#V2.5_Utilities">Utilities</a>,
+ <a href="#V2.5_Platforms">Platforms</a>,
+ <a href="#V2.5_Fonts">Fonts</a>,
+ <a href="#V2.5_Drivers">Drivers</a>,
+ <a href="#V2.5_Interpreter">Interpreter</a>,
+ <a href="#V2.5_Library">Library</a>
+</ul>
+<li><a href="#Version2.4.2">Version 2.4.2 (5/8/92)</a>
+<ul>
+<li><a href="#V2.4.2_Procedures">Procedures</a>,
+ <a href="#V2.4.2_Utilities">Utilities</a>,
+ <a href="#V2.4.2_Platforms">Platforms</a>,
+ <a href="#V2.4.2_Fonts">Fonts</a>,
+ <a href="#V2.4.2_Drivers">Drivers</a>,
+ <a href="#V2.4.2_Interpreter">Interpreter</a>,
+ <a href="#V2.4.2_Library">Library</a>
+</ul>
+<li><a href="#Version2.4.1">Version 2.4.1 (4/21/92)</a>
+<ul>
+<li><a href="#V2.4.1_Procedures">Procedures</a>,
+ <a href="#V2.4.1_Utilities">Utilities</a>,
+ <a href="#V2.4.1_Drivers">Drivers</a>,
+ <a href="#V2.4.1_Fonts">Fonts</a>,
+ <a href="#V2.4.1_Interpreter">Interpreter</a>,
+ <a href="#V2.4.1_Library">Library</a>
+</ul>
+<li><a href="#Version2.4">Version 2.4 (3/25/92)</a>
+<ul>
+<li><a href="#V2.4_Procedures">Procedures</a>,
+ <a href="#V2.4_Utilities">Utilities</a>,
+ <a href="#V2.4_Drivers">Drivers</a>,
+ <a href="#V2.4_Fonts">Fonts</a>,
+ <a href="#V2.4_Interpreter">Interpreter</a>,
+ <a href="#V2.4_Library">Library</a>
+</ul>
+<li><a href="#Version2.3">Version 2.3 (8/28/91)</a>
+<ul>
+<li><a href="#V2.3_Utilities">Utilities</a>,
+ <a href="#V2.3_Drivers">Drivers</a>
+</ul>
+<li><a href="#Version2.2">Version 2.2 (6/1/91)</a>
+<ul>
+<li><a href="#V2.2_Procedures">Procedures</a>,
+ <a href="#V2.2_Drivers">Drivers</a>,
+ <a href="#V2.2_Fonts">Fonts</a>,
+ <a href="#V2.2_Utilities">Utilities</a>,
+ <a href="#V2.2_Interpreter">Interpreter</a>,
+ <a href="#V2.2_Library">Library</a>
+</ul>
+<li><a href="#Version2.1.1">Version 2.1.1 (1/15/91)</a>
+<ul>
+<li><a href="#V2.1.1_Build_procedures">Build procedures</a>,
+ <a href="#V2.1.1_Interpreter">Interpreter</a>,
+ <a href="#V2.1.1_Drivers">Drivers</a>,
+ <a href="#V2.1.1_Library">Library</a>
+</ul>
+<li><a href="#Version2.1">Version 2.1 (12/31/90)</a>
+<ul>
+<li><a href="#V2.1_Build_procedures">Build procedures</a>,
+ <a href="#V2.1_Drivers">Drivers</a>,
+ <a href="#V2.1_Fonts">Fonts</a>,
+ <a href="#V2.1_Interpreter">Interpreter</a>,
+ <a href="#V2.1_Library">Library</a>
+</ul>
+<li><a href="#Version2.0">Version 2.0 (9/12/90)</a>
+<ul>
+<li><a href="#V2.0_Miscellaneous">Miscellaneous</a>,
+ <a href="#V2.0_Drivers">Drivers</a>,
+ <a href="#V2.0_Build_procedures">Build procedures</a>,
+ <a href="#V2.0_Interpreter">Interpreter</a>,
+ <a href="#V2.0_Library">Library</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a history of Ghostscript releases numbered 2.n. For more
+recent changes, see the the other history documents and, for the latest
+versions, the new:
+
+<blockquote>
+<a href="News.htm">News</a><br>
+<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
+<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
+History of Ghostscript versions 2.n (this document)<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] ============================================== -->
+
+<h2><a name="Version2.9.10b"></a>Version 2.9.10-beta (7/28/94)</h2>
+
+<p>
+This is the last 2.9 beta, since 3.0 will be released on July 31.
+
+<h3><a name="V2.9.10b_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A | in gs.1 had a \ in front of it instead of \\.
+
+Adds a paragraph in gs.1 that tells how to select paper size.
+
+Notes in devs.mak that the cdj550 driver is the best one for the H-P
+DeskJet 520, and the pjxl300 driver is the right one for the H-P DeskJet
+1200C.
+
+Notes in make.doc that Watcom C++ 10.0 may require a change in a makefile.
+
+</pre><h3><a name="V2.9.10b_Procedures"></a>Procedures</h3><pre>
+Removes ICCINIT from MODULES.LIS for VMS systems.
+
+Updates VMS.MAK to support Motif V1.2.
+
+Updates jpeg.mak to work with version 5alpha4 of the IJG JPEG code.
+
+</pre><h3><a name="V2.9.10b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - font2c didn't leave extra room in Type 0 font dictionaries for
+entries added by definefont.
+ - font2c left extra information on the stack.
+ - ansi2knr would remove newline characters within formal argument
+lists.
+ - font2c got an Error: /undefined in makefontprocname.
+
+Updates ansi2knr to work better with the GNU configure program.
+
+Updates ansi2knr to handle procedure formal arguments automatically.
+
+</pre><h3><a name="V2.9.10b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - If a file contained color or gray-scale information followed by a
+masked image, the X driver would sometimes invert the polarity of the
+image.
+
+</pre><h3><a name="V2.9.10b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - Unix systems with a 2-argument gettimeofday returned garbage
+values for the current time.
+ - The VMS build script for compiled fonts omitted the requirement
+to load gs_ccfnt.ps.
+ - memory_.h didn't note that System V Unix platforms need memmove.
+
+On Unix systems, changes the subdirectory of $datadir/ghostscript to just
+be the version number (e.g., 2.9.10 rather than gs-2.9.9).
+
+</pre><h3><a name="V2.9.10b_Fonts"></a>Fonts</h3><pre>
+Adds support code for the Wadalab (University of Tokyo) free Kanji font.
+
+Notes in the documentation in Fontmap that .pfa and .pfb fonts are
+compatible with ATM, but .gsf fonts are not.
+
+Changes the names of Thomas Wolff's expanded Hershey fonts, replacing .gsf
+with .pfa.
+
+</pre><h3><a name="V2.9.10b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The scanner became confused if the literal names /&lt;&lt; or /&gt;&gt;
+straddled an input buffer boundary.
+ - .setlanguagelevel gave an invalidaccess error when
+switching from level 2 to level 1.
+ - currentgstate, setgstate, and copy for gstates didn't do
+the necessary access checks.
+ - The Category resource category didn't define .ResourceFile, so
+/Category resourcestatus gave an error.
+ - The garbage collector didn't trace the structures used by
+filenameforall properly on most platforms.
+ - Automatically expanding systemdict didn't work, but didn't give
+an error.
+ - Automatically expanding a dictionary usually expanded it by too
+much.
+ - systemdict was created too small.
+ - The garbage collector didn't trace the structures referenced only
+from allocator objects, leading to attempts to access freed storage.
+ - If a chunk was empty, the GC tried to free it even if it had
+inner chunks.
+* - The outer loop in dict_find_name_by_index() could cause an
+addressing fault on segmented machines when looking up Level 2 operators,
+because the offset could get decremented past 0.
+ - The heap_available procedure in gsmemory.c didn't convert
+properly to non-ANSI syntax. (New bug in 2.9.9.)
+ - The ledgertray procedure wasn't implemented.
+ - The xxxtray procedures didn't set the page size.
+ - The settumble operator wasn't implemented, even as a dummy.
+ - glyphshow didn't work with Type 3 fonts.
+ - Supplying a RenderTable for a CIE color space caused an error.
+ - The DCT filter code had the jpeg/ subdirectory name "wired in" to
+the source files.
+
+Adds experimental filters for Burrows/Wheeler block sorting compression
+(BWBlockSortEncode/Decode), described in DEC SRC Research Report #124,
+move-to-front coding (MoveToFrontEncode/Decode), and a simple form of
+Huffman coding (BoundedHuffmanEncode/Decode). These are experimental -- do
+not rely on them remaining the same (or existing at all) in future
+releases!
+
+Adds all function prototypes needed to pacify strict compilers.
+
+Removes all explicit references to userdict from the C code.
+
+Changes the SAFER switch so that it disallows not only explicit writing,
+deleting, or renaming of files, but also disallows specifying an explicit
+OutputFile for any device (except for the initial device, by means of
+-sOutputFile= on the command line).
+
+</pre><h3><a name="V2.9.10b_Streams"></a>Streams</h3><pre>
+Fixes bugs:
+ - Hex decoding (ASCIIHexDecode stream and &lt;&gt; literals) didn't treat
+the data source as read-only (although it restored it to its original
+contents).
+
+Implements move-to-front coding, a simple form of Huffman coding, and
+Burrows/Wheeler block sorting compression.
+
+</pre><h3><a name="V2.9.10b_Library"></a>Library</h3><pre>
+Fixes bugs:
+* - (The following bug fix was actually implemented somewhere around
+version 2.7.) restore didn't purge character cache entries whose keys were
+names created more recently than the save.
+ - gstype1.h declared gs_type1_state_sizeof as an extern, but this
+wasn't defined anywhere.
+ - gs_makeimagedevice didn't set the size of the palette correctly,
+which confused the GC.
+ - gs_makeimagedevice didn't set num_components to 1 for
+mapped-color devices with only gray values.
+* - The two-color halftoning algorithms truncated when computing the
+halftone level, rather than rounding it.
+* - If a path being filled had line segments that fell entirely to
+the right of the clipping region, part of the path might not be filled.
+ - The optimized code for 24-bit color didn't ensure properly that
+32-bit accesses would be aligned appropriately.
+ - The miter join check had gotten reversed somewhere along the way.
+* - Because x and y were interchanged in the miter check computation,
+in some situations the check was inverted. (This is a very old bug!)
+ - It was believed that strokepath didn't work with dashed lines;
+the problem appears to have been an incorrect testing program.
+
+Adds all function prototypes needed to pacify strict compilers.
+
+Changes fixed2float so it doesn't cast the result to float, and removes
+fixed2double. This produces slightly more accurate results in many places,
+and may even be faster (for FPUs that normally generate double rather than
+single precision results).
+
+</pre>
+
+<h2><a name="Version2.9.9b"></a>Version 2.9.9-beta (6/23/94)</h2>
+
+<h3><a name="V2.9.9b_Documentation"></a>Documentation</h3><pre>
+Puts a pointer to devs.mak in the section of use.doc that talks about
+MS-DOS displays.
+
+</pre><h3><a name="V2.9.9b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The %pipe% IODevice was omitted on System V platforms.
+ - The AXP VMS build script needed /NESTED_INCLUDE=PRIMARY in
+CC_QUAL to work around a bug in the DEC C compiler.
+
+</pre><h3><a name="V2.9.9b_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+ - gs_lev2.ps redefined .loadFontmap incorrectly.
+
+</pre><h3><a name="V2.9.9b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - stream_compact used memcpy even though the source and destination
+might overlap.
+ - filter applied to a closed file could cause a crash.
+
+</pre><h3><a name="V2.9.9b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - putdeviceparams to a printer didn't close and reopen the device
+if only the page size or resolution was changed.
+
+</pre>
+
+<h2><a name="Version2.9.8"></a>Version 2.9.8 (6/20/94)</h2>
+
+<p>
+This is the first version that claims to be a full Level 2
+implementation.
+It was distributed to satisfy a contractual requirement.
+</p>
+
+<h3><a name="V2.9.8_Documentation"></a>Documentation</h3><pre>
+In make.doc:
+ - Adds a reference to the generic System V section at the end of
+the SCO section.
+ - Notes that DEC OSF/1 systems may require changing the name of the
+install program to installbsd.
+
+Updates drivers.doc to reflect the change from "properties" to
+"parameters".
+
+Updates the Aladdin Enterprises Free Public License to version 1.
+
+In language.doc, notes that certain device parameters will be phased out.
+
+</pre><h3><a name="V2.9.8_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The file aa.ps was included in the distribution by mistake.
+
+Notes in the Unix makefiles that X11R6 probably needs SM and ICE added to
+XLIBS.
+
+</pre><h3><a name="V2.9.8_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - viewjpeg.ps used a non-existent file as its example.
+ - A temporary string in wrfont.ps was allocated too small.
+
+Upgrades font2c.ps so it will handle (simple) Type 0 fonts as well as Type
+1.
+
+</pre><h3><a name="V2.9.8_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The TIFF drivers didn't byte-align each scan line.
+ - gdevtfax.c applied &amp; to an array member of a structure.
+
+Changes the param_list interface slightly: Implementations of the
+put_params driver procedure should now use param_signal_error to report
+errors, and should not give up at the first error. (Even though this is a
+non-backward-compatible change, old implementations will continue to work;
+they just won't deliver complete results to the setpagedevice Policies
+machinery.)
+
+</pre><h3><a name="V2.9.8_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - Removes the time zone adjustment from gp_get_clock in gp_unix.c,
+since the value returned by all Unix systems is bogus.
+ - The DV/X makefile still included the dfaxhigh and dfaxlow drivers.
+ - gssetmod.com (VMS command file) didn't work properly if the
+argument list was empty.
+ - vms.mak, vms-axp.mak, and modules.lis hadn't been updated to
+reflect changes in 2.9.7.
+ - The MS Windows version wouldn't link (overflowed the 64K primary
+data segment).
+
+</pre><h3><a name="V2.9.8_Fonts"></a>Fonts</h3><pre>
+Makes the font substitution algorithm somewhat more intelligent.
+
+</pre><h3><a name="V2.9.8_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - Enumerating the pointers of a zero-length array of structures
+caused a divide by zero.
+ - iref.h didn't protect itself against multiple inclusion.
+ - The CCITTFaxEncode filter didn't byte-align the final
+end-of-block code if EndOfBlock and EncodedByteAlign were both true.
+ - make_initial_dict in iinit.c used `name' as a formal parameter
+name, which some compilers believe conflicts with a typedef.
+ - Not all internal operators had registered names.
+ - The GC used memcpy, rather than bytes_copy, when compacting
+objects, even though the source and destination might overlap.
+ - When debugging was enabled, gc_string_mark could give a spurious
+error indication.
+ - vmstatus returned too small a value for the maximum VM.
+ - The scanner could get into a loop when reading a radix-85 string.
+ - The GC could get into a state where it was called after every
+allocation (because of the patch setting global = true in ireclaim).
+ - The general path filling algorithm didn't skip regions that were
+completely outside the clipping box.
+ - The gs_screen_enum structure contained a pointer (porder) that
+pointed into the middle of a structure, confusing the GC.
+
+Implements the BitmapWidths flag in fonts. The default of false means that
+we use scalable widths even with xfonts.
+
+Changes the Generic resource category so that ResourceFileName is optional.
+
+Changes the .getdeviceparams operator so that it takes an optional
+dictionary giving the set of keys whose values are wanted. Changes the
+.putdeviceparams operator so that it takes an optional policy dictionary
+specifying the action to be taken on errors, and returns a list of keys and
+errors if it fails, rather than causing an error. These are
+non-backward-compatible changes, but ordinary programs do not use these
+operators.
+
+Changes the names of some internal operators and procedures by adding
+a . to the beginning:
+ currenttime
+ devicename
+
+Implements currentpagedevice, and a small subset of setpagedevice. Only
+the following keys in the page device dictionary are known to the current
+implementation, and the ones marked with * are not actually processed:
+ PageSize
+ InputAttributes
+ MediaColor, MediaWeight, MediaType, InsertSheet
+ (for InputAttributes matching only)
+ *ImagingBBox
+ OutputAttributes
+ OutputType
+ (for OutputAttributes matching only)
+ NumCopies
+ HWResolution
+ *Margins
+ *Orientation (for all devices, not just roll devices)
+ Policies
+ Install
+ BeginPage
+ EndPage
+Does not implement:
+ - Updating InputAttributes or OutputAttributes by sensing the state
+ of the device;
+ - Retrying media matching after an initial failure;
+ - Automatic handling of portrait vs. landscape page size;
+ - Recording the CTM after Install as the one to be used for
+ defaultmatrix, initmatrix, and initgraphics.
+Also, media matching is normally disabled (with InputAttributes = null)
+for all devices. ****** We had to disable setpagedevice just before
+shipping this release, because of interactions with the older device
+handling machinery that we could not fix in the time available.
+
+</pre><h3><a name="V2.9.8_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - 24-bit color (mem_true24_fill_rectangle and _copy_mono) had
+algorithm bugs.
+ - A complex conditional expression in gx_render_gray wouldn't
+compile properly with the DECStation 3100 Ultrix 4.3 compiler.
+ - The GC routines for gx_device_clip didn't handle the case where
+the 'current' pointer pointed to list.single.
+ - gx_add_char_bits used memcpy, rather than bytes_copy, for
+compressing character bitmaps, even though the source and destination might
+overlap.
+ - Some compilers require the definition of st_gstate_contents to
+precede the definitions of the GC procedures.
+ - Filling a large rectangle (more than 1K of bitmap) with a colored
+halftone overwrote random areas of the stack.
+
+Changes gs_setcachedevice[2] to take a pointer to an array of floats,
+rather than 6 or 10 individual floats. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE.
+
+Implements the BitmapWidths flag in fonts.
+
+</pre>
+
+<h2><a name="Version2.9.7b"></a>Version 2.9.7-beta (6/5/94)</h2>
+
+<p>
+Yet another pre-3.0 beta. The main features are a fairly reliable
+garbage
+collector, and function prototypes almost everywhere they are needed.
+
+<h3><a name="V2.9.7b_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The comment at the beginning of the zfindlibfile procedure was
+incorrect.
+
+Replaces the GNU License (the COPYING file) with version 0 of the new
+Aladdin Enterprises Free Public License (the PUBLIC file).
+
+</pre><h3><a name="V2.9.7b_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The definition of cmykread.dev in gs.mak was incorrect (it
+modified color.dev).
+
+Adds the ability to specify a value for FONTPATH on the command line
+(-sFONTPATH=), overriding GS_FONTPATH.
+
+Replaces the -oper2 configuration resource type with the ability to specify
+in the op_def list the dictionary in which operators will be defined. (See
+opdef.h for more details.) This is an internal change only.
+
+</pre><h3><a name="V2.9.7b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - viewgif.ps got an error on interlaced GIF files whose height
+wasn't a multiple of 8.
+
+Changes traceop.ps so it stores the traced operator in the same dictionary
+where the operator is currently defined, if possible.
+
+</pre><h3><a name="V2.9.7b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The new G3 fax drivers crashed on page widths greater than 2623
+(40 * 64 + 63) pixels. (We fixed this by disallowing page widths greater
+than approximately twice this.)
+ - The 24-bit PCX driver had some debugging code accidentally left
+in it that produced large volumes of useless console output.
+
+Removes the previous (Leffler) TIFF/F driver and the TruFax driver.
+
+</pre><h3><a name="V2.9.7b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - time_.h, gp_unix.c, and gp_sysv.c didn't do the right thing on
+SVR4 platforms, where gettimeofday only takes 1 argument.
+ - The final linking command on Turbo C platforms didn't specify the
+COMPDIR directory for the linker.
+
+</pre><h3><a name="V2.9.7b_Fonts"></a>Fonts</h3><pre>
+
+Changes the standard Fontmap to use the URW contributed fonts as
+work-alikes for Helvetica and Times Roman.
+
+</pre><h3><a name="V2.9.7b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The garbage collector wasn't in a consistent state.
+ - In Level 2 mode, statusdict was allocated in global VM rather
+than local VM.
+ - resourceforall gave an error on the built-in categories such as
+Filter.
+ - The file searching algorithm didn't check the current directory
+first.
+ - When opening a file failed, it didn't return a different error
+depending on the problem.
+ - The CCITTFaxEncode filter crashed on widths larger than 2623 (64
+* 40 + 63) pixels. (We fixed this by disallowing page widths greater than
+approximately twice this.)
+ - The .type1getsbw operator gave an invalidfont error if a
+CharString started with anything other than a [h]sbw. (Adobe's published
+specs say this is invalid, but some Adobe MultiMaster fonts start with a
+callsubr and/or a callothersubr.)
+ - When printing out the stack with == after an error, the error
+handler got a repeated (and ultimately fatal) typecheck error if it
+encountered an object of non-standard type.
+ - The token operator could incorrectly attempt to free a structure
+on the stack if it encountered an input buffer boundary.
+ - string_to_ref didn't correctly set the a_local flag in the string
+object it created.
+ - If the -c switch was the last switch on the command line,
+Ghostscript always exited without going into interactive mode.
+ - copy didn't check for errors when copying a dictionary.
+
+Makes many minor changes (mostly adding prototypes) to reduce error and
+warning messages from gcc and other strict compilers.
+
+Adds files containing the 4 predefined PDF encodings (MacRoman, MacExpert,
+WinAnsi, and PDFDoc).
+
+</pre><h3><a name="V2.9.7b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - image_bbox in gxccman.c could produce a division by 0 if a
+0-width character was being entered into the cache.
+ - gx_image_cached_char incorrectly specified a scale of 2x2 rather
+than 1x1 if it had to read bits from an xfont.
+ - Stale pointers in the halftone cache weren't cleared properly by
+a restore. (We fixed this by making grestoreall clear the halftone cache.)
+ - setdash used gs_malloc, rather than the current allocator, for
+allocating the dash pattern.
+ - If one attempted to fill a very wide region with a colored
+halftone, gx_dc_ht_colored_fill_rectangle would loop indefinitely.
+ - The container_offset in clipping devices was set incorrectly,
+causing the garbage collector to mangle pointers.
+
+Changes the fopen routine in IODevices so that it can return an arbitrary
+error code, rather than simply succeeding or failing. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE. It only affects IODevice implementations,
+of which there are very few. (It doesn't affect ordinary device drivers.)
+
+Changes the char_metrics xfont procedure so it returns the width as
+floating point numbers rather than integers. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE. It only affects xfont implementations, of
+which there are very few.
+
+Makes many minor changes (mostly adding prototypes) to reduce error and
+warning messages from gcc and other strict compilers.
+
+</pre>
+
+<h2><a name="Version2.9.6b"></a>Version 2.9.6-beta (5/23/94, not
+distributed to the public)</h2>
+
+<p>
+This, too, was supposed to be the last beta release for public
+release 3.0.
+It was created primarily for a user who desperately needed a Level 1 system
+that would run properly on a 64-bit hardware architecture. The garbage
+collector is badly broken (it's in the middle of an architectural change);
+setpagedevice is still not implemented.
+
+<h3><a name="V2.9.6b_Documentation"></a>Documentation</h3>
+
+<pre>
+Documents the standard location of Type 1 fonts on AIX.
+
+Changes the last few mentions of Ghostview for Microsoft Windows to GSview
+for Windows.
+
+Notes that Solaris 2.n provides the X11 header files in a different place.
+
+Changes README to reflect the differentiation between Aladdin Ghostscript
+and GNU Ghostscript.
+
+</pre>
+<h3><a name="V2.9.6b_Procedures"></a>Procedures</h3>
+
+<pre>
+Fixes bugs:
+ - The compilation rules for the modules that call the IJG library
+used -Ijpeg rather than -I$(JPEGSRC).
+ - The rule for gslib.dev omitted echogs$(XE) as a prerequisite.
+
+Makes it possible to define the values of buildtime, copyright, revision,
+revisiondate, and serialnumber in the makefile.
+
+</pre><h3><a name="V2.9.6b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - The viewgif.ps utility didn't handle local color tables.
+
+Updates ps2ai.ps to version 1.81.
+
+</pre><h3><a name="V2.9.6b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The TIFF and fax devices used some identical names, causing
+linker complaints.
+ - The bj10e/bj200 driver inadvertently disabled the sheet feeder.
+(The change may not actually fix this bug, since we don't have either of
+these printers with a sheet feeder to test it on.)
+ - The 'bit' device didn't map colors to pixel values correctly.
+ - The monochrome PCL driver didn't work around the fact that the
+Canon LBP4i printer didn't clear its seed row correctly.
+
+Adds new drivers:
+ - A user-contributed driver for the H-P DesignJet 650C.
+ - A user-contributed driver for the Canon LIPS III printer.
+ - A completely new tiffg3 driver with one based on the new, fast
+faxg3 code. This driver does not include any external code, and carries an
+Aladdin copyright.
+ - A tiffg4 driver, also based on the fast CCITT filter code.
+
+Removes the tiffg3x driver that appeared briefly in 2.9.5, and renames the
+previous (Leffler) tiffg3 driver as tiffg3x.
+
+Adds support for A0, A1, and A2 paper sizes to PCL drivers.
+
+Changes all the names involving "props" to "params", for consistency with
+the header files, some other internal interfaces, and Adobe's terminology.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. However, it only affects devices
+that implement their own get_props and put_props procedures, of which there
+aren't very many.
+
+</pre><h3><a name="V2.9.6b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The DV/X makefile used X11 rather than X for the X11 library name.
+ - The DV/X makefile incorrectly included the PC display drivers.
+ - The DV/X makefile omitted gp_dosfs.$(OBJ) from the list of
+platform-specific files.
+ - The DV/X makefile used : rather than ; for separating directory
+names in GS_LIB_DEFAULT.
+ - x_.h omitted a needed alias for XtAppSetFallbackResources.
+ - The makefile entry for System V Unix systems didn't include
+gp_unifn.$(OBJ).
+ - The comment before LDFLAGS in the gcc makefiles incorrectly
+suggested using the -x switch on Ultrix platforms.
+ - The forward declaration of quant_params in zfdct.c upset the Sun
+compiler because it declared a parameter as float rather than floatp.
+* - The Microsoft C compiler, like the Borland C compilers, only
+compares the offset part of segmented pointers.
+
+</pre><h3><a name="V2.9.6b_Fonts"></a>Fonts</h3><pre>
+
+Adds a fontmap suitable for use with Adobe Type Basics.
+
+</pre><h3><a name="V2.9.6b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The STACK_LOOP_BEGIN macro in istack.h didn't work correctly on
+segmented systems.
+ - The end_phase procedure in igc.c didn't work correctly on
+segmented systems.
+ - Indexed color spaces didn't mark their base space properly when
+garbage collecting.
+ - The garbage collector didn't work on segmented systems, because
+it smashed the lsize field of large objects with mark/reloc information.
+ - Some structures didn't have correct associated GC procedures:
+gs_indexed_map, gs_client_pattern, gs_pattern_instance.
+ - restore could free names or stack segments that were still
+referenced.
+* - If a packed object caused an error, the error object could be set
+to garbage rather than the correct object.
+* - Badly designed error handlers which use $error for temporary
+storage could cause a dictfull error.
+ - Some compilers objected to the use of "dict" as a variable name
+in a scope where it was defined as a type.
+ - IODevices were declared const and non-const inconsistently.
+ - setpagedevice popped one object too many off the stack if the
+request included any subdictionaries that needed to be merged.
+ - More garbage collector bugs were fixed.
+ - If the current stack block was empty, Level 2 restore would give
+a spurious typecheck error.
+ - The CCITTFaxEncode filter could get confused if it emptied the
+input and filled the output at the same time.
+ - The CCITTFaxEncode filter could insert an extra EOL if it had to
+suspend at certain times.
+ - The new parser for literal strings (as of 2.9.5) could mis-count
+internal parentheses if a parenthesis caused the internal buffer collecting
+the string to overflow.
+ - If the current stack block had fewer than 3 elements,
+.type1addpath could report a spurious typecheck error.
+ - Text rendering operations (show, stringwidth, etc.) caused a
+crash if the current color was a Pattern that hadn't already been
+rasterized.
+ - If a program did a grestore when the graphics state stack was
+empty, the graphics state was initialized to unexpected (and, in some
+cases, invalid) values.
+ - pathforall could cause a bogus stackoverflow if it overflowed the
+current stack block.
+ - Closing an encoding filter with a procedure as target left the
+filter on the stack.
+* - The outer loop in dict_lookup() could cause an addressing fault
+on segmented machines when looking up Level 2 operators, because the offset
+could get decremented past 0.
+ - There was an = instead of an == in a test in scanner_reloc_ptrs.
+ - The call on gs_reloc_refs in sproc_reloc_ptrs in zfproc.c omitted
+the last (gcst) argument.
+
+(Re-)implements the 2-D case of CCITTFaxEncode, and fixes a couple of bugs
+in it.
+
+Adds DiffEncode and DiffDecode filters that implement color prediction for
+the PDF variant of the LZWDecode filter.
+
+Changes the specification of .oserrorstring to be similar to getenv,
+where, etc. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no
+user-written code should be using .oserrorstring.
+
+Adds oversampling for better character rasterizing.
+
+</pre><h3><a name="V2.9.6b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - gx_dc_ht_colored_fill_rectangle gave a compiler warning because
+of a problem with const pointers.
+ - dfmul2fixed_vars (in gxfixed.h) omitted the &amp; before vda on
+big-endian platforms, causing compilation errors.
+ - IODevices were declared const and non-const inconsistently.
+ - The Type 1 rasterizer never enabled overshoot suppression.
+ - stroke didn't fatten the line properly if stroke adjustment was
+enabled, or if the line was horizontal or vertical.
+* - The clipping test for characters was too strict by almost 1
+pixel, leading to unnecessary clipping of text at the edge of the clipping
+box.
+* - The initial clipping box was computed incorrectly for devices
+whose initial transformation matrix included a rotation.
+
+Changed the implementation of clipping lists and show enumerators to use
+separate objects rather than embedded objects, to pacify the GC. (This is
+an internal change, not visible at the PostScript or API level.)
+
+Makes the character cache trim off left and right blank areas, as well as
+top and bottom. (Internal change.)
+
+Adds oversampling for better character rasterizing.
+
+</pre>
+
+<h2><a name="Version2.9.5b"></a>Version 2.9.5-beta (4/11/94)</h2>
+
+<p>
+This was supposed to be the last beta release before 3.0, but it
+won't be.
+The only known major defects are the unreliable garbage collector, and the
+dummy implementation of setpagedevice/currentpagedevice.
+
+<h3><a name="V2.9.5b_Documentation"></a>Documentation</h3>
+
+<pre>
+Fixes bugs:
+ - The file commnew.doc didn't belong in the fileset.
+
+Notes in the makefiles that SVR4 systems may need to set EXTRALIBS=-lnsl.
+
+Adds a user-contributed `man' page for the ps2epsi utility.
+
+</pre><h3><a name="V2.9.5b_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The IJG files didn't compile properly by themselves, because they
+didn't have $(AK) in their dependency list.
+
+Changes back the handling of files named on the command line, so that they
+are first sought in the current directory, and if that fails, use the
+search path. (2.9.4-beta changed things so that files on the command line
+did not use the search path, because as of that version, the search path
+doesn't necessarily include the current directory. I consider the "check
+the current directory and then use the search path" rule, which is the
+MS-DOS standard and was used in Ghostscript prior to 2.9.4, a serious
+mistake, since it is one of the best-known security holes in Unix and can
+also produce confusing and unexpected results depending on the current
+directory; I would much rather have a clear distinction between
+user-specified files, which should not use any path searching, and system
+files, that only use the defined search path. However, as of this moment,
+users seem to want the convenience at the expense of insecurity and
+confusion.)
+
+Adds '.' to the beginning of the search path for MS-DOS platforms, to
+conform to the usual MS-DOS file searching convention.
+
+Adds a -c ("code") switch, which interprets following arguments (until the
+next switch) as PostScript tokens.
+
+Changes the handling of FEATURE_DEVS so that either level1.dev or
+level2.dev must normally be selected. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE for Level 1 systems, which formerly set FEATURE_DEVS to an empty
+definition.
+
+</pre><h3><a name="V2.9.5b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - bench.ps didn't switch back to local VM properly before running
+the program being benchmarked.
+
+Adds a ppmsetpagesize command to the pstoppm utility.
+
+</pre><h3><a name="V2.9.5b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The PCX and GIF drivers used an incorrect algorithm for computing
+the blue component of the color palette, which could cause colors to come
+out with not quite enough blue.
+ - The SPARCprinter driver wouldn't compile with non-ANSI compilers.
+
+Adds new drivers:
+ - A user-contributed driver for DEC sixel displays like the VT240
+(sxlcrt, in gdevln03.c, which has a FSF copyright.)
+ - A much larger and supposedly faster version of the TIFF/F driver
+(tiffg3x, in gdevtifx.c), contributed by a user. This has the same
+copyright as the TIFF/F driver (gdevtiff.c).
+ - A driver (faxg3, in gdevfax.c) that produces plain Group 3 fax
+output with no header, using the CCITTFaxEncode filter to do the work.
+(This is around 2.5-3 times as fast as the other fax drivers distributed
+with Ghostscript.)
+ - A user-contributed driver for the Mitsubishi CP50 color printer.
+
+Changes the `bit' driver so one can set the Colors and *Values properties.
+
+Makes the color mapping for PC displays, PCX files, and GIF files identical
+(they differed slightly before).
+
+</pre><h3><a name="V2.9.5b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - VMS used DISPLAY rather than DECW$DISPLAY to get the display name
+if opening the display failed.
+ - Many minor bugs relating to OS/2 and Win32 were fixed.
+ - On Unix and DV/X platforms, the install script didn't mkdir
+$(gsdir), and didn't mkdir the intermediate directory for the man page.
+ - On BSD and UTek platforms, the declaration of memset in
+memory_.h, and the definition in gsmisc.c, conflicted with the ANSI
+declaration.
+ - One of the SPARC compilers compiled the intersection computation
+in arc_either (gspath.c) incorrectly.
+ - The temporary file names created under OS/2 could exceed the 8.3
+length limit.
+
+</pre><h3><a name="V2.9.5b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The test files for the IJG library had been damaged by EOL
+conversion.
+ - The garbage collector didn't mark some of the most recently
+created names.
+ - The interpreter would sometimes report a typecheck instead of a
+stackunderflow.
+ - If aload didn't have enough room on the stack, it would report a
+rangecheck rather than a stackoverflow.
+ - zcontext wouldn't compile, because it hadn't been updated to the
+new GC interfaces.
+ - The definition of private_st_stream_proc_state in ifilter.h ended
+with a semicolon, which upset some compilers.
+ - load didn't check to make sure that the dictionaries it examined
+had read access.
+ - cvrs didn't handle negative numbers in radix 2 or 3 properly.
+ - The allocator could become confused if it was asked to allocate a
+large array.
+ - readline gave an ioerror rather than a rangecheck if it
+overflowed the string.
+ - The allocator didn't free packed arrays properly.
+ - The allocator's check for LIFO freeing of arrays was off by 1, so
+it never succeeded.
+ - The undercolor removal and black generation procedures weren't
+initialized properly.
+ - If the interpreter couldn't find gs_init.ps, it returned a random
+exit code.
+ - If an operator expected a procedure and didn't get one, it
+sometimes gave an invalidaccess rather than a typecheck.
+ - Unix file enumeration often did the wrong thing if there were
+directories in the pattern.
+ - The ASCIIHexDecode filter read an extra character after the
+terminating &gt;.
+ - scalefont didn't fill in ScaleMatrix properly.
+ - The CCITTFaxEncode filter crashed if the width of the page wasn't
+a multiple of 8 bits.
+ - The error printing code used .languagelevel, which wasn't defined
+in Level 1 configurations.
+ - setpagedevice didn't pop its argument.
+ - Definitions in statusdict didn't change according to the current
+language level.
+ - Separation color spaces didn't allow strings as color space names.
+ - Due to a bug in chunk_locate_ptr, the garbage collector sometimes
+decided incorrectly that a pointer was pointing outside collectable space.
+ - (Many other garbage collector bugs were fixed.)
+
+Implements additional Level 2 features:
+ - Garbage collection for strings.
+ - Expandable operand and dictionary stacks, and the ability to set
+ the maximum size of these stacks.
+ - Additional user and system parameters. The following are dummies:
+ AccurateScreens, JobName, JobTimeout, WaitTimeout.
+ - Procedure-based filters usable with cvx/exec and token.
+ - Separation color spaces (always using the alternate space).
+ (These were theoretically implemented in version 2.6, but they were
+ never tested and were actually missing most of the implementation.)
+ - VMThreshold and VMReclaim for invoking GC automatically.
+
+Adds a hook in iscan.c for parsing DSC comments.
+
+Adds encoding and decoding filters for the BCP and TBCP protocols. These
+are not fully implemented yet:
+ - The interrupt and status request characters are ignored on input,
+ and never generated on output;
+ - The TBCP encoder doesn't emit the start-of-protocol string;
+ - The TBCP decoder doesn't recognize the end-of-protocol string.
+
+Factors out Type 1 font capability as a separate feature.
+
+Changes the names of some files:
+ packed.h to ipacked.h;
+ bnum.h to ibnum.h.
+
+Changes the name of the value.index member of a ref to value.boolval.
+(Internal change only.)
+
+</pre><h3><a name="V2.9.5b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - The definition of RELOC_PTRS_BEGIN in gsstruct.h wouldn't compile
+properly with non-ANSI compilers.
+ - The JPEG library wouldn't compile properly with non-ANSI compilers.
+* - The platform font machinery gave up too easily in some cases.
+ - CMYK devices needing halftoning converted the CMYK color to RGB.
+ - The debugging code in arc_add (gspath.c) didn't print the output
+values correctly.
+
+Factors out Type 1 font capability as a separate feature.
+
+</pre>
+
+<h2><a name="Version2.9.4b"></a>Version 2.9.4-beta (2/19/94)</h2>
+
+<h3><a name="V2.9.4b_Procedures"></a>Procedures</h3>
+
+<pre>
+Changes Ghostscript's path searching algorithm so that it does not
+automatically look in the current directory first. (The former algorithm
+was more MS-DOS-like; the new one is more Unix-like.) If you want to
+include the current directory, you must include '.' in the search path.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
+
+Adds two new resource types for genconf.c:
+ - -header filexxx.h adds #include "filexxx.h" to gconfig.h.
+ - -libpath dir adds dir to the list of library search paths.
+
+</pre><h3><a name="V2.9.4b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - impath.ps (used by bdftops) computed the starting X coordinate
+incorrectly, typically causing characters to be displaced slightly to the
+right.
+ - pstoppm.ps didn't handle local and global VM properly.
+
+Adds a ps2ai.ps utility, contributed by a user, for converting arbitrary
+PostScript files into a form compatible with Adobe Illustrator.
+
+</pre><h3><a name="V2.9.4b_Drivers"></a>Drivers</h3><pre>
+
+Adds new drivers:
+ - A user-contributed driver for Imagen Impress laser printers.
+ - A user-contributed driver for the DEC LA75plus printer.
+
+</pre><h3><a name="V2.9.4b_Platforms"></a>Platforms</h3><pre>
+
+Under OS/2, adds the ability to keep Ghostscript in memory for a
+specified number of minutes.
+
+Adds support for Win32 and Win32s.
+
+Changes the MS Windows platform font interface so that it does not attempt
+to render fonts at sizes smaller than 6 pixels. Changes the X Windows
+interface, which already did this for 4-point and smaller fonts, to also
+use a lower limit of 6 pixels. Also changes the X Windows platform font
+machinery so it does not render fonts at sizes larger than 36 pixels: at
+large sizes, Ghostscript does a perfectly good job, and some X font servers
+rasterize the entire font and lock up the entire window system while doing
+so.
+
+</pre><h3><a name="V2.9.4b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - currentdash always returned a new array of reals, rather than the
+actual argument of setdash.
+ - Strings in binary object sequences read in as integers.
+ - Because of a bug in chunk_locate_ptr, some large objects didn't
+get freed properly.
+ - If an error occurred while processing an image, Ghostscript would
+attempt to free random blocks of storage.
+ - Input filters discarded trailing data, rather than filling it out
+with zeros. (This is now fixed for ASCIIHexDecode and ASCII85Decode; it's
+not clear what other filters it should affect.)
+ - The ASCII85Encode filter produced garbage output for the final
+1-4 bytes before EOD.
+* - The TIFF output driver produced incorrect output for the second
+and subsequent pages if the output was being produced on multiple files.
+* - The default handleerror did a 'stop', which was not correct.
+ - gpcheck.h converted all positive return codes to 0 if interrupt
+checking was enabled.
+ - Images with multiple data sources didn't work.
+ - Images with 12-bit sample values didn't work.
+ - Images with a file as the data source read additional data beyond
+what was required.
+ - 2 vmreclaim worked (pretty much), but 1 vmreclaim didn't.
+ - If %lineedit was opened multiple times, characters from later
+openings overwrote characters from earlier ones.
+ - token returned garbage for the "remaining string" result when
+reading from a string, if it actually read all of the string. (New bug in
+2.9.2, probably.)
+
+Implements additional Level 2 features:
+ - DCTEncode and DCTDecode filters.
+ - Filters with procedures as the data source or target.
+ (Except for token and cvx/exec.)
+ - Garbage collection for names.
+
+Changes the error printout so that strings are always truncated at 200
+characters.
+
+For Level 2 systems, changes the initial setting of the object format
+parameter from 0 to an appropriate non-zero value.
+
+* Changes the .quit operator so that it takes two operands, an error object
+and an error code; if the latter is negative, the interpreter returns this
+as the error code, rather than e_Quit.
+
+Makes StandardEncoding and ISOLatin1Encoding arrays, rather than packed
+arrays, on large-memory systems, for compatibility with certain test
+suites. Changes .registerencoding to accept arrays as well as packed
+arrays.
+
+</pre><h3><a name="V2.9.4b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - Due to an error in cie_mult3, CIE-based colors were badly
+mis-mapped.
+* - Very narrow (but not empty) rectangles would disappear.
+* - Small halftone cells could smash the next higher entry in the
+halftone cache.
+ - The orientation algorithm in gxstroke.c still interchanged
+clockwise and counter-clockwise coordinate systems (after having been
+"fixed" at least 3 times).
+ - Stroking 1-pixel-wide lines shortened them, instead of
+lengthening them, if non-butt caps were requested.
+
+Refactors mem_mapped8_copy_mono because of limitations in the bcc32
+compiler.
+
+</pre>
+
+<h2><a name="Version2.9.3b"></a>Version 2.9.3-beta (1/19/94)</h2>
+
+<p>This version was created for evaluation purposes for a few users who
+needed Level 2 capability; it was never released to anyone else, even
+beta testers.
+
+<h3><a name="V2.9.3b_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The description of psview and xpsview was incorrect.
+
+</pre><h3><a name="V2.9.3b_Procedures"></a>Procedures</h3><pre>
+Changes the installation directories for Unix and similar systems to put
+Ghostscript data in $(datadir)/ghostscript/gs-NN.NN.NN rather than directly
+in $(datadir)/ghostscript. (Fonts still go in $(datadir)/ghostscript/fonts.)
+
+</pre><h3><a name="V2.9.3b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - Some spaces were incorrectly replaced with tabs in the help
+message in the 3B1 display driver.
+ - The BMP driver wrote a spurious scan line at the beginning
+of its output.
+ - The monochrome PCX driver had the two palette elements
+interchanged.
+
+Adds new drivers:
+ - A user-contributed driver for the Xerox XES printer format. This
+has a FSF copyright.
+ - A user-contributed driver for the Epson AP3250 printer. (This is
+the same as the Stylus 800, with slightly different margins.)
+ - A user-contributed driver for the DEC LA70 printer with some
+algorithms for improving text at low resolutions. This has a FSF
+copyright.
+ - A user-contributed driver for an intermediate-resolution mode
+for 9-pin "Epson-compatible" printers.
+
+Changes the name of the Stylus 800 driver from escp2 to st800.
+
+Adds a compile-time flag to the Epson driver to cope with Panasonic 9-pin
+printers, which sometimes have trouble mixing graphics and tabs.
+
+</pre><h3><a name="V2.9.3b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The MS Windows driver (gp_mswin.c) referred to iodev.h rather
+than gxiodev.h.
+ - On Unix System V platforms, gp_unifs.c and gdevpipe.c were
+incorrectly omitted from the link list.
+ - (Some?) System V platforms don't have the S_ISDIR macro,
+requiring a change in stat_.h.
+ - The Unix `install' target didn't install gs_std_e.ps and
+gs_iso_e.ps.
+ - No MODULES.LIS file was provided for VMS.
+
+Adds Desqview/X makefiles that actually work.
+
+Documents the set of H-P-supplied patches needed to make H-P's
+compilers process Ghostscript.
+
+Changes the MS Windows driver so that if the user presses the Enter key
+while the image window has the focus, the text window will be brought to
+the top and made the active window. This is useful when viewing a
+multi-page document with Ghostscript.
+
+</pre>
+<h3><a name="V2.9.3b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The definition of public_st_client_color() in gxccolor.h
+included an extraneous semicolon.
+ - The definition of private_st_AXD_state() in sfilter.h included an
+extraneous semicolon.
+ - saxx.c didn't include sfilter.h, which it needed for the
+definition of private_st_AXD_state().
+ - ialloc_struct failed to create a separate chunk if the structure
+was very large.
+ - setcolorspace didn't allocate the colorspace object in the same
+VM space as the graphics state, causing problems when the colorspace was
+freed.
+ - In rare circumstances, currentfile could return an empty array
+rather than a file.
+ - Dictionary keys were always allocated in global VM.
+ - If NOPLATFONTS was true, definefont didn't check whether the
+dictionary was read-only before trying to insert an ExactSize key.
+ - startjob could get an invalidaccess error, because serverdict was
+allocated in global VM.
+ - Using definefont with an already registered font created a
+circular list structure.
+ - If a PostScript procedure appeared as a CharString in a Type 1
+font, it was always called with the character name, never the character
+code.
+ - The SubFileDecode filter didn't work with a non-empty EOD string
+(went into an endless loop). (Probably a new bug in 2.8.)
+ - save/restore didn't properly restore the maxlength of a
+dictionary, causing data to get smashed at random. (New bug in 2.9.)
+ - save didn't mark objects as old, so a nested restore had no
+effect. (New bug in 2.9.2.)
+ - After returning from an OtherSubrs callback, op_type1_free
+freed the saved interpreter state incorrectly. (New bug in 2.7.)
+ - Level 1 configurations didn't work because .makeoperator gave an
+invalidaccess error. (New bug in 2.9.2.)
+ - ASCII85 string literals didn't work. (Probably a new bug in 2.8.)
+ - If the current global/local allocation mode was different at the
+end of a file than at the beginning, an addressing fault could occur
+(gs_unregister_root in gs_run_string). (New bug in 2.9.2.)
+ - After a setfileposition on a file open for reading,
+fileposition would return an incorrect value, even though the stream
+was actually repositioned properly.
+
+Brings the dictionary unpacking code for the DCT filters into line with
+Adobe Technical Note 5116, which describes the Picky parameter for
+DCTDecode and the NoMarker, Resync, Blend, Picky, and Relax parameters for
+DCTEncode.
+
+Changes the .quit operator so that if given a negative argument, the
+interpreter returns this as the error code, rather than e_Quit.
+
+Changes the Ghostscript integer version number from 100P+10S+T to
+10000P+100S+T.
+
+Changes the default halftone screen for high-resolution devices, both
+black-and-white and color.
+
+</pre><h3><a name="V2.9.3b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - The software floating multiply code used with USE_FPU=-1 only
+worked on little-endian platforms.
+ - Specifying a left side bearing to .type1addpath produced an
+inappropriate offset.
+
+</pre>
+
+<h2><a name="Version2.9.2b"></a>Version 2.9.2-beta (1/2/94)</h2>
+
+<p>This version was distributed only to beta testers. It adds a garbage
+collector and full local and global VM support. It is the first version
+that sets languagelevel = 2, i.e., claims to be a Level 2 implementation.
+
+<h3><a name="V2.9.2b_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - make.doc still referred to use_* variables in gdevx.c, and
+use.doc didn't explain the use* X resources.
+
+Notes that -Olimit=1000 is needed to compile Ghostscript on AXP systems
+under OSF/1 1.3.
+
+</pre>
+
+<h3><a name="V2.9.2b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - viewgif.ps did not work with interlaced images.
+ - font2c.ps omitted gsmemory.h from the #include list in compiled
+fonts.
+
+</pre><h3><a name="V2.9.2b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The MS Windows driver hadn't been updated to work with the
+new additions to the gx_device structure.
+ - The BMP file driver wrote one scan line too many.
+ - The cdj driver omitted an important cast to int in the error
+diffusion code (FSdither macro).
+
+Changes the SuperVGA drivers to recognize erasepage and reset the
+color table, like the X driver.
+
+Adds some fragmentary code to begin implementing the PostScript fax
+extensions.
+
+</pre><h3><a name="V2.9.2b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The procedure initializers for the MS Windows console I/O
+were missing the new reset element.
+ - The makefile entry in bcwin.mak used -fdev rather than -iodev.
+ - The Borland C++ makefiles exceeded MS-DOS's line length limit if
+the compiler files were in the standard Borland directory (BORLANDC).
+ - Some procedures weren't declared with prototypes in gp_vms.c.
+ - Some declarations had to be reordered to pacify the VAX compiler.
+ - Under MS Windows, Ghostscript didn't automatically de-iconify the
+text window to display messages on an error exit.
+ - The Unix makefile rule for gconfig_.h used echogs rather than
+./echogs.
+ - The Microsoft C makefile referred to an obsolete file gs.tr.
+ - gp_unifs.c used strpbrk and strrchr, which some systems lack.
+
+Updates the OS/2 code and documentation for compatibility with the current
+Ghostscript version.
+
+</pre><h3><a name="V2.9.2b_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+ - The X11 .pfa fonts replaced their .gsf requirements in the
+fontmap, but not distributed with the previous (beta) release.
+
+Adds fontmaps appropriate for use with DEC Ultrix and OSF/1 systems.
+
+</pre><h3><a name="V2.9.2b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - 4-value entries in the Metrics dictionary were interpreted with
+the width and side bearing interchanged.
+ - Objects large enough to require their own chunk were not freed
+properly.
+ - The GS_FONTPATH scanner didn't deal with the possibility that
+opening a file might fail.
+ - The interrupt and timeout errors incorrectly pushed an error
+object on the operand stack.
+ - imagemask gave an error if it was invoked with a dictionary
+argument with a current color space with more than 1 parameter.
+ - definefont insisted that a new font not have a FID entry.
+ - Some places didn't cast char to byte when needed.
+ - An extra element was left on the stack when substituting the
+default font for a font whose file couldn't be found.
+ - The CCITTFaxDecode filter didn't allow the dictionary to be
+omitted. (The Adobe documentation doesn't allow this, but Adobe
+implementations do.)
+ - When the input came from a pipe (`-') switch, opening a filter on
+currentfile that required more than 1 input byte to make progress would
+cause Ghostscript to hang (in sreadbuf).
+ - The interpreter didn't call gs_set_lib_paths before executing a
+compiled-in initialization file.
+ - A stream could be closed more than once. (New bug in 2.8.)
+ - The LZW decoder produced incorrect output if a code string was
+too long to fit into a single output buffer. (New bug as of 2.8.)
+
+Implements a special check in def to allow construction of systemdict,
+which is stored in global VM but references dictionaries in local VM.
+
+Implements additional Level 2 features:
+ - %null% and %ram% IODevices.
+ - startjob, exitserver.
+ - Local and global VM (finish).
+ - Garbage collection (for everything except names and strings).
+
+Moves the procedures for selecting paper size from systemdict to userdict.
+
+Sets languagelevel to 2 in Level 2 mode, since essentially all of
+Level 2 is now implemented.
+
+Factors out the Level 1 extended color facilities (CMYK color and
+colorimage) as a separate configuration feature.
+
+Adds some preliminary code to begin implementing the Adobe BCP and TBCP
+communication protocols.
+
+Changes the implementation of save and restore so that the bookkeeping
+structures are allocated in the new area, not the old. (This is an
+internal change not visible at the PostScript level.)
+
+</pre><h3><a name="V2.9.2b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - gdevprn used some preprocessor macros in formal argument
+lists that ansi2knr couldn't handle.
+ - pick_cell_size called gs_distance_transform with a 0 argument
+that non-ANSI compilers didn't automatically promote to floating point.
+ - gs_screen_init called hypot with integer arguments that
+non-ANSI compilers didn't automatically promote to floating point.
+ - Some places didn't cast char to byte when needed.
+ - The vx/vy origin adjustment for WMode=1 wasn't implemented.
+ - The pattern cache wasn't initialized properly.
+ - Composite fonts didn't properly decode strings that started with
+an escape sequence, which have a special (undocumented) decoding rule, and
+also didn't properly decode strings with multiple consecutive escape
+sequences.
+
+Factors out the Level 1 extended color facilities (CMYK color and
+colorimage) as a separate configuration feature.
+
+</pre>
+
+<h2><a name="Version2.9.1b"></a>Version 2.9.1-beta (12/7/93)</h2>
+
+<p>This version was distributed only to beta testers.
+
+<h3><a name="V2.9.1b_Utilities"></a>Utilities</h3><pre>
+Adds a viewgif.ps utility to view GIF files. The current version does not
+work with interlaced data, local color tables, or files containing more
+than one image.
+
+</pre><h3><a name="V2.9.1b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - putinterval and copy didn't do the right thing if the source and
+destination were aliases for overlapping sections of the same array or
+string.
+ - The DCT filter stub didn't allow the dictionary to be omitted.
+(The Adobe documentation doesn't allow this, but Adobe implementations
+do.)
+
+Adds an optional dictionary argument to the LZWDecode filter, containing
+InitialCodeLength, FirstBitLowOrder, BlockData, and EarlyChange entries.
+Setting these parameters appropriately allows reading (non-interlaced) GIF
+data directly.
+
+</pre><h3><a name="V2.9.1b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - setdash produced inverted output if the pattern had an odd
+number of elements and the offset O had the property that L &lt;= O mod
+2*L, where L was the sum of the pattern elements.
+
+</pre>
+
+<h2><a name="Version2.9b"></a>Version 2.9-beta (12/6/93)</h2>
+
+<p>Like 2.7, this version was created to satisfy a contractual
+requirement,
+and will never be distributed to anyone other than the other party to the
+contract.
+
+<h3><a name="V2.9b_Documentation"></a>Documentation</h3><pre>
+Notes that Ghostscript runs on IBM PCs and compatibles under DR DOS
+6.0.
+
+Notes that Ghostscript will run on IBM PCs and compatibles with
+Hercules display cards if you redirect text output to a file.
+
+Notes that the alternate DeskJet 500C driver (djet500c) does not work
+on the 550C.
+
+Gives a list of system-specific directories where Type 1 fonts are
+likely to be installed, as a suggested setting for GS_FONTPATH.
+
+</pre><h3><a name="V2.9b_Procedures"></a>Procedures</h3><pre>
+Changes the distribution script so that it stores all text files in the
+main source archive with Unix end-of-line conventions, but with DOS
+end-of-line conventions in the MS-DOS-specific archive.
+
+Changes the MS-DOS, MS Windows, and OS/2 makefiles so that 486SX and 486DX
+processors are different CPU_TYPEs. (The former, designated by
+CPU_TYPE=485, does not include an on-chip FPU.)
+
+Adds a line to gs_init.ps which can be uncommented to select A4 as
+the default paper size.
+
+Adds a definable CFLAGS macro to the makefiles, allowing -DA4 to
+select A4 as the default paper size.
+
+Adds the H-P printer drivers to the standard Unix configurations.
+
+</pre><h3><a name="V2.9b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - If there were no unencoded characters, prfont.ps would get
+an error.
+
+Changes ansi2knr to accept a wider range of function declaration syntax,
+and to not depend on any Ghostscript header files.
+
+</pre><h3><a name="V2.9b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - Several drivers (DigiFax, Epson LQ-2550, NEC P6) didn't handle
+A4 paper width.
+ - The IBM ProPrinter wasn't being initialized properly.
+ - The Epson driver didn't work properly with compilers that
+insisted on 'char' being a signed type.
+ - The Epson driver ignored its end_string argument, producing
+incorrect end-of-page behavior on some printers.
+
+Adds new drivers:
+ - User-contributed drivers for Bellcore MGR (a window manager most
+commonly used with OS-9) devices.
+ - A user-contributed driver for the CIF file format.
+ - A user-contributed driver for the HP 2563B line printer.
+
+Changes the LaserJet 2p, 3, and 4 drivers so they set the initial position
+to (0,0) rather than (0,0.25"). (I don't remember why it was the other
+way.)
+
+Implements the PageCount property in all drivers, not just printer
+drivers.
+
+Introduces a new gx_tile_bitmap type, and changes the tile_rectangle
+device procedure to take it in place of gx_bitmap. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE. However, it only affects devices that
+implement their own tile_rectangle procedures, of which there aren't very
+many.
+
+</pre><h3><a name="V2.9b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The VMS module lists referred to SDCTD and SDCTE instead of
+SDCT.
+ - The Unix install script tried to install the non-existent file
+readme.doc.
+ - Microsoft C does something bizarre with empty macro parameters,
+which caused a problem with the gs_struct_type_... macros.
+ - The Unix platforms didn't automatically handle the presence
+or absence of &lt;dirent.h&gt;.
+ - The DEC Alpha OSF/1 1.3 library lacks `const' in the prototype
+for popen, which requires a workaround.
+ - The DEC Alpha OSF/1 1.3 X Windows library uses `private' as a
+member name.
+
+Splits off gp_unifs.c, containing code common to "Unix-like" file systems.
+
+Adds a user-contributed OS-9 platform.
+
+</pre><h3><a name="V2.9b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The currentfile cache wasn't updated properly if an executable
+file appeared in the middle of a procedure. In particular, eexec-encoded
+.PFB fonts often didn't work.
+ - There was an extraneous `goto top' in scfd.c.
+ - An integer constant overflowed in iname.c.
+ - -2147483648 (i.e., -1 &lt;&lt; 31) was converted to a float.
+ - eexec didn't skip the first 4 characters correctly if they were
+split across a buffer boundary.
+ - The font/matrix pair cache didn't properly free entries with only
+an XUID that was being deallocated.
+
+Implements additional Level 2 features:
+ - Patterns, makepattern, setpattern.
+ - IODevice resource, setdevparams, currentdevparams.
+ - OutputDevice resource, setpagedevice, currentpagedevice.
+ (Partially implemented.)
+
+Adds a new type t_struct to handle miscellaneous types that are allocated
+as objects and that the interpreter doesn't handle specially, and changes
+condition, fontID, gstate, lock, and save types to use t_struct. (This is
+an internal change, not visible at the language level.)
+
+Moves the maxlength of a dictionary to its own ref, eliminating the "size
+of integer" hack. (This is an internal change, not visible at the
+language level.)
+
+Adds the last OS error number to the error printout.
+
+Removes the obsolete framedevice operator.
+
+Implements resetfile (the only Level 1 operator not yet implemented!).
+
+Changes the name of the getdevice operator to .getdevice.
+
+</pre><h3><a name="V2.9b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - A couple of necessary casts from char * to byte * were omitted.
+ - A Sun compiler required an extra cast to (void *) in the e1
+macro in clip_rect_enum_ptrs in gxcpath.c.
+ - The gx_dc_ procedures defined in gxdraw.c weren't marked as
+'private'.
+ - The number of "on" pixels in a halftone cell sometimes varied by
+1 from cell to cell.
+ - Mapping a gray level to CMYK didn't subtract it from 1 (to
+produce the K component).
+* - charpath took hints into account.
+
+Shuffles the order of some declarations to pacify the VMS C compiler.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.8b"></a>Version 2.8-beta (11/10/93)</h2>
+
+<p>This version was distributed only to beta testers. It adds Type 0
+font
+support. It also includes extensive redesign of streams (to eventually
+support procedure streams) and device properties (to eventually support
+get/setpagedevice and get/setdevparams).
+
+<h3><a name="V2.8b_Documentation"></a>Documentation</h3>
+
+<pre>
+Notes the change in X11 foreground/background handling.
+
+Changes README so it no longer claims that Ghostscript works with X11R3.
+
+Notes (in devs.mak) that the cdjmono driver is the best one to use for the
+DeskJet 510.
+
+</pre><h3><a name="V2.8b_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - echogs wasn't always invoked with ./ on Unix systems.
+
+Changes the file name unix-ansi.mak to unixansi.mak, so it can be created
+on a MS-DOS system.
+
+Adds a new "feature", ccinit.dev, which compiles and links the
+initialization files (gs_*.ps) into the executable, just as ccfonts.dev
+compiles and links fonts. If ccinit and ccfonts are both selected, the
+only external file needed at run time is Fontmap. Note that you must have
+a working version of Ghostscript already in order to create a version that
+uses the ccinit feature, just as for ccfonts.
+
+</pre><h3><a name="V2.8b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - the ps2image utility didn't put a %! on the first line of the
+output.
+
+</pre><h3><a name="V2.8b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The Hercules display driver didn't include definitions for
+outport2 and PAGE_HEIGHT_INCHES, which it uses.
+ - The BGI driver didn't call setactivepage or setvisualpage,
+which it needs to do in general.
+ - The Apple DMP driver declared dmp_print_page rather than
+appledmp_print_page, causing a compilation error.
+
+Changes the X11 driver so that it doesn't use the default foreground and
+background colors: you must set foreground and background explicitly for
+Ghostscript if you want them to be other than black and white
+respectively.
+
+Adds new user-contributed drivers for:
+ - The StarJet 48 inkjet printer;
+ - The GNU/Linux VGALIB display interface.
+ - OS/2 Presentation Manager.
+
+Changes the margins of the Epson driver to 0.2, 0.0, 0.0, 0.0, which
+more accurately reflect the printer's capabilities.
+
+Changes the get_props and put_props device procedures to take property
+list "objects" with a procedural interface, rather than a data structure
+interface. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. It affects all
+get_props and put_props procedures. Fortunately, there were only a few
+devices that implemented their own get_props and put_props procedures (the
+H-P color printers, and the three window systems -- X Windows, MS Windows,
+and OS/2 PM).
+
+</pre><h3><a name="V2.8b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The meaning of the -p switch for the Watcom compile-and-link
+program was changed between Watcom C/386 versions 8.5 and 9.5, causing the
+make process to malfunction.
+ - The SCFTAB and SCFDTAB modules were omitted from the VMS link
+list.
+
+Adds user-contributed code for OS/2.
+
+Removes the assumption that an 80486 CPU implies the presence of hardware
+floating point, since the 486SX and Cyrix 486SLC don't have it.
+
+</pre><h3><a name="V2.8b_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+* - The GS_FONTPATH scanner didn't recognize .PFB fonts beginning
+with %!PS-AdobeFont.
+* - The GS_FONTPATH scanner often didn't recognize .PFB fonts at all.
+ - Type 1 fonts always set the line join, line cap, and miter limit
+to known values, rather than using the current values. (Using the current
+values doesn't make much sense, but it's apparently what the Adobe
+implementations do.)
+ - DISKFONTS didn't work, because of the change in the Ghostscript
+fonts to do a systemdict begin/end (in version 2.7.1).
+
+</pre><h3><a name="V2.8b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - == didn't produce exactly the same output as the Adobe
+interpreters. (Some automated debugging and testing programs care.)
+ - The CCITTFaxEncode filter could get caught in an infinite loop,
+because it failed to mask a byte datum when scanning for runs of black
+pixels.
+ - The write operator gave an error for values outside the range 0
+to 255, rather than just using the low-order 8 bits.
+ - Some applications call a statusdict procedure named
+setresolution without checking first whether it is present; Ghostscript
+didn't provide one.
+ - Reading from a closed stream caused an error instead of
+returning EOF.
+ - Input streams didn't close automatically at EOF.
+ - findfont was defined as an operator, not a procedure.
+ - closefile on a closed file gave an error. (It isn't obvious
+that the Adobe documentation specifies that it shouldn't, but that's what
+Adobe says they do.)
+ - The LZWDecode filter didn't handle codes representing strings
+longer than the buffer size correctly.
+ - The LZWDecode filter only allowed 4095 codes to be used, rather
+than 4096.
+ - The rand operator produced an infinite string of zeros if
+given 0 or 0x7fffffff as the seed.
+ - When a CDevProc procedure was called, there was an extra
+copy of the character name on the operand stack below the operands of
+CDevProc.
+
+Replaces all stream implementations with new ones designed to allow
+interruption at arbitrary times. ****** The 2-D case of CCITTFaxEncode
+hasn't been converted (but it probably didn't work before, either).
+
+Implements additional Level 2 features:
+ - Type 0 (composite) fonts.
+
+Adds an eexecEncode filter.
+
+Implements setcolorscreen, which was accidentally omitted from 2.7.
+
+</pre><h3><a name="V2.8b_Library"></a>Library</h3><pre>
+Fixes bugs:
+* - In colorimage, if the color space of the image was different
+from the current color space, and the first data values on a scan line
+were zeros, the wrong color could result.
+ - The new flatness testing algorithm could overflow, producing
+straight lines or obvious polygons instead of curves.
+ - Images could fail to display pixels after the first non-blank
+pixel on a line if halftoned color was required. (This bug was probably
+introduced in 2.7.)
+ - Interpolation between transfer map entries didn't work, because
+of a rounding/truncation bug in frac2bits (bug introduced in 2.7.1.)
+ - cshow did an extra grestore at the end.
+
+* Implements a hack to slightly displace 1-bit-wide or -high images. This
+is necessary to work around a bug in TeX (or dvips?), which uses such
+images to draw horizontal and vertical lines without positioning them to
+ensure that they cover device pixel centers.
+
+Adds support for composite fonts (no new client procedures).
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.7.2b"></a>Version 2.7.2-beta (10/11/93)</h2>
+
+<p>This version was distributed only to alpha testers.
+
+<h3><a name="V2.7.2b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - prfont.ps didn't print unencoded characters.
+
+Improves mergeini.ps to remove embedded comments.
+
+</pre><h3><a name="V2.7.2b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - An error occurring within the scope of an internal .stopped
+didn't pop the command and error name off the stack.
+* - The = and == procedures weren't re-entrant.
+
+* Adds a .writecvs operator that does a cvs to an internal string followed
+by a writestring.
+
+</pre><h3><a name="V2.7.2b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - grestore freed the path and the clip path in an order that
+was likely to lead to memory sandbars.
+ - moveto + closepath didn't actually close the path.
+ - moveto + reversepath produced an empty path (no moveto).
+ - moveto + closepath + reversepath produced an extra lineto.
+ - reversepath didn't set the current point to the end (i.e., the
+former beginning) of the last subpath.
+
+Adds a "planar" memory device.
+
+</pre>
+
+<h2><a name="Version2.7.1b"></a>Version 2.7.1-beta (10/4/93, not distributed to the public)</h2>
+
+<p>Like 2.7, this version was created to satisfy a contractual
+requirement,
+and will never be distributed to anyone other than the other party to the
+contract.
+
+<h3><a name="V2.7.1b_Documentation"></a>Documentation</h3><pre>
+Documents the GS_OPTIONS environment variable.
+
+Adds a summary of all environment variables to the documentation
+(use.doc).
+
+Documents the existence of a third free viewer built on Ghostscript.
+
+</pre><h3><a name="V2.7.1b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - wrfont didn't wrap a systemdict begin / end around the body of
+the font.
+ - wrfont wrote out the Symbol and ZapfDingbats encodings in a way
+that only worked if the encoding was known by name.
+
+Changes bdftops to include an XUID if desired.
+
+Changes bdftops so that it uses 'show' for unknown ligatures, rather than
+executing the characters as subroutines; this makes such ligatures work
+properly with xfonts.
+
+</pre><h3><a name="V2.7.1b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The PCL drivers sent a printer reset (&lt;ESC&gt;E) at the beginning
+of every page, instead of only before the first page.
+ - The PCX driver didn't round up the scan line width in the
+header, even though it produced scan lines with the correct (rounded)
+number of bytes.
+
+Adds a new map_rgb_alpha_color procedure. This is a backward-compatible
+change; this procedure defaults to calling map_rgb_color.
+
+</pre><h3><a name="V2.7.1b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - On Unix platforms, the value of the TEMP environment variable
+had to end with a '/'.
+ - On MS-DOS systems, printer output to devices other than PRN
+(specifically, LPTn) didn't put the device into binary mode.
+
+Adds FPU_TYPE to the Unix makefiles, with a default value of 1.
+
+Removes the mention of Xmu linking problems on the SunOS platform,
+since the problem no longer exists.
+
+Changes the order of X Windows libraries from Xt X11 Xext to Xt Xext X11.
+This makes the OSF/1 linker happier.
+
+</pre><h3><a name="V2.7.1b_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+ - All the fonts originated by Aladdin, and the shareware fonts,
+had UniqueIDs in the 4xxxxxx range, which is only supposed to be used for
+limited-distribution fonts.
+* - When Ghostscript loaded a font, it pushed a scratch dictionary
+on the dictionary stack, rather than userdict. (Note that this fix also
+requires fixing the fonts to include a protective systemdict begin /
+end; see below.)
+* - When loading a font failed, Ghostscript didn't check the font
+name against the default font name properly.
+ - Ghostscript's own fonts didn't include a systemdict begin /
+end to guard against redefinition of names used in the reading
+procedures (e.g., index).
+* - When Ghostscript scanned a .PFB font to get the FontName, it
+didn't skip over the 6-byte header, which could cause confusion or a
+syntaxerror.
+ - Loading a .PFB font that left extra information on the
+operand stack didn't work.
+
+Changes the ZapfDingbats font to use DingbatsEncoding rather than include
+a copy of the encoding in itself, if DingbatsEncoding is known. Changes
+the Symbol font similarly.
+
+Removes eexec encryption from the 4 URW fonts, so they will work with
+DISKFONTS.
+
+Adds shareware Hiragana and Katakana fonts (Calligraphic-Hiragana and
+Calligraphic-Katakana, by Kevin Hartig).
+
+Adds GS on the end of the family names of all of Aladdin's own converted
+fonts.
+
+Replaces many of the Hershey fonts with new ones (mostly Type 1) created
+by Thomas Wolff, who added accents, accented characters, and other
+non-alphabetics. These too now have proper UniqueIDs.
+
+</pre><h3><a name="V2.7.1b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+* - imagemask interpreted the Decode array incorrectly (inverted).
+ - Running out of memory when constructing a path incorrectly
+signalled a limitcheck rather than a VMerror.
+ - restore didn't purge uncached scaled fonts properly.
+
+Adds alpha (opacity) to the graphics state, and setalpha and
+currentalpha operators.
+
+Redefines erasepage in terms of a new .fillpage operator that fills
+the current page with the current color and then does a sync_output.
+
+Redefines setdevice and putdeviceprops in terms of new .setdevice and
+.putdeviceprops operators that return a boolean indicating whether the
+page needs to be erased. With this change, operators that erase the page
+always call erasepage at the interpreter level rather than calling
+gs_erasepage directly.
+
+</pre><h3><a name="V2.7.1b_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - The null device allowed its size to be reset.
+ - clippath didn't establish a current point if the clipping
+path was empty.
+* - The Type 1 font interpreter (gs_type1_interpret) flattened
+curves even if it was being invoked for charpath.
+ - Colored halftones usually didn't come out with the correct
+phase, and had several other problems.
+ - A show or charpath within a BuildChar procedure didn't work.
+ - Accented characters composed with seac used the base
+character width instead of the composed character width. (The Adobe
+documentation says these must be the same, but some commercial fonts
+don't obey this.)
+ - setcurrentpoint in the accent of a character composed with
+seac didn't take the accent's displacement into account.
+
+Adds an alpha (coverage) value to the graphics state, and
+gs_setalpha/currentalpha procedures. Currently Ghostscript just passes
+the alpha value to the driver; it doesn't attempt to emulate alpha
+handling if the driver doesn't support it.
+
+Redefines gs_erasepage to call gs_fillpage.
+
+Bypasses the fill code if the clipping box is empty. This makes a big
+difference for stringwidth, and doesn't hurt anything else.
+
+Changes frac_1 from 0x7fff to 0x7ff8. This allows exact representation of
+practically all useful fractions, since this number (32760) is
+2*2*2*3*3*5*7*13.
+
+Changes float to double in several matrix routines for better accuracy.
+
+Adds new device properties to implement the deviceinfo operator:
+Colors, GrayValues, RedValues, GreenValues, BlueValues, ColorValues.
+Also adds HWBitsPerPixel and HWColorMap.
+
+Changes the sorting algorithm for halftones to use qsort instead of
+special code.
+
+Changes the Type 1 interpreter so that it uses the current point, rather
+than (0,0), as the character origin.
+
+</pre>
+
+<h2><a name="Version2.7b"></a>Version 2.7-beta (9/20/93, not distributed to the public)</h2>
+
+<p>This is the first of a series of beta-only versions planned for
+release
+between 2.6.n and 3.0. This version, in particular, was created to
+satisfy a contractual requirement, and will never be distributed to anyone
+other than the other party to the contract.
+
+<h3><a name="V2.7b_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The "HP XLFD extensions" to X11R5 are not specific to H-P
+platforms.
+ - The configuration generation script used rm rather than rm -f.
+ - gs.1 was installed in $(docdir) rather than $(mandir);
+$(mandir) wasn't defined.
+ - ansi2knr.1 was installed in $(docdir), which was
+inappropriate because ansi2knr itself wasn't installed anywhere.
+
+Moves documentation for versions 2.4.x and 2.5.x to history.doc.
+
+Moves the documentation on how to add devices to the configuration
+from devs.mak to make.doc.
+
+Changes the name of readme.doc to current.doc, since the presence of
+two "readme" files was confusing to users.
+
+Documents how to use the Microsoft Windows PostScript printer driver
+to convert TrueType fonts to Type 1 fonts embedded in the document.
+
+Corrects several errors in the documentation of the get_bits driver
+procedure.
+
+Documents the fact that X11R3 is no longer supported.
+
+Removes the last references to "Ghostscript" from the comments in the
+gs_*.ps files. The only remaining reference, other than the boilerplate
+comments at the beginning of each file, is in the message at the end of
+gs_init.ps.
+
+Documents the use of WMAKEL rather than WMAKE with the Watcom compiler.
+
+</pre><h3><a name="V2.7b_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+* - The Unix install script used gs rather than $(GS) as the name of
+the executable.
+* - The Unix install script didn't copy gs_dbt_e.ps to $(gsdatadir).
+ - genconf.c used ps2 as a variable name; ps2 is a predefined
+preprocessor symbol in the VSC compiler used by IBM.
+ - @-expansion didn't interact properly with -- and -+.
+ - The Unix install script didn't copy COPYING to $(docdir),
+and copied README to $(gsdatadir) rather than $(docdir).
+ - ps2ascii used /bin/sh -f, which is an incorrect flag.
+
+Removes all uses and mentions of USG (a now-obsolete GNU convention)
+as a synonym for SYSV.
+
+Removes filter.dev and dps.dev from FEATURE_DEVS if level2.dev is
+included, since they don't add anything beyond level2.dev.
+
+Changes the ccgs script to explictly remove the old .o file before
+doing the mv, for the benefit of people who have changed mv to prompt
+before overwriting. Changes the configuration script to use rm -f
+for the same reason.
+
+Changes the -Z switch so an empty list of options does nothing, rather
+than turning on all options.
+
+Adds a -@ switch which is like -- and -+ except that it does
+@-expansion of arguments.
+
+Changes genconf so it takes patterns from the command line that describe
+how to write the linker control files, rather than having the patterns
+built in.
+
+Changes -d and -D so that if no value is supplied, the default is
+true rather than null.
+
+</pre><h3><a name="V2.7b_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+* - The ps2ascii script still referenced ps2ascii.ps under its
+old name gs_2asc.ps.
+* - ps2image.ps had a 'pop' missing in the written-out
+definition of 'max' in the boilerplate code it put at the beginning
+of compressed files.
+* - ps2image.ps got a typecheck if a scan line had no repeated
+data in it anywhere.
+ - wrfont.ps didn't handle CharStrings or Subrs that weren't
+strings.
+ - mergeini.ps produced an init file that incorrectly
+attempted to load the Symbol and Dingbats encodings dynamically.
+
+Removes the gsview.bat file, since it was confusingly named and not
+generally useful.
+
+Changes bdftops back to using encrypted CharStrings, for compatibility
+with Adobe interpreters, but also changes lenIV to 0, to save a little
+more space.
+
+Changes the traceop utility so it makes traced operators appear to be
+operators, and so it will replace a definition in systemdict if explicitly
+requested to do so and systemdict is writable.
+
+Adds a printafm utility for printing the metrics of fonts in AFM format.
+
+</pre><h3><a name="V2.7b_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The cdj driver was missing a few type casts that were needed to
+satisfy pedantic compilers.
+ - For banded devices, many of the non-displaying target routines
+were getting called with the original device as the first argument, not
+the target device. (This didn't make any difference in practice, because
+gdev_prn_open explicitly copied the non-rendering procedures back into the
+procedure vector.)
+* - The X driver didn't catch and discard bogus errors on
+XFreeColors, which faulty servers generate.
+* - The X driver gave up on color allocation too easily.
+* - The X driver dynamic color table size could become negative.
+* - x_lookup_font could return platform fonts of very small sizes,
+which have very inaccurate metrics.
+* - The ESCP/2 driver was incorrectly named gdevescp2 in devs.mak.
+ - The Apple DMP driver used #if 0 / #endif instead of comment
+brackets, and was incorrectly named "dmp" instead of "appledmp" in
+the source code.
+* - The X driver didn't free dynamic colors at the start of each page.
+* - The X driver didn't bind foreground/background defaults tightly.
+* - The X driver didn't check for GHOSTVIEW_COLORS properly.
+* - The X driver freed too many colors if an allocation request failed.
+* - The X driver didn't check return value of gs_malloc for being NULL.
+* - The DeskJet/LaserJet driver used an incorrect command for
+end-of-page.
+* - The DeskJet/LaserJet driver incorrectly reset the printer at the
+beginning of every page.
+* - The PCX driver put an old version number in the header, and
+didn't pad scan lines to an even number of bytes.
+ - The BMP driver used a variable named `quad', which is a
+reserved word on some platforms.
+* - The TIFF driver didn't handle A4 or B4 size paper correctly.
+* - The X11 driver incorrectly demanded the Xmu library, which was
+not needed and which caused link errors on some versions of SunOS.
+* - X11 font matching scheme was too loose, causing overlaps and
+other problems.
+* - X11 Font Extensions (rotated and mirrored fonts) did not work
+properly on NCD terminals.
+* - When freeing the rgb cube/gray ramp, the parameters to gs_free()
+did not exactly match the parameters to gs_malloc().
+* - Ghostscript failed to warn the user when it could not allocate
+the original color cube/gray ramp and dropped back to a smaller
+cube/ramp, or from color to mono.
+* - x_release could cause Ghostscript to fail if a font was freed
+after the device was closed.
+ - The X driver continued to ask the server for colors even after a
+request failed, causing colored images to display very slowly.
+
+* Adds a pcxgray driver to provide 8-bit gray scale output in PCX format.
+
+Adds a pcx24b driver to provide 24-bit RGB color PCX output.
+
+* Adds a LaserJet 4 driver.
+
+Adds a user-contributed driver for the DEC LA70 (very similar to the LA75).
+
+Substantially improves the performance of the PxM drivers by eliminating
+an unnecessary copying step and by writing each scan line with a single
+fwrite when possible.
+
+Moves the gray-scale and 24-bit RGB device color mapping routines to
+gxcmap.c from gdevpcx.c and (nowhere).
+
+Allows window granularities smaller than 64K in the VESA driver.
+
+Changes the LaserJet margins again.
+
+</pre><h3><a name="V2.7b_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - Platforms where stat doesn't return a st_blocks value
+computed the block count wrong.
+ - In gp_vms.c, the call on SYS$FILESCAN needed two uint *s
+rather than a long * and a struct *.
+* - The VMS script files referenced IBSCAN instead of ISCAN2,
+and omitted GDEVXXF.
+* - The UUENCODEd icons for the MS Windows platform were omitted
+from the fileset.
+* - On MS-DOS systems, filenameforall didn't interpret * alone
+as a pattern matching all files.
+
+Adds wildcard matching capability to filenameforall under Unix.
+
+Removes gp_file_status from the platform interface, since all
+platforms provide identical stat calls in the C library.
+
+Adds DesqView/X (using djgcc and go32) as a platform.
+
+Removes the S3 driver from the standard PC configurations.
+
+Adds documentation for compiling Ghostscript on the Intergraph Clipper.
+
+Updates the documentation to add a better list of X Windows font
+names for the Sun platform.
+
+</pre><h3><a name="V2.7b_Fonts"></a>Fonts</h3><pre>
+
+Creates an external file (gs_dbt_e.ps) with the ZapfDingbats encoding
+(actually in 2.6.1, but not documented there).
+
+Changes the names of the Cyrillic fonts to Shareware-Cyrillic-Regular
+and Shareware-Cyrillic-Italic, keeping Cyrillic, Cyrillic-Regular,
+and Cyrillic-Italic as aliases.
+
+* Removes the requirement that the FontName in the font file be the same
+as the name in Fontmap. (This requirement led to the need for aliases,
+and was extremely confusing to users.)
+
+* Adds a GS_FONTPATH environment variable containing a list of directories
+that should be scanned automatically for fonts.
+
+* Gets rid of the Ugly font, and changes the default to the IBM Courier
+font, which is freely distributable.
+
+</pre><h3><a name="V2.7b_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - cvs didn't check for stack underflow.
+* - zht2.c didn't include alloc.h.
+* - execstackoverflow cleared the e-stack instead of just
+cutting it back.
+ - if and ifelse incorrectly reported typecheck instead of
+stackunderflow.
+ - Copying a dictionary could alter some items even if a later
+item causes an invalidaccess error because of an attempted store of a
+local object into global VM.
+ - bitshift and cvrs assumed that longs occupied 32 bits.
+* - exitserver didn't check the password, and always succeeded.
+ - Font loading didn't suppress all output messages if QUIET
+was set.
+* - The interpreter incorrectly pushed its exit procedure on
+the e-stack if it was called again after an interrupt.
+* - The interpreter didn't treat timeout like interrupt in
+terms of re-executing the current operation.
+* - `show' operators popped their operands before they were
+sure they wouldn't be interrupted.
+* - rotate with a matrix operand didn't check for multiples of
+90 degrees.
+ - In the system name table, ge was misspelled eg, and
+pathforall was misspelled pathfoall.
+* - file_close_file attempted to free the buffer even if it was an
+externally supplied string (specifically, the argument of gs_run_string).
+ - setprintername (in gs_statd.ps) set printername rather than
+.printername.
+
+Implements additional Level 2 features:
+ - Indexed color space with lookup procedure.
+ - sethalftone, except for the transfer function override,
+ and currenthalftone.
+
+Implements OtherSubrs for indices greater than 3 (required for
+MultiMaster fonts).
+
+Implements black generation and undercolor removal.
+
+Changes `store' from a C procedure to a PostScript procedure.
+
+Changes idiv back so it requires integer operands, per the Adobe
+documentation but not per some old Adobe interpreters.
+
+* Adds many new paper sizes to gs_statd.ps. It now includes ISO a0-a10
+and b0-b10, and CAD sizes archA-archE.
+
+Implements `status' for non-%os% files. (This is currently a no-op,
+but the framework is there.)
+
+Changes the error handler so it normally uses = rather than == to print
+the operand stack, to avoid recursive errors.
+
+* Adds time slicing capability to the interpreter.
+
+Implements setcolorscreen/currentcolorscreen.
+
+</pre><h3><a name="V2.7b_Library"></a>Library</h3><pre>
+Fixes bugs:
+* - Rectangles with vertices specified in clockwise order were
+drawn as 0-width lines.
+* - The string matching function reported that 'abcdefg'
+matched the pattern 'abcde'.
+* - The bounding box of non-rectangular clipping paths was not
+being marked as valid, so cached characters would simply get
+discarded as being outside the bounding box.
+ - erasepage filled the page with the device's white color,
+not with gray level 1 passed through the transfer function.
+* - Colors with equal R/G/B or C/M/Y components were rendered
+incorrectly if the 3 or 4 transfer functions were not all the same.
+* - Because of a bug in rc_unshare, using CIE color would give
+random errors (such as /invalidaccess in --for--).
+* - setbbox didn't round the coordinates properly, which could
+cause erroneous rangecheck errors with coordinates on the edge of the
+box.
+* - Color halftones "flipped over" at the 50% point, inverting
+foreground and background.
+ - Quite a few places assumed that longs occupied 32 bits.
+* - kshow passed an incorrect c1 value to the procedure.
+ - The debugging code in update_x_list in gxfill.c didn't take
+into account the possibility that the active line at x_first might be
+deleted.
+ - gx_image_cached_char called the xfont render_char procedure an
+extra time if it failed with required=0 and succeeded with required=1.
+(This was just a small inefficiency, not a logic bug.)
+ - Non-rectangular clipping regions weren't computed correctly,
+because accum_add_rect didn't handle overlapping rectangles.
+ - Drivers didn't report file system errors (such as file system
+full) as an ioerror.
+* - setdevice didn't reset the charpath and setcachedevice flags.
+ - The Zortech compiler produced wrong code for the uid_equal
+macro; uid_equal is now a procedure.
+
+Passes OtherSubrs arguments back to the caller correctly for indices
+greater than 3.
+
+Implements black generation and undercolor removal.
+
+Removes gdev_mem_ensure_byte_order, which was no longer used or useful.
+
+Removes gstdev.c (device tracing), since it hasn't been used in a
+long time and is of little value given a reasonable debugger.
+
+Changes the interface to the xfont char_metrics and render_char
+procedures to allow them to return 1.
+
+Changes 32-bit memory devices so they use CMYK color mapping rather
+than RGB mapping with an unused byte.
+
+Implements gs_setcolorscreen/currentcolorscreen.
+
+Implements Level 2 halftones, except for the transfer function override.
+
+Implements a hack to make zero-width rectangles display as one pixel wide,
+to work around a bug in the Microsoft Windows PostScript driver.
+Currently the hack only works for vertical lines, not horizontal ones.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.6.1"></a>Version 2.6.1 (5/28/93)</h2>
+
+<p>This is primarily a bug-fix release for 2.6, with a couple of minor
+additions.
+
+<h3><a name="V2.6.1_Documentation"></a>Documentation</h3><pre>
+
+Adds proper `man' pages ansi2knr.1 and gs.1.
+
+</pre><h3><a name="V2.6.1_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The Unix makefile produced an incorrect linker command if
+EXTRALIBS was not empty.
+ - The Unix install commands didn't copy devices.doc,
+ps2epsi.doc, and xfonts.doc to the documentation directory.
+ - echogs.c didn't include &lt;sys/types.h&gt;, which is needed for
+time_t on some systems.
+ - malloc_.h used &lt;malloc.h&gt; rather than &lt;stdlib.h&gt; on
+NeXTStep systems.
+
+Changes the configuration procedure to use a C program rather than
+complex shell scripts.
+
+</pre><h3><a name="V2.6.1_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - The boilerplate produced by ps2image used the 'max'
+operator, which is not a standard PostScript operator.
+ - The winmaps.ps utility had 'floring' instead of 'florin' in
+the OEMEncoding table.
+ - quit.ps was omitted from the PC distribution.
+
+Changes the name of the dicttomark procedure to .dicttomark.
+
+Renames gs_2asc.ps as ps2ascii.ps, so it matches the names of the
+script files.
+
+</pre><h3><a name="V2.6.1_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The pbmraw driver was writing out RGG instead of RGB values.
+ - The X11 driver used NULL in a place where it should have
+used None.
+ - For multi-file output, the GIF driver didn't write a header
+at the beginning of each file.
+ - The Epson driver didn't honor the -A4 compilation switch,
+didn't put (0,0) at the physical corner of the page, and was too
+liberal about using tabs instead of spaces.
+
+Replaces the color handling algorithms in the X Windows driver with
+new, much better ones.
+
+Makes the PC display drivers recognize the -A4 compilation switch,
+like the printer drivers.
+
+Adds new user-contributed drivers:
+ - A driver for Epson printers that use the ESC/P 2 control
+language, such as the Stylus 800.
+ - A driver for the Apple Dot Matrix Printer and Imagewriter.
+
+Adds a new get_xfont_device driver procedure. This is a
+backward-compatible change, since there is a sensible default.
+
+</pre><h3><a name="V2.6.1_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - On VMS, gconfig.h didn't have #include "gsconfig.h" as its
+first line.
+ - gconfig.c compiled incorrectly on the RS/6000 because the
+compiler evaluated a constant of the form (x&lt;&lt;y)+z incorrectly.
+ - Quite a few files that used the mem... functions didn't
+include memory_.h, which caused trouble on some bsd4.2 systems.
+ - The definition of zfont_char_xglyph confused one of the AIX
+compilers.
+ - On VMS, DEC C allows extra arguments for fopen, but gcc doesn't.
+ - On the MS Windows platform, 2.6 used gdevwddb rather than
+gdevwdib; the latter is almost always faster.
+ - The PC .zip files didn't include the Windows .ICO and .RES
+files in either GSEXE.ZIP or GSFILES.ZIP.
+
+On PC platforms, adds an option (FPU_TYPE=-1) to optimize for
+machines lacking a floating point processor.
+
+</pre><h3><a name="V2.6.1_Fonts"></a>Fonts</h3><pre>
+
+Adds 4 new fonts contributed by URW. These have a URW copyright and
+are governed by the GNU License.
+
+Documents the fact that font names in Fontmap can be strings, not
+only names.
+
+Adds DingbatsEncoding as a predefined encoding (in addition to
+Standard, ISOLatin1, and Symbol).
+
+</pre><h3><a name="V2.6.1_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - memchr (used in zfile.c) isn't available on all platforms.
+ - languagelevel was defined as an operator rather than an
+integer.
+ - iccfont.c referred to name_StandardEncoding instead of
+#include'ing font.h and referring just to StandardEncoding.
+ - The CCITTFaxDecode filter didn't work on 32- (or 64-) bit
+machines, because of a bug in more_bits().
+ - The structures recording an allocation within the scope of
+a save could get allocated unnecessarily, because they weren't
+properly marked as free when an array was freed.
+
+Renames the following Ghostscript-specific operators by adding a '.'
+at the front: makeoperator, setdebug, setmaxlength, stringmatch,
+type1decrypt, type1encrypt.
+
+Adds a real implementation of glyphshow.
+
+</pre><h3><a name="V2.6.1_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - Discarding fractional character coordinates in the Type 1
+rasterizer led to some rendering anomalies (e.g., characters 1 pixel
+too high).
+ - If a font had a non-standard encoding (i.e., not
+StandardEncoding, ISOLatin1Encoding, or SymbolEncoding), Ghostscript
+would never invoke the platform font code.
+ - The RGB to HSB color conversion algorithms produced
+nonsensical values.
+ - struct cached_char_s was defined redundantly in gxcdir.h,
+causing compilation problems on some systems.
+ - 32-bit color devices didn't work properly on little-endian
+machines (arrange_bytes in gdevmem2 was wrong).
+ - The scaled font cache could confuse two fonts with the same
+UniqueID and different Encodings.
+ - Under many common circumstances (first use of a character
+was with stringwidth, the font was renamed, the font encoding was
+changed), xfonts would not be used.
+
+Adds gs_glyphshow.
+
+</pre>
+
+<h2><a name="Version2.6"></a>Version 2.6 (5/9/93)</h2>
+
+<p>The main new feature in this release is the ability to use platform
+fonts. It also adds many more Level 2 PostScript facilities.
+
+<h3><a name="V2.6_Documentation"></a>Documentation</h3><pre>
+
+Corrects some errors in the documentation of the makeimagedevice operator.
+
+Adds operand and result types to the comments at the beginning of all the
+operators.
+
+Adds new sections on installation in use.doc.
+
+Reinstates history.doc as a repository for old and no longer interesting
+history information.
+
+Adds a new file, devices.doc, with documentation for specific devices.
+
+Points out that font2c must be run with a Fontmap that includes the fonts
+being converted, and that its arguments must be quoted with "" on VMS
+systems.
+
+Notes that the font name in the Fontmap must be the same as the FontName
+in the font.
+
+Adds a list of the Level 2 facilities not provided by Ghostscript.
+
+Identifies bug-ghostscript@prep.ai.mit.edu as an alias for the
+gnu.ghostscript.bug newsgroup.
+
+Points out explicitly that -sOutputFile=- sends output to stdout, and
+requires using the -q switch.
+
+Documents the use of tar_cat to construct the Unix makefiles.
+
+Adds a new file, xfonts.doc, that describes the external font interface.
+
+Documents the fact that drivers must use gs_malloc and gs_free rather than
+malloc and free.
+
+Documents the *.sh (shell script) files.
+
+Adds brief documentation on some additional development tool .ps files.
+
+Documents the TEMP and GS_OPTIONS environment variable.
+
+Points out the need to run Windows in 386 Enhanced mode on machines
+that have less than 6 Mb of RAM.
+
+Consolidates documentation on compiler switches in make.doc (some of
+it had been in the unix*.mak files).
+
+</pre><h3><a name="V2.6_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - \'s in arguments following -- were doubled.
+
+Includes the full set of filters automatically if the level2 feature
+is selected.
+
+Extends DEVICE_DEVS... up to DEVS9. Adds DEVICE_DEVS1 as well.
+
+Renames turboc.mak and tbcplus.mak as tc.mak and bc.mak.
+
+Makes @-files use the library path (GS_LIB, -I).
+
+Changed the Unix install script to use install &lt;file&gt; &lt;destfile&gt;
+rather than install &lt;file&gt; &lt;directory&gt;.
+
+Adds a GS_OPTIONS environment variable that acts like an implicit @-file
+at the beginning of the command line (i.e., may contain switches and
+initialization files).
+
+Renames sym__enc.ps as gs_sym_e.ps.
+
+Adds a user-contributed shell script for using Ghostscript with an
+H-P printer spooler.
+
+Adds level1.ps to the set of installed utility files.
+
+Extends the TEMP environment variable (the directory for scratch
+files) to work on Unix as well as MS-DOS.
+
+Changes the MS Windows makefile to generate gswin.exe rather than
+gs.exe, and the Watcom makefile to generate gs386.exe.
+
+Moves the "product" string from gs_init.ps to iinit.c.
+
+Adds a GS macro to the makefiles, to allow choosing the name of the
+executable.
+
+</pre><h3><a name="V2.6_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+* - font2c did the wrong thing (still) for fonts that didn't
+use StandardEncoding, ISOLatin1Encoding, or SymbolEncoding.
+* - impath.ps had a fatal bug (wrong operand order for
+charstack_write) that caused bdftops to fail.
+ - gslp didn't wrap or truncate lines.
+ - gslp didn't handle tabs in a second or subsequent column
+properly.
+ - The definition of ashow in gs_2asc.ps incorrectly undid the
+increment following the last character.
+ - The definition of awidthshow in gs_2asc.ps failed to pop
+two entries from the stack, and also tested the character against the
+wrong value.
+
+Adds a shell script (sysvlp.sh) that interfaces Ghostscript with the
+System V 3.2 lp interface.
+
+Adds ps2ascii and ps2epsi script/batch files.
+
+Adds a new utility, mergeini.ps, for concatenating all the
+Ghostscript initialization files into a single file, optionally
+removing comments and blank lines.
+
+Adds new switches to gslp:
+ -q: suppress all printed output.
+ --detect: check whether the file begins with %!, and if so,
+ interpret it directly as a PostScript file.
+ --first-page &lt;page#&gt;: replaces the former -P switch.
+ --last-page &lt;page#&gt;: replaces the former -Q switch.
+ --(heading|footing)-(left|center|right) &lt;string&gt;: define
+ headers/footers. # inserts the page number.
+ --margin-(top|bottom|left|right) &lt;inches&gt;: define margins.
+ --spacing &lt;n&gt;: for double, triple, etc. spacing.
+Also makes gslp ignore all the enscript flags it doesn't implement.
+
+Adds an option to wrfont.ps to do encryption at read-in time. (This
+allows much better compression of the standard Ghostscript fonts.)
+Changes bdftops to use this option.
+
+Changes gslp to accept wild cards in file names.
+
+Replaces landscap.ps with a new one contributed by a user.
+
+Changes the compression scheme used in ps2image to a much more
+effective one. Writing images is much slower than with the previous
+scheme, but reading is not.
+
+</pre><h3><a name="V2.6_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - SCFDTAB and SCFTAB were omitted from the VMS module lists.
+ - Function prototypes were not being used with the Watcom
+compiler.
+ - On MS-DOS platforms, if the value of the TEMP variable had
+a trailing : or \, Ghostscript appended a \ anyway.
+ - Under Windows, changing the size or resolution of the image
+closed and reopened the window.
+ - Ghostscript would not build correctly with the Watcom compiler
+if DOS4G=quiet was not set, because the DOS4GW copyright message was sent
+to stdout.
+* - Finally gets Ghostscript to run properly on the RS/6000, by
+adding a compiler bug workaround to arc_add and arc_either.
+* - Finally gets Ghostscript to compile properly on Sun SPARC
+systems, by adding a compiler bug workaround in scan_number.
+
+Changes the default MS-DOS configuration from 8086/8088 to 80286.
+
+Adds all the SuperVGA drivers to the BC++ and Watcom executables
+(except for the VESA driver in the Watcom executable).
+
+Adds a makefile (msc.mak) for the Microsoft C/C++ 7.0 platform. This
+is currently a MS-DOS, not a MS Windows, platform.
+
+Changes gp_enumerate_files_init so it takes a gs_memory_procs *, not
+separate proc_alloc_t and proc_free_t arguments; also, it must
+enumerate precisely the requested set of files, not a superset. THIS
+IS A NON-BACKWARD-COMPATIBLE CHANGE. It affects all gp_*.c files.
+
+Adds the P*M drivers and bit.dev to the standard configuration on
+Unix platforms.
+
+Changes the Watcom makefile so it uses the WATCOM environment variable (by
+default) as the base directory for the Watcom executables.
+
+Adds the MS Windows COMMDLG.DLL and SHELL.DLL files to the set of
+files incorporated in GSEXE.ZIP, since the new MS Windows code uses
+them, and they aren't provided with Windows 3.0.
+
+Makes major revisions to the MS Windows platform and driver code, to
+support the gsview front end, and also to remove the dependence on the
+Borland EasyWin library. NOTE: Compiling the MS Windows code now requires
+Borland C++ 3.1 (not 3.0).
+
+Changes time_.h so that Ghostscript will compile and run on A/UX.
+
+Changes the MS-DOS implementation of file enumeration so it always
+treats \s in the file name as literal characters, not escapes, unless
+there are two \\s in a row. This does the most sensible thing given
+the DOS file naming conventions.
+
+Adds a %pipe% file device under Unix.
+
+Adds a makefile for Watcom C under MS Windows. This is very preliminary;
+in particular, NO display output is supported.
+
+</pre><h3><a name="V2.6_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+ - fonts.mak referred to ncri and puti rather than ncrri and
+putri.
+ - cyr and cyri had the wrong protection.
+ - The Hershey fonts left the font on the stack when they were
+loaded.
+* - The FontName of an aliased font was the original FontName
+from the file, not the alias.
+* - Fontmap.BTS had incorrect entries for AvantGarde-Demi and
+AvantGarde-DemiOblique.
+ - Ghostscript pushed userdict, rather than an empty writable
+dictionary, onto the stack when loading a font, leading to name clashes.
+
+Adds a new cfonts.mak with a full set of rules for compiling all the
+standard Ghostscript fonts (except the Hershey fonts) into C.
+
+Adds UniqueIDs to the Hershey fonts, and removes the UniqueIDs from
+the Hershey entries in the Fontmap.
+
+Adds a new Fontmap for VAX/VMS with DECWindows/Motif.
+
+Changes MakeHersheyFont so it takes the encoding as an additional
+parameter, and changes the Hershey-Symbol font to use SymbolEncoding.
+
+</pre><h3><a name="V2.6_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The !@*&amp;^%#@$ PCL drivers *still* didn't do the right thing
+about vertical spacing: the &lt;ESC&gt;*p+&lt;n&gt;Y command works on all PCL 3,
+4, and 5 printers *except* the LaserJet IIp.
+ - The cdj driver used recursive macros (height, t_margin,
+b_margin) that not all compilers handled correctly.
+ - The djtc driver used some assignments including =*, which
+some compilers dislike.
+ - The S3 driver wouldn't compile correctly with the Watcom
+compiler.
+ - The makefile entry for the S3 driver was wrong.
+ - The SuperVGA drivers returned an error, rather than using
+the highest available resolution, if a too-high resolution was
+requested.
+ - The GIF driver produced an incorrect header for images
+wider or taller than 32K pixels.
+ - The GIF driver wasn't able to handle multi-page documents
+correctly.
+ - The margins on the DeskJet were still not correct.
+ - Some ANSI C compilers rejected a complex expression in
+gdevpccm.c.
+ - Printer drivers didn't recover cleanly from problems in
+opening the scratch files.
+ - The BJ-10e driver used the same name `out' for a label and
+a variable.
+ - The SCO ODT compiler couldn't handle sizeof(ppdev-&gt;fname).
+ - The Epson driver used the wrong value for ESC in the
+initialization string.
+
+Adds new drivers:
+ - Drivers to produce MS Windows .BMP format output.
+ - A new ATI Wonder display driver (800x600, 16 colors) and a
+1024x768 mode for the existing driver.
+
+Adds new user-contributed drivers:
+ - A driver for the Tektronix 4693d color printer. This carries a
+university copyright.
+ - A driver for the SPARCprinter.
+ - A driver for the Canon BJ200 printer.
+ - A driver for the IBM ProPrinter.
+ - A driver for the DEC LJ250 printer, which has a
+PaintJet-compatible mode.
+ - A replacement driver for the Sony NWP533.
+ - A driver that writes TIFF/F (Group 3 fax) files. This carries
+an external copyright.
+ - A driver for the C.Itoh M8510 printer.
+ - A driver for the Okidata MicroLine 182 9-pin dot-matrix printer.
+ - A Hercules Graphics driver.
+ - A driver for printers under MS Windows.
+ - A driver for direct frame buffer addressing under SCO Unix
+and Xenix and AT&amp;T SVR4.
+
+Changes the get_bits driver procedure so it always reads a single
+scan line, and optionally does not copy the data. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE. However, this change does not affect
+any existing printer driver, since these all go through intermediate
+routines in gdevprn.c.
+
+Changes gdevprn.h, and the relevant printer drivers, so that -DA4
+will change the default paper size for any printer driver.
+
+Allows the use of NULL or 0 for default procedures in the driver
+procedure vector.
+
+Adds an optional map_cmyk_color procedure to the driver procedure
+vector.
+
+Changes the Epson driver so that the minimum amount of white space
+required to use a tab is an easily changed parameter.
+
+Changes the BGI driver to use separate segments for the Borland
+device drivers, to reduce the risk of overflowing a segment.
+
+Adds an optimization option (normally enabled) to the PGM and PPM drivers
+such that they revert to PBM or (for PPM) PGM if the page can be
+represented that way.
+
+Adds a new (optional) driver procedure to get the procedure vector
+for external fonts.
+
+Adds an argument to gp_open_printer to indicate whether the file should be
+opened in binary or text mode. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
+However, this change does not affect any existing printer driver, since
+these all go through intermediate routines in gdevprn.c.
+
+Changes the LN03/LA50/LA75 driver so it uses a text record mode to open
+the output file under VMS (by adding an argument to gp_open_printer to
+indicate this.)
+
+Allows (indeed, encourages) drivers to use far_data to declare the device
+structure, primarily to avoid overflowing the 64K data segment under MS
+Windows. Changes the file output drivers and many of the printer drivers
+to declare their device structures as far_data.
+
+Replaces the AT&amp;T 3B1 driver with an updated version (from the same
+contributor).
+
+Changes the Epson BJ driver and the SPARCprinter driver so they align
+the (0,0) point of the page with the physical corner of the paper
+rather than with the origin of the printable area.
+
+Removes the EIZO MDB-10 driver, since it caused complications for the
+EGA and VGA drivers and is not a widely used device.
+
+</pre><h3><a name="V2.6_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The entry for the copydevice operator in the operator table
+was initialized incorrectly.
+ - printobject and writeobject didn't handle nested arrays.
+ - restore didn't properly close the current file (if
+appropriate), causing an invalidaccess error.
+ - buildfont required the presence of a valid, 4-element
+FontBBox. (The Red Books say it's required, but Adobe interpreters
+don't require it; some DEC software generates a 3-element FontBBox.)
+ - resourceforall had several bugs; it didn't do even
+approximately the right thing. There were quite a few other problems
+with the implementation of resources.
+ - setfont, makefont, and scalefont would accept a font with
+no FID entry.
+* - Loading a .PFB font left the file open (until the next
+restore or quit).
+ - The default (null) font didn't include a PaintType entry,
+which some PostScript files expected.
+* - The ASCIIHexDecode filter sometimes thought the underlying
+stream was at EOF even when there was (at most one buffer's worth of)
+data left.
+ - iscan.c included &lt;ctype.h&gt; before std.h, causing type name
+clashes on some systems.
+* - save and restore didn't handle the pointers in the graphics
+state correctly; for example, the current font wasn't restored
+properly.
+ - Binary object sequences at the top interpreter level didn't
+get executed immediately.
+ - On high-resolution devices, the default transfer function
+converted almost-white grays to very light grays rather than white.
+ - The `string' operator was checking the string length
+against max_uint rather than max_ushort, which could cause invalid
+lengths to be accepted.
+* - deviceinfo caused a stackunderflow error.
+* - idiv could give incorrect results for quotients or
+remainders that didn't fit in 24 bits.
+* - The ASCII85Encode filter padded trailing bytes with 1's
+rather than 0's.
+* - The ASCII85Decode filter had a typo that produced incorrect
+results if there were exactly 2 trailing bytes.
+ - findlibfile didn't push a copy of the file name if it was
+the name of a special (%) file.
+ - setduplexmode was not defined in statusdict, causing
+/undefined errors from some poorly designed input files.
+* - The CCITTFaxDecode filter had several bugs in 2-D decoding.
+* - The ASCII85Decode filter didn't read ahead to detect EOD if
+it fell precisely on a buffer boundary.
+ - If a file mentioned on the command line redefined `start',
+Ghostscript would run the new definition rather than the built-in one
+after processing all the files on the command line.
+ - The SCO ODT compiler couldn't handle the conditionals in the
+ngetc (iscan.c) and sgetc* (stream.h) macros.
+ - makefont and scalefont didn't cache the PostScript dictionaries
+for scaled fonts.
+ - Changing the elements of the Encoding of a font dynamically
+didn't take effect if the character was already cached.
+ - makefont and scalefont didn't add the (undocumented) OrigFont
+and ScaleMatrix entries to the new font.
+* - findfont insisted that the font name be a string or a name.
+ - filenameforall could cause an incorrect transfer of control
+if no files matched the pattern.
+* - ISOLatin1Encoding had hyphen instead of minus at code 45.
+ - restore didn't reset saved_cbot and saved_ctop correctly;
+as a result, some freed blocks could get abandoned rather than put on
+the free list.
+ - Some numerical constants in zarith.c assumed that longs
+occupied 32 bits.
+
+Implements additional Level 2 features:
+ - %device%file names (only the "os" device is provided).
+ - &lt;~ ~&gt; for ASCII-85 strings.
+ - Binary error messages.
+ - BuildGlyph.
+ - CCITTFaxDecode filter entries EndOfBlock, Rows, and
+ (undocumented) FirstBitLowOrder.
+ - {set/current}{color/colorspace/overprint/colorrendering/
+ blackgeneration/undercolorremoval}. (See below under library
+ for limitations.)
+ - Decode for the dictionary form of image.
+ - File access modes a, r/w/a+.
+ - Font entries CDevProc, Metrics2, and WMode.
+ - Font operators cshow, findencoding, rootfont, and
+ setcachedevice2.
+ - glyphshow (emulated with PostScript code).
+ - languagelevel.
+ - realtime.
+ - setbbox.
+ - (Subset of) system and user parameters.
+ - xshow, yshow, and xyshow.
+ - XUIDs for fonts.
+
+Moves the installation of systemdict and the initial allocation of
+globaldict (if relevant) and userdict from gs_init.ps to iinit.c.
+
+Makes Level 2 features dynamically selectable through the
+.setlanguagelevel operator; disables all Level 2 features
+(specifically including automatic dictionary expansion) unless the
+level2 feature is included and active.
+
+Adds the .knownget operator for speeding up system procedures.
+
+Renames the type1addpath operator as .type1addpath; adds an optional
+left side bearing argument; changes it so it does not do the
+setcachedevice, fill, or stroke, but does do a moveto for the
+character width. Changes Type1BuildChar appropriately. (All this is
+needed to make WMode work.)
+
+Removes the .setmetrics operator, which is no longer needed.
+
+* Changes the meaning of the user_errors argument to gs_run_file and
+gs_run_string so that -1 means always return on an error, 0 means
+only return on an error not within a `stopped'.
+
+Adds all the necessary checks and operators for local/global VM, but
+doesn't actually implement local/global mode.
+
+Changes setcachedevice back so that it requires 4 numbers on the
+stack rather than a 4-element array. (It was changed to be the other
+way in release 2.0, but that was because I didn't realize that fonts
+had to have an executable FontBBox, and some of the Ghostscript fonts
+didn't.)
+
+Changes all the filter operators from .filterxxx to .filter_xxx, and
+removes the need to enumerate them in gs_init.ps.
+
+Adds .oserrno and .oserrorstring operators for getting the last OS
+error (in the current context).
+
+Changes gs_finit similarly to gp_exit. Adds gs_exit_with_code that
+takes both an exit status and a Ghostscript error code.
+
+Changes the name of name.h to iname.h.
+
+Adds support for the `interrupt' error (but doesn't provide any standard
+way of generating one, other than through the gp_check_interrupts polling
+function).
+
+Adds copyright to systemdict.
+
+Changes the spot halftone screen to an elliptical screen supplied by
+Berthold K. P. Horn.
+
+Adds a check that the first token in gs_init.ps is an integer. In
+conjunction with other code in gs_init.ps, this should catch all attempts
+to run Ghostscript with a gs_init.ps that doesn't match the executable.
+
+Changes all relevant occurrences of sizeof to size_of in order to
+work with the buggy SVR4.2 C compiler.
+
+Changes gp_exit so it is passed both the Ghostscript error code and
+the exit status code as arguments. This is backward-compatible for
+all but the pickiest compilers.
+
+Adds a call on gp_check_interrupts() after fwrite calls in the stream
+machinery. This prevents lengthy console output from locking out
+other programs.
+
+Changes a couple of occurrences of op_def_ptr in iinit.c to work around a
+`const' bug in Sun's SC1.0 compiler.
+
+Adds a special hack in the 'where' operator to work around a bug in Aldus
+Freehand 2.x.
+
+Changes all empty argument lists from () to (void), which is the ANSI
+C syntax.
+
+Adds a hack to ignore ^[ and ^D^[ tokens, to work around the prologue
+and epilogue emitted by the MS Windows LaserJet IV driver.
+
+Defines the processcolors operator, which should not be needed, but
+is required because of bugs in Lotus 1-2-3 and Adobe PhotoShop.
+
+Changes the allocator (ialloc) to fill all allocated and/or freed
+blocks with a marker if gs_alloc_debug is set, as gs_malloc and
+gs_free already do.
+
+</pre><h3><a name="V2.6_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - 16-bit memory devices stored the bytes of each pixel in the
+wrong order.
+ - copy_mono did the wrong thing when copying 1 source chunk
+to 2 destination chunks with polarity inverted. (This probably
+didn't affect any actual uses of Ghostscript.)
+* - The compile-time check for ints being 2 or 4 bytes used the
+#error directive, which most compilers don't recognize.
+ - arc and arcn didn't do the right thing for degenerate
+(single-point) arcs, or for arcs drawn in the "wrong" direction that
+were multiples of 360 degrees.
+ - charpath did the wrong thing with Type 3 fonts.
+ - copyscanlines gave an error if the buffer was too large.
+ - The copy_mono procedure (used for text and halftones) for
+2- and 4-bit-per-pixel memory and printer devices incorrectly
+incremented the destination pointer after every pixel, instead of
+only after every byte.
+ - The fill_rectangle procedure (used for graphics) for 2- and
+4-bit-per-pixel memory and printer devices, if given any color other
+than all 0's or all 1's, multiplied the X coordinate and width by 2
+or 4, thereby filling the wrong area.
+ - The use of 'data' in both gs_type1_data and gs_font upset
+the VMS compiler.
+ - The `Flex' feature wasn't implemented for Type 1 fonts,
+which caused serious errors in rendering some fonts that use it.
+(Unfortunately, some Adobe fonts violate the specification, so we had
+to implement Flex to always use a curve.)
+* - Stem width adjustment was too eager, producing very strange
+effects on small characters with tight curves (a curve point could
+get snapped to the other side of the open area).
+ - The allocator didn't align structures adequately on
+machines where sizeof(long) or sizeof(char *) was 8 bytes.
+ - The test for IEEE floating point gave an incorrect
+(negative) result on machines where sizeof(long) was 8 bytes.
+ - genarch.c assumed that the result of subtracting two
+pointers was an int, leading to a garbage arch.h file on systems
+where this was false.
+* - The Type 1 font interpreter incorrectly reset the adjusted
+path position to be the same as the unadjusted path position whenever
+it returned control to the client (in particular, for callothersubr),
+leading to discontinuities and distortions in the character shapes.
+* - Accented characters in Type 1 fonts often misplaced the
+accent to the left.
+ - gsmisc.c wouldn't compile on machines with 64-bit pointers,
+because _pad was 0, and ANSI compilers don't accept 0-length arrays.
+ - pathforall got confused if the client procedures modified
+the path.
+ - The command list file representation limited X and Y
+coordinates to 15 bits.
+* - stroke could produce spikes or other garbage for mitered
+joins as a result of stroke adjustment.
+ - The params_size field of the null device was wrong, so
+scaling the null device produced unpredictable results.
+
+Changes monobit memory devices to always store data big-endian. This
+eliminates byte-swapping, at the cost of slightly slower rendering.
+
+Removes the memswab* routines, since they are no longer needed.
+
+Implements gs_cshow_[n_]init, which provides support for cshow, and
+gs_xyshow_[n_]init, which provides support for {x,y,xy}show.
+
+Adds an optional left side bearing argument to gs_type1_interpret.
+
+Changes gs_type1_interpret so it does not do a setcachedevice, fill,
+or stroke, but only appends the character outline to the path
+(including a moveto for the character width.)
+
+Removes gs_setmetrics, which is no longer needed.
+
+Implements gs_setcachedevice2, which provides support for
+setcachedevice2.
+
+Speeds up gsave/grestore by allocating, deallocating, and copying as
+much as possible of the graphics state in a single operation.
+
+Implements gs_{set/current}{color/colorspace/overprint/colorrendering/
+blackgeneration/undercolorremoval}. Device, indexed (with table, not
+with procedure), CIE, and (substituted) separation colors are
+supported; some of the setup code for patterns is also present.
+
+Increases the size of temporary file names in gdevprn.h from 30
+characters to 60.
+
+Changes the character cache to be allocated dynamically in chunks.
+
+Splits gxcache.c into gxccache.c (fast "hit" code) and gxccman.c (all
+other code).
+
+Changes all occurrences of sizeof to size_of in order to work with the
+buggy SVR4.2 C compiler.
+
+Adds a new concept of "external fonts", which allow a driver to
+substitute its own fonts for the ones obtained through the normal
+font machinery.
+
+Changes all empty argument lists from () to (void), which is the ANSI
+C syntax.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.5.2"></a>Version 2.5.2 (9/20/92)</h2>
+
+<p>This is yet another bug fix release to (finally!) get the PCL drivers
+working again.
+
+<h3><a name="V2.5.2_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The comment in devs.mak for cdjcolor said it used 8 bits
+per pixel, rather than the correct 24.
+
+Adds gsbj/dj/lj/lp and gslp.ps to the installed files on Unix
+systems.
+
+Removes dps.dev and level2.dev from the standard configurations on
+all platforms, since the presence of the setcolor operator was
+causing the output of some common applications to fail.
+
+</pre>
+
+<h3><a name="V2.5.2_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - font2c produced invalid output for any font that didn't use
+StandardEncoding or ISOLatin1Encoding.
+
+</pre>
+
+<h3><a name="V2.5.2_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - gp_sysv.c required an extern long timezone.
+
+</pre>
+
+<h3><a name="V2.5.2_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The PCL drivers were *still* doing the wrong thing about
+zeroing the seed row for Mode 3 compression.
+ - Setting the resolution with -r didn't work under Windows.
+ - The Windows driver got a stack overflow if it was ever
+asked to display a bit image wider than 32 pixels.
+ - The Tseng driver didn't sense the model (ET3000 vs. ET4000)
+correctly.
+
+Adds the eps9high device to the standard MS-DOS makefiles.
+
+</pre>
+
+<h3><a name="V2.5.2_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - gs_run_string used gs_user_errors (a global) rather than
+user_errors (its argument) to control error handling. (This does not
+affect normal operation of Ghostscript, only use as a server.)
+ - eexec popped the top element of the dictionary stack
+afterwards even if the encrypted code had pushed something onto it.
+This caused problems for some badly written PostScript code.
+ - The printed form of real numbers didn't always include a
+decimal point, causing compatibility problems.
+
+Makes -s and -d work for device properties.
+
+Increases the cache limit on large-memory systems.
+
+Adds a check to ensure that the revision of gs_init.ps matches that
+of the interpreter.
+
+Adds the .knownget operator.
+
+</pre><h3><a name="V2.5.2_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - The raster computation in clist_render_init, and the
+computation of state_size in clist_open, didn't widen an operand to
+long, leading to possibly incorrect operation for 24-bit-per-pixel
+printers on MS-DOS systems.
+ - The flatness was set too large for Type 1 characters,
+leading to visible straight edges instead of curves at large sizes.
+ - Type 1 fonts that contained out-of-range coordinates would
+produce garbled output. (This was not a problem with the standard
+Ghostscript fonts, or with Adobe Type Manager fonts.)
+ - gschar0.c wouldn't compile, because it referred to a
+non-existing structure member penum-&gt;chr. (This had no effect on
+Ghostscript's operation.)
+ - The curve flattener required line segments to be no more
+than 8 x the flatness in length, leading to an enormous number of
+segments.
+ - pathforall would cause an addressing fault if the path
+consisted of only a moveto.
+
+Refactors some header files so that std.h is always included before
+any system header file that might include sys/types.h.
+
+Adds logic for removing top and bottom blank rows in cached
+characters. (This is the beginning of compression for the cache.)
+
+Changes the arguments of memswab2/4 from char * to byte *, for more
+accurate type conformance.
+
+</pre>
+
+<h2><a name="Version2.5.1"></a>Version 2.5.1 (9/11/92)</h2>
+
+<p>This is the usual bug fix re-release.
+
+<h3><a name="V2.5.1_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The makefile rules for compiled fonts had a circular
+dependency.
+ - `make begin' didn't work properly on all platforms.
+
+Ensures that all batch files end with a newline. (The absence of the
+newline was confusing the GNU diff program.)
+
+Documents the fact that the -dASCIIOUT switch no longer exists.
+
+</pre><h3><a name="V2.5.1_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - pstoppm didn't `bind' its internal procedures.
+ - grestoreall would undo the output device selected by
+pstoppm.
+
+Changes the utilities for reading and writing Type 1 character
+outlines so they can work with stack representations as well as
+arrays.
+
+Removes the pfbtogs.ps, phonbook.ps, and showpbm.ps utilities from
+the distribution.
+
+Adds a gslj utility to parallel gslp and gsdj.
+
+</pre><h3><a name="V2.5.1_Platforms"></a>Platforms</h3>
+
+<pre>
+Adds the DeskJet 500C drivers (cdeskjet/cdj*) to the MS-DOS / Borland
+C++, MS-DOS / Watcom C/386, and MS-Windows configurations.
+
+Removes the PCX file driver from the MS Windows executable, because
+the static data segment exceeded 64K.
+
+Makes some changes in the Unix System V platform file (gp_sysv.c) and
+in time_.h and unixtail.mak to accommodate the 3B1.
+
+</pre><h3><a name="V2.5.1_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+ - The Charter-Italic font was named bchi.pfa rather than
+bchri.pfa.
+ - The Cyrillic fonts (cyr.gsf, cyri.gsf) were omitted from
+the fileset.
+ - Ghostscript incorrectly assumed that all Type 1 fonts had a
+FontInfo dictionary.
+ - .loadfont used false PFBDecode, so a few .PFB fonts would
+get errors because the first eexec byte would be whitespace.
+
+Changes font2c and its supporting code so that compiled fonts are
+location-independent.
+
+</pre><h3><a name="V2.5.1_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The margins for the H-P printers were still wrong.
+ - The H-P drivers accidentally cleared the compression seed
+row when switching compression modes.
+ - Some of the H-P drivers used the wrong control codes for
+skipping blank lines.
+
+Adds user-supported drivers for the AT&amp;T 3B1 console device, and for
+the NEC P6+ printer.
+
+Updates the SunView driver with a new version supplied by a(nother)
+user.
+
+Changes the X Windows driver so the Ghostscript window doesn't get
+input focus.
+
+Changes the common code for the printer drivers so that if it can
+allocate a full bitmap but there isn't at least a minimum amount of
+memory left afterwards, it switches to banding.
+
+Changes the Windows driver so it handles devices with more than 8
+bits per pixel. (We haven't been able to test this.)
+
+Adds a read-only PageCount device property (for printer devices
+only).
+
+Changes all Aladdin-supported drivers to clip drawing requests to the
+((0,0), (width,height)) rectangle of device space.
+
+</pre><h3><a name="V2.5.1_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - Closing a NullEncode filter always gave an ioerror.
+ - If a single-character name occurred 1 character before the
+end of an input buffer, the character would be doubled.
+ - The procedures in gs_statd.ps didn't use "bind".
+ - Setting the page size didn't work properly with devices
+with rotated coordinate systems.
+ - If an error occurred, and the error object wasn't the last
+element of its procedure, the interpreter would re-execute the error
+object after running the error handler.
+ - Memory devices didn't get resized if HWSize was changed,
+leading to out-of-bounds memory accesses.
+
+Moves revision and revisiondate from gs_init.ps to iinit.c. Adds a
+-v switch that just prints these out.
+
+Arranges things so that if Ghostscript is reading from a pipe (`-'
+switch on the command line) and encounters an error, it exits with
+status 1 rather than 0.
+
+Changes the interpreter interface so the caller explicitly passes a
+pointer for storing an error object.
+
+</pre><h3><a name="V2.5.1_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - The automatic adjustment of the scaling for variant paper
+sizes caused the image to get expanded when it should have been
+contracted, and vice versa.
+ - The curve flattener insisted that each line segment be no
+more than 2 x the flatness in length, leading to an enormous number
+of segments even when not necessary for accuracy.
+ - flattenpath and strokepath discarded a trailing moveto.
+ - strokepath treated "0-width" lines as really having a width
+of zero, rather than one pixel.
+ - Buffered devices weren't closed and reopened if the amount
+of buffer space was changed.
+ - stroke used the line cap at the beginning of each subpath
+even if the subpath was closed.
+
+Removes the requirement that the clipping rectangle fall in the
+non-negative quadrant of device space. (This was causing problems
+for Ghostview, but removing it required adding the extra clipping
+step to the drawing routines in the drivers.)
+
+</pre>
+
+<h2><a name="Version2.5"></a>Version 2.5 (8/18/92)</h2>
+
+<p>This version adds Type 1 hinting, CCITTFax encoding and decoding, and
+Microsoft Windows support, as well as the usual minor improvements
+and bug fixes.
+
+<h3><a name="V2.5_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - GSIMPATH, SLZWD, and SLZWE were omitted from the VMS
+makefiles, and GSIM2OUT was not removed.
+ - landscap.ps messed up the current path.
+
+Adds new switches:
+ -dSAFER disables file writing and directory modification.
+ -dESTACKPRINT causes errors to print the execution stack with
+== instead of =.
+ -sOutputFile=&lt;string&gt; replaces -sOUTPUTFILE (which is still
+recognized) for setting the output file or pipe for the default
+(printer) device.
+ -sPAPERSIZE=&lt;sizename&gt; initializes the paper size.
+ -dBufferSpace=&lt;number&gt; sets the buffer size for the default
+(printer) device.
+
+For Unix systems, changes the directories in GS_LIB_DEFAULT from
+`pwd` to $(gsdatadir), i.e., normally $(datadir)/ghostscript, where
+datadir is normally /usr/local/lib.
+
+Adds a note in the header file to the effect that the X Windows
+driver expects to find header files in $(XINCLUDE)/X11, not in
+$(XINCLUDE).
+
+Changes -q so it defines QUIET as true instead of null (so it can be
+used in the middle of the command line as well as at the beginning).
+
+Renames the history.doc file as NEWS.
+
+</pre>
+
+<h3><a name="V2.5_Utilities"></a>Utilities</h3>
+
+<h3><a name="V2.5_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - The stack size was not getting increased on the Watcom
+platform.
+
+Removes "b" from the scratch file opening modes in gp_unix.c and
+(conditionally) in gdevprn.c, to pacify the DECstation Ultrix system.
+
+Adds a makefile (bcwin.mak) and a platform file (gp_mswin.c) for
+Microsoft Windows.
+
+On MS-DOS platforms (including Windows), uses the TEMP environment
+variable to designate the directory for scratch files.
+
+Changes std.h so that the VMS C compiler uses function prototypes and
+'const'.
+
+Changes the VMS cc makefile so it doesn't use ansi2knr.
+
+</pre><h3><a name="V2.5_Fonts"></a>Fonts</h3><pre>
+Fixes bugs:
+ - findfont left an extra entry on the stack if it couldn't
+find the default font.
+
+Renames bchi, ncri, and puti as bchri, ncrri, and putri, to conform
+with the naming scheme for other fonts.
+
+Adds $(CCFLAGS) to the command line used for compiling fonts.
+
+Converts the .pfa fonts (CharterBT, IBM Courier, and Utopia) to .gsf,
+by removing eexec encryption and also removing some mysterious
+unmapped characters from Courier. This makes these fonts work with
+DISKFONTS.
+
+Changes the implementation of compiled fonts so they are read-only
+and sharable (no external references). (They are, however, not
+position-independent.)
+
+Provides a way to use compiled fonts on platforms that limit the
+number of characters in an identifier.
+
+Adds public-domain Cyrillic and Cyrillic-Italic fonts.
+
+Adds a 'userdict begin' to .loadfont, because Type 3 fonts produced
+by Fontographer expect a writable dictionary on the top of the stack.
+
+Changes definefont for Type 1 fonts to insert UnderlinePosition and
+UnderlineThickness entries in FontInfo if they are absent, because
+many word processors incorrectly assume these entries are present.
+
+</pre><h3><a name="V2.5_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The documentation in use.doc said that the densities for
+9-pin Epson printers were 60x60 to 240x60, rather than 60x72 to
+240x72.
+ - gdevprn.c smashed one byte beyond the end of the string
+given as the OutputFile device property.
+ - The X11 driver used XVisualIDFromVisual, which is not
+defined in X11R3.
+ - The SunView driver modified the input data, which was
+declared as const.
+ - The LaserJet IIP and III drivers shifted the page 185
+pixels to the left and 0.25" down, because the initialization string
+was incorrect.
+ - The PCX driver wrote 16-bit values using the byte ordering
+of the platform, rather than always LSB first.
+ - For vertical spacing, the LaserJet and DeskJet drivers used
+a command that spaces N/300", rather than N scan lines, but gave it a
+parameter in scan lines.
+ - The VESA driver didn't allocate a full 256-byte buffer for
+reading the mode information from the BIOS, causing the stack to get
+smashed by newer VESA implementations.
+ - The VESA driver didn't use the scan line length returned by
+the BIOS, causing garbage output for some cards and some resolutions.
+ - The generic printer driver didn't free the bitmap when
+closing the device, if it fit entirely in memory.
+ - The PaintJet driver allocated its data areas on the stack
+instead of with gs_malloc.
+ - The generic printer driver didn't attempt to increase the
+buffer size if it was too small.
+ - The band list driver didn't split large bitmaps properly,
+leading to garbled characters at high resolutions.
+ - The GIF and PCX drivers used a color map that often turned
+gray colors into non-grays.
+
+Changes the default put_props procedure so that if the device is
+open, setting HWSize and/or HWResolution closes the device and
+reopens it.
+
+Adds a driver for Microsoft Windows 3.n.
+
+Updates the 'cdj' and 'dj500c' DeskJet 500C drivers with new versions.
+(This are user-contributed drivers.)
+
+Changes gdev_prn_put_props so OutputFile can be changed dynamically.
+
+Updates the DEC LN03 driver to also handle the LA50 and LA75. (This
+is a user-contributed driver with a FSF copyright.)
+
+Changes the LaserJet/DeskJet driver so that -DA4 in the makefile
+makes A4 paper the default. The driver now also sends an appropriate
+page size selection command to the printer if the printer supports it.
+
+Changes all the Aladdin-supported drivers to return appropriate error
+codes rather than -1.
+
+Adds a driver for the S3 86C911, a PC graphics accelerator used in
+the popular Diamond Stealth board. This is the first driver that
+uploads character bitmaps to a device; others will probably follow.
+
+Adds user-supplied code to the Epson driver so it will do triple
+passes on 9-pin printers for higher resolution.
+
+Adds user-supplied code for the PaintJet XL to the PaintJet driver.
+
+</pre><h3><a name="V2.5_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - zdps1.c didn't include alloc.h.
+ - On 32-bit systems, if maxlength of a dictionary was less
+than the actual allocated space, length could become larger than
+maxlength.
+ - flushfile didn't actually flush data when reading.
+ - The ASCII85Decode filter signalled EOF prematurely.
+ - The scanner interpreted .3D.glorp as the number 0.3, rather
+than as a name.
+ - Closing a file freed the stream structure, creating
+dangling references if there were other file objects pointing to the
+same stream.
+ - eexec called handleerror if an error occurred, instead of
+letting the error propagate to an enclosing stopped.
+ - gs.h made perror illegal, instead of defining it in terms
+of strerror.
+ - One-character names weren't being allocated at
+initialization, so they could be left dangling after a restore.
+ - Internal gsaves (i.e., the ones in show and setcachedevice)
+didn't also save istate, so setfont inside a BuildChar procedure
+might cause the font outside to get changed.
+ - The allocator incorrectly freed objects in the current
+chunk that were older than the current save.
+ - mark was just an object, rather than an operator, so 'bind'
+didn't bind it. (This is theoretically a problem for null, true, and
+false also, but even more unlikely to be a problem in practice.)
+ - packed_get didn't cast packed integers to int, so negative
+integer elements of packed arrays came out wrong.
+ - quit just did a gs_exit, instead of returning to the driver
+in an orderly way.
+ - Because check_type_access checked for errors in the wrong
+order, sometimes type errors were reported as access errors.
+ - eq didn't check for stack underflow.
+ - Some of the stream_procs structures weren't properly
+declared const, leading to link errors on VMS.
+
+Implements currentcolor, currentcolorspace, setcolor, and
+setcolorspace (for DeviceGray, DeviceRGB, and DeviceCMYK only).
+
+Implements the dictionary form of image and imagemask. All the pairs
+in the Decode array must be the same; Interpolate is ignored. The
+only supported color spaces are DeviceGray, DeviceRGB, and
+DeviceCMYK.
+
+Implements files as allowable sources for the image operators.
+
+Removes the index field from the name structure, moving it to the
+'size' field of name refs.
+
+Changes the unread/sungetc operation to require that the character be
+the same as the last one read from the file.
+
+Adds fflush calls to some debugging printout routines, because Unix
+sometimes buffers terminal output.
+
+Implements the CCITTFaxEncode and CCITTFaxDecode filters. Implements
+the general case of the SubFileDecode filter.
+
+Changes definefont to treat a UniqueID of 0 as equivalent to no
+UniqueID, because Fontographer output apparently often violates the
+specification in this way.
+
+Changes the default printer screen from 32.5 to 46 cells/inch. (The
+old value was appropriate for a hand-rotated cell with two spots in
+it.)
+
+Changes the utility routines to allow an integral real wherever an
+integer parameter is expected in a dictionary, because Fontographer
+produces fonts that violate the Adobe specification in this way.
+
+Adds a `dosio' feature that provides direct access to memory and to
+I/O ports under MS-DOS. (This feature is not included in the
+standard executables, of course.)
+
+Changes the default character cache limit to a 1/4" x 1/4" character
+at the default resolution, rather than basing it on the preallocated
+cache size.
+
+Removes support for t_color objects, which haven't actually been used
+for several releases.
+
+Implements setcmykcolor and currentcmykcolor as operators, so they
+will interact properly with setcolorspace and currentcolorspace.
+
+Changes the name of the file.h header file to files.h, to work around
+a bug in the VMS header library.
+
+Adds command line switches @file (to treat file as more command line,
+to get around the DOS 128-character command line limit) and -ffile
+(so one can specify file names that begin with - or @).
+
+Changes the PFBDecode filter so it takes an additional boolean that
+says whether or not to convert binary packets to hex. (Conversion to
+hex and back to binary accounted for a substantial amount of the time
+required to load .PFB fonts.)
+
+Splits off `copydevice' as a separate operator again.
+
+</pre><h3><a name="V2.5_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - In the VMS environment, string_.h used its own prototypes
+for the str... and mem... functions instead of &lt;string.h&gt;
+ - gx_alloc_char_bits declared cdsize as long, but didn't
+shorten it when passing it to shorten_cached_char.
+ - Stroking didn't suppress fattening of the lines.
+ - kshow didn't update the cached CTM information in the show
+enumerator when returning from the callout, so further characters
+could get drawn in the wrong place.
+ - When a memory device returned its initial matrix, it
+smashed the padding fields, which contained the interpreter's type
+information.
+ - setcachedevice didn't set the initial matrix in the cache
+memory device.
+ - image_set_rgb (in the image operators) didn't do a
+gx_color_from_rgb, so in principle one could sometimes get incorrect
+colors in an image.
+ - The decision about whether or not to cache a character
+bitmap incorrectly compared the character size against cmax rather
+than cdata_size.
+ - show didn't reset the in_cachedevice flag in the graphics
+state, so characters rendered by a recursive show were never cached.
+ - clip and eoclip didn't release the intermediate flattened
+clip path, causing memory to be lost.
+ - The tile_diff routine didn't handle the case of two
+identical tiles properly; this produced garbage in the band list
+file.
+ - stringwidth didn't round the character origin to an
+integral pixel; this interacted badly with hinting, causing
+improperly hinted characters to wind up in the cache.
+ - Bitmaps (including characters) were displaced, as well as
+being clipped, if they intersected the top of a clipping region.
+ - In gxclist and gdevmem1, the raster computation (although
+not the result) could overflow an int on 16-bit machines.
+
+Implements decoding (sample mapping) for image and imagemask.
+
+Implements hinting for Type 1 fonts, based on (but not copying) the
+algorithms from the X11R5 tape.
+
+Changes curve rasterizing to use sampling, rather than recursive
+subdivision, for characters. This produces noticeably better output.
+Speed penalty for non-cached characters is less than 10% at display
+resolutions, up to 50% for 300 dpi printers.
+
+Implements gs_setcmykcolor and gs_currentcmykcolor. These are
+semi-fake, since they simply convert the color to and from RGB, but
+the former does set the current color space properly.
+
+Changes clipping regions so they use the any-part-of-pixel rule
+rather than the center-of-pixel rule. This helps avoid dropouts when
+using very small regions.
+
+Implements stroke adjustment.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.4.2"></a>Version 2.4.2 (5/8/92)</h2>
+
+<p>
+This is another quick release. It finally fixes rotated halftone
+screens, and cleans up a few minor problems from 2.4.1.
+
+<p>
+This release is being distributed only to beta testers and commercial
+licensees, since I don't want to be distracted from working on 2.5.
+
+<h3><a name="V2.4.2_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - UTRACE still appeared in the VMS makefiles.
+ - The support files (*.bat, *.doc, *.gsf, *.ps, Fontmap,
+COPYING, README) weren't included in the MS-DOS tar file.
+ - The Unix install script didn't install landscap.ps.
+
+Replaces the type1imagepath operator with PostScript code (impath.ps,
+type1ops.ps) based on the new .imagepath operator.
+
+Renames LICENSE as COPYING.
+
+</pre><h3><a name="V2.4.2_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - pcharstr.ps had an occurrence of Subrs rather than /Subrs,
+causing it to not print the Subrs, or to get an error if there were
+none.
+ - font2c.ps didn't get the const declarations for string
+dictionaries quite right.
+ - The missing newline at the end of gsbj.bat confused GNU
+diff.
+ - ansi2knr would go into an infinite loop if a statement
+exceeded its internal buffer size.
+ - Compiled fonts would get processed by ansi2knr, which
+messed them up.
+
+</pre><h3><a name="V2.4.2_Platforms"></a>Platforms</h3><pre>
+Fixes bugs:
+ - Ghostscript didn't supply equivalents for rename and
+gettimeofday, which some System V platforms lack.
+ - The missing newline at the end of gp_dosfb.c confused GNU
+diff.
+
+Changes the Borland makefiles so that stack checking is only enabled
+if DEBUG or TDEBUG is set.
+
+</pre><h3><a name="V2.4.2_Fonts"></a>Fonts</h3>
+
+<pre>
+Changes the names of the Utopia fonts from utrg/utb/utbi/uti to
+putr/putb/putbi/puti, for consistency with the rest of the font names.
+Changes cour/courb/courbi/couri to ncrr/ncrb/ncrbi/ncri likewise.
+
+Replaces the Charter fonts with the CharterBT fonts donated by
+Bitstream to the X11R5 distribution.
+
+Adds font aliasing capability to Fontmap. Replaces
+Courier-[Bold]Oblique and ZapfChancery-MediumItalic by aliases.
+
+Changes the FontBBox of the Hershey fonts to be an executable, rather
+than a literal, array.
+
+</pre><h3><a name="V2.4.2_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The GIF driver omitted a `private' on the definition of
+gif_print_page.
+ - The GIF driver wrote 16-bit values using the byte ordering
+of the platform, rather than always LSB first.
+ - George Cameron's DeskJet 500C driver had an incorrect
+control sequence for skipping blank lines.
+
+Adds 'const' in many places, including the tile and bitmap arguments
+of the tile_rectangle, copy_mono, and copy_color driver routines.
+THIS IS A DRIVER INTERFACE CHANGE. (Printer drivers are not
+affected, since they don't implement these routines.)
+
+Adds a driver for the Trident TVGA.
+
+</pre><h3><a name="V2.4.2_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - alloc_free sometimes incorrectly chose to put an unaligned
+block in an old segment on a freelist.
+ - The default undercolor removal function returned its
+argument rather than returning 0.
+
+Adds NullEncode and SubFileDecode to the standard filters, since
+bdftops uses the latter.
+
+Adds RunLengthEncode and RunLengthDecode to the optional filters.
+
+Removes the type1imagepath operator. (It is still available as
+PostScript code, impath.ps.) Replaces it with a simpler outline
+tracing operator .imagepath.
+
+Adds 'const' in many places.
+
+Makes fileposition (but not setfileposition) legal for NullEncode
+filters.
+
+Changes the default transfer function for high-resolution devices
+from the identity function to the square root function.
+
+Moves array_get from zgeneric.c to iutil.c.
+
+Changes uses of fopen to add a "b" to the access mode, rather than
+relying on the _fmode global variable on MS-DOS platforms.
+
+Allows use of the -Z switch even when gsmain.c wasn't compiled with
+-DDEBUG, since other modules might have been.
+
+Reorganizes gs.c and gsmain.c so that the latter can be used in
+server environments.
+
+Replaces all uses of stdin/out/err with gs_stdin/out/err.
+
+Makes the number of permanent entries on the dictionary stack a
+parameter, to allow inserting globaldict in the future.
+
+Changes BlueShift in the Type 1 font Private dictionary to allow real
+numbers. (This differs from the Adobe specification, but at least
+one commercial font has a real number for BlueShift.)
+
+</pre><h3><a name="V2.4.2_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - The doubling check in init_ht (gxht.c) still sometimes
+thought there was enough room to double the tile when there actually
+wasn't.
+ - Rotated halftone screens didn't work.
+ - gxarith.h used #ifdef vax, rather than #if
+!arch_floats_are_IEEE, to test whether IEEE floats were being used.
+ - pathforall didn't report a trailing moveto.
+
+Replaces gs_type1imagepath with gs_imagepath.
+
+Allows sOUTPUTFILE=-, meaning output to stdout.
+
+Adds 'const' in many places.
+
+Replaces all uses of stdin/out/err with gs_stdin/out/err.
+
+</pre>
+
+<h2><a name="Version2.4.1"></a>Version 2.4.1 (4/21/92)</h2>
+
+<p>This is a quick release to fix minor problems discovered in 2.4, and
+to add a few improvements that didn't quite make it into 2.4. It
+also adds GIF and PCX file support.
+
+<h3><a name="V2.4.1_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - Some makefile dependencies, and the ccgs script, caused trouble
+for parallel versions of `make'.
+ - Compiling genarch with -O with gcc on the RS/6000 produced a
+buggy executable.
+
+Fixes some minor problems in make.doc.
+
+Adds DEVICE_DEVS2..5 to handle long device lists.
+
+Removes the need to set GS_RUN_EXE when using the Watcom compiler on
+MS-DOS systems.
+
+Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps.
+
+Gets rid of gconfig.ps; this information is now compiled in gconfig.c.
+
+</pre><h3><a name="V2.4.1_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - The palette for pstoppm in 8-bit mode didn't contain all 8
+primary colors.
+ - font2c used just values_ to mean &amp;values_[0]; some compilers
+couldn't handle this.
+
+Makes font2c insert `const' in many appropriate places.
+
+</pre><h3><a name="V2.4.1_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The SunView driver had not been updated properly for 2.4 and was
+pretty thoroughly broken.
+ - None of the printer drivers worked properly with the Watcom
+compiler, because stdprn was doing \n -&gt; \r\n substitution.
+ - If the generic printer driver couldn't allocate the requested
+size command list buffer, it gave up rather than trying to allocate a
+smaller buffer.
+ - The SuperVGA drivers (except for the VESA driver) didn't
+work with the Watcom compiler, because a couple of places in the
+drivers weren't truncating the offset of "segmented" pointers
+properly.
+ - Some of the H-P used &lt;esc&gt;*b#Y rather than &lt;esc&gt;*p+#Y for
+vertical positioning; this apparently is wrong, at least for the
+LJIIp.
+
+Removes the dependence of the X Windows driver on Xt, Xext, and Xmu. As a
+result, Ghostscript will not install a standard colormap itself, but it
+will use one if one is already installed.
+
+Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file
+formats.
+
+Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX
+file formats.
+
+Adds drivers for monochrome and 256-color GIF file formats.
+
+</pre><h3><a name="V2.4.1_Fonts"></a>Fonts</h3><pre>
+Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
+
+</pre><h3><a name="V2.4.1_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - A value with l_new set could 'escape' to save level 0 on a
+stack; if stored, it prevented the slot from being saved and restored
+properly.
+ - 16#7fffffff + 1 gave the floating point equivalent of -2^31, not
+2^31.
+ - The PFBDecode filter computed the packet length incorrectly if
+the 0x8000-bit of the length was set.
+ - 5-byte numbers in Type 1 CharStrings complained of a rangecheck
+if they exceeded 16 bits, rather than if they exceeded the integer part of
+a fixed.
+ - (, ), and \ appearing in file name arguments in the command
+line did not work properly.
+
+Adds 'const' in many places.
+
+Changes the random number generator to be the same as the one used in
+Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript).
+
+Exits with code 1 rather than code 0 on an unrecoverable error detected at
+the PostScript level.
+
+Makes dictionaries expand automatically when they fill up.
+
+Adds gp_exit to complement gp_init.
+
+Changes dictionaries to always allocate a power of 2 entries on
+32-bit machines. Changes the name table to allocate indices
+scattered, so dictionary lookup doesn't have to do a multiply to
+scramble the index.
+
+Changes the handling of currentfile to do "shallow binding" so stack
+searching is almost never required.
+
+</pre><h3><a name="V2.4.1_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - arc and arcn got a numeric exception if the radius was zero.
+ - The undocumented 15 opcode in Type 1 fonts wasn't ignored.
+ - PaintType 3 wasn't allowed. (It isn't clear what it should
+mean; we treat it as equivalent to 0.)
+ - The VAX/VMS C compiler was generating incorrect code for the
+chi_bits and cmask macros in gdevmem, producing incorrect output.
+ - If the result of the slow algorithm for intersecting clipping
+paths was a rectangle, the wrong thing happened (cbox didn't get set).
+ - gx_path_is_rectangle didn't recognize open rectangles.
+ - clist_change_tile didn't check properly whether the tile
+size had changed, so changing the screen could produce invalid band
+files.
+ - The image operators did the wrong thing in the 1-for-1
+case, interleaving N bytes of data with 7*N bytes of garbage.
+ - stroke sometimes handled bevel and miter joins wrong in
+reflected coordinate systems.
+ - init_ht checked incorrectly whether there was enough room
+to Y-replicate tiles, so sometimes it did it when it shouldn't have.
+ - stroke sometimes thought lines were thin when they weren't.
+
+Adds 'const' in many places.
+
+Adds support for 2- and 4-bit-per-pixel memory devices.
+
+</pre>
+
+<h2><a name="Version2.4"></a>Version 2.4 (3/25/92)</h2>
+
+<p>This is a major release that adds SuperVGA support, support for
+Metrics,
+settable device properties, and incremental font loading. It also
+includes important performance improvements, based on rewrites of some key
+algorithms, and quite a few new Level 2 / Display PostScript facilities.
+
+<h3><a name="V2.4_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The rule for compiling gconfig.c didn't include the -I switches.
+ - .bat files were being distributed with a \n line terminator
+rather than \r\n.
+ - A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS
+command files.
+ - Unix systems couldn't handle multiple drivers with overlapping
+sets of files.
+ - -s&lt;name&gt; defined &lt;name&gt; as a null, rather than as an empty string.
+
+Adds gconfig.ps to the list of needed configuration files.
+
+Changes the way that the makefile handles nested .h files, so that it
+doesn't have to `touch' them.
+
+Adds the loadallfonts procedure to gs_fonts.ps.
+
+Changes the standard DOS configuration to include VGA, EGA, VESA, Epson,
+BubbleJet, and H-P printer drivers.
+
+Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak.
+
+Adds a USE_ASM flag so that one can build a DOS version of Ghostscript
+without having an assembler.
+
+Splits off common code from the two MS-DOS makefiles into tccommon.mak.
+
+Replaces the COPYING and LICENSE files with a new LICENSE file containing
+version 2 of the GNU General Public License.
+
+Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no
+longer needed.
+
+Adds a GS_DEVICE environment variable to supply a default device name if
+desired.
+
+Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and
+unix-[g]cc.mak, for other ANSI C compilers.
+
+Changes the way that optional features are defined in the makefiles, so
+that they actually work.
+
+Adds support for the Watcom C/386 compiler.
+
+Allows # in the command line as equivalent to =, to compensate for
+brain-damaged MS-DOS shell.
+
+Adds -sOUTPUTFILE= to set the output file or pipe.
+
+Adds -dWRITESYSTEMDICT to leave systemdict writable.
+
+</pre><h3><a name="V2.4_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - pcharstr.ps insisted on having Subrs be present in the font.
+ - pcharstr.ps decoded negative numbers between -108 and -1131
+incorrectly.
+ - pfbtogs.ps didn't handle packets longer than 64K correctly.
+
+Changes the bdftops utility so that it makes entries for UnderlinePosition
+and UnderlineThickness in FontInfo, and so that it always records a
+FullName (the FontName if no other is provided).
+
+Changes the name of the pfbtops utility to pfbtogs, because groff already
+includes a program called pfbtops.
+
+Adds the gslp utility for doing "line printing" of text files, similar to
+enscript + lpr.
+
+Adds a new variable DITHERPPI that enables a different dither pattern,
+claimed to be better for printers.
+
+Adds the font2c utility for compiling Type 1 fonts into C, so they can be
+linked into an executable rather than loaded dynamically.
+
+</pre><h3><a name="V2.4_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - gdev_prn_copy_scan_lines was erroneously masking the last byte
+of data even on color printers, as was paintjet_print_page.
+ - The TruFax driver had a couple of compilation errors, since it
+hadn't been compiled in a while.
+ - The BGI driver sometimes didn't consult BGIPATH when looking for
+.BGI files.
+ - initclip did the wrong thing with memory devices.
+ - The BGI driver didn't look in BGIDIR for .BGI files.
+ - The Epson driver didn't set the right margin properly with
+ESC+Q.
+ - The BJ-10e driver was badly broken.
+ - gdev_prn_open/close_printer didn't reset the command list file,
+so it was taking quadratic time to print multi-page documents.
+
+Adds color to the SunView driver.
+
+Adds selectable resolution (75, 100, 150, or 300 DPI) to the
+DeskJet/LaserJet driver.
+
+Changes gssetdev so that drivers can specify special libraries to be
+loaded, as well as object files.
+
+Adds a driver for VESA-compliant SuperVGA displays. This driver handles
+all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode. The
+default is VGA resolution (640 x 480).
+
+Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards
+using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and
+the Orchid ProDesigner II (256-color modes only).
+
+Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600,
+16-color modes (for cards with only 256K of memory).
+
+Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II,
+and H-P DeskJet 500C printers.
+
+Adds Tim Theisen's Ghostview changes to the X11 driver.
+
+MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as
+follows:
+
+ - Changes map_rgb_color and map_color_rgb to always work in a
+ 16-bit color value space, rather than a space defined by the
+ maximum number of distinct colors provided by the device.
+
+ - Adds an argument to the output_page procedure to indicate
+ whether the procedure is being called for copypage or
+ showpage, and a num_copies argument.
+
+ - Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that
+ drivers can cache bitmaps in the server or device if they want
+ to.
+
+ - Removes fill_trapezoid and tile_trapezoid.
+
+ - Adds a new get_bits procedure for reading the bits back from the
+ driver buffer (when possible), replacing copy_scan_lines.
+ This procedure takes a new argument describing padding and
+ byte swapping, and returns a different value from
+ copy_scan_lines.
+
+ - Adds get_props and put_props procedures for accessing arbitrary
+ additional properties of devices. The interface is quite
+ complex, but provides a great deal of flexibility.
+
+See drivers.doc for details.
+
+Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line.
+
+Adds a user-contributed driver for DigiBoard, Inc.'s fax software.
+
+</pre><h3><a name="V2.4_Fonts"></a>Fonts</h3>
+
+<pre>
+Changes Type1BuildChar so it uses the information from the Metrics
+dictionary in the font, if Metrics is present.
+
+Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them
+directly. Also changes .loadfont to disable packing temporarily, because
+some fonts rely on procedures being writable (!).
+
+</pre><h3><a name="V2.4_Interpreter"></a>Interpreter</h3><pre>
+Fixes bugs:
+ - The hypot function is not available on some Unix systems.
+ - Ghostscript didn't flush and close files when exiting.
+ - In statusdict, the /margins procedure used .leftmargin, but
+/setmargins used .lmargin.
+ - An out-of-range putinterval would simply do nothing, rather than
+reporting an error.
+ - If an attempt to allocate a block larger than the allocator's
+chunk size (20K) failed, the allocator would erroneously think it had
+succeeded.
+ - The bind operator made the top-level procedure read-only, as
+well as interior procedures.
+ - gs.c copied 1 extra character for the value of strings defined
+on the command line with -s...=, which could smash the first byte of the
+next object in memory.
+ - copying a dictionary erroneously required the maxlength of the
+destination to be greater than or equal to the maxlength of the source,
+rather than the length of the source.
+ - undef didn't correctly decide when to mark a deleted entry as
+deleted vs. free; as a result, some keys couldn't be looked up properly
+after an undef.
+ - type1encrypt and type1decrypt didn't set the size of the result
+properly.
+ - cvi and cvr didn't allow leading or trailing whitespace in
+strings.
+ - cvs didn't cause an error if the destination string was too
+short.
+ - Many operators didn't check correctly for stack underflow (off
+by 1).
+ - `for' used reals, rather than integers, if the limit was a real,
+even if the initial value and increment were integers.
+ - `restore' didn't properly invalidate copies of the save object
+being restored from; `save dup restore restore' would crash.
+ - `restore' sometimes didn't undo stores into matrices that were
+stored into by operators. (The identity matrix always had l_new set.)
+ - readline gave a rangecheck if the input line exactly filled the
+string.
+ - `--' as the last switch on the command line caused a crash
+rather than an error message.
+ - On MS-DOS systems, filenameforall didn't handle patterns with a
+drive or directory specifier properly.
+ - stroke sometimes called gz_draw_line_fixed even if the line went
+outside the clipping box by 1 pixel.
+
+Changes the loop that binds procedure "operators" to entirely disable the
+handling of the typecheck error, rather than to use stopped. This cuts
+initialization time significantly, and also eliminates about 35K of wasted
+space (for saving the stacks).
+
+Changes the version "operator" so it returns 47.0. Adds "revision" to
+define the Ghostscript version # x 100.
+
+Adds gscurrentresolution and gssetresolution procedures for getting and
+setting the device resolution.
+
+Adds -r&lt;res&gt; and -r&lt;xres&gt;x&lt;yres&gt; as command line options for setting
+device resolution.
+
+Adds a facility for incrementally loading the individual CharStrings of a
+Ghostscript font from the disk. This can save a lot of memory, at the
+expense of slower rendering. (It is intended primarily for MS-DOS
+systems.)
+
+Changes findlibfile to return the name of the file that was actually
+opened, as well as the file itself, when the operation succeeds.
+
+Changes the name of the main entry to the interpreter from interpret to
+gs_interpret, because of a conflict with a Data General library procedure.
+
+Adds the .setmetrics operator to set the metrics for the current
+character for Type 1 fonts.
+
+Adds more LaserWriter-specific entries to statusdict.
+
+Gives names to all the internal `operators', so they will print out
+reasonably when an error occurs.
+
+Extends the status operator to accept a string and return file
+information, as defined for Level 2 PostScript.
+
+Adds the filter operator and some specific filters: ASCII85Encode,
+ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode,
+PFBDecode, and the null case of SubFileDecode.
+
+Extends the scanner to recognize the Level 2 &lt;&lt; and &gt;&gt; tokens.
+
+Adds a facility for extracting the text strings from a PostScript file and
+writing them out in a simple format (selected by -dASCIIOUT, implemented
+by gs_2asc.ps).
+
+Implements all of the remaining Display PostScript facilities that are
+also in Level 2 (i.e., everything in section A.1.3 of the PostScript
+Language Reference Manual, Second Edition, that is not also in section
+A.1.2). The virtual memory operations are all stubs; the new halftone
+options are not fully implemented.
+
+Changes makeimagedevice to use a string of gray or RGB values, rather than
+an array of color objects, to specify the palette. Removes
+currentgscolor and setgscolor from the interpreter, but leaves t_color
+objects in, since they may be useful later.
+
+Adds getdeviceprops and putdeviceprops for manipulating device properties.
+Currently defined properties for all devices: InitialMatrix, HWResolution,
+HWSize, Name. Currently defined properties for printers: BufferSpace,
+MaxBitmap, OutputFile. OutputFile allows |command for piping on Unix
+systems.
+
+Removes deviceparams and makedevice. Adds devicedefaultmatrix.
+
+Implements reversepath.
+
+Makes copy work on devices.
+
+MS-DOS specific
+- - - - - - - -
+
+Fixes bugs:
+ - iutilasm.asm wouldn't assemble with newer versions of MASM if
+CPU_TYPE was set to 286 or above.
+ - CPU_TYPE=386 didn't properly substitute the faster
+multiply/divide routines under Turbo C++ or Borland C++, only under the
+original Turbo C.
+
+</pre><h3><a name="V2.4_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - A curve whose first and last points were the same wouldn't get
+drawn at all.
+ - A bug in the Turbo C++ compiler generated bad code when shifting
+a long right by 1 bit.
+ - If stroking a dashed line ever encountered a segment that was
+completely blank, Ghostscript would indirect through a null pointer.
+ - arc and arcn gave an error if the radius was negative.
+ - stroke always used the general algorithm, even if the line was
+guaranteed to be thin.
+ - arc and arcn erroneously reduced the angles mod 360.
+ - Very large or negative 32-bit numbers in Type 1 fonts didn't
+work properly on MS-DOS systems (the ff0000 bits got set to zero).
+ - Color printer devices rendering entirely in memory only
+allocated a monochrome-sized bitmap.
+ - clip and eoclip didn't intersect the paths properly in the
+general case.
+ - charpath erroneously rounded the current point to an integral
+value, causing characters to be spaced improperly.
+ - The definition of max_color_param got some compilers confused.
+ - charpath always used quadratic time and space, and dropped all
+but the last character when used with a Type 3 font.
+ - Stroking a path with a 180 degree angle would incorrectly miter
+instead of beveling.
+ - Type 1 fonts used the current flatness for curves, which could
+produce bad (and inconsistent) results.
+ - Stroking a degenerate line segment produced incorrect results.
+
+Changes the character cache to use the UniqueID as the key, when
+available, instead of the font pointer. This dramatically improves
+performance when fonts are getting removed and reloaded because of page
+isolation with save/restore.
+
+Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c.
+
+Changes the Type 1 interpreter so that it rounds line and curve endpoints
+to the center of the nearest half-pixel, and omits null line segments.
+This both speeds up rendering at small sizes and improves output quality.
+
+Changes gs_deviceparams to return resolution as well as extent; changes
+gs_makedevice to accept resolution as well as extent.
+
+Replaces the algorithm for approximating circular arcs with curves with a
+more accurate one.
+
+Changes gs_point and gs_rect to use doubles rather than floats.
+
+Adds gs_setmetrics, for overriding Type 1 font metrics for the current
+character.
+
+Changes clipping to use lists of rectangles rather than path intersection.
+ This makes a big difference when clipping bitmaps (including characters).
+
+Changes the character cache to discard entries incrementally, rather than
+clearing the entire cache when it fills up.
+
+Changes the implementation of transfer functions to use a cached map,
+built when the transfer function is set. This makes transfer functions
+work properly in all situations, including images.
+
+Defines a .quit operator that takes an exit code, and redefines quit in
+terms of it.
+
+Adds support for 16-bit-per-pixel devices in gdevmem.
+
+Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and
+gs_makedevice.
+
+Changes setscreen to ensure that the cell is always at least 4x4 pixels in
+size.
+
+</pre>
+
+<h2><a name="Version2.3"></a>Version 2.3 (8/28/91)</h2>
+
+<p>This is a minor release to fix two bugs and add the PaintJet driver,
+which
+didn't make it into 2.2.
+
+<h3><a name="V2.3_Utilities"></a>Utilities</h3><pre>
+Changes the pstoppm utility so it counts pages correctly even in the
+presence of arbitrary saves and restores.
+
+</pre><h3><a name="V2.3_Drivers"></a>Drivers</h3><pre>
+Adds a new, "supported" PaintJet driver.
+
+Changes the Epson driver to use ESC+D rather than ESC+\ for horizontal
+positioning, since many printers don't support the latter.
+
+Adds horizontal double-density (two-pass) printing to the Epson driver, so
+it can do 240 x 60 and 360 x 180 densities. (Vertical double density is
+not supported yet.)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.2"></a>Version 2.2 (6/1/91)</h2>
+
+<p>
+The purpose of this release is to add save/restore, and a few
+miscellaneous Level 2 P*stScr*pt features such as undef. It also includes
+major improvements in graphics quality and in handling of high-resolution
+printers.
+
+<h3><a name="V2.2_Procedures"></a>Procedures</h3><pre>
+Changes the version numbering to M.mpp rather than M.m.p, so that
+`version' can be a real number for those programs that insist on it.
+
+Renames ghost.ps as gs_init.ps, gfonts.ps as gs_fonts.ps, and statusd.ps
+as gs_statd.ps. The initialization files now all are named gs_*.ps.
+
+Renames gdevs.{c,h,tl} as gconfig.{c,h,tl}.
+
+Changes the relevant makefiles and command files so that a single build
+can contain several drivers that share code, e.g., the Epson driver and
+the DeskJet driver.
+
+Changes gs_init.ps so it relies on an external gconfig.ps file rather than
+making a specific test for the presence of Level 2 features.
+
+Adds an entry for uglyr.gsf to the makefile.
+
+Removes the distinction between CCA and CCNA, since most of the files now
+contain constructs that require non-ANSI compilation on MS-DOS platforms.
+
+Adds a `man' page for the ansi2knr utility.
+
+Changes the documentation (use.doc) to show how to use -sDEVICE=&lt;device&gt;,
+or the selectdevice procedure, to select devices by name.
+
+Adds DEVICE_DEVS to the makefiles (analogous to DEVICES and DEVICE_OBJS).
+This finally makes the make procedure fully automatic.
+
+Adds the name of the initialization file (gs_init.ps) as a
+platform-specific makefile parameter, GS_INIT.
+
+Removes the test program gt.{c,tr} from the fileset, since it is not
+useful to users.
+
+Moves the Symbol encoding vector to a separate file (symbol_e.ps), from
+which it is loaded when first used.
+
+Changes the error handler so it can handle errors that occur while reading
+the initialization files.
+
+Extends ansi2knr so it can handle `void' and `...' in parameter lists.
+
+Adds quit.ps to the set of installed files.
+
+MS-DOS-specific changes
+- - - - - - - - - - - -
+
+Adds the VGA and BGI drivers to the standard MS-DOS configuration, and
+makes VGA the default.
+
+Adds a `+' and a newline at the end of gs.tr, to avoid problems with file
+transfer programs or editors that add a newline at the end of files.
+
+Changes the name of msdos.mak to turboc.mak, and creates a new tbcplus.mak
+makefile for use with Turbo C++ and Borland C++.
+
+Changes the extension of the loader response files from .tl to .tr.
+
+Changes the default search path from c:/ghost and c:/ghost/fonts to c:/gs
+and c:/gs/fonts.
+
+Changes the directory separator from `|' back to ';', since it appears
+that DOS can handle a ; in a command line if it is prefixed with \.
+
+Unix-specific changes
+- - - - - - - - - - -
+
+Changes the uses of install in unixtail.mak so they only install a single
+file at a time, which is all that the standard Unix install allows.
+
+Removes the duplicate files (README/readme, LICENSE/license,
+COPYING/copying, Fontmap/fontmap).
+
+Changes the ld flags from LDPLAT to LDFLAGS.
+
+Adds XCFLAGS and XLDFLAGS. These are concatenated with CFLAGS and LDFLAGS
+respectively. The intention is that they be set from the `make' command
+line if desired.
+
+VMS-specific changes
+- - - - - - - - - -
+
+Repairs the omission of ZPACKED from the VMS build lists.
+
+</pre>
+
+<h3><a name="V2.2_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The SunView driver produced semi-garbage on little-endian
+platforms (Sun-386i) because it didn't swap the bit order.
+ - The X driver would dump core if it couldn't open the display and
+the DISPLAY environment variable wasn't set.
+ - The X driver relied on white = 0, black = ones in a couple of
+places;
+ - The X driver would return an error, instead of clipping, if
+asked to display outside the window.
+ - The X driver would create inappropriately sized windows, because
+it believed the server's report of the screen resolution.
+
+Adds Fran Taylor's Private Eye driver to gdevs.mak and the fileset (not
+supported by Aladdin Enterprises).
+
+Adds Neil Ostroff's TruFax driver to gdevs.mak and the fileset (not
+supported by Aladdin Enterprises).
+
+Makes the scratch file template for the printer drivers a per-platform
+quantity (gp_scratch_file_name_template). Puts the default scratch files
+for Unix in /usr/tmp rather than /tmp.
+
+Changes the SunView driver to prevent the Ghostscript window from being
+destroyed (which badly confuses the interpreter).
+
+Extends the Epson driver to handle a variety of print densities in both X
+and Y, to handle 24-pin as well as 8-pin graphics, and to allow optional
+specification of default density in the makefile (gdevs.mak).
+
+Refactors the printer drivers so that a single driver handles both DeskJet
+and LaserJet. Adds LaserJet drivers that use the new compression modes on
+the LJ IId/IIp and LJ III.
+
+Changes all the printer drivers to use band lists rather than bitmap
+paging as the buffering method. (The individual drivers need only a
+one-line change to replace mem_copy_scan_lines with
+gdev_prn_copy_scan_lines with a different argument.)
+
+Adds the halftone phase as additional arguments to tile_rectangle and
+tile_trapezoid.
+
+Adds an entirely new and much simpler PaintJet driver, using the new band
+list interface.
+
+Adds margin information to the device structure. This is currently only
+relevant for printer devices.
+
+Adds BGIPATH and BGIUSER environment variables, allowing additional
+control of the BGI driver.
+
+Changes the x/y_pixels_per_inch member of the device structure from int to
+float.
+
+</pre>
+
+<h3><a name="V2.2_Fonts"></a>Fonts</h3>
+
+<pre>
+Patches gs_fonts.ps so definefont will add an isFixedPitch entry to
+FontInfo if there isn't one there.
+
+Removes the old "type 7 path" encoding code from gs_fonts.ps.
+
+Changes bdftops so it puts isFixedWidth and ItalicAngle entries in the
+FontInfo dictionary of the fonts it creates, since some P*stScr*pt
+programs rely on this.
+
+Changes bdftops so it synthesizes as many missing characters as possible
+out of the ones that are there (in particular: synthesizes accents out of
+punctuation marks, and accented characters using seac.) The results
+aren't all that good, but they're a lot better than having characters
+missing out of the font.
+
+</pre><h3><a name="V2.2_Utilities"></a>Utilities</h3><pre>
+Adds a pfbtops utility for converting .PFB fonts to standard Ghostscript
+fonts.
+
+Fixes bugs:
+ - ps2image didn't reset things properly between pages for
+multi-page documents.
+
+</pre><h3><a name="V2.2_Interpreter"></a>Interpreter</h3><pre>
+Makes Ghostscript recognize `-' alone as meaning that it should read from
+standard input as though it were a file. This allows Ghostscript to
+accept a pipe as input.
+
+Fixes bugs:
+ - seac in type1addpath used the current font's encoding, not
+StandardEncoding.
+ - type1decryptfile (eexec) didn't recognize binary (as opposed to
+hex) representation.
+ - Mentioning a name whose value was a no-access object caused an
+invalidaccess error.
+ - There was a bogus definition of `run' in zfile.c.
+ - The interpreter didn't handle end-of-file on stdin properly.
+ - Real numbers with an 'e' or 'E' but no decimal point were not
+recognized.
+ - On MS-DOS systems, inside strings, \ followed by a newline was
+not discarded properly.
+ - On MS-DOS systems, the long unsigned divide routine sometimes
+gave incorrect answers. Among other things, this caused alternate-radix
+numbers sometimes to crash the interpreter.
+ - cvrs didn't do the right thing about reals or negative integers.
+ - .echo.mode was being reset with def instead of store, and was
+defined in systemdict rather than userdict.
+ - setgray and settransfer didn't interact properly.
+ - 16#80000000 was being interpreted as a signed integer (and
+converted to a real) rather than an unsigned one.
+ - atan returned 0 sometimes when it should have returned 180.
+ - currentcmykcolor was defined wrong.
+
+Removes the filename operator, since no standard Ghostscript code used it,
+and it caused problems with some P*stScr*pt files.
+
+Implements new operators: filenameforall, selectfont (as a procedure),
+stringmatch, undef.
+
+Adds new standard procedures: selectdevice.
+
+For MS-DOS, requires that the operand and execution stacks be located in
+the data segment, and uses short pointers to address them. This produces
+significantly smaller and faster code. (These changes are not visible to
+users or library clients.)
+
+Changes the assignment of attribute bits, and adds new bits for
+save/restore and the garbage collector. Changes many of the macros in
+store.h to support save/restore. (These changes are not visible to users
+or library clients.) Implements save and restore.
+
+Moves type names from gs_init.ps to ghost.h and ztype.c.
+
+Moves error names from gs_init.ps to errors.h and iinit.c.
+
+Introduces gp.h as a documented interface to the platform-specific files.
+
+Adds the -- switch, which allows Ghostscript programs to take arguments
+from the command line.
+
+Changes many uses of the name `name' to something else, to avoid upsetting
+the Microsoft C compiler.
+
+Really implements packed arrays -- they took the same amount of space as
+ordinary arrays in previous versions.
+
+Changes exitserver in serverdict so that it just clears the stacks. (This
+isn't the correct fix, but it will do as a workaround.)
+
+Makes many miscellaneous small changes to pacify various compilers.
+
+Changes gs_fonts.ps so that when "quiet" mode is selected (-q switch),
+Ghostscript doesn't print anything when loading fonts or when substituting
+for undefined characters.
+
+Defines the name consisting of just a control-D as a no-op, because some
+P*stScr*pt-generating applications put control-Ds in their output.
+
+Implements halftone phase (sethalftonephase and currenthalftonephase
+operators).
+
+Removes the -E switch, since it is no longer useful.
+
+Changes the -w and -h switches to a single -g (geometry) switch, with
+usage -g&lt;width&gt;x&lt;height&gt;. Makes the -h switch, and a new -? switch, print
+usage help.
+
+Implements correct handling of stack overflow errors (makes an array out
+of the contents of the overflowing stack, and resets the stack, before
+invoking the error handler).
+
+Adds t_oparray (`operators' defined as procedures) and the makeoperator
+operator. This is so that programs like the Distillery that rely on all
+operators being bound by `bind' will work properly.
+
+Adds a new NOPAUSE flag to suppress the prompt and pause at copypage and
+showpage.
+
+</pre><h3><a name="V2.2_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - gs_type1_interpret didn't store the encryption state or the skip
+count before returning to let the client handle a seac or an endchar in
+the middle of a seac.
+ - The definition of the Type 1 operator ce_testadd was based on
+wrong information; the operator takes only 2 operands and does something
+unknown.
+ - mem_true24_copy_mono wasn't incrementing the destination pointer
+if the color was transparent, leading to garbled characters.
+ - gx_lookup_fm_pair would sometimes look at one entry beyond the
+end of the cached font/matrix pair area. (This probably had no practical
+effect.)
+ - gs_type1_interpret didn't save the current point when returning
+to the client for a callothersubr, causing some characters to be rendered
+displaced (such as some of the chess pieces in chess.ps).
+ - gs_setgray, gs_sethsbcolor, gs_setrgbcolor, gs_setflat, and
+gs_setlinewidth gave errors for out-of-range operands rather than forcing
+them into range.
+ - Transfer functions were not actually supported.
+ - The area fill algorithm failed on certain complex paths.
+ - The current point was sometimes defined when a BuildChar
+procedure was called.
+ - Stroking a degenerate line didn't display anything for round
+caps or joins.
+ - If the ends of a curve had exactly the same X coordinate, the
+curve sometimes wouldn't be displayed.
+ - Very thin lines that went outside the clipping region would
+sometimes be displayed as dashed, or not at all.
+ - The translation in a FontMatrix was ignored.
+ - Very wide, shallow lines would color extraneous pixels when
+using bevel or miter joins.
+ - Dashed lines didn't join properly at the beginning of a closed
+path.
+ - 0-degree arcs didn't add the appropriate line (possibly
+degenerate) to the path.
+ - gs_type1_interpret didn't reset the callsubr stack when starting
+the base character of a seac, which caused confusion if the accent's
+endchar fell inside a Subr.
+ - Non-monochrome memory memory devices weren't checking the
+arguments of the drawing procedures properly.
+ - The initial clipping rectangle for memory devices was being
+computed wrong.
+ - Null devices had a semi-infinite clipping rectangle instead of
+an empty one.
+ - gs_setlinewidth was treating negative arguments as zero, instead
+of taking the absolute value.
+ - imagemask with a dithered color used a solid color rather than
+the dithered one.
+
+Tweaks the area fill and image rendering algorithms to be a little more
+liberal with paint when being used to render characters.
+
+Changes the name of the 8-bit mapped color memory device from
+mem_mapped_color_device to mem_mapped8_color_device.
+
+Changes the memory devices so that on little-endian platforms, they can
+store the bytes within a word in either order. (Little-endian order
+allows efficient 32-bit updating, big-endian is required when displaying
+or writing to a printer or a file.)
+
+Implements halftone phase.
+
+Replaces the trapezoid fill algorithm with a much more accurate one
+inspired by a contribution from Paul Haeberli. This also changes the
+graphics convention back to filling only pixels whose center falls within
+the region to be filled.
+
+Changes the character cache to allocate headers and bits contiguously out
+of a single ring buffer.
+
+Changes gs_imagemask and gs_imagemask_init to take a thickness adjustment
+parameter.
+
+Changes gs_setcachedevice and gs_setcharwidth to take the graphics state
+as a parameter.
+
+Renames gx_device_memory_bitmap_size as gdev_mem_bitmap_size,
+mem_copy_scan_lines as gdev_mem_copy_scan_lines, and
+mem_bytes_per_scan_line as gdev_mem_bytes_per_scan_line.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.1.1"></a>Version 2.1.1 (1/15/91)</h2>
+
+<p>This is a sub-release distributed to fix a few early bugs in 2.1,
+just in
+time for the new GNU master tape.
+
+<h3><a name="V2.1.1_Build_procedures"></a>Build procedures</h3><pre>
+Removes all of the (undebugged) Level 2 code from the fileset, as well as
+the (unused) file gdevvga.c.
+
+Changes the tar file so that the files are stored in the directory
+gs&lt;version&gt; rather than simply gs, e.g., gs211.
+
+</pre><h3><a name="V2.1.1_Interpreter"></a>Interpreter</h3><pre>
+Changes the scanner so that \ is recognized within strings regardless of
+whether the scanner is reading from a string or from a file. This is
+compatible with newer P*stScr*pt interpreters, and with the newer
+P*stSc*pt language specification, but not with the older specification in
+the original PostScript Language Reference Manual.
+
+</pre><h3><a name="V2.1.1_Drivers"></a>Drivers</h3><pre>
+Fixes the max_value macro in gdevmem.c so that compilers won't complain
+about a left shift by 32.
+
+Adds 'byte' to the list of types that gdevx.c must sidestep because header
+files use them.
+
+</pre><h3><a name="V2.1.1_Library"></a>Library</h3><pre>
+Changes the computation of penum-&gt;unpack in gsimage.c so as not to upset
+compilers that don't treat procedures and pointers to procedures as
+compatible types for conditional expressions.
+
+</pre>
+<h2><a name="Version2.1"></a>Version 2.1 (12/31/90)</h2>
+
+<p>This is primarily a bug fix release to clean up problems in 2.0. It
+also implements a first cut at the new color operators.
+
+<h3><a name="V2.1_Build_procedures"></a>Build procedures</h3><pre>
+Changes the separator for multiple directories in MS-DOS from ';' to '|',
+since there is no way to include a ';' in a command line.
+
+Adds &lt;dir&gt;/fonts to the default search path, where &lt;dir&gt; is c:/ghost for
+MS-DOS systems and `pwd` for Unix systems.
+
+Adds new documentation describing how to direct output to the printer.
+
+Changes the PROCTYPE and USE8087 options in MSDOS.MAK to CPU_TYPE and
+FPU_TYPE. The latter now indicates the type of FPU to generate code for,
+if any.
+
+</pre>
+
+<h3><a name="V2.1_Drivers"></a>Drivers</h3>
+
+<pre>
+Adds a driver for the Canon BubbleJet BJ10e.
+
+Modifies the EGA driver to handle (non-standard) frame buffers larger than
+64K. Adds drivers for the VGA and for the EIZO MDB-10 (a 1024 x 768 frame
+buffer).
+
+Changes the X driver so that it clips to the window dimensions, rather
+than reporting an error.
+
+Notes that the H-P LaserJet driver, like the DeskJet driver, works under
+Unix as well as MS-DOS.
+
+Adds support for 120 X DPI mode, and for the LQ-1500, to the Epson driver.
+
+</pre><h3><a name="V2.1_Fonts"></a>Fonts</h3><pre>
+Fixes bugs in bdftops:
+ - It was using /UniqueId instead of /UniqueID as the key for the
+font unique ID. This effectively disabled the font cache.
+ - The definition for .notdef was bogus -- an invalid CharString.
+
+Changes ghost.ps and gfonts.ps so that NullFont is the initial font,
+rather than Ugly.
+
+Arranges things so that when attempting a font substitution, if the
+default font is not found, NullFont is used instead.
+
+Extends bdftops so that if certain easily synthesized characters are
+missing from a font, it will attempt to synthesize them using available
+characters.
+
+</pre><h3><a name="V2.1_Interpreter"></a>Interpreter</h3><pre>
+Extends the -T switch to allow specifying a printf template for the
+arguments of the procedure being traced.
+
+Fixes bugs:
+ - /0 was interpreted as equivalent to 0 (a number) rather than a
+literal name.
+ - packedarray was defined as being like array, instead of like
+array followed by astore.
+ - Many minor and harmless type mismatches (and a couple of very
+minor genuine bugs) were upsetting the Apollo C compiler.
+ - exp was incorrectly failing in certain cases with a negative
+first argument.
+ - copyscanlines incorrectly required at least 4 elements on the
+operand stack, although it correctly only used the top 3.
+ - readhexstring incorrectly read 1 byte even if the string length
+was zero.
+ - Not every place that expected an array would accept a packed
+array.
+ - Very complex paths (and infrequently other things) could produce
+a 'memory leak'.
+ - / alone would skip following whitespace and gather following
+characters, rather than creating an empty name.
+ - ghost.ps left newerror defined as true in $error, which resulted
+in an erroneous error report if a program executed a 'stop'.
+ - The definition of exitserver in serverdict didn't clear the
+stack.
+ - currentfile returned an executable file, rather than a literal
+one.
+ - setfont for Type 1 fonts didn't check the UniqueID in the font
+dictionary against the one in the font's Private dictionary.
+ - A value stored in a dictionary under the key /xxx couldn't be
+retrieved using the key (xxx), and vice versa.
+ - charpath with a Type 1 font on a string containing a 'space'
+would produce garbage (it released the parent path inappropriately).
+ - bytesavailable did not work properly for terminal input.
+
+Changes the interface to the memory allocator so that it always takes an
+element size and an element count, like calloc instead of malloc (but note
+that alloc does *not* clear just-allocated blocks). Gets rid of the
+special 'dynamic' allocation procedures.
+
+Changes the random number operators to use a better implementation.
+
+Changes the idiv operator so it will accept any numbers, not just
+integers, as arguments. (The PostScript manual doesn't allow this, but
+implementations apparently do.)
+
+Provides semi-fake but usable definitions for all of the color PostScript
+extensions, including a real implementation of colorimage.
+
+No longer uses the name 'null', which is apparently reserved by Microsoft
+C. Makes a number of other minor changes required to pacify the Microsoft
+C compiler.
+
+Implements %statementedit and %lineedit. (%statementedit is equivalent to
+%lineedit, which is wrong.) Changes the interactive interpreter to use
+%statementedit.
+
+Changes the scanner to accept null, ctrl-K (vertical tab), and ctrl-L
+(form feed) as whitespace. Ctrl-L terminates a comment, null and ctrl-K
+do not.
+
+Allows a literal string as the 'proc' argument(s) for image, imagemask,
+and colorimage.
+
+Adds the following operators/procedures: arct, cleardictstack, deletefile,
+renamefile.
+
+Defines =print as a synonym for =, for the benefit of LaserPrep.
+
+Implements non-zero PaintType for the show operators (but not for
+charpath) for Type 1 fonts.
+
+Adds the ISOLatin1Encoding encoding vector.
+
+Renames currentcolor and setcolor as currentgscolor and setgscolor, to
+avoid conflict with the Level 2 PostScript names. Removes colorhsb,
+colorrgb, hsbcolor, and rgbcolor.
+
+</pre><h3><a name="V2.1_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - In a couple of places, a 0 was being passed as a pointer
+argument without casting, which confused the Microsoft C compiler.
+ - Image devices were not recognized properly in debugging
+configurations.
+ - Inverted-color monochrome image devices were not recognized
+properly.
+ - Images that exactly fill the drawing area rendered very slowly,
+because they erroneously used the general clipping algorithm.
+ - Images that are 1-for-1 with the device were incorrectly scaled
+by a factor of 8 in X.
+ - Rounding artifacts sometimes caused characters to be unevenly
+offset vertically by 1 pixel.
+ - Type 1 fonts that used the Flex feature resulted in garbled
+images.
+ - The show operator routines would incorrectly fill or stroke a
+path that existed at the time the show was started.
+ - setscreen truncated the cell size instead of rounding, which
+could produce off-by-1 anomalies.
+ - stroke would sometimes produce garbage (or nothing at all) for
+very narrow lines.
+ - path filling would only color the pixels whose centers fell
+inside the path: the Adobe specification requires coloring a pixel if any
+part of it falls inside the path.
+
+Changes the Epson printer driver so that it drives the printer directly
+rather than writing to a file.
+
+Changes pathbbox so that if the path is empty but there is a current
+point, it returns a null rectangle at the current point.
+
+Changes gs_image_init to take an additional parameter (after bps) giving
+the number of samples per pixel (1, 3, or 4), and an indication of whether
+the samples for each pixel are together or separated (-3 or -4).
+
+Renames the gs_image_data and gs_imagemask_data procedures as gs_image and
+gs_imagemask, and removes the old versions of the latter.
+
+Adds gs_colorimage.
+
+Replaces Snoopy's color dithering algorithm with one contributed by Paul
+Haeberli.
+
+Changes gs_setgray, gs_[set]hsbcolor, and gs_[set]rgbcolor so that they
+coerce arguments outside the range [0..1] back into the range, instead of
+signalling an error.
+
+Makes a number of minor changes required to pacify the Microsoft C
+compiler.
+
+Changes gs_arcto so that if the last argument is a null pointer, the
+tangent points are not returned.
+
+Removes gs_type1addpath, which is not useful. (Clients must call
+gs_type1_init and gs_type1_interpret directly.)
+
+Implements the 'seac' opcode for Type 1 fonts, allowing fonts with accented
+characters to display properly.
+
+Implements the undocumented 'testadd' opcode for Type 1 fonts, which is
+used by some Adobe fonts.
+
+Renames gs_currentcolor and gs_setcolor as gs_currentgscolor and
+gs_setgscolor. Removes gs_colorhsb, gs_colorrgb, gs_hsbcolor, and
+gs_rgbcolor.
+
+</pre>
+
+<hr>
+
+<h2><a name="Version2.0"></a>Version 2.0 (9/12/90)</h2>
+
+<p>The main purpose of this release is to add fonts, support for
+multiple
+devices, and imaging into memory. It also fixes a number of miscellaneous
+bugs. (Unfortunately, accurate records of the bugs fixed are not
+available.) The changes were so extensive that we chose to increment the
+major version number.
+
+<h3><a name="V2.0_Miscellaneous"></a>Miscellaneous</h3><pre>
+Doesn't attempt to open the .MAP file on Unix systems.
+
+Adds mention of statusd.ps to interp.doc.
+
+Notes that Turbo C 2.0, not 1.5, is required for building the MS-DOS
+version.
+
+Adds a DEVICES= line to the makefile, and allows multiple devices.
+
+Documents, in interp.doc, the X Windows resources that Ghostscript
+recognizes.
+
+Adds three PostScript masters to the fileset: chess.ps (+ cheq.ps),
+golfer.ps, and escher.ps.
+
+</pre><h3><a name="V2.0_Drivers"></a>Drivers</h3><pre>
+Changes the names of all the device drivers. See gdevs.mak for the
+updated list.
+
+Adds a (working) driver for SunView.
+
+Adds drivers for the Sony NeWS frame buffer, and the Sony Microsystems
+NWP533 printers. These drivers were contributed by users, so we aren't
+prepared to answer questions about them.
+
+Adds a driver for the Borland Graphics Interface (BGI) for MS-DOS systems.
+Note that to use this driver with a non-EGA/VGA display, you need a .BGI
+file appropriate for your hardware. (The Ghostscript executable includes
+the EGA/VGA driver.)
+
+Adds a driver for Epson printers. The driver has only been tested on an
+LX-800, and on an H-P DeskJet in FX-80 emulation mode, but may work on
+other models. The driver could be adapted to work on Unix systems, but as
+distributed, it only works on MS-DOS systems.
+
+Adds a driver for the Hewlett-Packard DeskJet printer. The driver could
+be adapted to work on Unix systems, but as distributed, it only works on
+MS-DOS systems.
+
+The X Windows driver no longer waits for the user to type a character
+before bringing up the initial display.
+
+Adds information to drivers.doc describing how to change the definition of
+the device structure and procedure table.
+
+Extends the tile_rectangle and tile_trapezoid driver procedures to
+interpret color0 = color1 = gx_no_color_index as meaning that the tile is
+actually colored, not a mask.
+
+</pre><h3><a name="V2.0_Build_procedures"></a>Build procedures</h3><pre>
+Changes the tar file so it puts everything in a directory called gs.
+
+Removes the -ansi switch for gcc (this was causing problems with &lt;math.h&gt;
+on some systems).
+
+Changes LDPLAT to the string -X, which is appropriate for most Unix
+systems (but not for SunOS 4.n).
+
+Adds EXTRALIBS to the makefile, for specifying additional libraries to be
+linked in.
+
+Adds a 'clean' target for 'make', to get rid of all temporary files, the
+binaries, and the executable.
+
+Changes names of system-specific files from gp-xxx.c to gp_xxx.c.
+
+Adds support for VMS (gp_vms.c and ghost.dcl).
+
+Creates a new file gdevs.mak, and reorganizes the other makefiles, so that
+the choice of which device driver(s) to include is isolated in a single
+line in the platform-specific makefile.
+
+Changes the standard MS-DOS makefile so it builds for 8088/86 (not 80386),
+with neither -DNOPRIVATE nor -DDEBUG.
+
+Changes the name of the MS-DOS makefile from dos-ega.mak to msdos.mak, and
+the Unix makefiles from ux-[g]cc-x.mak to unix-[g]cc.mak.
+
+Updates drivers.doc to describe how to add new drivers in gdevs.mak.
+
+Removes gdevs.ps: the drivers are now responsible for specifying the size
+of the imaging region.
+
+</pre><h3><a name="V2.0_Interpreter"></a>Interpreter</h3><pre>
+Adds a makefile macro GS_LIB_DEFAULT and an environment variable GS_LIB to
+define a search path for the library (initialization and font) files, and
+implements the -I switch for the same purpose (replacing -sLIB=, which was
+never actually implemented). See interp.doc for details.
+
+No longer clears the operand stack between interactive inputs. No longer
+prints the contents of the operand stack after every input in debug mode.
+
+Doesn't "eat" the character that the user types to proceed after a
+showpage, unless it's an isolated &lt;return&gt;.
+
+Changes the prompt so that it says
+ GS&gt;
+if the operand stack is empty, or
+ GS&lt;n&gt;
+if there are n &gt; 0 elements on the operand stack.
+
+Adds -w and -h switches to the command line, equivalent to -dWIDTH= and
+-dHEIGHT= except that they require numeric arguments.
+
+Adds -q (quiet startup) switch to the command line, which suppresses some
+initial messages and also has an effect equivalent to -dQUIET.
+
+Fixes bugs:
+ - = and == caused an error on some kinds of objects if the object
+didn't have read access.
+ - cvs didn't print operator names.
+ - The definition of dynamic_begin in iscan.c caused the DEC VMS C
+compiler to produce incorrect code.
+ - mul didn't return a correct (real) result when multiplying a
+very large integer by an integer that wasn't very large.
+ - eq and ne didn't work on files, fonts, save objects, and some
+operators.
+ - The scanner would sometimes blow up on floating point numbers
+beginning with a '.'.
+ - flushfile didn't pop its argument from the stack.
+ - put and putinterval would store into a packed array.
+ - a few operators didn't check properly for stack underflow.
+ - cvrs produced wrong output for radix values greater than 10.
+ - The scanner would convert upper-case letters in alternate-radix
+numbers wrong on Unix systems.
+ - String comparisons other than equality often produced the wrong
+result if the strings were of different lengths.
+ - An ifelse as the last thing inside a forall would confuse the
+execution stack.
+ - There were some omitted casts and 'private' declarations that
+made the GNU compiler unhappy.
+ - There was a memory leak in the image[mask] operators that caused
+516 bytes to be permanently lost each time one of them was used.
+ - Quoted strings of length greater than 50 and less than 100 would
+get mangled when being read in.
+ - The scanner didn't consume the whitespace character following a
+token, so programs that read data out of the program file could get
+confused.
+ - Under rare circumstances, an object of size between 249 and 255
+bytes could get allocated on top of another object.
+
+Allows bind to bind packed arrays, even though they aren't normally
+writable.
+
+Changes the length operator to allow a name as the argument. (The
+PostScript manual doesn't allow this, but implementations apparently do.)
+
+Changes the setcachedevice operator to allow the bounding box to be
+specified as a 4-element array instead of 4 scalars. (The PostScript
+manual doesn't allow this, but implementations apparently do.)
+
+Removes a line from ghost.ps that accidentally disabled the font cache.
+
+Implements memory devices (makeimagedevice, copyscanlines, and makedevice
+for image devices). makeimagedevice is implemented only for 1, 8, 24, and
+32 bits per pixel.
+
+Changes the deviceparams operator so it pushes a mark on the stack below
+the parameters. This is to allow for devices that have more than the
+standard set of parameters.
+
+Replaces defaultdevicename with two new operators, getdevice and
+devicename.
+
+Adds a flushpage operator that flushes any outstanding buffered output to
+the screen. This is not the same as copypage: on printers, copypage
+actually prints a page, whereas flushpage may do nothing; on displays,
+flushpage and copypage may both flush output to a server.
+
+Adds an unread operator for pushing back a character into a file.
+
+Adds a description of proposed grayimage and colorimage operators to
+ghost.doc, even though they aren't implemented yet.
+
+Changes the name of the currentfileposition operator to fileposition.
+
+Removes the framedevice operator, since the new device operators supersede
+it.
+
+Adds a writeppmfile operator, for writing the contents of a memory device
+to a ppm file.
+
+Makes Ghostscript work even when the &gt;&gt; operator doesn't sign-extend
+negative numbers. (This has not been tested.)
+
+Adds the Symbol encoding to ghost.ps.
+
+Adds two new file-related operators, filename and findlibfile. See
+ghost.doc and interp.doc for details.
+
+Adds type1encrypt and type1decrypt operators for manipulating Adobe Type 1
+encoded fonts.
+
+Changes the imagecharpath and addcharpath operators to type1imagepath and
+type1addpath. These operators now work with the Adobe Type 1 font
+encoding.
+
+Adds the type1decryptfile operator for reading Adobe Type 1 encrypted
+fonts.
+
+</pre><h3><a name="V2.0_Library"></a>Library</h3><pre>
+Fixes bugs:
+ - curveto and lineto didn't check for the current point being
+defined.
+ - stringwidth would fail if there was no current point.
+ - There were omitted casts that made the GNU compiler unhappy.
+ - Line caps and joins didn't always work.
+ - Dashed lines didn't work at all.
+ - If you read out the current matrix while inside a BuildChar
+procedure, the result was garbage.
+ - image[mask] would crash if you gave it a single string with more
+than 64K-1 pixels (MS-DOS only).
+ - Filling with a gray pattern sometimes wrote into pixels beyond
+the right edge of the region (MS-DOS only).
+ - The font cache would mistake fonts for each other if both fonts
+had a default (unsupplied) "unique ID".
+ - When a character was entered into the font cache for the first
+time, sometimes it would display as garbage and/or displaced vertically
+from its proper position.
+
+Implements gs_makeimagedevice, gs_copyscanlines, gs_getdevice,
+gs_devicename, gs_flushpage, gs_writeppmfile, gs_type1encrypt,
+gs_type1decrypt, gs_type1imagepath, and gs_type1addpath procedures
+corresponding to the new operators in the interpreter (see preceding
+section).
+
+Changes [gs_]setdevice so that it does an erasepage when it first opens
+the device.
+
+Changes definition of gx_device structure as follows. NOTE: THIS AFFECTS
+ALL DRIVERS.
+
+ - Removes bits_from_MSB (which wasn't actually used, in any case).
+ Ghostscript now assumes officially, as it always did in
+ practice, that device bitmaps are stored MSB first, i.e., X=0
+ corresponds to the 0x80 bit in the first byte.
+
+ - Removes the initial_matrix member, which wasn't actually being
+ set up.
+
+ - Adds a new member 'name', a string giving the device name.
+
+ - Adds new members 'x_pixels_per_inch' and 'y_pixels_per_inch'.
+ These are only used by the default initial_matrix procedure
+ (see below).
+
+ - Adds a new procedure 'output_page'. The default implementation
+ (gx_default_output_page) just calls the sync_output procedure.
+
+ - Adds a new procedure 'get_initial_matrix'. The default
+ procedure uses the width, height, and x/y_pixels_per_inch
+ members to compute the matrix, assuming that X values run from
+ right to left, and Y values run from top to bottom.
+
+Changes the names of the allocation procedure types gs_proc_alloc and
+gs_proc_free to proc_alloc_t and proc_free_t, and moves them from gs.h to
+std.h.
+
+Makes Ghostscript work even when the &gt;&gt; operator doesn't sign-extend
+negative numbers. (This has not been tested.)
+
+</pre>
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/History3.htm b/Master/xemtex/doc/ghostscript/History3.htm
new file mode 100644
index 00000000000..88fdbb934a1
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History3.htm
@@ -0,0 +1,8597 @@
+<!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 3.n</title>
+<!-- $Id: History3.htm,v 1.13.2.11.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: history3.txt -->
+<!--
+ 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 3.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version3.70p1">Version 3.70 patch 1 (6/24/96)</a>
+<ul>
+<li><a href="#V3.70p1_Procedures">Procedures</a>,
+ <a href="#V3.70p1_Drivers">Drivers</a>
+</ul>
+<li><a href="#Version3.70">Version 3.70 (limited) (6/23/96)</a>
+<ul>
+<li><a href="#V3.70_Documentation">Documentation</a>,
+ <a href="#V3.70_Procedures">Procedures</a>,
+ <a href="#V3.70_Drivers">Drivers</a>,
+ <a href="#V3.70_Platforms">Platforms</a>,
+ <a href="#V3.70_Fonts">Fonts</a>,
+ <a href="#V3.70_Interpreter">Interpreter</a>,
+ <a href="#V3.70_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.70_Streams">Streams</a>,
+ <a href="#V3.70_Library">Library</a>
+</ul>
+<li><a href="#Version3.69">Version 3.69 (limited) (6/14/96)</a>
+<ul>
+<li><a href="#V3.69_Documentation">Documentation</a>,
+ <a href="#V3.69_Procedures">Procedures</a>,
+ <a href="#V3.69_Utilities">Utilities</a>,
+ <a href="#V3.69_Drivers">Drivers</a>,
+ <a href="#V3.69_Platforms">Platforms</a>,
+ <a href="#V3.69_Fonts">Fonts</a>,
+ <a href="#V3.69_Interpreter">Interpreter</a>,
+ <a href="#V3.69_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p4">Version 3.68 patch 4 (5/23/96)</a>
+<ul>
+<li><a href="#V3.68p4_Documentation">Documentation</a>,
+ <a href="#V3.68p4_Procedures">Procedures</a>,
+ <a href="#V3.68p4_Drivers">Drivers</a>,
+ <a href="#V3.68p4_Platforms">Platforms</a>,
+ <a href="#V3.68p4_Fonts">Fonts</a>,
+ <a href="#V3.68p4_Interpreter">Interpreter</a>,
+ <a href="#V3.68p4_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p3">Version 3.68 patch 3 (5/17/96)</a>
+<ul>
+<li><a href="#V3.68p3_Procedures">Procedures</a>,
+ <a href="#V3.68p3_Utilities">Utilities</a>,
+ <a href="#V3.68p3_Drivers">Drivers</a>,
+ <a href="#V3.68p3_Platforms">Platforms</a>,
+ <a href="#V3.68p3_Interpreter">Interpreter</a>,
+ <a href="#V3.68p3_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p2">Version 3.68 patch 2 (5/13/96)</a>
+<ul>
+<li><a href="#V3.68p2_Documentation">Documentation</a>,
+ <a href="#V3.68p2_Procedures">Procedures</a>,
+ <a href="#V3.68p2_Drivers">Drivers</a>,
+ <a href="#V3.68p2_Interpreter">Interpreter</a>,
+ <a href="#V3.68p2_Streams">Streams</a>,
+ <a href="#V3.68p2_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p1">Version 3.68 patch 1 (5/10/96)</a>
+<ul>
+<li><a href="#V3.68p1_Procedures">Procedures</a>
+</ul>
+<li><a href="#Version3.68">Version 3.68 (limited) (5/9/96)</a>
+<ul>
+<li><a href="#V3.68_Documentation">Documentation</a>,
+ <a href="#V3.68_Procedures">Procedures</a>,
+ <a href="#V3.68_Utilities">Utilities</a>,
+ <a href="#V3.68_Drivers">Drivers</a>,
+ <a href="#V3.68_Platforms">Platforms</a>,
+ <a href="#V3.68_Fonts">Fonts</a>,
+ <a href="#V3.68_Interpreter">Interpreter</a>,
+ <a href="#V3.68_Streams">Streams</a>,
+ <a href="#V3.68_Library">Library</a>
+</ul>
+<li><a href="#Version3.67">Version 3.67 (limited) (4/12/96)</a>
+<ul>
+<li><a href="#V3.67_Documentation">Documentation</a>,
+ <a href="#V3.67_Procedures">Procedures</a>,
+ <a href="#V3.67_Platforms">Platforms</a>,
+ <a href="#V3.67_Interpreter">Interpreter</a>,
+ <a href="#V3.67_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.67_Library">Library</a>
+</ul>
+<li><a href="#Version3.66">Version 3.66 (limited) (4/8/96)</a>
+<ul>
+<li><a href="#V3.66_Documentation">Documentation</a>,
+ <a href="#V3.66_Procedures">Procedures</a>,
+ <a href="#V3.66_Utilities">Utilities</a>,
+ <a href="#V3.66_Drivers">Drivers</a>,
+ <a href="#V3.66_Platforms">Platforms</a>,
+ <a href="#V3.66_Fonts">Fonts</a>,
+ <a href="#V3.66_Interpreter">Interpreter</a>,
+ <a href="#V3.66_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.66_Streams">Streams</a>,
+ <a href="#V3.66_Library">Library</a>
+</ul>
+<li><a href="#Version3.65">Version 3.65 (limited) (3/9/96)</a>
+<ul>
+<li><a href="#V3.65_Documentation">Documentation</a>,
+ <a href="#V3.65_Procedures">Procedures</a>,
+ <a href="#V3.65_Utilities">Utilities</a>,
+ <a href="#V3.65_Drivers">Drivers</a>,
+ <a href="#V3.65_Platforms">Platforms</a>,
+ <a href="#V3.65_Interpreter">Interpreter</a>,
+ <a href="#V3.65_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.65_Streams">Streams</a>,
+ <a href="#V3.65_Library">Library</a>
+</ul>
+<li><a href="#Version3.64">Version 3.64 (limited, incremental) (1/27/96)</a>
+<ul>
+<li><a href="#V3.64_Documentation">Documentation</a>,
+ <a href="#V3.64_Procedures">Procedures</a>,
+ <a href="#V3.64_Utilities">Utilities</a>,
+ <a href="#V3.64_Drivers">Drivers</a>,
+ <a href="#V3.64_Platforms">Platforms</a>,
+ <a href="#V3.64_Interpreter">Interpreter</a>,
+ <a href="#V3.64_Streams">Streams</a>,
+ <a href="#V3.64_Library">Library</a>
+</ul>
+<li><a href="#Version3.63">Version 3.63 (limited, incremental) (1/14/96)</a>
+<ul>
+<li><a href="#V3.63_Documentation">Documentation</a>,
+ <a href="#V3.63_Procedures">Procedures</a>,
+ <a href="#V3.63_Utilities">Utilities</a>,
+ <a href="#V3.63_Drivers">Drivers</a>,
+ <a href="#V3.63_Platforms">Platforms</a>,
+ <a href="#V3.63_Interpreter">Interpreter</a>,
+ <a href="#V3.63_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.63_Streams">Streams</a>,
+ <a href="#V3.63_Library">Library</a>
+</ul>
+<li><a href="#Version3.62">Version 3.62 (limited, incremental) (12/26/95)</a>
+<ul>
+<li><a href="#V3.62_Documentation">Documentation</a>,
+ <a href="#V3.62_Procedures">Procedures</a>,
+ <a href="#V3.62_Interpreter">Interpreter</a>,
+ <a href="#V3.62_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.62_Library">Library</a>
+</ul>
+<li><a href="#Version3.61">Version 3.61 (limited) (12/10/95)</a>
+<ul>
+<li><a href="#V3.61_Documentation">Documentation</a>,
+ <a href="#V3.61_Procedures">Procedures</a>,
+ <a href="#V3.61_Utilities">Utilities</a>,
+ <a href="#V3.61_Drivers">Drivers</a>,
+ <a href="#V3.61_Platforms">Platforms</a>,
+ <a href="#V3.61_Fonts">Fonts</a>,
+ <a href="#V3.61_Interpreter">Interpreter</a>,
+ <a href="#V3.61_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.61_Streams">Streams</a>,
+ <a href="#V3.61_Library">Library</a>
+</ul>
+<li><a href="#Version3.60">Version 3.60 (limited) (11/20/95)</a>
+<ul>
+<li><a href="#V3.60_Documentation">Documentation</a>,
+ <a href="#V3.60_Procedures">Procedures</a>,
+ <a href="#V3.60_Utilities">Utilities</a>,
+ <a href="#V3.60_Drivers">Drivers</a>,
+ <a href="#V3.60_Platforms">Platforms</a>,
+ <a href="#V3.60_Fonts">Fonts</a>,
+ <a href="#V3.60_Interpreter">Interpreter</a>,
+ <a href="#V3.60_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.60_Streams">Streams</a>,
+ <a href="#V3.60_Library">Library</a>
+</ul>
+<li><a href="#Version3.53">Version 3.53 (1/10/96)</a>
+<ul>
+<li><a href="#V3.53_Documentation">Documentation</a>,
+ <a href="#V3.53_Procedures">Procedures</a>,
+ <a href="#V3.53_Utilities">Utilities</a>,
+ <a href="#V3.53_Drivers">Drivers</a>,
+ <a href="#V3.53_Platforms">Platforms</a>,
+ <a href="#V3.53_Fonts">Fonts</a>,
+ <a href="#V3.53_Interpreter">Interpreter</a>,
+ <a href="#V3.53_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.53_Streams">Streams</a>,
+ <a href="#V3.53_Library">Library</a>
+</ul>
+<li><a href="#Version3.52">Version 3.52 (limited) (10/6/95)</a>
+<ul>
+<li><a href="#V3.52_Procedures">Procedures</a>,
+ <a href="#V3.52_Interpreter">Interpreter</a>,
+ <a href="#V3.52_Library">Library</a>
+</ul>
+<li><a href="#Version3.51">Version 3.51 (9/27/95)</a>
+<ul>
+<li><a href="#V3.51_Documentation">Documentation</a>,
+ <a href="#V3.51_Procedures">Procedures</a>,
+ <a href="#V3.51_Utilities">Utilities</a>,
+ <a href="#V3.51_Drivers">Drivers</a>,
+ <a href="#V3.51_Platforms">Platforms</a>,
+ <a href="#V3.51_Interpreter">Interpreter</a>,
+ <a href="#V3.51_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.51_Library">Library</a>
+</ul>
+<li><a href="#Version3.50">Version 3.50 (limited) (9/24/95)</a>
+<ul>
+<li><a href="#V3.50_Procedures">Procedures</a>,
+ <a href="#V3.50_Utilities">Utilities</a>,
+ <a href="#V3.50_Drivers">Drivers</a>,
+ <a href="#V3.50_Interpreter">Interpreter</a>,
+ <a href="#V3.50_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.50_Library">Library</a>
+</ul>
+<li><a href="#Version3.49">Version 3.49 (limited) (9/20/95)</a>
+<ul>
+<li><a href="#V3.49_Documentation">Documentation</a>,
+ <a href="#V3.49_Procedures">Procedures</a>,
+ <a href="#V3.49_Drivers">Drivers</a>,
+ <a href="#V3.49_Platforms">Platforms</a>,
+ <a href="#V3.49_Interpreter">Interpreter</a>,
+ <a href="#V3.49_Library">Library</a>
+</ul>
+<li><a href="#Version3.48">Version 3.48 (limited) (9/17/95)</a>
+<ul>
+<li><a href="#V3.48_Documentation">Documentation</a>,
+ <a href="#V3.48_Procedures">Procedures</a>,
+ <a href="#V3.48_Drivers">Drivers</a>,
+ <a href="#V3.48_Platforms">Platforms</a>,
+ <a href="#V3.48_Interpreter">Interpreter</a>,
+ <a href="#V3.48_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.48_Library">Library</a>
+</ul>
+<li><a href="#Version3.47">Version 3.47 (limited) (9/14/95)</a>
+<ul>
+<li><a href="#V3.47_Documentation">Documentation</a>,
+ <a href="#V3.47_Procedures">Procedures</a>,
+ <a href="#V3.47_Utilities">Utilities</a>,
+ <a href="#V3.47_Drivers">Drivers</a>,
+ <a href="#V3.47_Platforms">Platforms</a>,
+ <a href="#V3.47_Fonts">Fonts</a>,
+ <a href="#V3.47_Interpreter">Interpreter</a>,
+ <a href="#V3.47_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.47_Streams">Streams</a>,
+ <a href="#V3.47_Library">Library</a>
+</ul>
+<li><a href="#Version3.46">Version 3.46 (limited) (9/4/95)</a>
+<ul>
+<li><a href="#V3.46_Documentation">Documentation</a>,
+ <a href="#V3.46_Procedures">Procedures</a>,
+ <a href="#V3.46_Utilities">Utilities</a>,
+ <a href="#V3.46_Drivers">Drivers</a>,
+ <a href="#V3.46_Platforms">Platforms</a>,
+ <a href="#V3.46_Interpreter">Interpreter</a>,
+ <a href="#V3.46_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.46_Library">Library</a>
+</ul>
+<li><a href="#Version3.45">Version 3.45 (limited) (8/27/95)</a>
+<ul>
+<li><a href="#V3.45_Documentation">Documentation</a>,
+ <a href="#V3.45_Procedures">Procedures</a>,
+ <a href="#V3.45_Utilities">Utilities</a>,
+ <a href="#V3.45_Drivers">Drivers</a>,
+ <a href="#V3.45_Platforms">Platforms</a>,
+ <a href="#V3.45_Interpreter">Interpreter</a>,
+ <a href="#V3.45_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.45_Streams">Streams</a>,
+ <a href="#V3.45_Library">Library</a>
+</ul>
+<li><a href="#Version3.44">Version 3.44 (limited) (8/21/95)</a>
+<ul>
+<li><a href="#V3.44_Documentation">Documentation</a>,
+ <a href="#V3.44_Procedures">Procedures</a>,
+ <a href="#V3.44_Utilities">Utilities</a>,
+ <a href="#V3.44_Drivers">Drivers</a>,
+ <a href="#V3.44_Platforms">Platforms</a>,
+ <a href="#V3.44_Interpreter">Interpreter</a>,
+ <a href="#V3.44_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.44_Library">Library</a>
+</ul>
+<li><a href="#Version3.43">Version 3.43 (limited) (8/10/95)</a>
+<ul>
+<li><a href="#V3.43_Documentation">Documentation</a>,
+ <a href="#V3.43_Procedures">Procedures</a>,
+ <a href="#V3.43_Platforms">Platforms</a>,
+ <a href="#V3.43_Fonts">Fonts</a>,
+ <a href="#V3.43_Interpreter">Interpreter</a>,
+ <a href="#V3.43_Streams">Streams</a>,
+ <a href="#V3.43_Library">Library</a>
+</ul>
+<li><a href="#Version3.42">Version 3.42 (limited) (8/2/95)</a>
+<ul>
+<li><a href="#V3.42_Documentation">Documentation</a>,
+ <a href="#V3.42_Procedures">Procedures</a>,
+ <a href="#V3.42_Platforms">Platforms</a>,
+ <a href="#V3.42_Interpreter">Interpreter</a>,
+ <a href="#V3.42_Streams">Streams</a>,
+ <a href="#V3.42_Library">Library</a>
+</ul>
+<li><a href="#Version3.41">Version 3.41 (limited) (7/27/95)</a>
+<ul>
+<li><a href="#V3.41_Documentation">Documentation</a>,
+ <a href="#V3.41_Procedures">Procedures</a>,
+ <a href="#V3.41_Utilities">Utilities</a>,
+ <a href="#V3.41_Drivers">Drivers</a>,
+ <a href="#V3.41_Platforms">Platforms</a>,
+ <a href="#V3.41_Fonts">Fonts</a>,
+ <a href="#V3.41_Interpreter">Interpreter</a>,
+ <a href="#V3.41_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.41_Streams">Streams</a>,
+ <a href="#V3.41_Library">Library</a>
+</ul>
+<li><a href="#Version3.40">Version 3.40 (limited) (6/28/95)</a>
+<ul>
+<li><a href="#V3.40_Documentation">Documentation</a>,
+ <a href="#V3.40_Procedures">Procedures</a>,
+ <a href="#V3.40_Utilities">Utilities</a>,
+ <a href="#V3.40_Platforms">Platforms</a>,
+ <a href="#V3.40_Interpreter">Interpreter</a>,
+ <a href="#V3.40_Streams">Streams</a>,
+ <a href="#V3.40_Library">Library</a>
+</ul>
+<li><a href="#Version3.39">Version 3.39 (limited) (6/24/95)</a>
+<ul>
+<li><a href="#V3.39_Documentation">Documentation</a>,
+ <a href="#V3.39_Procedures">Procedures</a>,
+ <a href="#V3.39_Utilities">Utilities</a>,
+ <a href="#V3.39_Platforms">Platforms</a>,
+ <a href="#V3.39_Fonts">Fonts</a>,
+ <a href="#V3.39_Interpreter">Interpreter</a>,
+ <a href="#V3.39_Streams">Streams</a>,
+ <a href="#V3.39_Library">Library</a>
+</ul>
+<li><a href="#Version3.38">Version 3.38 (limited) (6/18/95)</a>
+<ul>
+<li><a href="#V3.38_Documentation">Documentation</a>,
+ <a href="#V3.38_Procedures">Procedures</a>,
+ <a href="#V3.38_Utilities">Utilities</a>,
+ <a href="#V3.38_Drivers">Drivers</a>,
+ <a href="#V3.38_Platforms">Platforms</a>,
+ <a href="#V3.38_Fonts">Fonts</a>,
+ <a href="#V3.38_Interpreter">Interpreter</a>,
+ <a href="#V3.38_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.38_Streams">Streams</a>,
+ <a href="#V3.38_Library">Library</a>
+</ul>
+<li><a href="#Version3.37">Version 3.37 (limited) (5/11/95)</a>
+<ul>
+<li><a href="#V3.37_Documentation">Documentation</a>,
+ <a href="#V3.37_Procedures">Procedures</a>,
+ <a href="#V3.37_Utilities">Utilities</a>,
+ <a href="#V3.37_Drivers">Drivers</a>,
+ <a href="#V3.37_Fonts">Fonts</a>,
+ <a href="#V3.37_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.37_Interpreter_PDF">Interpreter (PDF)</a>
+</ul>
+<li><a href="#Version3.36">Version 3.36 (limited) (5/4/95)</a>
+<ul>
+<li><a href="#V3.36_Documentation">Documentation</a>,
+ <a href="#V3.36_Procedures">Procedures</a>,
+ <a href="#V3.36_Drivers">Drivers</a>,
+ <a href="#V3.36_Interpreter">Interpreter</a>,
+ <a href="#V3.36_Library">Library</a>
+</ul>
+<li><a href="#Version3.35">Version 3.35 (internal) (5/2/95)</a>
+<ul>
+<li><a href="#V3.35_Documentation">Documentation</a>,
+ <a href="#V3.35_Procedures">Procedures</a>,
+ <a href="#V3.35_Utilities">Utilities</a>,
+ <a href="#V3.35_Drivers">Drivers</a>,
+ <a href="#V3.35_Platforms">Platforms</a>,
+ <a href="#V3.35_Fonts">Fonts</a>,
+ <a href="#V3.35_Interpreter">Interpreter</a>,
+ <a href="#V3.35_Library">Library</a>
+</ul>
+<li><a href="#Version3.34">Version 3.34 (internal) (4/18/95)</a>
+<ul>
+<li><a href="#V3.34_Documentation">Documentation</a>,
+ <a href="#V3.34_Procedures">Procedures</a>,
+ <a href="#V3.34_Interpreter">Interpreter</a>,
+ <a href="#V3.34_Library">Library</a>
+</ul>
+<li><a href="#Version3.33">Version 3.33 (4/13/95)</a>
+<ul>
+<li><a href="#V3.33_Documentation">Documentation</a>,
+ <a href="#V3.33_Procedures">Procedures</a>,
+ <a href="#V3.33_Utilities">Utilities</a>,
+ <a href="#V3.33_Drivers">Drivers</a>,
+ <a href="#V3.33_Platforms">Platforms</a>,
+ <a href="#V3.33_Fonts">Fonts</a>,
+ <a href="#V3.33_Library">Library</a>
+</ul>
+<li><a href="#Version3.32">Version 3.32 (4/7/95)</a>
+<ul>
+<li><a href="#V3.32_Documentation">Documentation</a>,
+ <a href="#V3.32_Procedures">Procedures</a>,
+ <a href="#V3.32_Utilities">Utilities</a>,
+ <a href="#V3.32_Drivers">Drivers</a>,
+ <a href="#V3.32_Platforms">Platforms</a>,
+ <a href="#V3.32_Interpreter">Interpreter</a>,
+ <a href="#V3.32_Streams">Streams</a>,
+ <a href="#V3.32_Library">Library</a>
+</ul>
+<li><a href="#Version3.31">Version 3.31 (4/2/95)</a>
+<ul>
+<li><a href="#V3.31_Documentation">Documentation</a>,
+ <a href="#V3.31_Procedures">Procedures</a>,
+ <a href="#V3.31_Utilities">Utilities</a>,
+ <a href="#V3.31_Drivers">Drivers</a>,
+ <a href="#V3.31_Platforms">Platforms</a>,
+ <a href="#V3.31_Interpreter">Interpreter</a>,
+ <a href="#V3.31_Streams">Streams</a>,
+ <a href="#V3.31_Library">Library</a>
+</ul>
+<li><a href="#Version3.30">Version 3.30 (beta) (3/21/95)</a>
+<ul>
+<li><a href="#V3.30_Documentation">Documentation</a>,
+ <a href="#V3.30_Utilities">Utilities</a>,
+ <a href="#V3.30_Drivers">Drivers</a>,
+ <a href="#V3.30_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.30_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.30_Library">Library</a>
+</ul>
+<li><a href="#Version3.29">Version 3.29 (internal) (3/8/95)</a>
+<ul>
+<li><a href="#V3.29_Documentation">Documentation</a>,
+ <a href="#V3.29_Procedures">Procedures</a>,
+ <a href="#V3.29_Utilities">Utilities</a>,
+ <a href="#V3.29_Fonts">Fonts</a>,
+ <a href="#V3.29_Drivers">Drivers</a>,
+ <a href="#V3.29_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.29_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.29_Streams">Streams</a>,
+ <a href="#V3.29_Library">Library</a>
+</ul>
+<li><a href="#Version3.28">Version 3.28 (beta) (2/13/95)</a>
+<ul>
+<li><a href="#V3.28_Documentation">Documentation</a>,
+ <a href="#V3.28_Procedures">Procedures</a>,
+ <a href="#V3.28_Utilities">Utilities</a>,
+ <a href="#V3.28_Drivers">Drivers</a>,
+ <a href="#V3.28_Interpreter">Interpreter</a>,
+ <a href="#V3.28_Library">Library</a>
+</ul>
+<li><a href="#Version3.27">Version 3.27 (beta)(withdrawn) (2/8/95)</a>
+<ul>
+<li><a href="#V3.27_Documentation">Documentation</a>,
+ <a href="#V3.27_Procedures">Procedures</a>,
+ <a href="#V3.27_Utilities">Utilities</a>,
+ <a href="#V3.27_Drivers">Drivers</a>,
+ <a href="#V3.27_Platforms">Platforms</a>,
+ <a href="#V3.27_Fonts">Fonts</a>,
+ <a href="#V3.27_Interpreter">Interpreter</a>,
+ <a href="#V3.27_Streams">Streams</a>,
+ <a href="#V3.27_Library">Library</a>
+</ul>
+<li><a href="#Version3.26">Version 3.26 (beta) (2/1/95)</a>
+<ul>
+<li><a href="#V3.26_Documentation">Documentation</a>,
+ <a href="#V3.26_Procedures">Procedures</a>,
+ <a href="#V3.26_Utilities">Utilities</a>,
+ <a href="#V3.26_Drivers">Drivers</a>,
+ <a href="#V3.26_Platforms">Platforms</a>,
+ <a href="#V3.26_Interpreter">Interpreter</a>,
+ <a href="#V3.26_Streams">Streams</a>,
+ <a href="#V3.26_Library">Library</a>
+</ul>
+<li><a href="#Version3.25">Version 3.25 (beta) (1/24/95)</a>
+<ul>
+<li><a href="#V3.25_Documentation">Documentation</a>,
+ <a href="#V3.25_Procedures">Procedures</a>,
+ <a href="#V3.25_Drivers">Drivers</a>,
+ <a href="#V3.25_Platforms">Platforms</a>,
+ <a href="#V3.25_Interpreter">Interpreter</a>,
+ <a href="#V3.25_Library">Library</a>
+</ul>
+<li><a href="#Version3.24">Version 3.24 (beta) (1/17/95)</a>
+<ul>
+<li><a href="#V3.24_Documentation">Documentation</a>,
+ <a href="#V3.24_Procedures">Procedures</a>,
+ <a href="#V3.24_Drivers">Drivers</a>,
+ <a href="#V3.24_Platforms">Platforms</a>,
+ <a href="#V3.24_Fonts">Fonts</a>,
+ <a href="#V3.24_Interpreter">Interpreter</a>,
+ <a href="#V3.24_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.24_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.24_Streams">Streams</a>,
+ <a href="#V3.24_Library">Library</a>
+</ul>
+<li><a href="#Version3.23">Version 3.23 (beta) (1/5/95)</a>
+<ul>
+<li><a href="#V3.23_Documentation">Documentation</a>,
+ <a href="#V3.23_Procedures">Procedures</a>,
+ <a href="#V3.23_Utilities">Utilities</a>,
+ <a href="#V3.23_Drivers">Drivers</a>,
+ <a href="#V3.23_Platforms">Platforms</a>,
+ <a href="#V3.23_Fonts">Fonts</a>,
+ <a href="#V3.23_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.23_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.23_Streams">Streams</a>,
+ <a href="#V3.23_Library">Library</a>
+</ul>
+<li><a href="#Version3.22">Version 3.22 (beta) (11/30/94)</a>
+<ul>
+<li><a href="#V3.22_Procedures">Procedures</a>,
+ <a href="#V3.22_Drivers">Drivers</a>,
+ <a href="#V3.22_Platforms">Platforms</a>,
+ <a href="#V3.22_Fonts">Fonts</a>,
+ <a href="#V3.22_Interpreter">Interpreter</a>,
+ <a href="#V3.22_Streams">Streams</a>,
+ <a href="#V3.22_Library">Library</a>
+</ul>
+<li><a href="#Version3.21">Version 3.21 (beta) (11/17/94)</a>
+<ul>
+<li><a href="#V3.21_Documentation">Documentation</a>,
+ <a href="#V3.21_Procedures">Procedures</a>,
+ <a href="#V3.21_Utilities">Utilities</a>,
+ <a href="#V3.21_Drivers">Drivers</a>,
+ <a href="#V3.21_Platforms">Platforms</a>,
+ <a href="#V3.21_Fonts">Fonts</a>,
+ <a href="#V3.21_Interpreter">Interpreter</a>,
+ <a href="#V3.21_Streams">Streams</a>,
+ <a href="#V3.21_Library">Library</a>
+</ul>
+<li><a href="#Version3.20">Version 3.20 (beta) (10/31/94)</a>
+<ul>
+<li><a href="#V3.20_Documentation">Documentation</a>,
+ <a href="#V3.20_Procedures">Procedures</a>,
+ <a href="#V3.20_Utilities">Utilities</a>,
+ <a href="#V3.20_Drivers">Drivers</a>,
+ <a href="#V3.20_Platforms">Platforms</a>,
+ <a href="#V3.20_Fonts">Fonts</a>,
+ <a href="#V3.20_Interpreters">Interpreters</a>,
+ <a href="#V3.20_Library">Library</a>
+</ul>
+<li><a href="#Version3.13">Version 3.13(private) (10/3/94)</a>
+<ul>
+<li><a href="#V3.13_Documentation">Documentation</a>,
+ <a href="#V3.13_Procedures">Procedures</a>,
+ <a href="#V3.13_Utilities">Utilities</a>,
+ <a href="#V3.13_Drivers">Drivers</a>,
+ <a href="#V3.13_Platforms">Platforms</a>,
+ <a href="#V3.13_Fonts">Fonts</a>,
+ <a href="#V3.13_Interpreter">Interpreter</a>,
+ <a href="#V3.13_Streams">Streams</a>,
+ <a href="#V3.13_Library">Library</a>
+</ul>
+<li><a href="#Version3.12">Version 3.12 (9/29/94)</a>
+<ul>
+<li><a href="#V3.12_Documentation">Documentation</a>,
+ <a href="#V3.12_Procedures">Procedures</a>,
+ <a href="#V3.12_Drivers">Drivers</a>,
+ <a href="#V3.12_Platforms">Platforms</a>,
+ <a href="#V3.12_Interpreter">Interpreter</a>,
+ <a href="#V3.12_Streams">Streams</a>,
+ <a href="#V3.12_Library">Library</a>
+</ul>
+<li><a href="#Version3.1.1">Version 3.1.1 (9/25/94)</a>
+<ul>
+<li><a href="#V3.1.1_Documentation">Documentation</a>,
+ <a href="#V3.1.1_Procedures">Procedures</a>,
+ <a href="#V3.1.1_Drivers">Drivers</a>,
+ <a href="#V3.1.1_Platforms">Platforms</a>,
+ <a href="#V3.1.1_Interpreter">Interpreter</a>
+</ul>
+<li><a href="#Version3.1">Version 3.1 (9/20/94)</a>
+<ul>
+<li><a href="#V3.1_Documentation">Documentation</a>,
+ <a href="#V3.1_Procedures">Procedures</a>,
+ <a href="#V3.1_Drivers">Drivers</a>,
+ <a href="#V3.1_Interpreter">Interpreter</a>,
+ <a href="#V3.1_Streams">Streams</a>,
+ <a href="#V3.1_Library">Library</a>
+</ul>
+<li><a href="#Version3.0.3">Version 3.0.3 (9/16/94)</a>
+<ul>
+<li><a href="#V3.0.3_Documentation">Documentation</a>,
+ <a href="#V3.0.3_Procedures">Procedures</a>,
+ <a href="#V3.0.3_Utilities">Utilities</a>,
+ <a href="#V3.0.3_Drivers">Drivers</a>,
+ <a href="#V3.0.3_Platforms">Platforms</a>,
+ <a href="#V3.0.3_Fonts">Fonts</a>,
+ <a href="#V3.0.3_Streams">Streams</a>,
+ <a href="#V3.0.3_Interpreter">Interpreter</a>,
+ <a href="#V3.0.3_Library">Library</a>
+</ul>
+<li><a href="#Version3.02">Version 3.02 (8/30/94)</a>
+<ul>
+<li><a href="#V3.02_Documentation">Documentation</a>,
+ <a href="#V3.02_Procedures">Procedures</a>,
+ <a href="#V3.02_Utilities">Utilities</a>,
+ <a href="#V3.02_Drivers">Drivers</a>,
+ <a href="#V3.02_Platforms">Platforms</a>,
+ <a href="#V3.02_Fonts">Fonts</a>,
+ <a href="#V3.02_Interpreter">Interpreter</a>,
+ <a href="#V3.02_Streams">Streams</a>,
+ <a href="#V3.02_Library">Library</a>
+</ul>
+<li><a href="#Version3.01">Version 3.01 (8/14/94)</a>
+<ul>
+<li><a href="#V3.01_Documentation">Documentation</a>,
+ <a href="#V3.01_Procedures">Procedures</a>,
+ <a href="#V3.01_Utilities">Utilities</a>,
+ <a href="#V3.01_Drivers">Drivers</a>,
+ <a href="#V3.01_Platforms">Platforms</a>,
+ <a href="#V3.01_Fonts">Fonts</a>,
+ <a href="#V3.01_Interpreter">Interpreter</a>,
+ <a href="#V3.01_Streams">Streams</a>,
+ <a href="#V3.01_Library">Library</a>
+</ul>
+<li><a href="#Version3.0">Version 3.0 (8/1/94)</a>
+<ul>
+<li><a href="#V3.0_Documentation">Documentation</a>,
+ <a href="#V3.0_Procedures">Procedures</a>,
+ <a href="#V3.0_Utilities">Utilities</a>,
+ <a href="#V3.0_Drivers">Drivers</a>,
+ <a href="#V3.0_Platforms">Platforms</a>,
+ <a href="#V3.0_Fonts">Fonts</a>,
+ <a href="#V3.0_Interpreter">Interpreter</a>,
+ <a href="#V3.0_Streams">Streams</a>,
+ <a href="#V3.0_Library">Library</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a history of Ghostscript releases numbered 3.n. For more
+recent changes, see the the other history documents and, for the latest
+versions, the news:
+
+<blockquote>
+<a href="News.htm">News</a><br>
+<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
+History of Ghostscript versions 3.n (this document)<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] ============================================== -->
+
+<h2><a name="Version3.70p1"></a>Version 3.70 patch 1 (6/24/96)</h2>
+
+<p>
+This contains a few last-minute patches before the release.
+
+<h3><a name="V3.70p1_Procedures"></a>Procedures</h3><pre>
+Comments out the color inkjet drivers in the cc-based makefile, because a
+bug in Sun's cc prevents them from compiling. (cc-head.mak)
+
+</pre><h3><a name="V3.70p1_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The os2prn driver smashed memory. (gdevos2p.c)
+ - Some initialized structures weren't declared 'static'.
+(gdevpdf.c, gdevpdfm.c)
+ - The PNG driver wouldn't compile with some older versions of the
+PNG library. (gdevpng.c)
+
+</pre>
+
+<h2><a name="Version3.70"></a>Version 3.70 (limited) (6/23/96)</h2>
+
+<p>
+This is the candidate fileset for 4.0. Aside from one optimization
+for the PDF writer, the only changes are bug fixes.
+
+<h3><a name="V3.70_Documentation"></a>Documentation</h3><pre>
+
+Renames all the documentation files from *.doc to *.txt, since the .doc
+extension didn't give any information about the format of the file.
+(readme, *.doc, *.txt)
+
+Notes that IJG JPEG library v6[a] is now required. (jpeg.mak)
+
+Brings ps2pdf.1 up to date. (ps2pdf.1)
+
+Adds a new file describing Aladdin's C coding practices. (c-style.txt)
+
+Updates the man pages to refer to version 4.0. (gs.1, pdf2ps.1, ps2ascii.1,
+ps2pdf.1)
+
+</pre><h3><a name="V3.70_Procedures"></a>Procedures</h3><pre>
+
+Changes some file names to fit within the MS-DOS 8.3 limit. (gs.mak)
+
+Adds the PDF writer to the remaining 32-bit configurations (Watcom, OS/2,
+MSC). (watc.mak, watcwin.mak, os2.mak, msc.mak, msvcwint.mak)
+
+Changes the -sFONTMAP= switch so it can take a list of font names, like a
+search path. (use.txt)
+
+</pre><h3><a name="V3.70_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Signed and unsigned values were mixed inconsistently. (gdevcdj.c)
+ - PDF files could contain e-format floating point numbers, which the
+PDF specification doesn't allow. (gdevpdfx.h, gdevpdf*.c)
+ - The PDF writer didn't handle glyphshow properly. (gs_pdfwr.ps)
+ - The PDF writer did the wrong thing with fonts whose FontMatrix had
+a non-zero translation component. (gs_pdfwr.ps, gdevpdft.c)
+ - The stand-alone bounding box device could crash when setting
+parameters. (gdevbbox.c)
+ - The mswinpr2 driver smashed memory. (gdevwpr2.c)
+
+Changes the PDF writer so that if it encounters a re-encoded character, it
+tries to map it to an encoded character in the standard (ISO Latin-1)
+encoding rather than converting the entire string containing it to a bitmap.
+This dramatically improves output file size for files with a few divergently
+encoded characters, but it may cause the text in the PDF file to differ from
+the text in the PostScript input. (gdevpdft.c)
+
+Disallows BitsPerPixel=16 in the MS Windows and OS/2 drivers, since this bit
+depth is not supported by Windows and would require special extra buffering.
+(install.txt, dwtext.h, dwtext.cpp, gdevmswn.c, gdevpm.c, gdevwpr2.c)
+
+</pre><h3><a name="V3.70_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - On the PC platforms, file names weren't changed to reflect the
+value of CONFIG. (gs.mak, bc*.mak, ms*.mak, os2.mak, tc*.mak, watc*.mak,
+wccommon.mak)
+
+Modifies some makefiles for greater reusability. (bclib.mak, watclib.mak)
+
+</pre><h3><a name="V3.70_Fonts"></a>Fonts</h3><pre>
+
+Changes the font searching rules in the following NON-BACKWARD-COMPATIBLE
+way: (gs_fonts.ps, gs_res.ps)
+ - -sFONTMAP=files specifies a list of files containing fontmaps;
+previously, it specified only a single fontmap file.
+ - If -sFONTMAP= is not used, the interpreter reads the Fontmaps from
+*all* directories on the search path, and does so even if FONTPATH or
+GS_FONTPATH is set; previously, it read only the first Fontmap, and only if
+[GS_]FONTPATH was not set.
+ - Fontmap(s) take precedence over [GS_]FONTPATH; previously,
+[GS_]FONTPATH caused Fontmap to be ignored. (You can still force Fontmap to
+be ignored with -dNOFONTMAP.)
+ - Earlier [GS_]FONTPATH entries take precedence over later;
+previously, later entries took precedence over earlier. Note that this is
+different from Fontmap: earlier Fontmaps in the search path take precedence
+over later, but within a single Fontmap, later entries take precedence over
+earlier (for backward compatibility).
+ - [GS_]FONTPATH is consulted only if there is no Fontmap entry for a
+font, or no Fontmap entry leads to successful loading; previously,
+[GS_]FONTPATH was always consulted at startup.
+ - If loading a font fails, the interpreter tries the next Fontmap
+entry; previously, it fell back to font substitution.
+
+</pre><h3><a name="V3.70_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Filters didn't peek ahead for an EOD (see Streams below).
+(zfileio.c, zpaint.c)
+
+Splits up a file to allow internal access to user and system parameters even
+in Level 1. (zmisc2.c, zusparam.c)
+
+Adds LIBPATH as a predefined name in systemdict. Its value is an array of
+strings comprising the library search path. (imain.c)
+
+</pre><h3><a name="V3.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - A Dests dictionary entry with an array (rather than a dictionary)
+value caused an error. (pdf_main.ps)
+ - Rotated pages could have incorrect translation and/or clipping.
+(pdf_main.ps)
+
+</pre><h3><a name="V3.70_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If a buffer boundary fell just before an EOD, and the client read
+exactly as much data as was present before the EOD, filters didn't consume
+the EOD. (This is required as a tricky consequence of the Adobe
+specification.) (stream.h, strimpl.h, stream.c)
+
+</pre><h3><a name="V3.70_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An extra column of bits could get turned on at the right edge of
+masked or monochrome images. (gximage2.c)
+ - Rasterizing very long curves could cause arithmetic errors or
+floating point overflows. (gxpcopy.c)
+ - Banding with large line widths could truncate curves or introduce
+spurious lines. (gxclpath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.69"></a>Version 3.69 (limited) (6/14/96)</h2>
+
+<p>
+More bug fixes, plus one irresistible new feature: the ability to use
+TrueType fonts as freely as Type 1 fonts. Also, one new feature (outside
+clipping) that was needed for Aladdin's PCL XL project. We incremented the
+version number because of the change in trapezoid and path filling (see
+under Library below).
+
+<h3><a name="V3.69_Documentation"></a>Documentation</h3><pre>
+Brings documentation about fonts up to date. (fonts.doc)
+
+Updates current.doc to reflect changes since 3.53. (current.doc)
+
+Updates the DLL documentation to reflect recent changes. (dll.doc)
+
+Documents a workaround for the code generation bug in gcc 2.7.x. (make.doc)
+
+Changes the contact information for potential commercial customers in
+Europe. (new-user.doc)
+
+Updates the OS/2 documentation to make it current. (install.doc, make.doc)
+
+Documents -dCOLORSCREEN=0. (use.doc)
+
+</pre><h3><a name="V3.69_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make clean' didn't work in the Watcom environment.
+(wmakebat.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak, tccommon.mak,
+unixhead.mak, wccommon.mak)
+ - The X11 libraries were listed in an incorrect order.
+(ansihead.mak, cc-head.mak, gcc-head.mak, ugcclib.mak, unix-end.mak)
+ - The OS/2 makefile didn't ignore errors from `erase' commands.
+(os2.mak)
+
+Adds the PDF writer to the 32-bit MS Windows configuration. (bcwin32.mak)
+
+Adds the PNG drivers to the 32-bit MS Windows platform, since they now
+compile properly. (bcwin32.mak)
+
+Changes the ttfont feature so that it refers to support for direct usage of
+TrueType fonts; puts support for Type 42 fonts into a separate feature
+(type42). (gs.mak, int.mak)
+
+Adds direct TrueType font support to the Windows platforms. (bcwin.mak,
+bcwin32.mak)
+
+Rewrites vms.mak to be structured more like the other makefiles. (vms.mak,
+modules.lis)
+
+Makes the device lists in vms-*.mak the same as those for the Unix
+configurations. (vms-cc.mak, vms-decc.mak, vms-gcc.mak)
+
+Changes the default X library directory for gcc to /usr/X11/lib.
+(gcc-head.mak)
+
+Adds the list of devices to --help, since HylaFax depends on this.
+(imainarg.c)
+
+Adds -dCOLORSCREEN=0 to indicate use of 4 separate color screens with the
+same frequency and angle. (gs_init.ps)
+
+</pre><h3><a name="V3.69_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - When ps2epsi encountered a blank page, it called the
+(undocumented) .quit operator with only one argument, causing a stack
+underflow. (ps2epsi.ps)
+ - An extraneous file was included in the fileset. (checkacc.ps)
+ - A file was omitted from the fileset. (bench.c)
+ - Images in PostScript files produced by pdf2ps were processed about
+50 times slower than they should have been. (gs_pdf.ps)
+
+</pre><h3><a name="V3.69_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - An #include was omitted. (gdevpdfi.c)
+ - The BJC driver could get into an inconsistent state. (gdevcdj.c)
+ - Braces were omitted around the values for two initialized byte
+arrays. (gdevpcx.c)
+ - A function used 'float' in its argument list, causing problems in
+mixed ANSI/non-ANSI compilation. (gdevcdj.c)
+ - signed and unsigned char pointers were used inconsistently.
+(gdevcdj.c, gdevcgml.c)
+ - Some header files weren't protected against double inclusion.
+(gdevprn.h, gdevtifs.h)
+ - The 24-bit PNG driver included unnecessary copies of the color
+mapping procedures. (gdevpng.c)
+
+Fixes bugs in the PDF writer:
+ - The PDF writer sometimes produced a double // in front of a filter
+name. (gdevpdfi.c)
+ - The PDF writer produced zero-width, zero-height images for
+non-standard fonts. (bug introduced since 3.68) (gdevpdfi.c)
+ - The PDF writer got confused if the input file invoked
+setpagedevice. (gdevpdfp.c)
+ - The PDF writer put annotations on the page after the one they were
+supposed to be on. (gdevpdf.c)
+ - The PDF writer sometimes failed to set the font when needed.
+(gdevpdf.c)
+ - The PDF writer could produce in-line images that were too large.
+(gdevpdfi.c)
+ - The PDF writer didn't scale explicit character and word spacing
+(ashow/widthshow/awidthshow) properly. (gdevpdft.c)
+ - The PDF writer didn't copy named destination or article title
+strings, possibly leading to dangling pointers. (gdevpdf.c, gdevpdfm.c)
+ - The PDF writer produced incorrect output for re-encoded fonts.
+(It now converts any string containing characters in non-standard positions
+to bitmaps; this will be fixed in a later release.) (gs_pdfwr.ps,
+gdevpdfx.h, gdevpdfp.c, gdevpdft.c)
+
+Updates a few drivers for the change in the handling of band device
+procedures. (gdevcp50.c, gdevdjet.c)
+
+Updates the X Windows driver for strip halftones. (gdevx.c)
+
+Adds anti-aliasing capability to the os2pm device. (gdevpm.c)
+
+Increases the sizes of some tables in the PDF writer. (gdevpdfx.h)
+
+</pre><h3><a name="V3.69_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - A patch for the MS Windows platform was accidentally omitted.
+(gp_mswin.c)
+ - A block of code was accidentally duplicated. (dwmain.cpp)
+ - An identifier exceeded VAX VMS C's limit of 31 characters.
+(gscspace.h)
+ - File name enumeration didn't work properly on Unix systems
+(still/again). (gp_unifs.c)
+ - On MS Windows, If you closed Ghostscript with the system menu, you
+only closed the text window; Ghostscript kept running and you had to use the
+task manager to kill it. (dwmain.cpp, dwmainc.cpp, dwtext.cpp)
+ - Some DLL-related typedefs were not consistent. (dwdll.h, gsdll.h,
+dpmainc.c, dwdll.cpp)
+ - Attempts to call the DLL before it was initialized were not
+detected. (gsdll.c)
+ - Bitmap line lengths were rounded up even on 32-bit Windows, which
+doesn't want this. (gdevwdib.c)
+
+Further improves the handling of attempts to use the DLL when it is already
+in use. (dwdll.cpp, gsdll.c)
+
+Adds a DLL-compatible main program for OS/2. (dpmainc.c, gp_os2.c, gsdll.c)
+
+</pre><h3><a name="V3.69_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The WingDings TrueType font wasn't loaded properly. (gs_ttf.ps)
+
+Makes changes so that TrueType fonts can appear in the Fontmap and can be
+loaded directly. (gs_fonts.ps, gs_ttf.ps)
+
+</pre><h3><a name="V3.69_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Executing a .quit with only 1 element on the operand stack caused
+an invalid access. (zcontrol.c)
+ - The usage help message contained incorrect double %%s.
+(imainarg.c)
+ - If an initialization file tried to use any Encodings other than
+the 4 registered ones, it couldn't find them. (gs_init.ps, gs_res.ps)
+ - Places that expected arrays of coordinates (rectangles,
+x/y/xyshow) didn't accept packed arrays. (ibnum.c, zdps1.c)
+ - filterdict was still visible after initialization. (gs_init.ps)
+ - The usage error message wasn't terminated by a newline.
+(imainarg.c)
+ - setcacheparams (or setting the MaxFontCache user parameter) didn't
+actually affect the size of the character cache. (zfont.c, zmisc2.c)
+ - The main interpreter loop declared iref as a ref *, even though it
+may only be a ref_packed *. (iref.h, interp.c)
+
+Changes the character cache so it ignores absurd FontBBox values. Nothing
+in the Adobe spec suggests doing this, but it is necessary for handling
+questionable output produced by PageMaker 5.0 (an Adobe product!).
+(zchar1.c)
+
+Changes some type declarations slightly to reduce the number of 'discarding
+const' compiler warnings. (igc.h, igc.c, igcref.c)
+
+Adds .setclipoutside and .currentclipoutside operators for accessing the new
+outside clipping capability. (zpath.c)
+
+Adds the dictionary stack to the information printed in case of a fatal
+problem. (imain.c)
+
+Adds .set/currentrenderalgorithm operators for testing. (zrop.c)
+
+</pre><h3><a name="V3.69_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The TrueType rasterizer didn't map quadratic to cubic splines
+well, and didn't handle off-curve points at the end of a contour properly.
+(gstype42.c)
+ - An #include was omitted. (gsimage.c, gxclimag.c)
+ - Some compilers complained about statements with no effect, or
+comma operators with no effect on the left. (gschar.c, gxcpath.c, gxfill.c)
+ - TrueType or Type 42 glyphs with a repeat count that crossed a
+contour boundary produced incorrect output. (gstype42.c)
+ - TrueType / Type 42 composite glyphs involving rotation were placed
+incorrectly. (gstype42.c)
+ - Type 42 fonts with an absent or incorrect FontBBox could fail to
+produce output. (gstype42.c)
+ - Some header files weren't protected against double inclusion.
+(gsio.h, gdebug.h)
+ - Decoding filters didn't "look ahead" to detect EOD, so if the last
+read operation before closing the filter ended just before the EOD mark, the
+EOD mark might not be absorbed. (stream.h, stream.c)
+ - Filling paths consisting of multiple subpaths that overlap in Y
+produced slightly inaccurate output. We were unable to find a way to fix
+this without making a NON-BACKWARD-COMPATIBLE change in the interface for
+the recently introduced fill_trapezoid device procedure. (gxdevice.h,
+gdevbbox.c, gdevddrw.c, gdevnfwd.c, gxfill.c)
+ - When banding, get_bits didn't detect calls with out-of-range Y
+values. (gxclread.c)
+ - setcacheparams didn't actually affect the size of the character
+cache. (gsfont.h, gxbcache.h, gxfcache.h, gschar.c, gsfont.c, gxbcache.c,
+gxccman.c, gxclbits.c)
+ - When banding, colored halftones could be mangled. (gxclread.c)
+
+Fixes bugs in the bounding box device:
+ - The bounding box device could give bizarre results if any objects
+crossed the lower edge of the page. (gdevbbox.c)
+ - The bounding box device could get a memory access error when
+processing image data. (gdebbox.c)
+ - The bounding box device ran the default drawing algorithms even if
+it had no target (performance bug only). (gdevbbox.c)
+ - The bounding box device computed an incorrect (too small) box for
+partially clipped bitmap images. (gdevbbox.c)
+ - The bounding box device got confused by files that filled the
+entire page with a background color. (gdevbbox.c)
+ - The bounding box device produced infinite-height boxes for certain
+kinds of data. (gdevbbox.c)
+
+Changes some type declarations slightly to reduce the number of 'discarding
+const' compiler warnings. (gsmemory.h, gsstruct.h)
+
+Adds the capability of clipping to the outside rather than the inside of the
+clipping path. This is required for emulating an obscure feature of the
+Microsoft Windows GDI. (gspath.h, gxclpath.h, gxpath.h, gxcpath.h,
+gzcpath.h, gspath.c, gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c.)
+
+Makes it possible for band devices to select the underlying memory device
+used to accumulate the actual bits. This is required for (at least) PCL5
+emulation. This requires adding a procedure to the gx_device_printer
+structure, which, for devices that initialize the structure without using
+the macros in gdevprn.h or access the printer-specific procedures directly,
+is a NON-BACKWARD-COMPATIBLE change. (gdevprn.h, gxclist.h, gxdevice.h,
+gdevdflt.c, gdevprn.c, gxclread.c)
+
+Speeds up handling of rotated or halftoned masked images. (gximage2.c)
+
+Adds an output_page procedure to the bounding box device, for testing.
+(gdevbbox.c)
+
+Adds a sample device that keeps track of the "render algorithm", for PCL5c
+emulation. (gdevrrgb.c)
+
+</pre>
+
+<h2><a name="Version3.68p4"></a>Version 3.68 patch 4 (5/23/96)</h2>
+
+<p>
+More minor bug fixes, mostly related to the MS Windows implementation.
+
+<h3><a name="V3.68p4_Documentation"></a>Documentation</h3><pre>
+Further updates various doc files to make them more useful to new users.
+(NEWS, README, current.doc, helpers.doc, new-user.doc)
+
+Adds user-contributed documentation for ps2pdf. (ps2pdf.doc, unix-end.mak)
+
+Documents a bug in the Borland C++ 4.52 compiler, and where to find the
+patch for it. (make.doc)
+
+</pre><h3><a name="V3.68p4_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A command line exceeded the MS-DOS 120 character limit.
+(devs.mak)
+
+A file was accidentally omitted from the fileset. (wmakebat.bat)
+
+</pre><h3><a name="V3.68p4_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Many of the 'show' operators didn't work properly if the PDF
+writer was included in the configuration. (gs_pdfwr.ps)
+ - x_wrap_get_bits was ridiculously slow. (It still is, but not
+quite as ridiculously.) (gxcindex.h, gdevxalt.c)
+ - The PDF writer generated CR instead of CalRGB, which is legal per
+the Adobe spec but not compatible with some Adobe Acrobat products.
+(gdevpdfi.c)
+ - Some signed/unsigned discrepancies caused compilation warnings.
+(gdevpdfm.c, gdevpdfp.c, gdevpdft.c)
+
+Fixes bugs in the Windows driver:
+ - An accidentally opened tiny window didn't get closed.
+(gdevwdib.c)
+ - The name DllInit was misleading, and this procedure wasn't being
+called whtn the DLL was loaded, so the DLL couldn't know the instance
+handle. (gp_mswin.c)
+ - The code didn't recognize Win32s (vs. Windows 95) correctly.
+(dwmain.cpp, gdevwdib.c, gp_mswin.h, gp_mswin.c, gsdll16.rc)
+ - Some compiler warnings needed fixing. (gdevwdib.c)
+ - gsdll16.def and gsdll32.def were different. (gsdll32.def)
+ - A GPF leaving the 16-bit DLL loaded could make the DLL permanently
+unusable. (dwmain.cpp)
+ - Two obsolete files were still included in the fileset.
+(gswin.def, gswin32.def)
+
+Adds a compile-time option to the 'bit' drivers to expand 4-bit pixels to
+32-bit. This was required for tracking down customer problems, because the
+only tools we have available for displaying CMYK images require 32 bits per
+pixel. (gdevbit.c)
+
+</pre><h3><a name="V3.68p4_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - In DEC C, &lt;time.h&gt; does define the timeval struct. (time_.h)
+
+Changes gsdll_init() to take an additional argument, a window handle. This
+is a NON-BACKWARD-COMPATIBLE change. (dll.doc, dwdll.h, gsdll.h, dwdll.cpp,
+dwmain.cpp, dwmainc.cpp, gsdll.c)
+
+</pre><h3><a name="V3.68p4_Fonts"></a>Fonts</h3><pre>
+
+Updates more Fontmaps to include the new URW++ fonts. (Fontmap.OS2,
+Fontmap.ATM)
+
+</pre><h3><a name="V3.68p4_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The default operator array table wasn't big enough. (iinit.c)
+ - Some signed/unsigned discrepancies caused compilation warnings.
+(imain.c, imainarg.c, zfile.c)
+
+Adds encoding vectors for Windows 3.1 Latin 1, Latin 2, and Latin 5
+encodings. None of these are loaded in the standard configuration.
+(gs_wl{1,2,5}_e.ps)
+
+</pre><h3><a name="V3.68p4_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some tracing output was incorrect or missing. (gxdither.c)
+ - Resized objects in the C heap had incorrect bookkeeping
+information (bug introduced in 3.68). (gsmemory.c)
+ - Image pixels that fell exactly on device half-pixel boundaries
+could get discarded. (gximage0.c)
+ - The bounding box device didn't set a variable properly and didn't
+implement end_image, leading to invalid memory accesses. (gdevbbox.c)
+ - Fonts with BuildChar routines written in C didn't work properly
+with kshow or xyshow. (gschar.c)
+
+Adds some additional tracing output for Patterns. (gxpcmap.c)
+
+Adds tracing output for freeing malloc'ed blocks at the end of execution.
+(gsmemory.c)
+
+Adds a gs_dashpath procedure that expands dashes in the same way that
+gs_flattenpath expands curves. (gspath.h, gspath1.c)
+
+</pre>
+
+<h2><a name="Version3.68p3"></a>Version 3.68 patch 3 (5/17/96)</h2>
+
+<p>
+More bug fixes during the beta test period. AccurateScreens now works
+properly.
+
+<h3><a name="V3.68p3_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The help message was too long to fit on a PC screen or standard
+terminal. (imainarg.c)
+ - Failure to run tar_cat wasn't detected. (unix-end.mak,
+unixtail.mak)
+
+</pre><h3><a name="V3.68p3_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - In the PostScript files produced by pdf2ps, images using ASCII85
+encoding would cause a typecheck error. (gs_pdf.ps)
+ - pdf2ps wrote out strings longer than 200 characters incorrectly.
+(pdf_2ps.ps)
+
+</pre><h3><a name="V3.68p3_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs in gdevcdj.c (according to the author, we have no way to test
+this):
+ - The driver used to use Colors as well as ProcessColorModel to
+define the process color model. (devices.doc, gdevbjc.h, gdevcdj.c)
+ - Incorrect or inconsistent settings of BitsPerPixel and
+ProcessColorModel, or setting one but not the other, could leave the driver
+in an inconsistent state. (gdevcdj.c)
+
+Fixes bugs in the MS Windows driver:
+ - Insufficient memory for the backing bitmap could cause a GPF.
+(gdevmswn.c, gdevwdib.c)
+ - Invalid parameters could cause a crash within the DLL code.
+(gdevwdib.c)
+
+Adds a user-contributed driver for the CalComp Raster Format. (devs.mak,
+gdevccr.c)
+
+Adds an anti-aliasing option for MS Windows. (gdevmswn.c, gdevwdib.c)
+
+</pre><h3><a name="V3.68p3_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs in the Windows platform:
+ - One had to type "quit" twice to exit. (dwdll.h, dwdll.cpp)
+
+</pre><h3><a name="V3.68p3_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Platform fonts didn't work properly if the document's primary
+encoding was the standard MS Windows encoding. (ifont.h, gs_wan_e.ps)
+ - stringwidth with a Type 1 font could give a spurious typecheck
+error (bug introduced in 3.65). (zcharout.c)
+ - If a DOS editor added a ^Z to the end of the Fontmap file, an
+error occurred during initialization. (gs_fonts.ps)
+ - Halftones that didn't specify a value for AccurateScreens
+sometimes ignored the setting of the AccurateScreens user parameter.
+(zht2.c)
+
+</pre><h3><a name="V3.68p3_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_join_none was defined, but not implemented. (gxstroke.c)
+ - A bookkeeping list for fonts could get confused, causing invalid
+memory accesses. (gsfont.c)
+ - An I/O error or internal error would cause the band list
+rasterizer to go into an infinite loop. (gxclread.c)
+ - The algorithm for choosing screen angles and frequencies produced
+poor results. (gshtscr.c)
+ - Color screens were broken (bug introduced in 3.68). (gxdht.h,
+gzht.h, gsht.c, gshtscr.c)
+
+</pre>
+
+<h2><a name="Version3.68p2"></a>Version 3.68 patch 2 (5/13/96)</h2>
+
+<p>
+This is another set of patches for the next general release.
+
+<h3><a name="V3.68p2_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Windows NT and Windows 95 implementations were identified as
+"under development" rather than available. (README)
+ - There were several other minor errors in the README file.
+(README)
+ - The claimed current IJG JPEG version was incorrect. (jpeg.mak)
+
+Splits off information for new users into a separate file. (README,
+new-user.doc)
+
+</pre><h3><a name="V3.68p2_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - gettimeofday takes 2 arguments on SVR4 systems more recent than
+SVR4.0. (make.doc, ansihead.mak, cc-head.mak, gcc-head.mak, time_.h)
+
+Changes the default Unix data installation directory from /usr/local/lib to
+/usr/local/share, which seems to be favored by more recent Unix systems
+(except for some GNU/Linux versions, which still use /usr/local/lib, and BSD/OS,
+which puts Ghostscript in /usr/contrib/lib.) (ansihead.mak, cc-head.mak,
+gcc-head.mak, ugcclib.mak)
+
+Changes the unset commands in the Unix script to assignments, because a few
+older Unix shells don't provide unset. (unixtail.mak)
+
+</pre><h3><a name="V3.68p2_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - An #include incorrectly referred directly to a system header.
+(gdevpdft.c)
+ - CMYK devices took an excessive amount of time clearing the page to
+white. (gdevm32.c)
+
+Adds a compile-time option to the 'bit' drivers to remove top and bottom
+whitespace. This change was required in order to track down a customer bug.
+(gdevbit.c)
+
+</pre><h3><a name="V3.68p2_Interpreter"></a>Interpreter</h3><pre>
+
+Updates the interpreter for the split in the gstate API. (igstate.h)
+
+</pre><h3><a name="V3.68p2_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Some compilers don't define NULL widely enough. (spngp.c)
+
+</pre><h3><a name="V3.68p2_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was a minor typo (&amp; for &amp;&amp;) that didn't affect execution.
+(gxccman.c)
+ - There was a trailing comma in an enumeration. (gsiparam.h)
+ - Internal and public interfaces weren't separated properly. THIS
+IS A NON-BACKWARD-COMPATIBLE CHANGE for clients using certain undocumented
+interfaces to the graphics state. (gsstate.h, gxstate.h, gzstate.h,
+gsstate.c)
+ - A 'private' declaration was missing (yet again). (gxclimag.c)
+
+</pre>
+
+<h2><a name="Version3.68p1"></a>Version 3.68 patch 1 (5/10/96)</h2>
+
+<p>
+This is the first bug fix (patch) incremental release for the next
+general release.
+
+<h3><a name="V3.68p1_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - Many Windows-specific files were omitted from the previous
+fileset: dw*.rc, dw*.cpp.
+
+</pre>
+
+<h2><a name="Version3.68"></a>Version 3.68 (limited) (5/9/96)</h2>
+
+<p>
+This release cleans up the new Windows files, mostly implements the
+high-level driver API for bitmap images, and adds practical strip
+(AccurateScreens) halftoning. This is the first "serious beta" fileset for
+the next general release. It still has more problems than I would have
+liked.
+
+<h3><a name="V3.68_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The names of the executable files for MS Windows were out of date.
+(make.doc)
+ - gxcindex.h still referred to "drawing color". (gxcindex.h)
+ - The name of the default font directory for Unix systems was
+incorrect. (make.doc)
+
+Moves the list of files required for installation, and some other
+installation instructions, from make.doc to install.doc. (install.doc,
+make.doc)
+
+Adds a description of the PNGPredictor filters. (language.doc)
+
+Updates the documentation of the higher-level driver procedures to match the
+specification changes. (drivers.doc)
+
+Documents the change in the Watcom build procedure. (make.doc)
+
+Improves the documentation of bitmap IDs. (gxbitmap.h)
+
+Adds documentation for the new strip_tile_rectangle and strip_copy_rop
+driver procedures. (drivers.doc)
+
+Changes the few remaining direct FTP addresses in README to URLs. (README)
+
+Notes that zlib does not compile correctly on IRIX 6.n with optimization.
+(make.doc)
+
+Adds references to PDF and TrueType fonts to language.doc. (language.doc)
+
+Updates fonts.doc to remove references to fonts.mak. (fonts.doc)
+
+Describes how to substitute an LZW compressor for the LZW-compatible
+compressor provided in the standard release. (make.doc)
+
+</pre><h3><a name="V3.68_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some lines had exceeded the 120-character limit of the
+MS-DOS shell. (int.mak)
+ - The configuration files weren't generated correctly when CONFIG
+wasn't an empty string. (unixhead.mak)
+
+Factors out shared DLL makefile rules into a new file. (bcwin.mak,
+bcwin32.mak, dwcommon.mak)
+
+Makes the cp and rm commands into makefile parameters, allowing automatic
+generation of build scripts even in the MS-DOS and MS Windows environments
+where the shell requires the CALL command for sub-scripts. (*.mak,
+genconf.c)
+
+Adds the PDF writer to the default Unix configurations. (ansihead.mak,
+cc-head.mak, gcc-head.mak)
+
+Adds TrueType support to all Level 2 configurations. (int.mak)
+
+Removes fonts.mak, which is no longer relevant. (fonts.mak)
+
+Brings the font compilation procedures up to date. (cfonts.mak, int.mak)
+
+</pre><h3><a name="V3.68_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - There was an extra 'show' in one file. (align.ps)
+
+</pre><h3><a name="V3.68_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The bit devices were missing the map_color_rgb procedure.
+(gdevbit.c)
+ - The MS Windows driver sent a redundant message. (gdevmswn.c)
+
+Adds a device that keeps track of the page bounding box. This device is not
+included in any standard configuration. (drivers.doc, gdevbbox.h,
+gsmatrix.h, gsstruct.h, gxdevice.h, gdevbbox.c, gdevnfwd.c, gsmatrix.c)
+
+Updates the PDF writer to track the changes in the high-level driver API,
+and to write out images in a reasonable way. NOTE: the current
+implementation doesn't write out CIE color space parameters, so CIE-color
+images won't be colored accurately. (gdevpdf.c, gdevpdfi.c)
+
+Adds a forwarding procedure for tile_rectangle. (gxdevice.h, gdevnfwd.c)
+
+Changes the copyright notices on the PDF writer to be the same as on the
+rest of Ghostscript. (gdevpdf*.[ch])
+
+Updates Gunther Hess's Epson Stylus Color driver from 1.21 to 1.90. (Aladdin
+Enterprises takes no responsibility for this driver: if you have questions,
+contact the author.) (devices.doc, devs.mak, gdevstc*.c, gdevstc.h)
+
+</pre><h3><a name="V3.68_Platforms"></a>Platforms</h3><pre>
+
+Removes some obsolete MS Windows files and #defines. (gp_mswtx.h,
+gp_mswtx.c, gp_mswin.h)
+
+Works around a memory limitation in the Watcom make utility. (wmakebat.bat)
+
+</pre><h3><a name="V3.68_Fonts"></a>Fonts</h3><pre>
+
+Changes the standard Fontmap from using the low-quality fonts converted from
+bitmaps to using high-quality fonts recently contributed by URW++.
+(Fontmap, Fontmap.GS)
+
+</pre><h3><a name="V3.68_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A macro containing an if-else, and a macro generating a compound
+statement, could cause incorrect grouping of 'if' statements. (files.h,
+ostack.h)
+ - .setrasterop didn't pop its operand. (zrop.c)
+ - A rounding inaccuracy could cause bounding box rangecheck errors.
+(gsdps1.c)
+ - CIE-based images in PDF files didn't work. (gs_pdf.ps)
+ - The page parameter .MediaSize didn't get updated when PageSize was
+set. (This is just the most recent manifestation of the setpagedevice
+morass.) (gs_setpd.ps)
+ - %lineedit and %statementedit were limited to 160 characters.
+(zfileio.c, ziodev.c)
+ - Compiled initialization files didn't work properly. (geninit.c,
+gs_l2img.ps)
+ - Attempting to parse a command line with argc = 0 caused a crash.
+(imainarg.c)
+
+Renames some files to allow separating the non-DLL 'main' procedure into a
+separate file, and to make the file naming more consistent:
+ gs.c (except for 'main') =&gt; imainarg.c
+ gsmain.c =&gt; imain.c
+gs.c now consists only of 'main'. The name gs.c is still inconsistent (it
+should be i- something), but at least it's consistent with the name of the
+executable. (*.mak, imain.h, iminst.h, imainarg.h, gs.c, gsmain.c, imain.c,
+imainarg.c)
+
+Adds PNGPredictorEncode/Decode filters, and increases the size of filterdict
+slightly to make room for them. (iinit.c, zfpngp.c)
+
+Makes zwrite external, per a customer request. (opextern.h, zfileio.c)
+
+Updates clients to work with the new API-based bitmap imaging calls.
+(iimage.h, zcolor1.c, zimage2.c, zpaint.c)
+
+Updates clients for the split in gscspace.h. (zcie.c, zcolor1.c, zcolor2.c,
+zcsindex.c, zcssepr.c, zimage2.c, zpaint.c, zpcolor.c)
+
+Updates clients for strip-based halftones. (zpcolor.c)
+
+Updates the initialization code to pass the correct (system) allocator to
+the library initialization. (imain.c)
+
+</pre><h3><a name="V3.68_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If a filter reached EOD exactly at the end of reading data for
+certain operations, it didn't get closed automatically. (stream.c)
+ - The LZW-compatible encoding filter reset procedure had an
+incorrect return type. (slzwce.c)
+
+Changes the ASCIIHexEncode filter to insert \ns in fewer places, to be
+somewhat more compatible with the Adobe implementation. (sstring.c)
+
+Adds PNGPredictorEncode/Decode filters that implement the pixel prediction
+algorithms in the PNG specification. (We'd like to use the code in the PNG
+library, but it's too deeply embedded in the rest of the PNG machinery, and
+it also doesn't provide for suspendable I/O.) (spngpx.h, spngp.c)
+
+</pre><h3><a name="V3.68_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A test for pure color was backwards, causing garbage output or
+possible address or floating point exceptions. (gxclpath.c)
+ - A macro containing an if-else could cause incorrect grouping of
+'if' statements. (gsrefct.h)
+ - The default implementation of RasterOp didn't handle the device
+depth correctly. (gdevmrop.c)
+ - The memory device implementation of RasterOp truncated 24-bit
+constant source or texture values to 8 bits. (gdevmrop.c)
+ - A typo caused the garbage collector to miss an internal buffer
+used when rendering images. (gximage.h)
+ - gs_debug_out was only defined if DEBUG was set. (gdebug.h)
+ - The raster of horizontally replicated tiles was incorrect.
+(gxht.c)
+ - A data type might not be declared, causing a compilation error.
+(gscoord.h)
+ - Empty TrueType glyphs weren't handled properly. (gstype42.c)
+ - Fonts with a build procedure written in C could cause an invalid
+memory access. (gschar.c)
+ - The initial point of a band list path sometimes didn't get
+written, causing excess or missing filled regions. (gxclpath.c)
+ - Characters between 49 and 56 bits wide were rendered incorrectly
+when banding. (gxclbits.c)
+
+Renames gsimage*.c as gximage*.c, to reflect more accurately the position of
+these files in the architecture. (gsimage*.c, gximage*.c)
+
+Fully implements the high-level bitmap image calls in the driver API. This
+includes some driver API changes; however, this part of the API was clearly
+documented as not stable enough to rely on. (gxdevice.h, gximage.h,
+gdevbbox.c, gdevddrw.c, gdevnfwd.c, gsimage.c, gximage*.c)
+
+Splits the color space header into client and implementation, as with many
+others. (gscspace.h, gxcspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
+gscolor2.c, gscsepr.c, gsimage.c, gspcolor.c, gsstate.c, gxcmap.c,
+gxpcmap.c)
+
+Extends band lists to handle high-level images. NOTE: This facility is
+patched out because there is not yet a way to pass the necessary color
+rendering information through the band list. (gxcldev.h, gxclist.h,
+gxclpath.h, gxclimag.c, gxclist.c, gxclpath.c, gxclread.c)
+
+Implements fixed2float and float2fixed more efficiently on machines with
+slow floating point. (gxfixed.h, gscoord.c, gsmisc.c)
+
+Makes one further NON-BACKWARD-COMPATIBLE change in the existing
+higher-level driver procedures (fill_path, stroke_path, fill_mask): we make
+the imager state pointer an explicit argument, rather than a member of the
+gx_fill/stroke_params structure. We now consider the specification of these
+procedures stable, and have removed the "subject to change" notice from the
+documentation. (gxdevice.h, gxpaint.h, gdevbbox.c, gdevnfwd.c, gxacpath.c,
+gxclpath.c, gxclread.c, gxfill.c, gxpaint.c, gxstroke.c)
+
+Extends halftone bitmaps to include "strip" and "shift" information,
+allowing halftone cells with arbitrary angles to be stored in space
+proportional to the number of bits in the cell rather than the square of the
+number of bits. This requires adding new (optional) strip_tile_rectangle
+and strip_copy_rop driver procedures that are like tile_rectangle and
+copy_rop respectively but accept a strip bitmap rather than an ordinary
+tile; these procedures supersede tile_rectangle and copy_rop (although these
+also remain, defined in terms of the new ones). This also requires making
+small but NON-BACKWARD-COMPATIBLE changes in several internal interfaces.
+(gdevmem.h, gdevprn.h, gsdcolor.h, gxbcache.h, gxbitmap.h, gxcldev.h,
+gxclip2.h, gxclist.h, gxdevice.h, gxdevrop.h, gxdht.h, gxfcache.h,
+gxhttile.h, gxpcolor.h, gzht.h; gdevabuf.c, gdevbbox.c, gdevdflt.c,
+gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c, gsht.c, gsht1.c, gshtscr.c,
+gspcolor.c, gsstate.c, gxcht.c, gxclbits.c, gxclip2.c, gxclist.c,
+gxclpath.c, gxclread.c, gxcpath.c, gxdcolor.c, gxdither.c, gxht.c,
+gximage2.c, gxpcmap.c, ...)
+
+Adds "no join" as a line join type. NOTE: this is not actually implemented
+yet. (gslparam.h)
+
+Changes the initialization code so that it passes the system allocator as an
+argument to module initialization procedures. While this is theoretically a
+NON-BACKWARD-COMPATIBLE change, module initialization procedures are not
+documented and presumably are not used by any code outside the
+implementation. (gscdefs.h, gconf.c, gdevmrop.c, gsinit.c, gxclimag.c,
+gxclpath.c)
+
+Splits up gs_lib_init into two procedures, allowing specification of a
+different default allocator for the library. (gslib.h, gsinit.c)
+
+Adds a resize_object operation to the allocator API. (gsmemory.h,
+gsalloc.c, gsmemory.c)
+
+</pre>
+
+<h2><a name="Version3.67"></a>Version 3.67 (limited) (4/12/96)</h2>
+
+<p>
+This release restructures the MS Windows and OS/2 code to be primarily DLL-
+rather than EXE-based. See under Platforms below for more news. This
+release was put out in a hurry in order to get the new DLL code into
+testers' hands; it has more rough edges than usual.
+
+<h3><a name="V3.67_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A definition &amp; use comment was incorrect. (scanchar.h)
+ - William Bader's e-mail address was wrong. (README)
+
+Adds documentation for the new begin_image, image_data, and end_image
+procedures. THIS INTERFACE IS STILL SUBJECT TO CHANGE. (drivers.doc)
+
+</pre><h3><a name="V3.67_Procedures"></a>Procedures</h3><pre>
+
+Renames all the *core.dev modules as *lib.dev. (int.mak, *lib.mak, vms.mak,
+gdevmrop.c)
+
+Updates all the remaining makefiles to IJG JPEG version 6a. (*.mak)
+
+Moves the configuration parameter definitions from gconf.c to a new file
+gscdefs.c. (bcwin*.mak, *lib.mak, gs.mak, int.mak, lib.mak, unixtail.mak,
+vms.mak, gconf.c, gscdefs.c)
+
+</pre><h3><a name="V3.67_Platforms"></a>Platforms</h3><pre>
+
+Restructures the MS Windows and OS/2 code to be primarily DLL- rather than
+EXE-based. This involves two minor NON-BACKWARD-COMPATIBLE changes to the DLL
+interface, documented near the end of dll.doc:
+
+ - Adding argv and argc as arguments to gsdll_init.
+
+ - Adding a new message type, GSDLL_POLL, to the callback procedure.
+
+(bcwin*.mak, devs.mak, os2.mak, dll.doc, install.doc, dw*.*, gsdll*.*,
+gdevms*.*, gdevpm.c, gdevw*.c, gp_mswin.c, gp_os2.c, gsos2.def, gswin.rc)
+
+Adds the BMP drivers to the Watcom platform. (watc.mak)
+
+</pre><h3><a name="V3.67_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - gs.c assumed the presence of stdio. (gs.c)
+
+Defines a new API entry point that is the equivalent of command line
+invocation. (imain.h, imainarg.h, gs.c)
+
+Changes clients to conform to the changes in gsimage.h. (zimage2.c,
+zpaint.c)
+
+Speeds up the search operator slightly. (zstring.c)
+
+</pre><h3><a name="V3.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If the PDF interpreter was present, running a PostScript file
+didn't close the file properly if it caused an error. (pdf_main.ps)
+
+Speeds up embedded font loading by making an internal buffer bigger.
+(pdf_font.ps)
+
+</pre><h3><a name="V3.67_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There could be some non-zero garbage between the width and the
+next multiple of bitmap_align_mod for copy_alpha. (The driver API
+specification explicitly allows this, but it upset one customer.)
+(gxccman.c)
+ - Nibble-swapped alpha values could be displaced in memory by one
+pixel, damaging the output. (gdevabuf.c)
+
+Makes further changes towards adding high-level bitmap image calls to the
+driver API. This includes the following minor NON-BACKWARD-COMPATIBLE
+changes to the interface defined in gsimage.h:
+
+ - changing MultipleDataSources from a member of the gs_image_t
+ structure to an argument of gs_image_init;
+
+ - changing the default image parameter values from constant
+ structures to procedures that initialize the structure.
+
+As far as we know, this doesn't affect any existing client code.
+(gsimage.h, gsiparam.h, gxdevice.h, gdevddrw.c, gdevnfwd.c, gsimage.c,
+gspcolor.c, gxccache.c)
+
+Removes an unnecessary level of call for path filling. (gxpaint.h,
+gxfill.c, gxpaint.c)
+
+</pre>
+
+<h2><a name="Version3.66"></a>Version 3.66 (limited) (4/8/96)</h2>
+
+<p>
+This release adds support for TrueType fonts and Type 42 (encapsulated
+TrueType) PostScript fonts. The MS Windows driver now interacts properly
+with the garbage collector. This release also includes a new, high-quality
+set of free fonts.
+
+<h3><a name="V3.66_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The list of generic makefiles had gotten out of date. (make.doc)
+
+Adds a mention of the bmv program, created by a user and available under the
+GPL. (README)
+
+Notes that a bug in gcc 2.7.x prevents these versions from compiling
+Ghostscript. (make.doc)
+
+Clarifies the meaning of "inverted" masks. (gsimage.h)
+
+Improves the documentation of the stack sizing parameters. (interp.c)
+
+Improves the documentation of the copy_rop driver procedure.
+(drivers.doc)
+
+Notes that all subclasses of gx_device must explicitly include the
+device_finalize finalization procedure. (gxdevice.h)
+
+Updates the documentation of the high-level driver API to reflect the change
+in gx_drawing_color, and the addition of the new polygon and image drawing
+procedures. (drivers.doc)
+
+Updates the documentation for building zlib and libpng. (make.doc)
+
+</pre><h3><a name="V3.66_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The environment space overflowed on some inferior Unix systems.
+(unixtail.mak)
+
+Adds a ttfont.dev "feature" for including the TrueType interpreter and the
+ability to handle Type 42 fonts. A new procedure, .loadttfont, allows
+loading a TrueType font directly (by converting it to a Type 42 on the fly).
+(gs.mak, int.mak, lib.mak)
+
+Updates the makefiles and procedures to libpng 0.88 and zlib 1.0.
+(libpng.mak, zlib.mak)
+
+</pre><h3><a name="V3.66_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - pdf2ps could produce lines longer than 255 characters.
+(pdf_2ps.ps)
+
+Removes some unnecessary and error-inviting code from pdf2dsc. (pdf2dsc.ps)
+
+Updates lines.ps to test the new stroke code more fully. (lines.ps)
+
+Allows omitting the second argument of ps2pdf, as for ps2epsi. (ps2pdf)
+
+</pre><h3><a name="V3.66_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A routine was incorrectly declared "private". (I wish gcc caught
+this!) (gdevpdf.c)
+ - A 'const' was omitted in a parameter list. (gdevpdfp.c)
+ - Some imported procedures didn't have prototypes declared.
+(gdevpdft.c)
+ - The ProcSet list for PDF files didn't include Text when it was
+needed. (gdevpdfx.h, gdevpdf.c, gdevpdft.c)
+ - Text in PDF output ignored the color setting. (gs_pdfwr.ps,
+gdevpdft.c)
+ - Text in PDF output could be positioned incorrectly. (gdevpdft.c)
+ - pdfmarks could produce an error when producing PDF output.
+(gs_pdfwr.ps)
+
+Slightly improves the text output of the PDF writer. (gs_pdfwr.ps,
+gdevpdft.c)
+
+Defines driver procedures for filling trapezoids (with the parallel edges
+parallel to a coordinate axis), parallelograms (with arbitrary orientation),
+triangles (ditto), and minimum-width lines (ditto). (Note that the last of
+these obsoletes the former draw_line procedure.) (gdevmem.h, gdevprn.h,
+gxdevice.h, gxdraw.h (deleted), gdevddrw.c, gdevdflt.c, gdevht.c,
+gdevnfwd.c, gsimage[12345].c, gxacpath.c, gxclist.c, gxclip2.c, gxcpath.c,
+gxdraw.c (deleted), gxfill.c, gxpcmap.c, gxstroke.c)
+
+Adds "sketched" driver procedures for high-level bitmap / pixmap image
+drawing. In this release, the argument lists are incomplete, and the
+procedures are stubs: don't try to use them! [see previous entry]
+
+Changes the screen update strategy for the X Windows driver from a
+compile-time option to a settable run-time variable. (gdevx.c)
+
+Patches around a problem with libpng 0.88 that can't be fixed without
+editing a configuration file. (gdevpng.c)
+
+</pre><h3><a name="V3.66_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - %g formats with sscanf don't work on NeXT systems. (gdevpdft.c,
+iutil.c, zdouble.c)
+ - getenv could be declared inconsistently. (gp_unix.c)
+
+</pre><h3><a name="V3.66_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The Type 1 font interpreter sometimes set the flatness too large.
+(gstype1.c)
+ - Fonts defined by definefont could never be garbage collected.
+(gsstruct.h, gxfcache.h, gxfont.h, gxfont0.h, gxfont1.h, gsfont.c,
+gsfont0.c)
+ - Type 0 fonts weren't garbage collected properly. (gsfont0.c)
+ - Compiled fonts caused a compilation error (bug introduced in
+3.65). (ifont.h)
+ - If a Type 1 font used hint replacement, hints could be applied
+more than once, distorting the character shape. (gxtype1.h, gxhint3.c)
+ - Oversampling wasn't applied to large enough characters.
+(gschar.c)
+
+</pre><h3><a name="V3.66_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The scanner accepted /[, /], /&lt;&lt;, and /&gt;&gt; as literal names (and
+similarly for //). It isn't obvious from the Red Book, but the Adobe
+implementations don't accept these. What a nuisance! (gs_btokn.ps,
+gs_init.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps, iscan.c)
+ - A spurious stackoverflow could occur under unusual conditions.
+(istack.c)
+ - The values of OrigFont and ScaleMatrix in scaled fonts reflected
+only the most recent scaling operation, not the original font and the
+combined scaling operation. (zfont.c)
+ - The default size of systemdict had become slightly too small.
+(iinit.c)
+ - Type 1 characters defined by PostScript procedures were called
+incorrectly. (zcharout.c)
+
+Removes the papersize operator from statusdict, since it is not documented
+anywhere in the Adobe literature and didn't interact properly with the
+various ways of setting the page size. (gs_statd.ps)
+
+Changes the one client of sskip to match the changed API. (zpaint.c)
+
+Changes clients to reflect the creation of sstring.h. (iscan.h, zfilter.c)
+
+Adds PSStringEncode as an accessible filter. (zfilter.c)
+
+Adds support for TrueType and Type 42 fonts. (gs_fonts.ps, gs_ttf.ps,
+gs_typ42.ps, bfont.h, icharout.h, ifont.h, zchar1.c, zchar42.c, zcharout.c,
+zfont1.c, zfont2.c, zfont42.c)
+
+Adds a few ANSI sheet sizes (commented out, for documentation only).
+(gs_statd.ps)
+
+</pre><h3><a name="V3.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Clients who called pdfopen/close rather than runpdf could get an
+error (PSLevel1 undefined). (pdf_main.ps)
+ - Some masked images were displayed with black and white inverted.
+(gs_pdf.ps)
+ - In Level 1 output produced by pdf2ps, images caused a syntaxerror.
+(gs_pdf.ps)
+ - If a PDF file had multiple xref sections and later sections added
+new objects, an error occurred. (pdf_main.ps)
+ - Some very old Level 1 interpreters couldn't deal with a file
+object embedded in a procedure. (gs_pdf.ps)
+
+</pre><h3><a name="V3.66_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The PSStringEncode filter didn't always produce printable 7-bit
+output. (sstring.c)
+ - The CCITTFaxDecode filter didn't implement DamagedRowsBeforeError.
+(scfx.h, scfd.c)
+ - Interpolated images displayed nothing if the data stream ended
+before the image height was reached. (siscale.h, gsimage5.c, siscale.c)
+
+Changes the sskip stream procedure so that it takes an additional argument
+where it returns the actual number of bytes skipped. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE in the API. However, as far as we know,
+there are no external clients of this procedure. (stream.h, stream.c)
+
+Splits up sfilter.h so that the headers correspond more directly with the
+implementations. (sfilter.h, sstring.h, sstring.c)
+
+</pre><h3><a name="V3.66_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The default device in the library configuration was device 1, not
+device 0. (bclib.mak, ugcclib.mak, watclib.mak, gslib.c)
+ - Patterns could be rendered with small gaps between them.
+(gspcolor.c)
+ - Large characters could render inaccurately because of a numerical
+boundary condition. (gxpcopy.c)
+ - The show_gstate pointer in the graphics state was not managed
+properly, possibly leading to dangling pointers or GC errors. (gsstate.c)
+ - Bitmaps could get shifted to the left if ALPHA_LSB_FIRST was
+selected (bug introduced in 3.53). (gsbitops.c)
+ - The garbage collector could move devices in memory, causing
+problems with command list devices. (gxdevice.h, gsdevice.c)
+
+Continues restructuring the image handling code in preparation for adding a
+high-level driver operation. (gsimage[12345].c)
+
+Starts to implement passing color mapping information (transfer function,
+black generation, undercolor removal, CRD, halftoning) in the band list.
+(gxfmap.h, gscolor.c, gscolor1.c, gsht1.c, gsstate.c)
+
+Speeds up the path filling code a little more. (gxdraw.c)
+
+Removes the workaround for the gcc 2.7.0/1/2 optimizer bug, since this
+turned out to cause more trouble than it was worth. (stdpre.h)
+
+Speeds up stroking dramatically for the case of butt or square caps, bevel
+or beveled miter joins, and no fill adjustment, by filling parallelograms
+and triangles directly rather than constructing and filling paths. This is
+an important common case for CAD drawings. (gxdraw.h, gxdraw.c, gxstroke.c)
+
+Adds support for TrueType and Type 42 fonts. (gxfont.h, gxfont42.h,
+gstype42.c)
+
+Extends the memory manager to allow allocating objects that the garbage
+collector won't move. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for
+implementors of memory managers, but clients aren't supposed to have any of
+these. (gsmemory.h, gsmemory.c, gsalloc.c)
+
+Makes dynamically created instances of registered devices immovable.
+(gsdevice.c)
+
+Unifies gx_drawing_color with (makes it equivalent to) gx_device_color.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
+higher-level driver procedures (fill_path, stroke_path, fill_mask). We
+regret that this was necessary, but the documentation in drivers.doc does
+warn the reader: "DO NOT ASSUME THESE OPERATIONS WILL REMAIN UNCHANGED IN
+FUTURE RELEASES." These three procedures, at least, should now be stable.
+(gsdcolor.h, gxcindex.h, gxdcolor.h, gxdevice.h, gximage.h, gxpaint.h,
+gxpcolor.h, gdevdflt.c, gdevpdf.c, gdevpdfi.c, gdevxalt.c, gsimage.c,
+gsimage2.c, gspcolor.c, gxacpath.c, gxccache.c, gxcht.c, gxclpath.c,
+gxclread.c, gxdcconv.c, gxdither.c, gxfill.c, gxdraw.c, gxht.c, gxpaint.c,
+gxpcmap.c, gxstroke.c)
+
+</pre>
+
+<h2><a name="Version3.65"></a>Version 3.65 (limited) (3/9/96)</h2>
+
+<p>
+This release adds garbage collection for device instances. ****** NOTE:
+Because of changes in memory management, if you are using the MS Windows
+driver (mswin), you must run with -dNOGC. This is a temporary problem which
+will be fixed before the next beta release.
+
+<h3><a name="V3.65_Documentation"></a>Documentation</h3><pre>
+Documents the C API equivalent of a -d switch for setting a flag like
+NOPAUSE. (imain.h)
+
+Splits off the NEWS entries for versions 3.0 through 3.33 into a new
+file. (history3.doc)
+
+Adds a man page for ps2pdf. (ps2pdf.1)
+
+Documents the new memory management aspects of device drivers, and corrects
+many other aspects of driver documentation that had become inaccurate.
+(drivers.doc)
+
+Updates the documentation for the gs_*.ps files. (psfiles.doc)
+
+Replaces .type1addpath with .type1execchar. (language.doc)
+
+Adds some more documentation on how band lists do read/write switching.
+(gxclist.h)
+
+Adds a reference to the new Genscript program, a free Ghostscript-based
+replacement for enscript. (README)
+
+Notes that no further changes will be accepted for the gdevcdj.c file, which
+has gotten completely out of hand. (gdevcdj.c).
+
+Documents the TextAlphaBits and GraphicsAlphaBits device parameters.
+(language.doc)
+
+</pre><h3><a name="V3.65_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - gs_pdfwr.ps and pdf2ps.1 weren't installed on Unix systems.
+(unix-end.mak)
+ - The pdf2ps shell script didn't accept any options. (pdf2ps)
+ - The rule for srle.$(OBJ) incorrectly specified a dependency on
+srld.c. (lib.mak)
+ - The rule for command lists didn't include stream.$(OBJ).
+(lib.mak)
+ - The stack size for one configuration was set too small.
+(watclib.mak)
+
+Speeds up genconf by eliminating redundant file reading and processing.
+(genconf.c)
+
+Moves the pixel-difference filters from int.mak to lib.mak. (int.mak,
+lib.mak)
+
+Moves the library parts of the HSB color and Level 1 path (arcs, pathbbox,
+path enumeration) options from int.mak to lib.mak, and adds them to the
+library makefiles. (int.mak, lib.mak; bclib.mak. ugcclib.mak, watclib.mak)
+
+</pre><h3><a name="V3.65_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - pdf2ps would fail if it encountered a font with a standard
+encoding. (pdf_2ps.ps)
+
+Adds new switches to pdf2ps:
+ -dPSBinaryOK allows writing binary image data in the output.
+(pdf_2ps.ps)
+ -dPSLevel1 forces Level 1 compatible output. (int.mak,
+unix-end.mak, gs_l2img.ps, gs_pdf.ps, pdf_2ps.ps, pdf_main.ps)
+ -dPSNoProcSet causes the ProcSet to be loaded at run time, not at
+conversion time -- primarily useful for debugging. (pdf_2ps.ps)
+
+Adds a utility for viewing PCX files, so we can preview high-resolution
+output in a reasonable compressed format. (unix-end.mak, viewpcx.ps)
+
+</pre><h3><a name="V3.65_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some compilers require an extra #include to define structures even
+if they are only referenced by pointers. (int.mak, gdevpdf.c, gdevpdfp.c)
+ - A procedure name was duplicated. (gdevpdfi.c)
+ - A pdfmark between a gsave and a grestore could cause a
+rangecheck error. (gdevpdfp.c)
+ - A pdfmark between a gsave and a grestore could cause the
+grestore to do an inappropriate initgraphics. (gs_pdfwr.ps)
+ - The pdfwrite driver could reinitialize the output file
+unpredictably. (gdevpdfp.c)
+ - The PCX drivers didn't clear padding bytes at the ends of scan
+lines. (gdevpcx.c)
+ - The PCX drivers didn't set the "version" field correctly (this was
+OK in 2.6.1, bug introduced sometime since then). (gdevpcx.c)
+ - Whoever last touched the color inkjet drivers completely broke the
+handling of the BitsPerPixel parameter, again. We were able to half-fix it,
+but the code is impossible to understand, let alone modify safely.
+(gdevcdj.c)
+ - Anti-aliased characters didn't work with banding. (gxclpath.c)
+ - The PGM/PPM drivers didn't recognize black-and-white pages for
+optimization to PBM, only gray or colored. (gdevpbm.c)
+ - The color inkjet drivers initialized the params_size field of the
+static instance incorrectly, resulting in garbage in the last few structure
+members when instances were copied. (gdevcdj.c)
+ - The 24-bit PCX driver didn't pad each scan line to an even number
+of bytes. (gdevpcx.c)
+ - The svga16 driver initialized its procedures incorrectly.
+(gdevpcfb.c)
+
+Adds text writing capability to the PDF writer. In its present form, this
+is a very bad hack: it only works for the 14 built-in fonts with their
+standard encodings. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
+
+Adds garbage collection and finalization for device instances (gscdefs.h,
+gsdevice.h, gxdevice.h, gconf.c, gdevmrop.c, gsdevice.c, gslib.c, gsmain.c).
+(See the "Driver instance allocation" section of drivers.doc for more
+details about what is required to make this work.)
+
+ - When an open device is freed (explicitly, by garbage collection,
+or by 'restore'), if the device was allocated dynamically by Ghostscript's
+standard allocator, the device's close procedure will be called. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE for dynamically created devices, which
+formerly were not closed automatically, even when Ghostscript exited.
+
+ - Device instances allocated in GC-able space will be traced
+like other objects, assuming they have proper structure descriptors.
+
+Provides a (very slow but correct) default implementation of copy_alpha.
+(gxcindex.h, gdevdflt.c, gsimage4.c)
+
+Removes the implementation of copy_alpha in gdevpbm.c, since this is now
+implemented (more efficiently) in gdevm24.c. (gdevpbm.c)
+
+Adds TextAlphaBits and GraphicsAlphaBits as readable parameters for all
+devices. (gsdparam.c, gdevpbm.c, gdevsvga.c)
+
+</pre><h3><a name="V3.65_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There were some attempts to coerce long to short pointers
+on segmented platforms. (gsdparam.c, gstype1.c)
+ - The stack could overflow on the 16-bit MS Windows platform.
+(gxfill.c, gxclread.c)
+ - The DLL callback parameter for window resize events was computed
+incorrectly on 16-bit systems. (gdevwdib.c)
+ - A file included gxdevice.h unnecessarily. (bcwin.mak,
+bcwin32.mak, msvcwint.mak, gp_mswin.c)
+
+</pre><h3><a name="V3.65_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Storing into a read-only dictionary with def or store was
+allowed. (dstack.h)
+ - If the interpreter allocated extra space for a dictionary
+to round its storage size up to a power of 2, it was possible for
+length to exceed maxlength. (idict.c, iinit.c)
+ - The if and ifelse operators didn't check that their
+'procedure' arguments were actually procedures. (interp.c, zcontrol.c)
+ - The undef operator was defined even in Level 1
+configurations. (We need this capability for all configurations, so
+we always define .undef.) (zdict.c, gs_*.ps, pdf_*.ps)
+ - In Level 1 configurations, copying a dictionary should copy the
+access attributes, but it didn't. We have to work around this
+compatibility quirk in a lot of places. (gs_cidfn.ps, gs_cmap.ps,
+gs_dps1.ps, gs_fonts.ps, gs_init.ps, gs_l2img.ps, gs_lev2.ps, gs_pdf.ps,
+gs_pfile.ps, gs_res.ps, gs_setpd.ps, gs_type1.ps, zdict.c)
+ - DSC comments that crossed a buffer boundary didn't call the
+scan_dsc_proc. (iscan.c)
+ - "statusdict /setpage get exec" caused an error. (gs_statd.ps)
+ - The default size of systemdict had become slightly too small.
+(iinit.c)
+ - Doing a showpage or copypage would cause the equivalent of a
+setpagedevice at the next restore or grestore. We aren't entirely sure that
+the fix we made doesn't have bad side-effects. (gs_setpd.ps)
+ - Not all filters accepted (and ignored) an optional dictionary
+parameter on the stack. (ifilter.h, zfbcp.c, zfdecode.c, zfilter.c,
+zfilterx.c, zfzlib.c, zmisc1.c)
+ - The PixelDifference filters required a Columns parameter, rather
+than defaulting it to 1. (spdiffx.h, zfdecode.c)
+ - Contrary to the NEWS entry for release 3.60, the LZW filters did
+not implement pixel differencing. (zfdecode.c, zfilter2.c)
+ - readstring with a 0-length string didn't signal a rangecheck.
+This doesn't make a lot of sense to me, but it's what the Adobe
+documentation specifies. Unfortunately, we have to work around this in a
+number of places that assumed the sensible definition (return () true
+without reading anything). (gs_l2img.ps, pdf_font.ps, zfileio.c)
+ - Encoded number strings didn't work (bug introduced in 3.64).
+(ibnum.c)
+ - The allocator could produce spurious "free large 0x...... chunk
+not found" messages. (These didn't cause any harm, but they were
+disturbing.) (gsalloc.c)
+
+Changes the default transfer function for high-resolution devices so
+that it is the identity function if the device is continuous-tone.
+(gs_init.ps)
+
+Undoes the "subversion" of zgetdevice noted in release 3.61, since it
+is now possible to copy devices safely. (zdevice.c)
+
+Changes the implementation of the garbage collector and restore so that
+object finalization code may safely free objects. (igc.c, isave.c)
+
+Reimplements essentially all of Type 1 BuildChar in C. (gs_init.ps,
+gs_type0.ps (deleted), gs_type1.ps, ifont.h, zchar.c, zchar1.c, zfont.c)
+
+Reimplements DISKFONTS as a separate feature (diskfont.dev), and changes it
+to use Type 4 fonts rather than special machinery. Currently this feature
+is included only in the makefiles for 16-bit architectures. (bc.mak,
+bcwin.mak, int.mak, tc.mak, gs_diskf.ps, gs_fonts.ps, gs_type1.ps)
+
+Converts the library search path from a list of strings to a (PostScript)
+array of strings, one string per directory. (iminst.h, main.h, gs.c,
+gsmain.c, zfile.c)
+
+Adds a hook procedure scan_comment_proc for processing all comments,
+similar to scan_dsc_proc. If both are set, scan_comment_proc is used only
+for non-DSC comments. (iscan.h, iscan.c)
+
+</pre><h3><a name="V3.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Encrypted PDF files produced a random error (usually ioerror in
+--token--) rather than a meaningful message. (pdf_main.ps)
+ - Color space setting didn't work. (gs_pdf.ps)
+ - The algorithm for skipping a possible blank line following the
+'stream' keyword wasn't robust enough. (We aren't sure the new algorithm is
+exactly right, either.) (pdf_base.ps)
+
+Gets rid of the special handling of the LZW decoding filter, since the
+filter itself now handles the Predictor facility. (pdf_base.ps)
+
+</pre><h3><a name="V3.65_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Configurations with LZW encoding but not decoding had an
+undefined reference. (lib.mak, slzwc.c, slzwd.c)
+ - The LZW-compatible encoder didn't provide a 'reset' procedure.
+(slzwce.c)
+ - The PixelDifference filters didn't work for most parameter
+combinations in which each pixel took up more than 1 byte. (spdiff.c)
+ - Temporary write streams could cause an infinite loop. (We only
+need such streams for the Predictor = 2 case of LZWEncode: this is why the
+bug never showed up before.) (stream.c)
+
+Adds an optional reinitialization procedure to the stream template. Note
+that this is not the same as the PostScript 'reset' operation or the stream
+resetting operation invoked by sreset: the reinit procedure in the template
+reinitializes any internal state of the encoder or decoder without affecting
+buffered data. (scommon.h, strimpl.h, sbcp.c, sbhc.c, slzwce.c, slzwd.c,
+slzwe.c, smtf.c, spdiff.c, srle.c) ****** NOT DONE YET: sbwbs.c, szlibd.c,
+szlibe.c
+
+Adds a decoding stream for the run-length compression used in PCX.
+(spcxx.h, spcxd.c)
+
+</pre><h3><a name="V3.65_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A recent edit introduced an extraneous right parenthesis.
+(gpcheck.h)
+ - A minor nit in a macro could cause incorrect grouping of 'if'
+statements under implausible conditions. (gsmdebug.h)
+ - The first data plane buffer of an image enumerator didn't get
+marked during garbage collection. (gsimage.c)
+ - The Watcom C compiler required splitting up a declaration.
+(gxcmap.h)
+ - The extern declarations for the tables in gconf.c weren't gathered
+together in one place. (gscdefs.h, gxiodev.h, gconf.c, gsdevice.c, gslib.c,
+gsinit.c, gsiodev.c)
+ - charpath and show produced different output. We fixed this by
+undoing a "bug fix", introduced in version 2.9, which suppressed hinting and
+coordinate rounding for charpath; we aren't sure this won't cause some
+obscure problems to reappear. (gstype1.c)
+ - Clipping with a rectangle usually created a 3-rectangle clipping
+list, slowing down all drawing operations (performance bug only).
+(gxacpath.c)
+ - stroking in a rotated coordinate system sometimes thought lines
+were always thin when they actually weren't. (gxstroke.c)
+ - An unsigned quantity wasn't properly converted to signed, possibly
+causing band path coordinates to get mangled. (gxclread.c)
+ - A bug in the Borland compiler caused an unsigned quantity to be
+interpreted as signed, causing band path coordinates to get mangled.
+(gxclread.c)
+
+Changes structure type pointers on 16-bit segmented systems to full
+32-bit pointers. This will increase time and space requirements very
+slightly on these systems. (gsmemory.h, gxobj.h)
+
+Changes the memory manager so that object finalization code may safely free
+objects. (gsmemory.h, gsstruct.h, gsalloc.c, gsmemory.c)
+
+Refactors the Type 1 CharString interpreter so it can be included in
+the imager library. (gstype1.h, gxtype1.h, gstype1.c)
+
+Starts to refactor the implementation of band lists in memory so that it can
+use any encoding/decoding filter. Currently this choice is made at compile
+time, but it could easily be made dynamic. (gxclmem.h, gxclmem.c)
+
+Starts to refactor image rendering so that, like path filling and stroking,
+it only uses imager state and can be done after banding. (gxcmap.h,
+gxdraw.h, gximage.h, gsimage*.c, gxcmap.c)
+
+Speeds up copy_mono for 2-bit-per-pixel devices a little. (gdevm2.c)
+
+Implements an optimized copy_alpha for 24-bit memory devices. (gdevmem.h,
+gdevm24.c)
+
+Speeds up filling rectangles significantly. (gsbitops.c)
+
+Changes the band list rasterizer to use the memory space of the device
+rather than the C heap: our allocator is considerably faster than malloc.
+(gxclread.c)
+
+Speeds up stroking a little, especially in 90 degree rotated coordinate
+systems. (gxstroke.c)
+
+</pre>
+
+<h2><a name="Version3.64"></a>Version 3.64 (limited, incremental) (1/27/96)</h2>
+
+<p>
+This release fixes a few more bugs, including some serious bugs in band
+lists, and adds pdfmark processing to the PDF writer. The PDF writer is
+still not fit for real use, since it converts all text characters into 720
+dpi bitmaps and turns images into zillions of tiny rectangles (!), but it
+should be producing legal output.
+
+<h3><a name="V3.64_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Frans van Hoesel's e-mail address was incorrect. (gdevdjet.c)
+ - The man page for ansi2knr was out of date. (ansi2knr.1)
+ - The description of a procedure was out of date. (gxdcolor.h)
+
+Notes that several "optional" features are required in order to obtain the
+full PostScript Level 1 functionality at the library level. (lib.doc)
+
+Documents the top-level interpreter API. (imain.h)
+
+Adds details on differences between the imager API and the PostScript
+graphics operators. (lib.doc)
+
+Notes (here, in NEWS) that the change for device prototypes in 3.61 made the
+protection attributes of a device significant for the first time. Only the
+writable attribute is significant so far. (news)
+
+</pre><h3><a name="V3.64_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The .dev rules in the library makefiles didn't list echogs as a
+dependency. (jpeg.mak, libpng.mak, zlib.mak)
+ - The install rule tried to install gs.1.1 etc. rather than gs.1
+etc. (unix-end.mak)
+ - The install rule tried to install some nonexistent *.1 files.
+(unix-end.mak)
+
+Adds 'help' and '?' procedures to assist users who don't read the
+documentation. (gs_init.ps)
+
+Adds -A-, -E-, and -Z-... to turn off debugging flags. (gs.c)
+
+Adds a -dDELAYBIND switch to delay binding operators, to allow special
+packages like pstotext to redefine them. (gs_init.ps)
+
+</pre><h3><a name="V3.64_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Fonts produced by rollconv.ps left a couple of items on the
+operand stack, and left array packing set to true. (rollconv.ps)
+
+Makes ansi2knr require that the first token after a function header be a
+left brace on the next line, so it can cope with some macros in IJG release
+6a. Also updates it to work better without the GNU configure machinery, and
+on some old compilers. (ansi2knr.c)
+
+Changes align.ps so it can be used directly to determine the margin
+parameters. (align.ps, psfiles.doc)
+
+</pre><h3><a name="V3.64_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF/F (G3 and G4) drivers were broken (bug introduced in
+3.60). (gdevtfax.c)
+ - The PDF writer produced invalid output for 0-width, 0-height
+images. (gdevpdfi.c)
+ - The PDF writer wasn't a page device. (gdevpdf.c)
+ - The PDF writer assigned the Contents node rather than the Pages
+node as the Parent of each page. (gdevpdfx.h, gdevpdf.c)
+
+Corrects the margin information for the DeskJet printers to be the actual
+values observed on a printer; all of the values in the file were wrong.
+(gdevdjet.c)
+
+Adds pdfmark recognition and conversion to the PDF writer. All documented
+pdfmarks (ANN, ARTICLE, DEST, DOCINFO, DOCVIEW, LNK, OUT, PAGE, PAGES, PS)
+are recognized and converted, but some of them are not converted correctly.
+(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfm.c)
+
+Adds recognition of all Distiller parameters, except *ImageDict, to the PDF
+writer. Currently only ASCII85EncodePages actually has any effect.
+(gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
+
+Ensures that PDF output files include at least a default Info dictionary.
+(gdevpdf.c)
+
+Changes the handling of coordinates in PDF output files so that the scale is
+always 72 dpi, and so that each graphics operator is on a line by itself,
+for compatibility with Adobe Illustrator. (gdevpdfx.h, gdevpdf*.c)
+
+Adds a driver for ImageMagick's MIFF format. The driver currently only
+produces 24-bit, direct color, RLE compressed output. (gdevmiff.c)
+
+</pre><h3><a name="V3.64_Platforms"></a>Platforms</h3><pre>
+
+Changes the gp_check_interrupts platform procedure so that instead of just
+returning a Boolean, it can now also return a negative error code. THIS IS
+(THEORETICALLY) A NON-BACKWARD-COMPATIBLE CHANGE. However, since all
+implementations of this procedure should only have been returning 0 or 1 up
+to now, no existing code should need to be changed. (gpcheck.h, gsmisc.c)
+
+</pre><h3><a name="V3.64_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - devicenames was accidentally deleted. (gs_init.ps)
+ - -dFAKEFONTS could cause the memory manager to waste a lot of time.
+(gs_dps1.ps)
+ - Using -r or -dFIXEDMEDIA with a non-page device caused an error.
+(gs_init.ps)
+ - A VMS compiler reserves the word "readonly", which was used as a
+parameter name. (imain.h, gsmain.c)
+ - A garbage collection during the execution of x/y/xyshow with an
+array providing the values could get confused. (ibnum.h, ichar.h, stream.h,
+ibnum.c, iscanbin.c, zchar.c, zchar2.c, zdps1.c, zupath.c)
+ - Errors in encoded number strings produced a typecheck rather than
+a rangecheck error. (ibnum.c, zupath.c)
+
+Updates the DCT filters for IJG release 6a. (zfdctc.c)
+
+Provides an API call for getting the real stdio files. (imain.h,
+gs.c, gsmain.c)
+
+</pre><h3><a name="V3.64_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If the CCITTFaxEncode stream encountered an output buffer boundary
+while processing the last scan line of input, it could fail to process some
+the scan line. (scfe.c)
+ - A couple of pointers weren't always initialized, possibly
+confusing the garbage collector. (stream.c)
+ - The weighting coefficient structures used for image scaling
+weren't declared properly for the garbage collector. (siscale.h, siscale.c)
+
+</pre><h3><a name="V3.64_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Unrotated patterns always used the bounding box size as the step,
+rather than XStep/YStep. (gspcolor.c)
+ - Alpha computations for graphics could be seriously incorrect (bug
+introduced in 3.6x). (gdevabuf.c)
+ - The length of the next_data_x command for the fill_mask operation
+was incorrect, causing the band list to become confused (bug introduced in
+3.63). (gxclpath.c)
+ - An extern was omitted, causing linker warnings. (gxdevice.h)
+ - RasterOps could cause an invalid access because the palette
+for a memory device wasn't set. (gdevmrop.c)
+ - gximage.h was included unnecessarily. (gspaint.c)
+ - Color screens caused a segmentation fault (bug introduced in
+3.6x). (gxcht.c)
+ - cshow returned the width in an incorrect coordinate system.
+(gscoord.h, gschar.c)
+ - Filling or stroking a path that lay entirely off the page in the
++X or +Y direction could corrupt memory (bug introduced in 3.6x).
+(gxclpath.c)
+ - When banding, painting characters with halftones produced random
+results (bug introduced in 3.6x). (gxclpath.c)
+ - When banding, characters could get clipped when they shouldn't be
+(bug introduced in 3.6x). (gxclpath.c)
+ - The default implementation of fill_mask could discard clipped
+bitmaps (bug introduced in 3.6x). (gdevdflt.c)
+ - Non-halftoned 24-bit colors could get garbled when banding (bug
+introduced in 3.6x). (gxclist.c)
+ - When banding, if a stroked path had subpaths that fell entirely
+outside the current band, the rest of the path was drawn in the wrong place
+(bug introduced in 3.6x). (gxclpath.c)
+
+Speeds up image interpolation on machines with slow floating point.
+(siscale.h, siscale.c)
+
+Speeds up interpolated images when using device color spaces. (gxcvalue.h,
+gxfrac.h, gdevht.c, gxcmap.c, gsimage.c, gsimage3.c)
+
+Speeds up color mapping a little by removing tests and calls in favor of
+code copying. (gxcmap.c)
+
+Implements RasterOp for 24-bit RGB devices. (gdevm8.c, gdevm24.c,
+gdevmrop.c)
+
+</pre>
+
+<h2><a name="Version3.63"></a>Version 3.63 (limited, incremental) (1/14/96)</h2>
+
+<p>
+This release has the usual collection of bug fixes, and two significant
+additions: AccurateScreens, and the first draft of a PostScript-&gt;PDF
+converter ("distiller").
+
+<h3><a name="V3.63_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Some documentation for pstoppm.ps was out of date. (psfiles.doc)
+ - Documentation for acctest.ps, view*.ps, and zeroline.ps was
+missing. (psfiles.doc)
+ - The documentation for rollconv.ps omitted the .CSR file.
+(rollconv.ps)
+
+Removes an inappropriate RCS Id line. (gs.1)
+
+Adds a list of paper sizes to the man page. (gs.1)
+
+Suggests that driver authors use parameterization rather than copying when
+possible. (drivers.doc)
+
+Adds an announcement of Ghostscript support on CompuServe. (README)
+
+Documents the new -dCOLORSCREEN switch and the existing -dDITHERPPI=lpi
+switch. (use.doc)
+
+Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather than
+0.9a. (install.doc)
+
+Adds some new man pages. (pdf2ps.1, ps2ascii.1)
+
+Greatly expands lib.doc. (lib.doc)
+
+</pre><h3><a name="V3.63_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The pg target for Unix platforms didn't include some necessary
+additional X11 libraries. (unix-end.mak)
+ - The Unix library makefile didn't define CCAUX or CCLEAF.
+(ugcclib.mak)
+ - Unix systems didn't `install' some .ps files. (unix-end.mak)
+
+Extends genconf so that features at the library level can have
+initialization procedures. (gconf.c, genconf.c, gsinit.c)
+
+Adds a -dCOLORSCREEN[=false] switch to force enabling or disabling of
+4-color screens. (gs_init.ps, gs_setpd.ps)
+
+</pre><h3><a name="V3.63_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The prfont utility didn't leave enough of a margin on the left.
+(prfont.ps)
+ - The ps2ascii utility still created files _temp_.out and _temp_.err
+even though they are no longer used. (ps2ascii.ps)
+ - The acctest.ps file was empty, rather than including a test
+program. (acctest.ps)
+
+Adds ps2pdf[.bat] scripts for invoking the new pdfwrite driver. (ps2pdf,
+ps2pdf.bat, unix-end.mak)
+
+</pre><h3><a name="V3.63_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The x11alpha driver had a patch that suppressed output in many
+cases. (gdevxalt.c)
+ - The X driver set up a parameter incorrectly in copy_color.
+(gdevx.c)
+ - An explicit cast was needed to handle a 'const' problem.
+(gdevpng.c)
+
+Adds a pdfwrite driver that creates syntactically correct PDF output. The
+output is only reasonable for fill/stroke graphics, not for text or images.
+(iscan.h, sa85x.h, sfilter.h, gdevpdf.c, sfilter2.c, zfdecode.c)
+
+</pre><h3><a name="V3.63_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The test for WinExec failure on Win32 was incorrect. (gp_mswin.c)
+ - getenv was declared redundantly on OS/2. (gp_os2.c)
+ - gs16spl.c was missing &lt;string.h&gt;. (gs16spl.c)
+
+</pre><h3><a name="V3.63_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Images read data in smaller and smaller increments (performance
+bug only). (zpaint.c)
+ - Images with MultipleDataSources=true and two or more DataSources
+referencing the same stream could get confused. (zpaint.c)
+ - Invoking setpagedevice with an undefined key, even with Policy =
+1, caused an error. (gs_setpd.ps)
+ - IEEE floats in binary tokens or encoded number strings were read
+incorrectly on CPUs that use non-IEEE floating point. (ibnum.c)
+
+Adds a 'const' to the second parameter of zimage_setup. (zimage2.c,
+zpaint.c)
+
+Encapsulates the filling of free memory blocks in a macro. (igc.c,
+igcstr.c)
+
+</pre><h3><a name="V3.63_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If the first line of a file began with % but the line was longer
+than 255 characters, an error occurred. (pdf_main.ps)
+ - Masked images didn't set the color before drawing. (gs_pdf.ps)
+ - Extraneous blank lines in the trailer or cross-reference region
+caused an error. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.63_Streams"></a>Streams</h3><pre>
+
+Speeds up image interpolation a little. Much more could be still be done.
+(siscale.c)
+
+</pre><h3><a name="V3.63_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An error in handling a boundary condition could cause a horizontal
+streak of pixels to be turned on or off when it shouldn't be. (gxfill.c)
+ - The new scan-line-based filling loop could write pixels twice.
+(The old trapezoid-based loop still does write pixels twice.) (gxfill.c)
+ - For multi-plane images, gs_image_next only sets *pused for the
+last plane; this wasn't documented. (gsimage.h)
+ - Images with MultipleDataSources=true and two or more DataSources
+referencing the same stream could get confused. (gsimage.h, gsimage0.c)
+ - 12-bit gray images caused an invalid memory access. (gsimage.c)
+ - Nearly-zero-thickness lines didn't get filled, because the hack
+that compensates for this peculiarity of the MS Windows PostScript driver
+accidentally got disabled. (gxfill.c)
+ - Some casts to remove 'const' were omitted. (gxclread.c)
+ - 1-line-high bitmaps could get written in the band list with an
+inconsistent number of bytes, causing errors when reading. (gxcldev.h,
+gxclbits.c, gxclist.c, gxclpath.c, gxclread.c)
+ - Isolated dots produced by round caps usually disappeared. (They
+still disappear sometimes.) (gxstroke.c)
+ - On 16-bit platforms, the computation of t2 and t3 in
+gx_curve_x_at_y could overflow, leading to incorrect output. (gxpcopy.c)
+ - Stroking horizontal or vertical lines could produce variations of
+1 pixel in the line width. (gxstroke.c)
+ - The default clipping region for band rendering was too large,
+leading to wasted work. (gxclread.c)
+ - Guarantees no double pixel writing when necessary, i.e., when a
+non-idempotent RasterOp is selected. (gsropt.h, gxfill.c)
+ - For unrotated black-and-white images, one column of pixels at the
+right edge of the image might be incorrect. (gsimage1.c)
+ - A const pointer was passed inappropriately. (gxistate.h,
+gscoord.c)
+ - CIE color conversion could address 1 element beyond the end of an
+array, with unpredictable results. (gscie.c)
+
+Separates out the higher-level band list facilities, so they can be an
+optional feature. (lib.mak, gxcldev.h, gxclpath.h, gxclbits.c, gxclist.c,
+gxclpath.c, gxclread.c)
+
+Implements bitmap (fill_mask) clipping in the band list. (gxcldev.h,
+gxclpath.h, gxclist.c, gxclpath.c, gxclread.c)
+
+Starts to separate out the RasterOp facility as an optional feature.
+(lib.mak, gxdevice.h, gxdevrop.h, gdevdflt.c, gdevmrop.c)
+
+Encapsulates the filling of free memory blocks in a macro, at the request of
+a licensee. (gdebug.h, gsmdebug.h, gsmemory.h, gs.c, gsalloc.c, gsmemory.c,
+gxbcache.c)
+
+Speeds up fill_rectangle for 32-bit devices. (gdevm32.c)
+
+Speeds up path writing in band lists a little. (gxclpath.c)
+
+Implements AccurateScreens along the lines described in the Adobe
+documentation. The current implementation can produce very large
+super-cells, so it will not always be able to actually increase the screen
+accuracy. (gxdht.h, gsht.c, gshtscr.c)
+
+</pre>
+
+<h2><a name="Version3.62"></a>Version 3.62 (limited, incremental) (12/26/95)</h2>
+
+<p>
+This release makes some licensee-requested improvements in the garbage
+collector and fixes a couple of minor bugs. It also constitutes a
+checkpoint for the forthcoming forked 3.53 release.
+
+<h3><a name="V3.62_Documentation"></a>Documentation</h3><pre>
+Notes that for Win32s, gs16spl.exe must be in the same directory as
+gswin32.exe. (install.doc)
+
+Changes `3.N' to a real version number in the man page. (gs.1)
+
+Adds a reference to dos-psv, another "dumb terminal" user interface for
+Ghostscript intended for MS-DOS users. (README)
+
+</pre><h3><a name="V3.62_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The stack size for some of the PC platforms was set too small.
+(watc.mak, watcwin.mak)
+
+Changes the default value of ORIENT1 from false to true, i.e., assumes that
+a value of 1 for the orientation parameter of setpageparams indicates
+portrait orientation. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. It only
+affects files created for roll-media imagesetters. (gs_init.ps, use.doc)
+
+</pre><h3><a name="V3.62_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The definition of the op_index_op_array_table macro had an
+incorrect trailing semicolon. (opdef.h)
+ - Setting the PageSize policy to 1 and then trying to set the page
+size caused an error if FIXEDMEDIA was selected. (gs_setpd.ps)
+
+Changes the garbage collector marking phase so that instead of just using a
+single block (allocated, free, or default) for the mark stack, it can chain
+all three types of block together. (igc.h, igc.c, igcstr.c, ilocate.c)
+
+Refactors the garbage collector slightly to reduce inter-module
+dependencies. (int.mak, igc.h, igcstr.h, igcstr.c)
+
+Changes the garbage collector to keep track of ranges within each chunk that
+must be scanned if the mark stack overflows. (gxalloc.h, igc.c)
+
+Adds [write]===[only] procedures, which act like == but also print the
+contents of dictionaries, and ppstack, which acts like pstack but uses ===.
+Changes ESTACKPRINT and OSTACKPRINT to use === rather than ==. (gs_init.ps,
+gs_setpd.ps)
+
+</pre><h3><a name="V3.62_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If a PDF file substituted a calibrated color space for the
+DeviceGray or DeviceRGB color space using a ColorSpace resource, the
+PostScript file that pdf2ps produced from that PDF file caused an error.
+(gs_pdf.ps)
+
+</pre><h3><a name="V3.62_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The debugging code for checking the sorting of line lists didn't
+check for an empty list. (gxfill.c)
+
+</pre>
+
+<h2><a name="Version3.61"></a>Version 3.61 (limited) (12/10/95)</h2>
+
+<p>
+This limited release fixes a few bugs (including a couple that significantly
+affected character quality) and also includes some substantial performance
+improvements.
+
+<h3><a name="V3.61_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The directory name for the PNG library was incorrect.
+(libpng.mak)
+ - The analysis of curve monotonocity in gxpcopy.c had an error.
+(gxpcopy.c)
+
+Changes the subdirectory names for zlib and libpng to be consistent.
+(make.doc)
+
+Documents a possible problem with object file format incompatibilities in
+certain versions of GNU/Linux. (make.doc)
+
+Documents the new distinction between devices and device prototypes.
+(language.doc)
+
+Adds a pointer to DEC's free pstotext utility. (README)
+
+</pre><h3><a name="V3.61_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - zlib.mak omitted some files in the encoding module dependencies.
+(zlib.mak)
+ - os2.mak referred to png.mak rather than libpng.mak. (os2.mak)
+ - The png devices didn't include gdevpccm.$(OBJ) as a required file.
+(devs.mak)
+ - Some modules in lib.mak referred to stream.h, which was defined in
+int.mak. (int.mak, lib.mak)
+ - Quite a few dependencies on header files were missing from the
+makefiles. (int.mak, lib.mak, *.mak)
+
+Adds a 'pg' target to the Unix makefiles, for building profiling
+configurations. (unix-end.mak)
+
+</pre><h3><a name="V3.61_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Type 1 fonts in which some characters are defined by PostScript
+procedures couldn't be compiled. (ccfont.h, iccfont.c, font2c.ps)
+ - pdf2ps didn't write Widths or Encoding in the converted file,
+producing incorrect spacing and incorrect characters. (pdf_2ps.ps)
+ - markhint.ps didn't handle the Type 1 'div' operator, causing
+typecheck errors. (markhint.ps)
+ - markhint.ps ignored the hstem3 and vstem3 hints. (markhint.ps)
+
+Changes the rollconv.ps utility to produce files whose names conform to the
+8.3 length restriction, and to reduce the fixed RAM overhead for Kanji
+fonts. (rollconv.ps)
+
+Adds a utility for detecting compiler problems that affect Ghostscript.
+(bughunt.sh)
+
+</pre><h3><a name="V3.61_Drivers"></a>Drivers</h3><pre>
+
+Adds anti-aliasing capability (-dTextAlphaBits and -dGraphicsAlphaBits) to
+the PGM and PPM drivers. (gdevpbm.c)
+
+Declares the static_procs member of the device structure as const *. This
+should have been done a long time ago! (drivers.doc, gxdevice.h)
+
+</pre><h3><a name="V3.61_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Printing didn't work in 32-bit MS Windows environments.
+(bcwin32.mak, gdevmswn.c, gp_mswin.c)
+ - There were some compatibility problems with IBM C. (os2.mak,
+gsdll.h, gdevpm.c, gp_os2.c)
+
+Adds the PNG drivers to the 32-bit MS Windows and OS/2 makefiles.
+(bcwin32.mak, os2.mak)
+
+Adds a conditional to work around a bug in gcc 2.7.x (it didn't recognize
+that the target of a const T * might still be mutable through aliasing).
+(stdpre.h)
+
+</pre><h3><a name="V3.61_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Rasterizing a character in a Type 1 font with an invalid FontBBox
+left some garbage on the operand stack (bug introduced in 3.52 or 3.60).
+(gs_type1.ps)
+ - The font substitution algorithm could fail or loop. (gs_fonts.ps)
+
+Adds a little more support for CID fonts and CMaps. (gs_cidfn.ps,
+gs_cmap.ps)
+
+</pre><h3><a name="V3.61_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An #include &lt;memory_.h&gt; was missing. (ziodev.h)
+ - Scanner-detected errors (primarily syntaxerror) didn't report the
+file position. (gs_init.ps)
+ - Rotated characters were rendered incorrectly (bug introduced in
+3.52). (gstype1.c)
+ - Some compilers got upset about the use of 'dict' as a variable
+name. (zdict.c)
+ - Operand stack overflows sometimes didn't set the "requested" field
+correctly. (interp.c)
+ - Using -dBufferSpace= with a non-printer device caused an error.
+(gs_init.ps)
+
+Adds zlibEncode/Decode filters. (int.mak, zfzlib.c)
+
+Separates devices from device prototypes. Prototypes, which lack the
+writable attribute, cannot be installed as the current device or have their
+parameters changed. This change allows Ghostscript to be exited and
+restarted without being reloaded, which solves some problems with DLL
+usage. ****** WE HAD TO SUBVERT THIS CHANGE BECAUSE OF MEMORY MANAGER
+PROBLEMS, by making zgetdevice return a writable reference to the
+prototype. (We finally fixed this in release 3.65.) (gs_init.ps, iref.h,
+opcheck.h, zdevice.c, ztype.c, zwppm.c)
+
+Extends the client API to allow for pushing values onto the operand stack.
+(imain.h, gs.c, gsmain.c)
+
+Defines a .setdefaultscreen procedure that sets the default halftone screen,
+transfer function, and stroke adjustment for the current device. Changes
+selectdevice and setpagedevice so that they call .setdefaultscreen;
+setpagedevice calls .setdefaultscreen before calling the Install procedure,
+so that Install can set different parameters if it wishes. Note that
+setdevice does not do this. (gs_init.ps, gs_setpd.ps)
+
+</pre><h3><a name="V3.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Tf set the current text font twice, and interacted with pdf2ps in
+an awkward way. (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
+ - If a font had variant Widths, it could get confused in the cache
+with the underlying font. (pdf_font.ps)
+ - If a character appeared twice in an encoding and the font
+specified different Widths values for the two occurrences, the last Width
+would be used. We patched this to ignore zero Widths, which is not the
+correct solution but which almost always produces correct output.
+(pdf_font.ps)
+ - Arrays containing nulls didn't print out correctly (bug introduced
+in 3.60). (gs_init.ps)
+ - Some PDF files contain very large dictionaries, which caused a
+stackoverflow. (pdf_base.ps)
+
+Speeds up the initial processing of PDF files by caching the map from page
+numbers to page objects, and by not scanning the outlines if we aren't
+producing PostScript output. (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.61_Streams"></a>Streams</h3><pre>
+
+Adds zlibEncode/Decode filters. (lib.mak, szlibx.h, szlibc.c, szlibd.c,
+szlibe.c)
+
+</pre><h3><a name="V3.61_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - glyphshow displayed a character with code 0 rather than the
+requested character (bug introduced in 3.60.) (gschar.c)
+ - If trimming white space around a character reduced its raster, the
+character was garbled in the cache (bug introduced in 3.60.) (gxccman.c)
+ - colorimage would incorrectly convert white pixels to black if the
+image color space was CMYK, the current color space was not CMYK, and the
+number of bits per pixel was 4 or 8. (gsimage2.c)
+ - One of the clipping tests for images was backwards (bug introduced
+in 3.60). (gsimage.c)
+ - Type 1 fonts that used the Flex feature applied hints to the path
+multiple times, causing dropouts, uneven stems, and other problems (bug
+probably introduced in 3.21). (gstype1.c)
+ - If a Type 1 font used the Flex feature within the accent of an
+accented character defined with seac, the shape of the accent could be
+distorted. (gxtype1.h, gstype1.c)
+ - If a Type 1 font changed hints using the hint replacement facility
+when the last operation was a closepath, the old hints would be applied a
+second time, distorting the shape. (gxhint3.c)
+ - Band lists could read garbage beyond the end of data for a band,
+causing unpredictable errors (bug introduced in 3.60). (gxclread.c)
+ - If the bounding box of the path for fill_path or stroke_path went
+outside the device page boundary when banding, out-of-bounds memory
+references occurred (bug introduced in 3.60). (gxdevice.h, gxclpath.c)
+
+Adds an alternative implementation of the core path filling algorithm that
+is much faster on objects with curves but doesn't handle Y fattening. This
+is the implementation that will normally be used for rasterizing characters.
+This implementation rasterizes curves directly, without flattening them.
+(gxfixed.h, gxpath.h, gzpath.h, gsdps1.c, gxfill.c, gxpcopy.c, gxpdash.c)
+
+Speeds up the flattening of curves substantially by omitting more redundant
+points. (gxpcopy.c)
+
+Speeds up character bitmap compression a little more. (gsbitops.h,
+gdevabuf.c, gsbitops.c, gxccman.c)
+
+Speeds up anti-aliased graphics a bit by computing a bounding box before
+converting from oversampling to alpha values, and by speeding up the
+bounding box computation itself. (gsbitops.h, gdevabuf.c, gsbitops.c,
+gxccman.c)
+
+</pre>
+
+<h2><a name="Version3.60"></a>Version 3.60 (limited) (11/20/95)</h2>
+
+<p>
+(Note: release numbers 3.54 through 3.59 were deliberately skipped.) This
+internal release includes a major redesign of band lists in order to reduce
+their size for embedded implementations, to move towards supporting "vector"
+output formats, and to further separate the imager library from the language
+interpreters.
+
+<h3><a name="V3.60_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A comment was incorrect. (viewpbm.ps)
+ - The PixelDifference filters were not documented. (language.doc)
+ - The change from currenttime to .currenttime wasn't documented.
+(language.doc)
+ - gs.1 incorrectly stated that the default font directory name
+included the version number. (gs.1)
+ - The -g and -r switches didn't specify that the units for their
+arguments are pixels and pixels per inch respectively. (use.doc)
+ - The PageOffset page device parameter wasn't listed.
+(language.doc)
+
+Changes copy_mono and copy_color to optional procedures. (drivers.doc)
+
+Adds a reference to ps_view.ps, a "dumb terminal" user interface for
+Ghostscript intended for MS-DOS users. (README)
+
+Splits off the documentation on installing Ghostscript into a separate file.
+(readme, install.doc, use.doc)
+
+Adds documentation on the data format produced by the standard LZWEncode
+filter. (readme, lzwce.doc)
+
+Clarifies XLIBDIR vs. XLIBDIRS. (make.doc)
+
+Adds user-contributed documentation on building Ghostscript under QNX.
+(make.doc)
+
+</pre><h3><a name="V3.60_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The rule for building dfaxhigh.dev had a typo. (devs.mak)
+ - The dependencies for gdevpipe.h were missing errno__h and
+string__h. (unixtail.mak)
+ - The geninit program (the implementation of COMPILE_INITS=1) didn't
+parse the command line properly, and didn't check for PostScript files
+properly. (geninit.c)
+ - ccfontab.c was omitted from the fileset. The easiest way to fix
+this was to rename it to icfontab.c. (gs.mak, int.mak, ccfontab.c)
+ - The Unix makefiles installed caption.ls (a typo) rather than
+caption.ps. (unix-end.mak)
+ - XLIBDIR, for dynamic library access, wasn't defined. (*head.mak,
+*tail.mak, ugcclib.mak)
+
+Adds the PNG and ZLIB makefiles to the fileset. (*.mak, png.mak, zlib.mak,
+tar_cat)
+
+Puts the PixelDifference filters in the standard Level 2 set, since the LZW
+filters may invoke them (a post-Red Book addition to the PostScript language
+definition). (int.mak)
+
+Adds -Wcast-qual to the gcc compiler flags. (gcc-head.mak)
+
+Adds the PNG drivers to the standard Unix configurations.
+(ansi/cc-/gcc-head.mak)
+
+Adds a -dNOFONTPATH switch to suppress any consultation of the FONTPATH
+variable or the GS_FONTPATH environment variable. (gs_fonts.ps, gs_init.ps)
+
+</pre><h3><a name="V3.60_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The default scaling for viewing PBM files was computed
+incorrectly. (viewpbm.ps)
+ - ps2ascii left a value on the stack for each unrecognized character
+it processed, eventually causing a stackoverflow. (ps2ascii.ps)
+
+Changes viewpbm.ps so that it simply defines P1 through P6, allowing PBM
+files to be executed with 'run'. (viewpbm.ps)
+
+Adds a small benchmark to crudely measure hardware/system performance. The
+same file can either be compiled as a C program or executed as a PostScript
+program. (bench.c)
+
+Adds a few PPD files to the distribution. There will probably be more as
+time goes on. (tar_gs, unix-end.mak)
+
+Updates the Unix lpr scripts to handle a wider variety of device options.
+(unix-lpr.doc, lprsetup.sh, unix-lpr.sh)
+
+Adds a utility for converting files produced by Macromedia's Rollup program
+to a Type 0 form directly usable by Ghostscript. (rollconv.ps)
+
+</pre><h3><a name="V3.60_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Forwarding devices passed an incorrect first argument when
+forwarding a copy_rop operation. (gsdevice.c)
+ - Because of a typo, the LaserJet drivers had incorrect margins.
+This was probably a new bug in 3.5x. (gdevdjet.c)
+ - A private name was duplicated. (gdevtfax.c)
+ - The x11alpha driver passed invalid colors to the X library.
+(gdevxalt.c)
+ - The x11alpha driver set the blue component of colors incorrectly.
+(gdevxalt.c)
+ - Some `const' declarations were missing. (gdevtifs.c, gdevtfnx.c,
+gdevxxf.c)
+ - The size of A4 paper was slightly inconsistent across drivers.
+(gdevdjet.c, gdevl256.c)
+
+Provides default implementations of copy_mono and copy_color in terms of
+fill_rectangle. (gxdevice.h, gsdevice.c)
+
+Adds forwarders for sync_output and output_page. (gxdevice.h, gsdevice.c)
+
+Adds new optional procedures to the driver interface:
+ - fill_path for filling a path with a color;
+ - stroke_path for stroking a path;
+ - fill_mask for painting a color through a mask.
+The default implementations use the existing rasterizer algorithms. This
+involves a NON-BACKWARD-COMPATIBLE change to the parameters of a few
+internal routines:
+ gs_currentlineparams
+ gx_fill_path, gx_fill_path_only, gx_path_expand_dashes, gx_path_flatten
+and two externally visible routines not part of standard PostScript:
+ gs_setfilladjust, gs_currentfilladjust
+(gdevmem.h, gdevprn.h, gspath.h, gspenum.h, gxcpath.h, gxdevice.h, gxdraw.h,
+gxpaint.h, gxpath.h, gscoord.c, gsdevice.c, gspaint.c, gsstate.c,
+gxacpath.c, gxclist.c, gxclread.c, gxcpath.c, gxdraw.c, gxfill.c, gxpaint.c,
+gxpcmap.c, gxpcopy.c, gxstroke.c)
+
+Makes major changes to the dithering algorithm for the color DeskJet and
+BubbleJet drivers, contributed by a user. (gdevcdj.c)
+
+Adds a contributed 12-bit RGB TIFF driver. (gdevtfnx.c)
+
+</pre><h3><a name="V3.60_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The printjob created by Ghostscript was called "Ghostscirpt"
+instead of "Ghostscript". (gp_os2.c)
+ - An "export" declaration was omitted from DllInit. (gp_mswin.c)
+
+Removes gp_get_clock (its interface was changed from calendar
+days/milliseconds to epoch seconds/nanoseconds in an undocumented,
+NON-BACKWARD-COMPATIBLE change in 3.51), and adds a new gp_get_realtime
+procedure that returns epoch seconds/nanoseconds. This too is a
+NON-BACKWARD-COMPATIBLE change; it is required because we overlooked the
+prior change in a batch of user-contributed code. (gp.h, gp_*.c)
+
+</pre><h3><a name="V3.60_Fonts"></a>Fonts</h3><pre>
+
+Adds Heavy as a synonym for Bold when doing intelligent font substitution.
+(gs_fonts.ps)
+
+</pre><h3><a name="V3.60_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The setup for the CCITTFax filters set the 'raster' element
+redundantly. (zfdecode.c)
+ - currentscreen and currentcolorscreen could give an error if the
+current screen was set with sethalftone (or, for currentscreen,
+setcolorscreen). (gs_dps1.ps)
+ - The font operators didn't work properly if a PostScript file
+redefined certain operator names. (gs_res.ps)
+ - The CCITTFax filters imposed a limit of 9999 Rows or Columns. The
+new limit is 32000. (zfdecode.c)
+ - Streams could get removed from a bookkeeping list prematurely, and
+wind up dangling. (zfile.c)
+ - The garbage collector didn't ask for large enough a mark stack,
+and only used half of what it got. (This was only a performance problem.)
+(igc.c)
+ - Two private names duplicated names in a vendor library. (zbseq.c)
+ - Type 1 fonts didn't enforce the maximum value of BlueScale, which
+caused some faulty fonts produced by Fontographer to produce incorrect
+output. (zfont1.c)
+ - cvs / cvrs / = didn't produce Adobe-compatible output.
+(gs_init.ps, iutil.h, iutil.c, zfileio.c)
+ - Multiple -I switches set the search path incorrectly. (gsmain.c)
+ - Many `const' declarations were missing. (icie.h, idparam.h,
+iref.h, iutil.h, idparam.c, iinit.c, ilocate.c, iname.c, interp.c, iparam.c,
+iutil.c, zcie.c, zfile.c, zgstate.c, ziodev.c, ztype.c)
+ - Fonts could wind up with a pointer to the wrong VM space, causing
+potential GC or save/restore confusion. (zfont2.c)
+ - upath could leave garbage on the stack if it failed. (gs_dps1.ps)
+
+Speeds up rasterizing characters into the cache a little. (gs_type0.ps)
+
+Changes the default limit on the size of cached characters from the maximum
+of (18 points or 5 times the "average" character size) to (18 points or 1%
+of the total cache size). (gs_init.ps)
+
+Adds the DecodedByteAlign parameter to the CCITTFax filters. (zfdecode.c)
+
+Updates some code for compatibility with the new fill_path driver procedure.
+(zupath.c)
+
+Replaces .set/currentfilladjust with .set/currentfilladjust2, and defines
+the former in terms of the latter. (gs_init.ps, zgstate.c)
+
+Extends the make[word]imagedevice operators to accept palette values of 16,
+24, and 32, for creating true-color image devices. (zdevice.c)
+
+Changes realtime to match the definition of gp_get_realtime. (zmisc.c)
+
+Removes the [.]currenttime operator. realtime provides interval timing in
+milliseconds; the %Calendar% IODevice provides calendar times. (zmisc.c)
+
+Extends the LZW filters to handle the PDF Predictor (pixel-differencing)
+option. (zfdecode.c, zfilter2.c, zfpdiff.c (deleted))
+
+</pre><h3><a name="V3.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The length of an image's data was sometimes calculated
+incorrectly, causing an error when converting PDF to PostScript.
+(pdf_draw.ps)
+ - If word spacing and/or text spacing was non-zero, an error could
+occur. (gs_pdf.ps)
+ - Text that was both filled and stroked caused an error.
+(gs_pdf.ps)
+
+</pre><h3><a name="V3.60_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - When closing an encoding filter stream whose target was also a
+filter, the latter could get called incorrectly with last = 1, possibly more
+than once, leading to premature EOD markers. (stream.c)
+ - The LZW-compatible encoder put out an incorrect end-of-data code.
+(slzwce.c)
+ - The LZW-compatible encoder didn't put out a reset code soon
+enough. (slzwce.c)
+ - Some `const' declarations were missing. (siscale.c)
+ - Doing a sgets on a closed stream could call sreadbuf, possibly
+causing an error. (stream.c)
+
+Adds a new (optional) set_defaults procedure to the stream template, which
+sets the stream parameters to default values. We only implement it for a
+few stream types. (scfx.h, scommon.h, slzwx.h, spdiffx.h, srlx.h,
+strimpl.h, scfd.c, scfe.c, slzwce.c, slzwd.c, slzwe.c, spdiff.c, srld.c,
+srle.c)
+
+Adds a new parameter to the CCITTFax filters, DecodedByteAlign. This is an
+integer N, which must be a power of 2 between 1 (2^0) and 16 (2^4), that
+specifies that decoded data scan lines are always a multiple of N bytes.
+The encoding filter skips data in each scan line from Columns to the next
+multiple of N bytes; the decoding filter pads each scan line to a multiple
+of N bytes. Default value: 1. (scfx.h, scfd.c, scfe.c)
+
+Increases the maximum width of a scan line for the CCITTFaxEncode filter to
+32000 pixels. (scf.h)
+
+</pre><h3><a name="V3.60_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Cached characters sometimes had extra blank space on the left,
+leading to some unnecessary bit-shuffling when imaging them. (gxccman.c)
+ - In rare cases, gray halftones called gx_color_load unnecessarily.
+(gxdither.c)
+ - The list of all-bands commands wasn't initialized/reset properly.
+(gxclist.c, gxclread.c)
+ - Rendering an anti-aliased character to a non-anti-aliased device
+didn't free the temporary bitmap, causing memory to be lost. (gxccache.c)
+ - Dash patterns where the offset exactly reached a run of length 0
+skipped over the 0-length run. (gsline.c)
+ - Rectangles closed with both lineto and closepath weren't
+recognized as rectangles. This is only a performance bug. (gxpath2.c)
+ - Because of a typo in a macro formal parameter list, a private name
+was duplicated. (gsstruct.h)
+ - Text display operations didn't update the current character in the
+enumerator structure during the fastest path through the code. This only
+matters to one very unusual commercial client. (gschar.c)
+ - Some `const' declarations were missing. (gsparam.h, gxistate.h,
+stdpre.h; gdevm1.c, gsalloc.c, gsfont.c, gsimage3.c, gsmemory.c, gsmisc.c,
+gspcolor.c, gstype1.c, gxfill.c, gxpcopy.c)
+
+Changes the header files to assume that gcc on Solaris defines
+__svr4__ and that, in this case, &lt;string.h&gt; has the right stuff in it.
+(memory_.h)
+
+Refactors the character cache to share structures with a similar cache
+used by band lists. Eventually the band list may be able to reference
+the character cache directly, saving a lot of copying. (gxbcache.h,
+gxfcache.h, gsfont.c, gxbcache.c, gxccache.c, gxccman.c)
+
+Speeds up getting the side bearing and width of a Type 1 charstring a
+little. (gxtype1.h, gstype1.c)
+
+Redesigns band lists so that they can cache character bitmaps as well as
+halftone bitmaps. Characters may be written for all bands, not just the
+band(s) they appear in, depending on the setting of the CHAR_ALL_BANDS_COUNT
+parameter in gxclbits.c. (gxcldev.h, gxclist.h, gxclbits.c, gxclist.c,
+gxclread.c)
+
+Adds G4 fax compression for band list bitmaps. (gxcldev.h, gxclist.c,
+gxclread.c)
+
+Incorporates the new set_defaults procedure into the memory-based band list
+implementation. (gxclmem.c)
+
+Implements a halftoning device that can be used in a device pipeline.
+(gdevht.h, gzht.h, gdevht.c, gxcht.c)
+
+Factors out imager state from the full graphics state. This division is
+preliminary and subject to change. (gxistate.h, gxop1.h, gzstate.h,
+gsline.c, gsstate.c, gstype1.c, gxhint*.c)
+
+Implements passing fill operations in the band list, except for pattern
+color or colored halftones. (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
+
+Implements passing stroke operations in the band list, except for pattern
+color or colored halftones. (gsline.h, gslparam.h, gxline.h, gzline.h,
+gsline.c; gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
+
+Implements the ability to represent halftoned characters in the band list.
+(gxccache.c)
+
+Starts to implement the ability to do halftoning during the rendering phase
+rather than before writing the band list (currently for black-and-white
+devices only). Doing this required NON-BACKWARD-COMPATIBLE changes to the
+interfaces of a few internal procedures:
+ gx_check_tile_size, gx_render_device_{color,gray}
+(gxdcolor.h, gxdht.h, gzht.h, gsht.c, gsimage1.c, gsmisc.c, gspcolor.c,
+gsstate.c, gxcht.c, gxclbits.c, gxdither.c, gxht.c)
+
+Implements passing clipping information in the band list. (gzcpath.h,
+gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c)
+
+Removes the gs_state * parameter from the device color fill_rectangle
+procedures and many of their callers, since it is no longer needed. This is
+a non-backward-compatible change to an internal API. (gdevmrop.h,
+gxdcolor.h, gxdraw.h, gxpaint.h, gdevmrop.c, gsimage.c, gspcolor.c, gxcht.c,
+gxclread.c, gxdraw.c, gxfill.c, gxht.c, gxpaint.c, gxstroke.c)
+
+Removes gxdevice.h from gzstate.h, since not all modules requiring access to
+the graphics state need to know the implementation of devices. This entails
+adding gxdevice.h to the include lists for some modules. (gxchar.h,
+gxcpath.h, gxcvalue.h, gxdevice.h, gxtype1.h, gzstate.h; gschar.c,
+gscoord.c, gsdevice.c, gsimage1.c, gsimage2.c, gsimage3.c, gspaint.c,
+gspath.c, gsstate.c, gstype1.c, gxccache.c, gxccman.c, gxhint1.c, gxhint2.c,
+gxhint3.c, gxpaint.c)
+
+Adds a compile-time option, ALPHA_LSB_FIRST, which causes alpha-sampled
+characters to be nibble-reversed in the cache. This was created for a
+specialized application and does not interact well with the rest of the
+code. (gsbitops.c)
+
+Substantially reduces the space required to represent 24- or 32-bit colors
+in the band list, by using more aggressive color differencing. (gxcldev.h,
+gxclist.c, gxclread.c)
+
+Changes the allocation of unique IDs for halftone tiles to use the gray
+level rather than the number of 1-bits as the increment to a base ID; this
+allows more efficient (delta) representation of halftone indices in the band
+list. (gxcldev.h, gxclist.c, gxclread.c, gxht.c)
+
+Substantially speeds up entering anti-aliased characters in the cache, by
+removing white space before compressing rather than vice versa.
+(gsbitops.c, gxccman.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.53"></a>Version 3.53 (1/10/96)</h2>
+
+<p>
+This is an anomalous, out-of-sequence release requested by a commercial
+licensee. It consists of 3.52 plus the following retrofits from 3.60
+through 3.63:
+ - PDF interpreter and pdf2ps;
+ - Type 1 rasterizer fixes;
+ - Type 1 rasterizer and polygon fill performance improvements;
+ - MS Windows and OS/2 fixes;
+ - A few other important fixes.
+It does NOT fix all problems reported since 3.52.
+
+<p>
+The list of changes below indicates which subsequent release was the source
+of each change. In several cases, minor editing of the change was required
+to make it compatible with 3.52.
+
+<h3><a name="V3.53_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ [3.61] The analysis of curve monotonocity in gxpcopy.c had an error.
+(gxpcopy.c)
+
+[3.63] Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather
+than 0.9a. (use.doc)
+
+[3.62] Notes that for Win32s, gs16spl.exe must be in the same directory as
+gswin32.exe. (use.doc)
+
+[3.62] Adds a reference to dos-psv, another "dumb terminal" user interface
+for Ghostscript intended for MS-DOS users. (README)
+
+[3.61] Adds a pointer to DEC's free pstotext utility. (README)
+
+[3.60] Adds a reference to ps_view.ps, a "dumb terminal" user interface for
+Ghostscript intended for MS-DOS users. (README)
+
+</pre><h3><a name="V3.53_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ [3.60] The geninit program (the implementation of COMPILE_INITS=1)
+didn't parse the command line properly, and didn't check for PostScript
+files properly. (geninit.c)
+ [3.60] ccfontab.c was omitted from the fileset. The easiest way to
+fix this was to rename it to icfontab.c. (gs.mak, int.mak, ccfontab.c)
+ [3.60] The definition of pdfread.dev did an ADDMOD, not a SETMOD.
+(int.mak)
+
+[3.60] Adds a -dNOFONTPATH switch to suppress any consultation of the
+FONTPATH variable or the GS_FONTPATH environment variable. (gs_fonts.ps,
+gs_init.ps)
+
+</pre><h3><a name="V3.53_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ [3.61] pdf2ps didn't write Widths or Encoding in the converted file,
+producing incorrect spacing and incorrect characters. (pdf_2ps.ps)
+ [3.60] ps2ascii left a value on the stack for each unrecognized
+character it processed, eventually causing a stackoverflow. (ps2ascii.ps)
+
+[3.61] Changes the rollconv.ps utility to produce files whose names conform
+to the 8.3 length restriction, and to reduce the fixed RAM overhead for
+Kanji fonts. (rollconv.ps)
+
+[3.60] Adds a utility for converting files produced by Macromedia's Rollup
+program to a Type 0 form directly usable by Ghostscript. (rollconv.ps)
+
+</pre><h3><a name="V3.53_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ [3.60] Because of a typo, the LaserJet drivers had incorrect
+margins. This was probably a new bug in 3.5x. (gdevdjet.c)
+ [3.60] A private name was duplicated. (gdevtfax.c)
+ [3.60] The x11alpha driver passed invalid colors to the X library.
+(gdevxalt.c)
+ [3.60] The x11alpha driver set the blue component of colors
+incorrectly. (gdevxalt.c)
+
+</pre><h3><a name="V3.53_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ [3.63] The test for WinExec failure on Win32 was incorrect.
+(gp_mswin.c)
+ [3.63] getenv was declared redundantly on OS/2. (gp_os2.c)
+ [3.63] gs16spl.c was missing &lt;string.h&gt;. (gs16spl.c)
+ [3.61] Printing didn't work in 32-bit MS Windows environments.
+(bcwin32.mak, gdevmswn.c, gp_mswin.c)
+ [3.61] There were some compatibility problems with IBM C. (os2.mak,
+gsdll.h, gdevpm.c, gp_os2.c)
+ [3.60] The printjob created by Ghostscript was called "Ghostscirpt"
+instead of "Ghostscript". (gp_os2.c)
+ [3.60] An "export" declaration was omitted from DllInit.
+(gp_mswin.c)
+
+[3.61] Adds a conditional to work around a bug in gcc 2.7.x (it didn't
+recognize that the target of a const T * might still be mutable through
+aliasing). (stdpre.h)
+
+</pre><h3><a name="V3.53_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ [3.61] Rasterizing a character in a Type 1 font with an invalid
+FontBBox left some garbage on the operand stack (bug introduced in 3.52 or
+3.60). (gs_type1.ps)
+ [3.61] The font substitution algorithm could fail or loop.
+(gs_fonts.ps)
+
+[3.60] Adds Heavy as a synonym for Bold when doing intelligent font
+substitution. (gs_fonts.ps)
+
+</pre><h3><a name="V3.53_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ [3.63] Invoking setpagedevice with an undefined key, even with
+Policy = 1, caused an error. (gs_setpd.ps)
+ [3.62] Setting the PageSize policy to 1 and then trying to set the
+page size caused an error if FIXEDMEDIA was selected. (gs_setpd.ps)
+ [3.61] Rotated characters were rendered incorrectly (bug introduced
+in 3.52). (gstype1.c)
+ [3.60] currentscreen and currentcolorscreen could give an error if
+the current screen was set with sethalftone (or, for currentscreen,
+setcolorscreen). (gs_dps1.ps)
+ [3.60] Streams could get removed from a bookkeeping list
+prematurely, and wind up dangling. (zfile.c)
+ [3.60] Multiple -I switches set the search path incorrectly.
+(gsmain.c)
+ [3.60] Fonts could wind up with a pointer to the wrong VM space,
+causing potential GC or save/restore confusion. (zfont2.c)
+ [3.60] upath could leave garbage on the stack if it failed.
+(gs_dps1.ps)
+
+[3.61] Extends the client API to allow for pushing values onto the operand
+stack. (imain.h, gs.c, gsmain.c)
+
+[3.61] Defines a .setdefaultscreen procedure that sets the default halftone
+screen, transfer function, and stroke adjustment for the current device.
+Changes selectdevice and setpagedevice so that they call .setdefaultscreen;
+setpagedevice calls .setdefaultscreen before calling the Install procedure,
+so that Install can set different parameters if it wishes. Note that
+setdevice does not do this. (gs_init.ps, gs_setpd.ps)
+
+[3.60] Speeds up rasterizing characters into the cache a little.
+(gs_type0.ps)
+
+[3.60] Changes the default limit on the size of cached characters from the
+maximum of (18 points or 5 times the "average" character size) to (18 points
+or 1% of the total cache size). (gs_init.ps)
+
+[3.60] Implements parts of the Type 1 BuildChar callout in C. (gs_type1.ps,
+zchar.c)
+
+</pre><h3><a name="V3.53_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ [3.62] If a PDF file substituted a calibrated color space for the
+DeviceGray or DeviceRGB color space using a ColorSpace resource, the
+PostScript file that pdf2ps produced from that PDF file caused an error.
+(gs_pdf.ps)
+ [3.61] Tf set the current text font twice, and interacted with
+pdf2ps in an awkward way. (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
+ [3.61] If a font had variant Widths, it could get confused in the
+cache with the underlying font. (pdf_font.ps)
+ [3.61] If a character appeared twice in an encoding and the font
+specified different Widths values for the two occurrences, the last Width
+would be used. We patched this to ignore zero Widths, which is not the
+correct solution but which almost always produces correct output.
+(pdf_font.ps)
+ [3.61] Arrays containing nulls didn't print out correctly (bug
+introduced in 3.60). (gs_init.ps)
+ [3.61] Some PDF files contain very large dictionaries, which caused
+a stackoverflow. (pdf_base.ps)
+ [3.60] The length of an image's data was sometimes calculated
+incorrectly, causing an error when converting PDF to PostScript.
+(pdf_draw.ps)
+ [3.60] If word spacing and/or text spacing was non-zero, an error
+could occur. (gs_pdf.ps)
+ [3.60] Text that was both filled and stroked caused an error.
+(gs_pdf.ps)
+
+[3.61] Speeds up the initial processing of PDF files by caching the map from
+page numbers to page objects, and by not scanning the outlines if we aren't
+producing PostScript output. (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.53_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ [3.60] When closing an encoding filter stream whose target was also
+a filter, the latter could get called incorrectly with last = 1, possibly
+more than once, leading to premature EOD markers. (stream.c)
+ [3.60] The LZW-compatible encoder put out an incorrect end-of-data
+code. (slzwce.c)
+ [3.60] The LZW-compatible encoder didn't put out a reset code soon
+enough. (slzwce.c)
+ [3.60] Doing a sgets on a closed stream could call sreadbuf,
+possibly causing an error. (stream.c)
+
+</pre><h3><a name="V3.53_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ [3.63] On 16-bit platforms, the computation of t2 and t3 in
+gx_curve_x_at_y could overflow, leading to incorrect output. (gxpcopy.c)
+ [3.61] glyphshow displayed a character with code 0 rather than the
+requested character (bug introduced in 3.60.) (gschar.c)
+ [3.61] If trimming white space around a character reduced its
+raster, the character was garbled in the cache (bug introduced in 3.60.)
+(gxccman.c)
+ [3.61] colorimage would incorrectly convert white pixels to black if
+the image color space was CMYK, the current color space was not CMYK, and
+the number of bits per pixel was 4 or 8. (gsimage2.c)
+ [3.61] Type 1 fonts that used the Flex feature applied hints to the
+path multiple times, causing dropouts, uneven stems, and other problems (bug
+probably introduced in 3.21). (gstype1.c)
+ [3.61] If a Type 1 font used the Flex feature within the accent of
+an accented character defined with seac, the shape of the accent could be
+distorted. (gxtype1.h, gstype1.c)
+ [3.61] If a Type 1 font changed hints using the hint replacement
+facility when the last operation was a closepath, the old hints would be
+applied a second time, distorting the shape. (gxhint2.c, gxhint3.c)
+ [3.60] Cached characters sometimes had extra blank space on the
+left, leading to some unnecessary bit-shuffling when imaging them.
+(gxccman.c)
+ [3.60] The list of all-bands commands wasn't initialized/reset
+properly. (gxclist.c)
+ [3.60] Because of a typo in a macro formal parameter list, a private
+name was duplicated. (gsstruct.h)
+ [3.60] Text display operations didn't update the current character
+in the enumerator structure during the fastest path through the code. This
+only matters to one very unusual commercial client. (gschar.c)
+
+[3.61] Adds an alternative implementation of the core path filling algorithm
+that is much faster on objects with curves but doesn't handle Y fattening.
+This is the implementation that will normally be used for rasterizing
+characters. This implementation rasterizes curves directly, without
+flattening them. (gxfixed.h, gxpath.h, gzpath.h, gxdraw.c, gxfill.c,
+gxpcopy.c)
+
+[3.61] Speeds up the flattening of curves substantially by omitting more
+redundant points. (gxpcopy.c)
+
+[3.61] Speeds up character bitmap compression a little more. (gsbitops.h,
+gdevabuf.c, gsbitops.c, gxccman.c)
+
+[3.61] Speeds up anti-aliased graphics a bit by computing a bounding box
+before converting from oversampling to alpha values, and by speeding up the
+bounding box computation itself. (gsbitops.h, gdevabuf.c, gsbitops.c,
+gxccman.c)
+
+[3.60] Speeds up getting the side bearing and width of a Type 1 charstring a
+little. (gxtype1.h, gstype1.c)
+
+[3.60] Adds a compile-time option, ALPHA_LSB_FIRST, which causes
+alpha-sampled characters to be nibble-reversed in the cache. This was
+created for a specialized application and does not interact well with the
+rest of the code. (gsbitops.c)
+
+[3.60] Substantially speeds up entering anti-aliased characters in the
+cache, by removing white space before compressing rather than vice versa.
+(gsbitops.c, gxccman.c)
+
+</pre>
+
+<h2><a name="Version3.52"></a>Version 3.52 (limited) (10/6/95)</h2>
+
+<p>
+This is an incremental release to fix a few problems in 3.51. Since it is
+being made in an environment with no network connectivity, it will probably
+not be released to the general public. ****** THE CHANGES MARKED WITH ***
+BELOW WERE LOST IN THE PROCESS OF SHUFFLING FILESETS BETWEEN ENVIRONMENTS.
+THEY ARE INCORPORATED IN 3.60 BUT NOT IN 3.52. ******
+
+<h3><a name="V3.52_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The fileset included a meaningless empty file. (acctest.ps)
+ *** The definition of pdfread.dev did an ADDMOD, not a SETMOD.
+(int.mak)
+
+</pre><h3><a name="V3.52_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The RunLengthEncode filter used with a dictionary argument could
+give a spurious error. (zfilter.c)
+ - The fast form of the 'dup' operator failed to check for stack
+overflow, which could lead to memory smashing. (interp.c)
+ *** Level 1 configurations gave errors during initialization.
+(ialloc.c, iinit.c, ireclaim.c)
+ *** Attempting to look up or insert a noaccess string as a
+dictionary key converted the string to a name rather than giving an error.
+(idict.h, idict.c)
+
+Adds a C implementation of the .dicttomark (&gt;&gt;) procedure. (gs_init.ps,
+zdict.c)
+
+*** Implements parts of the Type 1 BuildChar callout in C. (gs_type1.ps,
+ifont.h, zchar.c, zfont1.c, zfont2.c)
+
+</pre><h3><a name="V3.52_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Braces were missing in an initializer. (gxdcolor.h)
+ - Composite fonts with a non-zero translation in the FontMatrix
+positioned characters incorrectly. (gschar.c)
+ *** gsparam.c wouldn't compile with some versions of the Borland
+compiler. (gsparam.c)
+
+Speeds up the handling of curve segments in Type 1 fonts a little.
+(gstype1.c)
+
+Speeds up displaying very short strings a little. (gschar.c)
+
+*** Implements parts of the Type 1 BuildChar callout in C. (gxfont.h)
+
+</pre>
+
+<h2><a name="Version3.51"></a>Version 3.51 (9/27/95)</h2>
+
+<p>
+This is the first public release since 3.33. Its main features are a
+working setpagedevice, a working PDF interpreter, and a working PDF to PS
+converter.
+
+<h3><a name="V3.51_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The -dSHORTERRORS switch wasn't documented in enough places.
+(current.doc, use.doc)
+ - The DLL documentation was internally inconsistent. (dll.doc)
+ - The %pipe% file name syntax wasn't documented. (language.doc)
+
+</pre><h3><a name="V3.51_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - caption.ps wasn't installed properly. (unix-end.mak)
+ - geninit depended on $(gconfig_h) in an improper way. (geninit.c,
+int.mak, *.mak)
+ - One script lacked the #!/bin/sh header. (gsdj500)
+
+Adds the 24-bit color TIFF driver to all configurations that support
+black-and-white TIFF. (*.mak)
+
+</pre><h3><a name="V3.51_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - align.ps was omitted from the fileset. (psfiles.doc, align.ps,
+unix-end.mak)
+
+</pre><h3><a name="V3.51_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A driver had some \s in formal parameter lists. (gdevcdj.c)
+ - A driver had some improper &amp;s. (gdevtifs.c)
+ - The default MS Windows printer driver was very slow. (gdevwpr2.c)
+ - The (newly restructured) TIFF drivers could produce a memory
+access error. (gdevtifs.c)
+ - The CGM drivers referred to an obsolete structure member.
+(gdevcgm.c)
+ - The black-and-white H-P drivers didn't set the margins properly
+(again). (gdevdjet.c)
+ - Several of the most common printer drivers omitted some scan lines
+at the bottom of the page. (gdevprn.h, gdevprn.c)
+
+At the request of the main OS/2 developer, adds a printer device for OS/2.
+(gdevos2p.c, os2.mak)
+
+Makes many changes to the stcolor driver, submitted by the developer just
+before the release. (devices.doc, unix-end.mak, gdevstc.h, gdevstc*.c,
+stcinfo.ps, stcolor.ps, stcinfo.ps)
+
+</pre><h3><a name="V3.51_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - usertime (and realtime) were broken on VMS. (gp_vms.c)
+ - The 32-bit MS Windows DLL control file had a typo. (gsdll32.def)
+
+Removes the color inkjet drivers from the 16-bit Windows executable, because
+they overflow the 64K default data segment; adds PCX, TIFF, and BMP output
+formats. (bcwin.mak)
+
+</pre><h3><a name="V3.51_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A routine was declared 'private' inconsistently. (zcie.c)
+ - -dSHORTERRORS didn't remove enough non-Adobe error output.
+(gs_init.ps)
+
+</pre><h3><a name="V3.51_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The ProcSet relied on the presence of NullFont. (gs_pdf.ps)
+
+</pre><h3><a name="V3.51_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was an extraneous \ outside a macro. (gsline.c)
+ - Scaling up a black-and-white image could caused many scan lines to
+be inverted. (gsimage1.c)
+ - The initial clipping path did not take Margins into account
+properly. (gxdevice.h, gdevxalt.c, gscoord.c, gsdevice.c, gsdevmem.c,
+gsdparam.c, gspath.c)
+ - If banding was required, characters could come out as solid black
+rectangles. (gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.50"></a>Version 3.50 (limited) (9/24/95)</h2>
+
+<p>
+This is the last limited bug-fix release during beta test. The color
+DeskJet drivers are broken (they sometimes produce black rectangles instead
+of characters); we will fix this in the next release.
+<p>
+The following issues have been postponed to an unspecified future release:
+<ul>
+<li> - Filling areas often writes pixels twice, causing incorrect
+output
+with certain unusual RasterOp values. [1.814]
+<li> - The tar.gz archives should include a subdirectory like
+gs-3.46/ in
+the file names.
+<li> - The CCITTFaxDecode filter should skip initial junk if
+EndOfLine =
+true. [1844 8/24/95, NRE]
+</ul>
+
+<h3><a name="V3.50_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The name of the new 24-bit TIFF driver was incorrect in one place.
+(vms.mak)
+
+</pre><h3><a name="V3.50_Utilities"></a>Utilities</h3><pre>
+
+Adds a new utility to put a caption in a box at the bottom of each page.
+(caption.ps)
+
+</pre><h3><a name="V3.50_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PC display devices weren't page devices. Probably all the
+other display and window system devices should be made page devices too, but
+we aren't going to bother tracking them down. (gdevpcfb.c)
+ - There was a lot of duplicated code in the TIFF drivers.
+(gdevtifs.h, gdevtfax.c, gdevtfnx.c, gdevtifs.c)
+
+Updates the bjc600 / bjc800 drivers with changes from the author.
+(devices.doc, gdevbjc.h, gdevcdj.c)
+
+</pre><h3><a name="V3.50_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Building with COMPILE_INITS=1 produced a stackunderflow error.
+(gs_pdf_e.ps)
+ - An internal operator didn't have a name. (ztoken.c)
+ - Some error and information messages weren't in the Adobe format.
+(gs_fonts.ps, gs_init.ps)
+ - Some common Adobe compatibility operators weren't implemented:
+pagemargin, pageparams, setpagemargin. (gs_statd.ps, gs_lev2.ps)
+ - setpageparams set Margins rather than PageOffset. (gs_lev2.ps)
+ - setpage and setpageparams didn't set Orientation. (gs_lev2.ps)
+ - If the end of an input buffer fell just after the / of a literal
+name, a memory access error could occur. (iscan.c)
+ - When the interpreter returned from gs_[main_]run_string_continue,
+there could be an extra value on the operand stack. (iscan.h, istream.h,
+interp.c, iscan.c, zfileio.c, zfproc.c, zpaint.c, ztoken.c)
+ - If the character cache was disabled, or if a character was too
+large to be cached, returning from a font BuildChar procedure could do an
+erasepage. (zchar.c)
+
+A minor change was required for compatibility with the library change for
+image devices. (zdevice.c)
+
+Adds a -dSHORTERRORS switch that changes some of the common error and
+warning messages for greater Adobe compatibility. (gs_init.ps, gs_fonts.ps)
+
+</pre><h3><a name="V3.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If a CharProc for a Type 3 font did a BT/ET, the graphics state
+could get confused. (gs_pdf.ps)
+ - If a Tf occurred inside a BT/ET, it didn't take effect on
+subsequent BT/ETs. (gs_pdf.ps)
+
+</pre><h3><a name="V3.50_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was no way to control whether an image device was a page
+device. Fixing this required a NON-BACKWARD-COMPATIBLE CHANGE to
+gs_makewordimagedevice and gs_initialize_wordimagedevice to take a Boolean
+page_device argument. Fortunately, this change affects only a few obscure
+library clients. (gsdevice.h, gsdevmem.c)
+
+Adds translation capability to clipping devices. This isn't used anywhere
+yet. (gxcpath.h, gxcpath.c)
+
+Adds procedures for doing unaligned copy_xxx operations. These were added
+for a customer. (gxdevice.h, gsdevice.c)
+
+Changes the (undocumented) return value of gs_setcachedevice[2]: they used
+to return 1 if the current show operation was a non-displaying one
+(stringwidth or cshow), and now return 1 if the cache device was just
+installed. This change was required to fix the BuildChar page clearing bug
+in the interpreter. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but as far as
+I know, there aren't any external clients of these routines. (gschar.h,
+gschar.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.49"></a>Version 3.49 (limited) (9/20/95)</h2>
+
+<p>
+This is another bug-fix release during beta test. There are other bugs
+outstanding, but the ones I know about right now are all platform-specific.
+
+<h3><a name="V3.49_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - make.doc didn't mention that the .def files are needed to build a
+MS Windows executable. (make.doc)
+
+</pre><h3><a name="V3.49_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were some forward references to macro definitions in the
+makefiles. (int.mak, lib.mak)
+ - The default device for library configurations was the null page
+device, not the first device in DEVICE_DEVS. (ugcclib.mak)
+
+</pre><h3><a name="V3.49_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The BJC600 / BJC800 drivers were missing a header file.
+(gdevbjc.h, gdevcdj.c)
+ - A procedure name was used in two different files. (gdevcdj.c)
+ - The PCX driver didn't return an error code in case of failure.
+(gdevpcx.c)
+ - The X Windows driver produced some confusing warning messages.
+(gdevxini.c)
+ - Some names were duplicated between drivers. (gdevepsc.c)
+ - The X driver maintained its own, peculiar initial matrix even if
+Ghostview wasn't involved. (gdevx.c)
+
+With the permission of the author, changes the 24-bit TIFF license from GNU
+to Aladdin. (gdevtfnx.c)
+
+</pre><h3><a name="V3.49_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build scripts were out of sync with the makefiles (again).
+(modules.lis, vms.mak)
+
+</pre><h3><a name="V3.49_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - When the requested media size matched an available size exactly
+with a 90 degree rotation, Orientation was ignored. (zmedia2.c)
+
+Makes zcurrentdevice extern. (opextern.h, zdevice.c)
+
+</pre><h3><a name="V3.49_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A couple of places used memcpy instead of memmove. (gxclread.c)
+ - If a bitmap image was compressed with RLE compression in a band
+list, it would cause an error on decompression. (gxclread.c)
+ - The representation of colors in the band list was needlessly
+inefficient. (gxcldev.h, gxclist.c, gxclread.c)
+ - When using colored halftones, snowflak.ps crashed with an invalid
+memory access. More generally, any use of halftones could cause the garbage
+collector to make an invalid access. (gsstate.c)
+
+Adds some more code for paths in band lists, but again doesn't activate it.
+(gxcldev.h, gxpath.h, gzline.h, gsline.c, gspath1.c, gxclist.c, gxclread.c,
+gxpath.c)
+
+</pre>
+
+<h2><a name="Version3.48"></a>Version 3.48 (limited) (9/17/95)</h2>
+
+<p>
+This is the second bug-fix release during beta test. Among other things, it
+fixes a bug introduced in 3.47 that caused all PDF files to give an error.
+
+<p>
+******NOTE: the BJC600 and BCJ800 drivers do not work in this release,
+because we didn't get a file from the author in time. They will compile,
+but not run. This will be fixed in the next round.
+
+<h3><a name="V3.48_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Alan Barclay's contact information was wrong. (README)
+
+</pre><h3><a name="V3.48_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The linker path for Watcom C++ 10.5 was wrong. (wccommon.mak)
+ - There was a syntax error in a batch file. (pdf2ps.bat)
+ - The VMS build script didn't have entries for some printers.
+(vms.mak)
+
+Adds the bjc600 and bjc800 devices on all platforms that already include the
+color DeskJet devices. (*.mak)
+
+</pre><h3><a name="V3.48_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The H-P drivers didn't reposition the cursor properly at the
+beginning of pages after the first page, causing the image to be shifted
+down slightly and cut off at the bottom. (gdevdjet.c)
+ - The x11alpha driver was extremely slow. (gdevxalt.c)
+ - The -g switch by itself didn't work for the X Windows driver.
+(gdevxini.c)
+ - .installpagedevice can get a rangecheck on MS Windows because the
+HWColorMap can change spontaneously. (gs_setpd.ps)
+
+Updates the bjc600 and bjc800 drivers with new versions from Yves Arrouye.
+(gdevcdj.c)
+
+Adds a user-contributed driver that writes uncompressed 24-bit RGB TIFF
+images in a format that is standard on NeXT platforms. This driver is
+governed by the GNU license and is therefore separated from the rest of the
+Aladdin distribution. (gdevtfnx.c)
+
+</pre><h3><a name="V3.48_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There was an undefined reference to clock_gettime on some Unix
+systems. (gp_unix.c)
+ - The new gp_fopen routine had several errors. (gp_vms.c)
+
+</pre><h3><a name="V3.48_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some routines that should be main-instance-specific weren't.
+(imain.h, main.h, gsmain.c)
+ - sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
+devices. (zht2.c)
+ - Setting A4 paper as the default in gs_init.ps, or specifying
+-dPAPERSIZE, conflicted with -g. (gs_init.ps)
+ - The maximum value of a single-precision float wasn't correct on
+VAX systems. (math_.h, iscannum.c)
+ - Some integer expressions were passed as floating point arguments.
+(gs.c, zmedia2.c)
+ - Media selection in setpagedevice was broken (again), as of 3.46.
+(gs_setpd.ps, zmedia2.c)
+
+</pre><h3><a name="V3.48_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Substituted color spaces caused an error. (gs_pdf.ps,
+pdf_draw.ps)
+
+</pre><h3><a name="V3.48_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - If a halftone had no non-default components that matched the
+device's primary colors, the result would be a solid color rather than a
+halftone using the default screen. (gsht.c)
+ - sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
+devices. (gxht.h, gsht.c, gsht1.c)
+ - The new gp_fopen routine wasn't being used. (gsiodev.c)
+ - A mixing of float and fixed values caused a clipping region to be
+possibly incorrect by up to 1 pixel. (gspaint.c)
+ - A function definition was inconsistent with the prototype.
+(gspath1.c)
+
+Adds preliminary code for including paths in band lists, but doesn't
+activate any of it. (lib.mak, gxcldev.h, gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.47"></a>Version 3.47 (limited) (9/14/95)</h2>
+
+<p>
+This is a bug-fix release during beta test. It is meant to have no new
+functionality, although in the case of setpagedevice that's stretching
+things a little.
+
+<h3><a name="V3.47_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The Mac documentation still referred to IJG JPEG v5a rather than
+v6. (make.doc)
+ - The RasterOp texture device was identified incorrectly.
+(gdevmrop.c)
+ - use.doc and psfiles.doc didn't mention the PDF-related files.
+(psfiles.doc, use.doc)
+ - psview is no longer available. (README)
+ - current.doc didn't document the recognized setpagedevice keys.
+(current.doc)
+
+</pre><h3><a name="V3.47_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Many utility programs weren't included in the Unix 'install' list.
+(unix-end.mak)
+ - It wasn't at all convenient to make configurations without the BCP
+or other non-standard filters. (*.mak, int.mak, modules.lis, zfilter2.c,
+zfilterx.c)
+ - The gconfig.c and iconfig.c files weren't deleted after
+compilation. (int.mak, lib.mak)
+ - unix-end.mak referred to the nonexistent macros INT{1,2}_MAK.
+(unix-end.mak)
+ - The rules for building the dfax drivers were incorrect. (devs.mak)
+ - Omitting filter.dev produced an undefined reference. (int.mak)
+
+Adds a customer-contributed makefile for Microsoft Visual C++ 2.n under
+Windows NT. (msvcwint.mak)
+
+</pre><h3><a name="V3.47_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The JPEG utility didn't support the new progressive JPEG modes,
+and didn't invert Adobe Photoshop output as needed. (viewjpeg.ps)
+ - The printafm utility had a single font name wired in. (printafm,
+printafm.ps)
+ - The CIE lookup simulation had several bugs. (docie.ps)
+ - pdf2ps[.bat] were missing from the fileset.
+ - Files produced by pdf_2ps didn't include the GS_PDF ProcSet.
+(gs_pdf.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.47_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Bits read back from an EGA or VGA device were incorrect.
+(gdevpcfb.c)
+ - The 24-bit PCX run length compressor used a slow algorithm.
+(gdevpcx.c)
+ - gdevstc.c wouldn't compile with the Borland compiler. (gdevstc.c)
+ - There was a typo in the OS/2 PM driver. (gdevpm.c)
+ - .installpagedevice gets a rangecheck on X Windows because the
+HWColorMap can change spontaneously. (gs_setpd.ps)
+ - The left margin for the DeskJet 500 was wrong. (gdevdjet.c)
+ - The two notions of "margin" (offset of 0,0 from physical page
+corner vs. unprintable area around edges of physical page) were still
+confused. We've now fixed this for the H-P monochrome printers, but it's
+probably still confused for all other printers. (gdevprn.h, gdevdjet.c)
+
+</pre><h3><a name="V3.47_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows print spooler header file wasn't included when it
+needed to be, and some other Win32-specific changes were missing.
+(gsdll32.def, gp_mswin.c)
+ - Windows DLLs didn't parse "s in the command "arguments" correctly.
+(gsdll.c)
+
+</pre><h3><a name="V3.47_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - FAKEFONTS could get the font directories into inconsistent states.
+(gs_dps1.ps, gs_fonts.ps)
+ - The substitutions for Adobe's Myriad and Minion fonts weren't
+appropriate. (gs_fonts.ps)
+
+</pre><h3><a name="V3.47_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - If pathforall got an error computing the user-space points on a
+path, it could cause an invalid access. (zpath1.c)
+ - A 'private' declaration were omitted. (Why doesn't gcc catch
+this??) (zcie.c)
+ - Setting GS_FONTPATH produced a stackunderflow error.
+(gs_fonts.ps)
+ - currentscreen caused a typecheck if the screen had been set by
+setcolorscreen. (gs_dps1.ps)
+ - setcolorrendering tried to cache values computed from the color
+space even if the current color space wasn't a CIE space. (zcrd.c)
+ - Out-of-range numbers like 10E38 caused a floating point exception.
+(iscannum.c)
+ - Giving a closed readable file as input for a filter caused an
+invalidaccess. (files.h, interp.c, zfilter.c)
+ - setpagedevice opened the default device even with -dNODISPLAY.
+(gs_init.ps, gs_setpd.ps)
+ - realtime returned the same value as usertime. (gs_lev2.ps,
+zmisc.c)
+ - Storing a local value into systemdict caused some redundant code
+to be executed. (zdict.c)
+ - Files with a very long first line could cause a rangecheck error.
+(gs_init.ps)
+ - The PageOffset page device parameter was ignored. (gs_setpd.ps)
+ - The Orientation page device parameter wasn't handled properly.
+(gs_setpd.ps, idparam.h, idparam.c, zmedia2.c)
+ - setpagedevice could set device parameters twice, with an
+incomplete update the first time. (gs_setpd.ps)
+
+</pre><h3><a name="V3.47_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Readers confused the internal pdfrun procedure with the public
+runpdf procedure. (pdf_*.ps)
+
+</pre><h3><a name="V3.47_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Closed streams had a NULL state pointer, causing problems for some
+clients. (stream.c)
+ - Group 4 decoding could get an ioerror if an end-of-buffer occurred
+in a horizontal code sequence between a makeup code and the termination
+code. (scfd.c)
+
+</pre><h3><a name="V3.47_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some 'private' declarations were omitted. (Why doesn't gcc catch
+these??) (gdevmrop.c, gxht.c)
+ - Patterns could produce bad output in the band list. (gxclist.c)
+ - RasterOp wasn't implemented at all for 2- or 4-bit devices. (In
+this release, we implement only a subset, and without handling transparency
+properly.) (gdevm2.c, gdevm4.c, gdevmrop.c)
+ - Drawing operations and text sometimes didn't apply the RasterOp
+when they should, and vice versa. (gxdcolor.h, gxdraw.c)
+ - setcolorrendering tried to cache values computed from the color
+space even if the current color space wasn't a CIE space. (gscie.h,
+gscie.c)
+ - Some CIE color spaces produced very distorted colors. (gscie.c)
+ - setpagedevice opened a window even with -dNODISPLAY. (gsdevice.c,
+gsdparam.c)
+ - realtime returned the same value as usertime. (gp.h, time_.h,
+gp_*.c)
+ - The library level attempted to handle the Orientation page device
+parameter. (gxdevice.h, gdevbit.c, gsdevice.c, gsdparam.c, gspath.c)
+ - Severely non-linear CIE encoding/decoding functions produced
+seriously skewed colors near the ends of the color value range. This
+problem can now be alleviated, at a significant cost in performance, by
+changing configuration parameters at the beginning of gscie.h. (gscie.h,
+gscie.c)
+ - Files FTP'ed in binary mode weren't being opened properly on VMS.
+(gp.h, gp_*.c, gsiodev.c)
+ - A header file had an inconsistent declaration. (math_.h)
+
+Adds a new gp_get_usertime procedure to gp.h. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, affecting only platform implementors. It
+was necessary to fix the realtime/usertime bug. (gp.h, time_.h, gp_*.c)
+
+Adds a new gp_fopen procedure to gp.h. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, affecting only platform implementors. It was necessary to fix the
+binary file problem on VMS. (gp.h, gp_*.c)
+
+</pre>
+
+<h2><a name="Version3.46"></a>Version 3.46 (limited) (9/4/95)</h2>
+
+<p>
+This is the "serious beta test" release for the next public release. It
+finishes implementing RasterOp in the graphics state, and the remaining
+commonly used parts of setpagedevice.
+
+<h3><a name="V3.46_Documentation"></a>Documentation</h3><pre>
+Documents some possible problems when building with DJGPP v2.0-beta.
+(make.doc)
+
+Adds documentation on using Ghostscript as a PDF interpreter. (use.doc)
+
+Notes linking problems with the Watcom 10.0 environment. (make.doc)
+
+</pre><h3><a name="V3.46_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The rule for $(ccfonts).dev was wrong. (gs.mak)
+
+Makes some additional filters into 'features'. (devs.mak, gs.mak)
+
+Splits off 2 new makefiles from gs.mak, which had gotten very large: lib.mak
+(graphics library) and int.mak (interpreters). (tar_cat, tar_cat.bat,
+*.mak)
+
+Adds a new 'config-clean' target that may be helpful in changing
+configuration definitions. (gs.mak)
+
+Notes in the relevant makefiles that on Unix and DVX systems, one should not
+edit 'makefile' or the concatenated makefile, but should edit the individual
+subfile and run tar_cat. (ansihead.mak, cc-head.mak, dgc-head.mak,
+gcc-head.mak, devs.mak)
+
+Updates the Watcom makefiles to handle Watcom release 10.5, in which many
+executables moved to different directories. (watc.mak, watcwin.mak,
+wccommon.mak)
+
+Adds a pdf2ps shell script. (pdf2ps, pdf2ps.bat)
+
+Adds a -sFONTMAP= switch to specify the name of the Fontmap file.
+(gs_fonts.ps)
+
+Adds a -u&lt;name&gt; switch to undefine a name from systemdict. (interp.h, gs.c,
+iinit.c)
+
+Adds a -dFIXEDRESOLUTION switch to parallel -dFIXEDMEDIA. Makes -g set
+FIXEDMEDIA and -r set FIXEDRESOLUTION. (gs_init.ps, gs_setpd.ps, gs.c)
+
+Changes some build procedures to avoid problems with read-only source files.
+(gs.mak, int.mak, lib.mak)
+
+</pre><h3><a name="V3.46_Utilities"></a>Utilities</h3><pre>
+
+Adds a utility for emulating the CIE color mapping algorithms. (docie.ps)
+
+</pre><h3><a name="V3.46_Drivers"></a>Drivers</h3><pre>
+
+Changes the x11alpha device so that it uses 32-bit pixels with 8 bits of
+alpha. (gdevxalt.c)
+
+Updates the Epson Stylus Color driver to Gunther Hess's release 1.17.
+(devs.mak, unix-end.mak, devices.doc, stcolor.ps, gdevstc.h, gdevstc*.c)
+
+Updates the alternate X drivers for the change from PageSize to MediaSize.
+(gdevxalt.c)
+
+Makes Duplex an optional parameter of printer devices rather than of all
+devices. (gdevprn.h, gxdevice.h, gsdparam.c, gdevdjet.c, gdevprn.c)
+
+</pre><h3><a name="V3.46_Platforms"></a>Platforms</h3><pre>
+
+Makes pipes (%pipe% file syntax) a selectable option on Unix platforms,
+rather than always being included. (ansihead.mak, cc-head.mak,
+gcc-head.mak, ugcclib.mak, unixtail.mak)
+
+</pre><h3><a name="V3.46_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - colorimage, and the dictionary form of image with
+MultipleDataSources = true, didn't check that all the data sources were of
+the same type. (zpaint.c)
+ - colorimage, and dictionary-type images with MultipleDataSources =
+true, usually didn't work properly with files. (zpaint.c)
+ - grestoreall left a dangling pointer to the transfer function
+cache. (gsstate.c)
+ - Changes made by setpagedevice could get 'lost' and not installed
+in the current page device dictionary. (gs_setpd.ps)
+ - The Install procedure was called before the new page device
+dictionary had gotten installed. (gs_setpd.ps)
+ - If a grestore/grestoreall/restore/setgstate operation switched
+page devices, the new page device didn't get installed properly.
+(gs_setpd.ps, opextern.h, zdevice2.c, zdps1.c)
+ - If the current screen was a Type 1 halftone, currentscreen and
+currentcolorscreen returned frequency = 60, angle = 0 rather than the
+Frequency and Angle from the halftone (see Adobe TN 5085). (gs_dps1.ps,
+gs_init.ps)
+ - setscreen with a Type 1 halftone dictionary didn't insert the
+frequency and angle into the dictionary (see Adobe TN 5085). (gs_dps1.ps)
+ - upath didn't include a trailing moveto in the bounding box.
+(gs_dps1.ps, zpath1.c)
+ - setpagedevice didn't automatically rotate or scale the image when
+necessary. (gs_setpd.ps, zmedia2.c)
+
+Moves the RasterOp operators to a separate file. (iutil.h, iutil.c,
+zgstate.c, zrop.c)
+
+Eliminates the unnecessary "wrapper" around .setdevice. (zdevice2.c)
+
+Establishes the convention that all interpreter callbacks into PostScript
+code use procedure names that begin with %; documents this in gs_init.ps.
+Changes Type1BuildChar and Type1BuildGlyph to %Type1BuildChar and
+%Type1BuildGlyph. (gs_init.ps, gs_type1.ps, zfont0.c, zfont1.c)
+
+Changes image / imagemask / colorimage for the new library API. (zimage2.c,
+zpaint.c)
+
+Reorganizes font loading to make compiled fonts and Fontmap interact better
+with each other. (gs_ccfnt.ps, gs_fonts.ps, gs_init.ps, gs_res.ps)
+
+Implements parameter collection for the new CIEBasedDEF[G] color spaces, but
+doesn't actually implement the color spaces themselves. (icie.h, zcie.c,
+zcrd.c)
+
+Renames iconfig.c as iconf.c to avoid problems with read-only source files.
+(iconf.c)
+
+</pre><h3><a name="V3.46_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDF to PostScript conversion didn't work. (pdf_main.ps)
+
+Shifts most of the work in the PDF interpreter from the reader to the
+ProcSet. This simplifies the code considerably and also makes it easier to
+modify. (gs_pdf.ps, pdf_draw.ps, pdf_font.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.46_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - 'static' was omitted in a place that some compilers require it.
+(gxccman.c)
+ - Some compilers don't allow a variable with the same name as a
+preprocessor macro with arguments. (gscie.c)
+ - Some places did a "return -1" rather than a proper error return.
+(gsdevice.c, gxclist.c)
+ - An external declaration had a typo. (gsrop.h)
+ - An extra semicolon upset some compilers. (gzpath.h)
+ - Printer devices that didn't use the standard macros for generating
+their procedure vector wound up being considered as non-page devices.
+(gdevprn.c)
+ - Some compilers truncated identifiers longer than 31 characters.
+(gscspace.h, zcie.c, gscie.c)
+ - upath didn't include a trailing moveto in the bounding box.
+(gspath.h, gspath1.c)
+ - RasterOp value 126 returned an incorrect result. (gsroptab.c)
+
+Finishes implementing RasterOp in the graphics state. (gdevmrop.h, gsrop.h,
+gsropt.h, gsstate.h, gxbitmap.h, gxcindex.h, gxdcolor.h, gxdevice.h,
+gzstate.h, gdevmrop.c, gscolor.c, gsdevice.c, gsimage.c, gsimage1.c,
+gsimage2.c, gsimage3.c, gspcolor.c, gsrop.c, gsstate.c, gxacpath.c,
+gxccache.c, gxcht.c, gxcmap.c, gxdither.c, gxdraw.c, gxht.c)
+
+Changes forwarding devices so they forward get_bits by default. This
+probably doesn't affect any existing code. (gxdevice.h, gsdevice.c)
+
+Changes the API for gs_image[mask]_init to pass a structure rather than a
+very large number of scalars. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE,
+motivated by the addition of further image parameters to support RasterOp.
+Since there are no external clients of the library yet, it shouldn't matter.
+(gsimage.h, gsimage.c, gslib.c, gxccache.c)
+
+Redefines the device "page size" as being the size of the actual media,
+changing the name of the gx_device PageSize member to MediaSize, the name of
+the PageSize device parameter to .MediaSize (but keeping PageSize as
+equivalent, for backward compatibility), and the name of the
+gx_device_set_page_size procedure to gx_device_set_media_size (keeping the
+old name as a macro). THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. It is
+necessary to make setpagedevice work, and to avoid confusion about what
+"page size" means. It potentially affects any device driver, but almost
+none of the device drivers distributed with Ghostscript are affected, and
+those have been updated. (gsparam.h, gxdevice.h, gsdevice.c, gsdparam.c,
+gspath.c)
+
+Renames gconfig.c as gconf.c to avoid problems with read-only source files.
+(gconf.c)
+
+Adds an API procedure for setting a bitmap pattern. (gscolor2.h,
+gspcolor.c)
+
+</pre>
+
+<h2><a name="Version3.45"></a>Version 3.45 (limited) (8/27/95)</h2>
+
+<p>
+The purpose of this release is to fix some minor bugs reported by commercial
+licensees, and to add two enhancements: optional RenderTable interpolation
+for CIE color, and reducing the temporary space used during character
+caching (also for a licensee).
+
+<h3><a name="V3.45_Documentation"></a>Documentation</h3><pre>
+
+Notes that the only valid return values from get_alpha_bits are 1, 2, and 4.
+(drivers.doc)
+
+Notes that the get_bits driver procedure will return a pointer to aligned
+data, but does not require the caller's data area to be aligned.
+(drivers.doc)
+
+</pre><h3><a name="V3.45_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Many of the printer and file output drivers in devs.mak still
+included gdevprn.$(OBJ) in their dependencies. (devs.mak)
+ - PDEVH was used before it was defined. (devs.mak)
+ - GENCONF_XE was used before it was defined. (unixhead.mak,
+unix-end.mak)
+
+Makes it possible to switch sfile implementations without editing gs.mak.
+(gs.mak)
+
+Makes it possible to specify alternate compiled font tables without editing
+gs.mak. (gs.mak)
+
+Allows quoted arguments in @-files, e.g.,
+ -sOutputFile="a file name with spaces"
+(gs.c)
+
+</pre><h3><a name="V3.45_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The ps2ascii script could fail to delete temporary files in case
+of an abnormal exit. (ps2ascii)
+
+</pre><h3><a name="V3.45_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The MS Windows printer capability test was wrong. (gdevwpr2.c)
+ - The MS Windows and OS/2/PM displays weren't page devices.
+(gdevwdib.c, gdevpm.c)
+
+Gets rid of all direct references to dev-&gt;PageSize in drivers. (gdevl256.c,
+gdevvglb.c)
+
+</pre><h3><a name="V3.45_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The 32-bit MS Windows configuration file for the Borland C++
+compiler was missing from the fileset. (bcc32.cfg, tar_gs)
+
+Makes the printer devices in the OS/2 implementation capable of outputting
+directly to the print spooler. (use.doc, gp_os2.c)
+
+Makes printing on Windows NT and Windows 95 use the printer queue.
+(gp_mswin.c, gswin32.rc)
+
+</pre><h3><a name="V3.45_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Copying a null device produced an uninitialized pointer.
+(gsdevice.c)
+ - The dictionary returned by deviceinfo wasn't read-only.
+(gs_lev2.ps)
+ - If a filter's init code failed, an entry on the operand stack
+(usually the top) could be smashed. (files.h, zfile.c, zfilter.c)
+
+Adds const in a few places that needed it. (zwppm.c)
+
+Adds interpolation to the CIE RenderTable lookup. (icie.h, zcie.c, zcrd.c)
+
+</pre><h3><a name="V3.45_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Allows PDF files with control-character garbage at the end, and up to 250
+characters of garbage at the beginning. The latter is only supported by
+runpdf, not by run. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.45_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A 1-D CCITTFaxDecode stream could give an error if an input buffer
+boundary fell just before a 0-length termination code. (scfx.h, scfd.c)
+
+</pre><h3><a name="V3.45_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A variable was used before being set, which could cause band
+devices to become confused when processing colored halftones. (gxclist.c)
+ - Some of the color and tile bookkeeping for band lists was wrong
+(as of 3.44), causing tiled areas to be filled with garbage. (gxclist.c,
+gxclread.c)
+ - Colored Patterns showed up blank on devices whose native
+representation of `black' was a non-zero value. The fix removes the
+'cached' member of the gx_device structure, and requires monobit memory
+devices to have a palette; this is a NON-BACKWARD-COMPATIBLE CHANGE for
+anyone who was foolish enough to statically initialize a gx_device structure
+without using the macros in gxdevice.h or gdevprn.h. (gdevmem.h,
+gxdevice.h, gxdevmem.h, gdevm1.c, gdevmrop.c, gsdevice.c, gxcpath.c,
+gxdither.c)
+
+Provides the framework for band devices to implement alpha (anti-aliasing).
+(gxcldev.h, gdevprn.c, gsdevice.c, gxclist.c, gxclread.c)
+
+Implements an efficient API for enumerating paths using device coordinates.
+(gspath.h, gxpath.h, gzpath.h, gspath1.c, gxpath2.c)
+
+Changes the character cache logic so that when rasterizing large
+anti-aliased characters, it converts the oversampled bits to alpha values on
+the fly rather than waiting until it has rasterized the entire character.
+This saves a lot of temporary space, at the expense of some extra time and
+lower quality results for Type 3 characters that don't use a single fill or
+imagemask operation to draw the character. This enhancement requires adding
+a member to the gx_device structure (max_fill_band), which is a
+NON-BACKWARD-COMPATIBLE CHANGE for badly written drivers (see above).
+(gxchar.h, gxdevice.h, gxpaint.h, gdevabuf.c, gschar.c, gspaint.c,
+gxccache.c, gxccman.c, gxfill.c)
+
+Changes the palette member of memory devices from gs_string to
+gs_const_string. (gdevmem.h, gxdevmem.h, gdevmem.c, gdevm1.c)
+
+Starts to decouple halftoning from the graphics state machinery, so
+it can be applied after banding rather than before. (gxdcolor.h,
+gxdht.h, gxdither.h, gzht.h, gxcmap.c, gxdither.c, gxdraw.c)
+
+Starts to decouple path filling from the graphics state machinery, so
+that we can pass paths through band lists. (gxpaint.h, gxfill.c)
+
+Adds interpolation to the CIE RenderTable lookup. This is optional, enabled
+by #define CIE_RENDER_TABLE_INTERPOLATE in gscie.h. (gscie.h, gxctable.h,
+gscie.c, gxctable.c)
+
+</pre>
+
+<h2><a name="Version3.44"></a>Version 3.44 (limited) (8/21/95)</h2>
+
+<p>
+This includes a few bug fixes, but its main purpose is to add two new
+features: monobit and 8-bit gray-scale RasterOp (at the driver level, not at
+the gstate level yet), and (compressed) band lists in RAM. Of course, these
+new features may have introduced new bugs!
+
+<h3><a name="V3.44_Documentation"></a>Documentation</h3><pre>
+Adds contact information for a user working on NeXT machines. (README)
+
+Notes that Ghostscript runs on FreeBSD. (README)
+
+Adds copy_rop (the RasterOp operation) to the driver interface.
+(drivers.doc)
+
+Adds FONTPATH information for more operating systems. (use.doc)
+
+</pre><h3><a name="V3.44_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The tar_cat script needed a #!/bin/sh to execute correctly on all
+platforms. (tar_cat)
+ - There were a number of minor errors in the makefiles. (gs.mak,
+unixhead.mak)
+ - Level 2 configurations without command lists had two undefined
+references. (gs.mak)
+ - Some shells required an extra ';' to terminate an 'if' command.
+(ugcclib.mak, unix-end.mak, unixtail.mak)
+
+Updates the JPEG code to the officially released version 6 of the IJG
+library. See jpeg.mak for information on where to find this library.
+(jpeg/*, jpeg.mak, *.mak, modules.lis)
+
+Adds a definition of XEAUX to the makefiles to parallel CCAUX, primarily for
+cross-compilation environments. All references to &lt;some-program&gt;$(XE) must
+be replaced by $(&lt;SOME-PROGRAM&gt;_XE), where some-program={$(GS), ansi2knr,
+echogs, genarch, genconf, geninit}. This is a NON-BACKWARD-COMPATIBLE
+CHANGE, required in order for the makefiles to work in cross-compiled
+environments. (For non-cross-compiled environments, it currently doesn't
+matter.) (gs.mak, *.mak)
+
+</pre><h3><a name="V3.44_Utilities"></a>Utilities</h3><pre>
+
+Updates ps2ai.ps to version 2.13. (ps2ai.ps)
+
+Changes all the utility shell scripts to include #!/bin/sh, to use exec, and
+to pass the original arguments using "$@". (bdftops, font2c, gsbj, gsdj,
+gslj, gslp, gsnd, wftopfa)
+
+</pre><h3><a name="V3.44_Drivers"></a>Drivers</h3><pre>
+
+Adds the requirement that all page-oriented devices (i.e., those that use
+gdevprn.h and implement the print_page procedure) include page.dev in their
+dependencies and use $(SETPDEV) rather than $(SETDEV) in their makefile rule
+bodies. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. Without this change, the
+command list logic (over 25K of unnecessary object code) would have to be
+included in every configuration. (gs.mak, devs.mak, echogs.c)
+
+Adds a user-contributed driver for the Okidata Microline (IBM compatible)
+dot matrix printers. (gdevokii.c)
+
+Adds copy_rop (the RasterOp operation) to the driver interface. Currently,
+only monobit and 8-bit gray-scale devices implement it. (gxdevice.h,
+gsdevice.c)
+
+Adds the ability to read back bits from the display to the x11 devices.
+(x_.h, gdevx.c, gdevxalt.c)
+
+</pre><h3><a name="V3.44_Platforms"></a>Platforms</h3><pre>
+
+Makes some minor changes to support QNX. (stat_.h)
+
+Removes the mswinprn driver from the 16-bit Windows configuration, because
+the 64K default data segment overflowed. (bcwin.mak)
+
+</pre><h3><a name="V3.44_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Type 1 fonts didn't accept packed arrays for Subrs or OtherSubrs.
+(zchar1.c, zfont1.c)
+ - TBCP-encoded files (yes, I know there isn't supposed to be any
+such thing) didn't automatically activate TBCP decoding. (gs_init.ps)
+ - Fonts with invalid FID entries weren't detected. (zfont.c)
+
+Speeds up dictionary operations slightly by removing redundant checks for
+nulls. (zdict.c)
+
+Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
+(gs_l2img.ps, gs_lev2.ps, igstate.h, zcrd.c)
+
+Adds access operators for RasterOp and transparency in the graphics state.
+(They don't actually do anything yet.) (zgstate.c)
+
+</pre><h3><a name="V3.44_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDFDocEncoding was missing characters 24-31. (gs_pdf_e.ps)
+
+Moves the definition of pdfmark from systemdict to userdict so that Adobe
+PostScript files won't think the interpreter is a distiller. (gs_pdf.ps)
+
+</pre><h3><a name="V3.44_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some JPEG images had bands of garbage alternating with bands of
+valid data. IJG v6 fixed this -- see above.
+ - With FPU_TYPE = -1, the cosine routine returned incorrect values
+for angles above 270 degrees. (gsmisc.c)
+ - CIE color conversion didn't work on 16-bit systems. (gscie.h,
+gscie.c)
+
+Partially implements reducing the intermediate space for rasterizing
+anti-aliased characters by compressing the oversampled representation to an
+alpha array incrementally. (gdevmem.h, gxchar.h, gxdevmem.h, gdevabuf.c,
+gschar.c, gspaint.c, gxccman.c)
+
+Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
+(gscie.h, gscspace.h, gscie.c)
+
+Completes the implementation of band lists in RAM. To select this feature,
+change the definition of cl_impl in gs.mak from clfile to clmem. (Someday
+we'll make this easier.) (gxclmem.h, gxclmem.c)
+
+Finishes implementing RasterOp and transparency at the driver level for
+monobit and 8-bit gray-scale devices, and implements some of the framework
+for general multiple-bit-per-pixel devices. See drivers.doc for
+documentation. (gsropt.h, gxcldev.h, gxclist.h, gdevm1.c, gdevm8.c,
+gdevmem.c, gdevmrop.c, gschar.c, gxclist.c, gxclread.c)
+
+Implements the ability to include commands applicable to all bands, rather
+than an individual band, in the band list. Eventually this will be used for
+passing halftones through the band list. (gxcldev.h, gxclist.h, gxclist.c)
+
+Adds support for 2-bit-deep 'word' memory devices. (gdevmem.h, gxdevmem.c,
+gdevm2.c)
+
+Changes the initialization for memory devices so that they determine their
+polarity from the device for which they are buffering the image (if any).
+This is a subtle change. (gdevmem.h, gdevmem.c, gdevm1.c, gsdevmem.c)
+
+</pre>
+
+<h2><a name="Version3.43"></a>Version 3.43 (limited) (8/10/95)</h2>
+
+<p>
+Fixes a few more minor bugs, and changes FEATURE selection back to
+essentially the way it was before 3.41.
+
+<h3><a name="V3.43_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A ~ was missing in a URL. (README)
+
+Adds information about an Amiga port of Ghostscript. (README)
+
+Removes a file called gs.1.c, which appears to be an obsolete version of
+gs.1.
+
+Adds DCX documentation to the PCX driver. (We don't support DCX yet, but we
+might in the future.) (gdevpcx.c)
+
+Adds information about getting Type 1 fonts from H-P if you have an H-P
+PostScript printer. (use.doc)
+
+</pre><h3><a name="V3.43_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The auxiliary programs wouldn't compile with ANSI compilers that
+don't accept K&amp;R syntax. (ccgs, gs.mak, ugcclib.mak, *head.mak,
+unixtail.mak, echogs.c, genarch.c, genconf.c, geninit.c)
+
+Reinstates FEATURE_DEVS in the makefiles, getting rid of FEATURE1..10. THIS
+IS A NON-BACKWARD-COMPATIBLE CHANGE, but it puts things back the way they
+were before 3.41, with one exception: compiling the PostScript
+initialization code into the executable is now a separate macro
+COMPILE_INITS with a definition of 0 or 1, instead of the ccinit 'feature'.
+(gs.mak, *.mak, fonts.doc, make.doc)
+
+Adds a CCLEAF macro to the makefiles, for optimizing the compilation of
+modules containing only leaf procedures. (gs.mak, *.mak)
+
+Adds a CONFIG makefile variable that helps in maintaining multiple variants
+in a single directory. (gs.mak, *.mak)
+
+</pre><h3><a name="V3.43_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - An extern for exit() (in &lt;stdlib.h&gt;) was omitted. (gp_vms.c)
+
+</pre><h3><a name="V3.43_Fonts"></a>Fonts</h3><pre>
+
+Reorganizes the compiled font facility so that fonts can be compiled and
+turned into a library by third parties. (gs.mak, font2c.ps, gs_ccfnt.ps,
+ccfont.h, iccfont.c, ccfontab.c)
+
+</pre><h3><a name="V3.43_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - internaldict was implemented as a dictionary in systemdict and an
+operator in userdict, rather than as an operator in systemdict. This caused
+a noaccess error when loading certain Type 1 fonts. (gs_init.ps,
+gs_type1.ps)
+ - xfonts couldn't handle modified encodings. (zfont2.c)
+
+Changes the build date printout in the help message to YYYY-MM-DD. (gs.c)
+
+Adds native support for Multiple Master fonts (WeightVector). (zfont1.c)
+
+Implements sin and cos more efficiently (by table lookup with linear
+interpolation) on machines with slow (or no) floating point. (zmath.c)
+
+Separates out the code for 'reading' the .ps initialization files, for the
+new COMPILE_INITS arrangement. (imain.h, gconfig.c, gsmain.c, iconfig.c,
+iccinit0.c, iinit.c)
+
+</pre><h3><a name="V3.43_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxDecode filter could read up to 3 bytes beyond EOD.
+This fix doesn't quite cover all cases, but at least it makes things better.
+(ghc.h, sbhc.c, scfd.c)
+
+</pre><h3><a name="V3.43_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - After a nocurrentpoint error from a show operation with a
+composite font, the bookkeeping was confused and could cause an access
+error. (gschar.c)
+ - xfonts couldn't handle modified encodings. (gsccode.h, gxchar.h,
+gxfont.h, gxxfont.h, gschar.c, gxccache.c)
+
+Makes .charboxpath able to use cached character information. (gxchar.h,
+gschar.c)
+
+Adds native support for Multiple Master fonts (OtherSubrs 14-18).
+(gxfont1.h, gstype1.c)
+
+Improves the hashing functions for the character cache. (gxfcache.h,
+gxccman.c)
+
+Adjusts the character oversampling algorithm to reduce thickening for
+devices with alpha capability. (gsbitops.c)
+
+Improves the encoding of the band list for certain kinds of small
+rectangles. (gxcldev.h, gxclist.c, gxclread.c)
+
+Implements sin and cos efficiently on machines with slow (or no) floating
+point. (gxfarith.h, gsmatrix.c, gsmisc.c, gspath1.c)
+
+</pre>
+
+<h2><a name="Version3.42"></a>Version 3.42 (limited) (8/2/95)</h2>
+
+<p>
+Fixes a few significant problems in 3.41, and brings the DLL code up to
+date.
+
+<h3><a name="V3.42_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - language.doc still referred to rectappend rather than .rectappend.
+(language.doc)
+
+Adds documentation on the Macintosh port. (readme, make.doc)
+
+Updates the DLL documentation. (dll.doc)
+
+Documents the BCP and TBCP filters as non-experimental. (language.doc)
+
+</pre><h3><a name="V3.42_Procedures"></a>Procedures</h3><pre>
+
+Changes the build date printout to YYYY-MM-DD. (gs_init.ps)
+
+</pre><h3><a name="V3.42_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build script had gotten out of sync with the makefiles
+(again). (vms.mak, modules.lis)
+
+Brings the MS Windows and OS/2 platforms up to date with the rest of the
+code, including DLL support for OS/2. (os2.mak, gsdll*.def, gdevswn.c,
+gdevpm.c, gdevwdib.c, gp_mswin.c, gp_os2.c, gsdll.c, gsmain.c)
+
+Adds a new platform-specific routine gp_do_exit, as an alias for the C
+library `exit' call. (gp.h, gsdll.c, gsmain.c, gp_*.c)
+
+</pre><h3><a name="V3.42_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - .forgetsave at the outermost level didn't clear the l_new bit,
+causing changes to be undone improperly. (isave.c)
+ - A 'void' formal parameter list upset some compilers (as it should
+have). (gsmain.c)
+
+Adds a .charboxpath operator that appends to the current path the bounding
+boxes of the characters of a string. (zchar.c, zchar1.c)
+
+</pre><h3><a name="V3.42_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A procedure was declared private inconsistently. (siscale.c)
+
+</pre><h3><a name="V3.42_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The library test program didn't do a necessary initial gsave.
+(gslib.c)
+ - The fix for landscape monobit images in 3.41 could smash memory.
+(gsimage1.c)
+ - 1-pixel-wide lines drawn with image or imagemask still disappeared
+sometimes. (gsimage.c)
+
+Does some more preparatory work for the implementation of command lists in
+RAM. (gdevprn.h, gxclio.h, gxclist.h, gxclfile.c, gxclist.c, gxclread.c)
+
+Adds a gs_charboxpath procedure that appends to the current path the
+bounding boxes of the characters of a string. (gschar.h, gscpm.h,
+gstype1.h, gxchar.h, gxpath.h, gxtype1.h, gzstate.h, gschar.c, gspaint.c,
+gstype1.c, gxpath.c)
+
+</pre>
+
+<h2><a name="Version3.41"></a>Version 3.41 (limited) (7/27/95)</h2>
+<p>
+Another incremental release with bug fixes and customer-requested
+enhancements. This release was intended to include the full setpagedevice
+media matching and adjustment algorithm, but we discovered some
+architectural problems during development, and have postponed it.
+
+<h3><a name="V3.41_Documentation"></a>Documentation</h3><pre>
+
+Replaces the build instructions for NeXTSTEP with more up-to-date and
+accurate ones. (make.doc)
+
+Notes that some extra manual steps are required when cross-compiling.
+(make.doc)
+
+Documents how to define new 'features' in the makefile. (gs.mak)
+
+</pre><h3><a name="V3.41_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The build rule for ccinit.dev was circular. Fixing this required
+a small but NON-BACKWARD-COMPATIBLE change in the way that features are
+selected in the makefiles (FEATURE_DEVS replaced by FEATURE1..10). (*.mak,
+fonts.doc, make.doc)
+
+Changes the build rule for gconfig.h to be less likely to overrun MS-DOS's
+command line length limit. (gs.mak)
+
+Adds a -dFIXEDMEDIA switch to indicate that the media size should be
+considered fixed after initialization. (gs_init.ps)
+
+</pre><h3><a name="V3.41_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - traceimg.ps incorrectly referred to .stdout. (traceimg.ps)
+ - prfont.ps didn't display unencoded characters correctly.
+(prfont.ps)
+ - ps2epsi didn't give correct bounding box information. (ps2epsi,
+ps2epsi.ps)
+ - ps2epsi produced DSC comments that didn't fully conform to the
+Adobe standard. (ps2epsi, ps2epsi.ps)
+
+Allows viewpbm.ps to take multiple files on the command line. (viewpbm.ps)
+
+</pre><h3><a name="V3.41_Drivers"></a>Drivers</h3><pre>
+
+Adds a preliminary, contributed PNG driver. THIS IS NOT USABLE YET -- DON'T
+TRY TO USE IT. (png.mak, gdevpng.c)
+
+Increases the maximum allowable scan line width for the TIFF drivers from
+5183 pixels to 12863 pixels. (scf.h)
+
+</pre><h3><a name="V3.41_Platforms"></a>Platforms</h3><pre>
+
+Updates the MS Windows DLL code to export the new, suspendable run_string
+interface. (gsdll.h, gsdll.c, dll.doc)
+
+</pre><h3><a name="V3.41_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - There were several errors in cfonts.mak. (cfonts.mak)
+ - The compiled fonts option didn't offer both free and standard
+configurations. (gs.mak)
+ - A bug in the handling of Encoding resources prevented compiled
+fonts from working. (gs_res.ps)
+
+Adds a little more support for CID-keyed fonts. They still aren't anywhere
+near usable. (gs_cidfn.ps, gs_type1.ps)
+
+Adds a new Fontmap for Solaris 2.3. (Fontmap.Solaris)
+
+Adds support for Type 4 fonts (Type 1 fonts with their own BuildChar
+procedures), including the CCRun procedure in internaldict. (gs_fonts.ps,
+gs_res.ps, gs_type1.ps)
+
+</pre><h3><a name="V3.41_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - showpage and copypage didn't honor NumCopies in a page device.
+(gs_setpd.ps, zdevice2.c)
+ - currentpagedevice returned incorrect information if the current
+device wasn't a page device. (gs_setpd.ps)
+ - currentpagedevice didn't guarantee the presence of InputAttributes
+and OutputAttributes. (gs_setpd.ps)
+ - The l_new bit wasn't set properly when a dictionary changed from
+packed to unpacked keys, leading to unnecessary saves. (idict.c)
+ - Streams requiring intermediate buffering could read ahead too far,
+causing input data to be skipped. (zfilter.c)
+ - cshow didn't reset the font to the base font when calling the
+procedure. (zchar2.c)
+ - The Install procedure in a page device didn't set the default CTM.
+(gs_setpd.ps, zmatrix.c)
+ - findlibfile didn't handle special files like %stdin correctly.
+(zfile.c)
+ - setpagedevice didn't implement media matching. (gs_setpd.ps,
+zdevice2.c, zmedia2.c, zmatrix.c)
+ - Some floating point numbers didn't print out with enough digits to
+read back in with the identical value. (iutil.c)
+ - Integers that overflowed 31 bits (but not 32 bits) were converted
+to negative integers rather than correct positive reals. (iscannum.c)
+
+Removes an experimental operator that called the image scaling/interpolation
+code. (zimage2.c)
+
+Adds a -sSUBSTFONT=&lt;fontname&gt; switch that substitutes the given font for all
+unknown fonts, bypassing the normal intelligent substitution algorithm.
+(gs_fonts.ps)
+
+Adds the Revision system parameter. (zmisc2.c)
+
+Adds a .knownundef operator that does an undef and returns true iff the key
+was formerly present. (zdict.c)
+
+Makes the maximum length of names be 256 if EXTEND_NAMES is being used, 16K
+otherwise. (inamedef.h, iname.c)
+
+Adds internaldict. (gs_init.ps, iinit.c)
+
+Adds support for Type 4 fonts. (bfont.h, zchar.c, zchar1.c, zfont1.c,
+zfont2.c)
+
+Changes .encodingdict to EncodingDirectory, for compatibility with Adobe
+interpreters. (gs_init.ps, gs_kanji.ps, gs_res.ps)
+
+Adds superexec, an undocumented operator that is equivalent to exec but
+suppresses all invalidaccess checks. NOT COMPLETED YET; currently superexec
+is equivalent to exec. (zcontrol.c)
+
+</pre><h3><a name="V3.41_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - .stderr was used but is no longer defined. (pdf_base.ps)
+
+</pre><h3><a name="V3.41_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Not all streams initialized their state pointer. (stream.c,
+sfile.c, sfileno.c)
+
+Adds a filter for the smoothed image scaling algorithm. Eventually this
+filter will require very little intermediate storage; right now it still
+needs to buffer the entire intermediate image. (siscale.h, siscale.c)
+
+Increases the maximum allowable scan line width for the CCITTFaxEncode
+filter from 5183 pixels to 12863 pixels. (scf.h)
+
+</pre><h3><a name="V3.41_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - setpagedevice didn't update NumCopies correctly. (gdevprn.c,
+gsdparam.c)
+ - The newly optimized code for monobit bitmaps could cause an
+out-of-bounds memory access and/or make unaligned references. (gsimage1.c)
+ - setpagedevice with unknown keys could cause an /undefined error.
+(gsdparam.c)
+ - cshow didn't reset the font to the base font when calling the
+procedure. (gschar.h, gschar.c)
+ - The Install procedure in a page device didn't set the default CTM.
+(gzstate.h, gschar.c, gscoord.c, gsdevice.c)
+ - Very non-linear EncodeABC procedures in a color rendering
+dictionary could produce very inaccurate results. (gscie.h, gscie.c)
+ - The line_ptrs pointer in memory devices didn't get relocated if
+the bitmap was moved during garbage collection, leading to memory smashing.
+(gdevmem.c)
+ - setpagedevice didn't implement media matching. (gsdparam.c,
+gscoord.c)
+ - 'word' memory devices weren't recognized as memory devices.
+(gdevmem.c)
+ - makeimagedevice allocated, and then didn't free, an unnecessary
+palette for monobit devices. (gsdevmem.c)
+ - The hack for 1-bit-wide images didn't work consistently,
+particularly in landscape orientation. (gsimage.c, gsimage0.c)
+
+Adds an .IgnoreNumCopies page device parameter that causes #copies and
+NumCopies to be ignored. (gxdevice.h, gsdevice.c, gsdparam.c)
+
+Removes the .IsPageDevice device parameter. (gsdparam.c)
+
+Converts the image scaling/interpolation code to a filter. (gximage.h,
+gsimage.c, gsimage0.c, gsimage3.c)
+
+Adds support for Type 4 fonts. (gxfont.h)
+
+Adds a default implementation of parameter lists, designed to be usable
+easily from C code. (gsparam.h, gsparam.c)
+
+</pre>
+
+<h2><a name="Version3.40"></a>Version 3.40 (limited) (6/28/95)</h2>
+
+<p>
+This is another incremental limited release for delivery of a couple of
+important bug fixes (pixel 'holes' in rotated images, setpagedevice errors
+on some platforms) and an enhancement (architectural support for band lists
+in RAM).
+
+<h3><a name="V3.40_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The FTP location of the EMX DLLs was incorrect. (use.doc)
+
+</pre><h3><a name="V3.40_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A couple of build rules for IJG v6 were omitted. (jpeg.mak)
+
+</pre><h3><a name="V3.40_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - prfont.ps wouldn't print more than 128 unencoded characters.
+(prfont.ps)
+
+</pre><h3><a name="V3.40_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - setpagedevice often caused /undefined errors on MS Windows and
+OS/2 platforms. (gdevmswn.c, gdevpm.c)
+ - The VMS module list had gotten out of sync with the makefiles
+(again). (modules.lis)
+
+</pre><h3><a name="V3.40_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A couple of casts betwen char * and byte * were omitted.
+(gsmain.c)
+ - gs_[main_]run_file_open wasn't exported properly. (imain.h,
+main.h, gsmain.c)
+
+</pre><h3><a name="V3.40_Streams"></a>Streams</h3><pre>
+
+Changes the DCTEncode filter to return an error if it wasn't supplied enough
+data before being closed. (sdcte.c)
+
+</pre><h3><a name="V3.40_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The coordinate computations for all filling operations were
+slightly inaccurate, leading to pixel 'holes' in rotated images. (gxdda.h,
+gximage.h, gsimage*.c, gxdraw.c, gxfill.c)
+
+Undoes an "optimization" (inlining the normal, fast case of a procedure)
+that actually hurt performance. (gxclist.c)
+
+Refactors the command list code so that it in the future it will be able to
+store command lists either in RAM or in the file system. (gdevprn.h,
+gxcldev.h, gxclio.h, gxclist.h, gdevprn.c, gxclfile.c, gxclist.c,
+gxclread.c)
+
+Changes the interface to the path filling code to take separate X and Y
+adjustment values. (gxpaint.h, gspaint.c, gxfill.c)
+
+Makes the command list allocate a small tile cache if the device doesn't
+need halftones. (gxclist.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.39"></a>Version 3.39 (limited) (6/24/95)</h2>
+
+<p>
+This is again an incremental release primarily for delivery of enhancements
+(suspendable string input in particular) to commercial customers, and with a
+few bug fixes.
+
+<h3><a name="V3.39_Documentation"></a>Documentation</h3><pre>
+Notes that PDF files and repositioning PostScript files do not work if
+Ghostscript was compiled with VAX C. (use.doc)
+
+Notes the requirement for EOD lookahead in decoding filters. (strimpl.h)
+
+</pre><h3><a name="V3.39_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were a number of undefined or used-before-defined variables
+in the makefiles. (devs.mak, dvx-head.mak, unixhead.mak, gs.mak)
+ - Some commands in the makefile exceeded the MS-DOS limit of 120
+characters. (gs.mak)
+
+Adds a -P and -P- switch to control whether the search path automatically
+includes `.' as its first element. Moves the default value of this choice
+(SEARCH_HERE_FIRST) from gsmain.c to iminst.h. (iminst.h, gs.c, gsmain.c,
+use.doc)
+
+Makes some makefile changes in anticipation of the IJG v6 release. (*.mak)
+
+</pre><h3><a name="V3.39_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - font2c generated invalid C procedure names from font names that
+contained non-alphanumerics other then '-'. (font2c.ps)
+ - font2c generated a single element of incorrect type for numeric
+arrays of zero length. (font2c.ps)
+
+</pre><h3><a name="V3.39_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build scripts had gotten out of sync (again). (vms*.mak,
+modules.lis)
+
+</pre><h3><a name="V3.39_Fonts"></a>Fonts</h3><pre>
+
+Makes the FONTPATH directory scanner accept fonts that begin with
+%!PS-AdobeFont or %!FontType1 with no following `-'. (gs_fonts.ps)
+
+</pre><h3><a name="V3.39_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - eq and ne on arrays or dictionaries required read access.
+(zrelbit.c)
+ - An include was missing. (zcsindex.c)
+ - .forgetsave at the outermost level didn't reset the l_new flag in
+changed slots, leading to an anomalous (although perhaps not harmful) state.
+(isave.c)
+ - Dictionary growing or unpacking would both save and free the old
+keys array, leading to a dangling reference. (idict.c)
+
+Changes gs_interpret so that for .quit with a negative operand &lt;= -100,
+gs_interpret returns e_Fatal rather than the operand. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, but as far as we know, it doesn't affect
+anyone. (interp.c)
+
+Adds an API to allow feeding string input to the interpreter in pieces.
+(errors.h, imain.h, main.h, gs.c, gsmain.c, interp.c, zcontrol.c, zfilter.c)
+
+Adds new predicates .identeq and .identne that test "pointer equality", even
+for numbers and strings. (iutil.h, iutil.c, zrelbit.c)
+
+Changes a few uses of return_error to return in places that don't lead
+directly to a PostScript error. (idict.c)
+
+</pre><h3><a name="V3.39_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The logic for skipping up to a 0xff byte when decoding JPEG data
+could skip too much. (sdctd.c, sjpegd.c)
+ - If a buffer boundary fell in the middle of, or just before, an
+EOD, some decoding filters could stop reading too soon. (sbcp.c, smtf.c,
+sstring.c)
+
+Makes some minor changes in anticipation of the IJG v6 release.
+(gsjmorec.h)
+
+</pre><h3><a name="V3.39_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A declaration should have been removed. (gsdll.c)
+ - The library initialization/termination API wasn't declared.
+(gslib.h, gsinit.c, gsmain.c)
+ - A variable and a preprocessor macro with the same name confused
+VAX C. (gxclist.c)
+ - Image devices with depth 2-8 and only gray shades in the palette
+didn't set color_info correctly. (gsdevice.c)
+
+Speeds up unrotated black-and-white images further by making them render
+directly into a memory device when possible. (gxdevmem.h, gsimage1.c)
+
+</pre>
+
+<h2><a name="Version3.38"></a>Version 3.38 (limited) (6/18/95)</h2>
+
+<p>
+This release incorporates several customer-requested enhancements (cleaner
+separation of the graphics library from the interpreter, option for &gt;64K
+names, true garbage collection of names, better handling of halftones on
+band devices). It is intended primarily for those customers, but is
+intended as a dry run for the next public release.
+
+<h3><a name="V3.38_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - gx_bitmap had not been updated to gx_tile_bitmap.
+(drivers.doc)
+
+</pre><h3><a name="V3.38_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The man page extension in the Unix makefiles was still $(manext),
+not $(man1ext). (unix-end.mak)
+ - 'make clean' didn't remove gs_init.c. (gs.mak)
+
+Restructures the makefiles to better separate the language interpreters from
+the graphics core. (gs.mak)
+
+Adds a -dNOPROMPT switch to suppress the end-of-page prompts (but still wait
+for the user to type a newline). This is different from -dNOPAUSE, which
+suppresses both the prompts and the wait. (gs_init.ps)
+
+</pre><h3><a name="V3.38_Utilities"></a>Utilities</h3><pre>
+
+Replaces the mergeini.ps program with an equivalent (actually slightly
+better) version written in C. (gs.mak, *.mak, psfiles.doc, use.doc,
+geninit.c)
+
+</pre><h3><a name="V3.38_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The color DeskJet drivers wouldn't compile with a K&amp;R compiler,
+because some of the procedure definitions weren't in the restricted syntax
+that ansi2knr requires. (gdevcdj.c)
+ - The color DeskJet drivers wouldn't compile because of a bug in
+Sun's cc. (gdevcdj.c)
+
+Changes the BJ-10e(x) margins to be identical to those of the BJ-200.
+(gdevbj10.c)
+
+Changes the LaserJet margins in response to a user's request. (gdevdjet.c)
+
+Changes the psmono driver to produce slightly larger files that execute
+faster on typical Level 1 printers. (gdevpsim.c)
+
+Changes the psmono driver so that it does not scale the image to fit the
+page size, but instead scales it to be the same physical size on the page.
+THIS IS A NON BACKWARD COMPATIBLE CHANGE. However, for full-page images, it
+will not have any visible effect. (gdevpsim.c)
+
+</pre><h3><a name="V3.38_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There were some problems associated with printing in 32-bit
+Windows environments. (gp_mswin.c)
+ - The IBM RS/6000 needs both &lt;time.h&gt; and &lt;sys/time.h&gt;. (time_.h)
+
+Adds the PDF interpreter to the standard MS Windows configuration.
+(bcwin.mak)
+
+</pre><h3><a name="V3.38_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The entry for Courier-BoldItalic in cfonts.mak incorrectly named
+it as Courier-Italic. (cfonts.mak)
+ - The files for Courier-Italic in cfonts.mak were inconsistently
+named ncrri instead of ncri. (cfonts.mak)
+ - The rules in cfonts.mak covered only the fonts distributed with
+the free versions of Ghostscript, omitting some of the standard set of 35.
+(cfonts.mak)
+ - The maximum number of stem hints per character in Type 1 fonts
+wasn't large enough for complex Asian characters. (gxtype1.h)
+
+Adds a -dNOFONTMAP switch to suppress loading the Fontmap file.
+(gs_init.ps, gs_fonts.ps)
+
+</pre><h3><a name="V3.38_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - One of the GC marking routines for halftones had a typo,
+possibly leading to an invalid access. (zht2.c)
+ - The GC could store beyond the end of the mark stack,
+possibly smashing some characters of a string or name. (igc.c)
+ - If the allocator allocated a new ref object from a
+freelist, the bookkeeping for the current ref object could get
+confused. (ialloc.c)
+ - The GC didn't remove names properly from the hash table.
+(iname.c)
+ - If a DOS editor added a ^Z to the end of an initialization file,
+an error occurred during initialization. (gs_init.ps)
+ - If an initialization file had any lines longer than 128
+characters, .skipeof would get an error. (gs_init.ps)
+ - makepattern could create structures in global VM pointing to
+structures in local VM. (zpcolor.c)
+ - The default color rendering dictionary didn't specify large enough
+ranges for some intermediate values. (gs_lev2.ps)
+ - Files being freed by a restore weren't unlinked properly, leading
+to dangling pointers. (zfile.c)
+ - The interpreter used strlen without a prototype. (interp.c)
+ - Indexed or Separation colors with a CIE base or alternate space
+didn't work. (zcie.c)
+ - The Watcom C 10.0 compiler produced incorrect code for an
+overlapping structure assignment. (zcsindex.c)
+
+Removes limit of 64K names, if EXTEND_NAMES is defined at compile
+time. (*.mak, idebug.h, iminst.h, iname.h, gs.c, gsmain.c, idebug.c,
+iname.c)
+
+Makes the garbage collector really collect names. (iname.h, inamedef.h,
+isstate.h, igc.c, iname.c, isave.c)
+
+Restructures some files to better separate the language interpreters
+from their support code. (gconfig.c, iconfig.c, iinit.c)
+
+Restructures some files to better separate the language interpreters
+from the graphics core. (iastate.h, iastruct.h, ialloc.c)
+
+Allows the operands of cshow to be in either order on the stack. Adobe
+interpreters apparently allow this, even though it's not documented.
+(zchar2.c)
+
+Adds a hack in cvs to truncate non-standard operator names, rather than
+giving a rangecheck, to work around the "max err string" problem in some
+common error handlers. (ztype.c)
+
+Changes the print string for unregistered operators from operator_0x... to
+@0x.... (iutil.c)
+
+Changes the garbage collector so it tries to allocate a large mark stack, to
+avoid going into its 'slow' mode if the mark stack overflows. (igc.c)
+
+</pre><h3><a name="V3.38_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Stroked text used the text matrix, rather than just the
+CTM, for scaling the line width, which could lead to inappropriately
+wide lines. (gs_pdf.ps)
+ - Fonts based on other than a 1000-unit scale (i.e., with a
+FontMatrix other than [0.001 0 0 0.001 0 0]) didn't scale Widths to
+match the font scaling. (pdf_font.ps)
+
+Implements the PDF 1.1 color space extensions, except for Lab space.
+(gs_pdf.ps, pdf_draw.ps)
+
+Implements the Rotate key for pages. (pdf_main.ps)
+
+</pre><h3><a name="V3.38_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - When the garbage collector closed a file stream, the stream
+incorrectly attempted to free the buffer. (stream.c)
+
+Separates out some stream implementations to better distinguish the
+graphics core from the language interpreters. (smtf.h, sfilter1.c,
+smtf.c, srld.c, srle.c)
+
+</pre><h3><a name="V3.38_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Compressing characters being entered in the cache could cause an
+invalid memory access. (gsbitops.c)
+ - The setbbox bounding box check was slightly inaccurate.
+(gsdps1.c)
+ - makepattern could create structures in global VM pointing to
+structures in local VM. (gscolor2.h, gspcolor.c)
+ - Out-of-range values during CIE color conversion led to random
+results. (gscie.c)
+ - On output devices with non-inverted Y axes (such as MS Windows),
+Interpolated images would smash memory. (gsimage.c)
+ - 90 degree rotated zero-width images caused an invalid memory
+access. (gsimage1.c)
+ - If #copies was zero, showpage could create bogus empty output
+files. (gdevprn.c)
+ - PageCount didn't take #copies into account. (gsdevice.c)
+ - Indexed or Separation colors with a CIE base or alternate space
+didn't work. (gscie.h, gscie.c)
+
+Implements triangular line caps and joins, in anticipation of adding
+a PCL5 interpreter. (gsline.h, gxstroke.c)
+
+Moves some procedures around for better separation of library from
+interpreter. (gsinit.c, gslib.c, gsmain.c, gsmisc.c)
+
+Moves the standard allocator from the interpreter to the library.
+(gsalloc.h, gxalloc.h, gxobj.h, gsalloc.c)
+
+Starts to change the representation of paths slightly to make it possible to
+identify arcs. This change is backward-compatible for all code except
+callers of gx_path_add_arc. (gxpath.h, gspath1.c, gxpath.c, gxstroke.c)
+
+Adds some framework for keeping track of RasterOp and "transparency" in the
+graphics state, although these don't actually have any effect yet.
+(gsrop.h, gsropt.h, gsstate.h, gxcldev.h, gzstate.h, gsrop.c, gsstate.c,
+gxclist.c, gxclread.c)
+
+Adds a compile-time option for using the Adobe RGB&lt;-&gt;CMYK conversion rules.
+(gxdcconv.c)
+
+Adds a driver procedure for identifying band devices. This change is
+backward-compatible for all existing devices. (gdevmem.h, gxdevice.h,
+gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
+
+Speeds up gray-scale images on devices requiring banding, and enables
+further optimizations, by reintroducing the distinction between banded and
+non-banded devices. (gxdevice.h, gdevprn.c, gsimage1.c)
+
+Reduces the size of the band list for halftoned images by encoding tile
+indices more compactly. (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
+
+Extends the band list so it can cache more than 256 halftone tiles, and to
+make better decisions about tile caching. (gxcldev.h, gxclist.h, gxclist.c,
+gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.37"></a>Version 3.37 (limited) (5/11/95)</h2>
+
+<p>
+Another bug fix release distributed only to customers.
+
+<h3><a name="V3.37_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Some documentation about parameter lists was incorrect.
+(gsparam.h)
+ - The documentation did not note that one cannot "pipe" PDF files
+into the interpreter. (use.doc)
+
+Adds documentation for the BJC-600 to devices.doc. (devices.doc)
+
+</pre><h3><a name="V3.37_Procedures"></a>Procedures</h3><pre>
+
+Changes the debugging switch for OS calls from -Z0 to -Ze, and adds -Z0 for
+high-level GC tracing. (use.doc, gp_unifs.c, ialloc.c, igc.c)
+
+</pre><h3><a name="V3.37_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The ps2ascii shell script included an erroneous @d. (ps2ascii)
+
+Enhances ps2ascii to output color and rectangle fill/stroke information if
+COMPLEX is defined. (ps2ascii.ps)
+
+</pre><h3><a name="V3.37_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - the BJC-600 driver didn't handle BitsPerPixel correctly.
+(gdevcdj.c)
+
+</pre><h3><a name="V3.37_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Some buggy Type 1 fonts confused the Type 1 font reader.
+(gs_fonts.ps, gs_type1.ps, pdf_font.ps)
+
+</pre><h3><a name="V3.37_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - .registerencoding didn't accept mixedarrays, which could cause an
+error if an encoding was loaded long after initialization. (zfont2.c)
+ - If a program did a lot of saves and restores, the garbage
+collector could get invoked much too often. (iastate.h, ialloc.c, igc.c,
+isave.c)
+
+Changes the name of the rectappend operator to .rectappend, since it isn't a
+standard PostScript operator. (zdps1.c)
+
+</pre><h3><a name="V3.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDF files didn't interact properly with ps2ascii. (gs_pdf.ps)
+ - setdash wouldn't accept a packed array. (zgstate.c)
+ - PDF files with incorrect generation numbers in object references
+produced an error rather than a warning. (pdf_base.ps)
+
+</pre>
+
+<h2><a name="Version3.36"></a>Version 3.36 (limited) (5/4/95)</h2>
+
+<p>
+This is a limited-distribution release for distributing bug fixes to a few
+customers.
+
+<h3><a name="V3.36_Documentation"></a>Documentation</h3><pre>
+Adds some environment variables to the man page. (gs.1)
+
+</pre><h3><a name="V3.36_Procedures"></a>Procedures</h3><pre>
+
+Adds the psmono device to all 32-bit configurations. (*.mak)
+
+Moves the psmono and 'bit' devices to DEVICE_DEVS12 to avoid exceeding the
+120-character maximum length of the DOS command line. (*.mak)
+
+</pre><h3><a name="V3.36_Drivers"></a>Drivers</h3><pre>
+
+Changes the pgm[raw] and ppm[raw] drivers so they do *not* automatically
+switch to pbm or pgm/ppm respectively if this is possible for the particular
+page being rendered; adds pgnm[raw] and pnm[raw] drivers that *do* do this.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. However, existing programs will
+still work; they just won't produce the smallest and simplest possible
+output. (devs.mak, gdevpbm.c)
+
+</pre><h3><a name="V3.36_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A multi-level restore didn't free gstates allocated by
+intermediate saves, causing some global VM to be lost until a garbage
+collection. (isave.h, isave.c, zvmem.c)
+
+Speeds up restore by skipping the scan of the character cache if no new
+names have been allocated since the save. (zfont.c)
+
+Extends the client API to allow for popping return values off the operand
+stack. (imain.h, gs.c, gsmain.c)
+
+</pre><h3><a name="V3.36_Library"></a>Library</h3><pre>
+
+Modifies the character oversampling algorithms to help prevent dropouts.
+(gsbitops.c, gschar.c)
+
+</pre>
+
+<h2><a name="Version3.35"></a>Version 3.35 (internal) (5/2/95)</h2>
+
+<p>
+This is another internal "snapshot" version.
+
+<h3><a name="V3.35_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Some of the file names in the `man' page had gotten out of date.
+(gs.1)
+ - Two references to .PageCount hadn't been changed to PageCount.
+(language.doc, devarch.doc)
+
+</pre><h3><a name="V3.35_Procedures"></a>Procedures</h3><pre>
+
+Puts writeppmfile back in the standard Unix and DV/X configurations, since
+gsftopk uses it. Also puts the PDF reader in all 32-bit configurations.
+(*.mak)
+
+Moves the BMP devices to DEVICE_DEVS11 to avoid exceeding the 120-character
+maximum length of the DOS command line. (bcwin.mak, bcwin32.mak, os2.mak)
+
+</pre><h3><a name="V3.35_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - unix-lpr.sh didn't handle 32-bit devices. (unix-lpr.sh)
+ - unix-lpr.sh still used the name .PageCount rather than PageCount.
+(unix-lpr.sh)
+ - font2c gave an error when trying to write general procedures in
+font dictionaries. (font2c.ps)
+
+Adds a pdf2dsc.ps utility for writing out fake DSC-compliant PostScript code
+to invoke the PDF reader, for the benefit of viewer programs that aren't
+PDF-aware. (unix-end.mak, pdf2dsc.ps)
+
+</pre><h3><a name="V3.35_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF drivers put out incorrect PageNumber values.
+(gdevtfax.c)
+ - Printer (and file output) devices got closed and reopened
+unnecessarily when changing parameters. (gdevprn.c)
+ - Printer (and file output) devices didn't check for invalid formats
+following a % in OutputFile. (devs.mak, gdevprn.c)
+ - 1-bit memory devices were not considered page devices, unlike all
+other memory devices. (gsdevice.c)
+ - The black-and-white H-P printers didn't close the printer
+properly, causing printing not to happen under MS Windows. (gdevprn.c)
+ - Some compilers didn't like initializing a const char * to NULL.
+(gdevlbp8.c)
+
+Changes the X Windows driver so that if Ghostview specifies a bounding box,
+this also sets ImagingBBox. (gdevxini.c)
+
+At the request of a customer, adds 1-, 4-, 8-, 24-, and 32-bit-deep memory
+devices that store bits in 32-bit units rather than byte units. (gdevmem.h,
+gxdevmem.h, gdevmem.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c,
+gdevm24.c, gdevm32.c)
+
+Adds a new MS Windows printer driver, mswinpr2, that uses a DIB rather than
+a DDB. (gdevwpr2.c)
+
+</pre><h3><a name="V3.35_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - A routine wouldn't compile because of a bug in the SGI C compiler.
+(zcsindex.c)
+ - Some declarations were inconsistent when compiling for segmented
+environments. (gscie.c)
+ - A routine wouldn't compile because of a bug in the VAX C compiler.
+(gscie.c)
+
+Turns on compiler optimization for OS/2; adds PDF support and more devices
+for Win32 and OS/2. (bcwin.mak, bcwin32.mak, os2.mak)
+
+</pre><h3><a name="V3.35_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Font loading used 'setglobal' without binding it, which caused
+some EPS files to signal errors. (gs_fonts.ps)
+ - A zero-length string with offset = 0 in a binary object sequence
+caused an error. (iscanbin.c)
+
+Adds a LOCALFONTS switch that causes Ghostscript to load Type 1 fonts into
+the current VM, rather than global VM. According to Adobe, this is what
+Adobe printers (but not other interpreters, such as DPS and CPSI) do.
+(gs_init.ps, gs_fonts.ps)
+
+</pre><h3><a name="V3.35_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The 'note' page size command caused pages to be clipped
+improperly. (gs_statd.ps)
+
+Adds "word" image devices. (gs_init.ps, zdevice.c)
+
+Starts converting the interpreter to use an explicit instance pointer. This
+is very fragmentary so far and not really supported. (main.h, gs.c,
+gsmain.c, iccinit.c)
+
+</pre><h3><a name="V3.35_Library"></a>Library</h3><pre>
+
+Adds "word" image devices. (gsdevice.h, gsdevice.c)
+
+Removes the requirement that ImagingBBox[0] and [1] be non-negative. (The
+Adobe specification requires this, but Ghostscript supports more general
+initial CTMs than the Adobe spec.) (gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.34"></a>Version 3.34 (internal) (4/18/95)</h2>
+
+<p>
+This is a "snapshot" version made for internal purposes. It was never
+released to anyone.
+
+<h3><a name="V3.34_Documentation"></a>Documentation</h3><pre>
+Updates commprod.doc to be fully consistent with the AGFPL. (commprod.doc)
+
+</pre><h3><a name="V3.34_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - tar_x was out of date. (tar_x)
+ - tar_gs assumed that if any PC executables were present, gs.exe
+would exist. (tar_gs)
+ - jpeg.mak said the current IJG version was 5b, but the makefiles
+actually referred to version 5a. (jpeg.mak)
+ - The build rule for the LIPS III driver was incorrect. (devs.mak)
+ - Some definitions in the makefiles occurred out of order.
+(ansihead.mak, cc-head.mak, gcc-head.mak, unixhead.mak, unixtail.mak)
+ - The build rule for dvx-gcc.mak was incorrect. (unix-end.mak)
+
+</pre><h3><a name="V3.34_Interpreter"></a>Interpreter</h3><pre>
+
+Restructures the CIE caches to move much more of the computation from color
+mapping time to cache loading time. (zcie.c)
+
+</pre><h3><a name="V3.34_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Color conversion of 12-bit images was very slightly inaccurate.
+(gxfrac.h)
+
+Changes the transfer function, black generation, and undercolor removal
+caches so that they sample at 1024 points and don't interpolate, rather than
+sampling at 256 points and interpolating. This significantly improves the
+speed of colored image rendering. ****** LIMITED TO 256 POINTS BECAUSE OF
+O-STACK SIZE LIMIT. ****** (gxfmap.h, gxcmap.c)
+
+Restructures the CIE caches to move much more of the computation from color
+mapping time to cache loading time. (gscie.h, gscie.c)
+
+</pre>
+
+<h2><a name="Version3.33"></a>Version 3.33 (4/13/95)</h2>
+
+<p>
+A few more last-minute bug fixes. This is, finally, the first public
+release since 3.12.
+
+<h3><a name="V3.33_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - There was a reference to "VAX with OSF/1", which doesn't exist,
+and an incorrect reference to VAX with Ultrix. (make.doc)
+ - The Unix makefiles incorrectly stated that gsdatadir was only
+relevant to `make install'. (ansihead.mak, cc-head.mak, dgc-head.mak,
+gcc-head.mak)
+ - Notes that DV/X users should use the zip version of the JPEG
+library. (jpeg.mak)
+
+</pre><h3><a name="V3.33_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A command line had gotten too long for the MS-DOS shell.
+(gs.mak)
+ - The VMS DEC C script didn't explicitly select DEC C.
+(vms-decc.mak)
+ - The VMS MODULES.LIS omitted SPDIFF and ZFPDIFF. (modules.lis)
+ - The VMS script had an incorrect entry. (vms.mak)
+ - The `if' fix in 3.31 broke some Unix systems with different
+implementations of sh. (unix-end.mak)
+ - The makefile definition of gscspace_h was out of order. (gs.mak)
+ - An extra ; got written in gconfig_.h on DV/X platforms.
+(dvx-tail.mak)
+ - '.' was incorrectly prepended to the library search list on DV/X
+platforms. (dgc-head.mak)
+ - The build rules for unix*.mak didn't work on DV/X. (unix-end.mak)
+
+Adds a description of the -c quit switch to the help message. (gs.c)
+
+For the DV/X platform, changes /usr/include to /djgpp/include as the place
+to look for header files. I'm not sure this is always correct.
+(dvx-tail.mak)
+
+</pre><h3><a name="V3.33_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii would cause an error if given a font that didn't have an
+'X' character. (ps2ascii.ps)
+ - ps2ascii didn't intercept the Level 2 string display operators.
+(ps2ascii.ps)
+
+</pre><h3><a name="V3.33_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The Stylus Color driver had an incorrect type name. (gdevstc.c)
+
+</pre><h3><a name="V3.33_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - -dBitsPerPixel= didn't work properly for MS Windows or OS/2 PM.
+(gdevmswn.c, gdevpm.c)
+ - The Win32 platform didn't compile properly. (memory_.h)
+
+</pre><h3><a name="V3.33_Fonts"></a>Fonts</h3><pre>
+
+Improves the font substitution algorithm to take the face name into account
+in more cases. (gs_fonts.ps)
+
+</pre><h3><a name="V3.33_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Unrotated black-and-white bitmaps with an inverted device X axis
+were displaced in X. (gsimage1.c)
+
+</pre>
+
+<h2><a name="Version3.32"></a>Version 3.32 (4/7/95)</h2>
+
+<p>
+More bug fixes. This is still not a public release.
+
+<h3><a name="V3.32_Documentation"></a>Documentation</h3><pre>
+Further clarifies the "two-phase commit" algorithm for device put_params
+procedures. (drivers.doc, gsparam.h)
+
+Adds a note about a compiler bug under Ultrix 4.4. (make.doc)
+
+</pre><h3><a name="V3.32_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some installation scripts could fail because some implementations
+of sh take the status of an `if' condition as the status of the `if'
+command. (unix-end.mak)
+
+Adds "maintainer-clean" as a synonym for "real-clean". (gs.mak)
+
+Adds a -dORIENT1 switch that defines orientation = 1 as portrait for
+setpage[params]. (use.doc, gs_init.ps, gs_lev2.ps, gs_statd.ps)
+
+</pre><h3><a name="V3.32_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii didn't redirect %stdout completely. (ps2ascii.ps)
+ - ps2ascii didn't preserve the local/global VM mode. (ps2ascii.ps)
+ - ps2ascii didn't handle fonts with an all-zero or missing bounding
+box correctly. (ps2ascii.ps)
+ - viewpbm didn't scale the image properly. (viewpbm.ps)
+
+</pre><h3><a name="V3.32_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The CGM driver wrote out an incorrect color precision value.
+(gdevcgm.c)
+ - The SGI bitmap driver was named "sgi" rather than "sgirgb".
+(gdevsgi.c)
+ - The PCX driver didn't round up an odd line length for gray-scale
+output. (gdevpcx.c)
+ - The PCX driver produced incorrect output for gray-scale or 4- or
+8-bit color. (gdevpcx.c)
+
+</pre><h3><a name="V3.32_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS MODULES.LIS file had gotten out of sync with the Unix
+makefiles (again). (modules.lis)
+
+</pre><h3><a name="V3.32_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some compilers won't accept '\l', even in the false arm of a
+preprocessor conditional. (scanchar.h)
+ - A procedure was declared with an incorrect argument type.
+(zcsindex.c)
+ - The scaled font cache didn't copy XUIDs properly. (bfont.h,
+zfont.c, zfont2.c)
+ - status could return true even if the file was closed. (zfile.c)
+
+</pre><h3><a name="V3.32_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The LZW filters were factored improperly. (modules.lis, gs.mak,
+vms.mak, slzwx.h, slzwc.c, slzwd.c)
+
+Changes the DCTDecode filter for compatibility with Adobe implementations:
+ - Ignore bytes preceding the 0xff that marks the beginning of the
+JPEG data. (sdctd.c)
+ - Set MAX_BLOCKS_IN_MCU to 64. (jpeg.mak, gsjpglib.h)
+
+</pre><h3><a name="V3.32_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The "two-phase commit" for device parameters wasn't fully
+implemented. (gsiodev.c)
+ - Asking for a device color map before the device was opened could
+cause a crash. (gsdparam.c)
+ - The scaled font cache didn't copy XUIDs properly. (gxfont.h,
+gsfont.c)
+ - 90 or 270 degree rotated black-and-white bitmaps (including
+bitmapped fonts such as downloaded TrueType fonts) with an inverted device Y
+axis were displaced in Y. (gsimage1.c)
+ - On high-resolution devices, parts of regions filled with halftones
+could fail to be painted. (gxclist.c)
+
+</pre>
+
+<h2><a name="Version3.31"></a>Version 3.31 (4/2/95)</h2>
+
+<p>
+A few final bug fixes for the release. Includes significant speed
+improvements for CIE color, and a first draft of a low-level CGM driver.
+
+<h3><a name="V3.31_Documentation"></a>Documentation</h3><pre>
+Notes that the BJC600 driver also works for the BJC4000. (devs.mak)
+
+</pre><h3><a name="V3.31_Procedures"></a>Procedures</h3><pre>
+
+At the suggestion of a user, changes the default protections for installed
+files on Unix and DV/X systems from 775/664 to 755/644. (*head.mak)
+
+At the suggestion of a user, adds a -dNOCIE switch to substitute DeviceGray
+and DeviceRGB color spaces for CIEBasedA and CIEBasedABC spaces
+respectively. (gs_init.ps, gs_lev2.ps)
+
+</pre><h3><a name="V3.31_Utilities"></a>Utilities</h3><pre>
+
+Changes gslp and its relatives to use ISOLatin1Encoding for output, and to
+send almost all printout to stderr rather than stdout (for use as a filter
+under Unix). (gslp.ps)
+
+</pre><h3><a name="V3.31_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The fax/TIFF driver no longer exported gdev_fax_print_page, which
+the DigiFax driver needs. (gdevtfax.c)
+ - The color DeskJet drivers gave an error for BitsPerPixel=3.
+(gdevcdj.c)
+ - The "Windows printer" driver was setting its margins in points
+rather than inches. (gdevwprn.c)
+ - The BJ10 and BJ200 drivers calculated vertical skip distances
+wrong. (gdevbj10.c)
+ - The BJ10 and BJ200 drivers output two garbage bytes following the
+initialization string. (gdevbj10.c)
+
+Adds a preliminary driver that produces low-level CGM output. (gdevcgml.h,
+gdevcgmx.h, gdevcgm.c, gdevcgml.c)
+
+</pre><h3><a name="V3.31_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS files had gotten out of sync with the other makefiles
+(again). (modules.lis, vms.mak)
+ - The MS Windows and OS/2-PM drivers hadn't been updated to handle
+BitsPerPixel as a standard parameter. (gdevmswn.c, gdevpm.c)
+
+Removes the TIFF drivers from the Windows platform, and restores the BMP
+drivers. (bcwin.mak)
+
+</pre><h3><a name="V3.31_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The CIE color mapping cache could produce anomalous results
+for the default (all zero values) color if some of the mapping
+functions were non-linear. (zcie.c)
+ - MultiMaster font substitution got confused if substituted
+fonts had their FontName changed. (gs_fonts.ps)
+ - A procedure was declared as private inconsistently. (zdevcal.c)
+ - Some pointer relocation procedures didn't work correctly on
+systems with sizeof(T *) &gt; sizeof(int). (istack.c)
+ - The freelist vector wasn't large enough to handle graphics state
+objects on 64-bit systems, leading to severe memory sandbars. (iastate.h)
+ - The debugging messages from the allocator had gotten inconsistent
+and hard to use. (ialloc.c)
+ - Mixing save/restore with allocation could cause the GC never to
+get run. (isave.c)
+
+Speeds up the mapping of CIE colors. (zcie.c)
+
+Adds a .namestring operator for getting the string of a name without having
+to copy it. (zstring.c)
+
+</pre><h3><a name="V3.31_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The IJG code needed a couple more flags set for IJG v6.
+(gsjmorec.h)
+ - Some pointer relocation procedures didn't work correctly on
+systems with sizeof(T *) &gt; sizeof(int). (stream.c)
+
+</pre><h3><a name="V3.31_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The end-test for the fast case of monobit images was wrong,
+leading to out-of-range memory accesses. (gsimage1.c)
+ - Monobit images rotated by 270 degrees displayed incorrectly.
+(gsimage1.c)
+ - If a Type 1 font used hint replacement, some parts of the outline
+before the hint replacement ignored the old hints. (gstype1.c)
+ - Some compilers didn't accept a variable name that was the same as
+a macro with parameters. (gxht.c)
+ - A procedure was declared as private inconsistently. (gdevm1.c)
+ - Some pointer relocation procedures didn't work correctly on
+systems with sizeof(T *) &gt; sizeof(int). (gdevmem.c, gsstate.c)
+ - The test on FORCE_HINTS_TO_BIG_PIXELS was backwards. This bug was
+supposed to have been fixed in 3.30, but somehow the fix got lost.
+(gstype1.c)
+ - 90 degree rotated monobit images could drop some scan lines.
+(gsimage*.c)
+
+Speeds up the mapping of CIE colors. (gscie.h, gxcmap.h, gscie.c, gxcmap.c)
+
+Speeds up color images (non-interpolated, 1-8 bits per component) by adding
+a cache for mapped color values. (gximage.h, gsimage.c, gsimage1.c,
+gsimage2.c)
+
+Shrinks the band list file slightly by using only as many bytes as necessary
+for writing out colors, rather than always using 4 bytes. (gxclist.c,
+gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.30"></a>Version 3.30 (beta) (3/21/95)</h2>
+
+<p>
+More bug fixes. The garbage collector and PDF interpreter finally appear to
+work reliably.
+
+<h3><a name="V3.30_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - language.doc had gotten out of date. (language.doc)
+
+</pre><h3><a name="V3.30_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Changes in the handling of %stdout had broken ps2ascii.
+(gs_dps1.ps, ps2ascii.ps)
+
+Improves ps2ascii to skip empty strings and not output redundant font
+changes. (ps2ascii.ps)
+
+</pre><h3><a name="V3.30_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The fax and TIFF drivers didn't free all their working storage.
+(This bug was fixed in 3.27, and the fix somehow got lost.) (gdevtfax.c)
+
+Adds new drivers:
+ - sgirgb, to produce SGI RGB raster files. (gdevsgi.c)
+ - tiffcrle, to produce output in TIFF "CCITT 1-dimensional Huffman
+RLE" format (Group 3 fax with no EOLs). (gdevtfax.c)
+ - tifflzw, to produce output in TIFF LZW format (using the existing
+CCITTFaxEncode filter code). (gdevtfax.c)
+ - tiffpack, to produce output in TIFF PackBits format. (gdevtfax.c)
+
+</pre><h3><a name="V3.30_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - If the current screen was set with a halftone, setcolorscreen
+wouldn't accept what currentcolorscreen returned. (gs_dps1.ps)
+ - debug_print_full_ref didn't print t_oparray objects correctly.
+(idebug.c)
+ - The internal data for a font could be allocated in a different VM
+space from the font dictionary, causing dangling pointers. (zfont2.c)
+ - definefont became confused if a program failed to delete the FID
+from a re-encoded font. (This is questionable PostScript, but dvips does
+it.) (zfont2.c)
+ - If a BuildChar procedure did a save before the setcachedevice and
+a restore afterwards, the memory manager would attempt to free the cache
+device after it had already been freed by the restore, leading to damaged
+freelists. (gschar.c)
+ - setresolution (in statusdict) was ignored. (gs_lev2.ps,
+gs_statd.ps)
+ - If a string containing a string containing a \ was passed to the
+token operator, the \ was not recognized properly in a Level 2 environment.
+(iscan.c)
+ - A couple of default dictionary sizes had become too small.
+(iinit.c)
+
+Makes DOS EOF (control-Z, 0x1a) a self-delimiting token, like left bracket.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
+effects. (gs_init.ps, iscan.c, iscantab.c)
+
+Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
+-Z. switch to force small-memory table sizes regardless of actual memory
+size. (dstack.h, idict.c, zpcolor.c, zvmem2.c)
+
+</pre><h3><a name="V3.30_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - A page with no Contents caused an error. (pdf_main.ps)
+ - Executing a Form resource caused an error. (pdf_draw.ps)
+ - Outlines with open entries caused an error. (pdf_main.ps)
+ - Embedded Type 3 fonts caused an error. (pdf_draw.ps, pdf_font.ps)
+ - The Widths array of fonts was ignored. (pdf_font.ps)
+
+</pre><h3><a name="V3.30_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Freeing an entry in the pattern cache didn't clear the pointers to
+the raster data, producing a dangling reference that confused the garbage
+collector. (gxpcmap.c)
+ - The test on FORCE_HINTS_TO_BIG_PIXELS was backwards. (gstype1.c)
+ - The pattern cache bookkeeping was incorrect. (gxpcmap.c)
+ - Depending on the order in which pointers were relocated, the
+garbage collector could incorrectly relocate pointers from the character
+cache. (gxfcache.h, gsfont.c, gxccache.c, gxccman.c)
+
+Changes the fast case of black-and-white images so it aligns scaled images
+with the device coordinate system, to improve performance. (gsimage1.c)
+
+Extends the coordinate transformation routines to handle absurdly large
+translation values in the CTM as long as the final device device coordinates
+are within fixed-point range. (gxmatrix.h, gxpath.h, gschar.c, gscoord.c,
+gsmatrix.c, gxhint2.c, gxpath2.c)
+
+Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
+-Z. switch to force small-memory table sizes regardless of actual memory
+size. (gdevprn.h, gxpcolor.h, gzht.h, std.h, gsfont.c, gsht1.c, gspaint.c,
+gsstate.c, gxcht.c, gxht.c, gxpcmap.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.29"></a>Version 3.29 (internal) (3/8/95)</h2>
+
+<p>
+Another bug-fix release. This release processes all but 7 of the 500+ files
+on the Adobe Acrobat Sampler CD-ROM without giving an error. The garbage
+collector finally appears to be stable. This version was created for a
+customer; it was not released to the general public or even to the beta test
+list.
+
+<h3><a name="V3.29_Documentation"></a>Documentation</h3><pre>
+Documents the possible need to set LD_RUN_PATH on SVR4 platforms.
+(make.doc)
+
+Expands the description of the device life cycle, and of the constraints on
+put_params procedures. (drivers.doc)
+
+Adds an explicit copyright notice to the Aladdin Ghostscript Free Public
+License. (PUBLIC)
+
+Clarifies that the Win32s documentation also applies to Windows NT.
+(make.doc)
+
+</pre><h3><a name="V3.29_Procedures"></a>Procedures</h3><pre>
+
+Removes the obsolete writeppmfile operator from the standard configurations.
+(gs.mak)
+
+Changes the Watcom makefiles to work properly with Watcom C/C++ 10.0.
+(make.doc, msc.mak, watc.mak, watcwin.mak, wccommon.mak)
+
+</pre><h3><a name="V3.29_Utilities"></a>Utilities</h3><pre>
+
+Adds a wftopfa utility for converting the Wadalab fonts to usable Type 0 and
+Type 1 form. (wftopfa)
+
+</pre><h3><a name="V3.29_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Entries added automatically by definefont (FontInfo, ExactSize)
+could cause a font dictionary to become full. (gs_fonts.ps, gs_type1.ps)
+ - wrfont.ps couldn't deal with very long CharStrings. (wrfont.ps)
+
+Makes the name of the Fontmap file an easily editable parameter.
+(gs_fonts.ps)
+
+Adds a utility for converting the Wadalab font to usable Type 0 and Type 1
+form. (wrfont.ps, wftopfa.ps)
+
+</pre><h3><a name="V3.29_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The top margin for printer (and fax) devices was computed
+incorrectly, using the X resolution rather than the Y resolution.
+(gdevprn.h)
+ - Changing the page size or resolution of a printer device closed
+and reopened the device unnecessarily. (gdevprn.c)
+ - Changing the page size of the X11 device didn't change the initial
+matrix, so (0,0) didn't wind up in the lower left corner. (gdevx.c)
+ - The bit devices didn't allow changing the number of bits per
+pixel. (gdevbit.c)
+
+Adds a settable .IsPageDevice boolean device parameter to the X Windows
+driver. The default value is true. (gdevx.h, gdevx.c)
+
+Changes the PPM driver so that it chooses between PBM/PGM/PPM on a
+page-by-page basis, rather retaining the most general format ever required
+by any page. (gdevpbm.c)
+
+</pre><h3><a name="V3.29_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - The current page device could be null, rather than an empty
+dictionary. (igstate.h, zchar.c, zdevice.c, zdevice2.c, zgstate.c)
+ - The scanner didn't signal an error for names or strings that were
+too long. (iscan.c)
+ - A missing header file upset the VAX compilers. (ztype.c)
+ - Some places expecting dictionary operands didn't check the type,
+because they incorrectly assumed that the dict_check_read/write macro did
+this. (idict.h, zdevice2.c, zht2.c, zmisc2.c)
+ - The definition of quit in systemdict wasn't disabled within
+encapsulated jobs. (gs_lev2.ps)
+ - resetfile gave an error if the file was closed, rather than doing
+nothing. (zfileio.c)
+ - The scanner attempted to free an uninitialized pointer if it
+reached EOF after a / or //. (iscan.c)
+ - A restore in a different file than the corresponding save caused
+an invalidrestore error. (gs_init.ps)
+ - The default value of EndOfData in RunLengthDecode streams was set
+to false. (zfilter.c)
+ - .registerencoding didn't invoke the save machinery correctly,
+leading to GC problems. (zfont2.c)
+ - The facility for overriding .printerror didn't work correctly.
+(gs_init.ps)
+ - gs_run_file_open wasn't public. (gsmain.c)
+ - The interpreter returned e_undefined for undefined error names,
+rather than the error code. (interp.c)
+ - Allocation in system memory (specifically, adding a block to a
+stack) couldn't trigger automatic garbage collection. (interp.c, igc.c,
+zvmem2.c)
+ - A restore in a different invocation of gs_run_string than the
+corresponding save would stop reading the string. (files.h, gsmain.c,
+iccinit.c, zfile.c)
+ - The Type 1 rasterizer state included a pointer into the middle of
+an object, confusing the garbage collector. (zchar1.c, zfont1.c)
+ - When the garbage collector deleted a name, it didn't zero out the
+string pointer. (iname.c)
+ - On platforms where obj_align_mod &gt; 4, the memory manager could
+access 1 beyond the end of its freelists. (iastate.h)
+ - makefont and scalefont didn't check the type of their font operand
+soon enough. (zfont.c)
+ - restore didn't finalize the objects it freed. (isave.c)
+ - restore didn't free system VM. (isave.c)
+ - Freeing a ref array that occupied an entire chunk didn't free the
+chunk. (ialloc.c)
+
+Adds a .runexec operator which implements the 'close if error' function of
+run. (zfile.c, zfileio.c)
+
+Moves the obsolete writeppmfile operator into a separate file. (zfileio.c,
+zwppm.c)
+
+Makes the statistics returned by the memory manager more accurate.
+(ialloc.c, zvmem.c)
+
+Adds a (read-only) %Calendar% IODevice. (zdevcal.c)
+
+Adds a "hook" in the character operators to allow external code to
+intervene; this is needed for a customer. (ichar.h, zchar.c, zchar2.c)
+
+Makes control-D (0x04) a self-delimiting token, like left bracket. THIS IS
+A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
+effects. (scanchar.h, iscan.c, iscantab.c)
+
+Changes the error stack printout so that it puts line breaks between items
+iff the items are being printed with ==. (gs_init.ps)
+
+Uses finalization to close streams being freed. (igc.c, zfile.c, ziodev.c)
+
+</pre><h3><a name="V3.29_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Embedded Type 1 fonts that invoked save and restore while being
+read caused an error. (pdf_font.ps)
+ - Large files that referenced a non-alphabetic font for the first
+time late in the file could cause an error. (pdf_main.ps)
+
+</pre><h3><a name="V3.29_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - SubFileDecode streams didn't copy partial matches of the EOD
+string into their output. (sfilter1.c)
+
+Makes switching between read and write modes a stream procedure. (stream.h,
+sfile.c, sfileno.c, stream.c, zfileio.c)
+
+Makes file streams close themselves when finalized. (We can't do this for
+other streams, because finalization procedures aren't allowed to free
+storage explicitly.) (stream.h, sfile.c, sfileno.c, stream.c)
+
+</pre><h3><a name="V3.29_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The obsolete files gcdefs.h and gsfile.c were still included in
+the fileset.
+ - A number of places didn't deal with null patterns properly (p_tile
+== 0). (gxdcolor.h, gspcolor.c, gxpcmap.c)
+ - The pattern tiling algorithm was numerically unstable, especially
+if the X/YStep vectors were close to the axes. (gxcolor2.h, gspcolor.c,
+gxpcmap.c)
+ - setdeviceparams checked the values of read-only byte array
+parameters incorrectly. (gsdparam.c)
+ - The statistics macros in gxfill.c didn't use DO_NOTHING when
+disabled. (gxfill.c)
+ - Changing the orientation of a device closed and reopened the
+device unnecessarily. (gsdparam.c)
+ - ioerrors occurring when writing command lists weren't reported
+properly. (gxclist.h, gxclist.c)
+ - Errors from device procedures weren't always propagated up to
+clients. (gsimage1.c, gsimage3.c, gxclip2.c, gxclist.c)
+ - Overflowing the fixed-point translation values in the CTM caused a
+floating point exception rather than a limitcheck. (gxmatrix.h, gscoord.c)
+ - charpath set the current point correctly, but didn't append a
+moveto element to the path. (This mostly affected Mathematica output.)
+(gzpath.h)
+ - Image devices mapped colors incorrectly. (gdevmem.c, gdevm16.c)
+ - On devices with color capability but fewer than 4 bits per pixel,
+color halftones didn't work (and could cause an arithmetic exception).
+(gxdither.c)
+ - Black-on-white memory devices didn't map colors properly.
+(gdevprn.h, gxdevice.h, gxdevmem.h, gdevmem.c, gdevm1.c, gsdevice.c)
+ - Memory devices with a non-zero origin in their initial matrix
+clipped the image improperly. (gsdevice.c)
+ - The Type 1 rasterizer state included a pointer into the middle of
+an object, confusing the garbage collector. (gstype1.h, gxfont1.h,
+gxtype1.h, gstype1.c, gxhint2.c)
+ - The band rasterizer could produce garbled output for images
+(including characters) on 64-bit architectures. (gxclread.c)
+ - Bounding boxes (for pathbbox and setbbox) could be slightly
+inaccurate. (gsmatrix.c)
+ - On 64-bit architectures, halftone tiles less than 16 bits wide
+were handled incorrectly. (gxclist.c)
+
+Adds an .IsPageDevice boolean device parameter (normally read-only).
+(gsdparam.c)
+
+Removes the library code for implementing the obsolete writeppmfile
+operator. (gswppm.c)
+
+Makes the default matrix (for initmatrix and defaultmatrix) a settable
+parameter in the graphics state. (gscoord.h, gzstate.h, gscoord.c,
+gsdevice.c, gsdparam.c)
+
+Makes the statistics returned by the memory manager more accurate.
+(gsmemory.h)
+
+Adds a compile-time flag to choose whether or not to force Type 1 hints to
+"big pixel" boundaries when oversampling. (gstype1.c)
+
+Changes the .PageCount device parameter back to PageCount, because the
+change broke some scripts. (gsdparam.c)
+
+Adds optimization for 90 degree rotated images with pure colors.
+(gximage.h, gsimage.c, gsimage1.c)
+
+Changes the band rasterizer so that replicated halftone tiles are written on
+the band list in unreplicated form. (gsbitops.h, gxcldev.h, gsbitops.c,
+gxclist.c, gxclread.c, gxht.c)
+
+Changes the .HWBitsPerPixel device parameter to BitsPerPixel. (drivers.doc,
+language.doc, gdevcdj.c, gdevstc.c, gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.28"></a>Version 3.28 (beta) (2/13/95)</h2>
+
+<p>
+Another bug-fix beta release. The number of bugs being fixed in each of
+these sub-releases does exceed the number of new bugs introduced, but the
+latter number is discouragingly high.
+
+<h3><a name="V3.28_Documentation"></a>Documentation</h3><pre>
+Adds some information about handling VMS file attributes for files
+transferred by FTP. (use.doc)
+
+</pre><h3><a name="V3.28_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - unix-gcc.mak said the static linkage switch for SunOS was -Bstatic
+rather than -static. (unix-gcc.mak)
+ - Some dependency lists in gs.mak were out of date. (gs.mak)
+
+</pre><h3><a name="V3.28_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - markhint.ps didn't check for protected fonts. (markhint.ps)
+
+</pre><h3><a name="V3.28_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The cdj driver had a byte/char agreement problem. (gdevcdj.c)
+ - The cdj driver attempted to initialize a dynamic array.
+(gdevcdj.c)
+
+Removes the setting of InputAttributes and OutputAttributes from the H-P
+drivers, since this causes more problems than it solves. (gdevdjet.c)
+
+</pre><h3><a name="V3.28_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - makeoperator assigned incorrect attributes to operators. (bug
+introduced in 3.27) (opdef.h, iinit.c, iutil.c, zmisc.c)
+
+</pre><h3><a name="V3.28_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_makeimagedevice didn't set the caller's pointer to the newly
+created device. (bug introduced in 3.27) (gsdevice.c)
+ - There were still some mismatches between char * and byte * values.
+(gsdparam.c)
+ - The halftone replication algorithm could produce inappropriately
+large replicated masks. (gxht.c)
+ - stroke usually did the wrong thing for degenerate (single-point)
+subpaths. (gxstroke.c)
+
+</pre>
+
+<h2><a name="Version3.27"></a>Version 3.27 (beta)(withdrawn) (2/8/95)</h2>
+
+<p>
+Yet another bug-fix beta release. This release had so many serious problems
+(the most serious being at least one changed file that the release tool
+failed to include in the fileset) that it was withdrawn less than a day
+after it was issued.
+
+<h3><a name="V3.27_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The NEWS for 3.26 didn't mention the fact that the stdxxx stream
+interface used by MS Windows, OS/2, and Macintosh implementations had
+changed. (NEWS)
+ - The file public.doc wasn't distributed with the previous fileset.
+
+Brings the NeXTSTEP documentation up to date for NeXTSTEP releases 3.2 and
+subsequent. (make.doc)
+
+</pre><h3><a name="V3.27_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some dependency lists in gs.mak were out of date. (gs.mak)
+ - A 'fi;' was missing in the Unix install script. (unix-end.mak)
+ - There was no VMS build script for the PDF options. (vms.mak)
+ - The VMS script used CC_QUALI instead of CC_QUAL in several places.
+(vms.mak)
+
+</pre><h3><a name="V3.27_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi's usage prompt referred to "pstoepsi". (ps2epsi)
+ - ps2epsi set PATH and LOCALPATH unilaterally. (ps2epsi)
+
+Comments out the sample usage line at the end of viewjpeg.ps. (viewjpeg.ps)
+
+</pre><h3><a name="V3.27_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The fax and tiff drivers didn't free all of their working storage.
+(gdevtfax.c)
+
+Adds user-contributed drivers for the BJC 600 and ESC/P printers.
+(devs.mak, gdevcdj.c)
+
+</pre><h3><a name="V3.27_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Some necessary casts of string parameters to (const byte *) were
+omitted. (gp_mswin.c, gp_os2.c)
+
+Adds the psmono and bit* drivers, and removes the p*m drivers, in the OS/2,
+32-bit MS-DOS, and 32-bit Windows configurations. (bcwin32.mak, os2.mak,
+watc.mak)
+
+</pre><h3><a name="V3.27_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The Fontmap for Ultrix had somehow become slightly incorrect.
+(Fontmap.Ult)
+
+Removes the font file names from the dependency lists in cfonts.mak. This
+makes cfonts.mak readily usable with any set of fonts, but it also means
+that it will always run font2c, rather than being able to avoid this if the
+.c file is up to date. (cfonts.mak)
+
+</pre><h3><a name="V3.27_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some operators could fail if the stdxxx streams weren't currently
+open. (files.h, zfileio.c, ziodev.c)
+ - setpagedevice didn't handle unrecognized keys properly.
+(gs_setpd.ps)
+ - The value returned for the HWColorMap device parameter was
+allocated incorrectly, confusing the garbage collector. (iparam.c)
+ - Typing ahead at the &gt;&gt;showpage&lt;&lt; prompt no longer caused all
+further pages to be processed without stopping. (gs_init.ps)
+ - Setting DEVICEWIDTHPOINTS or DEVICEHEIGHTPOINTS on the command
+line caused a typecheck. (gs_init.ps)
+ - The garbage collector didn't handle halftone threshold arrays
+properly. (zht2.c)
+ - setdefaulttimeouts caused an error on Level 2 systems.
+(gs_lev2.ps)
+ - cvi and cvr weren't equivalent to token followed by a type check.
+(iscan.h, iscannum.h, iscan.c, iscannum.c, ztoken.c, ztype.c)
+ - In Level 2 systems, image and colorimage didn't allow 12 bits per
+sample. (zpaint.c)
+ - If debugging was enabled, the garbage collector printed spurious
+error messages about the allocator objects not being in a chunk. (ialloc.c)
+ - restore didn't reset the count of operator procedures, so the
+operator procedure table could fill up. Fixing this required splitting the
+op_array_table into a global table and a local table. (opdef.h, iinit.c,
+iutil.c, zmisc.c)
+ - .forgetsave could leave a dangling pointer in the memory manager,
+causing an access error. (ialloc.c, isave.c)
+ - Freed objects weren't always marked as freed, which could confuse
+the memory validator. (ialloc.c)
+ - .forgetsave didn't mark inner chunk headers as free, leading to
+access errors. (isave.c)
+
+Changes the representation of operator procedures so that they point
+directly to their definition in the op_array_table. (iref.h, opdef.h,
+idebug.c, igc.c, igcref.c, interp.c, zmisc.c)
+
+Removes .makeglobaloperator. (zmisc.c)
+
+Adds patches to discard some common garbage produced by H-P-oriented
+applications and drivers. (gs_init.ps)
+
+Changes the &gt;&gt;showpage&lt;&lt; prompt so that if the input reaches EOF, the
+interpreter still stops after the next &gt;&gt;showpage&lt;&lt;, rather than processing
+all subsequent pages. This is a consequence of the bug fix that
+automatically reopens the stdxxx files.
+
+Adds an optional dictionary parameter for the RunLengthEncode/Decode
+filters, to allow specifying EndOfData. The default is true. (zfilter.c)
+
+Adds ByteTranslateEncode/Decode filters. (zfilter2.c)
+
+</pre><h3><a name="V3.27_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The K &gt; 0 option of the CCITTFaxDecode filter switched back to 2-D
+encoding if an output buffer boundary fell in the middle of a 1-D line, and
+signalled an error if an input buffer boundary fell in the middle of an EOL.
+(scfd.c)
+
+Adds an EndOfData flag to the RunLengthEncode/Decode filters. If true, RLE
+generates 128 as EOD, and RLD recognizes it; if false, RLE does not mark
+EOD, and RLD ignores 128. (srlx.h, gxclist.c, gxclread.c, sfilter1.c)
+
+Adds ByteTranslateEncode/Decode streams. (sbtx.h, sfilter2.c)
+
+</pre><h3><a name="V3.27_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There were some mismatches between char * and byte * values.
+(gsdparam.c)
+ - Failure to round a scaling coordinate caused one-for-one
+black-and-white images to render slower than they should. (gsimage.c)
+ - Setting PageSize without setting HWResolution could cause an
+invalid memory access. (gsdparam.c)
+ - The garbage collector didn't handle halftone threshold arrays
+properly. (gxht.h, gsht.c, gsht1.c)
+
+</pre>
+
+<h2><a name="Version3.26"></a>Version 3.26 (beta) (2/1/95)</h2>
+
+<p>
+Yet another bug-fix beta release, still not ready for public release.
+
+<h3><a name="V3.26_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The description of device properties had gotten out of sync with
+the code. (language.doc)
+
+Splits off documentation specific to the Aladdin (non-GNU) release into a
+separate file. (readme, public.doc, unix-end.mak)
+
+Adds a pointer to a collection of other free fonts (including some Cyrillic
+ones) available on the net. (public.doc)
+
+</pre><h3><a name="V3.26_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - On VMS systems with both VAX C and DEC C installed, the build script
+used VAX C rather than DEC C. (vms.mak)
+ - zfdecode.c didn't have a build rule. (gs.mak)
+ - Several macros in the makefile were used before they were defined.
+(gs.mak)
+ - Several macros in the makefile were used without being defined.
+(gs.mak)
+
+Replaces the gssetdev, gssetmod, and gsaddmod scripts with more variants of
+echogs. (echogs.c, gs.mak)
+
+</pre><h3><a name="V3.26_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The ps2ascii shell script passed a -f flag to the shell, which not
+all shells recognize. (ps2ascii)
+
+</pre><h3><a name="V3.26_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Due to a typo in an initialization string, the H-P printers didn't
+reset the top margin to zero. (gdevdjet.c)
+
+Adds InputAttributes and OutputAttributes entries to the H-P drivers. (This
+should probably be generic to all printers.) (gdevdjet.c)
+
+Replaces the contributed Epson Stylus Color driver with a newer version.
+(devices.doc, gdevstc.c)
+
+</pre><h3><a name="V3.26_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - DEC C complained about 'abs' and 'exit' not being declared. (x_.h)
+ - gp_mswin.c and gp_os2.c wouldn't compile. (gp_mswin.c, gp_os2.c,
+ziodev.c)
+
+</pre><h3><a name="V3.26_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The default CIE rendering dictionary gave everything a magenta tint.
+(gs_lev2.ps)
+ - Changing HWResolution and PageSize in the same call of
+setpagedevice produced an incorrect HWSize. (gsdparam.c)
+ - .putdeviceparams didn't accept all the keys that .getdeviceparams
+returned. (gsdparam.c)
+ - The default handler for interrupt and timeout errors didn't push a
+current object (command) on the stack. (gs_init.ps)
+ - The garbage collector didn't handle strings larger than 64K
+properly. (iastate.h, ialloc.c, igcstr.c)
+
+Adds media matching and Policy consultation to the implementation of
+setpagedevice. (gs_setpd.ps)
+
+Adds a MaxGlobalVM system parameter. (zmisc2.c)
+
+</pre><h3><a name="V3.26_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter could access a byte beyond the end of
+the allocated area. (scfe.c)
+ - The CCITTFaxDecode filter could get an ioerror if a buffer
+boundary fell in exactly the wrong place. (scfd.c)
+
+</pre><h3><a name="V3.26_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The garbage collector didn't trace colored halftones properly.
+(gzht.h)
+ - The garbage collector didn't relocate the bitmap pointers in
+halftone caches properly. (gzht.h, gxht.c)
+
+Adds the ability to transmit dictionaries through the param_list mechanism
+(specifically, as device parameters). This change is
+non-backward-compatible only for implementors of parameter lists, which only
+exist within the Ghostscript core. (gsparam.h, iparam.h, iparam.c)
+
+Removes the InitialMatrix device property. (gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.25"></a>Version 3.25 (beta) (1/24/95)</h2>
+
+<p>
+Yet another bug-fix beta release. There are still at least half a dozen
+significant known bugs to be fixed before a public release.
+
+<h3><a name="V3.25_Documentation"></a>Documentation</h3><pre>
+Notes that on Unix systems, one should not edit 'makefile', but should edit
+the individual subfile and run tar_cat. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE. (make.doc)
+
+Adds information on the Macintosh implementation. (readme)
+
+</pre><h3><a name="V3.25_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - make clean failed on Unix systems where rm -f requires at least one
+file name. (gs.mak)
+ - math_.h was omitted from many dependency lists. (gs.mak)
+
+</pre><h3><a name="V3.25_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X Windows and MS Windows draw-line routines couldn't possibly
+produce sufficiently correct output (since the interface only provides integer
+coordinates). (gdevx.c, gdevwddb.c)
+
+In response to patent-related actions by Unisys and CompuServe, removes the
+GIF driver. (*.mak)
+
+Changes dci_std_color (and std_device_std_color_* and prn_device_std_*) so
+that if the number of bits per pixel is 32, the device is defined as CMYK
+rather than RGB. (gxdevice.h)
+
+Removes the tseng8 device, which is no longer useful. (devs.mak, gdevsvga.c)
+
+Adds pseudo-alpha support to the SVGA drivers, via the TextAlphaBits and
+GraphicsAlphaBits device parameters. (gdevsvga.h, gdevsvga.c)
+
+Adds a user-contributed driver for the Epson Stylus Color printer. (devs.mak,
+gdevstc.c, devices.doc)
+
+</pre><h3><a name="V3.25_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build scripts had gotten out of sync (again). (vms*.mak)
+
+</pre><h3><a name="V3.25_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The emulator name array was incorrectly declared const in one place.
+(gs.c)
+ - A closed file could incorrectly appear to be 'eq' to another file
+(open or closed). (iutil.c)
+ - If %stdin/%stdout/%stderr was ever closed, it couldn't be
+reopened. (gs_btokn.ps, gs_init.ps, files.h, zfile.c, zfileio.c, zfilter.c,
+zfproc.c, ziodev.c)
+
+Changes (almost) all the operator routines to 'static'. (z*.c)
+
+</pre><h3><a name="V3.25_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The raster value for replicated tiles in the halftone cache was
+incorrect, causing unaligned memory accesses. (gxht.c)
+ - stroke and strokepath could produce slightly inaccurate output
+(leading to slight visible anomalies) as a result of stroke adjustment.
+(gxstroke.c)
+ - Attempting to draw an arc with zero radius could cause a numeric
+exception. (gspath1.c)
+ - Setting the Orientation of a device to null resulted in actually
+setting it to a random value. (gsdparam.c)
+ - charpath, stringwidth, and cshow attempted to remap the current
+color unnecessarily. (gschar.c)
+
+Adds the ability to trace calls on the sqrt function (and possibly other math
+functions in the future.) (math_.h, gsmisc.c)
+
+Adds additional interrupt checks in the banding code. (gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.24"></a>Version 3.24 (beta) (1/17/95)</h2>
+
+<p>
+This was supposed to be a public release, but too many bugs showed up in 3.23,
+so this is another bug-fix beta release. This is the first release with a
+working PDF reader.
+
+<h3><a name="V3.24_Documentation"></a>Documentation</h3><pre>
+Notes that Solaris requires using installbsd instead of install. (make.doc)
+
+</pre><h3><a name="V3.24_Procedures"></a>Procedures</h3><pre>
+
+Changes 'make mostlyclean' so that it doesn't delete the Ghostscript
+executable (but deletes everything else that 'make clean' does). (gs.mak)
+
+Changes the link list generator so it eliminates duplicate library requests.
+(genconf.c)
+
+Factors the interpreter further so as to include less unnecessary PostScript
+support in the PDF interpreter. (gs.mak, zpath.c, zpath1.c)
+
+Adds a printout of the available language interpreters to the -h message.
+(genconf.c, gs.c, iinit.c, gs.mak)
+
+</pre><h3><a name="V3.24_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The alternate X drivers used a cast in an initializer, causing a
+compilation error on some platforms. (gdevxalt.c)
+
+Adds a driver for the LaserJet IIID, including duplex printing if specified by
+the Duplex page device parameter. (gdevdjet.c)
+
+Adds Orientation to the bit device. (gdevbit.c)
+
+</pre><h3><a name="V3.24_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There was an extraneous pfen-&gt; in the NT file system module, causing
+a compilation error. (gp_ntfs.c)
+ - The DLL code referred to an obsolete symbol a_foreign. (gsdll.c)
+ - The VMS build scripts omitted the LaserJet 4 driver. (vms-*.mak)
+ - The VMS build scripts had several other minor errors. (vms.mak)
+
+</pre><h3><a name="V3.24_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Defining a font alias in global VM with a name that was a string in
+local VM caused an error. (gs_fonts.ps)
+ - The font compiler referred to an obsolete symbol a_foreign.
+(font2c.ps)
+
+</pre><h3><a name="V3.24_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - There was an extraneous '#' before an extern declaration.
+(gsmain.c)
+ - The interpreter could (incorrectly) attempt to expand the e-stack.
+(istack.h, interp.c, istack.c)
+ - zfproc.c called memcpy but didn't include memory_.h. (zfproc.c)
+ - A garbage collection occurring within a 'save' would often smash
+memory. (igc.c)
+ - If the last character returned by the procedure of a procedure-based
+filter was \r, readline could get an endless loop. (zfileio.c)
+ - Saving a change to a ref member of a structure confused the garbage
+collector. (isave.h, isave.c, zdict.c)
+ - The -Zu debugging printout could cause an access error under rare
+circumstances. (isave.c)
+ - Save objects could get allocated in global VM, causing dangling
+references. (zvmem.c)
+ - The vmsave object created by the interpreter for a save didn't get
+freed properly if the memory manager created an invisible save level, which
+could cause the next garbage collection to crash. (zvmem.c)
+ - 'run' always printed an error message, rather than letting the
+top-level control loop do it. (gs.c, gs_init.ps)
+
+Adds support for duplex devices. (gxdevice.h, gsdparam.c, gs_statd.ps,
+gs_setpd.ps)
+
+Adds the beginnings of support for CID-keyed fonts. (gs_cidfn.ps)
+
+Changes the format of the stack dump printed for errors, to make it easier to
+read. (gs_init.ps)
+
+</pre><h3><a name="V3.24_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - The .local/global allocation operators always allocated in system
+VM. (zsysvm.c)
+ - setpage[params] caused an error. (gs_lev2.ps)
+ - If an error occurred during a cshow or (x|y|xy)show, the interpreter
+freed the enumerator twice. (zchar.c, zchar2.c)
+
+Changes setpageparams so that orientation = 0 means portrait. This is not
+compatible with AGFA's convention for roll-feed devices, but it is compatible
+with the more common cut-sheet printers. (gs_statd.ps)
+
+Adds meaningful values for the Emulator resource. (gsmain.c, gs_res.ps)
+
+Makes -Z? validate the state of memory before and after save and restore.
+(ialloc.h, igc.h, ialloc.c, igc.c, ilocate.c, zvmem.c)
+
+</pre><h3><a name="V3.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The Unix install script didn't install the PDF files if they were
+present. (unix-end.mak)
+ - PDF to PostScript conversion didn't work at all. (It still doesn't
+work very well.) (pdf_2ps.ps, pdf_main.ps)
+ - Images with an Indexed color space and no Decode entry caused an
+error. (pdf_draw.ps)
+ - The 'Page &lt;n&gt;' messages were printed even if QUIET was set.
+(pdf_main.ps)
+
+Changes the interpreter so that when it encounters an unknown operator, it
+prints an error message and continues, rather than signalling an error.
+(pdf_base.ps)
+
+Makes F a synonym for f if there is nothing on the operand stack, to
+compensate for a bug in some Adobe software. (pdf_base.ps)
+
+Changes pdfgetpage so it uses 1-origin rather than 0-origin indexing. THIS IS
+A NON-BACKWARD-COMPATIBLE CHANGE. (pdf_main.ps)
+
+</pre><h3><a name="V3.24_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The Group 3 2-D and Group 4 encoders produced incorrect output if a
+scan line beginning with a black pixel was followed by a scan line beginning
+with a white pixel. (scfe.c)
+ - A SubFileDecode filter with a count of 1 and a non-empty EOD string
+would smash memory. (sfilter1.c)
+
+Updates the DCT filters so they will work with the latest version (5a) of the
+IJG library. (*.mak, jpeg.mak, sjpegerr.c)
+
+</pre><h3><a name="V3.24_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A call with integer parameters to a procedure with floating point
+arguments didn't work on non-ANSI compilers. (gsimage.c)
+ - Arcs could get turned into polygons if the scaling values in the CTM
+were very large and the radius was (in user space coordinates) very small.
+(gspath.c)
+ - The current point was defined when a BuildChar procedure was called.
+(This bug was documented as fixed in version 2.2!) (gschar.c)
+
+Adds support for Orientation and Duplex page device parameters, for those
+devices that support these. (gdevprn.h, gxdevice.h, gsdevice.c, gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.23"></a>Version 3.23 (beta) (1/5/95)</h2>
+
+<p>
+This is almost entirely a bug fix release. It also includes a largely working
+PDF reader. This is intended as the beta test release for the next public
+release.
+
+<h3><a name="V3.23_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - COPYLEFT, COPYING, NEWS, PUBLIC, README, and the standard Fontmap
+were omitted from the 3.22 fileset.
+
+Documents the use of the -oldc switch to work around a compiler crash on
+the DECstation.
+
+Expands and clarifies the documentation for building the DesqView/X version
+with djgcc. (make.doc)
+
+Adds documentation on the "600x300" H-P inkjet printers, explaining why
+this alleged higher resolution is not available. (devices.doc)
+
+Adds to the PUBLIC license a warning that it is not a GNU License, and a
+requirement to include a copy of or a pointer to the License in any written
+material. (PUBLIC)
+
+Documents the fact that Ghostscript *does* attempt to look up files in the
+current directory first. (use.doc)
+
+</pre><h3><a name="V3.23_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - In VMS.MAK, .JPEG should have been changed to .JPEG-5 in a few
+places. (vms.mak)
+
+Adds the pjxl300 driver to all configurations that include the other color
+DeskJet drivers. Replaces pjet and pjetxl with pj and pjxl. (*.mak)
+
+Makes 'run' recognize PDF files if the PDF reader is included.
+(pdf_main.ps)
+
+</pre><h3><a name="V3.23_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - viewjpeg.ps needed the test for languagelevel = 2 at the
+beginning of the file. (viewjpeg.ps)
+ - prfont.ps used 'min', which isn't a standard PostScript operator.
+(prfont.ps)
+ - prfont.ps created Encoding vectors that weren't 256 elements
+long. (prfont.ps)
+
+Adds the gsdj500 script to the installation list. (unix-end.mak)
+
+Changes the Unix "line printer" shell scripts to add the date to the page
+header. (gsbj, gsdj, gsdj500, gslj)
+
+Changes ansi2knr so that it will work properly on systems where the ctype
+macros don't handle 8-bit characters correctly. (ansi2knr.c)
+
+</pre><h3><a name="V3.23_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some compilers don't allow casts in initialization expressions.
+(gdevx.c, gdevxalt.c)
+ - The cdj drivers didn't initialize the color_info structure
+properly. (gdevcdj.c)
+
+Adds another alternate X Windows driver, x11mono, that is a black-and-white
+device. (devs.mak, gdevxalt.c)
+
+Adds a user-contributed driver for the Apple Imagewriter LQ. (devs.mak,
+gdevadmp.c)
+
+</pre><h3><a name="V3.23_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS MODULES.LIS file had gotten out of sync with the makefile
+(again); GDEVABUF and GSBITOPS were missing. (modules.lis)
+ - The VMS script file had gotten out of sync with the makefile
+(again). (vms.mak)
+ - The MS Windows platform code didn't recognize Windows 95 (Windows
+4.0) as equivalent to Windows NT. (gp_mswin.c)
+ - File name enumeration didn't work on OS/2 or win32. (gp_ntfs.c,
+gp_os2.c)
+ - -sOutputFile= didn't work under MS Windows. (gp_mswin.c)
+
+Changes the SCO Unix direct frame buffer driver so it generates in-line
+instructions to access the frame buffer, for a dramatic speed improvement.
+(gdevpcfb.h, gdevsco.c)
+
+</pre><h3><a name="V3.23_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - If a font couldn't be found in the Fontmap, a recursion loop
+sometimes occurred. (gs_fonts.ps)
+ - Aliases for global fonts weren't automatically created as global,
+possibly leading to a recursion loop. (gs_dps1.ps, gs_fonts.ps)
+ - If a font was loaded into global VM within an inner save, the restore
+deleted it from FontDirectory but not from SharedFontDirectory, causing a
+possible recursion loop. (gs_dps1.ps, gs_fonts.ps, idict.h, idict.c, zdict.c)
+
+Further improves the algorithm for substituting for unknown fonts.
+(gs_fonts.ps)
+
+</pre><h3><a name="V3.23_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - zcontrol.c had an assignment of const char * to const byte *,
+which some compilers don't like. (zcontrol.c)
+ - Setting an Indexed color space based on a CIE space caused an
+attempt to free a random block of memory. (zcsindex.c)
+ - Some compilers don't like mixing conditionals and casts in
+initialization expressions. (iref.h)
+ - Some calculations of table sizes for string garbage collection
+didn't work if sizeof(long) != 4, leading to smashed strings. (iastate.h,
+ialloc.c, igcstr.c)
+ - Strings longer than about 7000 bytes smashed their chunk header
+and confused the garbage collector. (ialloc.c)
+ - Some compilers needed iccfont.c to include strimpl.h.
+(iccfont.c)
+ - The obsolete file zcspace2.c was still included in the fileset.
+ - If the command line included any @-files that required searching
+the library path, a limitcheck would occur. (zfile.c)
+ - The insideness testing operators caused a memory access error,
+because the procedure vector hadn't been updated to provide a default
+get_alpha_bits procedure. (zupath.c)
+ - gcheck didn't check for stack underflow. (zvmem2.c)
+ - cleardictstack could fail to clear the dictionary stack if the
+stack had overflowed into additional blocks. (zdict.c)
+ - If the '-' switch was selected, resources weren't released
+properly on exit. (gs.c)
+ - Setting a Pattern color space based on a CIE space caused an
+invalid memory access. (zcsindex.c)
+ - The garbage collector didn't treat refs properly on machines with
+short ints. (igcref.c)
+ - Operators with more than 16 arguments could break the
+interpreter. (interp.h, iinit.c, interp.c)
+ - save/restore didn't restore the setting of the current allocator
+VM (local/global). (isstate.h, isave.c)
+ - stdpre.h declared exit as an extern, instead of letting gsmain.c
+declare it. (stdpre.h, gsmain.c)
+ - gs.c used fputs to print help messages rather than fprintf.
+(gs.c)
+ - Interrupts failed to re-execute the operation that was
+interrupted. (interp.c)
+ - Low-resolution CMYK devices didn't use separate screens for each
+color plane as the default. (gs_init.ps)
+ - filterdict wasn't getting undef'ed at the end of initialization.
+(gs_init.ps)
+ - gstate operations were broken (bug introduced in 3.02).
+(zdevice2.c)
+ - resourceforall didn't remove the resource dictionary from the
+dictionary stack when calling the client-supplied procedure. (gs_res.ps)
+ - currentcolor with an Indexed color space returned a real rather
+than an integer. (zcolor2.c)
+ - setshared / setglobal left the stack in an unobvious state if
+they were given a non-Boolean argument. (gs_dps1.ps)
+ - sethalftone followed by currenthalftone returned an invalid value.
+(zht2.c)
+ - Empty strings produced spurious garbage collector error messages.
+(gsstruct.h, scommon.h, igc.c, igcstr.c, iname.c)
+ - The garbage collector didn't trace Separation color spaces properly.
+(gscsepr.c)
+
+Changes defineresource so that it does not, by default, make instances
+read-only. (gs_res.ps)
+
+Adds .{local,global}{array,dict,packedarray,string} operators for creating
+objects in a specific VM space. (zsysvm.c, gs_dps1.ps)
+
+Adds definitions of setpage and setpageparams to statusdict. (gs_setpd.ps,
+gs_statd.ps)
+
+Alleviates some performance problems in the garbage collector. (igc.c)
+
+</pre><h3><a name="V3.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDF files that used filters with parameters caused a typecheck
+error because the arguments to 'filter' were reversed. (pdf_base.ps)
+ - The (undocumented) PDF 1.1 ability to specify link and annotation
+destinations indirectly was not supported. (pdf_main.ps)
+ - The (undocumented) PDF ability to specify a null page in a link
+destination was not supported. (pdf_main.ps)
+ - The PDF encodings weren't loaded properly in a system with both
+PS Level 2 and PDF features. (gs_res.ps, gs_init.ps)
+ - If the next line after a stream keyword was blank, the line
+wasn't skipped, which matters for binary data. (pdf_base.ps)
+ - A Q operator with no matching q operator caused an error.
+(pdf_draw.ps)
+ - The text position wasn't preserved across a fill or stroke
+operator. (gs_pdf.ps, pdf_draw.ps)
+ - Embedded Type 3 fonts didn't work. (pdf_base.ps, pdf_draw.ps,
+pdf_main.ps)
+ - Masked images with no Decode value had their polarity inverted.
+(pdf_draw.ps)
+ - Embedded Type 1 fonts referenced from within a stream didn't
+work. (pdf_font.ps)
+
+Changes the PDF code so that it automatically recognizes PDF files as such.
+(pdf_main.ps)
+
+Splits out the PixelDifference filters as a separate "feature". (gs.mak)
+
+</pre><h3><a name="V3.23_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Closing the primary input stream caused an invalid memory access.
+(stream.c)
+ - Increasing the size of a buffer within a save resulted in a
+dangling reference after the restore. (files.h, sfilter.h, zfile.c,
+zfilter.c)
+ - The garbage collector didn't properly trace streams that referenced
+strings directly. (stream.h, stream.c, ziodev.c)
+
+</pre><h3><a name="V3.23_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An extraneous \ upset some compilers. (gdevabuf.c)
+ - Uncolored Patterns that completely filled their bounding box
+caused an invalid memory access. (gspcolor.c)
+ - If a color image required clipping, black or white pixels might
+be rendered with incorrect (random) colors. (gxcpath.c)
+ - Reference counts for color spaces were sometimes set too high, so
+they would only be freed by restore or garbage collection. (gscolor.c)
+ - The character cache could get confused if the Encoding for the
+character wasn't a name. (gschar.c)
+ - Character outlines were always rendered with flatness = 0,
+causing very bad performance for large characters. (gzstate.h, gschar.c,
+gsimage.c, gxfill.c, gxstroke.c)
+ - If a device (presumably uninitialized) had a
+color_info.num_components of zero, an invalid memory access could occur.
+(gsdparam.c)
+ - Intersecting clipping paths that are not both rectangular didn't
+properly set the outer box of new clipping path, leading to unnecessary
+computation. (gxcpath.h, gxacpath.c, gxcpath.c)
+ - A call passed false instead of NULL. (gschar.c)
+ - On machines where sizeof returns a long, genarch.c failed.
+(genarch.c)
+ - xfonts were consulted, incorrectly, even for stroked characters.
+(gxccman.c)
+ - gstate/currentgstate/setgstate didn't work properly. (gsline.c,
+gsstate.c)
+ - On CMYK devices needing halftoning, colors with C = M = Y were
+always converted to gray shades. (gxcmap.c)
+ - Isolated horizontal lines, or the horizontal edges of rectangles,
+could get drawn with one or both end pixels missing. (gxfill.c)
+
+Changes the character cache back so it oversamples characters at small
+sizes. (gschar.c)
+
+Changes all occurrences of (void)x to discard(x), and defines discard in
+stdpre.h as a cast to void, to make it possible to pacify compilers that
+don't accept this construct for some kinds of x. (gpcheck.h, stdpre.h,
+store.h, gdevmswn.c, gp_mswin.c, gscoord.c, gxclread.c, igc.c, sfile.c,
+sfileno.c, zcie.c, zht2.c, ziodev.c, zmisc1.c)
+
+Increases the size of the halftone cache on large-memory machines from 35K
+to 100K. This substantially improves halftoning performance at higher
+resolutions. (gxht.c)
+
+</pre>
+
+<h2><a name="Version3.22"></a>Version 3.22 (beta) (11/30/94)</h2>
+
+<p>
+This is primarily a bug fix release. It also includes limited anti-aliased
+graphics capability. This release was not distributed to the public.
+
+<h3><a name="V3.22_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The definition of ghost_h was misplaced, so changes in it or its
+antecedents didn't force recompilation of its dependents. (gs.mak)
+
+Actually implements the -Z+ switch, for forcing small stack blocks.
+(interp.c)
+
+Makes the -dSAFER switch disable the %pipe syntax for file names, even for
+reading. (gs_init.ps)
+
+</pre><h3><a name="V3.22_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The dfax drivers incorrectly set EncodedByteAlign to false.
+(gdevdfax.c)
+ - softwareValue and dateTimeValue were declared as byte rather than
+char. (gdevtfax.c)
+
+</pre><h3><a name="V3.22_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS DEC C compilers declare delete in unixio.h, and doesn't
+declare unlink anywhere. (stdio_.h)
+ - The VMS compilers declare malloc and free in stdlib.h, which
+wasn't being included in malloc_.h. (malloc_.h)
+ - The SCO Unix C compiler needs both &lt;sys/time.h&gt; and &lt;time.h&gt;.
+(time_.h)
+ - The VMS compilers declare abs in stdlib.h, which wasn't being
+included anywhere. (gshtscr.c)
+ - The definition for A4 paper in VMS-AXP.MAK was incorrect.
+(vms-axp.mak)
+
+Renames VMS-AXP.MAK as VMS-DECC.MAK, with some changes that make it
+appropriate for DEC C on both VAX and AXP platforms. (vms-axp.mak =&gt;
+vms.decc.mak)
+
+</pre><h3><a name="V3.22_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - gs_kanji.ps got an invalidaccess error. (gs_kanji.ps)
+
+</pre><h3><a name="V3.22_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An off-by-1 test in the roll operator caused it to smash the
+stack if the operand stack had overflowed into additional blocks.
+(zstack.c)
+ - The default CIE color rendering dictionary didn't assume a
+reasonable intermediate (XYZ) space. (gs_lev2.ps)
+ - CIE color mapping tables weren't traced properly by the garbage
+collector. (gscie.h, gscie.c, zcie.c)
+ - If the very last character of a file was a ^M, the scanner
+(incorrectly) signaled a syntaxerror. (iscan.c)
+ - If an operator could return both a typecheck and a
+stackunderflow, it always returned a stackunderflow, which doesn't match
+the behavior of Adobe interpreters. (opcheck.h, idparam.c, interp.c,
+iutil.c, z*.c)
+ - astore, dictstack, and execstack could return a spurious
+invalidaccess error (or fail to detect an invalid access) if the operand
+stack had overflowed into additional blocks. (istack.c)
+ - The garbage collector didn't relocate pointers to names! (Bug
+introduced in 3.20.) (iname.h)
+ - If the dictionary stack overflowed into additional blocks, the
+cached value pointer for a name could get set incorrectly, and also not get
+relocated by the garbage collector. (idict.c)
+ - If the dictionary stack overflowed into additional blocks, the
+post-GC fixup of cached value pointers in names could cause an addressing
+error. (igc.c)
+ - With the -Z? switch set, the garbage collector could incorrectly
+report that objects or strings weren't in any chunk. (igc.c)
+ - &lt;&lt; /a 1 /a 2 &gt;&gt; /a get gave the value 2 rather than 1.
+(gs_init.ps)
+ - Numbers in binary object sequences and encoded number arrays
+didn't work properly on machines where sizeof(short) != 2 or sizeof(long)
+!= 4. (ibnum.c)
+ - The put operator for dictionaries allowed null as a key.
+(idict.h, idict.c)
+ - &gt;&gt; didn't give an error if there were an odd number of values on
+the stack above the next mark. (gs_init.ps)
+ - Operations that explicitly freed ref objects (setting a CIE
+colorspace, resizing a dictionary, popping a block off a stack) could
+corrupt storage. (ialloc.c)
+ - The -Z@ switch, which fills freed blocks with a recognizable bit
+pattern, could incorrectly overwrite freed blocks in previous save levels,
+causing invalid memory accesses. (ialloc.c)
+ - Since streams freed by a restore weren't marked as free, they
+could confuse the garbage collector and lead to invalid memory accesses.
+(zfile.c)
+ - If one of the built-in dictionaries overflowed during
+initialization, no error was reported -- entries were simply discarded.
+(iinit.c)
+ - If the level2.dev feature was combined with certain other
+features, the current languagelevel was 2 when some gs_*.ps files were
+loaded, causing them to load incorrectly. (gs_btokn.ps, gs_setpd.ps)
+ - If readline read a line that ended with only a CR (no LF)
+followed by an end-of-file, it incorrectly closed the stream. (zfileio.c)
+
+Adds a .cond operator, similar to the Lisp multi-arm conditional.
+(zcontrol.c)
+
+Adds a .makeglobaloperator operator, allowing the definition of operator
+procedures in local VM that turn into global operators, provided the save
+level is zero. (iref.h, opdef.h, iinit.c, interp.c, zmisc.c)
+
+Note: the fix for returning typecheck vs. stackunderflow requires that all
+operators (or other code) that uses return_error(e_typecheck) to indicate
+an incorrect object type on the operand stack must change this to
+return_op_typecheck(op), where op points to the operand. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE.
+
+Implements string array and name array parameters for parameter lists.
+(gsparam.h, iparam.c)
+
+Brings filterdict inside the INITIAL_DICTIONARIES conditional. (iinit.c)
+
+Adds a .currentscreenlevels operator that returns the number of
+distinguishable halftone levels. (zht.c)
+
+</pre><h3><a name="V3.22_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The 2-D case of CCITTFaxDecode could get confused by an input
+data buffer boundary that fell immediately after a horizontal code.
+(scfd.c)
+ - The LZW decoder didn't detect invalid data unless DEBUG was
+selected at build time. (slzwd.c)
+
+</pre><h3><a name="V3.22_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The clipping region accumulator could refer to a clipping
+rectangle even after it had been freed. (No effect on execution unless the
+-Z@ switch was selected.) (gxacpath.c)
+ - setbbox expanded the bounding box, but didn't place a limit on
+further path elements, if the current path wasn't empty. (gsdps1.c)
+ - setbbox didn't make sufficient allowance for rounding.
+(gsdps1.c)
+
+Implements the ProcessColorModel parameter (read-only) for all devices.
+(gsdparam.c)
+
+Adds a gs_currentscreenlevels procedure that returns the number of
+distinguishable halftone levels. (gsht.c)
+
+</pre>
+
+<h2><a name="Version3.21"></a>Version 3.21 (beta) (11/17/94)</h2>
+
+<p>
+This is primarily a bug fix release. It also includes a substantial
+improvement in the Type 1 font hinting algorithms. This release was not
+distributed to the public.
+
+<h3><a name="V3.21_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The `man' page referred to gnu.ghostscript.bug rather than
+comp.lang.postscript. (gs.1)
+
+Documents the special entries in operator definition tables that allow
+switching dictionaries. (opdef.h)
+
+</pre><h3><a name="V3.21_Procedures"></a>Procedures</h3><pre>
+
+Moves the definition of JSRCDIR to the individual platform makefiles, to
+make it easier to change on platforms that don't have file links. (*.mak)
+
+</pre><h3><a name="V3.21_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ansi2knr didn't recognize that a line ending with } couldn't be a
+function definition. (ansi2knr.c)
+ - ps2epsi always returned an empty bounding box. (ps2epsi,
+ps2epsi.bat)
+
+</pre><h3><a name="V3.21_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The bitrgb device had an invalid depth of 3. (gdevbit.c)
+
+Replaces the color mapping code in the X driver with a much faster
+algorithm, courtesy of Tim Theisen. (gdevx.h, gdevx.c, gdevxini.c)
+
+</pre><h3><a name="V3.21_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Two variable names were misspelled. (gdevpm.c, gp_mswin.c)
+ - It wasn't possible to compile a non-DLL configuration under OS/2.
+(os2.mak)
+ - Compilation under Microsoft C/C++ 8.0 gave errors. (gp_mswin.h,
+gp_mswin.c, gshtscr.c)
+
+Adds some more devices to the OS/2 makefile. (os2.mak)
+
+</pre><h3><a name="V3.21_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - wrfont.ps, and hence bdftops, didn't write out the FontType or
+PaintType. (Bug introduced since 2.6.1) (wrfont.ps)
+ - wrfont.ps omitted a 'begin' and 'end', causing -! or -| to be
+undefined when the font was loaded. (Bug introduced since 2.6.1)
+(wrfont.ps)
+
+</pre><h3><a name="V3.21_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - make_tasv_old called make_tasv_new with extra arguments.
+(store.h)
+ - currentcacheparams only returned 2 values instead of 3.
+(zfont.c)
+ - ustroke popped one element too many off the stack if a matrix was
+supplied. (zupath.c)
+ - inu[eo]fill popped one element too many off the stack.
+(zupath.c)
+ - The color rendering dictionary was initialized to null rather
+than a valid dictionary. (gs_lev2.ps)
+ - An invalid IODevice resource named "9" got created. (gs_res.ps)
+ - bytesavailable often caused an error rather than returning -1.
+(zfileio.c, stream.c)
+ - The insideness testing operators always returned true if the
+aperture was defined by a user path rather than a point. (zupath.c)
+ - If INITIAL_DICTIONARIES was defined in the makefile, the
+definition of the initial_dictionaries array was missing a comma.
+(iinit.c)
+ - Even if userdict appeared in INITIAL_DICTIONARIES, gs_init.ps set
+its maxlength to 200. (gs_init.ps)
+ - Setting a CIE color space left a garbage value on the stack.
+(zcie.c)
+ - If a file or filter was opened and then closed, opening a file
+subsequently within a 'save' could lead to a memory access error in the
+garbage collector. (zfile.c)
+ - Setting an Indexed or Separation color space could cause a crash
+either in the garbage collector or when printing out the e-stack.
+(icsmap.h, zcsindex.c, zcssepr.c)
+ - Invoking a filter with an invalid data source or sink could cause
+a memory access error (bug introduced in 3.20). (zfilter.c)
+ - Invoking stringwidth on a font whose BuildChar procedure did a
+save could cause a memory manager error or infinite loop, because
+stringwidth attempted to use an inapplicable shortcut. (gschar.c)
+ - The bounding box for rendering stroked Type 1 characters didn't
+take square caps and miter joins into account. (gs_type1.ps)
+ - Invoking filter with DCTDecode or DCTEncode could cause an
+addressing error if no dictionary argument was supplied. (zfdctd.c,
+zfdcte.c)
+ - The Generic resource, the Font resource, and half a dozen
+resources with no predefined instances all shared the same Instances
+dictionary. (gs_res.ps)
+ - The temporary null device allocated for stringwidth was never
+freed. (gschar.h, gschar.c, zchar.c)
+ - Internal operators, and structures that might be freed on stack
+unwinding, could "escape" from the e-stack. (zcontrol.c, ztype.c)
+ - makefont and scalefont didn't properly handle a font whose
+Encoding had been changed. (bfont.h, zfont.c, zfont2.c)
+ - Type 1 fonts with PaintType = 2 incorrectly checked for an xfont.
+(gxfont.h, gschar.c, gsfont.c, zchar1.c, zfont1.c, zfont2.c)
+ - Specifying a string argument with -d...=(...) or -d...=&lt;...&gt;
+would cause an invalidaccess error. (gs.c)
+ - The environment for encapsulated jobs didn't rebind quit to stop
+in userdict. (gs_lev2.ps)
+ - restore didn't deal properly with open files on the e-stack.
+(zvmem.c)
+ - Even with the '-' switch, Ghostscript would try to read ahead in
+the input stream rather than processing input character-by-character.
+(ziodev.c)
+ - If an error occurred with a unreadable dictionary on any stack,
+the standard error printer would get into an error loop and exit the
+interpreter. (gs_init.ps)
+ - The for_roots macro in igc.c used ap rather than mem as its
+second formal parameter. (This typo had no effect on the executable
+program.) (igc.c)
+ - If saving the stacks for an error caused a GC request, a value
+could get stored into an improper variable on the C stack, causing havoc.
+(interp.c)
+ - setdash checked to make sure that the distance array had read
+access; Adobe interpreters don't check this. (zgstate.c)
+ - The roots for gs_run_string and gs_interpret weren't registered
+properly, which could cause a dangling reference in the case of a restore
+whose save had been done earlier. (gsmain.c, interp.c)
+
+Adds an OpenOutputFile Boolean device parameter for printer devices; if
+true, the device opens the OutputFile at the time the device is opened,
+instead of waiting for the first showpage. This helps with synchronization
+when the OutputFile is a pipe. (gdevprn.h, gdevprn.c)
+
+Changes the BEGIN/END_OP_DEFS macros to require an explicit { and } at each
+use. (gsmain.c, interp.c, z*.c)
+
+Arranges things so that the operators that the interpreter handles
+specially are assigned the first N operator indices [internal change only].
+(interp.h, iinit.c, interp.c)
+
+Changes the operators max and min to .max and .min, to avoid conflicts with
+PostScript programs that use these names for variables and also use 'bind'.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE from programs that depend on
+'bind' binding in these operators; however, we have also defined procedures
+max and min that just call the operators, which should take care of any
+ordinary code. (*.ps, zrelbit.c)
+
+</pre><h3><a name="V3.21_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The pfb_state pointer in the eexecDecode filter state wasn't
+marked as traceable for the garbage collector. (sfilter.h)
+ - The eexec decoding filter could access invalid memory or return
+garbage under some conditions. (Bug introduced in 3.12.) (zmisc1.c)
+ - The eexec decoding filter would incorrectly ask for more input if
+the output buffer was full. (seexec.c)
+
+</pre><h3><a name="V3.21_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some compilers reserve the word 'try'. (gshtscr.c)
+ - Some compilers don't like line continuations (\) within a
+preprocessor macro formal parameter list. (gdevprn.h, gxdevice.h)
+ - Memory devices created with an inverted palette (0=white,
+1=black) interchanged white and black in fill operations. (gdevmem1.c)
+ - The 'bits' variable in mem_mono_copy_mono was unused on
+little-endian machines. (gdevmem1.c)
+ - Some garbage collector procedures were declared 'private'
+inconsistently. (gscie.c)
+ - The new anti-aliased text capability accidentally caused all
+characters to be oversampled. (gschar.c)
+ - Type 1 fonts with PaintType = 2 and StrokeWidth = 0 came out with
+many pixels missing because of oversampling. (gschar.c)
+ - Type 1 font stem hints were not being processed correctly.
+(gstype1.h, gxtype1.h, gstype1.c, gxhint2.c, gxhint3.c, gxpath.c)
+ - The tracing message for 9/7 composite fonts incorrectly
+identified them as 1/7 fonts. (gschar0.c)
+ - If a 1/7 or 9/7 composite font was a child of a non-modal font,
+the font number of the child font was computed incorrectly. (gschar0.c)
+
+Splits up the various memory devices into one file per depth [internal
+change only]. (gdevm*.c)
+
+</pre>
+
+<h2><a name="Version3.20"></a>Version 3.20 (beta) (10/31/94)</h2>
+
+<p>
+This version contains some support for a PDF interpreter; however, the PDF
+code itself is not ready for release yet. It also includes anti-aliased text
+capability. This release was not distributed to the public.
+
+<h3><a name="V3.20_Documentation"></a>Documentation</h3><pre>
+Notes that the FAQ has moved to smallo.ruhr.de:pub/ghost/gs.faq. (readme)
+
+Documents various implementation limits. (language.doc)
+
+</pre><h3><a name="V3.20_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - bcp.dev wasn't included in the list of dependencies for
+level1.dev. (gs.mak)
+
+Changes the printout of version numbers so that it is always A.BC,
+rather than A.B if C is zero. (gs.c, gs_init.ps)
+
+</pre><h3><a name="V3.20_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - font2c didn't correctly handle Metrics or Metrics2 dictionaries
+whose entries were arrays rather than scalars. (font2c.ps, ccfont.h,
+iccfont.c)
+ - font2c didn't handle CDevProc. (font2c.ps, ccfont.h, iccfont.c)
+ - genconf could get a stack overflow on small machines.
+(genconf.c)
+
+Changes mergeini.ps so it can take arguments on the command line specifying
+the input and output files. (mergeini.ps)
+
+Adds a gsdj500 shell script to parallel gsdj500.bat. (gsdj500)
+
+</pre><h3><a name="V3.20_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X driver didn't mask dynamically assigned colors properly, so
+it could request the same color over and over again. (gdevx.c)
+
+Adds two alternate X Windows drivers, for helping debug drivers with other
+color models:
+ - x11alpha, an RGB device with 4-bit alpha capability (for
+ copy_alpha only);
+ - x11cmyk, a 1-bit-per-component CMYK device.
+(devs.mak, gdevxalt.c)
+
+Changes the left margin of the lj4dith driver to 0.26". (gdevcdj.c)
+
+</pre><h3><a name="V3.20_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - If &lt;sys/time.h&gt; didn't exist, time_.h didn't always include
+&lt;time.h&gt;. (time_.h)
+ - The OS/2 platform wouldn't compile. (gdevpm.c)
+ - The auxiliary VMS command files sometimes got blank lines
+inserted when going through EOL conversion. (vms.mak; delete gs_.com)
+ - The VMS makefiles didn't include the Level 1 operators in
+level1.dev. (vms.mak)
+ - The VMS gcc makefile didn't handle undefined DEVICE_DEVSn
+variables properly. (vms*.mak)
+ - The VMS makefiles didn't recognize DEVICE_DEVS{1,2,5,7}.
+(vms.mak)
+
+At the request of a Unix expert, changes all the Unix shell scripts to use
+exec gs ... "$@" rather than gs ... $*. (gsnd, gsbj, gsdj, gslj, gslp)
+
+Modifies the JPEG library so that it uses 4K less of the automatic data
+segment in 16-bit environments. (bcwin.mak, jpeg.mak, sjpeg.c, sjpegerr.c)
+
+Adds the bmp drivers back into the 16-bit MS Windows executable, since they
+will fit now. (bcwin.mak)
+
+</pre><h3><a name="V3.20_Fonts"></a>Fonts</h3><pre>
+
+Makes the font substitution algorithm recognize the word Roman as calling
+for a serif font. (gs_fonts.ps)
+
+</pre><h3><a name="V3.20_Interpreters"></a>Interpreters</h3><pre>
+
+Fixes bugs:
+ - The fix in 3.13 for the inexact function values at 0 didn't work.
+(zcontrol.c)
+ - Level 1 configurations referenced an undefined procedure
+gs_currenthalftone. (gsht.c, gsht1.c)
+ - Specifying any device properties (including -r and -g) on the
+command line caused an error. (gs_init.ps)
+ - The forward declaration of cfont_name_array_create was
+incorrect. (iccfont.c)
+ - save and restore could get called before the graphics state stack
+had been initialized properly. (gs_mex_e.ps)
+ - Some encodings weren't loaded properly. (gs.mak, gs_mex_e.ps,
+gs_mro_e.ps, gs_pdf_e.ps, gs_wan_e.ps)
+ - Zero-height images were allowed, but zero-width images
+weren't. (zpaint.c)
+ - Neither zero-width nor zero-height images popped their
+arguments from the operand stack. (zpaint.c)
+ - lib_file_fopen overwrote its file name argument, causing havoc
+with @-files. (gxiodev.h, gdevpipe.c, gsiodev.c, zfile.c)
+ - The garbage collector got confused if there were any arrays or
+dictionaries with 8K or more elements. (igcref.c)
+ - &gt;&gt; could leave the stacks in a questionable state if it failed.
+(gs_init.ps)
+ - The Category resource category didn't implement undefineresource.
+(gs_res.ps)
+ - When the token operator read the last token from a string, it
+left an unchanged string on the stack instead of an empty string.
+(stream.c)
+ - noaccess didn't give an invalidaccess error when applied to the
+permanent dictionaries. (dstack.h, idict.c, ztype.c)
+ - Overflowing the exec stack wasn't handled properly. (istack.h,
+istack.c)
+ - The garbage collector cleared the cached value pointers in names,
+causing interpretation to slow down substantially. (idict.c, igc.c,
+iname.c)
+ - 0 dict created a dictionary with a maxlength of 1. (idict.c)
+
+Changes the default size of the execution stack from 150 to 250, to match
+the Adobe "typical" value. (interp.c)
+
+Moves the operator definitions out of the automatic data segment.
+(opdef.h, iinit.c, z*.c)
+
+Adds operators that allow creation of objects in system space:
+.systemvmstring, .systemvmarray, .systemvmpackedarray, .systemvmdict,
+.systemvmcheck. (zsysvm.c)
+
+Renames gcdefs.h as gscdefs.h.
+
+Allocates names in system space rather than global space. (gsmain.c)
+
+Changes the memory manager so that it allows programs to create objects in
+system space. (iref.h, iutil.h, ivmspace.h, ...)
+
+Changes the implementation of filters so they appear in their own
+dictionary named filterdict. (gs_init.ps, z*.c)
+
+Changes the implementation of color spaces so each one has its own
+setcolorspace procedure, defined in a new dictionary named
+colorspacedict. (gs_lev2.ps, z*.c)
+
+Adds a new debugging switch, $, that always initializes all fields in a
+ref, in order to keep Purify happy. (store.h)
+
+</pre><h3><a name="V3.20_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The page size for image devices was always set to (0, 0).
+(gsdevice.c)
+ - The PageSize computation in gx_default_put_params could overflow
+on 16-bit machines. (gsdparam.c)
+ - An omitted 'static' on an initialized array caused a compiler
+error. (gxccman.c)
+ - If interpolated image rendering was requested but not
+actually carried out, gs_image_cleanup could attempt to free a random
+pointer. (gsimage.c)
+ - Some compilers only retain 23 characters of procedure names, but
+some procedure names weren't unique in the first 23 characters. (gscie.c,
+gscolor.c, gscolor1.c, gxcmap.c)
+ - The garbage collector didn't trace device colors properly.
+(gxdcolor.h, gzht.h, gsimage1.c, gspcolor.c, gxcht.c, gxcmap.c, gxdraw.c,
+gxht.c)
+ - For CMYK devices, the transfer functions were being applied to
+the CMYK values rather than the complemented RGBW values. (gxcmap.c)
+ - Memory devices used their own color mapping procedures rather
+than those of the target; this could cause incorrect colors for patterns on
+devices with more than 1 bit per pixel. (gxdevmem.h, gdevmem1.c, gdevpm.c,
+gdevprn.c, gdevwdib.c, gschar.c, gsdevice.c, gxccache.c, gxccman.c,
+gxclip2.c, gxclread.c, gxpcmap.c)
+ - The garbage collector didn't trace image enumerators properly in
+the image_render_simple case. (gsimage.c)
+ - stroke produced different-looking output for thin (zero-width)
+lines depending on whether or not clipping was invoked. (gxstroke.c)
+ - If a clipping list changed from multiple rectangles to a single
+rectangle, it could fail to clip properly thereafter. (gxacpath.c)
+
+Adds two new device procedures: alpha_bits and copy_alpha. This change is
+backward-compatible for all existing devices. (gdevmem.h, gxdevice.h,
+gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
+
+Changes the implementation of color halftones so that, when appropriate, it
+generates a single cell and uses the device tile_rectangle procedure.
+(gzht.h, gsht.c, gxcht.c, gxclist.c, gxclread.c)
+
+Adds partial support for the Orientation page device parameter.
+(gsdevice.c)
+
+Adds support for anti-aliased characters using 2 or 4 bits of alpha.
+(gxfcache.h, gschar.c, gxccache.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.13"></a>Version 3.13(private) (10/3/94)</h2>
+
+<p>
+This release was created for a customer; it was not distributed to the
+public.
+
+<h3><a name="V3.13_Documentation"></a>Documentation</h3><pre>
+Notes in make.doc that the file names in the IJG archive distributed with
+Ghostscript do not include the gsA.BC/ prefix. (make.doc)
+
+Adds a cross-reference to make.doc to the Watcom makefiles. (watc.mak,
+watcwin.mak, wccommon.mak)
+
+</pre><h3><a name="V3.13_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The makefile rule for gconfig.h et al had a couple of blank lines
+in the middle of it. (gs.mak)
+
+</pre><h3><a name="V3.13_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - wrfont.ps didn't add a lenIV entry to the Private dictionary if
+it was needed. (wrfont.ps)
+
+Adds a packfile.ps utility that allows compressing multiple files into a
+single file for environments with very little permanent storage.
+(gs_pfile.ps, packfile.ps, wrfont.ps)
+
+</pre><h3><a name="V3.13_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The {tiff,fax}{g32d,g4} devices could produce incorrect output.
+See under Streams below.
+ - The dfax drivers referred to the obsolete structure member
+EncodedEOLAlign. (gdevdfax.c)
+
+Changes the default bit order for TIFF/F output to little-endian, which is
+apparently what the majority of TIFF decoders like best. The bit order for
+the fax drivers is still big-endian. (gdevdfax.c, gdevtfax.c)
+
+</pre><h3><a name="V3.13_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build script used -a rather than -w for creating
+gconfig_.h. (vms.mak)
+ - The VMS build script didn't create gconfigv.h. (vms.mak)
+ - The VMS Fontmap had incorrect entries for the Bitstream Charter
+fonts. (fontmap.vms)
+ - The VMS MODULES.LIS file assumed the JPEG library files were in
+directory JPEG rather than JPEG-5. (modules.lis)
+
+</pre><h3><a name="V3.13_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Using DISKFONTS resulted in an invalidaccess error.
+(gs_fonts.ps)
+
+</pre><h3><a name="V3.13_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The standard transfer function considered gray values above
+roughly 0.994 equivalent to white; 0.999 is a better value. (gs_init.ps)
+ - The transfer, black generation, and undercolor removal functions
+gave slightly inexact results for an input value of 0. (zcolor.c,
+zcontrol.c)
+ - setpagedevice gave an /undefined error if it did not recognize a
+key, rather than ignoring the key. (zdevice.c, gs_init.ps, gs_lev2.ps,
+gs_setpd.ps)
+
+Changes .putdeviceparams to take an additional argument, a Boolean that
+says whether or not unrecognized keys should be reported as /undefined
+errors. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no user-written
+code should be calling .putdeviceparams. (zdevice.c)
+
+</pre><h3><a name="V3.13_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The Group 3 2-D and Group 4 fax encoders could emit incorrect
+output. (scfe.c)
+ - The algorithm for constructing optimal Huffman codes could
+produce invalid codes in some rare cases. (shcgen.c)
+
+</pre><h3><a name="V3.13_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Rectangles closed with lineto rather than closepath weren't
+recognized as rectangles. (This only affected performance, not
+functionality.) (gxpath2.c)
+ - The xfont lookup_font procedure could get called with a matrix
+whose translation components had never been initialized. (gxccman.c)
+ - Some compilers don't allow \ in the formal argument list of a
+preprocessor macro. (gdevprn.h, gxdevice.h)
+
+</pre>
+
+<h2><a name="Version3.12"></a>Version 3.12 (9/29/94)</h2>
+
+<p>
+This is another bug fix release, the first Level 2 release that we believe
+is reasonably reliable.
+
+<h3><a name="V3.12_Documentation"></a>Documentation</h3><pre>
+
+Adds some text warning about making copies of the makefile. (make.doc)
+
+</pre><h3><a name="V3.12_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were a number of unnecessary dependencies on $(MAKEFILE) in
+gs.mak, left over from before the existence of gconfigv.h. (gs.mak)
+ - JPEGSRC was defined in gs.mak rather than in jpeg.mak. (gs.mak,
+jpeg.mak)
+
+Changes the version numbering scheme back to A.BC, since people seem to be
+adapting to the change, and this allows using the version number directly
+as a MS-DOS directory name. (gconfig.c, gdevtfax.c, gs.c, gs_init.ps)
+
+Updates the JPEG library to version 5 (official release) of the IJG code.
+(jpeg/*, jpeg.mak)
+
+</pre><h3><a name="V3.12_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF/F driver put out invalid PageNumber and Software
+entries. (gdevtifs.h, gdevtfax.c)
+ - The TIFF/F and fax Group 3 2-D drivers used K=3 and K=5 instead
+of K=2 and K=4. (gdevtfax.c)
+ - The TIFF/F and fax Group 3 2-D drivers emitted improperly aligned
+output. (See under Streams below.)
+ - The MS Windows driver didn't resize the window properly in
+response to changing the device parameters. (gdevmswn.c)
+
+Because of complementary bugs in various C compilers, changes all the
+non-printer devices to use a different set of macros. (gdevmem.h,
+gdevpcfb.h, gdevprn.h, gdevsvga.h, gxdevice.h, gdev{3b1, bgi, herc, l256,
+pe, pm, sun, vglb, wddb, wdib, wprn, x}.c, gsdevice.c, gxacpath.c,
+gxclip2.c, gxcpath.c, gxpcmap.c, zupath.c)
+
+Changes the X11 driver to ignore the "margins" specified by Ghostview.
+This is apparently necessary for Ghostview to handle landscape display
+properly. (gdevxini.c)
+
+Adds a WindowID parameter to the X11 device, to allow setting the window
+for the output. (gdevx.h, gdevx.c, gdevxini.c)
+
+</pre><h3><a name="V3.12_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The definition of BEGINFILES in os2.mak occurred too late in the
+file to have the desired effect. (os2.mak)
+
+</pre><h3><a name="V3.12_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Updating the list of allocated file objects at a restore didn't
+clear the prev pointer of the new head, which could cause the garbage
+collector to encounter an invalid pointer. (Bug introduced by .forgetsave
+in 3.0.3.) (zfile.c)
+
+</pre><h3><a name="V3.12_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter with K &gt; 0 and EncodedByteAlign = true
+incorrectly aligned the 1-D/2-D bit as the last bit of a byte, rather than
+the first bit. (scfx.h, scfe.c)
+ - eexec could loop indefinitely under certain conditions.
+(seexec.c)
+ - eexec's algorithm for recognizing text vs. binary encoding didn't
+work properly in some cases that don't conform to the Adobe Type 1 Font
+Format documentation. (seexec.c)
+ - Closing a stream didn't clear out the strm and state pointers,
+which could cause invalid accesses by the garbage collector. (stream.c)
+
+</pre><h3><a name="V3.12_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - fill_loop could loop indefinitely under certain conditions.
+(Introduced by a bug fix in 3.1.) (gxfill.c)
+ - fill/eofill sometimes failed to paint parts of a region.
+(Introduced by a bug fix in 3.1.1.) (gxfill.c)
+ - Non-convex clipping paths sometimes omitted thin horizontal
+slivers of the region. (Probably introduced by the "thin graphics" fix in
+3.1.) (gxacpath.c)
+
+</pre>
+
+<h2><a name="Version3.1.1"></a>Version 3.1.1 (9/25/94)</h2>
+
+<p>
+This is primarily a bug fix release. It was originally intended for some
+commercial licensees, but beta testers found too many problems with it.
+
+<h3><a name="V3.1.1_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - NEWS didn't indicate that there was a non-backward-compatible
+change in the gx_device structure -- specifically, that l_margin,
+b_margin, r_margin, and t_margin were replaced by macros named
+dev_l_margin(dev), etc. (news)
+
+Describes the two-phase commit requirement for device put_params
+procedures. (drivers.doc, gsparam.h)
+
+</pre><h3><a name="V3.1.1_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The new S macro in genarch.c didn't work on compilers that do
+macro substitution within string constants (which is forbidden by the ANSI
+standard). (genarch.c)
+
+</pre><h3><a name="V3.1.1_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Driver put_params implementations didn't observe a "two-phase
+commit" discipline; this could lead to the current device in the graphics
+state being closed, and other inconsistencies. (gsparam.h, gxdevice.h,
+iparam.h, gdevbit.c, gdevcdj.c, gdevmswn.c, gdevpcfb.c, gdevpm.c,
+gdevprn.c, gdevx.c, gsdevice.c, gsdparam.c, zdevice.c, ziodev2.c, zmisc2.c)
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, it only affects
+put_params implementations, of which there are few.
+
+NOTE THE NON-BACKWARD-COMPATIBLE CHANGE IN THE gx_device STRUCTURE UNDER
+'Documentation' ABOVE. (gdevescp.c, gdevsj48.c, gdevsppr.c, gdevxini.c)
+
+</pre><h3><a name="V3.1.1_Platforms"></a>Platforms</h3><pre>
+
+Ensures that the Unix makefiles all include all the variants of TIFF/F and
+fax drivers. (ansihead.mak, cc-head.mak, gcc-head.mak)
+
+</pre><h3><a name="V3.1.1_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Most of the contents of statusdict were missing when
+running a Level 2 system in Level 1 mode. (zmisc2.c)
+
+</pre>
+
+<h2><a name="Version3.1"></a>Version 3.1 (9/20/94)</h2>
+
+<p>
+This release finally includes a usable subset implementation of
+setpagedevice, including all the machinery needed to address the
+long-standing "margins" problems.
+
+<h3><a name="V3.1_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - t_oparray objects weren't identified as behaving differently
+depending on whether they were marked executable. (iref.h)
+ - drivers.doc had gx_color_value instead of gx_color_index in
+the description of color mapping. (drivers.doc)
+
+Updates drivers.doc to reflect the change from static_procs to
+std_procs in the gx_device structure. (drivers.doc)
+
+</pre><h3><a name="V3.1_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The commands for building the JPEG library used rm instead
+of rm -f. (jpeg.mak)
+
+</pre><h3><a name="V3.1_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X Windows driver hadn't been updated to reflect some
+name changes in members of the gx_color_info structure. (gdevx.h,
+gdevx.c, gdevxini.c)
+
+Changes all non-printer drivers so that they use the new std_device_body
+macros. (gdev*.c)
+
+Adds a print_page_copies procedure for printer drivers, allowing the
+driver to receive num_copies. (gdevprn.h, gdevprn.c)
+
+</pre><h3><a name="V3.1_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - ref_memory_enum/reloc_ptrs were declared inconsistently.
+(ialloc.c)
+ - If the operand of restore was invalid, the restore did
+nothing, instead of giving a typecheck. (zvmem.c)
+ - In Level 2, the margins and setmargins compatibility
+operators were defined incorrectly in terms of current/setpagedevice.
+(gs_lev2.ps)
+
+Enables .makeoperator to make local operators as well as global ones.
+(opdef.h, iinit.c, zmisc.c, zpacked.c)
+
+Finishes implementing the TransferFunction entry in halftone
+dictionaries. (zht1.c, zht2.c)
+
+Adds .set/currentfilladjust operators for access to the fill
+adjustment parameter in the graphics state. (zgstate.h)
+
+Removes the deviceinitialmatrix operator. (zdevice.c)
+
+Changes defaultmatrix from a procedure to an operator. (zmatrix.c)
+
+Sets the fill adjustment to 0.5 for high-resolution devices, effectively
+implementing Adobe's any-part-of-pixel filling rule. (gs_init.ps)
+
+Implements a small but useful subset of setpagedevice. (gs_lev2.ps)
+
+</pre><h3><a name="V3.1_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The eexec decoder incorrectly concluded that its data was
+in hex form if the first data character was whitespace. (seexec.c)
+
+</pre><h3><a name="V3.1_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Thin graphics (e.g., lines or rectangles) with small angles
+relative to the X axis rendered with many points missing. (gxdraw.c,
+gxfill.c)
+ - The character cache rejected oversampled characters if the
+scaled-up size was too large, even if the scaled-down size wasn't.
+(gxchar.h, gschar.c, gxccache.c, gxccman.c)
+ - A call on sqrt with an integer argument didn't promote it
+explicitly to double, which is required for non-ANSI compilers.
+(gshtscr.c)
+
+Finishes implementing the TransferFunction entry in halftone
+dictionaries. (gsht1.c)
+
+Modifies the character oversampler so it can produce gray scale
+output instead of a 1-bit mask. We don't actually make use of this
+ability yet. (gxccman.c)
+
+Adds gs_set/currentfilladjust for access to the fill adjustment
+parameter in the graphics state. (gsstate.h, gsstate.c)
+
+Changes the names of the last few routines beginning with gz_ to
+begin with gx_ instead. (gzdraw.h =&gt; gxdraw.h, gsimage*.c, gxdraw.c,
+gxfill.c, gxstroke.c)
+
+Properly implements the PageSize, Margins, .HWMargins, and ImagingBBox
+device parameters for all devices. (gscoord.c, gsdparam.c, gspath2.c)
+Implements the NumCopies device parameter for printer devices.
+(gdevprn.c)
+
+Implements std_device_body macros to help insulate statically initialized
+non-printer devices from future changes in the gx_device structure.
+(gxdevice.h, ... many .c files ...)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.0.3"></a>Version 3.0.3 (9/16/94)</h2>
+
+<p>
+This is primarily a bug fix release; it also implements most of the
+remaining Level 2 loose ends (except for setpagedevice).
+
+<h3><a name="V3.0.3_Documentation"></a>Documentation</h3><pre>
+
+Changes code that refers to "Ghostscript" to use the correct product
+name from gs_product. (gs.mak, gdevpbm.c, gdevsun.c, gswppm.c)
+
+Documents the new .forgetsave operator. (language.doc)
+
+Clarifies the distinction between commercial licensing and single-copy
+end-user sales. (readme)
+
+</pre><h3><a name="V3.0.3_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The compilation rule for gdevadmp.c was missing from the
+makefile. (devs.mak)
+
+Changes the version numbering scheme back to A.B.C, since too many
+people got confused by the change to A.BC. (gconfig.c, gs.c,
+gs_init.ps)
+
+Adds a -dNOGC switch to prevent the garbage collector from being
+enabled. (gs_init.ps)
+
+</pre><h3><a name="V3.0.3_Utilities"></a>Utilities</h3><pre>
+
+Removes the ps2image utility, since the new psmono driver replaces it.
+
+</pre><h3><a name="V3.0.3_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF drivers incorrectly assumed that short and ulong
+were the same size as TIFF_short and TIFF_ulong, causing problems on
+64-bit systems. (gdevtfax.c)
+ - The EGA/VGA driver didn't do gray halftones properly if it
+was configured as a monochrome or 8-color device. (gdevpcfb.h)
+ - The comment in gdevevga.c incorrectly identified the file
+as gdevpcfb.c. (gdevevga.c)
+
+Changes the PC display drivers to save and restore more of the BIOS
+state. (gdevpcfb.h, gdevevga.c, gdevpcfb.c, gdevsco.c)
+
+Adds a new psmono driver that does the same thing as ps2image, faster
+and more conveniently. (gdevpsim.c)
+
+Replaces the X11 driver with the one from 3.01, since the color
+handling rewrite in 3.02 introduced serious bugs. (gdevx.h, gdevx.c,
+gdevxini.c)
+
+</pre><h3><a name="V3.0.3_Platforms"></a>Platforms</h3><pre>
+
+Changes the definition of gx_no_color_index to work around one of the
+bugs in the SGI Irix compiler. (gxdcolor.h)
+
+Rewrites the installation commands in unix-end.mak so they don't have
+very long lines. (unix-end.mak)
+
+</pre><h3><a name="V3.0.3_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Fonts that used 2- or 4-element arrays in the Metrics dictionary
+interpreted the width and side bearing interchanged with each other.
+(gs_type1.ps)
+ - Setting FONTPATH on the command line didn't work. (gs_fonts.ps)
+
+</pre><h3><a name="V3.0.3_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The stream position wasn't updated properly if sgets
+crossed a buffer boundary. (stream.c)
+
+Extends the BoundedHuffman filters so they can encode and decode runs of
+zeros specially, and so they mark and detect EOD. (sbhc.h, shc.h, sbhc.c,
+zfilter2.c)
+
+Provides an alternate implementation of file streams which doesn't use
+stdio buffering and which works around the System V "interrupted system
+call" problem. (stream.c, sfile.c, sfileno.c)
+
+Increases the maximum LZW output code from 3000 to 4095. (slzwe.c)
+
+</pre><h3><a name="V3.0.3_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Opening a filter on a file of the wrong access type (read
+vs. write) didn't cause an error. (stream.h, sbasic.c, zfile.c, zfileio.c)
+ - save performed an extra, unnecessary gsave. (zvmem.c)
+ - sethalftone always gave a /undefined error. (zht2.c)
+ - eexec decryption read too much data from the input -- in
+Level 2, it isn't allowed to read 512 characters ahead. (sfilter.h,
+strimpl.h, seexec.c, sstring.c, zfileio.c, zmisc1.c)
+ - The scanner was too aggressive about allocating additional
+space for strings on small machines. (iscan.c)
+ - The AccurateScreens flag in Type 1 and Type 2 halftone
+dictionaries was being ignored. (zht2.c)
+ - The Level 2 definition of margins in statusdict didn't
+allow for Margins being undefined in the current page device.
+(gs_lev2.ps)
+ - The Interpolate flag was being ignored in image
+dictionaries. [implemented in library]
+ - The TransferFunction option was being ignored in halftone
+dictionaries. (zht2.c)
+ - Type 5 halftones usually didn't work, because they called
+the wrong (or an invalid) spot function. (zht2.c)
+
+Implements a .forgetsave operator that effectively causes a given save (and
+all more recent saves) to disappear. (isave.h, stream.h, isave.c, zfile.c,
+zvmem.c)
+
+</pre><h3><a name="V3.0.3_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - In the 1-operand form of the image operator, a Decode value of [1
+0] with 8-bit sample values and a single data source was treated the same
+as [0 1]. (gsimage1.c)
+ - Some Monotype fonts put a callsubr between an OtherSubr call and
+the following 'pop' opcodes (which the Adobe documentation forbids); The
+Type 1 font interpreter gave an invalidfont error rather than allowing
+this. (gxtype1.h, gstype1.c)
+ - Patterns didn't implement XStep and YStep properly.
+(gxpcolor.h, gspcolor.c, gxclip2.c)
+ - Clipping regions were sometimes 1 pixel too small at the edges;
+this could cause vertical and horizontal lines produced by certain Windows
+drivers to disappear. (gzpath.h, gxacpath.c, gxcpath.c, gxfill.c)
+ - Oversampling cached rotated characters produced very bad
+results (many dropouts). (gschar.c)
+ - Rendering a DeviceGray color on a DeviceCMYK device applied
+the transfer function to all 4 components, not just to the K
+component. (gxcmap.c)
+ - A screen specified with setcolorscreen didn't take effect
+properly on CMYK devices. (gsht.c)
+
+Implements the Interpolate option for images. Currently this is only
+implemented for portrait-orientation images (no rotation, skewing, or
+X-reflection). (gscspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
+gscolor2.c, gspcolor.c, gxcmap.c, gsimage.c, gsimage2.c, gsimage3.c)
+
+Implements AccurateScreens, but only in the form of a larger limit on
+the size of a halftone super-cell. (gxht.h, gsht.c, gsht1.c)
+
+Starts to implement the TransferFunction option for halftones.
+(gzht.h, gzstate.h, gsht.c, ...too many others to list...)
+
+</pre>
+
+<h2><a name="Version3.02"></a>Version 3.02 (8/30/94)</h2>
+
+<p>
+This is another bug fix release. It was distributed only to a few people,
+since the new X Windows color mapping code is not reliable yet.
+
+<h3><a name="V3.02_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - make.doc, but not unixtail.mak, called for setting PLATFORM=unix_
+on SVR4 platforms. (unixtail.mak)
+ - drivers.doc contained some wording that suggested that
+Ghostscript always used RGB colors internally. (drivers.doc)
+ - The definition of gx_device in drivers.doc had gotten out of sync
+with gxdevice.h. (drivers.doc)
+ - README claimed that Ghostscript is not compatible with the
+VAX/VMS DEC C compiler, which is no longer true. (readme)
+
+Adds a new section on printer drivers to drivers.doc. (drivers.doc)
+
+Adds a large number of new display boards to the 800x600 SVGA section of
+use.doc. (use.doc)
+
+Adds a bug report form to the README file. (readme)
+
+Notes that OSF/1 AXP systems require changing the definition of INSTALL
+from install to installbsd. (make.doc)
+
+</pre><h3><a name="V3.02_Procedures"></a>Procedures</h3><pre>
+
+Removes -Wno-uninitialized from the gcc flags, and fixes all the places (in
+Aladdin's code only) that need to be fixed to pacify gcc after doing this.
+(gcc-head.mak, gdevgif.c, gdevmem2.c, gdevpcl.c, gs.c, gsht1.c, gsimpath.c,
+gsutil.c, gxclread.c, gxpcopy.c, gxstroke.c, idict.c, iscannum.c, stream.c,
+zdevice2.c) (NOT FINISHED YET)
+
+Adds a FAKEFONTS switch that makes fake entries in FontDirectory for
+unloaded fonts, for the benefit of programs that think they can find all
+the available fonts by scanning FontDirectory. (gs_fonts.ps, gs_init.ps)
+
+</pre><h3><a name="V3.02_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi didn't work, because setdevice now erases the page.
+(ps2epsi.ps)
+ - ps2epsi didn't work, because -dNODISPLAY installs a null device
+with 0 width and height. The fix -- to remove the -dNODISPLAY -- is not
+satisfactory, because it opens an unnecessary window. (ps2epsi)
+
+</pre><h3><a name="V3.02_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - gdev_fax_open was incorrectly declared static in gdevtfax.c,
+causing the extern reference in the dfax drivers not to be resolved.
+(gdevtfax.c)
+ - devs.mak included a duplicate definition of gdevmswn_h.
+(devs.mak)
+ - The fax drivers didn't link properly in Level 1 systems, because
+shc.c was omitted from their dependency list. (gs.mak, devs.mak)
+ - The TIFF/F drivers didn't set RowsPerStrip properly.
+(gdevtfax.c)
+ - The TIFF/F drivers didn't byte-align the EOL properly. (scfx.h,
+gdevdfax.c, gdevtfax.c, scfe.c, zfilter2.c)
+ - The rule for compiling gdevpccm.c incorrectly specified
+dependency on gs.h rather than gx.h. (devs.mak)
+ - The rule for compiling gdevtfax.c didn't include time_.h as a
+dependency. (devs.mak)
+ - The mode 2 compression routine for the DeskJet/LaserJet printers
+was broken. (gdevpcl.c)
+
+Removes the -O0 from the compilation rule for gdevsco.c, since it was
+misplaced to begin with. (devs.mak)
+
+Adds a maxDynamicColors X resource to control dynamic allocation in the
+color map. Replaces the X color lookup algorithms with completely new
+ones, for a substantial performance gain. (gdevx.h, gdevx.c, gdevxini.c)
+
+Adds PageNumber, Software, and DateTime entries to the TIFF/F drivers.
+(gdevtifs.h, gdevtfax.c)
+
+Changes the margins for the LaserJet 4 to 0. (gdevdjet.c)
+
+Adds a user-contributed LaserJet 4 driver that does Floyd-Steinberg
+dithering. (gdevcdj.c)
+
+</pre><h3><a name="V3.02_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The exit codes for Ghostscript should be different on VMS.
+(iastate.h, gs.c, gsmain.c, igc.c, igcref.c)
+ - The VMS DEC C compiler declares malloc and free in stdlib.h, and
+delete and unlink in stdlib.h. (malloc_.h, stdio_.h)
+ - st_prn_device wasn't defined, which upset the VMS linker even
+though there were no references. (gdevprn.h)
+ - stdpre.h didn't bring in the right headers when running gcc on
+SCO Unix, causing compilation warnings/errors. (stdpre.h)
+ - The definition of rename in gp_sysv didn't include const for the
+arguments. (gp_sysv.c)
+ - The definition of gettimeofday in gp_sysv didn't return any
+value. (gp_sysv.c)
+ - time_.h didn't work on MS-DOS systems. (time_.h)
+ - math_.h didn't include &lt;math.h&gt; when compiling with gcc on VMS
+systems. (math_.h)
+ - DesqView/X doesn't have a 'cat' command, which caused problems in
+the linking step. (dvx-tail.mak)
+
+Changes the definitions of popen in gdevpipe.c and gp_unix.c so they don't
+specify the argument list. This is an attempt to get around the fact that
+there is no easy way to detect whether the available header files declare
+popen correctly (with const arguments), incorrectly (with non-const
+arguments), or not at all. (gdevpipe.c, gp_unix.c)
+
+Replaces VMS.MAK, VMS-CC.MAK, and VMS-AXP.MAK with new versions provided by
+a user. (vms.mak, vms-cc.mak, vms-axp.mak)
+
+Changes the 16-bit Borland makefiles so their standard configuration is
+Level 1 plus color.dev (CMYK color and colorimage). (bc.mak, bcwin.mak)
+
+</pre><h3><a name="V3.02_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - cfonts.mak still referred to some .gsf files that have been
+replaced by .pfa files. (cfonts.mak)
+ - Compiled fonts got entered into FontDirectory, but didn't get
+registered as resources. (gs_ccfnt.ps)
+ - The Cyrillic, Kana, Hershey .gsf, and URW fonts didn't include a
+necessary systemdict begin/end, which caused them to fail in badly designed
+environments. (fonts/f*.gsf, fonts/h*.gsf, fonts/?0*.gsf)
+
+Changes the default target directory in cfonts.mak from fonts/c to .;
+changes the names of the Zapf Chancery compiled font procedures from c* to
+zc*. (cfonts.mak)
+
+Adds more fonts from the Adobe Type Manager package for MS Windows to
+Fontmap.ATM. (fontmap.atm)
+
+Adds the entire set of 35 standard fonts to the ccfonts feature in gs.mak;
+removes all the compilation rules for compiled fonts, since these rules are
+in cfonts.mak already. (gs.mak)
+
+</pre><h3><a name="V3.02_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - kshow executed a null, rather than the correct procedure, between
+the characters of the string, and got a typecheck error at the end.
+(zchar.c)
+ - MultiMaster fonts computed their side bearing and width
+incorrectly, producing incorrect output. (zchar1.c)
+ - There was no structure definition for gs_type1_state, so a GC
+during the execution of an OtherSubrs procedure could scramble pointers in
+the saved state. (zchar1.c, zfont1.c; also affects library, see below)
+ - kshow didn't work properly if the kerning procedure changed the
+depth of the operand or dictionary stack. (zchar.c)
+ - If the element count for roll was too large by only 1 or 2, the
+result was a crash rather than a rangecheck. (zstack.c)
+ - restore didn't undo currentgstate. (igstate.h, store.h,
+gsstate.c, zdevice2.c, zdps1.c, ztype.c)
+ - The scanner didn't set the local bit properly in a suspended
+state. (iscan.c)
+ - copypage disregarded #copies. (gs_init.ps)
+ - An incorrectly declared pointer led to addressing faults on
+16-bit systems. (zchar1.c)
+ - The cache for Separation colors was allocated with one element
+too few. (zcsindex.c)
+
+Changes `executive' so that if an error other than EOF occurs in the
+reading of the statement, the interpreter prints the error message, but
+control remains in the executive loop. (This isn't a very good fix; a
+better one will require refactoring executive / execute / run.)
+(gs_init.ps)
+
+Changes dictionary undo saving to use the new ref_must_save macro [internal
+change only]. (idict.c)
+
+Moves configuration definitions from iinit.c to gconfig.c. (gcdefs.h,
+interp.h, gconfig.c, gs.c, iinit.c, zmisc2.c, gs.mak)
+
+Moves =string from systemdict to userdict for Adobe compatibility.
+(gs_init.ps)
+
+Starts to implement the Interpolate flag in image dictionaries. See under
+Library below for restrictions. (zpaint.c, zimage2.c)
+
+</pre><h3><a name="V3.02_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - stream_compact attempted to compact a read-only string being used
+as the data source of a filter. (sbasic.c, stream.c)
+
+Adds an EncodedEOLAlign flag to the CCITTFaxEncode stream, to allow direct
+generation of TIFF/F output. (scfx.h, scfe.c, zfilter2.c)
+
+</pre><h3><a name="V3.02_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was no structure definition for gs_type1_state, so a GC
+during the execution of an OtherSubrs procedure could scramble pointers in
+the saved state. (gxfont1.h, gxtype1.h, gstype1.c, gxhint2.c)
+ - A couple of calls had to discard const, but didn't include the
+necessary cast. (gxpcmap.c)
+ - makeimagedevice refused to accept an empty image. (gsdevice.c)
+ - The extra parentheses around arguments in memory_.h caused some
+compilers to fail. (memory_.h)
+ - Floating point overflows during coordinate conversion terminated
+Ghostscript. (gxfarith.h, gxfixed.h, gsmatrix.c, gsmisc.c)
+ - Accents still weren't getting placed properly on characters
+created with seac. (gstype1.c, gxhint2.c)
+ - The SGI C compiler couldn't handle the (perfectly legal)
+definitions of dev_init_[open_]misc. (gxdevice.h)
+ - string_.h caused some problems with gcc on some versions of
+Solaris. (string_.h)
+ - The halftone levels for color screens were computed incorrectly.
+(gzht.h, gxdither.c)
+ - Color screens sometimes had vertical stripes of solid color
+interspersed. (gxcht.c)
+ - Colors could get mapped incorrectly if a compiler aggressively
+(and incorrectly) reordered the computation of procedure arguments
+involving the unit_frac macro. (gxcmap.c)
+ - setcachedevice[2] insisted that the corners of the bounding box
+be given in the correct order, i.e., llx &lt; urx and lly &lt; ury. (gschar.c)
+ - The image operator gave a limitcheck on unrotated 1-bit-per-pixel
+images whose width in device coordinates exceeded 65529. (gsimage.c)
+ - The garbage collector didn't trace the input data of an
+in-progress image operator correctly. (gsimage.c)
+
+Changes the max_rgb and dither_rgb members of gx_device_color_info to
+max_color and dither_colors, since Ghostscript now uses these for CMYK
+devices as well. Also changes dither_gray to dither_grays. (gdevmem.h,
+gdevprn.h, gxdevice.h, gdevbit.c, gdevcdj.c, gdevprn.c, gdevxini.c,
+gsdparam.c, gxcht.c, gxcmap.c)
+
+Starts to implement the Interpolate option for images. Currently this is
+only implemented for image, not imagemask, and only for rotations that are
+multiples of 90 degrees (possibly with reflection). (gsimage.h,
+gsiscale.h, gximage.h, gsimage.c, gsimage1.c, gsiscale.c)
+
+Starts to implement XStep and YStep in pattern dictionaries. (gxdcolor.h,
+gxpcolor.h, gspcolor.c, gxpcmap.c)
+
+</pre>
+
+<h2><a name="Version3.01"></a>Version 3.01 (8/14/94)</h2>
+
+<p>
+This is a patch release to fix early problems in release 3.0, and to clean
+up a few known loose ends.
+
+<h3><a name="V3.01_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - language.doc still documented the devicename procedure, which has
+been withdrawn. (language.doc)
+ - drivers.doc didn't specify under what circumstances each
+procedure could be called. (drivers.doc)
+ - current.doc said that setcachedevice and makeimagedevice wouldn't
+accept packed arrays, but neither of these operators takes any array
+arguments. (current.doc)
+ - current.doc said that definefont didn't interact properly with
+the resource machinery, which apparently is no longer true. (current.doc)
+ - make.doc incorrectly gave the name of the DVX makefile as
+dvx-djg.mak rather than dvx-gcc.mak. (make.doc)
+ - In one place, devices.doc incorrectly used -sBitsPerPixel= rather
+than -dBitsPerPixel=. (devices.doc)
+
+Notes that a kernel bug in SCO Unix makes Ghostscript not work correctly in
+some circumstances. (use.doc)
+
+</pre><h3><a name="V3.01_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - devs.mak incorrectly referred to gdevjetp.c instead of
+gdev3852.c. (devs.mak)
+ - The obsolete file gsprops.c was accidentally included in the
+fileset.
+
+Changes the version numbering scheme from A.BCC to A.B[C]. E.g., this
+release will be 3.01, not 3.001. (gs_init.ps, gs.c, iinit.c)
+
+Adds the LaserJet 4 driver to all makefiles that already include the
+LaserJet 3 driver. (*.mak)
+
+Adds the BJ-200 driver to all makefiles that already included the BJ-10e
+driver. (*.mak)
+
+Splits the Unix 'install' target into install-exec and install-data. Moves
+the executable scripts from gsdatadir to a new directory scriptdir, which
+defaults to bindir. (ansihead.mak, cc-head.mak, gcc-head.mak,
+unix-end.mak)
+
+</pre><h3><a name="V3.01_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - genconf had fixed buffer sizes built into it, which it could
+overrun its working storage without checking. (genconf.c)
+
+Removes RCS or SCCS headers from two utility files. (pj-gs.sh,
+printafm.ps)
+
+</pre><h3><a name="V3.01_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The new dfaxhigh and dfaxlow drivers didn't set
+state.EncodedByteAlign to false. (gdevdfax.c)
+ - The sunview driver assumed that the device would be open before
+map_rgb_color was called. (gdevsun.c)
+ - The CP50 driver incremented page_count itself, rather than
+letting the core library do it. (gdevcp50.c)
+ - The GIF driver(s) could loop indefinitely under certain
+circumstances. (gdevgif.c)
+ - The Group 4 fax drivers incorrectly included end-of-line codes in
+the output. (gdevtfax.c, gdevdfax.c)
+ - The Group 4 fax drivers could put out an EOB in the middle of the
+data. (scfe.c)
+ - The DesignJet 650C driver didn't use the correct compression
+mode. (gdevcdj.c)
+ - The Hercules and EGA/VGA/SVGA drivers computed the page height
+incorrectly according to the A4 switch. (gdevherc.c, gdevpcfb.h)
+
+Changes the page_count and showpage_count members of the device structure
+from int to long. (gxdevice.h, gdevprn.c, gsdparam.c)
+
+Changes the faxg3, faxg32d, and faxg4 drivers so that, like the TIFF and
+dfax drivers, they adjust the page size to one of the three CCITT standard
+sizes if this is reasonable. (gdevtfax.c)
+
+Splits the bit driver into bit, bitrgb, and bitcmyk. Adds bitrgb and
+bitcmyk to all makefiles that included bit. (*.mak, devs.mak, gdevbit.c)
+
+Replaces the atiw16, tseng16, and tvga16 SuperVGA drivers with a single
+svga16 driver that allows specifying the display mode number. (devs.mak,
+gdevpcfb.c)
+
+</pre><h3><a name="V3.01_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The MS Windows and OS/2 drivers allocated their terminal input
+buffers in a way that could cause the GC to crash. (gp_mswin.c, gp_os2.c)
+ - The handling of gettimeofday on SVR4 platforms was incorrect.
+(time_.h, gp_sysv.c, gp_unix.c)
+ - On some platforms, function prototypes were not enabled even if
+__STDC__ was defined. (stdpre.h)
+ - The VMS build script referred to an obsolete feature lev2only.
+(vms.mak)
+
+Changes the DVX platform so that stdprn is buffered. This should improve
+printing performance dramatically. (gp_dvx.c)
+
+</pre><h3><a name="V3.01_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Setting DISKFONTS resulted in a reference to FontFileDirectory
+before it was defined. (gs_type1.ps, gs_fonts.ps)
+ - /Font findresource gave an error rather than doing font
+substitution. (gs_res.ps)
+ - FontDirectory wasn't rebound to GlobalFontDirectory when global
+VM was current. (gs_res.ps, zdict.c)
+ - Type 1 fonts weren't loaded into global VM. (gs_fonts.ps)
+ - In the standard Fontmap, the Utopia fonts had extension .gsf
+rather than .pfa. (fontmap.gs)
+ - Fonts whose FontBBox was [0 0 0 0] were not displayed, or were
+displayed as tiny dots. (gs_type1.ps)
+
+</pre><h3><a name="V3.01_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - dict_put could read from the variable pvslot before it was used.
+(This was harmless, since the value was never actually used; it just upset
+Purify.) (idict.c)
+ - Binary object sequences could cause addressing faults.
+(iscanbin.c)
+ - The attributes on names were set incorrectly in binary object
+sequences. (iscanbin.c)
+ - gs.c duplicated (in some cases incorrectly) some definitions in
+interp.h. (gs.c)
+ - gs_lib_paths was declared const in one place and non-const in
+another. (zfile.c)
+ - file_restore and font_restore had inconsistent const declarations
+for their argument. (isave.c)
+ - iodev_os_open_file was missing its last formal parameter.
+(ziodev.c)
+ - gs.c declared gs_devicename with an incorrect extern. (gs.c)
+ - undefinefont didn't interact properly with the resource
+machinery. (gs_lev2.ps)
+ - The declaration for swap_entry used a typedef name as a formal
+parameter, which upset some compilers. (zmisc2.c)
+ - Including the ccinit feature could cause the garbage collector to
+make an invalid access. (stream.c)
+ - The check for t_[a]struct types in ztype.c was incorrect.
+(ztype.c)
+ - After the collection of halftone samples, temporary data
+structures were freed incorrectly. (gzht.h, gsht1.c, zht.c)
+ - Images with source width between 489 and 492 crashed the
+memory manager. (iastate.h)
+
+Makes it possible to define SEARCH_HERE_FIRST (gsmain.c) in the makefile.
+(gsmain.c)
+
+Splits the Level 2 resource machinery into a separate file. (gs_lev2.ps,
+gs_res.ps, gs.mak, unix-end.mak, vms.mak).
+
+Changes the names of the DiffEncode/Decode filters to
+PixelDifferenceEncode/Decode, and splits them off into a separate
+"feature". (gs.mak, zfilter2.c, zfpdiff.c, spdiff.c, spdiffx.h)
+
+Adds experimental code for filtered image scaling. DON'T USE THIS CODE.
+(zimage2.c)
+
+</pre><h3><a name="V3.01_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter could put out an EOB in the middle of
+the data. (scfe.c)
+
+Splits off the PixelDifferenceEncode/Decode filters into a separate
+"feature". (gs.mak)
+
+</pre><h3><a name="V3.01_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_setcachedevice could return a garbage error code. (gschar.c)
+ - joins on stroked lines were incorrect if the device coordinate
+system mapped +Y to +Y. (gxstroke.c)
+ - If gsmisc.c supplied versions of missing library routines, they
+could clash with the names of the real ones if those were present
+unexpectedly. (memory_.h, gsmisc.c)
+ - The initialization expression for is_open in the
+dev_init_misc_open macro included a cast, which some compilers don't allow.
+(gxdevice.h, gsdevice.c, gxclip2.c, gxpcmap.c)
+ - In Type 1 fonts, character that specified their side bearing and
+width with sbw rather than hsbw gave an invalidfont error. (gstype1.c)
+ - Some procedures were declared inconsistently with regard to const
+arguments. (gscie.c, gxpcmap.c, gxacpath.c, gxcmap.c)
+ - A few places still assumed that pointers occupied 4 bytes.
+(gxclist.c)
+ - Rendering a gray halftone on a CMYK device called the device's
+map_rgb_color procedure instead of map_cmyk_color. (gxdither.c)
+
+Renames gsfile.c as gswppm.c. (gsfile.c, gswppm.c)
+
+Implements the ability to cache arbitrarily transformed characters. This
+is currently enabled by a compile-time flag in gschar.c. (gschar.c)
+
+</pre>
+
+<h2><a name="Version3.0"></a>Version 3.0 (8/1/94)</h2>
+
+<p>
+This is the first full Level 2 version released to the public.
+Unfortunately, we were not able to include setpagedevice in this release.
+
+<h3><a name="V3.0_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - README didn't mention Aladdin's European distributor.
+ - psfiles.doc didn't describe some of the newer gs_*.ps files.
+
+Notes that gcc -O2 (version 2.5.8 of gcc) generates incorrect code for some
+modules on the H-P RISC architecture.
+
+Notes that on AXP platforms running VMS, DEC C V4.0 is required.
+
+</pre><h3><a name="V3.0_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make clean' didn't delete devs.tr or t.tr.
+ - devs.mak was missing the entry for faxg32d.
+ - unixansi.mak omitted some drivers that were included in
+unix-cc.mak and unix-gcc.mak.
+
+Updates jpeg.mak to reference version 5beta1 of the IJG JPEG code.
+
+Changes the version numbering scheme from A.B.C to A.B[CC]. I.e., the
+first sub-release after 3.0 will be 3.01 or 3.001, not 3.0.1.
+
+</pre><h3><a name="V3.0_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii didn't do a setglobal.
+
+Adds an option to ansi2knr to convert ... to va_alist/va_dcl.
+
+</pre><h3><a name="V3.0_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The newly added faxg32d driver didn't have an entry in devs.mak.
+ - The BMP, GIF, and PCX drivers wrote out an incorrect color
+palette (the blue values were too small).
+ - The vgalib driver had some compilation problems.
+ - The TIFF drivers didn't produce correct multi-page output.
+
+Adds faxg32d and tiffg32d drivers.
+
+Reinstates the DigiFax drivers, which were withdrawn when the new fax
+drivers were added.
+
+</pre><h3><a name="V3.0_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - gs_btokn.ps and gs_ccfnt.ps weren't installed on Unix platforms.
+ - The VMS module list omitted SBHC, included a non-existent GXDASH,
+and had incorrect names for some of the IJG JPEG files.
+ - The VMS build scripts (vms*.mak) had incorrect "boilerplate".
+ - The VMS script file gssetmod.com had \r characters in it, as well
+as \n characters.
+ - The echogs and genarch utilities didn't return the correct exit
+codes under VMS.
+ - The VMS Fontmap had incorrect entries for the Courier and Charter
+fonts.
+ - When running under Ghostview, Ghostscript didn't drain the input
+pipe. (We fixed this with a temporary patch in gs.c; this isn't a good
+solution for the longer term.)
+
+</pre><h3><a name="V3.0_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The free AvantGarde, Bookman, and Palatino font families had
+incorrect FontBBox values.
+ - The 'f' and 'j' in the free AvantGarde-DemiOblique,
+Bookman-DemiItalic, Bookman-LightItalic, and Palatino-Italic fonts were
+chopped off on the right. (The bitmaps were chopped off in the original
+BDF fonts from which these fonts were made.) ****** THIS PROBLEM WAS NOT
+ACTUALLY FIXED. ******
+
+</pre><h3><a name="V3.0_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - gs -h and gs -v didn't print the tertiary version number correctly.
+ - Binary object sequences with no strings or names didn't read in
+correctly.
+ - Binary object sequences that crossed an input buffer boundary
+didn't read in correctly.
+ - Binary object sequences read in as {[e1 .. en] e1 ... en} instead
+of {[e1 ... en]}. (New bug in 2.9.x.)
+ - setpattern didn't set the current color space correctly if the
+current color space wasn't a Pattern space.
+ - If the current color space was an uncolored Pattern space but the
+current color was a colored Pattern, currentcolor returned extra values on
+the operands stack.
+ - .buildfont1 in gs_type1.ps didn't force binding of the old
+definition, causing ps2ascii to loop endlessly.
+
+Adds a facility for writing and reading dictionaries in binary object
+sequences. This is experimental and subject to change in the future.
+
+</pre><h3><a name="V3.0_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - gs_run_string and ccinit didn't have any way to mark the string
+as "foreign", which confused the GC.
+
+</pre><h3><a name="V3.0_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gxchar.h had an extra comma after the last element of the
+show_width_status enum, which upset some compilers.
+ - stroke and strokepath didn't correctly skip zero-length segments
+if the line width was less than one pixel, or if there was a closed subpath
+consisting entirely of zero-length segments.
+ - strokepath sometimes incorrectly added a moveto at the end of the
+path.
+</pre>
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/History4.htm b/Master/xemtex/doc/ghostscript/History4.htm
new file mode 100644
index 00000000000..35e67000138
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History4.htm
@@ -0,0 +1,3980 @@
+<!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 4.n</title>
+<!-- $Id: History4.htm,v 1.13.2.11.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: history4.txt -->
+<!--
+ 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 4.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version4.81">Version 4.81 (6/1/97)</a>
+<ul>
+<li><a href="#V4.81_Documentation">Documentation</a>,
+ <a href="#V4.81_Procedures">Procedures</a>,
+ <a href="#V4.81_Utilities">Utilities</a>,
+ <a href="#V4.81_Drivers">Drivers</a>,
+ <a href="#V4.81_Platforms">Platforms</a>,
+ <a href="#V4.81_Interpreter">Interpreter</a>,
+ <a href="#V4.81_Library">Library</a>
+</ul>
+<li><a href="#Version4.80">Version 4.80 (limited) (5/28/97)</a>
+<ul>
+<li><a href="#V4.80_Documentation">Documentation</a>,
+ <a href="#V4.80_Procedures">Procedures</a>,
+ <a href="#V4.80_Utilities">Utilities</a>,
+ <a href="#V4.80_Drivers">Drivers</a>,
+ <a href="#V4.80_Platforms">Platforms</a>,
+ <a href="#V4.80_Fonts">Fonts</a>,
+ <a href="#V4.80_Interpreter">Interpreter</a>,
+ <a href="#V4.80_Streams">Streams</a>,
+ <a href="#V4.80_Library">Library</a>
+</ul>
+<li><a href="#Version4.74">Version 4.74 (limited) (5/5/97)</a>
+<ul>
+<li><a href="#V4.74_Documentation">Documentation</a>,
+ <a href="#V4.74_Utilities">Utilities</a>,
+ <a href="#V4.74_Drivers">Drivers</a>,
+ <a href="#V4.74_Interpreter">Interpreter</a>,
+ <a href="#V4.74_Streams">Streams</a>,
+ <a href="#V4.74_Library">Library</a>
+</ul>
+<li><a href="#Version4.73">Version 4.73 (limited) (4/19/97)</a>
+<ul>
+<li><a href="#V4.73_Documentation">Documentation</a>,
+ <a href="#V4.73_Procedures">Procedures</a>,
+ <a href="#V4.73_Utilities">Utilities</a>,
+ <a href="#V4.73_Drivers">Drivers</a>,
+ <a href="#V4.73_Platforms">Platforms</a>,
+ <a href="#V4.73_Interpreter">Interpreter</a>,
+ <a href="#V4.73_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.73_Streams">Streams</a>,
+ <a href="#V4.73_Library">Library</a>
+</ul>
+<li><a href="#Version4.72">Version 4.72 (limited) (4/14/97)</a>
+<ul>
+<li><a href="#V4.72_Documentation">Documentation</a>,
+ <a href="#V4.72_Procedures">Procedures</a>,
+ <a href="#V4.72_Drivers">Drivers</a>,
+ <a href="#V4.72_Platforms">Platforms</a>,
+ <a href="#V4.72_Interpreter">Interpreter</a>,
+ <a href="#V4.72_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.72_Streams">Streams</a>,
+ <a href="#V4.72_Library">Library</a>
+</ul>
+<li><a href="#Version4.71">Version 4.71 (limited) (3/31/97)</a>
+<ul>
+<li><a href="#V4.71_Documentation">Documentation</a>,
+ <a href="#V4.71_Procedures">Procedures</a>,
+ <a href="#V4.71_Drivers">Drivers</a>,
+ <a href="#V4.71_Interpreter">Interpreter</a>,
+ <a href="#V4.71_Streams">Streams</a>,
+ <a href="#V4.71_Library">Library</a>
+</ul>
+<li><a href="#Version4.70">Version 4.70 (limited) (3/26/97)</a>
+<ul>
+<li><a href="#V4.70_Documentation">Documentation</a>,
+ <a href="#V4.70_Procedures">Procedures</a>,
+ <a href="#V4.70_Drivers">Drivers</a>,
+ <a href="#V4.70_Platforms">Platforms</a>,
+ <a href="#V4.70_Interpreter">Interpreter</a>,
+ <a href="#V4.70_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.70_Streams">Streams</a>,
+ <a href="#V4.70_Library">Library</a>
+</ul>
+<li><a href="#Version4.61">Version 4.61 (limited) (3/13/97)</a>
+<ul>
+<li><a href="#V4.61_Documentation">Documentation</a>,
+ <a href="#V4.61_Procedures">Procedures</a>,
+ <a href="#V4.61_Drivers">Drivers</a>,
+ <a href="#V4.61_Platforms">Platforms</a>,
+ <a href="#V4.61_Interpreter">Interpreter</a>,
+ <a href="#V4.61_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.61_Streams">Streams</a>,
+ <a href="#V4.61_Library">Library</a>
+</ul>
+<li><a href="#Version4.60">Version 4.60 (limited) (3/2/97)</a>
+<ul>
+<li><a href="#V4.60_Documentation">Documentation</a>,
+ <a href="#V4.60_Procedures">Procedures</a>,
+ <a href="#V4.60_Drivers">Drivers</a>,
+ <a href="#V4.60_Platforms">Platforms</a>,
+ <a href="#V4.60_Fonts">Fonts</a>,
+ <a href="#V4.60_Interpreter">Interpreter</a>,
+ <a href="#V4.60_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.60_Streams">Streams</a>,
+ <a href="#V4.60_Library">Library</a>
+</ul>
+<li><a href="#Version4.51">Version 4.51 (limited) (2/9/97)</a>
+<ul>
+<li><a href="#V4.51_Procedures">Procedures</a>,
+ <a href="#V4.51_Drivers">Drivers</a>,
+ <a href="#V4.51_Platforms">Platforms</a>,
+ <a href="#V4.51_Interpreter">Interpreter</a>,
+ <a href="#V4.51_Streams">Streams</a>,
+ <a href="#V4.51_Library">Library</a>
+</ul>
+<li><a href="#Version4.50">Version 4.50 (limited) (1/31/97)</a>
+<ul>
+<li><a href="#V4.50_Documentation">Documentation</a>,
+ <a href="#V4.50_Procedures">Procedures</a>,
+ <a href="#V4.50_Drivers">Drivers</a>,
+ <a href="#V4.50_Platforms">Platforms</a>,
+ <a href="#V4.50_Interpreter">Interpreter</a>,
+ <a href="#V4.50_Streams">Streams</a>,
+ <a href="#V4.50_Library">Library</a>
+</ul>
+<li><a href="#Version4.41">Version 4.41 (private) (1/21/97)</a>
+<ul>
+<li><a href="#V4.41_Procedures">Procedures</a>,
+ <a href="#V4.41_Drivers">Drivers</a>,
+ <a href="#V4.41_Fonts">Fonts</a>,
+ <a href="#V4.41_Interpreter">Interpreter</a>,
+ <a href="#V4.41_Streams">Streams</a>,
+ <a href="#V4.41_Library">Library</a>
+</ul>
+<li><a href="#Version4.40">Version 4.40 (private) (1/13/97)</a>
+<ul>
+<li><a href="#V4.40_Documentation">Documentation</a>,
+ <a href="#V4.40_Utilities">Utilities</a>,
+ <a href="#V4.40_Drivers">Drivers</a>,
+ <a href="#V4.40_Interpreter">Interpreter</a>,
+ <a href="#V4.40_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.40_Library">Library</a>
+</ul>
+<li><a href="#Version4.39">Version 4.39 (limited) (1/1/97)</a>
+<ul>
+<li><a href="#V4.39_Documentation">Documentation</a>,
+ <a href="#V4.39_Procedures">Procedures</a>,
+ <a href="#V4.39_Utilities">Utilities</a>,
+ <a href="#V4.39_Drivers">Drivers</a>,
+ <a href="#V4.39_Interpreter">Interpreter</a>,
+ <a href="#V4.39_Streams">Streams</a>,
+ <a href="#V4.39_Library">Library</a>
+</ul>
+<li><a href="#Version4.38">Version 4.38 (limited) (12/20/96)</a>
+<ul>
+<li><a href="#V4.38_Interpreter">Interpreter</a>,
+ <a href="#V4.38_Streams">Streams</a>,
+ <a href="#V4.38_Library">Library</a>
+</ul>
+<li><a href="#Version4.37">Version 4.37 (limited) (12/10/96)</a>
+<ul>
+<li><a href="#V4.37_Fonts">Fonts</a>,
+ <a href="#V4.37_Interpreter">Interpreter</a>,
+ <a href="#V4.37_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.37_Library">Library</a>
+</ul>
+<li><a href="#Version4.36">Version 4.36 (limited) (12/3/96)</a>
+<ul>
+<li><a href="#V4.36_Documentation">Documentation</a>,
+ <a href="#V4.36_Drivers">Drivers</a>,
+ <a href="#V4.36_Interpreter">Interpreter</a>,
+ <a href="#V4.36_Library">Library</a>
+</ul>
+<li><a href="#Version4.35">Version 4.35 (limited) (11/24/96)</a>
+<ul>
+<li><a href="#V4.35_Documentation">Documentation</a>,
+ <a href="#V4.35_Procedures">Procedures</a>,
+ <a href="#V4.35_Interpreter">Interpreter</a>,
+ <a href="#V4.35_Streams">Streams</a>,
+ <a href="#V4.35_Library">Library</a>
+</ul>
+<li><a href="#Version4.34">Version 4.34 (limited) (11/18/96)</a>
+<ul>
+<li><a href="#V4.34_Documentation">Documentation</a>,
+ <a href="#V4.34_Procedures">Procedures</a>,
+ <a href="#V4.34_Drivers">Drivers</a>,
+ <a href="#V4.34_Interpreter">Interpreter</a>,
+ <a href="#V4.34_Streams">Streams</a>,
+ <a href="#V4.34_Library">Library</a>
+</ul>
+<li><a href="#Version4.33">Version 4.33 (limited) (11/6/96)</a>
+<ul>
+<li><a href="#V4.33_Documentation">Documentation</a>,
+ <a href="#V4.33_Procedures">Procedures</a>,
+ <a href="#V4.33_Interpreter">Interpreter</a>,
+ <a href="#V4.33_Library">Library</a>
+</ul>
+<li><a href="#Version4.32">Version 4.32 (limited) (11/1/96)</a>
+<ul>
+<li><a href="#V4.32_Documentation">Documentation</a>,
+ <a href="#V4.32_Drivers">Drivers</a>,
+ <a href="#V4.32_Platforms">Platforms</a>,
+ <a href="#V4.32_Fonts">Fonts</a>,
+ <a href="#V4.32_Interpreter">Interpreter</a>,
+ <a href="#V4.32_Library">Library</a>
+</ul>
+<li><a href="#Version4.31">Version 4.31 (limited) (10/27/96)</a>
+<ul>
+<li><a href="#V4.31_Documentation">Documentation</a>,
+ <a href="#V4.31_Procedures">Procedures</a>,
+ <a href="#V4.31_Platforms">Platforms</a>,
+ <a href="#V4.31_Interpreter">Interpreter</a>,
+ <a href="#V4.31_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.31_Streams">Streams</a>,
+ <a href="#V4.31_Library">Library</a>
+</ul>
+<li><a href="#Version4.30">Version 4.30 (limited) (10/23/96)</a>
+<ul>
+<li><a href="#V4.30_Documentation">Documentation</a>,
+ <a href="#V4.30_Drivers">Drivers</a>,
+ <a href="#V4.30_Platforms">Platforms</a>,
+ <a href="#V4.30_Fonts">Fonts</a>,
+ <a href="#V4.30_Interpreter">Interpreter</a>,
+ <a href="#V4.30_Library">Library</a>
+</ul>
+<li><a href="#Version4.21">Version 4.21 (limited) (10/17/96)</a>
+<ul>
+<li><a href="#V4.21_Documentation">Documentation</a>,
+ <a href="#V4.21_Procedures">Procedures</a>,
+ <a href="#V4.21_Drivers">Drivers</a>,
+ <a href="#V4.21_Platforms">Platforms</a>,
+ <a href="#V4.21_Fonts">Fonts</a>,
+ <a href="#V4.21_Interpreter">Interpreter</a>,
+ <a href="#V4.21_Library">Library</a>
+</ul>
+<li><a href="#Version4.20">Version 4.20 (limited) (10/13/96)</a>
+<ul>
+<li><a href="#V4.20_Documentation">Documentation</a>,
+ <a href="#V4.20_Procedures">Procedures</a>,
+ <a href="#V4.20_Utilities">Utilities</a>,
+ <a href="#V4.20_Drivers">Drivers</a>,
+ <a href="#V4.20_Interpreter">Interpreter</a>,
+ <a href="#V4.20_Library">Library</a>
+</ul>
+<li><a href="#Version4.10">Version 4.10 (limited) (9/25/96)</a>
+<ul>
+<li><a href="#V4.10_Documentation">Documentation</a>,
+ <a href="#V4.10_Utilities">Utilities</a>,
+ <a href="#V4.10_Drivers">Drivers</a>,
+ <a href="#V4.10_Interpreter">Interpreter</a>,
+ <a href="#V4.10_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.10_Library">Library</a>
+</ul>
+<li><a href="#Version4.03">Version 4.03 (9/23/96)</a>
+<ul>
+<li><a href="#V4.03_Documentation">Documentation</a>,
+ <a href="#V4.03_Procedures">Procedures</a>,
+ <a href="#V4.03_Drivers">Drivers</a>,
+ <a href="#V4.03_Fonts">Fonts</a>,
+ <a href="#V4.03_Streams">Streams</a>
+</ul>
+<li><a href="#Version4.02">Version 4.02 (9/19/96)</a>
+<ul>
+<li><a href="#V4.02_Documentation">Documentation</a>,
+ <a href="#V4.02_Procedures">Procedures</a>,
+ <a href="#V4.02_Utilities">Utilities</a>,
+ <a href="#V4.02_Drivers">Drivers</a>,
+ <a href="#V4.02_Platforms">Platforms</a>,
+ <a href="#V4.02_Interpreter">Interpreter</a>,
+ <a href="#V4.02_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V4.02_Streams">Streams</a>,
+ <a href="#V4.02_Library">Library</a>
+</ul>
+<li><a href="#Version4.01">Version 4.01 (7/10/96)</a>
+<ul>
+<li><a href="#V4.01_Documentation">Documentation</a>,
+ <a href="#V4.01_Procedures">Procedures</a>,
+ <a href="#V4.01_Utilities">Utilities</a>,
+ <a href="#V4.01_Platforms">Platforms</a>,
+ <a href="#V4.01_Platforms">Platforms</a>,
+ <a href="#V4.01_Interpreter">Interpreter</a>,
+ <a href="#V4.01_Library">Library</a>
+</ul>
+<li><a href="#Version4.0">Version 4.0 (6/28/96)</a>
+<ul>
+<li><a href="#V4.0_Documentation">Documentation</a>,
+ <a href="#V4.0_Procedures">Procedures</a>,
+ <a href="#V4.0_Utilities">Utilities</a>,
+ <a href="#V4.0_Drivers">Drivers</a>,
+ <a href="#V4.0_Platforms">Platforms</a>,
+ <a href="#V4.0_Interpreter">Interpreter</a>,
+ <a href="#V4.0_Streams">Streams</a>,
+ <a href="#V4.0_Library">Library</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a history of Ghostscript releases numbered 4.n. For more
+recent changes, see the the other history documents and, for the latest
+versions, the news:
+
+<blockquote>
+<a href="News.htm">News</a><br>
+History of Ghostscript versions 4.n (this document)<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] ============================================== -->
+
+<h2><a name="Version4.81"></a>Version 4.81 (6/1/97)</h2>
+
+<p>
+This is a last-minute set of bug fixes before the 5.0 release.
+
+<h3><a name="V4.81_Documentation"></a>Documentation</h3><pre>
+
+Adds some overlooked helpers to the list. (helpers.txt)
+
+</pre><h3><a name="V4.81_Procedures"></a>Procedures</h3><pre>
+
+Makes a distinction between 2-part and 3-digit version numbers.
+(version.mak, vms.mak)
+
+</pre><h3><a name="V4.81_Utilities"></a>Utilities</h3><pre>
+
+Develops the Type 1 to CFF converter a little further; it is still NOT
+USABLE. (t1tot2.ps)
+
+Removes the pstoppm.ps script, since the p*m drivers supersede it.
+(pstoppm.ps, unix-end.mak)
+
+</pre><h3><a name="V4.81_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer sometimes omitted an ET command before setting the
+clip path. (gdevpdf.c)
+ - The PDF writer didn't initialize the "vector" state, leading to
+some redundant output (performance bug only). (gdevpdf.c)
+ - The PDF writer wrote clip paths even when they included the entire
+page (performance bug only). (gdevpdf.c)
+
+Changes the PDF writer so that it recognizes not only the 14 built-in fonts
+but any font with the same UniqueID and metrics. This covers some common
+cases of re-registering a font with a variant Encoding. (gs_pdfwr.ps)
+
+</pre><h3><a name="V4.81_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - SEARCH_HERE_FIRST was accidentally set to 0 on MS Windows
+platforms. (bcwin32.mak, msvc4.mak, msvc5.mak, watcw32.mak)
+
+Adds code to remove "" around arguments in the command line passed to
+WinMain (MS Windows platforms). (dwmain.cpp, dwmainc.cpp)
+
+</pre><h3><a name="V4.81_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - setsystemparams was broken. (gs_lev2.ps)
+ - restore was broken if -dNOBIND was invoked. (gs_dps1.ps)
+ - deviceinfo returned much more information than it should.
+(gs_dps.ps)
+ - The fix for the default EndPage procedures not popping their page
+count operand from the stack was wrong. (gs_init.ps, gs_setpd.ps)
+
+</pre><h3><a name="V4.81_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The saved character origin took the translation component of the
+FontMatrix into account, which caused charpath on fonts with non-zero
+translation in the FontMatrix to produce incorrect results. (gschar.c)
+
+Removes incorrect access attributes on a couple of files. (gdevpdfm.c,
+gxclist.h)
+
+</pre>
+
+<h2><a name="Version4.80"></a>Version 4.80 (limited) (5/28/97)</h2>
+
+<p>
+This is the candidate fileset for the 5.0 release.
+
+<h3><a name="V4.80_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The one-line description of the color image rendering module was
+incorrect. (gximage3.c)
+ - Some of the VMS documentation was out of date. (make.txt,
+use.txt)
+ - The description of the file name separator for -sFONTMAP= was
+wrong. (use.txt)
+ - PSFile was misspelled PSfile. (use.txt)
+ - There were some minor typos. (gstype1.h)
+ - The build instructions had a lot of obsolete information for PC
+environments, and didn't cover Microsoft Visual C++. (make.txt)
+
+Explains that -sPAPERSIZE= only specifies the default papersize, and that
+forcing a particular paper size also requires -dFIXEDMEDIA. (use.txt)
+
+Adds information about building with GNU make on OpenVMS. (make.txt)
+
+Clarifies the meaning of EOFC for streams. (strimpl.h)
+
+Documents the new dictionary argument for the eexecDecode filter.
+(language.doc)
+
+</pre><h3><a name="V4.80_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - gs_epsf.ps didn't get installed on Unix systems. (unix-end.mak)
+ - The code wouldn't build with libpng 0.95b. (libpng.mak)
+ - One of the VMS scripts used CC_QUAL instead of CC_DEF.
+(vms-cc.mak)
+ - version.mak wasn't included in a dependency list. (unix-end.mak)
+
+Brings the VMS DCL script up to date again (for the last time, we hope).
+(vms.mak)
+
+Modifies all platform-independent uses of upper-case command line arguments
+to deal properly with VMS, where the shell converts all command line
+arguments to lower case, without requiring quotation. (devs.mak, gs.mak,
+int.mak, lib.mak, zlib.mak)
+
+Moves the compilation rules for the third-party libraries into gs.mak, so
+they can be used to compile the callers as well. (gs.mak, jpeg.mak,
+libpng.mak, zlib.mak)
+
+Adds a set of files that allow building on OpenVMS using GNU make (slightly
+patched). The timing on this is unfortunate, but we've wanted this for a
+very long time. NOTE: be sure to look in the OpenVMS section of make.txt
+for information on patching GNU make. (openvms.mak, append_l.com,
+rm_all.com, rm_one.com, copy_one.com)
+
+Adds new makefiles for building on 32-bit Windows with Borland, Watcom, and
+Microsoft Visual C++ (versions 4.x and 5.0). The timing on this is
+unfortunate too, but having this capability is so important that we couldn't
+pass it up. (bcwin32.mak, msvc4.mak, msvc5.mak, msvccom.mak, watcw32.mak,
+wincom.mak)
+
+Removes now-obsolete makefiles. (dwcommon.mak, msc.mak, msvcwint.mak,
+mscbegin.bat, watcwin.mak)
+
+</pre><h3><a name="V4.80_Utilities"></a>Utilities</h3><pre>
+
+Extends echogs to work in VMS environments, where the shell converts all
+command line arguments to lower case, without requiring quotation.
+(echogs.c)
+
+Adds a sketch of a utility for converting Type 1 fonts to CFF. DOESN'T WORK
+YET: DON'T TRY TO USE IT. (t1tot2.ps, type1ops.ps, writecff.ps)
+
+</pre><h3><a name="V4.80_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A type declaration wasn't compatible with libpng 0.95.
+(gdevpng.c)
+ - kshow wasn't handled properly when producing PDF output.
+(gs_pdfwr.ps)
+ - The PDF writer put out unnecessary ET/BT commands. (gdevpdfx.h,
+gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
+ - The PCL XL writer put out real numbers for the miter limit, which
+are not allowed (!). (gdevpx.c)
+ - The PCL XL writer didn't combine successive curves into a single
+curve command (performance bug only). (gdevpx.c)
+ - The PCL XL writer could write uncompressed images with a tag
+saying they were compressed. (gdevpx.c)
+ - The PCL XL writer always selected U.S. letter paper, rather than
+the requested size. (gdevpxen.h, gdevpx.c)
+ - The PCL XL writer reselected the paper size on every page, even if
+it hadn't changed. (gdevpx.c)
+ - The PCL XL writer always used shorts for line and curve
+coordinates, rather than using bytes when possible (performance bug only).
+(gdevpx.c)
+ - Because of a compiler bug, a macro with argument conflicted with a
+variable name. (gdevpdfx.h, gdevpdf.c)
+ - A picky compiler objected to an extern for an undefined structure.
+(gdevpsdf.h)
+ - The PDF writer sometimes didn't reset the clipping path, causing
+bitmaps or rectangle to disappear. (gdevpdf.c, gdevpdfi.c)
+ - The PDF writer produced invalid output if the first page was
+blank. (gdevpdf.c)
+ - The AutoRotatePages parameter for PostScript and PDF output (which
+doesn't actually do anything yet) incorrectly expected a Boolean value
+rather than an enumeration. (gdevpsdf.h, gdevpsdf.c)
+ - Some places returned -1 for an error without calling gs_note_error
+or gs_return_error. (gdevm1.c, gdevmpla.c, gdevrun.c, gxclpath.c)
+ - The PCL XL writer produced extremely large files because it didn't
+download character bitmaps. (OK, this isn't really a bug fix.) (gdevpx.c)
+ - The forwarding implementation of get_page_device didn't do the
+right thing. (gdevnfwd.c)
+ - The x11alpha device didn't implement get_params properly, leading
+to anomalous behavior. (gdevxalt.c)
+ - The PDF writer produced incorrect Count values for outlines: the
+count only counted descendant leaves, omitting intermediate nodes.
+(gdevpdfm.c)
+
+Removes an assumption that images have at most 4 components. (gdevpdfi.c)
+
+Adds an x11gray2 device, primarily for debugging. (devs.mak, gdevxalt.c)
+
+Updates the unified printer driver with a newer version. (uninfo.ps,
+gdevupd.c, *.upp)
+
+</pre><h3><a name="V4.80_Platforms"></a>Platforms</h3><pre>
+
+Adds the P*M devices and the X11 devices (commented out) to the OS/2
+makefile. (os2.mak)
+
+Updates the MS Windows platform to be compatible with Microsoft Visual C++
+(as well as Watcom and Borland compilers). (gsdll32.def, gdevmswn.h,
+gp_mswin.h, gsdll.h, dwimg.cpp, dwmain.cpp, dwmainc.cpp, dwtext.cpp,
+gdevwdib.c, gdevwprn.c, gdevwpr2.c, gp_mswin.c, gsdll.c)
+
+</pre><h3><a name="V4.80_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Certain synthetic fonts incorrectly were loaded into local rather
+than global VM. (These fonts are not part of the standard distribution.)
+(gs_fonts.ps, gs_pfile.ps, *ss*.ps)
+
+</pre><h3><a name="V4.80_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The FAKEFONTS scan could leave junk on the stack. (gs_fonts.ps)
+ - Dynamically loading known encodings on demand left junk on the
+stack, causing a typecheck error. (gs_res.ps)
+ - Some 'static' declarations were missing (gcc lossage). (iname.c)
+ - Some internal operators didn't have names, leading to unhelpful
+error printout. (zfileio.c)
+ - The resource "operators" didn't always restore the stacks properly
+on an error. (gs_res.ps)
+ - The CID font code left a garbage value on the stack during
+loading. (gs_cidfn.ps)
+ - The defineresource implementation for built-in resources like
+FMapType didn't leave the resource "value" on the stack. (gs_res.ps)
+ - If an operator defined by a procedure was bound into a packed
+procedure, the stack-protection feature wasn't effective. (interp.c)
+ - findfont didn't restore the stack if it failed. (gs_res.ps)
+ - The showpage count passed to the BeginPage and EndPage procedures
+was incremented only if a page was printed, rather than for every invocation
+of showpage. (gs_init.ps, zdevice2.c)
+ - The default EndPage procedures didn't pop their page count operand
+from the stack. (gs_init.ps, gs_setpd.ps)
+ - If the argument of findfont wasn't a name or a string, and no font
+with that key had been registered, an error occurred. (gs_fonts.ps,
+gs_res.ps)
+
+Updates most of the remaining pseudo-operators to take advantage of stack
+protection. (gs_btokn.ps, gs_cmap.ps, gs_dps1.ps, gs_dps2.ps, gs_fonts.ps,
+gs_lev2.ps, gs_pdfwr.ps)
+
+Splits the image operators into a separate file from the path painting
+operators. (This should have been done a long time ago.) (iimage.h,
+zimage.c, zpaint.c)
+
+Adds more of the implementation of the NeXT alpha and compositing
+operations, under an #ifdef DPNEXT. (iimage.h, zcolor1.c, zdpnext.c,
+zimage.c)
+
+Adds more of the implementation of DPS contexts. These are still not
+usable. (icontext.h, icontext.c, zcontext.c, zmath.c)
+
+Changes the help message to describe -dBATCH instead of -c quit.
+(imainarg.c)
+
+Recognizes the dictionary argument for the eexecDecode filter. (zmisc1.c)
+
+</pre><h3><a name="V4.80_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The tracing message when starting to decode 1-D fax data reported
+the run_color incorrectly. (scfd.c)
+ - In the CCITTFaxDecode filter, if a buffer boundary fell between a
+makeup code and a final zero-length termination code, an ioerror could
+occur. (scfd.c)
+ - Per Adobe, in the CCITTFaxDecode filter, EndOfBlock = true should
+cause Rows to be ignored. (scfd.c)
+ - If an output stream returned EOFC, an infinite loop might result.
+This problem (and the fix) are in the same fragile code as the EOD fix in
+4.74, and we may again have introduced a new bug. (stream.c)
+
+Changes the eexecDecode filter so that instead of a number, it can take a
+dictionary with two keys, seed and lenIV. (Having eexecDecode skip initial
+bytes at all was a design bug that is too late to fix.) (sfilter.h,
+seexec.c)
+
+</pre><h3><a name="V4.80_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The default mapping from RGB+alpha to RGB didn't lighten
+(premultiply) the color according to the alpha value. (gxcmap.c)
+ - The angle error metric for rational tangent screen parameters
+should be simply the difference in angle, not a ratio. (gshtscr.c)
+ - gs_setcolorscreen and gs_sethalftone didn't initialize an
+allocator pointer, leading to memory access errors. (gsht1.c)
+ - If a banded image was clipped, an invalid band list could be
+produced. (gxclimag.c)
+ - A picky compiler wouldn't allow an enum to be &amp;&amp;'ed with a
+boolean. (gschar.c)
+ - A short-sighted compiler didn't allow the use of actual procedure
+names (as opposed to procedure variables) in a conditional expression.
+(gxfill.c)
+ - A compiler objected to a name longer than 31 characters. (gzht.h,
+gsht.c, gxclread.c)
+ - The height computations for banded images were not consistent,
+possibly leading to invalid band lists. (gxclimag.c)
+ - copypage didn't reset the band writer and band reader bookkeeping
+consistently, leading to incorrect output and possible errors. (gxcldev.h,
+gxclist.c, gxclread.c)
+ - When banding, changing the halftone could lead to accessing memory
+after freeing it. (gxclread.c)
+ - When using disk files for band storage, showpage didn't actually
+delete or truncate the band list file, possibly causing subsequent copypage
+operations to become confused. (gxclfile.c)
+ - When banding, having more than one image operator in progress at a
+time confused the rasterizing pass and could produce arbitrary errors. From
+PostScript, this can only happen in the case of an image whose data source
+was a procedure-based stream that itself invoked an image operator: this is
+a senseless and perverse thing to do, but it shouldn't break the code (and a
+Genoa CET file actually does it). (gxclist.h, gxclimag.c, gxclist.c)
+ - Some picky compilers objected to negating unsigned values.
+(gsuid.h, gsht.c, gsmemory.c, gxpcopy.c)
+ - When banding, if a 90- or 270-degree rotated monobit image was
+clipped, invalid memory accesses could occur. (gximage.h, gximage1.c)
+ - The showpage count passed to the BeginPage and EndPage procedures
+was incremented only if a page was printed, rather than for every invocation
+of showpage. Fixing this requires removing the incrementing of the count
+from the library level altogether. (gsdevice.c)
+ - When rendering a subrectangle of an image, the X DDA was
+initialized incorrectly, causing possible errors. We think this only
+affected certain banded images. (gxdda.h)
+
+Adds a provision for images with an alpha component, under an #ifdef DPNEXT.
+****** THE BANDING CODE HAS NOT BEEN UPDATED YET. ****** (gsiparam.h,
+gxcmap.h, gxdither.h, gximage.h, gsimage.c, gxclimag.c, gxclread.c,
+gxcmap.c, gximage.c, gximage3.c, gximage4.c ****** NOT DONE YET ******,
+gximage5.c)
+
+Adds a return_if_error macro to capture the common idiom of making a call
+and then returning its value if that value is negative (error). (gserror.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.74"></a>Version 4.74 (limited) (5/5/97)</h2>
+
+<p>
+This fileset is supposed to fix all remaining errors reported by the Genoa
+CET, and is intended to be the last incremental test fileset before the 5.0
+release.
+
+<h3><a name="V4.74_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Mark procedures are *not* executed in the normal return case.
+(estack.h)
+ - The line_params element of a gs_imager_state is *not* allocated
+separately. (gsstate.c)
+ - The value passed to the PDF writer for text is a dictionary, not
+an array. (gdevpdft.c)
+
+Improves the documentation of gstate memory management. (gsstate.c)
+
+Documents end_status = EOFC for writing streams. (stream.h, strimpl.h)
+
+Clarifies memory management for halftones and device halftones. (gsht1.h,
+gxdht.h, gxht.h, gzht.h)
+
+Removes the "experimental" tag from the PostScript and EPS writers.
+(devs.mak)
+
+</pre><h3><a name="V4.74_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The viewpcx utility scaled images improperly. (viewpcx.ps)
+ - If a PDF file used F instead of f for filling a path, pdf2ps
+didn't output the fill operation. (pdf_base.ps)
+
+Changes the ps2pdf script so that, like pdf2ps, it allows debugging
+switches. (ps2pdf)
+
+</pre><h3><a name="V4.74_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The vgalib driver didn't clip monobit images properly.
+(gdevvglb.c)
+ - The X driver asked for exposure events to be reported, but never
+read them, causing the event queue to grow indefinitely. (gdevxini.c)
+ - The "vector" drivers and the PDF writer didn't properly keep track
+of whether the current clipping region was the default one. (gs_pdfwr.ps,
+gdevvec.h, gdevvec.c, gdevpdf.c, gdevpdft.c)
+ - The PDF writer had word and character spacing interchanged.
+(gdevpdft.c)
+ - The PDF writer scaled word and character spacing incorrectly.
+(gdevpdft.c)
+
+</pre><h3><a name="V4.74_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The user object operators didn't leave the stack in a clean state
+if they failed. (gs_dps2.ps)
+ - UserObjects wasn't actually defined. (gs_dps2.ps)
+ - deviceinfo and set/currenthalftonephase were defined even if the
+dps feature wasn't selected. (int.mak, gs_dps.ps, gs_dps1.ps, gs_lev2.ps,
+zdps.c, zdps1.c)
+ - The dps feature didn't automatically include the level2 feature,
+which it needs. (int.mak)
+ - The DPS user names mechanism didn't work, since the user names
+array was subject to save and restore. (It still doesn't really work --
+there is no provision for expanding the user names array, which is created
+with length 0.) (gs_btokn.ps, ivmspace.h, zbseq.c, zdps.c)
+ - The DPS context operators didn't do all the necessary error
+checking. (zcontext.c)
+ - The debugging printout for names printed the name index in hex
+without identifying it as such. (idebug.c)
+ - Adding the first non-name key (or name key with a name index
+beyond 4K) to a dictionary that had any deleted entries could cause some
+entries to apparently disappear. (idict.c)
+ - If a sub-table of the name table was freed during garbage
+collection, memory could be left in an inconsistent state. (iname.c, igc.c)
+ - findfont didn't restore the stacks reliably if an error occurred.
+(gs_fonts.ps)
+ - definefont with an invalid Type 0 font sometimes added a FID entry
+(with a dangling pointer) if it failed. (Recovering properly from a VMerror
+during font creation would require a much more complicated fix than this,
+but since we expect a garbage collection to occur in that case, we aren't
+concerned about it.) (zfont0.c)
+ - Reading parameter values from a dictionary could access beyond the
+end of the array that keeps track of which entries had been referenced.
+(idict.h, idict.c, iparam.c)
+ - Halftone data was allocated in the current VM rather than in the
+same VM as the halftone dictionary or procedure. (Fixing this includes
+updating code as necessary for the change in halftone and device halftone
+allocation.) (iht.h, ivmspace.h, zht.c, zht1.c, zht2.c)
+ - Closed non-executable files on the e-stack could cause a restore
+to be invalid. (zvmem.c)
+
+Adds skeleton code for the NeXT Display PostScript alpha and compositing
+operators. This is not ready for use yet! (errors.h, gs_dpnxt.ps,
+zdpsnext.c)
+
+Implements more of state saving and restoring for Display PostScript
+contexts. This is not ready for use yet either. (int.mak, icontext.h,
+istack.h, icontext.c, zcontext.c)
+
+Adds stub code for the Display PostScript view clip operators. (gs_dps.ps,
+zdps.c)
+
+Removes the obsolete PPM-writing operator. (int.mak, vms.mak, *.mak,
+zwppm.c)
+
+Makes the random number generator state public so it can be stored in the
+context state. (zmath.c)
+
+Changes the flag for forcing global garbage collection to a run-time
+variable, for debugging. (igc.c)
+
+Changes the handling of job control so that it doesn't use procedures that
+produce an execstackoverflow when being printed. (gs_init.ps)
+
+Updates code as necessary for the change in reference counting. (zcie.c,
+zcrd.c)
+
+Updates code as necessary for the change in off-stack gstate copying.
+(zdps1.c)
+
+Removes a small bit of obsolete code. (interp.c)
+
+</pre><h3><a name="V4.74_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - An output stream that was not the last one in a pipeline could
+incorrectly be asked to write its EOD marker more than once. (The fix is
+very fragile and may have introduced new bugs.) (stream.c)
+
+</pre><h3><a name="V4.74_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The gx_device_halftone_release procedure was declared in two
+different header files. (gzht.h)
+ - Off-stack copying of gstates could lead to a situation where
+different parts of a single gstate were owned by different allocators; this
+could cause them to be freed improperly, corrupting memory. We fixed this
+partly by making the mixed ownership situation work, and partly by copying
+more of the gstate when off-stack gstates are involved. Unfortunately, the
+fixes are subtle and may have introduced new bugs. (gsstate.h, gsht.c,
+gsht1.c, gspcolor.c, gsstate.c)
+ - If an error occurred while creating a Pattern instance, the
+partially initialized instance structure wasn't freed. (gspcolor.c)
+ - Halftones and device halftones didn't allocate their clones or
+their subsidiary structures with the correct allocator. (gsht.c, gsht1.c)
+ - The error statement when allocating a reference-counted object had
+to be a control transfer. (gsrefct.h)
+ - Copying gstates incorrectly copied the memory and saved pointers,
+and the pointer to the dash pattern. (gsstate.c)
+ - Flatness values less than 0.5 produced far more line segments than
+necessary (roughly the square of the required number). Fixing this may have
+bad effects on character quality -- this remains to be seen. (gxpflat.c)
+ - An error during installation of a halftone could leave things in
+an inconsistent state. (gsht.c)
+ - The API didn't provide enough flexibility with respect to memory
+management for halftones, or guarantee consistent allocation of a halftone
+and its subelements. (gsht1.h, gsht.c, gsht1.c, gshtscr.c)
+ - Releasing a path didn't clear enough pointers to ensure clean
+garbage collection. (gxpath.c)
+ - Finalizing or discarding a (cached) scaled font didn't properly
+unlink it from the scaled_fonts list. (gsfont.c)
+ - Invoking an image operator within the BuildChar procedure for a
+charpath caused an infinite loop. (gsimage.c)
+ - The bookkeeping for the scaled font cache was incorrect: the count
+didn't always get decremented when a scaled font was freed. (gsfont.c)
+ - "High level" masked images were written incorrectly in the band
+list as black-and-white images. (gxclimag.c)
+ - For "high level" images with fewer than 4 samples per pixel,
+non-standard Decode values were written incorrectly in the band list.
+(gxclimag.c)
+ - The color wasn't set correctly for "high level" masked images.
+(gxclimag.c)
+ - The fastest case of monobit image rendering could get a memory
+access error if the image lay partly outside the page. (gximage1.c)
+ - Clipping with an empty path was a no-op, rather than clipping out
+everything. (gxcpath.c)
+
+Makes reference-counted objects remember which allocator owns them: this
+entails a NON-BACKWARD-COMPATIBLE change to some of the macros for reference
+counting. This was necessary to fix the off-stack gstate copying problem.
+(gsrefct.h, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscsepr.c,
+gsstate.c, gxclread.c)
+
+Refactors the unpacking of image data, to make unpacking available as a
+general facility. (gximage.h, gxsample.h, gximage.c, gximage0.c,
+gximage1.c, gximage4.c, gxsample.c)
+
+Enhances -Z? so that before freeing an object, it checks that the object was
+owned by the correct allocator. (gsalloc.c)
+
+</pre>
+
+<h2><a name="Version4.73"></a>Version 4.73 (limited) (4/19/97)</h2>
+
+<p>
+This is an incremental bug fix release made primarily to provide a
+synchronization point for an upcoming trip.
+
+<h3><a name="V4.73_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - A reference to the uniprint documentation was incorrect.
+(current.txt)
+ - -Olimit 1000 is not enough now for DEC Ultrix, 1200 is required;
+this is also required for SGI IRIX. (make.txt)
+
+Adds argument/result comments to all the operators defined in gs_lev2.ps.
+(Eventually we will do this for all operators defined as PostScript
+procedures.) (gs_lev2.ps)
+
+</pre><h3><a name="V4.73_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The makefiles didn't provide a default value for GCONFIG_EXTRAS.
+(gs.mak)
+
+</pre><h3><a name="V4.73_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - pdf2ps didn't work with TrueType or compressed Type 1 fonts.
+(gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
+
+</pre><h3><a name="V4.73_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A cast from byte to char was omitted. (gdevpdfm.c)
+
+</pre><h3><a name="V4.73_Platforms"></a>Platforms</h3><pre>
+
+Updates the VMS script (again). (vms.mak)
+
+</pre><h3><a name="V4.73_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A module that used strlen didn't include string_.h. (zdevice.c)
+ - Because of some bad PostScript code in FrameMaker output, identity
+rather than unity black generation and undercolor removal functions are
+required on black-and-white devices. (gs_init.ps)
+ - A harmless internal error during initialization left bogus
+information in $error. (gs_cidfn.ps)
+ - startjob didn't clear the execution stack. Fixing this required
+NON-BACKWARD-COMPATIBLE changes to the internal operators .instopped, .stop,
+and .stopped, which are not supposed to be used by any external code.
+(startjob will still give errors if executed in a file that isn't being
+piped from stdin; this will take longer to fix.) (gs_init.ps, gs_lev2.ps,
+iref.h, imain.c, interp.c, zcontrol.c, zfile.c)
+
+Adds a new .execn operator, part of the startjob changes, that allows
+pushing multiple items on the exec stack. Eventually this will allow us to
+get rid of many dynamically created closures. (zcontrol.c)
+
+</pre><h3><a name="V4.73_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Landscape-mode PDF files weren't rotated properly. (gs_pdf.ps,
+pdf_main.ps)
+
+Makes the default PDF configuration notify users more informatively when
+encountering an encrypted file. (pdf_sec.ps)
+
+</pre><h3><a name="V4.73_Streams"></a>Streams</h3><pre>
+
+Makes the RunLengthEncode filter always generate optimally compressed
+output. We did this because we thought one of the Genoa CET files loops
+forever if this is not the case; but we were wrong. (srle.c)
+
+</pre><h3><a name="V4.73_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - If one coordinate of a position or distance overflowed the
+internal representable range, the other coordinate became garbage. (bug
+introduced in 4.70) (gspath.c)
+ - The bounding box computation for strokes was slightly too large
+(sometimes much too large). (gxpaint.h, gdevbbox.c, gxclpath.c, gxstroke.c)
+
+Adds (under an #if 0) an experimental alternate halftone cell choice
+algorithm. (gshtscr.c)
+
+Adds a better comment to a particularly obscure line of C code.
+(gxclimag.c)
+
+</pre>
+
+<h2><a name="Version4.72"></a>Version 4.72 (limited) (4/14/97)</h2>
+
+<p>
+This is another bug fix release, motivated mostly by Genoa testing. It also
+updates the new uniprint driver with a major revision, and upgrades CFF
+support a little bit.
+
+<h3><a name="V4.72_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - -dNOGC only disables default automatic garbage collection, not all
+garbage collection. (use.txt)
+ - Apparently a different set of flags is needed for newer H-P
+compilers. (make.txt)
+
+Replaces the tiny FAQ with a pointer to the on-line FAQ. (use.txt)
+
+Updates the documentation for the uniprint driver. (devices.txt)
+
+Clarifies the fact that Ghostscript reads Fontmap files from *all*
+directories in the search list. (use.txt)
+
+Notes that building on GNU/Linux may require SM and ICE in the list of X
+libraries. (make.txt)
+
+</pre><h3><a name="V4.72_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - An -include type42 was omitted from the level2 module description.
+(int.mak)
+ - A mention of $(ECHOGS) in the rule for sfile should have been
+$(ECHOGS_XE). (lib.mak)
+ - The pcx2up sample device should have been put in devs.mak rather
+than lib.mak. (devs.mak, lib.mak)
+ - scanchar.h and scantab.c belong in the library, not the
+interpreter. (devs.mak, int.mak, lib.mak)
+ - Some _h definitions were used before being defined, or weren't
+defined at all. (devs.mak, lib.mak)
+ - The JPEG driver was missing a dependency. (devs.mak)
+ - The PDF writer was missing a dependency. (devs.mak)
+ - Building Level 1 systems was no longer possible. (int.mak)
+
+Updates the VMS build scripts. (vms.mak, vms-decc.mak)
+
+Adds *.upp to the list of files installed under Unix. (unix-end.mak)
+
+Adds rules to the Unix makefiles to build two library files: gs.a,
+consisting of the entire PostScript/PDF interpreter lacking only gs.c, and
+gslib.a, consisting of the graphics library without the gslib.c test driver.
+(ansihead.mak, cc-head.mak, gcc-head.mak, unixtail.mak)
+
+</pre><h3><a name="V4.72_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PS/EPS writers could generate a reference to an undefined
+name. (gdevps.c)
+ - The PDF writer produced incorrect output for multi-level outlines.
+(gdevpdfm.c)
+ - The PDF writer didn't convert /Action to /A, and /Action/Subtype
+to /S, in Annot dictionaries. (gdevpdfm.c)
+ - The PDF writer didn't work in Level 1 systems. (gs_pdfwr.ps)
+ - The PDF writer didn't transform /Rect and /R values to current
+user coordinates. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfm.c)
+ - The PNG writer could refer to the 3 predefined stdio files even in
+environments where this was undesirable. (gdevpng.c)
+ - The PDF writer had a compiled-in limit of 100 pages of output.
+(gdevpdfx.h, gdevpdf.c)
+
+Updates the uniprint driver with a major revision that uses device
+parameters that can be set from the command line, rather than PostScript
+code, for configuration choices. (gdevupd.c, *.upp)
+
+</pre><h3><a name="V4.72_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - gp_enumerate_files_next had no way to return an error. (gp.h,
+gp_dosfe.c, gp_ntfs.c, gp_os2.c, gp_unifs.c, gp_vms.c) ****** NOT
+IMPLEMENTED YET ******
+ - On the Watcom platform, CPU_TYPE &gt;= 486 didn't automatically set
+FPU_TYPE to 387. (wccommon.mak)
+
+</pre><h3><a name="V4.72_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Caching the current device in userdict could create dangling
+references. (gs_init.ps, gs_pdfwr.ps, zdevice.c)
+ - If an error occurred in a BuildChar or BuildGlyph procedure, the
+graphics state stack wasn't restored. (ichar.h, zchar.c, zchar2.c)
+ - There was an obsolete check for a structure when cleaning up after
+a show operator. (zchar.c)
+ - Attempting to show a character with no associated glyph in a Type
+3 font with a BuildGlyph procedure caused an error. (zchar.c)
+ - noaccess on a read-only dictionary didn't give an error.
+(ztype.c)
+ - The dictionary passed to a Pattern's PaintProc was the original
+template, not the copy made by makepattern. (gs_lev2.ps)
+ - Invalid font parameters could result in partially constructed
+fonts, which caused problems for restore. (zfont0.c, zfont2.c)
+ - Files run under job control caused an error when terminating.
+(gs_init.ps)
+ - setpagedevice didn't protect itself against malfunctioning
+BeginPage or EndPage procedures. (The protection is still not perfect.)
+(gs_setpd.ps)
+ - .type42execchar called font_param redundantly. (zchar42.c)
+ - The font operators didn't protect themselves well enough against
+bogus font dictionaries. (zfont.c, zfont0.c)
+ - If an error occurred within a stringwidth, the graphics state
+stack wasn't restored properly. (zchar.c)
+ - If an error occurred within the PaintProc of a form, the graphics
+state stack was left with an extra entry. (gs_lev2.ps)
+ - Registering a font under a second name could corrupt data
+structures. (zfont2.c)
+ - Different scalings of the same font should have "equal" fontIDs,
+to match the Adobe implementations. (iutil.c)
+ - Errors detected by PostScript code during initialization either
+allowed execution to continue or produced a hex stack dump, instead of just
+producing a message and exiting. (interp.c)
+ - The memory validator didn't validate chunks at previous save
+levels. (ilocate.c)
+ - The Level 1 size of systemdict was too small. (iinit.c)
+ - Attempting to define a Category resource in local VM gave a
+typecheck error rather than an invalidaccess. (gs_res.ps)
+ - Building Level 1 systems was no longer possible. (zusparam.c)
+
+Rearranges the interpreter code slightly so that all operator invocations go
+through a single procedure when debugging. (interp.c)
+
+Adds a -K&lt;numK&gt; switch to limit the total amount of memory that Ghostscript
+can acquire. (imainarg.c)
+
+Makes the memory validator check packed refs more carefully. (ilocate.c)
+
+Makes the memory validator check explicitly for pointers to freed objects.
+(igc.c, ilocate.c)
+
+Makes the memory validator check dictionaries more carefully. (ilocate.c)
+
+Makes the memory validator check refs embedded in structures. (ilocate.c)
+
+Adds a debugging option that bypasses the garbage collector entirely.
+(igc.c)
+
+Adds debugging options to validate memory before/after save/restore.
+(zvmem.c)
+
+Removes the patch for the uniprint driver, since it is no longer needed.
+(gs_init.ps)
+
+Implements real-number operands in CFF fonts. (gs_cff.ps)
+
+Implements non-default charsets in CFF fonts. (gs_cff.ps)
+
+</pre><h3><a name="V4.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The PDF 1.2 "marked content" operators weren't defined.
+(pdf_main.ps)
+ - Streams with binary data whose first character was an EOL (\n)
+didn't parse properly. Unfortunately, the way we fixed this may break some
+other files. (pdf_base.ps)
+ - PDF 1.2 #nn escape syntax in names wasn't recognized. ****** This
+is implemented with an inefficient hack that should be moved down into C.
+However, I don't want to risk introducing new bugs during the beta test
+period. ****** (pdf_base.ps)
+ - The interpreter had a limit of 64K objects. Removing this limit
+required changing a basic data structure -- admittedly a risky thing to do
+during beta test. (pdf_base.ps, pdf_main.ps)
+ - TJ didn't multiply the offsets by the font size, causing incorrect
+character positioning. (gs_pdf.ps)
+
+</pre><h3><a name="V4.72_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The ASCIIHexDecode filter read an extra character in case of
+error. (sstring.c)
+
+Adds more tracing output to the CCITTFaxDecode stream. (scfd.c)
+
+</pre><h3><a name="V4.72_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The allocator client name for rendering bitmap patterns was
+incorrect. (Only affects tracing output.) (gspcolor.c)
+ - The check for exceeding the overall allocation limit was
+incorrect, because of unsigned arithmetic. (Only affects limitation of
+total allocation, which is only used for debugging and benchmarking.)
+(gsmemory.c)
+ - The 0'th component of colored screens wasn't passed through the
+band list, possibly causing access errors when rasterizing. (gxclimag.c,
+gxclread.c)
+ - setbbox could get an overflow without detecting it. (gsdps1.c)
+ - Images with only one component but MultipleDataSources = true
+could cause a memory access error. (gximage.c)
+ - The buffer for unpacking 12-bit-per-sample image data was too
+small, causing memory corruption. (gximage.c)
+ - 12-bit-per-sample images with multiple data sources sometimes
+didn't pass correct pointers to image_data. (gsimage.c)
+ - If an image data stream reached EOF before supplying enough data
+for the entire image, memory corruption could occur. (zpaint.c)
+ - When a device halftone was freed, some pointers in the halftone
+cache weren't cleared, leading to possible dangling references. (gsstate.c)
+ - Invalid font parameters could result in partially constructed
+fonts, which caused problems for restore. (gxfont0.h, gsfont.c)
+ - If an error occurred within a stringwidth, the graphics state
+stack wasn't restored properly. (gschar.c)
+ - The (static) limit on the size of a command line argument was too
+small. (gsargs.h)
+ - Building Level 1 systems was no longer possible. (gxdht.h,
+gsht.c, gsht1.c)
+ - Truncation instead of rounding caused colors on gray-scale devices
+to come out very slightly too dark. (gxcmap.c)
+ - The Decode mapping table constructed for images was slightly
+inaccurate for ranges other than [0 1] or [1 0]. (gximage.c)
+
+</pre>
+
+<h2><a name="Version4.71"></a>Version 4.71 (limited) (3/31/97)</h2>
+
+<p>
+This is a bug fix release during the beta test period.
+
+<h3><a name="V4.71_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - A larger value of -Olimit is now needed to optimize gxclread.c.
+(make.txt)
+ - Some comments were incorrect. (gdevbbox.h, sfilter1.c)
+
+Updates the GPL with a newer version from FSF. (COPYLEFT)
+
+Notes that the gcc 2.7.x code generation bug is fixed in 2.7.2.1.
+(make.txt)
+
+</pre><h3><a name="V4.71_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some streams required by high-level drivers were incorrectly
+grouped with the interpreter rather than the library. (int.mak, lib.mak)
+ - The choice of implementation for file streams was buried in an
+obscure place, rather than being included in the configuration definitions
+at the head of each makefile. (We believe there are no more such buried
+parameters.) This involved a NON-BACKWARD-COMPATIBLE change in the way this
+choice was specified. (lib.mak, *.mak)
+ - Some dependencies were missing. (lib.mak)
+
+</pre><h3><a name="V4.71_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A variable was used before being initialized, causing get_bits
+(and raster ops) to fail when using alternate X devices. (bug introduced in
+4.70.) (gdevxalt.c)
+ - Some 'private' declarations were omitted. (It is infuriating that
+gcc doesn't check for this!) (gdevps.c, gdevpx.c)
+ - A few character strings were used as byte arrays without a cast.
+(gdevpx.c)
+ - The EPS writer didn't write a correct bounding box, and didn't
+write it at the beginning of the file. (gdevvec.h, gsstruct.h, gdevps.c,
+gdevvec.c)
+ - x_copy_color specified an incorrect (too large) image width.
+Apparently this only mattered because it could cause invalid memory
+accesses. (gdevx.c)
+ - x_copy_mono also specified too large an image width. It's not
+clear this made any difference. (gdevx.c)
+ - The default implementation of strip_copy_rop didn't clamp Y values
+to legal values for get_bits. (gdevmrop.c)
+
+</pre><h3><a name="V4.71_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some initialization files prematurely switched the interpreter
+into Level 2 mode, causing some Level 2 operators not to be defined. (bug
+introduced in 4.60 or later.) (gs_cff.ps, gs_cidfn.ps, gs_cmap.ps,
+gs_init.ps, gs_res.ps)
+
+</pre><h3><a name="V4.71_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The choice of procedure names for the file-descriptor-based
+implementation of file streams was buried in a .c file, rather than being
+chosen in the makefile. (sfile.c[deleted], sfileno.c[deleted], sfxstdio.c,
+sfxfd.c, sfxboth.c)
+
+</pre><h3><a name="V4.71_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - rcurveto was broken -- it drew curves to random points. (bug
+introduced in 4.61.) (gspath.c)
+ - A trailing comma in an enum definition upset some compilers. (bug
+introduced in 4.70.) (gstype1.h)
+ - Type 1 fonts with hint replacement could produce anomalous or
+clipped output, or even missing lines. (Also cleans up some out-of-date
+formatting.) (gxtype1.h, gstype1.c, gxhint2.c)
+ - Removes some conditionals for choosing between old and new
+algorithms. (gxhint3.c)
+ - makebitmappattern required that the bitmap consist of only a
+single tile repetition. (gspcolor.c)
+ - Some computations on RasterOps didn't take transparency into
+account properly. (gdevmrop.c)
+ - The structure definition for imager and graphics states had an
+incorrect offset for line_params, causing the garbage collector not to mark
+or relocate dash patterns, possibly causing memory faults, FPEs, or invalid
+output. (bug introduced since 4.03.) (gsstate.c)
+ - 'show' operators gave a limitcheck for unreasonable coordinates,
+even if limit clamping was enabled. (gschar.c)
+
+Implements banded filling and stroking with colored halftones, in addition
+to pure colors and binary halftones. Since we are in a beta test period,
+actual use of this feature (but *not* all the code implementing it) is
+disabled under an #ifdef FUTURE. (gsdcolor.h, gxcldev.h, gxclpath.h,
+gxdht.h, gxhttype.h, gsht.c, gxclimag.c, gxclpath.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version4.70"></a>Version 4.70 (limited) (3/26/97)</h2>
+
+<p>
+This fileset fixes the one outstanding compilation problem on PC platforms
+and the old problem of limitchecks for out-of-bounds coordinates, and adds a
+variety of new features, including the ability to save away the band lists
+for pages and rasterize them later and/or elsewhere in any order and
+combination. This is the first "serious beta" candidate for the next
+general release.
+
+<p>
+Fileset numbers 4.62 through 4.69 were skipped deliberately.
+
+<h3><a name="V4.70_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The list of special -d and -s switches was out of date. (use.txt)
+ - The name of the zlibDecode filter was incorrectly written
+zlibEncode. (language.txt)
+
+Documents where to find out how to install gcc 2.7.x on SGI IRIX 6.x.
+(make.txt)
+
+Documents a makefile patch required on NeXTStep. (make.txt)
+
+Documents how to patch gcc to fix the AXP code generation bug. (make.txt)
+
+Adds documentation for the new unified printer driver. (devices.txt)
+
+</pre><h3><a name="V4.70_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make distclean' didn't remove a couple of files. (gs.mak)
+ - A library module didn't include a necessary dependency. (lib.mak)
+ - A new .ps file wasn't installed properly. (unix-end.mak)
+ - File write dates weren't updated properly on PC platforms, causing
+unnecessary rebuilding. (cp.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak,
+tccommon.mak, wccommon.mak, zlib.mak)
+ - An unnecessary explicit compilation line for gdevcdj.c caused
+problems in the Mac environment. (devs.mak)
+ - The VMS scripts were out of sync again. (vms.mak)
+ - The VMS build scripts didn't include the new JPEG driver.
+(vms-*.mak)
+ - A number of makefile macros were referenced before being defined.
+(devs.mak, lib.mak, int.mak, *.mak)
+ - libpng.mak didn't work with PVERSION=90. (libpng.mak, zlib.mak)
+
+Separates install-scripts from install-exec and install-data.
+(unix-end.mak)
+
+Moves the definition of SEARCH_HERE_FIRST from iminst.h to the makefiles.
+(*.mak, iminst.h, iconf.c, imain.c)
+
+Adds a -dBATCH switch that causes Ghostscript to exit after processing the
+files named on the command line. (gs_init.ps)
+
+Adds the PostScript, EPS, and PCL XL writers, and the color and gray-scale
+JPEG drivers, to all Unix configurations. (ansihead.mak, cc-head.mak,
+gcc-head.mak)
+
+</pre><h3><a name="V4.70_Drivers"></a>Drivers</h3><pre>
+
+NOTE: because of a change in an internal interface (clist_output_page), the
+cp50 driver no longer works. This is a user-contributed driver for which we
+take no responsibility.
+
+Fixes bugs:
+ - gdevcdj.c wasn't compatible with ansi2knr. (gdevcdj.c)
+ - 'private' was omitted from some declarations. (gdevjpeg.c)
+ - The PostScript writer didn't keep track of the current color
+properly. (gdevps.c)
+ - RESOLUTION was misspelled in a header. (gdevbjc.h)
+ - Some compilers objected to the use of a floating point initial
+resolution value. (gdevbjc.h)
+ - Some compilers didn't allow static initialization of a union.
+(gsdcolor.h)
+ - If a TIFF driver got an error when initializing the CCITTFax
+encoder, it returned a bogus error code. (gdevtfax.c)
+ - The PDF writer produced incorrect output for Indexed color space
+images. (gdevpdfi.c)
+ - For many fatal error conditions, the X driver called exit()
+instead of returning an error. (gdevx*.c)
+
+Adds new drivers:
+ - epswrite, an EPS-writing driver (instead of making EPS output a
+parametric option of the PostScript-writing device). (devs.mak, gdevps.c)
+ - pcxcmyk, a 4-bit CMYK PCX driver. This is probably only useful
+for debugging CMYK color rendering. (gdevpcx.c)
+ - jpeggray, a JPEG driver that produces gray-scale rather than color
+output. Thanks to Tom Lane for contributing this. (gdevjpeg.c)
+ - uniprint, a unified printer driver for a wide variety of inkjet
+printers. Thanks to Gunther Hess for contributing this. (gdevupd.c)
+
+Adds the resolution (pHYs) to the output of the PNG drivers. (gdevpng.c)
+
+Adds recognition of the ASCII85EncodePages parameter to the PostScript and
+EPS writers. (gdevps.c)
+
+Makes the new JPEG driver write a JFIF header, which contains the image
+resolution. (gdevjpeg.c)
+
+Changes the "vector" device support interface so relative movement can be
+detected easily. THIS IS STILL SUBJECT TO CHANGE WITHOUT NOTICE.
+(gdevvec.h, gdevpsdf.c, gdevps.c, gdevpx.c, gdevvec.c)
+
+Changes the PostScript, EPS, and PDF writers to recognize curves and lines
+that can be represented more efficiently. (gdevpsdf.h, gdevpsdf.c,
+gdevps.c)
+
+Adds a new parameter to the PDF writer, FirstObjectNumber. This defines the
+first object number that will be used in the output. The default, and
+minimum, value is 1; the maximum value is approximately 2^31. This is for
+the benefit of dvipdf; we don't expect it to be used otherwise. In fact,
+using it appears to produce files that Adobe Acrobat Reader won't accept,
+even though the files are perfectly compliant with the published PDF
+specification. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
+
+</pre><h3><a name="V4.70_Platforms"></a>Platforms</h3><pre>
+
+Removes the makefile for the 16-bit Borland C++ platform. This was the last
+supported 16-bit platform; we expect to gradually drop all 16-bit
+concessions from the code itself. (bcwin.mak)
+
+</pre><h3><a name="V4.70_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The initial size of systemdict was too small, causing the
+interpreter to slow down substantially. (iinit.c)
+ - A library module depended on an interpreter module. (zcsindex.c)
+ - A logically necessary (but accidentally always available) #include
+was missing. (ifont.h)
+
+Moves set/currentoverprint to a more appropriate module. (zcolor2.c,
+zcssepr.c)
+
+Changes the default transfer functions so that they do something reasonable
+when given operands outside the legal [0..1] range. We only do this to work
+around a bug in FrameMaker output, which uses the transfer function as the
+screen function (!). (gs_init.ps)
+
+Changes the CMap construction algorithm to use the new, more compact
+representation. (zfcmap.c)
+
+Adds support for Adobe's Compact Font Format. Many individual features are
+not implemented yet: see the comment in the source code for details.
+(gs_cff.ps)
+
+Adds support for Type 2 charstrings in Type 1 fonts. (ifont.h, zfont1.c)
+
+Changes the Type 1 character rendering operator for the library change in
+Type 1 fonts. (zchar1.c, zfont1.c)
+
+Initializes the graphics state limit clamp flag to true. (zgstate.c)
+
+Temporarily adds a configuration file for the new unified printer driver,
+and arranges for it to be read at startup. This arrangement will be
+replaced very soon by a different one based on command line parameters.
+(gs_init.ps, uniprint.ps)
+
+</pre><h3><a name="V4.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Adds support for Compact Font Format fonts. (pdf_font.ps)
+
+</pre><h3><a name="V4.70_Streams"></a>Streams</h3><pre>
+
+Adds a glue procedure needed for the new jpeggray driver. (sjpeg.h,
+sjpege.c)
+
+Removes the width limit of 32K in the CCITTFaxEncode filter. The new limit
+is absurdly large (about 50M). (scf.h, scfx.h, scfe.c)
+
+</pre><h3><a name="V4.70_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A library module depended on an interpreter module. (gxcolor2.h,
+gscolor2.c)
+ - When rendering a band, clipping was sometimes used when it wasn't
+necessary. (Performance only.) (gxclread.c)
+ - Stroking didn't check the path against the device clipping box in
+the absence of an explicit (non-default) clipping path. (Performance only.)
+(gxstroke.c)
+ - A reference to an opaque type upset a couple of compilers.
+(gxclread.c)
+ - Negative 32-bit numbers in Type 1 fonts didn't work properly on
+64-bit systems. (gstype1.c)
+ - A logically necessary (but accidentally always available) #include
+was missing. (gxbitmap.h)
+ - A header wasn't protected against double inclusion. (gxclist.h)
+ - Clipping devices didn't store their actual width and height.
+(gxcpath.c)
+ - The slow-case check for thin lines was incorrect. (gxstroke.c)
+ - Images didn't compute their clipping boxes correctly if there
+wasn't an explicit clipping path. (This must be a very recent bug, since it
+creates an overflow condition that prevents monochrome images from being
+rendered at all.) (gximage.c)
+
+Moves set/currentoverprint to a more appropriate module. For clients of
+gs_set/currentoverprint, this is a NON-BACKWARD-COMPATIBLE CHANGE, since the
+header file is now separate. (gscolor2.h, gscsepr.h, gscolor2.c, gscsepr.c)
+
+Replace the MetroWerks work-around with a different, more general one.
+(gdevmem.h, gdevmem.c, gxdevice.h)
+
+Speeds up the Type 1 interpreter a little. (gstype1.c, gxhint3.c)
+
+Redesigns the internal representation of CMaps to be more space-efficient.
+(gxfcmap.h, gschar0.c, gsfcmap.c)
+
+Implements a facility for saving away pages and rendering them later.
+Currently this requires the pages to be represented as band lists on files,
+and only allows X translation when rendering. This involves adding the
+following new printer device parameters:
+ BandHeight
+ BandWidth
+ BandBufferSpace
+Also changes the names of the printer device parameter elements from
+use_buffer_space to BufferSpace and from max_bitmap to MaxBitmap for
+consistency. (gdevprn.h, gxcldev.h, gxclio.h, gxclist.h, gxclmem.h,
+gxclpage.h, gxdevmem.h, gdevmem.c, gdevp2up.c, gdevprn.c, gxclmem.c,
+gxclpath.c, gxclread.c)
+
+Changes the band list implementation API to allow closing a file without
+deleting it, and to allow reopening an existing file. This is a
+NON-BACKWARD-COMPATIBLE change to a deep internal interface. (gxclio.h,
+gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
+
+Speeds up rendering of colored halftones, by recognizing cases where one or
+more planes don't actually require screening, unrolling a loop, and doing
+basic clipping before halftoning. (gxcht.c)
+
+Adds a graphics state parameter, gs_set/currentlimitclamp, that changes the
+handling of out-of-range coordinates to clamp them in a way that produces
+approximately the intended output most of the time, rather than causing a
+limitcheck. Currently this is only designed to work with the basic path
+construction operations ([r]moveto, [r]lineto, [r]curveto, closepath); it
+does not work with many other operations such as show, flattenpath or the
+rectangle operations. Note also that while currentpoint will return the
+correct (unclamped) value, reading out the path with pathforall will return
+clamped values. This involves NON-BACKWARD-COMPATIBLE changes to the path
+structure (but not to any public interfaces). (gxpath.h, gxtype1.h,
+gzpath.h, gzstate.h, gspath.c, gspath1.c, gsstate.c, gstype1.c, gxpaint.c,
+gxpath.c, gxpath2.c, gxpcopy.c)
+
+Adds support for Type 2 charstrings. Some features are not implemented yet:
+see gstype2.c for details. (gscrypt1.h, gstype1.h, gxfont1.h, gxop1.h,
+gxtype1.h, gstype1.c, gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.61"></a>Version 4.61 (limited) (3/13/97)</h2>
+
+<p>
+This fileset cleans up many compiler warnings. It adds support for
+CMap-encoded fonts, and a driver that writes JPEG images.
+
+<h3><a name="V4.61_Documentation"></a>Documentation</h3><pre>
+
+Corrects an error in the description of the internal CodeMap structure.
+(gs_cmap.ps)
+
+Documents the fact that the optimizer in gcc 2.7.2.1 is broken on AXP
+machines. (make.txt)
+
+Corrects the name of the .setglobal/.currentglobal procedures. (zvmem2.c)
+
+Updates current.txt in preparation for the release. (current.txt)
+
+</pre><h3><a name="V4.61_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The VMS script was out of date again. (vms.mak)
+ - CIDFont support unnecessarily required composite font support.
+(int.mak)
+ - CMap and CIDFont support had improper dependencies on
+initialization order. (lib.mak, int.mak)
+ - Some dependencies were missing in the JPEG library code.
+(jpeg.mak)
+
+Adds the new JPEG driver to all standard configurations. (*.mak)
+
+</pre><h3><a name="V4.61_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A dependency was omitted from the makefile. (devs.mak, gdevps.c)
+
+Cleans up some warnings from picky compilers. Some of these actually
+indicated problems, such as unreachable code. (gdevpdfx.h, gdevbj10.c,
+gdevcdj.c, gdevpdfp.c, gdevstc.c)
+
+Adds a JPEG-writing driver. Currently this only produces RGB output and
+only has a QFactor parameter, but eventually it could take all the other
+parameters of the DCTEncode filter. (devs.mak, int.mak, lib.mak,
+gdevjpeg.c)
+
+Refactors the PDF and PostScript output drivers so that both of them
+understand all the relevant documented PDF distiller parameters. (The
+PostScript driver currently disregards nearly all of them.) (gdevpdfx.h,
+gdevpsdf.h, gdevvec.h, gdevpdf*.c, gdevps.c, gdevpsdf.c, gdevpx.c)
+
+</pre><h3><a name="V4.61_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The MetroWerks C compiler gave an inexplicable error on a
+particular initialization. (gdevmem.h, gdevmem.c)
+
+</pre><h3><a name="V4.61_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The insideness testing operators sometimes reported hits
+incorrectly. (zupath.c)
+ - Mixed-type arithmetic used floats rather than doubles when
+converting integers, possibly leading to loss of precision. (zarith.c,
+zrelbit.c)
+ - composefont was defined in a private dictionary, not in
+systemdict. (gs_cmap.ps)
+ - composefont didn't work, for several different reasons.
+(gs_cmap.ps)
+ - After a Type 1 font called an OtherSubr, an invalid memory access
+usually occurred, because of an incorrect attempt to free a data structure.
+(zchar1.c)
+ - 2 .setlanguagelevel gave an error if globaldict hadn't been
+defined yet. (zmisc2.c)
+
+Cleans up some warnings from picky compilers. Some of these actually
+indicated problems, such as unreachable code, or failure to check for
+(implausible) out-of-range data. (idict.c, idparam.c, igc.c, iinit.c,
+imain.c, iscan.c, zbseq.c, zchar1.c, zdps1.c)
+
+Adjusts clients for a change in the internal character cache structure and
+the introduction of the font next-glyph procedure. (zfont.c, zfont0.c)
+
+Refactors the Level 1 / Level 2 interpreter split slightly so that composite
+fonts don't require all of Level 2. (int.mak, gs_dps1.ps, gs_dps2.ps)
+
+Adds FMapType 9 (CMap-encoded) composite font support. (int.mak,
+gs_cmap.ps, ifont.h, zfcmap.c, zfont.c, zfont0.c)
+
+</pre><h3><a name="V4.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Adds recognition of /Identity values for BG, UCR, and TR functions in
+ExtGState resources. (General function values still aren't recognized.)
+(pdf_draw.ps)
+
+Centralizes the handling of inherited attributes. (pdf_draw.ps,
+pdf_main.ps)
+
+Starts to add support for Type 0 fonts. (pdf_font.ps, pdf_main.ps)
+
+</pre><h3><a name="V4.61_Streams"></a>Streams</h3><pre>
+
+Cleans up some warnings from picky compilers. Some of these actually
+indicated problems, such as unreachable code. (shc.h, scfd.c, sfilter2.c,
+siscale.c, stream.c)
+
+</pre><h3><a name="V4.61_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some picky compilers disliked certain conditional expressions.
+(gxclread.c)
+ - Some picky compilers couldn't handle an extraneous semicolon.
+(gdevvec.h)
+ - A cast from byte ** to const byte ** was missing. (gdevvec.c)
+ - Resizing the levels array of a halftone order when banding could
+cause invalid memory accesses. (bug introduced in 4.60) (gxclread.c)
+ - One picky compiler didn't allow taking the address of an extern
+undefined structure. (lib.mak, gxclread.c)
+ - When rendering Type 1 fonts, character overshoot was usually
+suppressed when it shouldn't have been, often producing "squashed"
+characters. (gxhint1.c)
+ - On systems where sizeof(long) &gt; sizeof(int), coordinate values of
+more than 22 bits were passed through the band list incorrectly, producing
+incorrect output. (gxclread.c)
+
+Cleans up some warnings from picky compilers. Some of these actually
+indicated problems, such as unreachable code or (hypothetical) loss of
+precision. (gsdevice.c, gshsb.c, gsht.c, gsstate.c, gstype1.c, gxclimag.c,
+gxclpath.c, gxclread.c, gxpdash.c)
+
+Makes using font hints conditional, for debugging. (gxhint1.c)
+
+Adds library-level support for FMapType 9 (CMap-encoded) composite fonts.
+There is still no support for rearranged fonts. (gsccode.h, gsfcmap.h,
+gsstruct.h, gxfcache.h, gxfcmap.h, gxfont.h, gxfont0.h, gschar.c, gschar0.c,
+gsfcmap.c, gsfont.c, gsfont0.c)
+
+Splits band list control and utilities from rectangle-oriented commands,
+because a file was getting too big. (gxclist.c, gxclrect.c)
+
+Moves the temporary file names for command lists from the printer device
+structure to the command list structure; moves opening and closing the
+temporary files from gdev_prn_alloc/free to clist_open/close. (gdevprn.h,
+gxclist.h, gdevprn.c, gxclist.c, gxclread.c)
+
+Changes the command list storage implementation interface to pass the file
+name to the clist_rewind and clist_fseek functions, for the benefit of OSs
+that require closing and reopening a file to switch between reading and
+writing. This is a NON-BACKWARD-COMPATIBLE change in a non-public
+interface. (gxclio.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
+
+Changes the get_outline procedure in Type 42 fonts to return the length of
+the outline data as well as the pointer. This is a NON-BACKWARD-COMPATIBLE
+change in a semi-public interface. (gxfont42.h, gstype42.c)
+
+</pre>
+
+<h2><a name="Version4.60"></a>Version 4.60 (limited) (3/2/97)</h2>
+
+<p>
+This fileset moves color rendering up from the graphics state to the imager
+state so that color rendering can happen after banding. It also shifts
+image rendering to the rendering pass of banding for many common cases
+(often referred to inaccurately as "high-level image" capability). The
+changes involved are substantial and in some respects subtle, so
+unfortunately it is quite possible that some new bugs have been introduced.
+
+<p>
+This fileset also includes improvements to the new PCL XL driver
+(pxlmono/color), and introduces an experimental PostScript driver (pswrite).
+
+<h3><a name="V4.60_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The argument list of colorimage was incorrect. (zcolor1.c)
+ - false .charboxpath incorrectly claimed to create the correct path
+even when the CTM was not well-behaved. (language.txt)
+ - The discussion of the "main program" files was out of date.
+(make.txt)
+
+Updates the OS/2 EMX documentation. (make.txt)
+
+Modifies the Aladdin Ghostscript Free Public License slightly so it may be
+applied to other software packages. (PUBLIC)
+
+Updates inaccurate build documentation for several Unix platforms.
+(make.txt, ansihead.mak, cc-head.mak, gcc-head.mak, libpng.mak)
+
+Notes a problem with the MIPSpro 7.1 compiler. (make.txt)
+
+</pre><h3><a name="V4.60_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Most makefiles didn't include version.mak. (msc.mak,
+msvcwint.mak, os2.mak, tctail.mak, wctail.mak)
+ - There was an incorrect dependency for the Windows printer device.
+(devs.mak)
+
+Moves the PDF writer to devs.mak. (devs.mak, int.mak)
+
+Updates the main VMS script to be structured like version.mak. (vms.mak)
+
+</pre><h3><a name="V4.60_Drivers"></a>Drivers</h3><pre>
+
+Factors out the stream-writing procedures from the PDF writer, so they can
+be shared with the new PostScript writer. (gdevpdfs.h =&gt; gdevpstr.h,
+gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c =&gt; gdevpstr.c,
+gdevpdft.c, gdevpsdf.c)
+
+Adds a PostScript writer (pswrite), similar to the PDF and PCL XL drivers.
+Currently this handles fill/stroke graphics and Level 1 images; everything
+else (including text) is turned into bitmaps. (devs.mak, gdevps.c)
+
+Changes the names of the PCL XL drivers from hpxmono/color to pxlmono/color.
+(devs.mak, gdevpx.c)
+
+Updates the "vector" device support interface. THIS IS STILL SUBJECT TO
+CHANGE WITHOUT NOTICE. (gdevvec.h, gdevpx.c, gdevvec.c)
+
+Makes the vgalib driver a page device. This seems bizarre, but it's
+necessary for setpagedevice to work with it. (gdevvglb.c)
+
+Updates some drivers for the new color mapping interfaces. (gdevpx.c)
+
+Updates the user-contributed Canon LBP-8II and LIPS III driver.
+(gdevlbp8.c)
+
+</pre><h3><a name="V4.60_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The workaround for Ultrix's incorrect implementation of sh -e
+still didn't work. (unixtail.mak)
+ - The definition of offset_of didn't work on the Mac. (stdpre.h)
+
+Updates the OS/2 EMX linker command per input from a user. (os2.mak)
+
+</pre><h3><a name="V4.60_Fonts"></a>Fonts</h3><pre>
+
+Adds .pss (apparently used by Adobe for Multiple Master font instances) to
+the list of extensions skipped by the GS_FONTPATH directory scanner.
+(gs_fonts.ps)
+
+</pre><h3><a name="V4.60_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Programs that rebind null, true, and/or false could cause all
+kinds of problems. We've only fixed a couple of the places that might be
+affected (findfont, quit), by wrapping an explicit "systemdict begin/end"
+around the code; fixing this completely would probably require wrapping this
+implicitly around almost every pseudo-operator, which would be too
+expensive. (gs_fonts.ps, gs_lev2.ps)
+ - In a Level 2 system, grestoreall stopped one level too early.
+(zdevice2.c)
+ - setpagedevice didn't restore the stack properly if it got an
+error. (gs_setpd.ps)
+
+Changes the GC pointer enumeration interface to reduce the number of
+'discarding const' warnings. See under Library below. (igc.c)
+
+Updates the interpreter for the change in the imager / graphics state split.
+(zpcolor.c)
+
+Makes the stack-restoring behavior of pseudo-operators non-optional.
+(interp.c)
+
+</pre><h3><a name="V4.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at
+position 45 rather than `hyphen'. (gs_pdf_e.ps, gs_wan_e.ps)
+
+</pre><h3><a name="V4.60_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A header file wasn't protected against double inclusion.
+(stream.h)
+ - any_abs was redefined. (spngp.c)
+ - The CCITTFaxDecode filter didn't fully initialize the "previous
+line" for 2-D decoding, so if the very first line of data was 2-D, an
+out-of-bounds memory access could occur. (scfd.c)
+
+</pre><h3><a name="V4.60_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_image_next could read too much data, causing errors at the
+interpreter level. (gsimage.c)
+ - The bitmaps stored in the Pattern cache were usually freed,
+leaving dangling pointers. (gsdcolor.h, gxpcache.h, gxpcolor.h, gsstate.c,
+gxpcmap.c)
+ - There was still one assignment to a const structure, and there
+were some unnecessary const-discarding casts. (gxclread.c)
+ - If a character in a Type 3 font was defined by executing 'show'
+type commands, charpath did the wrong thing (didn't pick up the paths
+created by the inner show). Similarly, if it uses 'stroke', true charpath
+did the wrong thing (appended the path rather than the strokepath path).
+(gxchar.h, gschar.c, gspaint.c)
+ - A header file wasn't protected against double inclusion.
+(gserror.h)
+ - The new fast implementation of rectfill didn't handle rectangles
+with negative width/height. (bug introduced in 4.32) (gsdps1.c)
+ - Reading banded high-level images calculated the image height
+incorrectly, (usually) causing a rangecheck. (gxclread.c)
+ - When reading band data, a memory fault could occur if the halftone
+cache hadn't been allocated yet. (gxht.c)
+ - The imager state data for high-level images wasn't written soon
+enough. (gxclimag.c)
+ - High-level images computed bounding boxes incorrectly, so they
+could write some garbage data in the band list, and could also fail to write
+some information. (gsmatrix.h, gxmatrix.h, gxclimag.c)
+ - High-level images wrote the raster value incorrectly in the band
+list. (gxclimag.c)
+ - Images with non-zero initial source X and non-portrait orientation
+were displaced on the page. (In practice, this only applied to some banded
+high-level images.) (gximage.c)
+ - The bounding box device didn't forward output_page calls, causing
+pages to be dropped or overprinted. (gdevbbox.c)
+ - The band renderer considered all non-zero return codes as errors,
+rather than only negative codes. (gxclread.c)
+ - An unnecessary extern hadn't been removed. (gxclimag.c)
+ - Some macros didn't parenthesize uses of their arguments, causing
+syntax errors. (gsrefct.h)
+ - The screen phase and color_info weren't set correctly when
+rendering bands. (gsstate.h, gsht.c, gxclread.c)
+ - A header file didn't declare all the opaque types it used.
+(gsdevice.h)
+ - Indexed color spaces didn't work with banded images. (They still
+don't -- the check for writing the color space, and the code for reading the
+table or map, are incomplete.) (gxclist.h, gxclpath.h, gxclimag.c,
+gxclpath.c, gxclread.c)
+
+In preparation for implementing post-banding halftoning:
+
+ - Moves color rendering information, including alpha value, from
+graphics state to imager state; also moves the allocator pointer. This is
+quite a subtle change, and may have a significant bug tail. (gxdcolor.h,
+gxht.h, gxistate.h, gzstate.h, gschar.c, gsdps1.c, gspaint.c, gsstate.c,
+gxclread.c)
+
+ - Changes all the relevant color space and color mapping procedures
+so they take a const gs_imager_state * (and, in some cases, a [const]
+gx_device *) instead of a const gs_state *. This is a
+non-backward-compatible change, but it only affects internal interfaces.
+(gsdcolor.h, gxcmap.h, gxcspace.h, gxdcconv.h, gxdcolor.h, gxdither.h,
+gxpcolor.h, gzht.h, gschar.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c,
+gscsepr.c, gsdevice.c, gsimage.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcconv.c,
+gxdcolor.c, gxht.c, gximage.c, gximage[2345].c, gxpcmap.c)
+
+ - Changes the color and color space reference count adjustment
+procedures similarly, to take a gs_memory_t * instead of a gs_state_t *.
+(gxcspace.h, gscie.c, gscolor.c, gscolor2.c, gscsepr.c, gspcolor.c)
+
+ - Changes the gs_halftone in the graphics state from being part of
+the gs_state_contents to being an independent reference-counted object.
+This too may have a significant bug tail. (gxht.h, gxistate.h, gsht.c,
+gsstate.c)
+
+ - Changes the image processing code so it no longer assumes that the
+gs_imager_state is actually a gs_state. (gximage.h, gximage.c, gximage2.c,
+gximage3.c, gximage4.c, gximage5.c)
+
+ - Adds a unique ID value to device halftones, so that it's possible
+to detect (non-)changes quickly. (gxdht.h, gsht.c)
+
+Finishes the code for writing and reading color rendering information in the
+band list. This involves changes to several band list opcodes. (gsht.h,
+gsht1.h, gxcldev.h, gxclist.h, gxclpath.h, gxdht.h, gzht.h, gsht.c, gsht1.c,
+gxclbits.c, gxclimag.c, gxclist.c, gxclread.c)
+
+Changes the garbage collector pointer enumeration procedure interface
+slightly to reduce the number of 'discarding const' warnings. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE for anyone who didn't use the
+ENUM_PTRS_BEGIN[_PROC] macro to start a pointer enumeration procedure (which
+should be no one). (gsstruct.h, gsmemory.c)
+
+Corrects a few more needlessly const-discarding casts. (gxfcache.h,
+gxccache.c)
+
+Checks for file reading errors when rasterizing bands. (gxclread.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.51"></a>Version 4.51 (limited) (2/9/97)</h2>
+
+<p>
+This version contains a more reasonable high-level PCL XL driver. The VMS
+build script is working again, we think.
+
+<h3><a name="V4.51_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The gsdll_h macro wasn't defined all the places it was needed.
+(devs.mak, os2.mak)
+
+</pre><h3><a name="V4.51_Drivers"></a>Drivers</h3><pre>
+
+Continues to develop the "vector" driver infrastructure and the PCL XL
+driver. EVERYTHING IN THESE FILES IS SUBJECT TO CHANGE WITHOUT NOTICE.
+(gdevvec.h, gdevvec.c)
+
+Brings the PCL XL driver up to usable quality for graphics. Most
+fill/stroke graphics, and portrait-orientation bitmap images up to 8 bits
+per pixel, are converted directly to their PCL XL equivalents. Text is
+still treated as bitmaps. Both gray-scale and color output are now
+supported. (devs.mak, gdevpx.c)
+
+</pre><h3><a name="V4.51_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - When using gsos2.exe with gsdll2.dll, reducing the size of the
+page bitmap caused a limitcheck error with the message
+ Failed to decommit memory in pm_alloc_bitmap, rc = 87 (gdevpm.c)
+ - The scripts that construct gconfig_.h failed on Ultrix, because
+Ultrix's implementation of sh -e is incorrect. (unixtail.mak, ugcclib.mak)
+ - Some systems that have sys/times.h don't define CLK_TCK, making a
+compilation fail. (time_.h)
+
+</pre><h3><a name="V4.51_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An omitted semicolon wasn't detected by gcc. (idict.c)
+
+Removes a source of unnecessary duplication by getting the revision number
+and date from version.mak. (gs.mak, int.mak, version.mak, gscdef.c)
+
+</pre><h3><a name="V4.51_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The minimum buffer sizes for the RunLengthDecode filter hadn't
+been changed to reflect the algorithm improvement made in release 4.38.
+(srld.c)
+
+Changes the RunLengthEncode filter so it can make progress with only a
+2-byte output buffer. (srlx.h, srle.c)
+
+</pre><h3><a name="V4.51_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Because of a typo, the slow general algorithm was always used for
+monochrome images. (Performance bug only, but a serious one.) (gximage2.c)
+ - Dots (zero-length lines with round caps and zero dot length)
+caused an infinite loop. (bug introduced in 4.40) (gxstroke.c)
+ - Some image data unpacking procedures were always required, but
+weren't always included. (bug introduced in 4.50) (gximage.c, gximage0.c,
+gximage3.c)
+ - Images with 8 bits per pixel and non-identity Decode produced
+garbage. (bug introduced later than 4.03) (gximage0.c)
+ - Some necessary casts and omitted punctuation weren't detected by
+gcc. (gxpath.h, gsargs.c, gsstate.c, gxclread.c, gxpdash.c)
+ - The band list became confused if a band had no commands at all.
+(gxclread.c)
+ - If a path included a closepath followed by a moveto to the same
+point, it could be written incorrectly in the band list. (bug probably
+introduced in 3.60) (gxclpath.c)
+
+Changes some internal computations for arcs from float to double for greater
+accuracy. (gspath1.c)
+
+</pre>
+
+<h2><a name="Version4.50"></a>Version 4.50 (limited) (1/31/97)</h2>
+
+<p>
+This release contains an experimental high-level PCL XL driver, a little
+more support for CID/CMap fonts, and the usual bug fixes. NOTE: the VMS
+build script is known to be out of sync with the makefiles again; we still
+don't see any alternative to constant struggles with this problem.
+
+<h3><a name="V4.50_Documentation"></a>Documentation</h3><pre>
+
+Corrects the -h message, which gave an incorrect file name for the bug
+report form. (imainarg.c)
+
+Removes documentation for 16-bit MS-DOS platforms with the Borland compiler.
+(fonts.txt, make.txt, new-user.txt, use.txt)
+
+</pre><h3><a name="V4.50_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The Watcom library makefile didn't define the directory
+information for libpng and zlib. (watclib.mak)
+
+Moves the selection of band list implementation (file- vs. RAM-based) and
+the compression filter for RAM-based band lists up to the top-level
+makefiles. Again, this is a NON-BACKWARD-COMPATIBLE procedure change.
+(lib.mak, *.mak)
+
+Moves the selection of version number for all platforms (except VMS, as
+usual) to a separate file. This will reduce the number of files that need
+editing when the version number changes. (ansihead.mak, cc-head.mak,
+gcc-head.mak, ugcclib.mak, version.mak, tar_cat)
+
+</pre><h3><a name="V4.50_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - An error in the (unsupported) SGI RGB driver could cause crashes
+or incorrect output. (gdevsgi.c)
+
+Starts to create a framework for structured output ("vector") drivers (PDF,
+PostScript, PCL XL, etc.) (gdevbbox.h, gdevvec.h, gsdcolor.h, gsstruct.h,
+gxdevice.h, gdevvec.c)
+
+Moves default page size parameters to a more accessible header. (gdevprn.h,
+gxdevice.h, gdevx.c)
+
+Adds a driver that produces properly structured PCL XL output. This is
+highly experimental and not ready for use yet. (gdevpx.c)
+
+</pre><h3><a name="V4.50_Platforms"></a>Platforms</h3><pre>
+
+Removes support for 16-bit MS-DOS platforms with the Borland compiler. For
+the moment, 16-bit MS Windows is still supported. (bc.mak, bcflags.mak,
+bclib.mak, tc.mak)
+
+</pre><h3><a name="V4.50_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - File-based CIDFonts (with delayed, incremental loading of
+character outlines) didn't work. (gs_cidfn.ps)
+
+Finishes implementing the definition of CMap resources, except for
+rearranged fonts. (gs_cidfn.ps, gs_cmap.ps)
+
+Adds a little more CMap support code. (zcid.c)
+
+Removes the .setcurrentfile operator, since it doesn't solve the problem it
+was intended to address. (zcontrol.c)
+
+Adapts the interpreter to use the new argument processing code.
+(imainarg.c)
+
+</pre><h3><a name="V4.50_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxDecode filter could access as much as 3 bytes beyond
+the end of a buffer, causing an invalid memory access. (This is essentially
+the same bug that was fixed for the CCITTFaxEncode filter in 4.38.)
+(scfd.c)
+
+</pre><h3><a name="V4.50_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Painting an image without having set up any halftone could cause a
+crash. (gxht.c)
+ - In a very obscure case, an occasional scan line of landscape
+images could get corrupted. (gximage0.c)
+ - Because of a rounding error, patterns could fail to be painted in
+certain cases. (gxpcolor.h, gspcolor.c, gxpcmap.c)
+ - Very large line widths or miter limits could cause the computation
+of stroke expansion to overflow. (gxpaint.h, gdevbbox.c, gxclpath.c,
+gxstroke.c)
+ - The phase could be incorrect for simple patterns. (gspcolor.c)
+ - The default implementation of copy_mono used an incorrect
+RasterOp. (gdevdflt.c)
+ - The default implementation of fill_masked didn't increment the row
+pointer, causing characters to appear as solid rectangular blocks.
+(gxdcolor.c)
+
+Eliminates an unnecessary gsave and grestore from rectfill and rectstroke if
+the path was null. (gsdps1.c)
+
+Adds a limit on the amount of space that the default (C heap) allocator will
+allocate, and a record of the maximum amount allocated, to help testing
+embedded products. (gsmemory.c)
+
+Changes the band list algorithm for deciding how many replicas of a halftone
+tile to store in the tile cache. The previous algorithm was too liberal,
+which could cause the cache to overflow and many unnecessary bitmaps to be
+written in the band list. (gxclbits.c)
+
+Writes clipping with a rectangle more compactly in the band list.
+(gxfixed.h, gxclpath.c)
+
+Adds new band list commands for representing 90- and 180-degree arcs
+compactly. (gxclpath.h, gxclpath.c, gxclread.c)
+
+Repackages handling of general monochrome images, color images, and 12-bit
+and interpolated images, so that they are included optionally rather than in
+all configurations. (int.mak, lib.mak, gximage.h, gximage.c,
+gximage[12345].c)
+
+Changes the structure definition for devices to include no-op pointer
+enumeration and relocation, so they can have subclasses. (gxdevice.h)
+
+Adds a library facility for processing command line arguments with
+@-expansion. (gsargs.h, gsargs.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.41"></a>Version 4.41 (private) (1/21/97)</h2>
+
+<p>
+This release adds a PCL XL output driver, and a few performance
+improvements.
+
+<h3><a name="V4.41_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The zlib library used an incorrect header file when compiling.
+(zlib.mak)
+
+Changes the names of the preprocessor symbols indicating the presence of
+system header files to be consistent with the ones used by GNU configure.
+(dvx-tail.mak, ugcclib.mak, unixtail.mak, vms.mak; dirent_.h, time_.h;
+gp_unix.c)
+
+Changes the method for choosing the compression filter for RAM-based band
+lists. This is a NON-BACKWARD-COMPATIBLE change in the makefile. (lib.mak)
+
+</pre><h3><a name="V4.41_Drivers"></a>Drivers</h3><pre>
+
+Adds black-and-white and 8-bit gray PCL XL (PCL 6) drivers for the LaserJet
+5 and 6 family. This driver is extremely simple and just emits bitmaps;
+future drivers will use more PCL XL high-level constructs. (gdevlj56.c)
+
+</pre><h3><a name="V4.41_Fonts"></a>Fonts</h3><pre>
+
+Updates the free font distribution to add the URW Grotesk and Antiqua fonts.
+
+</pre><h3><a name="V4.41_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - gs -h and -v returned with a non-zero exit code on all platforms.
+(This is necessary under Windows, to keep the message visible on the screen,
+but nowhere else.) (imainarg.c)
+ - Resizing a dictionary could exceed dict_max_size, causing memory
+corruption. (dstack.h, idict.h, idict.c, zdict.c)
+
+Adds .setlinecap and .setlinejoin that can use the extended range of line
+cap/join values, and redefines setlinecap and setlinejoin in terms of them.
+(gs_init.ps, zgstate.c)
+
+</pre><h3><a name="V4.41_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxDecode filter with EncodedByteAlign = true skipped to
+a byte boundary before checking for an EOL. This may be wrong if EndOfLine
+= true; we aren't at all sure what should happen if EndOfLine = false.
+(scfd.c)
+
+Adds a "no wrapper" option to the zlib streams, to optionally suppress the
+time-consuming integrity checksum computation. (szlibx.h, szlibc.c,
+szlibd.c, szlibe.c)
+
+</pre><h3><a name="V4.41_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Dashed lines with zero-length drawn segments (dots) that fell
+exactly on a corner produced inappropriate output. (pcl/test19.pxs)
+(gxpdash.c, gxstroke.c)
+ - Dashed lines didn't set the segment notes properly. (gxpdash.c)
+ - The bounding box device didn't free a bookkeeping structure at the
+end of processing an image. (gdevbbox.c)
+ - Curve points could get computed incorrectly when using emulated
+floating point. (gxpcopy.c)
+ - The 1-element cache for curve_x_at_y didn't work if Y was
+decreasing. (gxfixed.h, gxpcopy.c)
+
+Distinguishes between error and informational exits. (stdpre.h)
+
+Defines and checks maximum values for line cap and join parameters.
+(gslparam.h, gsline.c)
+
+Removes the 'not last' segment note, since it is not used for anything.
+(gxpath.h, gspath1.c, gxpath2.c, gxpcopy.c, gxpflat.c, gxstroke.c)
+
+Changes the memory freeing algorithm for RAM-based band lists back to the
+original one, since the "improved" one had more bugs than it was worth
+chasing. (gxclmem.c)
+
+Speeds up the A * B / C algorithm a little. (gsmisc.c)
+
+Speeds up curve_x_at_y by recognizing more cases that don't require the slow
+A * B / C algorithm. (gxpcopy.c)
+
+Changes the path filling code so it uses fill-by-trapezoids even if
+fill_adjust is zero, as long as the flatness is at least 1 pixel.
+(gxfill.c)
+
+Removes the (unneeded) floating point operations from gx_curve_log2_samples.
+(gxpflat.c)
+
+Changes the memory-based implementation of band lists so that it constructs
+the compressor and decompressor by calling procedures rather than
+instantiating templates: this allows setting filter parameters to
+non-default values. (gxclmem.h, gxcllzw.c, gxclmem.c, gxclzlib.c)
+
+</pre>
+
+<h2><a name="Version4.40"></a>Version 4.40 (private) (1/13/97)</h2>
+
+<p>
+This version finally handles the last graphics model discrepancies between
+PostScript and PCL, by correctly implementing null joins, minimum dot
+lengths, and tangent-aligned curve ends. It also contains some significant
+performance improvements, and as usual a few bug fixes.
+
+<h3><a name="V4.40_Documentation"></a>Documentation</h3><pre>
+
+Documents the new accurate curves and path dashing operators.
+(language.txt)
+
+</pre><h3><a name="V4.40_Utilities"></a>Utilities</h3><pre>
+
+Adds switches for genconf to set and unset a prefix for file names.
+(genconf.c)
+
+</pre><h3><a name="V4.40_Drivers"></a>Drivers</h3><pre>
+
+Adds recognition of the new Distiller 3.0 parameters to the PDF writer.
+(None of them have any effect yet.) (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c,
+gdevpdfp.c)
+
+Converts all the output functions in the PDF writer from being file-based to
+using streams, in anticipation of adding compression. (gdevpdfs.h,
+gdevpdfx.h, gdevpdf*.c, gdevpdfs.c)
+
+</pre><h3><a name="V4.40_Interpreter"></a>Interpreter</h3><pre>
+
+Adds operators for accessing the new accurate curves flag in the graphics
+state. (zgstate.c)
+
+Adds an operator for invoking gs_dashpath. (zpath1.c)
+
+</pre><h3><a name="V4.40_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Indexed color spaces whose base space was a CIE space caused an
+error. (pdf_draw.ps)
+
+</pre><h3><a name="V4.40_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A pointer was declared const incorrectly. (gxcpath.c)
+ - Filling with a pattern often failed to pass a non-null bitmap ID,
+causing excessive writing in the band list. (Performance bug only.)
+(gspcolor.c)
+ - The bounding box device didn't discount copy_mono or draw_line
+operations drawing in white. (gdevbbox.c)
+ - The bounding box device didn't read out the bounding box correctly
+as the PageBoundingBox device parameter. (It did return it correctly
+through the gx_device_bbox_bbox procedure.) (gdevbbox.c)
+ - The default implementation of fill_triangle drew nothing or
+incorrect output if the corners of the triangle were specified in certain
+orders (ax &lt; 0 or bx &lt; 0) (i.e., the previous "fix" had a bug).
+(gdevddrw.c)
+
+Changes tile size from always being set in all bands to being 'known' by
+bands individually. (gxclist.h, gxcldev.h, gxclbits.c, gxclist.c)
+
+Computes an additional value in advance when rendering images. (gximage.h,
+gximage1.c, gximage2.c)
+
+Replaces some slow loops with calls of memmove. (gxclmem.c)
+
+Provides a fixed-point implementation of A * B / C for machines with slow
+floating point. (gxfixed.h, gsmisc.c)
+
+Extends the "device color" type to implement filling masked regions as well
+as rectangles. (gxdcolor.h, gdevdflt.c, gspcolor.c, gxcht.c, gxdcolor.c,
+gxht.c)
+
+Makes unclipped monobit portrait and landscape images and image masks use
+the new masked fill capability of device colors. (gximage.h, gximage.c,
+gximage1.c, gximage2.c)
+
+Adds a macro for determining pointer alignment. (stdpre.h, gdevdflt.c)
+
+When floating point is slow, uses a different, faster algorithm for
+gx_curve_x_at_y. (gxpcopy.c)
+
+Improves performance by adding a one-element cache for gx_curve_x_at_y.
+(gzpath.h, gxpcopy.c)
+
+Reduces overhead when banded images are pre-rasterized (currently, always).
+(gxclimag.c)
+
+Adds a rendering cost estimate field to each band in a band list. This
+field isn't actually used for anything yet; eventually, the intent is that
+bands with a high cost will get rendered, and stored in compressed form,
+before starting the engine. (gxclist.h)
+
+Adds the concept of 'notes' for path segments, to allow remember what
+segments constitute a single curve or arc. Currently we set these properly
+for everything except dashed paths. (gxclpath.h, gxpath.h, gzpath.h,
+gspath1.c, gxclpath.c, gxclread.c, gxpath.c, gxpath2.c, gxpcopy.c)
+
+When the dot length is non-zero, changes curve stroking to always use bevel
+joins within each curve rather than the current join. This prevents a
+"bristly" look with no join and butt caps. (gxstroke.c)
+
+Adds an "accurate curves" capability that makes the last line segment of a
+flattened curve actually be tangent to the curve, which in turn makes
+flat-end caps be correctly perpendicular to the tangent. (gxpath.h,
+gxpcopy.c)
+
+Adds an "accurate curves" flag in the graphics state. (gsline.h,
+gxclpath.h, gxistate.h, gsline.c, gspath.c, gspath1.c, gxclpath.c,
+gxclread.c, gxfill.c, gxstroke.c)
+
+Changes the meaning of "no join" (gs_join_none) so that instead of producing
+no join and butt caps, it produces whatever the current cap is. This is
+compatible with the H-P definition. (gxstroke.c)
+
+Implements non-zero dot length for dash patterns. (gxpdash.c)
+
+Splits off the curve flattening algorithms into a separate file.
+(gxpcopy.c, gxpflat.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.39"></a>Version 4.39 (limited) (1/1/97)</h2>
+
+<p>
+This version was created only to accompany a release of the PCL XL
+interpreter. It was withdrawn the day after it was released, because the
+tools used to produce it put the wrong files in the filesets.
+
+<h3><a name="V4.39_Documentation"></a>Documentation</h3><pre>
+
+Adds a more detailed description of the third-party ps_view viewer
+interface. (new-user.txt)
+
+Corrects an error in a reference to the PSLRM. (lib.txt)
+
+Documents the change in .makeoperator. (language.txt)
+
+Updates the FTP location of the zlib sources. (zlib.mak)
+
+</pre><h3><a name="V4.39_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The Unix library makefile didn't include the necessary definitions
+for libpng and zlib. (ugcclib.mak)
+
+Allows selecting the compression filters for memory-based band lists in the
+makefile. Makes zlib (deflate) the default compressor for memory-based band
+lists. (lib.mak)
+
+</pre><h3><a name="V4.39_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - prfont.ps wouldn't print unencoded characters in Type 42 fonts.
+(prfont.ps)
+
+</pre><h3><a name="V4.39_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The H-P monochrome driver didn't put out enough initialization
+commands at the beginning of each page to make each page printable
+independently. (gdevdjet.c)
+
+</pre><h3><a name="V4.39_Interpreter"></a>Interpreter</h3><pre>
+
+Changes ref_stack_count_inline so it never does a procedure call.
+(istack.h)
+
+Changes .makeoperator so that operator procedures save the stack depths, and
+restore the stack pointers (if possible) if the operator encounters an
+error. This is a NON-BACKWARD-COMPATIBLE CHANGE; it requires rewriting the
+'stop' and 'stopped' pseudo-operators (and, if there were any, any other
+pseudo-operators that interact with the error handling machinery) in C.
+(gs_init.ps, interp.c, zcontrol.c)
+
+Adds recognition of the LeadingEdge, MediaClass, and RollFedMedia keys in a
+page device dictionary, per the Adobe supplement for their version 2017
+interpreter. This involves a NON-BACKWARD-COMPATIBLE change to the
+(undocumented) .matchpagesize operator. (gs_setpd.ps, zmedia2.c)
+
+Makes necessary changes for compatibility with the added parameters for the
+zlib filters. (zfzlib.c)
+
+</pre><h3><a name="V4.39_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The zlib encoder returned EOFC when it should have returned 0.
+(szlibe.c)
+
+Adds optional parameters and reset procedures for the zlib filters.
+(szlibx.h, szlibc.c, szlibd.c, szlibe.c)
+
+</pre><h3><a name="V4.39_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Displaying characters with a non-standard RasterOp could cause an
+invalid memory access. (gdevdflt.c)
+ - Banding sometimes used an incorrect RasterOp. (gxclread.c)
+ - When banding, mixing Patterns and halftones could confuse the
+bookkeeping of tile size, leading to incorrect generation of the band list
+and error messages or confusion when rasterizing. (gxclist.h, gxclbits.c,
+gxclread.c)
+ - If only the dash pattern offset changed, and not any of the other
+dash-related parameters, the new offset wasn't written in the band list,
+causing incorrect output. (gxclpath.c)
+ - Oversized halftone tiles didn't report their error code properly.
+(gxclbits.c)
+ - Oversized halftone tiles with RasterOp caused an error.
+(gxclist.c)
+ - When banding, RasterOp transfers that crossed a band boundary
+didn't access the correct source data on bands other than the first.
+(gxclist.c)
+ - There were redundant copies of the code for writing a RasterOp
+value in the band list. (gxclimag.c, gxclpath.c)
+ - Oversized patterns or halftones produced garbled output.
+(gxclbits.c)
+ - The check for oversized patterns or halftones was slightly
+incorrect, leading to the possibility of writing out a tile that would
+overflow the reading buffer and corrupt memory. (gxclbits.c)
+ - When banding, RasterOp wasn't applied to fill and stroke
+operations, and wasn't applied correctly to characters. (gdevdflt.c,
+gxclimag.c, gxclread.c)
+ - The RasterOp-related optimizations for black-and-white images
+sometimes produced incorrect output. (gximage.c, gximage2.c)
+ - The default implementation of fill_triangle didn't draw anything
+if the corners of the triangle were specified in certain orders (ax &lt; 0 or
+bx &lt; 0). (gdevddrw.c)
+ - Painting with a Pattern could pass out-of-range phase values to
+driver procedures. (gspcolor.c)
+ - Because of an off-by-1 error, halftones or patterns passed through
+the band list could write past the end of their allocated space in the band
+tile cache, leading to incorrect output or possible arithmetic exceptions or
+memory access errors. (gsbitops.c)
+
+Adds -Z: for printing only the minimal command list statistics. (gxclist.c,
+gxclread.c)
+
+Expands band list tracing so it includes all of the data associated with the
+command, not just the command name and a few command parameters.
+(gxclread.c)
+
+Adds free lists for strings. Currently these are only used in
+non-garbage-collected environments. (gxalloc.h, gsalloc.c, gsnogc.c)
+
+Adds a procedure for copying a path structure, and an (internal) accessor
+for the current path in the graphics state. (gxpath.h, gspath.c, gxpath.c)
+
+Speeds up filling characters with halftones a little bit. (gdevdflt.c)
+
+Changes the memory-based implementation of band lists so it can use any
+compression / decompression filter, so it only compresses when it has
+allocated a specified amount of buffer storage, and so it releases its
+buffer storage at the end of each page. (gxclmem.h, gxclmem.c)
+
+Speeds up counting the number of 1-bits in a byte, which is used in some
+image processing algorithms. (gsbittab.h, gsbittab.c)
+
+Reduces the band list space required for changing tile size. (gxcldev.h,
+gxclbits.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version4.38"></a>Version 4.38 (limited) (12/20/96)</h2>
+
+<p>
+Adds support for a couple of undocumented features in Type 1 fonts.
+
+<h3><a name="V4.38_Interpreter"></a>Interpreter</h3><pre>
+
+Adds handling of the Type 1 font subroutineNumberBias (an optional entry in
+the Private dictionary) and lenIV = -1 features at the interpreter level.
+(zchar1.c, zfont1.c)
+
+</pre><h3><a name="V4.38_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter could access as much as 3 bytes beyond
+the end of a buffer, causing an invalid memory access. (scfe.c)
+
+Changes the RunLengthDecode filter so it can make progress (produce output)
+with only a 1-byte output buffer. (srlx.h, srld.c)
+
+</pre><h3><a name="V4.38_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The sine and cosine of multiples of 90 degrees weren't exact.
+(gxfarith.h, gsmisc.c)
+ - The expanded bounding box computation for strokes didn't take into
+account the possibility of overflow. (gxstroke.c)
+ - The allocator didn't fill freed strings with the 'free' mark.
+(gsalloc.c)
+ - When using a pattern with RasterOp, the phase was computed
+incorrectly, leading to anomalous filling patterns. (gspcolor.c)
+ - Patterns with a non-zero translation in the matrix passed to
+makepattern didn't translate the pattern origin properly. (gxcolor2.h,
+gxpcolor.h, gspcolor.c)
+
+Adds a subroutineNumberBias field to Type 1 fonts. This is an undocumented
+feature of the Type 1 font format. (gxfont1.h, gstype1.c)
+
+Interprets lenIV = -1 in Type 1 fonts as meaning that the CharStrings are
+unencrypted. This too is an undocumented feature of the Type 1 format.
+(gxfont1.h, gxtype1.h, gstype1.c, gstype2.c)
+
+Changes gs_clippath so it returns more reasonable outlines. (There are too
+many programs that rely on being able to stroke the result of clippath, even
+though both the Adobe and H-P literature specifically say the results are
+unpredictable.) (gxcpath.h, gxcpath.c)
+
+</pre>
+
+<h2><a name="Version4.37"></a>Version 4.37 (limited) (12/10/96)</h2>
+
+<p>
+This version implements separate halftone phase for source and texture,
+required for PCL XL implementation.
+
+<h3><a name="V4.37_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Loading a native TrueType font without a 'post' table caused an
+error. (gs_ttf.ps)
+
+</pre><h3><a name="V4.37_Interpreter"></a>Interpreter</h3><pre>
+
+Extends the interpreter to handle the new separate halftone phases for the
+RasterOp source and texture. (gs_dps1.ps, zdps1.c)
+
+Makes a small change to accommodate a library change supporting Type 2
+charstrings. (zfont1.c)
+
+</pre><h3><a name="V4.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Implements the FontFile2 key for embedded TrueType fonts. (pdf_font.ps)
+
+Starts to implement the FontFile3 key for compressed Type 1 fonts. This
+code is currently disabled, because none of the necessary underlying C is
+written yet. (pdf_font.ps)
+
+</pre><h3><a name="V4.37_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The floating point emulator often returned incorrect results (too
+many bugs to list). (This is not used in any standard configuration.)
+(gsfemu.c)
+ - The new copy_for procedure for gstates incorrectly declared an
+argument as const. (gxstate.h, gsstate.c)
+ - If a curve had to be split twice along the same axis to make it
+monotonic, the split points could still be returned in the wrong order,
+possibly causing curved edges to turn into straight lines, and the algorithm
+still produced the wrong results if the curve had to be split twice along a
+single axis. This is the second time we have "fixed" these problems and the
+4th time we have "fixed" the curve monotonizing algorithm. (gxpcopy.c)
+ - Setting halftones cause a memory leak, because the subsidiary
+objects of the device halftone weren't freed properly. Fixing this required
+changing the graphics state implementation from allocating a device halftone
+for each gstate to managing the device halftone with reference counting.
+(gxdht.h, gzstate.h, gsht.c, gsstate.c)
+
+Provides an optimized version of ldexp for FPU-less configurations, and
+changes one key algorithm to use it. (gxfixed.h, gsmisc.c, gxpcopy.c)
+
+Speeds up imagemask with a halftone a little. (This will eventually require
+more serious optimization.) (gximage2.c)
+
+Adds a -Z* switch for tracing varieties of image rendering. (gximage.c)
+
+Recognizes that if the logical operation is equivalent to D = S (after
+accounting for a constant texture, if any), or if it is equivalent to D = ~S
+or D = D {&amp;,|}{S,~S} and D and S are both monobit and both colors are pure,
+imaging with RasterOp can be executed without invoking RasterOp. (gsropt.h,
+gximage.c)
+
+Makes coordinate transformations with landscape matrices execute as fast as
+with portrait matrices. (gxmatrix.h, gscoord.c, gsmatrix.c)
+
+Adds some sketch code for interpreting Type 2 charstrings. It compiles, but
+it makes no pretense of being runnable. (gstype1.h, gxop1.h, gxtype1.h,
+gstype2.h, gxfont1.h, gstype1.c, gstype2.c)
+
+Extends the library to allow setting separate halftone phases for the
+RasterOp source and texture, which is needed to implement halftone screens
+that behave like those in H-P's PCL XL printers. (gscsel.h, gsstate.h,
+gxcmap.h, gxcspace.h, gxdcolor.h, gxdither.h, gxpcolor.h, gzht.h, gzstate.h,
+gscie.c, gscsepr.c, gsht.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcolor.c,
+gxht.c, gximage.c, gximage[2345].c, gspcmap.c) ****** STILL NEED TO UPDATE
+BANDING CODE, grep FOR phase ******
+
+Removes the rc_header member from the gs_halftone structure, since we don't
+need it after all. (gxht.h)
+
+</pre>
+
+<h2><a name="Version4.36"></a>Version 4.36 (limited) (12/3/96)</h2>
+
+<p>
+This version fixes a number of library bugs related to RasterOp, Patterns,
+and memory management.
+
+<h3><a name="V4.36_Documentation"></a>Documentation</h3><pre>
+
+Changes the definition of texture transparency to match the peculiar H-P
+specification. (drivers.txt, language.txt)
+
+</pre><h3><a name="V4.36_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - x_get_bits didn't flush updates to the frame buffer, leading to
+possibly incorrect data being returned. (gdevx.c)
+ - x_get_bits added padding to the scan line being copied, possibly
+corrupting memory. (gdevx.c)
+
+Changes the x11mono driver to define white = 0, black = 1 to more closely
+model black-and-white printers. (This is an internal change that doesn't
+affect the output.) (gdevxalt.c)
+
+</pre><h3><a name="V4.36_Interpreter"></a>Interpreter</h3><pre>
+
+Removes some code that is no longer needed, by virtue of the fix for the
+memory leak in Pattern remapping. (zpcolor.c)
+
+</pre><h3><a name="V4.36_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Patterns wider than 1024 bits caused a rangecheck. (gxclip2.h,
+gxclip2.c)
+ - Dash patterns never got freed. The fix for this slows down gsave
+and grestore slightly, but we don't see any way around it. (gsline.c,
+gsstate.c)
+ - If the CTM was very non-uniform in X and Y, stroke sometimes
+didn't recognize thin lines as being thin, leading to dropouts.
+(gxstroke.c)
+ - RasterOps that didn't use S or T still took S or T transparency
+into account. (gdevmrop.c)
+ - RasterOps with no source didn't handle the possibility that the
+device color for black might have a value other than 0. (gxdcolor.h,
+gspcolor.c, gxcht.c, gxdcolor.c, gxht.c)
+ - White pixels in halftones on black-and-white devices apparently
+are *not* supposed to be treated as opaque for RasterOp. (gxcht.c, gxht.c)
+ - clippath caused memory to be lost until a restore or a garbage
+collection. (gspath.c)
+ - Clipping lists weren't ever freed, and clipping paths sometimes
+weren't freed, causing memory to be lost until a restore or a garbage
+collection. (gzacpath.h, gxacpath.c, gxcpath.c)
+ - Freeing a pattern instance referenced a pointer after it had been
+freed, causing an invalid memory access. (gspcolor.c)
+ - Remapping a Pattern color lost track of the temporary gstate,
+memory devices, and possibly the mask, causing memory to be lost until a
+restore or GC. (gxpcolor.h, gxpcmap.c)
+ - Remapping a Pattern color could cause paths to be marked as
+shared, preventing them from being freed until a restore or GC. (gxpcmap.c)
+
+Enhances the non-tracing garbage collector so that if there are no strings
+allocated at all, it resets the string allocation pointers. (gsnogc.c)
+
+Optimizes the black-and-white RasterOp implementation by recognizing cases
+that can be implemented directly by fill_rectangle, copy_mono, or
+tile_rectangle. (gdevmrop.h, gsropt.h, gdevmrop.c, gsroptab.c)
+
+Changes -ZA so it no longer produces [P] tracing messages for path
+construction. (gxpath.c)
+
+Adds a gx_pattern_cache_winnow procedure for selectively removing entries
+from the Pattern cache, similar to gx_purge_selected_cached_chars.
+(gscolor2.h, gxpcolor.h, gxpcmap.c)
+
+Adds the Pattern UID to Pattern cache entries. (gxpcolor.h, gxpcmap.c)
+****** MUST HANDLE XUID POINTERS ON GC (RELOC) &amp; RESTORE (CLEAR LIKE HT
+CACHE) ******
+
+Makes gs_gstate free the path representation of the clipping path if it's a
+rectangle, since reconstructing it is cheap and otherwise the path segments
+would not be freeable until a restore or GC. (gsstate.c)
+
+Extends the "client data" interface for gstates so that the copy procedure
+can determine why it is being called. (gxstate.h, gsstate.c)
+
+</pre>
+
+<h2><a name="Version4.35"></a>Version 4.35 (limited) (11/24/96)</h2>
+
+<p>
+This contains the usual bug fixes, and two minor enhancements: an option for
+handling EPSF files with binary headers, and support for file-based
+resources.
+
+<h3><a name="V4.35_Documentation"></a>Documentation</h3><pre>
+
+Documents the new EPSF-reading capability. (gs.mak)
+
+</pre><h3><a name="V4.35_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some obsolete definitions were accidentally left in the rules for
+compiling fonts into the executable. (int.mak)
+
+</pre><h3><a name="V4.35_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - initgraphics left the current color space in an inconsistent
+state. (bug introduced in 4.32) (zgstate.c)
+ - restore didn't properly rebind FontDirectory to either Local or
+SharedFontDirectory according to the current VM selection. (gs_dps1.ps)
+ - If FontDirectory was redefined, many things broke. (gs_ccfnt.ps,
+gs_dps1.ps, gs_fonts.ps, gs_pdfwr.ps)
+ - If a resource provided a file name but the file couldn't be
+opened, an error occurred. (gs_res.ps)
+ - flushfile didn't work with procedure-based streams. (zfileio.c)
+
+Adds a feature (epsf.dev) that allows the interpreter to recognize and
+handle MS-DOS EPSF files with a binary header. (int.mak, gs_epsf.ps,
+gs_init.ps, pdf_main.ps)
+
+Adds (internal) .getuserparam and .getsystemparam operators for getting the
+value of a single user or system parameter. (gs_lev2.ps, zusparam.c)
+
+To support file-based resources, implements the FontResourceDir,
+GenericResourceDir, and GenericResourcePathSep system parameters, and
+ResourceFileName for the built-in resource categories. (gs_init.ps,
+gs_lev2.ps, gs_res.ps)
+
+</pre><h3><a name="V4.35_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The 2-D CCITTFaxDecode filter became confused if a buffer boundary
+fell between a horizontal make-up code and its terminating code, typically
+causing an ioerror. (scfd.c)
+
+</pre><h3><a name="V4.35_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Using the null color could confuse the reference counts for color
+spaces, causing memory access errors. (gscolor.c)
+ - Images with CombineWithColor = true caused memory access error,
+because a structure element wasn't initialized. (gdevmrop.c)
+ - gs_setnullcolor tried to return an error code, even though it was
+declared as returning void. (Why doesn't gcc catch this??) (gscolor.h,
+gscolor.c)
+ - gs_setnullcolor was declared inconsistently as taking a const or
+non-const argument. (gscolor.h)
+ - Small color tiles in the band list were not read in correctly.
+(gxclread.c)
+ - The band list could get confused, causing ioerrors, invalid memory
+accesses, or garbled output, because the algorithms for computing the size
+of bitmaps when writing and when reading had gotten inconsistent. This code
+has been broken and "fixed" at least 4 or 5 times. (gxcldev.h, gxclbits.c,
+gxclread.c)
+ - When using banding, characters that extended off the page
+vertically in the -Y direction came out garbled. (gxclimag.c)
+ - The bounding box device didn't compute the box correctly for
+trapezoids. (gdevbbox.c)
+ - The fastest case of rendering monochrome images could cause
+unaligned data accesses. (bug introduced recently.) (gximage.h,
+gximage1.c)
+ - TrueType characters with no contours could cause an invalid memory
+access. (gstype42.c)
+ - Composite TrueType characters weren't rendered properly.
+(gstype42.c)
+
+Adds a get_outline procedure to the Type 42 font header, to provide a
+callback for getting the outline data for a glyph. (gxfont42.h, gstype42.c)
+
+</pre>
+
+<h2><a name="Version4.34"></a>Version 4.34 (limited) (11/18/96)</h2>
+
+<p>
+This release adds a little more support for CID-keyed fonts and for PCL
+emulation, and a bit more of the machinery for passing images through the
+band list.
+
+<h3><a name="V4.34_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The RasterOp source device wasn't listed as an internal device in
+drivers.txt. (drivers.txt)
+
+Corrects a statement regarding the pstotext license. (new-user.txt)
+
+</pre><h3><a name="V4.34_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The Watcom makefile for the library didn't work properly if
+certain variables were overridden from the command line. (watclib.mak)
+ - The library code inadvertently depended on an interpreter header
+file. (*.mak)
+
+</pre><h3><a name="V4.34_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some very picky compilers complained about assigning 0 to a
+variable of an enum type. (gdevpdfx.h, gdevpdf.c)
+
+</pre><h3><a name="V4.34_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some very picky compilers didn't like a cast from a pointer type
+to an int type. (idebug.c)
+ - Some very picky (and non-ANSI-compliant) compilers didn't allow
+assigning an int to a variable of enumerated type. (zfont2.c, zht2.c)
+ - The library code inadvertently depended on an interpreter header
+file. (iref.h)
+
+Restructures the font building code slightly to support CID fonts better.
+(gs_cidfn.ps, bfont.h, zcid.c, zfont0.c, zfont1.c, zfont2.c, zfont42.c)
+
+Adds a .setcurrentfile operator to allow disk-based fonts to keep their file
+open. (gs_cidfn.ps, zcontrol.c)
+
+</pre><h3><a name="V4.34_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Some very picky compilers didn't like the computation (const byte
+*)0 - 1. (stream.c)
+ - A cast to ulong was omitted. (smtf.c)
+ - Some compilers got confused by typedefs in the zlib header files.
+(szlibd.c, szlibe.c)
+
+</pre><h3><a name="V4.34_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A header file didn't select the proper system header on all POSIX
+systems. (malloc_.h)
+ - A subclass/superclass type discrepancy upset some compilers.
+(gsline.h, gsline.c, gxpdash.c)
+ - Some very picky compilers didn't accept the previous definition of
+the offset_of macro. (stdpre.h)
+ - Some very picky (and non-ANSI-compliant) compilers didn't like
+mixing int and enumerated types. (gsropt.h, gzstate.h, gdevmrop.c,
+gdevrrgb.c, gsrop.c, gxclist.c)
+ - A cast was missing. (gslib.c)
+ - The gs_setxxxtransparent procedures interpreted their argument
+backwards (i.e., as "opaque" rather than "transparent"). (gsrop.c)
+ - Intersecting clipping paths didn't reset the logical operation to
+the default, causing a possible crash. (gsrop.h, gsrop.c, gxacpath.c)
+ - Pattern accumulation didn't reset the logical operation to the
+default, possibly causing incorrect output. (gspcolor.c)
+ - If a Type 1 character ended with a curve and a closepath, a
+microscopic line could result, causing output anomalies. (gstype1.c)
+ - Stroking a path with a mix of thin and non-thin lines could cause
+extraneous lines to appear. (gxstroke.c)
+ - Zero-width rectangles were painted even when fill adjustment was
+turned off. (gxpaint.c, gxstroke.c)
+ - The algorithm for dividing a curve into monotonic pieces could
+produce incorrect results, causing anomalies when filling curved regions
+with zero fill adjustment. (gxpcopy.c)
+ - The algorithms for outside clipping were wrong, causing some
+inside regions not to be clipped. (gxcpath.c)
+ - The white pixels in halftones weren't treated as unconditionally
+opaque for RasterOp. (gxht.c, gxcht.c)
+ - Images with RasterOp didn't work properly. (gdevmrop.c,
+gximage[2345].c, gxpcmap.c)
+ - The library code inadvertently depended on an interpreter header
+file. (gxalloc.h, genarch.c)
+ - An important optimization for stroking (recognizing portrait,
+landscape, and unscaled CTMs) was commented out. WE DON'T HAVE ANY RECORD
+OF WHY WE DID THIS, AND RESTORING IT MAY INTRODUCE NEW BUGS. (gxstroke.c)
+ - Bitmap images with non-zero data_x values were passed through the
+band list incorrectly, possibly causing vertical "streaks" in the output.
+(gxcldev.h, gxclread.c)
+ - If a curve had to be split twice along the same axis to make it
+monotonic, the split points were returned in the wrong order, possibly
+causing curved edges to turn into straight lines. (gxpcopy.c)
+
+Changes the debugging printout format for paths so the output can be
+processed mechanically more easily. (gxpath.c)
+
+Adds gs_glyphpath, like charpath but taking a glyph rather than a string of
+character codes. (gschar.h, gschar.c)
+
+Adds an internal concept of a "null color", a color that doesn't actually
+mark any pixels. (gscolor.h, gsdcolor.h, gxdcolor.h, gscolor.c, gxdcolor.c)
+
+Takes the next incremental steps towards passing images through the band
+list:
+ - Implements the ability to pass some color mapping information
+(transfer functions, black generation, undercolor removal) through the band
+list. (gxclist.h, gxclimag.c, gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version4.33"></a>Version 4.33 (limited) (11/6/96)</h2>
+
+<p>
+This release fixes yet another obscure bug in the recently rewritten fast
+loops for image rendering. (These loops have caused more problems than any
+other single module of the entire library.) It also adds preliminary
+support for CID-keyed fonts (CIDFonts only, not CMaps yet) and some library
+extensions for supporting HP-GL/2.
+
+<h3><a name="V4.33_Documentation"></a>Documentation</h3><pre>
+
+Adds considerable new material to the C style document. (c-style.txt)
+
+Changes -cckr to -ansi in the SGI build procedure. (make.txt)
+
+Corrects an error in the description of the .type42execchar operator.
+(gs_typ42.ps)
+
+</pre><h3><a name="V4.33_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The 'man' pages were installed in the documentation directory as
+well as in the man directory. (unix-end.mak)
+
+</pre><h3><a name="V4.33_Interpreter"></a>Interpreter</h3><pre>
+
+Adds support for CID-keyed fonts. There is no CMap support yet, and some
+things are done with hacks. (int.mak, gs_cidfn.ps, gs_cmap.ps, ichar.h,
+zchar.c, zchar2.c, zchar42.c, zfont2.c, zfont42.c, zcid.c)
+
+Adds operators for accessing the new dash adaptation and dot length
+parameters in the graphics state. (gs_init.ps, zgstate.c)
+
+</pre><h3><a name="V4.33_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The fast case of monobit image rendering could overwrite memory.
+(gximage1.c)
+ - The new fast implementation of rectfill didn't check for
+fixed-point overflow. (gsdps1.c)
+ - Internally, fonts with no name all appeared to have the same name,
+possibly confusing the xfont machinery. (gxccman.c)
+ - A cast to remove const was omitted, upsetting some compilers.
+(gximage1.c)
+ - The driver's stroke_path routine was not called if the logical
+operation was not the default one. (gxpaint.c)
+
+Adds support for CID-keyed fonts. (gsccode.h, gxfont.h)
+
+Adds a new "dash pattern adaptation" flag in the imager state. When this
+flag is set and a dash pattern is in effect, each line segment will receive
+an integral number of repetitions of the dash pattern (if necessary, rounded
+up). (gsline.h, gxline.h, gsline.c, gsstate.c, gxpdash.c)
+
+Adds a new "dot length" parameter to the imager state. If this parameter is
+non-zero, it gives a length for rendering dots (zero-length lines). See
+language.txt for details. (gsline.h, gxline.h, gsline.c, gsstate.c,
+gxstroke.c)
+
+Extends band lists so they can handle dash pattern adaptation and dot
+length. (gxcldev.h, gxclpath.h, gxclpath.c, gxclread.c)
+
+Adds a floating point emulator to allow more realistic profiling of
+configurations without a FPU. (gsfemu.c)
+
+</pre>
+
+<h2><a name="Version4.32"></a>Version 4.32 (limited) (11/1/96)</h2>
+
+<p>
+This fixes a couple more bugs, most notably the infamous "pixel stripe" bug.
+
+<h3><a name="V4.32_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The documentation said that Ghostscript could not interpret
+encrypted PDF files. (language.txt)
+ - A number of Ghostscript's extensions to the PostScript language
+were missing. (language.txt)
+
+</pre><h3><a name="V4.32_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A compiler complained about initializing an unsigned variable with
+a negative value. (gdevx.c)
+ - An off-by-1 allocation error could cause memory overwriting.
+(gdevepsc.c)
+
+</pre><h3><a name="V4.32_Platforms"></a>Platforms</h3><pre>
+
+Declares a pointer 'const' that is actually only used for reading.
+(gp_unifs.c)
+
+</pre><h3><a name="V4.32_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The code for adding nominal UnderlinePosition and
+UnderlineThickness entries to FontInfo assumed (incorrectly) that all Type 1
+fonts had FontBBox entries. (gs_type1.ps)
+
+Brings CIDFont support closer to reality. It doesn't work yet, though.
+(gs_cidfn.ps, gs_fonts.ps, gs_init.ps, gs_res.ps, gs_typ42.ps)
+
+</pre><h3><a name="V4.32_Interpreter"></a>Interpreter</h3><pre>
+
+Removes a redundant implementation of initgraphics. (gs_init.ps)
+
+Speeds up rectfill a little for the common case (4 numbers on the stack).
+(zdps1.c)
+
+</pre><h3><a name="V4.32_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Zero-width, 1-bit-deep, landscape or portrait images could
+overwrite memory ad lib. (gximage1.c)
+ - A procedure was declared 'static' inconsistently, upsetting many
+compilers (but not gcc, which, in contradiction to the ANSI standard,
+doesn't check this properly). (gxcpath.c)
+ - A local variable was initialized with a value computed from a
+variable that hadn't been set yet, leading to possibly incorrect coloring of
+the first run of pixels in images with 12 bits per sample. (gximage4.c)
+ - A compiler complained about initializing an unsigned variable with
+a negative value. (shcgen.c)
+ - A rounding problem could produce a vertical stripe of 1 (or on
+very large images possibly more) incorrect pixels at the right edge of a
+1-bit-deep image. (gxdda.h, gximage1.c)
+
+Speeds up gs_rectfill substantially for the portrait/landscape case with a
+rectangular clipping region. (gsdps1.c)
+
+Adds a parameter so we can include gx_line_params in subclasses. (gzline.h)
+
+</pre>
+
+<h2><a name="Version4.31"></a>Version 4.31 (limited) (10/27/96)</h2>
+
+<p>
+This is primarily a bug fix release for 4.30, which we had hoped wouldn't be
+necessary....
+
+<h3><a name="V4.31_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The comment describing the order of coefficients in a CTM written
+on the band list was wrong. (gxclpath.h)
+
+</pre><h3><a name="V4.31_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - bug-form.txt wasn't installed by 'make install'. (unix-end.mak)
+ - The default flags in ugcclib.mak didn't take the gcc code
+generation bug into account. (ugcclib.mak)
+
+</pre><h3><a name="V4.31_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - MetroWerks CodeWarrior predefines true and false, causing
+compilation errors on the Mac. (stdpre.h)
+
+</pre><h3><a name="V4.31_Interpreter"></a>Interpreter</h3><pre>
+
+Updates code for the change in the ENUM_PTR macros. (iscan.c)
+
+Changes the allocator to keep track of "lost" ref space separately, to allow
+an independent check on its activities. (gxalloc.h, ialloc.c, isave.c)
+
+Changes the garbage collector API slightly to allow implementation of the
+API in applications other than PostScript interpreters. (ivmspace.h,
+ireclaim.c, igc.c)
+
+</pre><h3><a name="V4.31_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Implements the PDF 1.1 BX and EX operators. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V4.31_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Some (harmless) pointer incompatibilities upset some compilers.
+(szlibd.c, szlibe.c)
+
+Updates code for the change in the ENUM_PTR macros. (stream.c)
+
+</pre><h3><a name="V4.31_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A label in the ENUM_PTR procedure generating macros was often not
+referenced, leading to compiler warnings. (gsstruct.h, gxxfont.h,
+gdevmem.c, gschar.c, gscolor2.c, gsdevice.c, gsfont0.c, gsht.c, gsstate.c,
+gxcpath.c, gximage.c)
+ - Using the gstate version of setflat rather than the imager version
+caused compiler warnings (and, in some cases, errors). (gstype1.c)
+ - Non-standard ImageMatrix values for banded images didn't work.
+(This wasn't actually used.) (gxclread.c)
+ - imagemask with a halftone and portrait orientation colored some
+inappropriate pixels. (bug introduced in 4.30) (gximage2.c)
+ - When banding, if a character straddled a band boundary the first
+time it occurred, all occurrences of it were clipped. (bug introduced in
+4.2x or 4.30) (gxclimag.c)
+ - Degenerate clipping rectangles sometimes got turned into
+non-degenerate ones by swapping the min and max coordinates. (gxcpath.c)
+ - Resizing an object either allocated a new object unnecessarily
+(performance bug only), or in very rare cases could corrupt memory.
+(gsalloc.c)
+ - Very small objects didn't get put on a free list when freed.
+(Performance bug only.) (gsalloc.c)
+ - Some pointers were incorrectly declared 'const', upsetting some
+compilers. (gxclread.c)
+
+Adds more tracing output for -ZL. (gxclread.c)
+
+Changes the -Za tracing output slightly to aid mechanical analysis of
+allocation traces: allocation events now always include a '+', deallocation
+events always include a '-', and the address is always the address of the
+object data and not the header. (gsalloc.c, gsmemory.c)
+
+Changes the allocator to keep track of "lost" object and string space
+separately, to allow an independent check on its activities. (gxalloc.h,
+gsalloc.c)
+
+Changes the allocator to use 'memmove' in an obvious place. (gsalloc.c)
+
+Provides a garbage collector API at the library level to allow
+implementation of the API in applications other than PostScript
+interpreters. (gsgc.h)
+
+</pre>
+
+<h2><a name="Version4.30"></a>Version 4.30 (limited) (10/23/96)</h2>
+
+<p>
+The main purpose of this release is to implement a substantial change in the
+"high level" image API, after which we believe this API will be stable.
+
+<h3><a name="V4.30_Documentation"></a>Documentation</h3><pre>
+
+Documents the changes in the begin_image and image_data device procedures.
+(drivers.txt)
+
+</pre><h3><a name="V4.30_Drivers"></a>Drivers</h3><pre>
+
+Speeds up the PDF writer a little by reducing the amount of allocation,
+which was causing very frequent garbage collections. (gs_pdfwr.ps,
+gdevpdft.c)
+
+Updates the PDF writer for the change in begin_image/image_data.
+(gdevpdfi.c)
+
+</pre><h3><a name="V4.30_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Some versions of the SGI IRIX compiler have a bug that causes them
+to try to expand macros that require arguments even when the macro name
+isn't followed by a left parenthesis. (gdevsgi.h, gdevsgi.c)
+ - The IBM RS6000 compilers now provide &lt;stdlib.h&gt;, so our
+definitions of malloc and free caused a conflict. (malloc_.h)
+
+</pre><h3><a name="V4.30_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Many Fontmaps included obsolete references to an old
+Helvetica-Narrow font. (Fontmap.*)
+
+Makes the GS_FONTPATH directory scanner a little more liberal about what
+files it examines: it will now examine any file whose first line begins with
+%!PS-Adobe or %!FontType. (gs_fonts.ps)
+
+To match an apparent Adobe convention, augments findfont so that if a font
+isn't in the Fontmap, it will try to load a file whose name is the same as
+the font name. (gs_fonts.ps)
+
+To make some questionable Apple font inquiry code work, augments the
+FAKEFONTS facility so that it sets the FontType of fake fonts to 1.
+(gs_fonts.ps)
+
+</pre><h3><a name="V4.30_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - .checkpassword, .putdeviceparams, .putdevparams, setsystemparams,
+and setuserparams didn't free the results byte array, causing a memory leak
+(until the next garbage collection). (zdevice.c, ziodev.c, zusparam.c)
+
+</pre><h3><a name="V4.30_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The code for emulating floating point multiplication with
+conversion to fixed point didn't detect overflow correctly, which could
+produce incorrect results instead of a limitcheck. (gsmisc.c)
+ - A macro cast a pointer incorrectly, leading to spurious compiler
+warnings. (gxfixed.h)
+ - The code for emulating fixed-to-float conversion computed the
+exponent incorrectly. (gsmisc.c)
+ - The algorithm for advancing a DDA a given number of steps (not
+actually used anywhere before this version) was wrong. (gxdda.h)
+ - The clipping box returned by clipping devices was incorrect,
+causing parts of the page to disappear. (bug introduced in 4.20)
+(gxcpath.c)
+
+Changes the begin_image and image_data device procedures:
+ - begin_image now takes an optional subrectangle instead of a set of
+shape flags.
+ - image_data now always takes complete rows of pixels, takes a
+source X offset, and returns 1 when it has received all the data.
+
+The change in begin_image and image_data is a NON-BACKWARD-COMPATIBLE CHANGE
+IN A PUBLIC INTERFACE; however, this interface was still designated "subject
+to change", per the notes for release 3.67 and the documentation in
+drivers.txt. (gsiparam.h, gxclpath.h, gxdda.h, gxdevice.h, gximage.h,
+gdevbbox.c, gdevnfwd.c, gsimage.c, gxclimag.c, gxclread.c, gximage.c,
+gximage?.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.21"></a>Version 4.21 (limited) (10/17/96)</h2>
+
+<p>
+The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20.
+
+<h3><a name="V4.21_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The Ghostscript man page had a .TH in the middle. (gs.1)
+
+</pre><h3><a name="V4.21_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The shared version of zlib was always called libgz; on most
+systems, it is now called libz (but not on Red Hat Linux, where libz is a
+library for dealing with time zones). (*.mak, gs.mak, libpng.mak, zlib.mak)
+ - The pdf2dsc.1 man page wasn't installed on Unix systems.
+(unix-end.mak)
+ - font2c generated procedures named gsf_xxx, but genconf assumed
+they were named gs_f_xxx. (int.mak)
+
+</pre><h3><a name="V4.21_Drivers"></a>Drivers</h3><pre>
+
+Updates the user-contributed LBP-8II driver to correct unspecified problems.
+(gdevlbp8.c)
+
+Adds a user-contributed driver for Avance Logic SuperVGA cards.
+(gdevsvga.c, devs.mak)
+
+</pre><h3><a name="V4.21_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - On Windows NT, a 32-bit parameter was truncated to 16 bits,
+preventing drawing of scroll bars of the image window when the window is
+uncovered. (dwimg.cpp)
+
+</pre><h3><a name="V4.21_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The free URW Grotesk and Antiqua fonts were omitted from the
+distribution.
+
+</pre><h3><a name="V4.21_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Defining a new global instance of a built-in resource
+(ColorRendering, ColorSpace, Form, Halftone, Pattern, ProcSet) caused an
+invalidaccess error. (gs_res.ps)
+ - pathbbox with no current path left an extra item on the stack when
+the error occurred. (gs_init.ps)
+ - findresource for an undefined resource instance didn't preserve
+the contents of the stack. (gs_res.ps)
+
+Adds a new file providing a procedural interface with a very rudimentary
+form of job encapsulation. (gserver.c)
+
+Changes the initial value of MaxOpStack to 20000, for the sake of a few
+badly-behaved files. (gs_init.ps, pdf_base.ps)
+
+</pre><h3><a name="V4.21_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - If the image operators failed to allocated their bookkeeping
+structure, the result was a crash rather than VMerror. (gximage.c)
+ - gx_default_fill_triangle (currently used only to implement the
+fastest case of stroke) had a typo that could cause a numeric exception or
+incorrect output, and another typo that could produce incorrect output.
+(gdevddrw.c)
+ - When banding, if the first occurrence of a character fell partly
+off the page, all occurrences of that character on the page could be clipped
+or mangled. (gxclbits.c, gxclimag.c)
+ - When testing whether it's worthwhile compressing a bitmap for
+banding, the compressor was allowed to generate a lot more output than
+needed to make the test. (gxclbits.c)
+ - Certain cases of unrotated gray-scale images dropped the first or
+last pixel of each scan line. (gximage2.c)
+ - In rare cases, a run of pixels in a image could get erroneously
+displayed in the same color as the previous run, because of a cache
+bookkeeping bug. (gximage3.c)
+ - The sample driver for the library had gotten inconsistent with a
+header file. (gslib.c)
+ - A declaration was followed by an extraneous semicolon, which upset
+some compilers. (gxht.h)
+ - Missing parentheses caused a test for thin lines to be incorrect.
+(gxstroke.c)
+
+</pre>
+
+<h2><a name="Version4.20"></a>Version 4.20 (limited) (10/13/96)</h2>
+
+<p>
+This release has internal changes for future support of banded image
+processing, but no externally visible changes. Its primary purpose is to
+incorporate speedups for clipped images. It does *not* incorporate fixes
+for all problems reported in 4.0x or 4.10.
+
+<h3><a name="V4.20_Documentation"></a>Documentation</h3><pre>
+
+Documents the new get_clipping_box device procedure. (drivers.txt)
+
+</pre><h3><a name="V4.20_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were many, many minor inconsistencies between the makefiles
+and the source code. (We finally have an automated tool to detect these.)
+(devs.mak, int.mak, lib.mak, unixtail.mak; gsutil.c, zwppm.c)
+ - Some makefile rules weren't properly terminated by a blank line.
+(lib.mak)
+
+</pre><h3><a name="V4.20_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The comments in gslp.ps had gotten out of date. (gslp.ps)
+
+Adds --no-eject-file and --no-eject-formfeed switches to gslp.ps, to allow
+packing files in multi-column printouts. (gslp.ps)
+
+</pre><h3><a name="V4.20_Drivers"></a>Drivers</h3><pre>
+
+Adds a user-contributed driver for the Epson LP-8000 laser printer.
+(gdevlp8k.c)
+
+Adds a DisplayMode parameter to the vgalib device. (gdevvglb.c)
+
+Removes the requirement of typing a character at the end of each page using
+the vgalib driver. THIS IS A USER-VISIBLE, NON-BACKWARD-COMPATIBLE CHANGE.
+(gdevvglb.c)
+
+</pre><h3><a name="V4.20_Interpreter"></a>Interpreter</h3><pre>
+
+Updates code to accommodate the new get_clipping_box device procedure.
+(zupath.c)
+
+</pre><h3><a name="V4.20_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - When a CTM was passed through the band list, it didn't get
+translated to match the band coordinate system. (This had no effect,
+because the translation part of the CTM was never used.) (gxclread.c)
+
+Adds a ',' debugging switch to disable high-level operations when banding.
+(gxclpath.c)
+
+Adds an optional get_clipping_box device procedure, so that filling and
+stroking can clip more aggressively. (gdevmem.h, gdevprn.h, gxdevice.h,
+gxpaint.h, gxpath.h, gzacpath.h, gdevdflt.c, gdevht.c, gdevnfwd.c,
+gxacpath.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c, gxfill.c,
+gxstroke.c)
+
+Speeds up clipped filling and stroking, by checking against the device
+clipping box. (gxfill.c, gxstroke.c)
+
+Adds the ability to clip with a rectangle a clipping path being accumulated,
+and uses it to do more aggressive clipping when banding. (gzacpath.h,
+gxacpath.c, gxclread.c)
+
+Speeds up clipping of objects lying partly above or below the clipping
+region. (gxcpath.c)
+
+Speeds up clipping vertically-oriented objects (such as 90 degree rotated
+images or vertical rectangles) with convex clipping regions, by checking for
+vertical rectangles contained in multiple clipping rectangles. (gxcpath.c)
+
+Speeds up the handling of 90 degree rotated gray-scale images. (gximage2.c)
+
+Enhances the band list so that it can contain commands for a range of bands,
+not just a single band or all bands. (gxcldev.h, gxclist.h, gxclbits.c,
+gxclist.c, gxclread.c)
+
+Adds an operation to the DDA structure, for eventual support of clipped
+images. (gxdda.h)
+
+Factors out some macros useful for generating bit-transformation tables.
+(gsbittab.h, gsbittab.c, gsflip.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.10"></a>Version 4.10 (limited) (9/25/96)</h2>
+
+<p>
+This release adds local garbage collection, and a number of performance
+improvements for garbage collection in general. We will support it for one
+or two OEMs, but it is not a public release.
+
+<h3><a name="V4.10_Documentation"></a>Documentation</h3><pre>
+
+Moves documentation for all releases before 4.0 to history3.txt. (NEWS,
+history3.txt)
+
+</pre><h3><a name="V4.10_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - pdf2dsc.ps didn't have a proper license notice. (pdf2dsc.ps)
+
+</pre><h3><a name="V4.10_Drivers"></a>Drivers</h3><pre>
+
+Adds a psgray driver, like psmono, to produce 8-bit gray PostScript (level
+1) images. (devs.mak, *.mak, gdevpsim.c)
+
+Changes the psmono driver to allow runs of up to 255 repeated bytes.
+(gdevpsim.c)
+
+</pre><h3><a name="V4.10_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - setdevice erased the page even if this wasn't necessary.
+(zdevice.c)
+
+Speeds up the garbage collector, primarily by speeding up pointer
+relocation. (int.mak, ipacked.h, iref.h, ialloc.c, igc.c, igcref.c)
+
+Actually implements local garbage collection. (igc.h, ivmspace.h, igc.c,
+igcref.c, igcstr.c, ireclaim.c)
+
+Adds some additional error checking for the -Z? switch. (ilocate.c)
+
+Moves a utility for color mapping from the interpreter to the library.
+(icolor.h, zcolor.c)
+
+Adds a MinScreenLevels user parameter. (zusparam.c)
+
+</pre><h3><a name="V4.10_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Adds partial support for the PDF 1.2 gs operator, reverse engineered from a
+PDF 1.2 file. (pdf_draw.ps)
+
+</pre><h3><a name="V4.10_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The test for "thin" stroked lines incorrectly claimed some
+non-thin lines were thin. (gxstroke.c)
+ - The computations for halftone cells didn't work for non-square
+pixels. (gxdht.h, gsht.c, gsht1.c, gshtscr.c)
+
+Speeds up the garbage collector a little. (gsstruct.h, gxalloc.h,
+gxfcache.h, gsfont.c)
+
+Replaces references to private statically allocated color spaces with
+references to shared dynamically allocated ones, which are guaranteed to be
+fully filled-in. (gscie.c)
+
+Moves a utility for color mapping from the interpreter to the library.
+(gxfmap.h, gxcmap.c)
+
+Makes available an imager analogue of setmatrix. (gscoord.h, gscoord.c)
+
+Adds a parameter to control the minimum number of halftone screen levels.
+If a halftone cell has fewer pixels than this number, it will be replicated
+(similar to what AccurateScreens does) until the replicated screen has
+enough levels. (gxht.h, gshtscr.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version4.03"></a>Version 4.03 (9/23/96)</h2>
+
+<p>
+This was an emergency re-release of 4.02 to fix the stdin redirection
+problem. It has essentially no other changes.
+
+<h3><a name="V4.03_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Solaris 2.x has /usr/ucb/install, not installbsd. (make.txt)
+
+Updates current.txt to mention the ability to share libpng and libgz.
+(current.txt)
+
+</pre><h3><a name="V4.03_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A rule assumed that the makefile was named `makefile'.
+(unixtail.mak)
+
+</pre><h3><a name="V4.03_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The stcolor drivers had an off-by-1 error that could cause them to
+write into unallocated memory. (gdevstc.c)
+ - The Imagen driver wouldn't compile with gcc. (gdevimgn.c)
+
+</pre><h3><a name="V4.03_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The Solaris fontmap had gotten out of date. (Fontmap.Sol)
+
+</pre><h3><a name="V4.03_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The test for stdin being non-seekable could leave the file error
+flag set, which caused an infinite loop when trying to read from the file
+later. (sfile.c, sfileno.c)
+
+</pre>
+
+<h2><a name="Version4.02"></a>Version 4.02 (9/19/96)</h2>
+
+<p>
+This release fixes a few more bugs, and adds the ability to read encrypted
+PDF files and some PDF 1.2 files.
+
+<p>
+This release was withdrawn after a few days because the stdin redirection
+fix, which was made at the last minute, cause Ghostview to hang.
+
+<h3><a name="V4.02_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The list of required support files was incorrect. (install.txt)
+ - The descriptions of file name lookup weren't accurate. (use.txt)
+ - A J should have been an H. (gxbitmap.h)
+
+Updates the documentation about encrypted PDF files. (new-user.txt)
+
+Documents what the 13 base PDF fonts are. (ps2pdf.txt)
+
+Fixes a tiny typo. (c-style.txt)
+
+Adds a user-contributed man page for the new pdf2dsc script. (pdf2dsc.1)
+
+Updates the government restricted rights notice in the Aladdin Ghostscript
+Free Public License. (PUBLIC)
+
+Adds the URL of test files to the bug report form. (new-user.txt)
+
+Puts the bug reporting form in a separate file. (readme, bug-form.txt,
+new-user.txt)
+
+Notes that map_xxx_color procedures should not return gx_no_color_index.
+(drivers.txt)
+
+Notes that Ghostscript supports the Flate filters. (language.txt)
+
+Documents the use of the system libpng and zlib. (make.txt, gs.mak)
+
+Notes that Borland C++ 5.0 and 5.01 will not compile Ghostscript correctly.
+(make.txt)
+
+</pre><h3><a name="V4.02_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Using both DELAYBIND and SAFER caused problems. (pstotext uses
+DELAYBIND.) (gs_init.ps)
+
+</pre><h3><a name="V4.02_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Some pdf2ps machinery interfered with the PDF interpreter.
+(pdf_2ps.ps, pdf_main.ps)
+ - In the output of pdf2ps, page numbers in link destinations were
+too high by 1. (pdf_main.ps)
+ - viewpbm didn't handle value ranges other than [0..255] correctly.
+(viewpbm.ps)
+
+Adds a user-contributed shell script to invoke pdf2dsc.ps. (pdf2dsc,
+unix-end.mak)
+
+Adds a switch to the genconf utility to set the prefix for generated
+procedure names. (genconf.c)
+
+Adds the option of using system libraries (possibly shared) for libpng
+and/or zlib. (*head.mak, msc*.mak, os2.mak, tccommon.mak, wccommon.mak;
+libpng.mak, zlib.mak)
+
+</pre><h3><a name="V4.02_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X11 display devices ignored the -DA4 compile-time option.
+(gdevx.c)
+ - The garbage collector could scramble the state of the CGM drivers.
+(gxdevice.h, gdevcgm.c)
+ - An identifier of more than 31 characters upset the VAX DEC C
+compiler. (gdevcgml.h, gdevcgml.c)
+ - In case of an error in trying to set the CoreDistVersion distiller
+parameter, a variable could be used without initialization. (gdevpdfp.c)
+ - When DEBUG is selected, the X Windows driver referenced _Xdebug,
+which is not defined in (at least the VMS version of) DECWindows. (x_.h,
+gdevxini.c)
+ - Some map_cmyk_color implementations could return "transparent".
+(gdevbit.c)
+ - Setting GraphicsAlphaBits or TextAlphaBits in the P*M drivers
+caused an error. (gdevpbm.c)
+ - If a user cancelled printing under MS Windows, a confusing error
+resulted, and a temporary file wasn't deleted. (gdevwpr2.c)
+ - The map_color_rgb procedure for the bit devices produced incorrect
+results. (This probably had no effect in practice.) (gdevbit.c)
+ - The os2prn device produced incorrect output. (gdevos2p.c)
+ - The OS/2 PM device didn't detect PM applications correctly.
+(gdevpm.c)
+ - The MS Windows printer driver didn't automatically detect the
+printer's color capabilities. (gdevwpr2.c)
+ - The BJC-610 driver didn't print at 720 dpi. (gdevcdj.c)
+ - The static prototypes of many devices didn't include the far_data
+keyword. (gdev3852.c, gdev4081.c, gdevbgi.c, gdevcgm.c, gdevht.c,
+gdevimgn.c, gdevl256.c, gdevmrop.c, gdevn533.c, gdevnfwd.c, gdevnp6.c,
+gdevo182.c, gdevpcfb.c, gdevpdf.c, gdevpe.c, gdevpm.c, gdevs3ga.c,
+gdevsnfb.c, gdevsppr.c, gdevsun.c, gdevsvga.c, gdevtknk.c, gdevvglb.c,
+gdevwddb.c, gdevwprn.c, gdevx.c, gdevxalt.c)
+ - The (original) deskjet driver collapsed print lines towards the
+left margin. (gdevdjet.c)
+
+Adds to the pgm/pgnm/ppm/pnm[raw] drivers the ability to set the maximum
+pixel value, by setting any of the Gray/Red/Green/BlueValues device
+parameters. (gdevpbm.c)
+
+Adds pkm[raw] drivers, which do all their internal computations in CMYK and
+convert the data to RGB as they write the file. (gdevpbm.c)
+
+</pre><h3><a name="V4.02_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS script referred to old versions of the third-party
+libraries. (vms.mak)
+ - Under VMS with DEC C, attempting to open a new file fails.
+(gp_vms.c)
+ - If you tried to print (gp_printfile) under Windows on a system
+with no printers installed, Ghostscript caused a GPF. (gp_mswin.c)
+
+Restores support for a non-DLL MS Windows platform. (bcwin32.mak,
+dwnodll.cpp)
+
+Adds a new MS Windows DLL call, gsdll_get_bitmap. (gsdll16.def,
+gsdll32.def, dll.txt, gdevwdib.c)
+
+Fixes a variety of other small Windows- and OS/2-related problems, mostly
+related to printing. (gp_mswin.h, dpmainc.c, dwmain.cpp, dwmainc.cpp,
+gdevmswn.c, gdevpm.c, gdevwpr2.c, gp_mswin.c)
+
+</pre><h3><a name="V4.02_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The value of /newerror in $error was true at the end of
+initialization. We now reset it after each internal use of stopped if
+necessary. (gs_dps1.ps, gs_fform.ps, gs_fonts.ps, gs_init.ps, gs_pdf.ps,
+gs_res.ps, gs_type1.ps)
+ - setpagedevice (and finddevice) didn't recognize Default.
+(gs_init.ps)
+ - When running with -dNODISPLAY, calling gssetresolution would cause
+a crash. (gs_init.ps)
+ - A particular combination of save, .forgetsave, and garbage
+collection could cause a memory access error in restore. (isave.c)
+ - Some references to systemdict were affected if a user redefined
+the name /systemdict. (gs_cmdl.ps, gs_fonts.ps, gs_kanji.ps, gs_dps1.ps,
+gs_init.ps, gs_res.ps, gs_statd.ps, gs_type1.ps)
+ - The insideness testing operators caused an invalid memory access.
+(drivers.txt, zupath.c)
+ - If a readline reached an input buffer boundary between the \r and
+\n of a 2-character EOL, an error could occur. (zfileio.c)
+ - setdevparams caused an error. (gs_lev2.ps)
+
+Changes file names beginning with ./ or ../ so they are recognized as
+"absolute" and not subject to the search path. (gp_dosfs.c, gp_ntfs.c,
+gp_os2.c, gp_unifn.c)
+
+Changes the exit code for -h or --help from 0 to 1, so an invoking program
+will keep the output around for the user to look at. (imainarg.c)
+
+Adds the FlateEncode and FlateDecode filters; adds PNG pixel prediction to
+the LZW filters. These additions are required for PDF 1.2 and will be part
+of PostScript Level 3. (int.mak, lib.mak, zfdecode.c, zfilter2.c, zfzlib.c,
+zfpngp.c [deleted])
+
+</pre><h3><a name="V4.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The copyright notices on some files didn't mention the Aladdin
+free license. (pdf_*.ps)
+ - Some references to systemdict were affected if a user redefined
+the name /systemdict. (pdf_font.ps)
+ - The value of /newerror in $error was true at the end of
+initialization. We now reset it after each internal use of stopped if
+necessary. (pdf_main.ps)
+ - stdin redirection failed for PDF files even if the new stdin was
+seekable. (pdf_main.ps)
+ - The Rotate key rotated pages in the wrong direction.
+(pdf_main.ps)
+
+Adds a minimal "security socket" to the interpreter. This does not include
+any actual decryption code; such code is available elsewhere (see
+new-user.txt). (int.mak, pdf_base.ps, pdf_main.ps, pdf_sec.ps)
+
+Adds a PDF 1.2 capability:
+ - The destination in a Dest array can be a page number as well as a
+page object. (pdf_main.ps)
+
+</pre><h3><a name="V4.02_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - stdin was assumed to be non-seekable. (sfile.c, sfileno.c)
+
+</pre><h3><a name="V4.02_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Garbage collection could corrupt a pointer in Type 0 fonts.
+(gxfont0.h, gsfont0.c)
+ - When applying hints to a Type 1 font outline, the last point could
+sometimes get moved twice, causing output anomalies. (gxhint3.c)
+ - An #include needed for debugging was missing. (gxcmap.h)
+ - Graphics states included a no-longer-used private color space
+object. (gsstate.c)
+ - Images could get clipped randomly in the X direction. (I don't
+understand why this problem hasn't shown up more often, since it's been
+there since release 4.00.) (gximage.c)
+ - The arct and arcto operators failed to draw the line to the
+starting point of the arc. (bug introduced in 4.01) (gspath1.c)
+ - Prefix subclasses of simple structures caused an invalid memory
+access. (gsstruct.h)
+ - The variable fheight was sometimes unused. (gstype1.c)
+ - igcd and imod didn't have prototypes in an appropriate header
+file, and were declared extern in several places. (gsdcolor.h, gsline.h,
+gxarith.h, gxdht.h, gsht.c, gshtscr.c, gsimage.c, gsline.c, gstype1.c,
+gxclimag.c)
+ - When using a non-identity RenderTable in a CIE rendering
+dictionary, all colors came out too light. (gscie.c)
+ - When using anti-aliased graphics, stroked lines were rendered too
+thin. (gspaint.c)
+ - The default map_cmyk_color implementations could return
+"transparent". (gxcmap.c)
+ - The number of bits of alpha requested when rendering anti-aliased
+characters could exceed 4. (gschar.c)
+ - Multi-screen halftones could cause errors or infinite looping when
+banding. (This problem predates 4.0; I don't know why it didn't show up
+before.) (gxcldev.h, gxclist.c, gxclread.c)
+ - Skewed or rotated gray-scale images, or masks with a halftoned
+color, omitted one line of pixels and displaced the image by one pixel.
+(gximage2.c)
+
+Adds an implementation of realloc, for systems that don't have one that
+works. I don't know how to determine this automatically, so for the moment,
+the code uses our own implementation on GNU/Linux (where realloc is known to be
+broken, at least in some releases) and nowhere else. (malloc_.h,
+gsmemory.c, gsmisc.c)
+
+Removes the "OLD" algorithms from the Type 1 hinting source code, since they
+are no longer executed. (If necessary, they can be retrieved from an older
+version.) (gxhint3.c)
+
+</pre>
+
+<h2><a name="Version4.01"></a>Version 4.01 (7/10/96)</h2>
+
+<p>
+This fixes a few minor bugs discovered since the 4.0 release.
+
+<h3><a name="V4.01_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - An installation directory name was wrong. (make.txt,
+unix-lpr.txt)
+ - A URL was wrong. (devices.txt)
+ - A reference to use.doc hadn't been updated. (gs.1)
+ - Some references to /usr/local/lib hadn't been updated. (gs.1)
+ - The NEWS file and history* files still referred to *.doc rather
+than *.txt. (NEWS, history*.txt)
+
+Adds a note about compilation on Digital Unix. (make.txt)
+
+Clarifies that calling gs_exit calls gs_finit automatically. (imain.h)
+
+Adds a pointer to the PDF encryption patch. (Ridiculous U.S. export control
+laws don't allow including the patch itself in the main fileset.)
+(new-user.txt)
+
+Adds a help file for VMS. (gs-vms.hlp)
+
+</pre><h3><a name="V4.01_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - vms.mak had gotten out of sync with the makefiles (again).
+(vms.mak)
+ - DEVICE{WIDTH,HEIGHT}POINTS didn't override PAPERSIZE.
+(gs_init.ps)
+ - The Microsoft C makefiles had gotten out of date. (msc.mak)
+
+The (few) GNU-Licensed drivers were accidentally omitted from the fileset.
+
+Modifies a makefile for greater reusability. (watclib.mak)
+
+Adds a 'debug' target for making Unix debugging configurations.
+(unix-end.mak)
+
+</pre><h3><a name="V4.01_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Some uses of 'run' should be changed to runlibfile. (bdftops.ps,
+impath.ps, markhint.ps, packfile.ps, showchar.ps, waterfal.ps, wftopfa.ps,
+wrfont.ps)
+ - Some debugging code hadn't been removed. (gslp.ps)
+
+Adds a new utility, viewcmyk.ps, for viewing 4-bit CMYK data. (psfiles.txt,
+unix-end.mak, viewcmyk.ps)
+
+Improves pdf2dsc by including Title and CreationDate DSC comments (these are
+displayed by Ghostview) and reducing the size of typical output files by a
+factor of about 3. (pdf2dsc.ps)
+
+Incorporates major changes (claimed to be improvements) to ps2ascii
+contributed by a user. If you have problems with it, please contact him,
+not Aladdin. (ps2ascii.ps)
+
+</pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The X value of a bounding box could be computed incorrectly.
+(gdevbbox.c)
+
+</pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows DLL sometimes didn't clean up properly. (dll.txt,
+dpmainc.c, dwdll.cpp, dwmain.cpp, dwmainc.cpp, gsdll.c, gsdll.h)
+
+</pre><h3><a name="V4.01_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Reading from a filter could hang forever, because a buffer was
+allocated 1 byte too small. (zfilter.c)
+ - The search path could become garbage under some circumstances.
+(imain.c)
+ - A dangling reference to a stack-allocated variable could corrupt
+memory if a client mixed interpreter calls and direct C calls. (interp.c)
+ - Printing an object to a procedure-based filter could cause an
+invalid memory access. (zfileio.c)
+
+</pre><h3><a name="V4.01_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Setting parameters for an unopened device could cause an access
+error or invoke the wrong put_params procedure. (gsdparam.c)
+ - Reading from a filter could hang forever, because a buffer was
+allocated 1 byte too small. (stream.h)
+ - If the current device was the nullpage device, doing a [g]save,
+selecting a different device, and doing a [g]restore caused an error.
+(gsdparam.c)
+
+Adds the ability to append arcs without the initial lineto, for PCL
+emulation. (gspath.h, gspath1.c)
+
+</pre>
+
+<h2><a name="Version4.0"></a>Version 4.0 (6/28/96)</h2>
+
+<p>
+This is the first public release since 3.53, with a few more last-minute
+patches beyond 3.70.
+
+<h3><a name="V4.0_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Many makefiles still referred to .doc files rather than .txt.
+(cfonts.mak, devs.mak, gs.mak, int.mak, libpng.mak, unix-end.mak, watc.mak,
+watcwin.mak, wccommon.mak, zlib.mak)
+ - Some FONTPATH-related information was out of date. (use.txt)
+ - The installation directory for fonts was incorrect. (install.txt)
+ - The libpng and zlib versions were out of date. (libpng.mak,
+zlib.mak)
+ - Some information about GSview was incorrect or incomplete.
+(new-user.txt)
+ - make.txt said it described installation as well as building.
+(make.txt)
+
+Notes that the current release of zlib won't compile and link correctly with
+Sun cc. (make.txt)
+
+Adds a little more detail to the C style document. (c-style.txt)
+
+</pre><h3><a name="V4.0_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some documentation files weren't installed. (unix-end.mak)
+ - Some dependencies were incorrect. (bcwin32.mak)
+ - 'make begin' and 'make clean' deleted too many and/or the wrong
+files. (bcwin.mak, bcwin32.mak)
+ - libpng.mak didn't work with libpng version 0.89c. (libpng.mak)
+ - -d&lt;var&gt;=&lt;name&gt; was equivalent to -d&lt;var&gt;=/&lt;name&gt;, and there was no
+way to set a variable to true, false, or null. (use.txt, gs_init.ps,
+iinit.c, imainarg.c)
+
+Removes the modules.lis file, which is no longer used.
+
+Undoes detecting automatically the need to run tar_cat -- the mechanism
+didn't work, and caused confusion. (unix-end.mak)
+
+Updates the makefiles to libpng version 0.89, but allows them to work with
+either 0.88 or 0.89. (*.mak)
+
+</pre><h3><a name="V4.0_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Showing the details of a protected font caused an error.
+(markhint.ps)
+
+</pre><h3><a name="V4.0_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A copyright notice was wrong. (gs_pdfwr.ps)
+ - PDF link annotations could get written with two Dest keys.
+(gdevpdfm.c)
+ - MakeProcInstance and FreeProcInstance were called on platforms
+where it wasn't appropriate. (gdevwpr2.c, gdevwprn.c, gp_mswin.c)
+ - On X servers that return very large values for the "virtual
+screen" size in millimeters but correct values for the screen size in
+pixels, a rangecheck could occur. (gdevxini.c)
+ - The bounding box device could return garbage if stroke or fill was
+ever invoked with an empty path. (gdevbbox.c)
+
+Replaces the LBP8 driver with a revised one contributed by a user.
+(gdevlbp8.c, devs.mak)
+
+</pre><h3><a name="V4.0_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Some Windows menu parameters were incorrect. (gsdll16.rc,
+gsdll32.rc)
+
+</pre><h3><a name="V4.0_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - .getdevparams sometimes returned duplicate entries for /Type.
+(ziodev2.c)
+ - File names weren't parsed or concatenated properly on all
+platforms. (gs_fonts.ps, zfile.c)
+ - Filter lookahead caused problems with special files. (zfproc.c)
+ - If a TransformPQR procedure in a CIE color rendering dictionary
+didn't pop its 4 array arguments, an error occurred. (gs_lev2.ps, zcrd.c)
+
+</pre><h3><a name="V4.0_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Filter lookahead caused problems with special files. (bug
+introduced in 3.70) (stream.h)
+
+</pre><h3><a name="V4.0_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - .getdevparams sometimes returned duplicate entries for /Type.
+(gxiodev.h, gsiodev.c)
+
+</pre>
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/History5.htm b/Master/xemtex/doc/ghostscript/History5.htm
new file mode 100644
index 00000000000..ec62a06d68d
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History5.htm
@@ -0,0 +1,13454 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>History of Ghostscript versions 5.n</title>
+<!-- $Id: History5.htm,v 1.15.2.11.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!--
+ WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
+ re-create the table of contents here, because it will replace the
+ hand-edited TOC subheads with a separate subhead for each H2 in
+ the body of the file. Or if you do, first look at the original
+ TOC to see how to edit it for visual conciseness.
+-->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>History of Ghostscript versions 5.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version5.99">Version 5.99 (beta) (1999-12-18)</a>
+<ul>
+<li><a href="#5.99_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.99_Documentation">Documentation</a>,
+ <a href="#5.99_Procedures">Procedures</a>,
+ <a href="#5.99_Utilities">Utilities</a>,
+ <a href="#5.99_Drivers">Drivers</a>,
+ <a href="#5.99_Platforms">Platforms</a>,
+ <a href="#5.99_Fonts">Fonts</a>,
+ <a href="#5.99_PDF_writer">PDF writer</a>,
+ <a href="#5.99_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.99_Interpreter">Interpreter</a>,
+ <a href="#5.99_Streams">Streams</a>,
+ <a href="#5.99_Library">Library</a>
+</ul>
+<li><a href="#Version5.98">Version 5.98 (beta) (1999-12-01)</a>
+<ul>
+<li><a href="#5.98_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.98_Documentation">Documentation</a>,
+ <a href="#5.98_Procedures">Procedures</a>,
+ <a href="#5.98_Utilities">Utilities</a>,
+ <a href="#5.98_Drivers">Drivers</a>,
+ <a href="#5.98_Fonts">Fonts</a>,
+ <a href="#5.98_PDF_writer">PDF writer</a>,
+ <a href="#5.98_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.98_Interpreter">Interpreter</a>,
+ <a href="#5.98_Streams">Streams</a>,
+ <a href="#5.98_Library">Library</a>
+</ul>
+<li><a href="#Version5.97">Version 5.97 (beta) (11/22/99)</a>
+<ul>
+<li><a href="#5.97_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.97_Documentation">Documentation</a>,
+ <a href="#5.97_Procedures">Procedures</a>,
+ <a href="#5.97_Utilities">Utilities</a>,
+ <a href="#5.97_Drivers">Drivers</a>,
+ <a href="#5.97_Platforms">Platforms</a>,
+ <a href="#5.97_PDF_writer">PDF writer</a>,
+ <a href="#5.97_Interpreter">Interpreter</a>,
+ <a href="#5.97_Library">Library</a>
+</ul>
+<li><a href="#Version5.96">Version 5.96 (beta) (11/12/99)</a>
+<ul>
+<li><a href="#5.96_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.96_Documentation">Documentation</a>,
+ <a href="#5.96_Procedures">Procedures</a>,
+ <a href="#5.96_Utilities">Utilities</a>,
+ <a href="#5.96_Drivers">Drivers</a>,
+ <a href="#5.96_Platforms">Platforms</a>,
+ <a href="#5.96_PDF_writer">PDF writer</a>,
+ <a href="#5.96_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.96_Interpreter">Interpreter</a>,
+ <a href="#5.96_Streams">Streams</a>,
+ <a href="#5.96_Library">Library</a>
+</ul>
+<li><a href="#Version5.95">Version 5.95 (beta) (11/1/99)</a>
+<ul>
+<li><a href="#5.95_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.95_Documentation">Documentation</a>,
+ <a href="#5.95_Procedures">Procedures</a>,
+ <a href="#5.95_Utilities">Utilities</a>,
+ <a href="#5.95_Drivers">Drivers</a>,
+ <a href="#5.95_Platforms">Platforms</a>,
+ <a href="#5.95_Fonts">Fonts</a>,
+ <a href="#5.95_PDF_writer">PDF writer</a>,
+ <a href="#5.95_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.95_Interpreter">Interpreter</a>,
+ <a href="#5.95_Library">Library</a>
+</ul>
+<li><a href="#Version5.94">Version 5.94 (beta) (9/30/99)</a>
+<ul>
+<li><a href="#5.94_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.94_Documentation">Documentation</a>,
+ <a href="#5.94_Procedures">Procedures</a>,
+ <a href="#5.94_Utilities">Utilities</a>,
+ <a href="#5.94_Drivers">Drivers</a>,
+ <a href="#5.94_Platforms">Platforms</a>,
+ <a href="#5.94_Fonts">Fonts</a>,
+ <a href="#5.94_PDF_writer">PDF writer</a>,
+ <a href="#5.94_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.94_Interpreter">Interpreter</a>,
+ <a href="#5.94_Streams">Streams</a>,
+ <a href="#5.94_Library">Library</a>
+</ul>
+<li><a href="#Version5.93">Version 5.93 (beta) (9/11/99)</a>
+<ul>
+<li><a href="#5.93_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.93_Documentation">Documentation</a>,
+ <a href="#5.93_Procedures">Procedures</a>,
+ <a href="#5.93_Utilities">Utilities</a>,
+ <a href="#5.93_Drivers">Drivers</a>,
+ <a href="#5.93_Platforms">Platforms</a>,
+ <a href="#5.93_PDF_writer">PDF writer</a>,
+ <a href="#5.93_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.93_Interpreter">Interpreter</a>,
+ <a href="#5.93_Streams">Streams</a>,
+ <a href="#5.93_Library">Library</a>
+</ul>
+<li><a href="#Version5.92">Version 5.92 (beta) (9/2/99)</a>
+<ul>
+<li><a href="#5.92_Documentation">Documentation</a>,
+ <a href="#5.92_Procedures">Procedures</a>,
+ <a href="#5.92_Utilities">Utilities</a>,
+ <a href="#5.92_Drivers">Drivers</a>,
+ <a href="#5.92_PDF_writer">PDF writer</a>,
+ <a href="#5.92_Interpreter">Interpreter</a>,
+ <a href="#5.92_Streams">Streams</a>
+</ul>
+<li><a href="#Version5.91">Version 5.91 (beta) (8/30/99)</a>
+<ul>
+<li><a href="#5.91_Documentation">Documentation</a>,
+ <a href="#5.91_Utilities">Utilities</a>,
+ <a href="#5.91_Drivers">Drivers</a>,
+ <a href="#5.91_Platforms">Platforms</a>,
+ <a href="#5.91_Fonts">Fonts</a>,
+ <a href="#5.91_PDF_writer">PDF writer</a>,
+ <a href="#5.91_Library">Library</a>
+</ul>
+<li><a href="#Version5.90">Version 5.90 (beta) (8/20/99)</a>
+<ul>
+<li><a href="#5.90_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.90_Documentation">Documentation</a>,
+ <a href="#5.90_Procedures">Procedures</a>,
+ <a href="#5.90_Utilities">Utilities</a>,
+ <a href="#5.90_Drivers">Drivers</a>,
+ <a href="#5.90_Platforms">Platforms</a>,
+ <a href="#5.90_Fonts">Fonts</a>,
+ <a href="#5.90_PDF_writer">PDF writer</a>,
+ <a href="#5.90_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.90_Interpreter">Interpreter</a>,
+ <a href="#5.90_Streams">Streams</a>,
+ <a href="#5.90_Library">Library</a>
+</ul>
+<li>(Version 5.89 deliberately omitted.)
+<li><a href="#Version5.88">Version 5.88 (tester) (8/3/99)</a>
+<ul>
+<li><a href="#5.88_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.88_Documentation">Documentation</a>,
+ <a href="#5.88_Procedures">Procedures</a>,
+ <a href="#5.88_Drivers">Drivers</a>,
+ <a href="#5.88_Platforms">Platforms</a>,
+ <a href="#5.88_Fonts">Fonts</a>,
+ <a href="#5.88_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.88_Interpreter">Interpreter</a>,
+ <a href="#5.88_Streams">Streams</a>,
+ <a href="#5.88_Library">Library</a>
+</ul>
+<li><a href="#Version5.87">Version 5.87 (tester) (6/29/99)</a>
+<ul>
+<li><a href="#5.87_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.87_Documentation">Documentation</a>,
+ <a href="#5.87_Procedures">Procedures</a>,
+ <a href="#5.87_Drivers">Drivers</a>,
+ <a href="#5.87_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.87_Interpreter">Interpreter</a>,
+ <a href="#5.87_Library">Library</a>
+</ul>
+<li><a href="#Version5.86">Version 5.86 (tester) (6/14/99)</a>
+<ul>
+<li><a href="#5.86_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.86_Documentation">Documentation</a>,
+ <a href="#5.86_Procedures">Procedures</a>,
+ <a href="#5.86_Utilities">Utilities</a>,
+ <a href="#5.86_Drivers">Drivers</a>,
+ <a href="#5.86_Platforms">Platforms</a>,
+ <a href="#5.86_Fonts">Fonts</a>,
+ <a href="#5.86_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.86_Interpreter">Interpreter</a>,
+ <a href="#5.86_Streams">Streams</a>,
+ <a href="#5.86_Library">Library</a>
+</ul>
+<li><a href="#Version5.85">Version 5.85 (tester) (5/29/99)</a>
+<ul>
+<li><a href="#5.85_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.85_Documentation">Documentation</a>,
+ <a href="#5.85_Procedures">Procedures</a>,
+ <a href="#5.85_Utilities">Utilities</a>,
+ <a href="#5.85_Drivers">Drivers</a>,
+ <a href="#5.85_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.85_Interpreter">Interpreter</a>,
+ <a href="#5.85_Library">Library</a>
+</ul>
+<li><a href="#Version5.84">Version 5.84 (tester) (5/19/99)</a>
+<ul>
+<li><a href="#5.84_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.84_Procedures">Procedures</a>,
+ <a href="#5.84_Utilities">Utilities</a>,
+ <a href="#5.84_Drivers">Drivers</a>,
+ <a href="#5.84_Platforms">Platforms</a>,
+ <a href="#5.84_Interpreter">Interpreter</a>,
+ <a href="#5.84_Streams">Streams</a>,
+ <a href="#5.84_Library">Library</a>
+</ul>
+<li><a href="#Version5.83">Version 5.83 (tester) (5/13/99)</a>
+<ul>
+<li><a href="#5.83_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.83_Documentation">Documentation</a>,
+ <a href="#5.83_Procedures">Procedures</a>,
+ <a href="#5.83_Utilities">Utilities</a>,
+ <a href="#5.83_Interpreter">Interpreter</a>,
+ <a href="#5.83_Library">Library</a>
+</ul>
+<li><a href="#Version5.82">Version 5.82 (tester) (4/24/99)</a>
+<ul>
+<li><a href="#5.82_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.82_Documentation">Documentation</a>,
+ <a href="#5.82_Procedures">Procedures</a>,
+ <a href="#5.82_Utilities">Utilities</a>,
+ <a href="#5.82_Drivers">Drivers</a>,
+ <a href="#5.82_Platforms">Platforms</a>,
+ <a href="#5.82_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.82_Interpreter">Interpreter</a>,
+ <a href="#5.82_Library">Library</a>
+</ul>
+<li><a href="#Version5.81">Version 5.81 (tester) (4/14/99)</a>
+<ul>
+<li><a href="#5.81_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.81_Procedures">Procedures</a>,
+ <a href="#5.81_Utilities">Utilities</a>,
+ <a href="#5.81_Drivers">Drivers</a>,
+ <a href="#5.81_Fonts">Fonts</a>,
+ <a href="#5.81_Platforms">Platforms</a>,
+ <a href="#5.81_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.81_Interpreter">Interpreter</a>,
+ <a href="#5.81_Library">Library</a>
+</ul>
+<li><a href="#Version5.80">Version 5.80 (tester) (4/6/99)</a>
+<ul>
+<li><a href="#5.80_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.80_Procedures">Procedures</a>,
+ <a href="#5.80_Utilities">Utilities</a>,
+ <a href="#5.80_Drivers">Drivers</a>,
+ <a href="#5.80_Fonts">Fonts</a>,
+ <a href="#5.80_Platforms">Platforms</a>,
+ <a href="#5.80_Interpreter">Interpreter</a>,
+ <a href="#5.80_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.80_Streams">Streams</a>,
+ <a href="#5.80_Library">Library</a>
+</ul>
+<li>(Versions 5.74 - 5.79 deliberately omitted.)
+<li><a href="#Version5.73">Version 5.73 (tester) (3/19/99)</a>
+<ul>
+<li><a href="#5.73_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.73_Documentation">Documentation</a>,
+ <a href="#5.73_Procedures">Procedures</a>,
+ <a href="#5.73_Drivers">Drivers</a>,
+ <a href="#5.73_Interpreter">Interpreter</a>,
+ <a href="#5.73_Library">Library</a>
+</ul>
+<li><a href="#Version5.72">Version 5.72 (tester) (3/17/99)</a>
+<ul>
+<li><a href="#5.72_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.72_Documentation">Documentation</a>,
+ <a href="#5.72_Procedures">Procedures</a>,
+ <a href="#5.72_Utilities">Utilities</a>,
+ <a href="#5.72_Drivers">Drivers</a>,
+ <a href="#5.72_Fonts">Fonts</a>,
+ <a href="#5.72_Interpreter">Interpreter</a>,
+ <a href="#5.72_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.72_Streams">Streams</a>,
+ <a href="#5.72_Library">Library</a>
+</ul>
+<li><a href="#Version5.71">Version 5.71 (tester) (3/3/99)</a>
+<ul>
+<li><a href="#5.71_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.71_Documentation">Documentation</a>,
+ <a href="#5.71_Procedures">Procedures</a>,
+ <a href="#5.71_Utilities">Utilities</a>,
+ <a href="#5.71_Drivers">Drivers</a>,
+ <a href="#5.71_Fonts">Fonts</a>,
+ <a href="#5.71_Interpreter">Interpreter</a>,
+ <a href="#5.71_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.71_Streams">Streams</a>,
+ <a href="#5.71_Library">Library</a>
+</ul>
+<li><a href="#Version5.70">Version 5.70 (internal) (2/20/99)</a>
+<ul>
+<li><a href="#5.70_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.70_Documentation">Documentation</a>,
+ <a href="#5.70_Procedures">Procedures</a>,
+ <a href="#5.70_Utilities">Utilities</a>,
+ <a href="#5.70_Drivers">Drivers</a>,
+ <a href="#5.70_Fonts">Fonts</a>,
+ <a href="#5.70_Interpreter">Interpreter</a>,
+ <a href="#5.70_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.70_Streams">Streams</a>,
+ <a href="#5.70_Library">Library</a>
+</ul>
+<li><a href="#Version5.69">Version 5.69 (internal) (2/4/99)</a>
+<ul>
+<li><a href="#5.69_Procedures">Procedures</a>,
+ <a href="#5.69_Utilities">Utilities</a>,
+ <a href="#5.69_Drivers">Drivers</a>,
+ <a href="#5.69_Interpreter">Interpreter</a>,
+ <a href="#5.69_Streams">Streams</a>,
+ <a href="#5.69_Library">Library</a>
+</ul>
+<li><a href="#Version5.68">Version 5.68 (internal) (1/29/99)</a>
+<ul>
+<li><a href="#5.68_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.68_Documentation">Documentation</a>,
+ <a href="#5.68_Procedures">Procedures</a>,
+ <a href="#5.68_Utilities">Utilities</a>,
+ <a href="#5.68_Drivers">Drivers</a>,
+ <a href="#5.68_Fonts">Fonts</a>,
+ <a href="#5.68_Platforms">Platforms</a>,
+ <a href="#5.68_Interpreter">Interpreter</a>,
+ <a href="#5.68_Streams">Streams</a>,
+ <a href="#5.68_Library">Library</a>
+</ul>
+<li><a href="#Version5.67">Version 5.67 (internal) (1/8/99)</a>
+<ul>
+<li><a href="#5.67_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.67_Documentation">Documentation</a>,
+ <a href="#5.67_Procedures">Procedures</a>,
+ <a href="#5.67_Utilities">Utilities</a>,
+ <a href="#5.67_Drivers">Drivers</a>,
+ <a href="#5.67_Fonts">Fonts</a>,
+ <a href="#5.67_Interpreter">Interpreter</a>,
+ <a href="#5.67_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.67_Streams">Streams</a>,
+ <a href="#5.67_Library">Library</a>
+</ul>
+<li><a href="#Version5.66">Version 5.66 (internal) (11/25/98)</a>
+<ul>
+<li><a href="#5.66_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.66_Documentation">Documentation</a>,
+ <a href="#5.66_Procedures">Procedures</a>,
+ <a href="#5.66_Utilities">Utilities</a>,
+ <a href="#5.66_Drivers">Drivers</a>,
+ <a href="#5.66_Platforms">Platforms</a>,
+ <a href="#5.66_Interpreter">Interpreter</a>,
+ <a href="#5.66_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.66_Streams">Streams</a>,
+ <a href="#5.66_Library">Library</a>
+</ul>
+<li><a href="#Version5.65">Version 5.65 (internal) (11/13/98)</a>
+<ul>
+<li><a href="#5.65_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.65_Documentation">Documentation</a>,
+ <a href="#5.65_Procedures">Procedures</a>,
+ <a href="#5.65_Utilities">Utilities</a>,
+ <a href="#5.65_Drivers">Drivers</a>,
+ <a href="#5.65_Platforms">Platforms</a>,
+ <a href="#5.65_Interpreter">Interpreter</a>,
+ <a href="#5.65_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.65_Library">Library</a>
+</ul>
+<li><a href="#Version5.64">Version 5.64 (internal) (11/5/98)</a>
+<ul>
+<li><a href="#5.64_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.64_Documentation">Documentation</a>,
+ <a href="#5.64_Procedures">Procedures</a>,
+ <a href="#5.64_Drivers">Drivers</a>,
+ <a href="#5.64_Library">Library</a>
+</ul>
+<li><a href="#Version5.63">Version 5.63 (internal) (11/4/98)</a>
+<ul>
+<li><a href="#5.63_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.63_Documentation">Documentation</a>,
+ <a href="#5.63_Procedures">Procedures</a>,
+ <a href="#5.63_Drivers">Drivers</a>,
+ <a href="#5.63_Interpreter">Interpreter</a>,
+ <a href="#5.63_Library">Library</a>
+</ul>
+<li><a href="#Version5.62">Version 5.62 (internal) (10/31/98)</a>
+<ul>
+<li><a href="#5.62_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.62_Documentation">Documentation</a>,
+ <a href="#5.62_Drivers">Drivers</a>,
+ <a href="#5.62_Interpreter">Interpreter</a>,
+ <a href="#5.62_Library">Library</a>
+</ul>
+<li><a href="#Version5.61">Version 5.61 (internal) (10/28/98)</a>
+<ul>
+<li><a href="#5.61_Documentation">Documentation</a>,
+ <a href="#5.61_Procedures">Procedures</a>,
+ <a href="#5.61_Utilities">Utilities</a>,
+ <a href="#5.61_Drivers">Drivers</a>,
+ <a href="#5.61_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.61_Streams">Streams</a>,
+ <a href="#5.61_Library">Library</a>
+</ul>
+<li><a href="#Version5.60">Version 5.60 (internal) (10/18/98)</a>
+<ul>
+<li><a href="#5.60_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.60_Documentation">Documentation</a>,
+ <a href="#5.60_Procedures">Procedures</a>,
+ <a href="#5.60_Utilities">Utilities</a>,
+ <a href="#5.60_Drivers">Drivers</a>,
+ <a href="#5.60_Platforms">Platforms</a>,
+ <a href="#5.60_Interpreter">Interpreter</a>,
+ <a href="#5.60_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.60_Streams">Streams</a>,
+ <a href="#5.60_Library">Library</a>
+</ul>
+<li>(Versions 5.51 - 5.59 deliberately omitted.)
+<li><a href="#Version5.50">Version 5.50 (9/16/98)</a>
+<ul>
+<li><a href="#5.50_Documentation">Documentation</a>,
+ <a href="#5.50_Procedures">Procedures</a>,
+ <a href="#5.50_Utilities">Utilities</a>,
+ <a href="#5.50_Drivers">Drivers</a>,
+ <a href="#5.50_Platforms">Platforms</a>,
+ <a href="#5.50_Interpreter">Interpreter</a>,
+ <a href="#5.50_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.50_Library">Library</a>
+</ul>
+<li><a href="#Version5.40">Version 5.40 (beta) (9/10/98)</a>
+<ul>
+<li><a href="#5.40_Documentation">Documentation</a>,
+ <a href="#5.40_Procedures">Procedures</a>,
+ <a href="#5.40_Utilities">Utilities</a>,
+ <a href="#5.40_Drivers">Drivers</a>,
+ <a href="#5.40_Platforms">Platforms</a>,
+ <a href="#5.40_Library">Library</a>
+</ul>
+<li><a href="#Version5.39">Version 5.39 (beta) (9/8/98)</a>
+<ul>
+<li><a href="#5.39_Drivers">Drivers</a>,
+ <a href="#5.39_Library">Library</a>
+</ul>
+<li><a href="#Version5.38">Version 5.38 (beta) (9/3/98)</a>
+<ul>
+<li><a href="#5.38_Documentation">Documentation</a>,
+ <a href="#5.38_Drivers">Drivers</a>,
+ <a href="#5.38_Interpreter">Interpreter</a>,
+ <a href="#5.38_Library">Library</a>
+</ul>
+<li><a href="#Version5.37">Version 5.37 (beta) (8/31/98)</a>
+<ul>
+<li><a href="#5.37_Documentation">Documentation</a>,
+ <a href="#5.37_Procedures">Procedures</a>,
+ <a href="#5.37_Utilities">Utilities</a>,
+ <a href="#5.37_Drivers">Drivers</a>,
+ <a href="#5.37_Fonts">Fonts</a>,
+ <a href="#5.37_Interpreter">Interpreter</a>,
+ <a href="#5.37_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.37_Streams">Streams</a>,
+ <a href="#5.37_Library">Library</a>
+</ul>
+<li><a href="#Version5.36">Version 5.36 (beta) (8/25/98)</a>
+<ul>
+<li><a href="#5.36_Documentation">Documentation</a>,
+ <a href="#5.36_Utilities">Utilities</a>,
+ <a href="#5.36_Drivers">Drivers</a>,
+ <a href="#5.36_Platforms">Platforms</a>,
+ <a href="#5.36_Fonts">Fonts</a>,
+ <a href="#5.36_Interpreter">Interpreter</a>,
+ <a href="#5.36_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.36_Streams">Streams</a>,
+ <a href="#5.36_Library">Library</a>
+</ul>
+<li><a href="#Version5.35">Version 5.35 (beta) (8/18/98)</a>
+<ul>
+<li><a href="#5.35_Documentation">Documentation</a>,
+ <a href="#5.35_Drivers">Drivers</a>,
+ <a href="#5.35_Fonts">Fonts</a>,
+ <a href="#5.35_Interpreter">Interpreter</a>,
+ <a href="#5.35_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.35_Library">Library</a>
+</ul>
+<li><a href="#Version5.34">Version 5.34 (beta) (8/16/98)</a>
+<ul>
+<li><a href="#V5.34_Documentation">Documentation</a>,
+ <a href="#V5.34_Procedures">Procedures</a>,
+ <a href="#V5.34_Drivers">Drivers</a>,
+ <a href="#V5.34_Interpreter">Interpreter</a>,
+ <a href="#V5.34_Library">Library</a>
+</ul>
+<li><a href="#Version5.33">Version 5.33 (beta) (8/14/98)</a>
+<ul>
+<li><a href="#V5.33_Platforms">Platforms</a>,
+ <a href="#V5.33_Fonts">Fonts</a>,
+ <a href="#V5.33_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.33_Library">Library</a>
+</ul>
+<li><a href="#Version5.32">Version 5.32 (beta) (8/13/98)</a>
+<ul>
+<li><a href="#V5.32_Procedures">Procedures</a>,
+ <a href="#V5.32_Interpreter">Interpreter</a>,
+ <a href="#V5.32_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.32_Library">Library</a>
+</ul>
+<li><a href="#Version5.31">Version 5.31 (limited) (8/11/98)</a>
+<ul>
+<li><a href="#V5.31_Drivers">Drivers</a>,
+ <a href="#V5.31_Interpreter">Interpreter</a>,
+ <a href="#V5.31_Library">Library</a>
+</ul>
+<li><a href="#Version5.30">Version 5.30 (limited) (8/10/98)</a>
+<ul>
+<li><a href="#V5.30_Documentation">Documentation</a>,
+ <a href="#V5.30_Procedures">Procedures</a>,
+ <a href="#V5.30_Drivers">Drivers</a>,
+ <a href="#V5.30_Platforms">Platforms</a>,
+ <a href="#V5.30_Fonts">Fonts</a>,
+ <a href="#V5.30_Interpreter">Interpreter</a>,
+ <a href="#V5.30_Streams">Streams</a>,
+ <a href="#V5.30_Library">Library</a>
+</ul>
+<li><a href="#Version5.28">Version 5.28 (limited) (8/3/98)</a>
+<ul>
+<li><a href="#V5.28_Documentation">Documentation</a>,
+ <a href="#V5.28_Procedures">Procedures</a>,
+ <a href="#V5.28_Utilities">Utilities</a>,
+ <a href="#V5.28_Drivers">Drivers</a>,
+ <a href="#V5.28_Platforms">Platforms</a>,
+ <a href="#V5.28_Interpreter">Interpreter</a>,
+ <a href="#V5.28_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.28_Streams">Streams</a>,
+ <a href="#V5.28_Library">Library</a>
+</ul>
+<li><a href="#Version5.27">Version 5.27 (limited) (7/18/98)</a>
+<ul>
+<li><a href="#V5.27_Documentation">Documentation</a>,
+ <a href="#V5.27_Procedures">Procedures</a>,
+ <a href="#V5.27_Drivers">Drivers</a>,
+ <a href="#V5.27_Platforms">Platforms</a>,
+ <a href="#V5.27_Interpreter">Interpreter</a>,
+ <a href="#V5.27_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.27_Library">Library</a>
+</ul>
+<li><a href="#Version5.26">Version 5.26 (limited) (7/7/98)</a>
+<ul>
+<li><a href="#V5.26_Procedures">Procedures</a>,
+ <a href="#V5.26_Drivers">Drivers</a>,
+ <a href="#V5.26_Fonts">Fonts</a>,
+ <a href="#V5.26_Interpreter">Interpreter</a>,
+ <a href="#V5.26_Library">Library</a>
+</ul>
+<li><a href="#Version5.25">Version 5.25 (limited) (7/1/98)</a>
+<ul>
+<li><a href="#V5.25_Documentation">Documentation</a>,
+ <a href="#V5.25_Procedures">Procedures</a>,
+ <a href="#V5.25_Platforms">Platforms</a>,
+ <a href="#V5.25_Fonts">Fonts</a>,
+ <a href="#V5.25_Interpreter">Interpreter</a>,
+ <a href="#V5.25_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.25_Drivers">Drivers</a>,
+ <a href="#V5.25_Library">Library</a>
+</ul>
+<li><a href="#Version5.24">Version 5.24 (limited) (6/17/98)</a>
+<ul>
+<li><a href="#V5.24_Documentation">Documentation</a>,
+ <a href="#V5.24_Procedures">Procedures</a>,
+ <a href="#V5.24_Utilities">Utilities</a>,
+ <a href="#V5.24_Drivers">Drivers</a>,
+ <a href="#V5.24_Platforms">Platforms</a>,
+ <a href="#V5.24_Fonts">Fonts</a>,
+ <a href="#V5.24_Interpreter">Interpreter</a>,
+ <a href="#V5.24_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.24_Streams">Streams</a>,
+ <a href="#V5.24_Library">Library</a>
+</ul>
+<li><a href="#Version5.23">Version 5.23 (limited) (5/14/98)</a>
+<ul>
+<li><a href="#V5.23_Documentation">Documentation</a>,
+ <a href="#V5.23_Procedures">Procedures</a>,
+ <a href="#V5.23_Utilities">Utilities</a>,
+ <a href="#V5.23_Drivers">Drivers</a>,
+ <a href="#V5.23_Platforms">Platforms</a>,
+ <a href="#V5.23_Fonts">Fonts</a>,
+ <a href="#V5.23_Interpreter">Interpreter</a>,
+ <a href="#V5.23_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.23_Streams">Streams</a>,
+ <a href="#V5.23_Library">Library</a>
+</ul>
+<li><a href="#Version5.22">Version 5.22 (limited) (2/19/98)</a>
+<ul>
+<li><a href="#V5.22_Documentation">Documentation</a>,
+ <a href="#V5.22_Procedures">Procedures</a>,
+ <a href="#V5.22_Utilities">Utilities</a>,
+ <a href="#V5.22_Drivers">Drivers</a>,
+ <a href="#V5.22_Interpreter">Interpreter</a>,
+ <a href="#V5.22_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.22_Streams">Streams</a>,
+ <a href="#V5.22_Library">Library</a>
+</ul>
+<li><a href="#Version5.21">Version 5.21 (limited) (1/19/98)</a>
+<ul>
+<li><a href="#V5.21_Documentation">Documentation</a>,
+ <a href="#V5.21_Procedures">Procedures</a>,
+ <a href="#V5.21_Drivers">Drivers</a>,
+ <a href="#V5.21_Fonts">Fonts</a>,
+ <a href="#V5.21_Interpreter">Interpreter</a>,
+ <a href="#V5.21_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.21_Library">Library</a>
+</ul>
+<li><a href="#Version5.20">Version 5.20 (limited) (1/8/98)</a>
+<ul>
+<li><a href="#V5.20_Documentation">Documentation</a>,
+ <a href="#V5.20_Procedures">Procedures</a>,
+ <a href="#V5.20_Utilities">Utilities</a>,
+ <a href="#V5.20_Drivers">Drivers</a>,
+ <a href="#V5.20_Platforms">Platforms</a>,
+ <a href="#V5.20_Fonts">Fonts</a>,
+ <a href="#V5.20_Interpreter">Interpreter</a>,
+ <a href="#V5.20_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.20_Streams">Streams</a>,
+ <a href="#V5.20_Library">Library</a>
+</ul>
+<li><a href="#Version5.10">Version 5.10 (11/23/97)</a>
+<ul>
+<li><a href="#V5.10_Documentation">Documentation</a>,
+ <a href="#V5.10_Procedures">Procedures</a>,
+ <a href="#V5.10_Utilities">Utilities</a>,
+ <a href="#V5.10_Drivers">Drivers</a>,
+ <a href="#V5.10_Interpreter">Interpreter</a>,
+ <a href="#V5.10_Library">Library</a>
+</ul>
+<li><a href="#Version5.07">Version 5.07 (limited) (10/31/97)</a>
+<ul>
+<li><a href="#V5.07_Documentation">Documentation</a>,
+ <a href="#V5.07_Drivers">Drivers</a>,
+ <a href="#V5.07_Library">Library</a>
+</ul>
+<li><a href="#Version5.06">Version 5.06 (limited) (10/7/97)</a>
+<ul>
+<li><a href="#V5.06_Documentation">Documentation</a>,
+ <a href="#V5.06_Procedures">Procedures</a>,
+ <a href="#V5.06_Utilities">Utilities</a>,
+ <a href="#V5.06_Drivers">Drivers</a>,
+ <a href="#V5.06_Interpreter">Interpreter</a>,
+ <a href="#V5.06_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.06_Library">Library</a>
+</ul>
+<li><a href="#Version5.05">Version 5.05 (limited) (9/24/97)</a>
+<ul>
+<li><a href="#V5.05_Platforms">Platforms</a>,
+ <a href="#V5.05_Drivers">Drivers</a>,
+ <a href="#V5.05_Interpreter">Interpreter</a>,
+ <a href="#V5.05_Interpreter_PDF">Interpreter (PDF)</a>
+</ul>
+<li><a href="#Version5.04">Version 5.04 (limited) (9/21/97)</a>
+<ul>
+<li><a href="#V5.04_Documentation">Documentation</a>,
+ <a href="#V5.04_Procedures">Procedures</a>,
+ <a href="#V5.04_Utilities">Utilities</a>,
+ <a href="#V5.04_Drivers">Drivers</a>,
+ <a href="#V5.04_Interpreter">Interpreter</a>,
+ <a href="#V5.04_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.04_Library">Library</a>
+</ul>
+<li><a href="#Version5.03">Version 5.03 (8/8/97)</a>
+<ul>
+<li><a href="#V5.03_Documentation">Documentation</a>,
+ <a href="#V5.03_Procedures">Procedures</a>,
+ <a href="#V5.03_Drivers">Drivers</a>,
+ <a href="#V5.03_Platforms">Platforms</a>,
+ <a href="#V5.03_Fonts">Fonts</a>,
+ <a href="#V5.03_Interpreter">Interpreter</a>,
+ <a href="#V5.03_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.03_Library">Library</a>
+</ul>
+<li><a href="#Version5.02">Version 5.02 (7/28/97)</a>
+<ul>
+<li><a href="#V5.02_Documentation">Documentation</a>,
+ <a href="#V5.02_Procedures">Procedures</a>,
+ <a href="#V5.02_Utilities">Utilities</a>,
+ <a href="#V5.02_Drivers">Drivers</a>,
+ <a href="#V5.02_Platforms">Platforms</a>,
+ <a href="#V5.02_Fonts">Fonts</a>,
+ <a href="#V5.02_Interpreter">Interpreter</a>,
+ <a href="#V5.02_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.02_Library">Library</a>
+</ul>
+<li><a href="#Version5.01">Version 5.01 (6/22/97)</a>
+<ul>
+<li><a href="#V5.01_Documentation">Documentation</a>,
+ <a href="#V5.01_Procedures">Procedures</a>,
+ <a href="#V5.01_Utilities">Utilities</a>,
+ <a href="#V5.01_Drivers">Drivers</a>,
+ <a href="#V5.01_Platforms">Platforms</a>,
+ <a href="#V5.01_Interpreter">Interpreter</a>,
+ <a href="#V5.01_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.01_Library">Library</a>
+</ul>
+<li><a href="#Version5.0">Version 5.0 (6/6/97)</a>
+<ul>
+<li><a href="#V5.0_Documentation">Documentation</a>,
+ <a href="#V5.0_Procedures">Procedures</a>,
+ <a href="#V5.0_Interpreter">Interpreter</a>,
+ <a href="#V5.0_Library">Library</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a record of changes in Ghostscript releases numbered 5.n.
+For earlier versions, see the the history documents:
+
+<blockquote>
+<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
+<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
+<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
+<a href="History1.htm">History of Ghostscript versions 1.n</a>
+</blockquote>
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<p>
+Within each release, news appears in the following order: Incompatible
+changes, Documentation, Procedures, Utilities, Drivers, Platforms, Fonts,
+Interpreter, Streams (included under Interpreter through release 2.9.9),
+Library. Changes marked with a * were made available as patches to a
+previous release.
+
+<hr>
+
+<h2><a name="Version5.99"></a>Version 5.99 (beta) (1999-12-18)</h2>
+
+<h3><a name="5.99_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - All platform-specific makefiles must now define the Q macro.
+ - Ghostscript now exits with an error status if an error occurs in a
+file named on the command line, a -c command, or piped input.
+(Utilities)
+ - ps2epsi now disables setpagedevice: the bounding box of the EPSI
+output file is recorded only in the %%BoundingBox comment.
+(Drivers)
+ - The return type of gdev_vector_close_file is changed from void
+to int.
+(Interpreter)
+ - The name of the predefined stochastic halftone is changed to
+StochasticDefault. (This change was actually made in 5.98.)
+ - The compht feature is replaced by stocht.
+ - Font searching now looks in FontResourceDir.
+ - The ASCIIHexEncode filter now produces upper-case output.
+(Library)
+ - The type returned by compiled halftone resource access procedures
+is changed.
+
+</pre><h3><a name="5.99_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - A stray character had gotten added to the beginning of a file.
+(doc/Use.htm)
+ - Many minor HTML errors had crept in. (doc/*.htm, doc/gsdoc.el)
+
+Updates the docmentation on the mswinpr2 driver. (doc/Devices.htm)
+
+Notes that GNU make currently does not work on OpenVMS. (doc/Make.htm)
+
+Documents the fact that x/y_pixels_per_inch are deprecated. (gxdevcli.h)
+
+Documents certain bugs in ps2pdf. (doc/Ps2pdf.htm)
+
+Documents the addition of FontResourceDir to the font search process.
+(doc/Use.htm)
+
+Documents the new arrangement for B paper sizes. (doc/Psfiles.htm,
+doc/Use.htm, doc/gs-vms.hlp, man/gs.1)
+
+Removes the "under development" warning from the text API and
+get_bits_rectangle documentation, and adds a little more detail.
+(doc/Drivers.htm)
+
+Adds new user-contributed documentation for installing and using Ghostscript
+fonts with X Windows. (doc/Fonts.htm, doc/Readme.htm, doc/Use.htm)
+
+Adds building with the Watcom compiler to the release process.
+(doc/Release.htm)
+
+Adds an "Improving performance" section to the user documentation.
+(doc/Use.htm)
+
+Adds a note to the C style guide about order of evaluation.
+(doc/C-style.htm)
+
+Documents the new stocht.ps file. (doc/Psfiles.htm)
+
+</pre><h3><a name="5.99_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - A missing dependency caused builds on certain platforms to fail.
+(int.mak)
+ - $(EXP) was missing before various utility invocations. (int.mak)
+ - VMS converts all unquoted arguments to lower case. In order to
+work around this, we have added a platform-specific makefile macro Q, which
+is defined as a quote mark on VMS and as an empty string on all other
+platforms, and used it to quote the few mixed-case values in the makefiles.
+We removed the obsolete QQ macro from os2.mak as well. (cfonts.mak,
+dvx-head.mak, int.mak, openvms.mak, openvms.mmk, os2.mak, unixhead.mak,
+wccommon.mak, winlib.mak)
+ - PSRCDIR was incorrectly referenced as PNGSRCDIR in one place.
+(all-arch.mak)
+ - winint.mak had a conditional that Watcom's make program didn't
+accept. (winint.mak)
+
+Adds a makefile entry to allow compilation with libpng 1.0.5. (libpng.mak)
+
+Updates the Borland C++ makefile to work with C++Builder 4. (bcwin32.mak)
+
+Updates the Unix installation makefile to install stocht.ps. (unixinst.mak)
+
+</pre><h3><a name="5.99_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ps2epsi didn't disable setpagedevice. (lib/ps2epsi)
+ - geninit needed &lt;stdlib.h&gt; for 'exit'. (geninit.c)
+ - Some invocations of utilities didn't deal with VMS's habit of
+converting arguments to lower case. (geninit.c, cfonts.mak)
+ - The ps2pdf*.bat files didn't produce a usage message if no
+arguments were provided. (lib/ps2pdf.bat, lib/ps2pdf12.bat,
+lib/ps2pdf13.bat)
+ - Removes some warnings from the Windows uninstaller.
+(dwuninst.cpp)
+
+Upgrades the halftone compiler to handle Type 5 halftones. (genht.c)
+
+Makes the initialization string compiler recognize sections of the code
+where binary tokens are allowed, and convert literal hex strings within such
+sections to binary-token strings, which take less space and load faster.
+(geninit.c)
+
+Adds a utility file to define b0 ... b6 as selecting JIS B paper sizes.
+(unixinst.mak, lib/jispaper.ps)
+
+Modifies the font printing utility to sort unencoded characters.
+(lib/prfont.ps)
+
+Adds a small utility to help use the StochasticDefault halftone.
+(lib/stocht.ps)
+
+</pre><h3><a name="5.99_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The output of the epswrite driver couldn't be embedded in another
+file, because it assumed it was invoked with an empty operand stack.
+(gdevps.c)
+ - "Vector" drivers didn't detect I/O errors such as filling up the
+disk. (gdevvec.h, gdevpdf.c, gdevps.c, gdevpx.c, gdevvec.c)
+ - The bookkeeping for image color spaces when banding was incorrect,
+possibly causing memory access errors. (gxclist.h, gxclimag.c, gxclist.c)
+ - The cljet5 driver didn't place the image on the page correctly.
+(gdevclj.c)
+ - 16-bit X11 devices with R/G/B widths other than 5/6/5 sometimes
+failed to map colors correctly. (gdevxcmp.h, gdevxcmp.c)
+ - The cljet5c driver omitted a needed cast. (gdevcljc.c)
+
+Adds new x11rg16x and x11rg32x devices to test X Windows with unusual pixel
+layout. (devs.mak, gdevxalt.c)
+
+Works around a bug in Acrobat Distiller 4 (and perhaps some other PostScript
+interpreters) that causes an error if CCITTFaxDecode with /EndOfBlock = true
+is given data with no EOB (terminated by the end of the data stream
+instead). (gdevps.c)
+
+</pre><h3><a name="5.99_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The absence of mktemp on the Watcom platform caused a linking
+error under Windows. (watc.mak, watcw32.mak, gp_iwatc.c, gp_mktmp.c)
+
+</pre><h3><a name="5.99_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - findfont, /Font resourcestatus, and /Font resourceforall weren't
+consistent. (lib/gs_fonts.ps, lib/gs_res.ps)
+ - Very large TrueType fonts caused a stackoverflow. (lib/gs_ttf.ps)
+
+</pre><h3><a name="5.99_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Errors in pdfmark and setdistillerparams were ignored (!).
+(lib/gs_pdfwr.ps)
+ - The PUT pdfmark didn't allow adding dictionaries to stream-type
+objects. (The pdfmark documentation says this isn't allowed, but we think
+this is an oversight, since it is reasonable and unambiguous and Acrobat
+Distiller allows it.) (gdevpdfm.c)
+ - The token scanner used to substitute object names in pdfmark
+parameters sometimes added an extra character on the end. (gdevpdfr.c)
+ - ashow and [a]widthshow produced incorrect text spacing. (bug
+introduced by an optimization in 5.97) (gdevpdft.c)
+ - setdistillerparams left its argument on the stack.
+(lib/gs_pdfwr.ps)
+ - 0-height images caused errors either at conversion or at rendering
+time. (gdevpdfi.c)
+ - If the FontMatrix included a translation component, text was
+positioned incorrectly. NOTE: this fix may not handle x/y/xyshow.
+(gdevpdft.c)
+ - Out-of-range user-space coordinates could get generated for
+rectangles. NOTE: they can still get generated for general paths.
+(gdevpdfd.c)
+ - Widths weren't written for renamed built-in fonts. We fixed this
+partly by improving the algorithm for recognizing built-in fonts.
+(gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Works around the Acrobat limitation that user-space coordinates must not
+exceed 32K. (fix from Artifex) (gdevpdfp.c)
+
+Works around an Acrobat Reader 3 bug with printing files including Type 3
+fonts: with the "Download Fonts Once" option, AR3 only emits the font subset
+referenced on the first page where the font appears. (gdevpdfx.h,
+gdevpdf.c, gdevpdft.c)
+
+</pre><h3><a name="5.99_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Type 3 fonts weren't handled properly as a marking context, so if
+a CharProc referenced a resource in the font, an error would occur.
+(lib/pdf_fonts.ps)
+ - 0-height images caused an error. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.99_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Errors weren't propagated properly. (bug introduced in 5.98 by
+enhanced error recovery code) (imainarg.h, gs.c, imainarg.c)
+ - Errors in -c commands or in files named on the command line
+sometimes allowed execution to continue, and did not terminate with an
+abnormal status. (lib/gs_init.ps)
+
+Changes the binary token scanner so that if the stream buffer is in foreign
+space, binary-token strings will not be copied, but will be referenced
+directly in the buffer. This parallels what is done for name strings.
+(iscanbin.c)
+
+Changes the stochastic halftone from multiple Type 3s to a Type 5.
+(lib/ht_ccsto.ps, int.mak)
+
+Replaces the compht feature with a new feature called stocht. If this
+feature is selected, the StochasticDefault halftone resource will be
+pre-loaded into Ghostscript. If COMPILE_INITS=1, all the halftone data
+(threshold array, order and bits arrays) will be efficiently compiled into
+the executable. (int.mak)
+
+Replaces (...\n) print with (...) = everywhere. (lib/gs_cmdl.ps,
+lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_setpd.ps, lib/pdf_base.ps,
+lib/pdf_font.ps, lib/pdf_main.ps, lib/pdf_sec.ps)
+
+Adds support for JIS B paper sizes: statusdict will now include isob0..6 and
+jisb0..6 operators, with b0..6 normally aliased to the former.
+(lib/gs_statd.ps, lib/jispaper.ps)
+
+Adds a b5tray procedure; limits the valid arguments for setpagetype to the
+Adobe-defined values 0 and 1. (lib/gs_statd.ps)
+
+Updates clients for the change in the gs_image_* API. (zimage.c)
+
+Makes the default halftone lookup procedure more reasonable.
+(lib/gs_init.ps, lib/gs_ll3.ps)
+
+</pre><h3><a name="5.99_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - An error condition when closing a file stream wasn't reported
+properly. (sfxfd.c, sfxstdio.c)
+
+For greater Adobe compatibility, changes the ASCIIHexEncode filter to
+produce upper-case output. (sstring.c)
+
+</pre><h3><a name="5.99_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The gs_image_* API didn't work for ImageType 3 images. Fixing
+this required a small (but backward-compatible) API change. (fix mostly
+provided by Artifex) (gsimage.h, gsimage.c)
+ - The change in the bbox device in 5.95 broke it for the case where
+it was being used in a pipeline. (gdevbbox.c)
+ - A possible overflow wasn't detected when stroking lines with very
+large coordinates. (gxstroke.c)
+ - A mask was sized incorrectly. (gsdcolor.h)
+
+Updates the runtime support for compiled halftones. (gxdhtres.h, gscdefs.h,
+gconf.c, gxclrast.c, gxhtbit.c)
+
+Replaces all references to the now-deprecated x/y_pixels_per_inch with
+HWResolution[0/1]. (gsdevice.c, gxclist.c, gxpcmap.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.98"></a>Version 5.98 (beta) (1999-12-01)</h2>
+
+<h3><a name="5.98_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The return type of init_proc is changed from void to int.
+ - The return types of gs_lib_init* are changed from void to int.
+(Interpreter)
+ - The return types of gs_[main_]init*, gs_[main_]add_lib_path,
+gs_[main_]set_lib_paths, and a number of internal initialization-related
+procedures are changed from void to int.
+
+</pre><h3><a name="5.98_Documentation"></a>Documentation</h3><pre>
+
+Improves the documentation of the clist_render_rectangle procedure.
+(gxclist.h)
+
+Makes it clear that pre-public-release filesets should not be redistributed.
+(doc/Tester.htm)
+
+Clarifies that the parameters for the X driver are command line switches,
+not X resources. (doc/Use.htm)
+
+Improves the documentation of ps2pdf in response to some user comments.
+(doc/Ps2pdf.htm)
+
+Documents the initial settings of the distiller parameters.
+(doc/Ps2pdf.htm)
+
+Documents the UniqueIDs assigned to Aladdin. (lib/gs_fonts.ps)
+
+Updates the documentation for the stochastic halftone mask. (doc/Make.htm)
+
+Removes some obsolete material. (doc/Release.htm)
+
+</pre><h3><a name="5.98_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The new ps2pdf* scripts weren't included in the Unix install list.
+(unixinst.mak)
+ - The directory names were missing in BEGINFILES. (openvms.mak)
+ - The .pl and .sh scripts weren't included in the Unix install list.
+(unixinst.mak)
+
+Updates all-arch.mak with a newer version from its contributor.
+(all-arch.mak)
+
+Updates the makefiles for a change in eexec modularization. (devs.mak,
+int.mak, lib.mak)
+
+</pre><h3><a name="5.98_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The dvipdf usage message was incorrect. (lib/dvipdf)
+
+Adds a utility for mechanically adding the Adobe extended Latin characters
+(primarily Central European accented letters) to a font. Eventually we
+would like to integrate this into the font loader and/or make extended
+versions of the standard 35 fonts. (lib/addxchar.ps)
+
+</pre><h3><a name="5.98_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - psdf_sorted_glyphs_include didn't handle empty lists correctly.
+(gdevpsdf.c)
+ - A reference to a #defined constant hadn't been converted to upper
+case. (gdevpsdf.h)
+ - Acrobat Reader couldn't handle &lt;&gt; as the definition of
+Notice in an embedded font's FontInfo dictionary: it requires a ()
+string. (gdevpsd1.c)
+ - The [e]pswrite driver didn't take stroked paths into account when
+computing the bounding box. (gdevps.c)
+
+Updates gdevwpr2.c with a new version from its most recent author.
+(gdevwpr2.c)
+
+</pre><h3><a name="5.98_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - The FONTPATH file scanner wasn't protected against errors.
+(lib/gs_fonts.ps)
+ - Some badly designed Chinese TrueType fonts, whose 'post' table
+gives the name .null to all glyphs, didn't work properly. (lib/gs_ttf.ps)
+ - The shareware Katakana font had an incorrect UniqueID.
+(fonts/fkarw.gsf)
+
+Adds all of the PostScript 3 fonts to the intelligent substitution tables.
+(lib/gs_fonts.ps)
+
+Changes the FONTPATH scanner to allow a %%BeginFont: line as the first line
+of a font. Nothing in Adobe's documentation suggests that this is
+acceptable, but some fonts have it. (lib/gs_fonts.ps)
+
+Releases an updated set of the URW fonts, fixing the braceleftbt problem in
+the Symbol font and a couple of missing characters in the ZapfDingbats
+fonts, and adding the Euro glyph to the alphabetic fonts. The new archive
+also includes fonts.scale and fonts.dir files for use with X Windows
+(mkfontdir and xfs).
+
+Centralizes the definition of Aladdin's XUIDs. (lib/gs_fonts.ps,
+lib/gs_ttf.ps)
+
+</pre><h3><a name="5.98_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - The algorithm for making font names unique didn't take subset
+prefixes into account. (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
+ - Computing character bounding boxes was taking an inordinate amount
+of time. (performance problem only) (gdevpdff.c)
+ - The pdf_image_writer and pdf_image_enum structures didn't have GC
+descriptors, possibly causing memory corruption. (gdevpdfi.c)
+ - PostScript files containing images with premature end-of-data were
+converted to PDF files with premature end-of-data, which Acrobat doesn't
+accept. (gdevpdfo.h, gdevpdfx.h, gdevpdfi.c, gdevpdfo.c, gdevpdfu.c)
+ - Pattern resources whose image was written in-line omitted a needed
+gsave (q). (bug introduced in 5.94) (gdevpdfi.c)
+ - The similarity between a font and a base font wasn't computed
+correctly, leading to some unnecessary writing of Widths for standard fonts.
+(gdevpdft.c)
+ - Embedding a stream in the psdf_binary_writer caused garbage
+collector problems, because there could be pointers to that stream from
+elsewhere. (gdevpsdf.h, gdevpsdf.c)
+ - The algorithms for deciding whether a font was script or serif
+were very inaccurate. (The revised ones are only somewhat better.)
+(gdevpdff.c)
+ - Re-encoded characters in subset fonts weren't handled correctly.
+We work around this by writing the entire font if the character doesn't
+appear in the font's encoding. This is inefficient but will always produce
+correct output. (gdevpdff.h, gdevpdff.c, gdevpdft.c, gdevpdfw.c)
+ - The meaning of bit 6 in the Flags was supposed to have changed in
+PDF 1.2, but didn't. (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
+ - The Widths array didn't get written out for embedded subsets of
+the built-in fonts. (gdevpdfw.c)
+ - Planar images weren't handled correctly, and could cause memory
+corruption. (gdevpdfi.c)
+ - Patterns still weren't scaled correctly; in fact, the "fix" in
+5.94 can't possibly have worked, and we don't understand why it seemed to.
+(gdevpdfi.c)
+
+Recants the belief that the default encoding for embedded fonts is
+StandardEncoding (see 5.95): the appearance of this was a symptom of having
+multiple fonts with the same name. (gdevpdft.c)
+
+Removes FONT_EMBED_UNKNOWN, which is meaningless (a decision is always made
+about whether to embed a font). (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Changes the algorithm for picking the base font so that it produces more
+efficient output for certain cases of re-encoded fonts. (gdevpdft.c)
+
+</pre><h3><a name="5.98_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Fonts were getting renamed unnecessarily. (performance and PDF
+output size problem only) (lib/pdf_font.ps)
+ - Fonts with Widths but no FontDescriptor caused an error.
+(lib/pdf_font.ps)
+ - TrueType fonts processed the Encoding key in the font the same way
+as other font types, which is not correct. (lib/pdf_font.ps)
+ - For embedded Type 3 fonts, the Widths entry in a font didn't
+override the width in the CharProc. (lib/pdf_font.ps, lib/pdf_ops.ps)
+ - If a page had multiple Contents streams, and one of the streams
+ended with values on the operand stack, an error might occur.
+(lib/pdf_main.ps)
+ - Ts and Tz within a text object didn't take effect immediately.
+(lib/pdf_ops.ps)
+ - sc[n] and SC[N] could cause an error because Do left an extra item
+on the stack temporarily. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.98_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Getting the unscaled outline for a Type 1 font didn't disable
+hinting. (mostly a performance problem) (zchar1.c)
+ - Error conditions during initialization weren't recognized. Fixing
+this required changing various return types from void to int. (ialloc.h,
+iinit.h, imain.h, interp.h, ialloc.c, iinit.c, imain.c)
+ - HalftoneMode didn't affect setscreen or setcolorscreen.
+(lib/gs_init.ps, lib/gs_ll3.ps)
+
+Makes the interpreter quit with a message, rather than a stack dump, if it
+can't open the initial device and DEBUG is not set. (lib/gs_init.ps)
+
+Adds .setlimitclamp and .currentlimitclamp operators to access the limit
+clamp flag in the graphics state. (zgstate.c)
+
+Changes the names of the stochastic halftone mask to be more descriptive.
+(lib/ht_ccsto.ps, int.mak, unixinst.mak)
+
+</pre><h3><a name="5.98_Streams"></a>Streams</h3><pre>
+
+Adds the ability to forbid using hex encoding when writing strings.
+(spsdf.h, spsdf.c)
+
+</pre><h3><a name="5.98_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Computing the width of a glyph unnecessarily constructed the
+entire outline. (performance problem only) (gxtype1.c)
+ - Getting the unscaled width of a glyph in a Type 1 font didn't
+disable hinting. (mostly a performance problem) (gxtype1.c.)
+ - The "unknown device" GC descriptor is no longer used. (gsdevice.c)
+ - Some compilers *still* complained about end-of-loop code not being
+reached. (gxpath2.c)
+ - Mixing float and double values sometimes caused spurious lines to
+be drawn when stroking very short lines with large widths. (fix from
+Artifex) (gxpdash.c)
+ - The code for handling crossing lines in the path filling algorithm
+sometimes computed line crossings incorrectly, causing excessive
+computation. (gxfill.c)
+ - When oversampling for anti-aliasing, the flatness parameter was
+not scaled, leading to unnecessarily accurate curve rendering. (gspaint.c)
+ - An extra grestore in a Pattern PaintProc could cause a crash.
+(gxpcmap.c)
+ - Error conditions during initialization weren't recognized. Fixing
+this required changing the return type of init_proc, and various other
+internal procedures, from void to int. (std.h, gslib.h, gscdefs.h,
+gshtscr.c, gsiodev.c, gslib.c, gsutil.c)
+
+Splits off the Type 1 encryption/decryption code into a separate file for
+sharing with the eexec streams. (gscrypt1.c, gxtype1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.97"></a>Version 5.97 (beta) (11/22/99)</h2>
+
+<p>
+This is the next beta for 6.0. We believe the pdfwrite driver (ps2pdf) now
+finally produces Acrobat-acceptable output, with reasonable handling of
+fonts, and have also fixed the problem with high-level image banding. We
+are cautiously hopeful that this is a "real" beta candidate.
+
+<h3><a name="5.97_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The default CompatibilityLevel in the pdfwrite driver is now back
+to 1.3.
+(Library)
+ - The seac_data procedure of a Type 1 font must now be able to
+return the glyph and/or the actual outline data.
+
+</pre><h3><a name="5.97_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - A &lt;br&gt; was missing. (doc/Release.htm)
+ - The final step of copying releases to www.aladdin.com was missing.
+(doc.Release.htm)
+
+Documents the new situation with the ps2pdf* scripts. (doc/Ps2pdf.htm)
+
+Documents the simplification of the pthreads code. (doc/Helpers.htm,
+doc/Make.htm)
+
+Adds a requirement to the license that modifications include the name and
+e-mail address of the author, and the date and purpose of the modification.
+(doc/Public.htm)
+
+Adds a link to the documentation for setdistillerparams. (doc/Ps2pdf.htm)
+
+</pre><h3><a name="5.97_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - On OpenVMS, the test for whether the bin and obj subdirectories
+already existed was incorrect. (openvms.mak, openvms.mmk)
+ - The recently updated Borland/Inprise makefile deleted some temp
+files prematurely. (bcwin32.mak)
+ - The dependencies for the Unix install-scripts and install-data
+targets were incorrect. (unixinst.mak)
+
+Updates the RPM spec files. (gs.rps, gs-fonts.rps, rpm-conf.dif)
+
+Adds support for compilation with Borland/Inprise C++Builder 3.
+(bcwin32.mak, winint.mak)
+
+Adds a note on font installation under Red Hat Linux 6. (doc/Install.htm)
+
+</pre><h3><a name="5.97_Utilities"></a>Utilities</h3><pre>
+
+Adds ps2pdf12 and ps2pdf13 scripts to select the PDF output level
+explicitly; makes ps2pdf a wrapper for ps2pdf12. (lib/ps2pdf,
+lib/ps2pdf.bat, lib/ps2pdf12, lib/ps2pdf12.bat, lib/ps2pdf13,
+lib/ps2pdf13.bat, lib/ps2pdfwr, lib/ps2pdfwr.bat)
+
+Updates the Windows install/setup program to display the Aladdin start menu
+folder on a successful install, so that the user gets some feedback that all
+went well. (dwinst.cpp, dwsetup.cpp)
+
+</pre><h3><a name="5.97_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The lj5{mono,gray} drivers didn't send the page size to the
+printer. (gdevpxut.h, gdevlj56.c, gdevpx.c, gdevpxut.c)
+ - The pxl drivers didn't handle out-of-range points properly.
+(gdevvec.c, gdevpx.c)
+ - The bmpa drivers didn't produce multi-page output files correctly
+-- all pages but the first were blank. (The bmp format is supposed to be
+single-page, but at least some readers handle multi-page files correctly.)
+(gdevbmpa.c)
+ - The code for writing embedded TrueType fonts was broken. (bug
+probably introduced in 5.9x) (gdevpsdt.c)
+
+Removes an unused variable. (gdevbmpa.c)
+
+</pre><h3><a name="5.97_Platforms"></a>Platforms</h3><pre>
+
+Replaces the 4 pthreads files, which included a dependence on the non-POSIX
+&lt;semaphore.h&gt;, with a single file that uses only pthreads procedures.
+(gp_psync.c, gp_posem.c [deleted], gp_pthr.c [deleted], gp_ptsem.c
+[deleted], gp_semon.c [deleted])
+
+</pre><h3><a name="5.97_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Whether or not to write the Widths array was implicit in the data
+structures rather than explicit, so it was sometimes written unnecessarily.
+(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - Fonts based on the 14 built-in fonts didn't set BaseFont to the
+name of the built-in font. (gdevpdff.c)
+ - The determination of whether a glyph was available was incorrect
+for embedded fonts, leading some glyphs to be turned into bitmaps
+unnecessarily. (gdevpdft.c)
+ - Apparently Acrobat Reader gets confused if different subsets of
+the same font have different FirstChar and LastChar values, so we have to
+write the full Widths array each time. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - A structure member wasn't initialized when processing pdfmark
+annotations, possibly causing a memory access error. (gdevpdfm.c)
+ - The typedef for gx_device_pdf had a typo. (gdevpdfx.h)
+ - Each embedded font subset had its own FontDescriptor and its own
+font data, confusing Acrobat Reader. Fixing this required sharing
+FontDescriptors among multiple fonts and making FontDescriptors
+pseudo-resources. (gdevpdff.h, gdevpdfx.h, gdevpdf.c, gdevpdff.c,
+gdevpdft.c, gdevpdfw.c)
+ - Incrementally defined embedded Type 1 fonts didn't write out
+correct Widths. (gdevpdff.c)
+ - PDF resources didn't consistently record the gs_id of the
+structure they represented, possibly causing resources to be duplicated
+unnecessarily. (gdevpdff.c, gdevpdfu.c)
+
+Reinstates PDF text output. (gdevpdf.c)
+
+Changes the default CompatibilityLevel in the pdfwrite device back to 1.3,
+since the ps2pdf scripts now make it easy to choose the PDF level.
+(gdevpdf.c)
+
+When possible, uses the widths obtained from the font, rather than the
+default implementation of text_process, to complete the text_process
+operation. This greatly speeds up the conversion process. (gdevpdft.c)
+
+Allows character remapping (but not reencoding) of TrueType fonts.
+(gdevpdft.c)
+
+Factors the definitions for cos objects and font-related objects into header
+files more thoroughly. (gdevpdff.h, gdevpdfo.h, gdevpdfx.h, gdevpdf.c,
+gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
+
+Makes the names of some structure elements correspond more directly to keys
+in PDF directories. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Splits off the font-writing code, since a source file was getting too big.
+(gdevpdff.h, gdevpdff.c, gdevpdfw.c)
+
+Adds CharSet information to embedded Type 1 font descriptors. (gdevpdfw.c)
+
+Makes all font names in the output unique, selected by static bool
+MAKE_FONT_NAMES_UNIQUE. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Reinstates support for one special case of composite fonts (8/8 mapping with
+the high order byte always zero) that is used by the AdobePS4 Windows
+driver. (gdevpdft.c)
+
+Changes the assumption about the default encoding for embedded TrueType
+fonts from StandardEncoding to no known encoding. (gdevpdft.c)
+
+Changes FONT_EMBED_BASE14 to FONT_EMBED_STANDARD for greater
+descriptiveness. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+</pre><h3><a name="5.97_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The same-font test for Type 1 fonts didn't correctly identify
+re-encoded fonts with unchanged metrics. (zfont1.c)
+ - If a save level was split into multiple internal save objects,
+some changes could get undone before objects were finalized. (isave.c)
+ - When releasing all of memory, stable allocators weren't finalized.
+(isave.c)
+ - Some compilers gave annoying and needless warnings about integer
+overflow. (store.h)
+ - There was a signed/unsigned char * mismatch. (iccfont.c)
+
+Adds a debugging procedure. (idebug.h, idebug.c)
+
+Changes the Type 1 font seac_data procedure to match the new API.
+(zchar1.c)
+
+</pre><h3><a name="5.97_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The GC didn't know about the pointers to the tables for Indexed
+color spaces when banding, occasionally causing the tables to be written as
+garbage. This is the real fix for the problem discovered in 5.96.
+(gsiparam.h, gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxclpath.c)
+ - With 'async' drivers, multi-page files didn't render properly
+(they got a rangecheck error on every page after the first one).
+(gdevprna.c)
+ - Some compilers still complained about end-of-loop code not being
+reached. (gxpath2.c)
+ - The scaled font cache required that a font have a UID in order to
+be a candidate for caching. (gsfont.c)
+ - An obsolete check caused slight discrepancies between banded and
+non-banded output. (gxstroke.c)
+ - The glyph_outline procedure for TrueType fonts transformed the
+width by the scaling matrix twice. (gstype42.c)
+
+Removes some now-unnecessary extern_st declarations. (gdevbbox.c,
+gdevplnx.c, gximage3.c)
+
+Removes some initializations that read uninitialized locations and are
+logically unnecessary. (gsalloc.c, gscolor.c)
+
+Adds makefile rules for compiling the MD5 implementation. (lib.mak)
+
+Makes the seac_data of a Type 1 font return the glyph and/or the actual
+outline data. This is necessary because some Type 1 fonts don't have the
+accents in the same positions as StandardEncoding, but use seac anyway.
+(gxfont1.h)
+
+Changes the Type 1 font interpreter to match the new seac_data API.
+(gxtype1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.96"></a>Version 5.96 (beta) (11/12/99)</h2>
+
+<p>
+This is the next beta for 6.0. To meet a need of our commercial licensing
+partner for a PostScript LL3 release, we are releasing this fileset with all
+font handling in the PDF writer disabled, as well as high-level image
+banding. This is a temporary measure: we will reinstate PDF text in 5.97,
+and high-level image banding as soon as we can straighten out its memory
+management problems.
+
+<h3><a name="5.96_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - All Unix 'make' programs must now predefine MAKE as the name of
+the program.
+(Interpreter)
+ - zcolor_remap_one now returns o_push_estack rather than 0 in the
+case where it doesn't actually have to sample the procedure.
+(Library)
+ - Multi-plane halftones (when needed) are now used for all CMYK
+devices, not only if setcolorscreen was executed.
+ - Font implementors must now provide a same_font procedure.
+
+</pre><h3><a name="5.96_Documentation"></a>Documentation</h3><pre>
+
+Makes it clear that gsnup.ps is very simple and naive. (doc/Psfiles.htm,
+lib/gsnup.ps)
+
+Documents the new -Z_ switch. (doc/Use.htm)
+
+Documents that SYNC=nosync allows building on systems that don't support
+multi-threading. (doc/Make.htm)
+
+Adds documentation for building on Macintosh Rhapsody systems.
+(doc/Make.htm)
+
+Adds a reference to the new all-arch.mak file. (doc/Helpers.htm,
+doc/Make.htm)
+
+Notes that ps2pdf does preserve the color space for images.
+(doc/Ps2pdf.htm)
+
+Documents the new self-extracting archive for MS Windows. (doc/Install.htm,
+doc/Release.htm)
+
+Further improves the documentation of the PDF text machinery. (gdevpdfx.h)
+
+Reorganizes the build information for Unix. (doc/Make.htm)
+
+Adds information on building Ghostscript under BSDI. (doc/Make.htm)
+
+Notes that versions of zlib before 1.1.3 may cause an error on rare
+occasions. (zlib.mak)
+
+Fixes a few other minor problems. (doc/Current.htm, doc/Devices.htm,
+doc/DLL.htm, doc/Install.htm, doc/Language.htm, doc/Make.htm,
+doc/New-user.htm, doc/Ps2pdf.htm, doc/Source.htm, doc/Use.htm)
+
+</pre><h3><a name="5.96_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - dctd.dev and dcte.dev were defined in $(PSD), but referenced in
+$(GLD). (devs.mak, int.mak, lib.mak)
+ - pipe.dev was defined in $(GLD), but referenced in $(PSD).
+(bcwin32.mak, dvx-gcc.mak, msvc32.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak)
+ - XLIBDIRS was included in the linker command even if none of the
+X drivers were used. (devs.mak, dvx-tail.mak, ugcclib.mak, unixlink.mak)
+ - The OpenVMS makefile didn't create the obj and bin directories
+properly. (openvms.mak)
+ - 'make debug' and 'make pg' didn't work on Unix systems where the
+make program was named something other than make. (unix-end.mak)
+
+Introduces a new top-level makefile macro, STDLIBS, that is -lm for all
+reasonable platforms but null for Rhapsody. (dvx-gcc.mak, dvx-tail.mak,
+ugcclib.mak, unix-gcc.mak, unixansi.mak, unixlink.mak, unixtrad.mak)
+
+Adds Nelson Beebe's contributed multi-architecture Unix makefile.
+(all-arch.mak)
+
+Makes it theoretically possible in theory to build the new Windows
+install/uninstall program with the Borland compiler. However, since this
+requires Borland C++ 4.52 and we only have 4.5, this is disabled in
+bcwin32.mak. (bcwin32.mak, winint.mak)
+
+</pre><h3><a name="5.96_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The default for gsnup.ps was 3x2 landscape, rather than 2x2
+portrait. (lib/gsnup.ps)
+ - gslp.ps was broken (by the changes made to support gsnup.ps).
+(lib/gslp.ps)
+
+Adds a -link switch to genconf, to allow verbatim copying of commands into
+the linker command line. (genconf.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (dwinst.h,
+dwsetup.h, dwuninst.h, bench.c, dwuninst.cpp)
+
+Makes it possible to build the new Windows install/uninstall program with
+the Borland compiler. (dwinst.cpp, dwsetup.cpp, dwsetup.def, dwsetup.rc,
+dwuninst.cpp, dwuninst.def)
+
+</pre><h3><a name="5.96_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Embedded Type 1 fonts lacked some 'def' commands. (gdevpsd1.c)
+ - Multiple Master Font instances weren't written out correctly.
+(gdevpsd1.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (gdev8bcm.h,
+gdevht.h, gdevpccm.h, gdevpcl.h, gdevsvga.h, gdevx.h, gdev3852.c,
+gdev8510.c, gdevadmp.c, gdevcd8.c, gdevcif.c, gdevclj.c, gdevhl7x.c,
+gdevifno.c, gdevimgn.c, gdevl31s.c, gdevmeds.c, gdevmswn.c, gdevos2p.c,
+gdevpe.c, gdevpm.c, gdevsj48.c, gdevtknk.c, gdevupd.c, gdevwddb.c,
+gdevwpr2.c, gdevwprn.c)
+
+</pre><h3><a name="5.96_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The pthreads wrapper had a procedure type mismatch. We fixed this
+by making it allocate and free a wrapper object, as the Windows wrapper
+does. (gp_pthr.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (dwimg.h, dwmain.h,
+gsdll.h, gp_msio.c, gp_mswin.c)
+
+Removes an unnecessary #include &lt;semaphore.h&gt;. (gp_semon.c)
+
+Adds a module that implements semaphores using the pthreads mutex
+facilities, as an alternative to gp_posem.c. Unfortunately, using this
+module causes immediate crashes on both GNU/Linux and BSDI, and we don't know
+why. (Let us know if you figure it out.) (gp_ptsem.c)
+
+</pre><h3><a name="5.96_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - The character and word spacing weren't recognized as being reset
+by a PDF grestore. (gdevpdfx.h, gdevpdfu.c)
+ - Fonts that couldn't be embedded were always converted to bitmaps,
+rather than becoming candidates for non-embedded representation (if
+EmbedAllFonts is false and the font doesn't appear on the AlwaysEmbed list).
+(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - Stream-type Cos objects were written with no (0-length) data.
+(gdevpdfm.c)
+ - Reencoded base 14 fonts were not recognized as such, leading to
+excessive font embedding. (gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdft.c)
+ - Fonts were embedded by default even if EmbedAllFonts was false.
+(gdevpdft.c)
+
+Changes MaxSubsetPct to 35 to match Acrobat Distiller. (gdevpsdf.h)
+
+Adds some tracing output (-Z_). (gdevpdff.c, gdevpdft.c)
+
+Temporarily disables font handling in the PDF writer, to meet a need of our
+commercial licensing partner. All text will be converted to code-scrambled
+Type 3 bitmap fonts. (gdevpdf.c)
+
+</pre><h3><a name="5.96_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The sh operator caused an invalidaccess error for shadings that
+required a DataSource. (lib/pdf_draw.ps)
+ - The test for whether a Widget appearance was a Form or a
+collection of sub-appearances was incorrect, causing an /undefined error in
+the latter case. (lib/pdf_draw.ps)
+ - If the FontName in a Font descriptor differed from the BaseFont
+name in the Font object, the interpreter used the two inconsistently,
+sometimes causing the wrong font to be used. (lib/pdf_font.ps)
+ - ICCBased color spaces caused an error. (lib/pdf_draw.ps)
+
+Works around the fact that Acrobat Distiller produces files in which a
+Widget's Form appearance lacks Type and Subtype keys. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.96_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Failure in allocating the name table would cause a crash.
+(iname.c)
+ - Shadings with procedure-based filters didn't work.
+(lib/gs_ll3.ps, ifilter.h, zfileio.c, zfproc.c)
+ - Some compilers complained about arithmetic on an enum. (iparam.c)
+ - Setting a transfer or similar function to the identity function
+didn't set the cached values, so the setting didn't consistently take
+effect. (icolor.h, zcolor.c)
+ - If the C library's implementation of sprintf with a %g format ever
+produced a number with an exponent but no decimal point, a crash would
+occur. (iutil.c)
+ - The PageDeviceName page device parameter wasn't supported.
+(lib/gs_lev2.ps, lib/gs_setpd.ps)
+ - A public procedure wasn't declared extern if DEBUG wasn't set.
+(igc.h)
+ - Because of a typo, loading resources automatically from a file
+always failed. (bug introduced in 5.94) (lib/gs_res.ps)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (files.h, iastate.h,
+ibnum.h, ichar.h, ifilter.h, iimage.h, iimage2.h, iparam.h, isave.h,
+iscan.h, isstate.h, istream.h, iutil.h, opcheck.h, scanchar.h)
+
+Adds a font similarity testing procedure for Type 1/2/4 fonts. (zfont1.c)
+
+</pre><h3><a name="5.96_Streams"></a>Streams</h3><pre>
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (sbhc.h, sbtx.h,
+sbwbs.h, sdct.h, scfdgen.c, scfdtab.c, shcgen.h, siscale.h, sjpeg.h,
+slzwx.h, smtf.h, spdiffx.h, spngpx.h, srlx.h)
+
+</pre><h3><a name="5.96_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Making a transformed font inappropriately copied the font's
+notification list. (gsfont.c)
+ - Some compilers complained about end-of-loop code not being
+reached. (gxpath2.c)
+ - The first two arguments of scale_delta was swapped, causing
+anomalous output for certain Type 1 fonts with curves where the starting and
+ending points had the same X or Y coordinate. (gxhint3.c)
+ - Large smoothness values produced blocky output. (gxshade.c)
+ - When banding, in a region where a CMYK halftone had no K at all,
+the output was likely to be black rather than the correct color. (gxcht.c)
+ - Interpolated images with mirrored X scaling weren't mirrored.
+(gxiscale.c)
+ - Interpolated images were truncated. (gxiscale.c)
+ - Halftone caches could have a dangling pointer to a transfer map in
+the halftone order. (gxht.c)
+ - The next-character code returned for kshow was the same as the
+current character. (bug probably introduced in 5.86) (gstext.c)
+ - The GC didn't know about the pointers to the tables for Indexed
+color spaces when banding, occasionally causing the tables to be written as
+garbage. In the process of investigating this, we discovered that the GC
+didn't know about *any* of the pointers in the structures used to track
+banded images. ****** NOT FIXED, TOO MUCH RISK OF INTRODUCING FURTHER
+BUGS. ****** Instead, we disabled high-level image banding in this fileset.
+(gxclimag.c)
+
+Changes the name of a variable from ppc to ppcr, because an Apple compiler
+inappropriately defines the name ppc when compiling on a PowerPC.
+(gxshade6.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (gdevbbox.h,
+gscoord.h, gscpixel.h, gsfname.h, gsfont.h, gsimage.h, gslib.h, gsmdebug.h,
+gspaint.h, gspath.h, gspath2.h, gxalloc.h, gxclipm.h, gxclpage.h,
+gxclpath.h, gxcmap.h, gxcoord.h, gxcpath.h, gxdda.h, gxdevmem.h, gxfcache.h,
+gxfont.h, gximage.h, gxiodev.h, gxpaint.h, gxpath.h, gxpcolor.h, gzacpath.h,
+gzcpath.h, gzht.h, gzpath.h, md5.h, gxdither.c, md5.c)
+
+Adds a prototype for debug_find_pointers. (gxalloc.h)
+
+Adds a font procedure for testing whether two fonts are the same in various
+ways. This is needed so that the PDF writer can do a reasonable job of
+identifying reencoded and renamed versions of the base 14 fonts. (gxfont.h,
+gsfont.c)
+
+Changes a macro to a procedure and improves some commenting. (gxhint3.c)
+
+Changes the halftoning code so that multi-plane halftones are always used on
+CMYK devices, even if only a single halftone is set (setscreen or
+HalftoneType 1). (gxcht.c, gxdither.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.95"></a>Version 5.95 (beta) (11/1/99)</h2>
+
+<p>
+There were several new problems in 5.94, some of them severe. We hope this
+beta candidate fixes them without introducing any new ones. It also fixes
+some minor problems not reported in 5.93.
+
+<p>
+We think we have finally found the right workarounds for Acrobat and
+specification problems so that pdfwrite output (with CompatibilityLevel
+either 1.2 or 1.3) both conforms as closely as possible to the published PDF
+specification and works with Acrobat Reader (3 or 4 respectively) for both
+displaying and printing.
+
+<p>
+NOTE: The default level of output from the pdfwrite device (ps2pdf) has been
+changed back to PDF 1.2 (Acrobat 3 compatible), because this is what the
+majority of users want. For PDF 1.3 output, use -dCompatibilityLevel=1.3.
+
+<p>
+Note: some post-6.0 code is included under an #ifdef POST60.
+
+<h3><a name="5.95_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The default CompatibilityLevel in the pdfwrite device (ps2pdf) is
+now 1.2 rather than 1.3.
+ - pdfwrite now discards information after the last showpage rather
+than producing an additional page.
+(Library)
+ - The is_monotonic procedure of a function now returns a result that
+indicates the direction of monotonicity of each value separately.
+ - The coordinate system used internally by the bbox device is now
+upright (lower left corner = (0,0) rather than upper left corner). (This
+should not make any difference to clients, who should always have been using
+default user space coordinate.)
+
+</pre><h3><a name="5.95_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - A couple of URLs were incorrect or out of date. (doc/Readme.htm,
+doc/Use.htm)
+ - There was a typo in a comment. (gxfont.h)
+ - An old bug had been fixed, but the documentation had not been
+updated to reflect this. (doc/Current.htm)
+
+Documents the requirement to change SYNC from posync to fbsdsync on FreeBSD.
+(doc/Make.htm)
+
+Adds references to Adobe's on-line documentation. (doc/Readme.htm)
+
+Updates the release procedure to mention adding .ps files.
+(doc/Release.htm)
+
+Adds documentation for the bbox device. (doc/Use.htm)
+
+Documents the new gsnup.ps utility. (doc/Psfiles.htm)
+
+Modifies the gslp utility for greater page independence and smaller output
+files. (lib/gslp.ps)
+
+Documents the fact that the default output from pdfwrite is PDF 1.2.
+(doc/Ps2pdf.htm)
+
+Adds Inprise (as the new name of the Borland tools) in a few places.
+(doc/Make.htm)
+
+Updates the release documentation slightly. (doc/Release.htm)
+
+</pre><h3><a name="5.95_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - FreeBSD uses a different name for the pthreads implementation.
+(lib.mak, unixansi.mak, unix-gcc.mak, unixtrad.mak)
+
+Encapsulates gsnogc.$(OBJ) in a gsnogc.dev module, to make it more sharable.
+(lib.mak)
+
+</pre><h3><a name="5.95_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - guilsinglleft and guilsinglright were misspelled.
+(lib/ps2ascii.ps)
+ - The ps2pdf script didn't handle the -I switch correctly. We fixed
+this by including the options twice, both before and after the automatically
+supplied options. (lib/ps2pdf, lib/ps2pdf.bat)
+
+Adds an install/uninstall program for Windows 9x, including optional
+generation of a self-extracting executable, written by Ghostgum Software Pty
+Ltd. This program is not actually used yet. (msvc32.mak, winint.mak,
+dwinst.*, dwsetup.*, dwuninst.*)
+
+Adds a new environment parameter to arch.h, ARCH_DIV_NEG_POS_TRUNCATES.
+(genarch.c)
+
+Adds a utility for N-up printing. (unixinst.mak, lib/gsnup.ps)
+
+Changes ps2pdf so that if showpage has ever been executed, any partial page
+after the last showpage is discarded rather than made into an additional
+page. This is consistent with printers, and correctly handles BeginPage
+procedures that draw backgrounds. (gdevpdf.c)
+
+</pre><h3><a name="5.95_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The TIFF drivers could produce incorrectly sorted tag tables.
+(gdevtifs.c)
+ - The OS/2 PM driver had an incorrect #include. (gdevpm.c)
+ - Embedded Type 1 fonts that used seac didn't automatically include
+the constituent glyphs. (gdevpsd1.c)
+ - Embedded Type 1 fonts wrote the wrong font name in the first
+(comment) line. (gdevpsd1.c)
+ - Deleting elements from the AlwaysEmbed or NeverEmbed list could
+cause a memory access error. (gdevpsdp.c)
+ - The string and string array members of psdf_distiller_params were
+omitted from the GC descriptor, causing memory corruption. (gdevpsdf.h,
+gdevpsdf.c, gdevpsdp.c)
+ - When using "async" printing, the buffer device was destroyed too
+soon. (fix from Artifex) (gdevbmpa.c)
+
+Adds (partial) parsing for the new Acrobat Distiller 4.0 parameters, under
+#ifdef POST60. The put_params code isn't finished. (gdevpsdf.h,
+gdevpsdp.c)
+
+</pre><h3><a name="5.95_Platforms"></a>Platforms</h3><pre>
+
+Changes product to productfamily as the Windows registry key. (gp_wgetv.c)
+
+</pre><h3><a name="5.95_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - guilsinglleft and guilsinglright were misspelled in
+MacRomanEncoding and MacGlyphEncoding. (lib/gs_mro_e.ps)
+ - plusminus was misspelled in MacGlyphEncoding. (lib/gs_mgl_e.ps)
+ - braceleftbt was misspelled as bracelefttbt in the Symbol font.
+(fonts/s050000l.pfb) ****** NOT DISTRIBUTED YET ******
+ - euro was incorrectly included at position 240 in the Symbol
+encoding. (lib/gs_sym_e.ps)
+ - Zcaron and zcaron weren't included in WinAnsiEncoding (this is new
+for PDF 1.3). (lib/gs_wan_e.ps)
+ - Euro replaced currency in MacRomanEncoding. We had to change this
+back, even though the Mac does use code 219 for Euro, for compatibility with
+Adobe documentation. (lib/gs_mro_e.ps)
+ - TrueType fonts with more glyphencoding entries than glyphs could
+cause errors. (lib/gs_ttf.ps)
+
+Adds the Adobe Central European encoding. (lib/gs_ce_e.ps, unixinst.mak)
+
+Adds more tracing to the TrueType font loader. (lib/gs_ttf.ps)
+
+Adds the remaining PDF Encodings to the predefined set. (lib/gs_lgo_e.ps,
+lib/gs_lgx_e.ps, lib/gs_mex_e.ps, lib/gs_mgl_e.ps, lib/gs_mro_e.ps)
+
+</pre><h3><a name="5.95_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - When printing an error message, a pointer/length string was
+incorrectly treated as a C string. (gdevpdfm.c)
+ - The treatment of text was completely broken by "improvements" made
+in 5.94. We think we've put things back to a state that at least isn't any
+worse than 5.93. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - The test for whether a glyph was present in a glyph set was wrong,
+possibly causing an infinite loop. (This never happened, because the code
+was masked by other bugs.) (gdevpdft.c)
+ - Testing the PDF compatibility level didn't work correctly, because
+of float/double mismatches. (gdevpdfx.h, gdevpdfp.c)
+ - Embedded TrueType fonts were still written in binary even if
+ASCII85EncodePages was true. (gdevpdff.c)
+ - Embedded TrueType subsets didn't use Flags to indicate that they
+had a non-standard cmap. (gdevpdff.c)
+ - Contrary to the obvious reading of the PDF specification, it
+appears that the default encoding for embedded fonts, if no BaseEncoding is
+specified, is StandardEncoding, *not* the built-in encoding of the font
+itself; and that any differences from StandardEncoding must be listed
+explicitly. (gdevpdft.c)
+
+Adds parsing for the new Acrobat Distiller 4.0 parameters, under #ifdef
+POST60. (lib/gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
+
+Ensures that the Mac encodings are loaded when writing PDF. (devs.mak)
+
+Works around an Acrobat 3 bug: The only cmap table that works in TrueType
+fonts is format 0, which can only reference glyphs up to 255. Consequently,
+a TrueType font whose Encoding references glyphs above 255 cannot be
+embedded (as a font). (gdevpdft.c)
+
+Changes the default CompatibilityLevel from 1.3 to 1.2. The majority of
+users are running Acrobat 3. (gdevpdf.c)
+
+</pre><h3><a name="5.95_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The T* operator was changed incorrectly to use the negative of the
+leading value. (lib/pdf_ops.ps)
+ - The Tz value scaled the X offset for Td and TD (which it
+shouldn't), occasionally causing strings to be displaced horizontally.
+(lib/pdf_ops.ps)
+ - sc[n]/SC[N] didn't work with 1-value color spaces, because the
+code incorrectly assumed the operand stack contained only the values on the
+PDF operand stack. (bug introduced by Annotation rendering in 5.94)
+(lib/pdf_base.ps, lib/pdf_draw.ps, lib/pdf_main.ps, lib/pdf_ops.ps)
+ - The HTP key in the graphics state caused an error if the
+interpreter didn't implement sethalftonephase. (lib/pdf_draw.ps)
+ - If there was no Names tree, invalid links (string Dest values)
+caused an error instead of being ignored. (lib/pdf_main.ps)
+ - An annotation with a Thread action caused an error.
+(lib/pdf_main.ps)
+
+Adds table entries, but not implementation, for the op and OPM keys in
+ExtGState dictionaries. (lib/pdf_draw.ps)
+
+Works around a bug in Adobe Acrobat Distiller 4.0 for Windows: it uses the
+value /Default with the BG, UCR, and TR keys in an ExtGState.
+(lib/pdf_draw.ps, lib/pdf_main.ps)
+
+Adds additional tracing for Functions. (lib/pdf_draw.ps)
+
+Implements the BG2, UCR2, and TR2 keys in ExtGStates. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.95_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - There was a (harmless) signed/unsigned mismatch. (imainarg.c)
+ - If build_gs_simple_font had to add any elements to the font
+dictionary, a temporary pointer to the CharStrings could become invalid,
+causing crashes or confusion. (zbfont.c)
+ - The check for known Encodings included some pseudo-Encodings.
+(zbfont.c)
+ - The error object wasn't reset to null before each call of the
+interpreter, possibly causing the garbage collector to mark it even if it no
+longer existed. (interp.c)
+
+Adds productfamily as a new predefined name, for the benefit of the Windows
+registry. (iinit.c)
+
+Changes the default color smoothness to 0.02 to match Adobe RIPs.
+(lib/gs_ll3.ps)
+
+Adds using the glyph_info procedure for Type 1 fonts, needed to fix the
+problem with seac and Type 1 embedded fonts. (zfont1.c)
+
+</pre><h3><a name="5.95_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Memory devices that may execute RasterOp must be initialized with
+an allocator (for temporary bitmaps), but sometimes they weren't.
+(gdevdrop.c)
+ - The computation of colors_used for images could cause arithmetic
+exceptions and/or produce incorrect results. (fix from Artifex)
+(gxclimag.c)
+ - A dead variable was getting incremented in a loop. (Small
+performance bug only.) (gsfunc0.c)
+ - The cached is_monotonic value in a function head was incorrectly
+declared bool rather than int. (gsfunc.h)
+ - The clip operators didn't always recognize empty clipping regions:
+sometimes they retained a 1-pixel-wide region. (gxcpath.c)
+ - The bbox device could get into a recursion loop if it had a
+non-null target with a non-standard fill_path procedure. (gdevbbox.c)
+ - The procedure u32 was defined in two places. (gsutil.h,
+gdevpsdt.c, gsutil.c, gstype42.c)
+ - The DataSource member of a sampled function wasn't reported to the
+garbage collector. (gsfunc0.h, gsfunc0.c) ****** MUST DO THE SAME FOR
+SHADINGS ******
+ - All name-type parameters (device and other) were converted as
+strings rather than names. (gsparam.c)
+ - Using a mask Pattern with an anti-aliased device could make
+invalid memory accesses and cause a crash. (gxpcmap.c)
+ - math_.h was included unnecessarily. (gxfill.c, gxhint3.c)
+ - In a few places, (fixed-point) coordinates were truncated towards
+zero rather than taking the floor. (It's likely that this had no effect.)
+(gxfill.c, gxpcopy.c)
+ - The join and cap values weren't taken into account when dividing a
+stroked path into bands, possibly causing some caps or joins to be dropped
+if they fell exactly at band boundaries. (gxclpath.c)
+ - An arithmetic overflow in gx_adjust_if_empty could produce
+incorrect output. (gxfill.c)
+ - Because the bbox device used a Y-inverted coordinate system, it
+could produce incorrect results for out-of-bounds coordinates. (gdevbbox.c)
+ - The default font_info procedure didn't compute MISSING_WIDTH if
+IS_FIXED_WIDTH wasn't requested. (gsfont.c)
+ - space_params wasn't managed properly, causing problems if the
+device altered the default values. (fix from Artifex) (gdevprn.c)
+ - The Macintosh cmap table for embedded TrueType fonts was written
+incorrectly. (gdevpsdt.c)
+ - The OS/2 table for embedded TrueType fonts could be inconsistent
+with the cmap table. (gdevpsdt.c)
+ - In embedded subset TrueType fonts, loca entries beyond the last
+occupied glyph contained garbage. (gdevpsdt.c)
+ - Embedded TrueType subsets didn't include the components of
+composite glyphs. (gdevpsdf.h, gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
+
+Changes the is_monotonic procedure of Functions so that it reports the
+direction of monotonicity of each value independently. This allows a larger
+class of functions to be detected as monotonic. (gsfunc.h, gsfunc0.c,
+gsfunc3.c)
+
+Works around a bug in Fontographer that causes it to produce (or at least
+allow users to produce) Type 1 fonts using seac in which the side bearing of
+the accented character differs from the side bearing of the base glyph. The
+published Type 1 specification and Adobe's engineers agree that such fonts
+are invalid, but the authors of Fontographer don't seem to care (this is the
+4th Fontographer bug that we have had to patch around so far). (gxtype1.h,
+gstype1.c, gxtype1.c)
+
+Adds gs_productfamily, for the benefit of the Windows registry. (gscdefs.h,
+gscdef.c)
+
+Adds a glyph_info procedure for Type 1 fonts, needed to fix the problem with
+seac and Type 1 embedded fonts. (gxfont1.h, gxtype1.c)
+
+Adds a gs_resize_struct_array procedure that either allocates or resizes an
+object. We have wanted this for quite a while. (gsmemory.h, gsmemory.c)
+
+Adds the remaining PDF Encodings to the predefined set. Also adds string
+names for the "real" encodings. (gsccode.h)
+
+Adjusts the format of embedded TrueType fonts to be closer to that produced
+by Acrobat Distiller, in the hope of making Acrobat Reader accept them.
+(gdevpsdf.h, gdevpsdt.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.94"></a>Version 5.94 (beta) (9/30/99)</h2>
+
+<p>
+This is (intended to be) the last beta candidate for the 6.0 release. Most
+changes other than added documentation are bug fixes. In order to address a
+last-minute problem report, we implemented a subset of Annotation rendering
+for PDF files.
+
+<p>
+At the request of the Free Software Foundation, we removed support for GNU
+readline from the Aladdin Ghostscript fileset. See <a
+href="Make.htm#GNU_readline">here</a> for more information.
+
+<p>
+We suspect that Acrobat's bugs and limitations still prevent embedded
+TrueType fonts in files created by the pdfwrite device from working
+properly, but we have neither the time nor the means to test this properly.
+
+<h3><a name="5.94_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - For OpenVMS with MMK or MMS, the third-party libraries are now
+located in [.&lt;lib&gt;] rather than [-.&lt;lib&gt;].
+ - The OpenVMS makefiles now select the same set of devices as the
+Unix makefiles.
+ - The MS Windows and MS-DOS default installation directory is now
+c:\Aladdin\gs#.# rather than c:\gs.
+ - All top-level makefiles now need a definition of BUILD_TIME_GS.
+(Drivers)
+ - The cljet5 driver is renamed cljet5pr; there is a new cljet5
+driver that doesn't attempt (and fail) to handle page rotation.
+(Interpreter)
+ - .getiodevice may return null.
+(Library)
+ - IODevices may now have a null name.
+
+</pre><h3><a name="5.94_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The documentation of font searching was still wrong in both
+places. (doc/Fonts.htm, doc/Use.htm)
+
+Notes that certain CodeWarrior code generation options produce incorrect
+code. (doc/Make.htm)
+
+Removes an inaccurate and obsolete comment. (lib/pdf_font.ps)
+
+Notes that newer versions of the SGI compiler use a different switch for
+setting the optimization limit. (doc/Make.htm)
+
+Notes that there may be code generation bugs in MSVC5 and later.
+(doc/Make.htm)
+
+Documents the new Fontmap.SGI file. (doc/Use.htm)
+
+Updates the documentation on installing Ghostscript on MS Windows.
+(doc/Install.htm)
+
+Documents the removal of the GNU readline interface. (doc/Current.htm,
+doc/Make.htm)
+
+</pre><h3><a name="5.94_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The instcopy script, supposed to handle incompatibilities between
+Unix `install' commands, didn't work. (instcopy, unixinst.mak)
+ - The Windows makefiles had an extra occurrence of `.' at the
+beginning of the default search path. (bcwin32.mak, msvc32.mak,
+msvclib.mak, watc*.mak)
+ - The OpenVMS makefile didn't automatically create the bin and obj
+directories if needed. (openvms.mak)
+
+Changes the OpenVMS MMK/MMS makefile to expect the third-party libraries in
+a subdirectory of the current directory, rather than a subdirectory of the
+parent. This makes it compatible with all the other makefiles.
+(openvms.mmk)
+
+Changes the OpenVMS makefiles to select the same set of devices as the Unix
+makefiles. (openvms.mak, openvms.mmk, unixansi.mak)
+
+Changes the Windows and OS/2 default search paths to match the new
+convention of installation rooted at c:\Aladdin. (bcwin32.mak, msvc32.mak,
+msvclib.mak, os2.mak, watc.mak, watclib.mak, watcw32.mak)
+
+</pre><h3><a name="5.94_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The Type 1/2 CharString printer didn't handle undefined opcodes
+correctly. (lib/type1ops.ps)
+ - There was no Unix script for pf2afm. (lib/pf2afm)
+ - The Type 1/2 font printing utilities didn't default lenIV to -1
+for Type 2, and didn't handle lenIV = -1 correctly in some places.
+(lib/type1ops.ps)
+ - The font2c utility used the version of font2c.ps from whatever
+existing Ghostscript executable was in the search path. Fixing this
+required adding a new parameter in all top-level makefiles, BUILD_TIME_GS.
+(cfonts.mak, bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak, openvms.mmk,
+os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watcw32.mak)
+ - The pfbtopfa usage message was incorrect. (lib/pfbtopfa.ps)
+
+</pre><h3><a name="5.94_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The pswrite driver didn't reset the clipping path when writing
+low-level images, possibly causing output to be clipped incorrectly.
+(gdevps.c)
+ - The PNG drivers implicitly declared png_init_io. Fixing this is
+only possible in libpng versions 1.0.3 and later. (gdevpng.c)
+ - The cljet5 driver (now cljet5pr) set rotated = true if the page
+was rotated, but didn't set it to false if the page wasn't rotated.
+(gdevclj.c)
+ - Embedded Type 1 fonts didn't include any FontInfo elements.
+(gdevpsd1.c)
+ - Specifying the DCTEncode filter for compressing images caused a
+crash. This problem is hard to fix correctly because of the complicated
+initialization requirements of the JPEG encoder. We patched around it by
+substituting FlateEncode (when available) for DCTEncode. (gdevpsdi.c)
+
+Renames the cljet5 driver, which has special (and incorrect) hacks to handle
+page rotation for the PCL interpreter, as cljet5pr; adds a new cljet5 driver
+without the hacks. (gdevclj.c)
+
+</pre><h3><a name="5.94_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
+up as an instance of the IODevice resource category, causing problems.
+(gp_msio.c, gp_os2.c)
+
+Adds a set of XBM/XPM icons in 4 sizes, contributed by Gintautas Grigelionis
+(eragigr@ki.ericsson.se). (lib/gs*.xbm, lib/gs*.xpm, unixinst.mak)
+
+Brings the Windows and OS/2 code up to date, fixing some minor problems.
+(gdevpm.c, gp_os2.c, gsos2.rc, gspmdrv.rc, os2.mak, pcwin.mak)
+
+</pre><h3><a name="5.94_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - The font directory scanner (FONTPATH) didn't recognize TrueType
+fonts tagged as 'true' rather than 0x00010000. (lib/gs_ttf.ps)
+
+Changes the TrueType font loader to use ISOLatin1Encoding for constructing
+the CharStrings if there is a Microsoft Unicode cmap and no glyph names in
+the post table. This seems like a hack, but we aren't sure what the right
+approach would be. (lib/gs_ttf.ps)
+
+Adds a Fontmap for SGI IRIX. This just comments out those fonts that are
+provided by DPS. (lib/Fontmap.SGI)
+
+</pre><h3><a name="5.94_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Writing Patterns could cause a memory access error. (bug
+introduced recently) (gdevpdfi.c)
+ - Filling with a pattern didn't reset the clipping path, possibly
+causing output to be clipped incorrectly. (gdevpdfi.c)
+ - Patterns weren't scaled correctly. (gdevpdfi.c)
+ - The data for large Patterns could exceed Acrobat Reader's limit on
+the length of a string. (gdevpdfi.c)
+ - copy_color did an extra gsave and concat. (gdevpdfi.c)
+ - Repeated color images weren't detected (performance bug only).
+(gdevpdfi.c)
+ - Names including control characters or spaces produced invalid
+output. (gdevpdfx.h, gdevpdfu.c)
+ - A matrix multiply was in the wrong order, causing fonts with
+non-zero translation in the FontMatrix to render at incorrect coordinates
+(sometimes off the page).
+ - If a font had one of the 14 standard names but had some characters
+defined by PostScript procedures, the output file would be invalid.
+(gdevpdft.c)
+ - The graphics state line parameters were kept in two different
+copies, causing bookkeeping errors. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c,
+gdevpdfu.c)
+ - If a page's BeginPage procedure did anything other than erase the
+page to white, the resulting PDF file was invalid. (gdevpdf.c)
+ - Articles with the same title weren't merged properly.
+(gdevpdfm.c)
+ - The Threads element of the catalog wasn't an indirect object.
+(gdevpdf.c)
+ - Thread actions incorrectly converted the destination (thread
+title) to a name, rather than leaving it as a string. (gdevpdfm.c)
+ - Fonts with the same name as the built-in ones, but not the
+standard definitions, produced possibly incorrect output. (gdevpdff.c)
+ - The writer didn't recognize attempts to use Encodings with the
+standard fonts that mentioned characters not present in the font's glyph
+set. (gdevpdft.c)
+
+Ensures that the WinAnsiEncoding is loaded when writing PDF. (devs.mak)
+
+</pre><h3><a name="5.94_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The default (identity) CMap didn't map CID 0 to glyph 0.
+(pdf_fonts.ps)
+ - TrueType fonts with an explicit Encoding didn't work properly.
+(lib/gs_ttf.ps)
+ - If an embedded Type 1 font executed definefont more than once,
+the wrong thing would happen. (lib/pdf_font.ps)
+ - The T* operator used the negative of the leading value.
+(lib/pdf_ops.ps)
+
+Implements a subset of Annotation rendering: only Widget annotations, only
+Normal appearance, only S and D borders, no rounded-corner borders. We did
+this at the very last minute before the release, in order to respond to a
+bug report, and it probably has some bugs. (lib/pdf_draw.ps,
+lib/pdf_main.ps)
+
+</pre><h3><a name="5.94_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - If an input buffer boundary fell at exactly the wrong place, an
+image whose input was coming from a stream could fail to read the stream EOD
+marker. (This is quite an old bug.) (zimage.c)
+ - On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
+up as an instance of the IODevice resource category, causing problems.
+(lib/gs_res.ps, ziodev.c)
+ - errorinfo in $error was undefined, rather than null, initially and
+after errors that didn't set it deliberately. (lib/gs_init.ps)
+ - The InkParams resource category was defined even in systems that
+didn't support in-RIP trapping. (lib/gs_ll3.ps, lib/gs_res.ps,
+lib/gs_trap.ps)
+ - CID fonts with 0-length data caused an error. (lib/gs_cidfn.ps)
+ - Type 10 halftone dictionaries were broken -- perhaps they never
+had worked. (lib/gs_ll3.ps)
+
+Makes FontInfo entries available through the extended font API, needed to
+allow embedded Type 1 fonts to include those entries. (zfont1.c)
+
+Makes it possible to determine whether the current file is a resource file,
+needed to allow distinguishing between built-in and input-embedded fonts.
+(lib/gs_ccfnt.ps, lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_res.ps,
+lib/gs_type1.ps, zfont.c)
+
+Moves support for GNU readline from the main Ghostscript fileset to the
+GNU-specific fileset. (unix-gcc.mak, int.mak, gp_gnrdl.c =>
+src/gnu/gp_gnrdl.c, gnu/src/gnudevs.mak)
+
+</pre><h3><a name="5.94_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The CCITTFaxDecode filter didn't correctly handle the case where
+the last code of a 1-D row was a black code and occurred less than 7 or 8
+bits before the end of the input stream. (We thought we fixed this in 5.86,
+but we missed one case.) (scfd.c)
+ - If an input buffer boundary fell at exactly the wrong place, an
+image whose input was coming from a stream could fail to read the stream EOD
+marker. (This is quite an old bug.) Fixing this involved a possibly risky
+change to the definition of sbuf_min_left and the already fragile logic in
+sreadbuf: the fix does solve this problem, but we aren't at all certain it
+didn't introduce new ones. (stream.h, stream.c)
+
+</pre><h3><a name="5.94_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The default implementation of copy_tile didn't pass the bitmap id
+for complete tiles, missing potential optimizations (performance bug only).
+(gdevdbit.c)
+ - The patch edges of ShadingType 7 shadings were ordered
+incorrectly, producing incorrect output in some cases where the surface
+folds over itself. (gxshade6.c)
+ - Flushing internal buffers when rendering an image didn't clip the
+flushed data, producing incorrect output. (gxidata.c)
+ - Non-zero data_x values for banded images produced incorrect band
+list data. (It's astounding that this problem hasn't shown up before.)
+(gxclimag.c)
+ - Banded images rotated by 90 degrees could produce "seams" or
+garbage if they crossed band boundaries. (This is at least the third time
+we have "fixed" this problem.) (gxclimag.c, gxifast.c)
+ - Circles or ellipses defined by pairs of 180-degree arcs produced
+incorrect output when banding. (gxclpath.c, gxclrast.c)
+ - setgray et al simply cleared the Pattern pointer in the client
+color rather than adjusting its reference count. (gscolor.c, gscolor1.c)
+ - The saved graphics state for bitmap/pixmap patterns contained a
+reference to the Pattern color, causing Patterns to be retained when they
+shouldn't be and causing unwanted recursion when freeing them. (gsptype1.c)
+ - Patterns containing halftoned CMYK colors rendered as all black.
+(bug probably introduced in 5.6x) (gxcht.c)
+ - Because of a typo, CMYK halftoning with only a single plane could
+put too much yellow into the output. This appears to be quite an old bug.
+(gxdither.c)
+ - The error code from running out of band list memory wasn't
+propagated if the condition was detected in cmd_put_drawing_color, causing
+low-memory recovery not to be invoked. (gxclpath.c)
+ - (Same error code problem) in clist_change_tile. (gxclbits.c)
+
+Adds more font attributes to the set available through a standard API.
+(gxfont.h)
+
+Adds more statistics to the filling algorithm. (gxfill.c)
+
+Adds an is_resource flag to fonts, to indicate that they originated from a
+resource rather than being embedded in an input file. (gxfont.h, gsfont.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.93"></a>Version 5.93 (beta) (9/11/99)</h2>
+
+<p>
+This is the next candidate for the 6.0 release. As with 5.92, all changes
+other than added documentation are bug fixes.
+
+<h3><a name="5.93_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Every stream whose state includes any GC-traceable pointers must
+now have a set_defaults procedure that clears those pointers.
+
+</pre><h3><a name="5.93_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - There was an extra /ul tag. (doc/Release.htm)
+ - Fontmap.GS wasn't mentioned as needing to be installed.
+(doc/Install.htm)
+ - Some documentation for the handling of seac was incorrect.
+(gxtype1.c)
+
+Removes references to installbsd, which are no longer relevant.
+(doc/Install.htm)
+
+Updates the information on building with NeXTSTEP. (doc/Make.htm)
+
+</pre><h3><a name="5.93_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The install command had unpredictably different syntax from one
+"standard" Unix system to another, causing `make install' to fail. We
+replaced the install command with our own script. (instcopy, dvx-gcc.mak,
+unix-gcc.mak, unixansi.mak, unixtrad.mak)
+
+</pre><h3><a name="5.93_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - pcharstr.ps loaded type1ops.ps with run rather than runlibfile,
+causing an error. (lib/pcharstr.ps)
+
+</pre><h3><a name="5.93_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Attempting to embed a font whose Encoding included characters not
+present in the font produced invalid output. (gdevpsd1.c)
+ - Allocating a stream state didn't (automatically) clear all its
+internal pointers, possibly causing GC memory access errors. (gdevpsds.c)
+ - An #include of string_.h should have been memory_.h. (gdevpsdf.c)
+
+Disables compression for very small images. (gdevpsdi.c)
+
+</pre><h3><a name="5.93_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - Compiling gp_msio with MSVC's /MD switch caused a compile-time
+error. (gp_msio.c)
+
+</pre><h3><a name="5.93_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - A bookkeeping object was allocated with the wrong allocator,
+possibly causing access errors or garbage output. (gdevpdfu.c)
+ - Certain Patterns weren't treated as such, leading to very large
+output files. (gdevpdfi.c)
+ - If one of the base 14 fonts had a non-standard FontMatrix, the
+output disregarded this fact. This could cause double obliquing.
+(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - Articles never got an object ID assigned. (bug introduced in
+5.91) (gdevpdfm.c)
+
+</pre><h3><a name="5.93_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Changes the PDF interpreter to allow abbreviated filter names like /Fl for
+all streams, not just in-line images. This directly contradicts the
+published PDF specification, but Acrobat Reader allows it.
+(lib/pdf_base.ps)
+
+</pre><h3><a name="5.93_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Compiled fonts were broken by the introduction of i_ctx_p.
+(lib/font2c.ps, ccfont.h, iccfont.c)
+ - Allocating a stream state didn't (automatically) clear all its
+internal pointers, possibly causing GC memory access errors. (zfproc.c)
+
+</pre><h3><a name="5.93_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - Allocating a stream state didn't (automatically) clear all its
+internal pointers, possibly causing GC memory access errors. (scfx.h,
+slzwx.h, spngpx.h, strimpl.h, sbwbs.c, sdctc.c, seexec.c, sfilter1.c,
+siscale.c, szlibc.c)
+ - The PNG predictor streams could fail to process some data at the
+end of the input. (spngp.c)
+
+</pre><h3><a name="5.93_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some obsolete definitions for Turbo C could produce references to
+an undefined procedure (setmem) at link time. (memory_.h, string_.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.92"></a>Version 5.92 (beta) (9/2/99)</h2>
+
+<p>
+This is the next candidate for the 6.0 release. All changes other than
+added documentation are bug fixes.
+
+<h3><a name="5.92_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The News for 5.91 didn't include a summary. (doc/News.htm)
+ - The documentation for Microsoft platforms didn't mention that you
+must add the Ghostscript bin and lib directories to the PATH. (doc/Use.htm)
+
+Adds a file describing Aladdin's process for building, testing, and
+releasing Ghostscript. (doc/Readme.htm, doc/Release.htm)
+
+</pre><h3><a name="5.92_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - Fontmap.GS is now required, but wasn't installed. (unixinst.mak)
+ - A couple of documentation files weren't installed. (unixinst.mak)
+
+</pre><h3><a name="5.92_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The ps2pdf script for MS Windows used the wrong name for the
+executable. (lib/ps2pdf.bat)
+
+</pre><h3><a name="5.92_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - An uninitialized variable annoyed some compilers. (gdevpsdt.c)
+ - The PostScript-writing driver used the wrong allocator, causing
+possible memory access errors. (gdevps.c)
+ - The PostScript-writing driver didn't clear a pointer, causing
+possible GC errors. (gdevps.c)
+ - The PostScript-writing driver didn't have a correct GC descriptor,
+causing pointers to be corrupted. (gdevpsdf.h, gdevps.c, gdevpsdf.c)
+ - Embedded Type 1 fonts unnecessarily filled individual Encoding
+slots with /.notdef. (gdevpsd1.c)
+ - A large constant produced warnings on some compilers. (gdevpsdt.c)
+
+</pre><h3><a name="5.92_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Once again, gcc didn't complain about an ANSI-illegal extra
+semicolon in a declaration list. (gdevpdfo.h)
+ - Adds a cast to work around the fact that some compilers declare
+the return type of memchr as char * rather than void *. (gdevpdfr.c)
+ - The bookkeeping for whether a font had been written and freed was
+inverted, causing some fonts to be written many times and other fonts not to
+be written at all. (gdevpdf.c)
+
+</pre><h3><a name="5.92_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - More places needed workarounds for the alignment aliasing gcc bug.
+The bug only occurs if a pointer variable is dereferenced through a cast to
+a stricter alignment and then dereferenced later in its original form, so it
+doesn't affect very many places. (igc.c, igcref.c, isave.c)
+
+</pre><h3><a name="5.92_Streams"></a>Streams</h3><pre>
+
+Makes the stream GC descriptor public for subclassing. (stream.h, stream.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.91"></a>Version 5.91 (beta) (8/30/99)</h2>
+
+<p>
+This is the next beta for 6.0. It includes a major rewrite of the parts of
+the PDF writer that deal with resources and pdfmarks, as well as the usual
+bug fixes. There are still problems with embedded fonts, both TrueType
+(which sometimes don't show up at all) and Type 1 (which sometimes confuse
+Acrobat Reader 3).
+
+<h3><a name="5.91_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - An HTML tag was misplaced in the News file. (doc/News.htm)
+
+Notes that the Solaris FONTPATH scanning problem may be fixed.
+(doc/Use.htm)
+
+</pre><h3><a name="5.91_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - Many of the margin and width computations in ps2epsi.ps (not
+written by Aladdin) were wrong -- off by 1. It's only because the bugs
+masked each other or cancelled each other out that the code didn't produce
+errors more of the time. (lib/ps2epsi.ps)
+
+</pre><h3><a name="5.91_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Font subset glyphs weren't sorted early enough, causing Type 1
+embedded fonts to be written with inconsistent lengths. (gdevpsd1.c)
+
+Changes the BMP drivers so that they set the resolution in the BMP header
+rather than leaving it at 0. This solves some problems reported by users,
+but may cause others. (gdevbmpc.c)
+
+</pre><h3><a name="5.91_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - A change made in 5.90 was incorrect (we couldn't test it, because
+MS Windows and OS/2 systems can't be used over a network). (gp_msio.c,
+gp_os2.c)
+
+Adds some conditionalization to work around a bug in some recent versions of
+gcc/egcs. (stdpre.h, interp.c)
+
+</pre><h3><a name="5.91_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - If the extension of a font file name on GS_FONTPATH included any
+upper-case characters, the font would not be found. (lib/gs_fonts.ps)
+
+Allows fontmaps to contain &lt;string&gt; run or .runlibfile, to get rid of the
+Fontmap -&gt; Fontmap.GS link that VMS can't handle. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.91_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Very long arguments for pdfmark caused an ioerror, because the
+buffer used for converting them was fixed-length. (lib/gs_pdfwr.ps)
+ - pdfmarks couldn't refer to objects that hadn't been defined yet.
+(gdevpdfx.h, gdevpdfo.c)
+ - When a DOCVIEW pdfmark added an OpenAction key to the Catalog,
+it omitted the / before the name. (gdevpdfm.c)
+ - Font resources could be written in the middle of a page contents
+stream. (bug introduced in 5.90) (gdevpdff.c, gdevpdfu.c)
+ - As usual, there were some signed/unsigned char * mismatches that
+gcc didn't detect. (gdevpdff.c, gdevpdfm.c, gdevpdfo.c)
+ - Fonts used on a page but freed before the end of the page were
+omitted from the page's resource dictionary. (gdevpdfx.h, gdevpdf.c,
+gdevpdff.c, gdevpdft.c)
+ - /D or /Dest keys in Action pdfmark dictionaries dropped the first
+character of their value. (gdevpdfm.c)
+ - If a pdfmark added annotations to a page after the end of that
+page had been reached, those annotations would be lost. (gdevpdf.c)
+ - ANN, LNK, DEST, and PS pdfmarks ignored the object name, if any.
+(Only OBJ and BP processed the name.) Unfortunately, fixing this required a
+complete overhaul of the way that resources and PDF objects were represented
+internally. The result is both simpler and more general, but it involved a
+major upheaval in the PDF writer code. (lib/gs_pdfwr.ps, gdevpdfo.h,
+gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c,
+gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
+ - EP pdfmarks didn't close any open text context. (gdevpdfm.c)
+
+Adds debugging code to check the consistency of the embedded Type 1 font
+writer. (gdevpdff.c)
+
+Makes /A and /F at the top level of an annotation or outline pdfmark
+equivalent to /Action and /File respectively. See the code for more
+information. (gdevpdfm.c)
+
+</pre><h3><a name="5.91_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Degenerate Bezier curves could cause a division by zero.
+(gxpcopy.c)
+ - Some macros used in non-FPU configurations were missing some
+needed uses of const, and in one case an additional cast. (gxfarith.h,
+gxfixed.h)
+
+Changes the discard macro to upper-case. (stdpre.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.90"></a>Version 5.90 (beta) (8/20/99)</h2>
+
+<p>
+This is the first real candidate for the 6.0 release. It does not fix all
+known bugs, but it includes all planned functionality. New in this fileset:
+<ul>
+<li> - FunctionType 4 for PDF files.
+<li> - Alternate printer images for PDF files (-dUsePrinterImages
+ switch).
+<li> - pdfwrite support for PDF "Cos objects" (without compression for
+ streams).
+<li> - pdfwrite support for graphics objects named with BP/EP/SP
+ (without compression for the object definition).
+<li> - pdfwrite font subsetting and embedded TrueType fonts.
+</ul>
+
+<h3><a name="5.90_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - ref_stack_init now takes an additional argument.
+ - no_time_slice_proc is removed -- use 0 instead.
+(Library)
+ - Notification client procedures and the gs_notify_ procedures
+take different arguments.
+ - The common part of a gs_function_t structure has changed.
+ - gs_text_enum_init now returns a value that can indicate an error.
+ - The font font_info procedure now takes an additional argument.
+ - The IODevice open_device procedure is now defined as returning
+0 or 1 under specific circumstances.
+ - gxp1fill.h is renamed gxp1impl.h.
+ - Allocators now have an additional procedure they must implement,
+and a state member they must initialize.
+ - Most of the gs..basic.. structure definition macros have been
+renamed. The ptrs1_stringsN structure definition macros are removed.
+ - Implementations of the text API now must provide a resync
+procedure rather than a restart procedure.
+
+</pre><h3><a name="5.90_Documentation"></a>Documentation</h3><pre>
+
+Documents the new -dUsePrinterImages switch, and the expanded meaning of
+-Z~. (doc/Use.htm)
+
+Updates FSF's address in documentation. (lib/Fontmap.GS, lib/Fontmap.Sol,
+gdevcd8.c)
+
+Brings the PDF writer (ps2pdf) documentation up to date. (doc/Ps2pdf.htm)
+
+Updates the current-release documentation. (doc/Current.htm,
+doc/Readme.htm)
+
+Updates the problem-reporting procedure for contributed drivers, and some
+other new-user information. (doc/New-user.htm)
+
+</pre><h3><a name="5.90_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Because of a typo, the file gs_mgl_e.ps wasn't installed (on Unix
+systems) by 'make install'. (unixinst.mak)
+ - The .dev files for drivers didn't depend on devs.mak. (devs.mak)
+ - The X driver didn't include a needed dependency on the bbox
+device. (devs.mak)
+
+Incorporates the pdfmin package into the pdf package, since pdfmin was only
+provided for very small-memory environments and is no longer useful.
+(int.mak)
+
+Adds additional prototype-checking switches, which are important on 64-bit
+platforms and useful on all platforms, to the gcc compilation line.
+(unix-gcc.mak)
+
+</pre><h3><a name="5.90_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - A backquote was misplaced in the Unix ps2pdf script. (lib/ps2pdf)
+ - Some example files didn't have %! headers. (examples/alphabet.ps,
+examples/waterfal.ps)
+ - ansi2knr didn't handle preprocessor directives within a function
+header. (ansi2knr.c)
+
+Cleans up some minor compiler complaints. (genarch.c, genconf.c, echogs.c)
+
+</pre><h3><a name="5.90_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PostScript writer sometimes failed to reset the clip path,
+causing parts of the output to be omitted or to appear incorrectly.
+(gdevvec.c)
+ - There was a type mismatch in a conditional. (gdevxini.c)
+ - A constant array wasn't declared as static. (gdevpsdt.c)
+ - Once again, there were some signed / unsigned char mismatches that
+gcc apparently can't be forced to detect. (gdevpsdt.c)
+ - The alternative X drivers didn't have GC descriptors, which could
+lead to memory corruption. (gdevxalt.c)
+ - The alternative X drivers didn't handle the closing of the
+underlying X driver correctly, leading to a dangling pointer. (gdevxalt.c)
+ - Font subsetting didn't eliminate duplicate glyphs (glyphs
+referenced more than once from the Encoding vector.) (gdevpsd1.c,
+gdevpsdt.c)
+ - Type 1 font subsetting didn't ensure the presence of .notdef.
+(gdevpsd1.c)
+ - The embedded TrueType font writer wrote all 16-bit values
+incorrectly. This could explain a lot! (gdevpsdt.c)
+
+Cleans up public functions with no previous prototype. (gdevtfax.h,
+gdevx.h, gdevdfax.c, gdevtfax.c, gdevx.c, gdevxini.c, gdevxxf.c)
+
+Adds some procedures to support font subsetting. (gdevpsdf.h, gdevpsdf.c)
+
+Adds an alternate font name for writing TrueType fonts. (gdevpsdt.c)
+
+Makes the TrueType font writer generate an OS/2 table, a Macintosh cmap, and
+a name table (for the font name), as well as a Windows cmap and post, if
+necessary. (gdevpsdf.h, gdevpsdt.c)
+
+</pre><h3><a name="5.90_Platforms"></a>Platforms</h3><pre>
+
+Updates a couple of clients for the change in the IODevice open_device
+procedure, eliminating some undesirable externs. (gp_msio.c, gp_os2.c)
+
+</pre><h3><a name="5.90_Fonts"></a>Fonts</h3><pre>
+
+Adds OS/2 and maxp to the list of tables that must be preserved when loading
+TrueType fonts. (lib/gs_ttf.ps)
+
+Registers the complete lists of glyphs in the Adobe Latin fonts as
+pseudo-encodings. (lib/gs_lgo_e.ps, lib/gs_lgx_e.ps, unixinst.mak)
+
+</pre><h3><a name="5.90_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes bugs:
+ - One built-in font was sometimes substituted for another.
+(gdevpdff.c)
+ - Use of composite fonts often produced a rangecheck error.
+(gdevpdft.c)
+ - The structures for named objects were freed twice. (gdevpdfx.h,
+gdevpdf.c, gdevpdfo.c)
+ - The code to avoid writing a blank between a Td command and
+following text was fragile and still incorrect after being "fixed" twice.
+We removed this minor optimization, at a small cost in file size when not
+compressing. (gdevpdft.c)
+ - No Names tree was generated for named destinations specified as
+strings. Rather than do this, we now convert string destinations to names.
+This doesn't scale up well, but it is simple and also is compatible with all
+PDF versions from 1.1 on. (gdevpdfm.c)
+ - Fonts that define characters incrementally, such as the TrueType
+fonts written by some versions of the AdobePS Windows driver, could omit
+characters if embedded. Fixing this required delaying writing out fonts
+until the font was about to be freed or the writer was closed. (gdevpdfx.h,
+gdevpdff.c, gdevpdft.c)
+
+Cleans up public functions with no previous prototype. (gdevpdfx.h,
+gdevpdf.c, gdevpdfm.c)
+
+Updates client code for the change in gs_text_enum_init. (gdevpdft.c)
+
+Makes some changes towards handling show operations that must be split up
+internally into multiple operations using different fonts. (gdevpdfx.h,
+gdevpdff.c, gdevpdft.c)
+
+Implements the PUT pdfmark for the built-in objects (Catalog, DocInfo,
+Page<#>, ThisPage, PrevPage, NextPage). This required deferring writing out
+page objects until the end of the document. (lib/gs_pdfwr.ps, gdevpdfx.h,
+gdevpdf.c, gdevpdff.c, gdevpdfm.c, gdevpdfo.c, gdevpdfu.c)
+
+Adds table entries, but not parsing, checking, or functionality, for the new
+Acrobat 4 pdfmarks related to document logical structure. (gdevpdfm.c)
+
+Implements stream-type Cos objects. (lib/gs_pdfwr.ps, gdevpdfx.h,
+gdevpdf.c, gdevpdfm.c, gdevpdfo.c, gdevpdfp.c, gdevpdfu.c)
+
+Implements BP/EP/SP pdfmarks. (gdevpdfx.h, gdevpdf.c, gdevpdfi.c,
+gdevpdfm.c)
+
+Changes enumeration and #defined names to upper case, and adds _t to type
+names. (gdevpdfx.h, gdevpdf*.c)
+
+Adds an OS/2 table for embedded fonts if missing. (gdevpdff.c)
+
+Makes the allocator for the PDF device's internal structures be the stable
+allocator of the device's allocator, not the C heap. This required
+correcting a number of GC descriptors. (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
+
+Replaces the text restart procedure with the new resync procedure.
+(gdevpdft.c)
+
+</pre><h3><a name="5.90_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Failure to find a font in the Resources dictionary signalled an
+/undefinedfont error (which does not exist) rather than /invalidfont.
+(lib/pdf_font.ps)
+
+Implements FunctionType 4 functions. (lib/pdf_draw.ps, zfunc4.c)
+
+Implements the -dUsePrinterImages switch to use "alternate" printer images
+when rendering. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.90_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some pointers were declared as ref * that actually could be
+ref_packed *, potentially confusing compilers that follow the new, stricter
+ANSI C rules about alignment aliasing. (idebug.h, idebug.c, igc.c,
+igcref.c, zmisc.c)
+ - cshow didn't restore the root font after executing the procedure,
+producing incorrect results if the procedure did a setfont. (ichar.h,
+zcfont.c, zchar.c)
+ - A needed const-breaking cast was omitted. (zmisc.c)
+ - The memory validator could cause an unaligned access. (ilocate.c)
+ - restore could free parts of the stacks that were still in use. We
+fixed this long-standing problem using the new concept of stable allocators.
+(interp.c)
+
+Moves the implementation of the abs operator to C, required for FunctionType
+4 support. (lib/gs_init.ps, zarith.c)
+
+Makes more operator procedures public, required for FunctionType 4 support.
+(zarith.c, zmath.c, zrelbit.c, ztype.c)
+
+Adds an additional parameter to ref_stack_init, to allow creating a
+temporary stack without having an allocator. (istkparm.h, istack.h,
+interp.c, istack.c)
+
+Cleans up public functions with no previous prototype. (files.h, ichar.h,
+icstate.h, ifilter2.h, ifrpred.h, ifwpred.h, igcstr.h, iimage.h, iimage2.h,
+iinit.h, imain.h, interp.h, iscanbin.h, ivmem2.h, oparc.h, opextern.h,
+icontext.c, igc.c, iinit.c, imain.c, inobtokn.c, interp.c, iscan.c,
+iscanbin.c, zchar.c, zcharout.c, zcolor.c, zcolor1.c, zcontrol.c, zdevice.c,
+zdpnext.c, zdps.c, zfdecode.c, zfile.c, zfilter2.c, zfont0.c, zfunc0.c,
+zfunc3.c, zfzlib.c, zgeneric.c, zht1.c, zht2.c, zimage.c, zimage2.c,
+ziodev.c, zmath.c, zpath1.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
+
+Updates client code for the tweak in the definition of the IODevice
+open_device procedure. (ziodev.c)
+
+Implements stable local and global VM allocators. This required changing
+more places than we would have liked. (ialloc.c, igc.c, ilocate.c, imain.c,
+interp.c, ireclaim.c, isave.c, zcontext.c)
+
+Removes the global member of gs_ref_memory_t, since it isn't used.
+(gxalloc.h, ialloc.c, zcontext.c)
+
+Adds more tracing to the relocation phase of the garbage collector.
+(igcref.c)
+
+</pre><h3><a name="5.90_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - jpeg_open_backing_store no longer had the correct arguments.
+(This had no effect in practice, since the procedure was never called.)
+(sjpegc.c)
+
+Cleans up public functions with no previous prototype. (scfdgen.c,
+scfetab.c, sjpegc.c, slzwce.c, slzwd.c, stream.c)
+
+Adds some tracing to the image scaling stream. (siscale.c)
+
+</pre><h3><a name="5.90_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A null OutputFile name could cause an error. (gxdevice.h,
+gsdevice.c, gsfname.c)
+ - Shading with non-monotonic Functions produced incorrect output.
+(gxshade1.c)
+ - An #undef didn't match the #define it was supposed to cancel.
+(gxchar.c)
+ - The default next_char_glyph procedure didn't handle FROM_CHARS or
+FROM_SINGLE_CHAR data sources. (gstext.c)
+ - When finalizing a forwarding device, the target pointer in the
+device wasn't cleared, leading to an incorrect attempt to access it later.
+(gdevnfwd.c)
+ - Interpolated images were broken, probably since 5.81.
+(gxiscale.c)
+ - Some color space implementation procedures hadn't been updated to
+add 'const' to the color space argument. (gscie.c)
+ - A constant had a signed/unsigned ambiguity on systems where
+sizeof(long) > 4. (gsccode.h)
+ - The font font_info procedure didn't provide for scaling.
+(gxfont.h)
+
+Simplifies the notification mechanism to remove the concept of client and
+generating object. Registration now just takes a closure (procedure +
+opaque data); events pass the closure data and event data. (gsnotify.h,
+gsfont.c, gsnotify.c)
+
+Changes gs_notify_unregister so that it can unregister all registrations of
+a particular client rather than only one. (gsnotify.h, gsnotify.c)
+
+Adds support for "vanilla" Functions at the library level. (gsfunc.h,
+gsfunc.c)
+
+Adds some tracing for Functions. (gsfunc3.c)
+
+Redefines function monotonicity to indicate whether the function is
+increasing or decreasing, and implements monotonicity correctly for all
+FunctionTypes except 4. (gsfunc.h, gxfunc.h, gsfunc0.c, gsfunc3.c)
+
+Makes Type 0 fonts check that they are being used with a string, not a
+character or (a) glyph(s). (gxtext.h, gschar.c, gschar0.c, gstext.c,
+gxchar.c)
+
+Cleans up public functions with no previous prototype. (gdevmem.h,
+gpcheck.h, gscie.h, gserror.h, gsmemory.h, gxcie.h, gxcldev.h, gxclpath.h,
+gxcmap.h, gxcspace.h, gxfixed.h, gxfont0.h, gxp1fill.h [deleted],
+gxp1impl.h, math_.h, std.h, gconf.c, gdevdrop.c, gdevm1.c, gdevm2.c,
+gdevm4.c, gdevm8.c, gdevm24.c, gdevmr1.c, gdevmr2n.c, gdevprn.c, gsbittab.c,
+gscdef.c, gscie.c, gsciemap.c, gscspace.c, gscscie.c, gsdevmem.c,
+gsdparam.c, gshtscr.c, gsimpath.c, gsiodev.c, gsmisc.c, gsnorop.c, gspath.c,
+gspcolor.c, gsptype1.c, gsropc.c, gsutil.c, gxacpath.c, gxclist.c,
+gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c, gxiscale.c,
+gxp1fill.c, gxpath2.c)
+
+Gets rid of some remaining vestiges of 16-bit ints. (gdevm1.c, gsbitops.c)
+
+Adds procedures to register clients for notification when a font is freed.
+(gxfont.h, gsfont.c)
+
+Defines the IODevice open_device procedure as returning 1 if it opened a new
+stream, 0 if it returned an existing stream. This eliminates some awkward
+externs.
+
+Adds the concept of a stable allocator -- an allocator that allocates from
+the same heap and in the same VM space as another allocator, but is not
+subject to save and restore. (gsmemory.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c, gsmemret.c, gsnogc.c)
+
+Adds some new macros to make defining new kinds of fixed-format structures
+simpler. (gsstruct.h)
+
+Replaces the text processing restart procedure with a more general resync
+procedure, which can be used to restart partway through a string. We retain
+gs_text_restart for backward compatibility and general usefulness.
+(gstext.h, gxtext.h, gdevbbox.c, gstext.c, gxchar.c)
+
+Adds the Adobe Latin glyph sets as pseudo-encodings. (gsccode.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.88"></a>Version 5.88 (tester) (8/3/99)</h2>
+
+<p>
+This fileset adds the ability to reference and embed TrueType fonts in PDF
+output. Unfortunately, even though the resulting PDF files work fine with
+Ghostscript itself, Acrobat Reader apparently can't handle embedded TrueType
+fonts with non-standard Encodings. We hope to fix this problem during the
+6.0 beta test period.
+
+<p>
+This fileset also adds the ability to buffer X Windows output in a
+client-side bitmap. This is typically more efficient than trying to push
+many small commands through the X client/server knothole, especially if
+bitmap images or RasterOp are involved.
+
+<p>
+Some reported problems have been deliberately left unfixed: we will need
+every minute of the 13 days before the start of the 6.0 beta test period to
+implement the last few items of functionality scheduled for the 6.0 release,
+and we can fix problems (but not add functionality) during the beta test
+period.
+
+<h3><a name="5.88_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The box_device member of the bbox device is replaced by the
+box_data member, with a different meaning.
+ - The x_rect structure is removed; all uses are changed to
+gs_int_rect.
+ - gdevpstr.h is renamed spprint.h.
+ - The parameter printing procedures are moved from gdevpsdf.[hc] to
+spsdf.[hc].
+ - Clients must now allocate gs_font* objects using gs_font_alloc or
+gs_font_base_alloc, not directly with gs_alloc_struct.
+ - The first (vptr) argument of enum_ptrs procedures is now const *.
+EV_CONST is no longer defined.
+ - The pep argument of enum_ptrs procedures is now enum_ptr_t *
+rather than const void **.
+ - The font glyph_pieces procedure is replaced with an option for
+glyph_info.
+ - The font encode_char procedure now takes an additional glyph_space
+argument.
+ - The o_large flag in object headers is renamed o_alone; o_lmark and
+o_lsize no longer exist. The DO_LARGE and DO_SMALL macros for enumerating
+objects in a chunk are also removed.
+
+</pre><h3><a name="5.88_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - News entries since 5.72 had a missing &lt;li&gt; in the table of
+contents entry. (doc/News.htm)
+ - gs_text_params_t still referred to REPLACE_X_WIDTHS and
+REPLACE_Y_WIDTHS rather than REPLACE_WIDTHS. (gstext.h)
+
+Clarifies that the font glyph_outline procedure must append a final moveto
+for the advance width. (gxfont.h)
+
+Clarifies that the font enumerate_glyph procedure enumerates glyphs in an
+unpredictable order. (gxfont.h)
+
+Documents that reference counted freeing procedures for structures with
+finalization must free the structure itself first rather than last.
+(gsrefct.h)
+
+Updates documentation on building Ghostscript on MS-DOS and MS Windows.
+(doc/Make.htm)
+
+Adds some documentation on how the makefiles are / should be structured.
+(doc/Source.htm)
+
+Documents the new parameters for the X driver. (doc/Use.htm)
+
+Updates the language documentation to refer properly to PostScript
+LanguageLevel 3 and PDF 1.3. (doc/Language.htm)
+
+</pre><h3><a name="5.88_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - An omitted space in a makefile caused an incompatibility with the
+VMS build utilities. (lib.mak)
+ - The gsindent script was omitted from the fileset. (gsindent)
+ - The core library didn't include stream.c, which is now required.
+(lib.mak)
+ - The workaround for the peculiarities of the Watcom compiler's
+command line syntax didn't work. (zlib.mak)
+ - A DOS command line overflowed in the makefile. We patched this by
+deleting the bmpgray device from the Borland Windows platform.
+(bcwin32.mak)
+
+Provides a .lnk file required by the revised linking procedures on MS
+Windows. (gsdll32w.lnk)
+
+Straightens out the Watcom makefiles so that it is possible to build a
+Windows executable and DLL using the Watcom compiler. This required moving
+some parameters around in the other PC makefiles. (bcwin32.mak,
+msvccmd.mak, watc.mak, watcw32.mak, wccommon.mak, winint.mak, winlib.mak)
+
+</pre><h3><a name="5.88_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The X driver reported the wrong parameter name for errors in the
+value of the WindowID or .IsPageDevice parameter. (gdevxini.c)
+ - The X driver calculated the Y window dimension incorrectly when
+resizing the window if X and Y resolutions were different. (Never happens
+in practice.) (gdevxini.c)
+ - The bmpasep8 device was defined as gx_device_printer rather than
+gx_device_async. (gdevbmpa.c)
+ - Some casts between signed and unsigned char * were missing.
+(gdevpdff.c, gdevpdft.c)
+ - The PDF writer didn't handle reencoded characters properly in
+non-embedded fonts. (gdevpdfx.h)
+ - The PDF writer allocated new structures while being closed,
+causing memory corruption if the close procedure was called for
+finalization. (gdevpdff.c, gdevpsd1.c)
+ - The PDF writer tried to close the resource file twice. (bug
+introduced since 5.50) (gdevpdf.c)
+ - The PDF writer failed to work around a bug in Acrobat 3 Reader's
+Print function related to re-encoded fonts. (gdevpdft.c)
+ - The PDF writer incorrectly specified ASCII85Encode rather than
+ASCII85Decode for non-binary embedded fonts. (gdevpdff.c)
+ - The PDF writer didn't handle embedded fonts with a non-standard
+FontMatrix correctly. (gdevpdft.c)
+ - The PDF writer didn't handle reassigned characters correctly.
+(gdevpdft.c)
+ - When embedding a Type 1 font, the PDF writer didn't check that the
+font contains only CharStrings (no PostScript procedures), no non-standard
+OtherSubrs, and no CDevProc. (gdevpsd1.c)
+ - There was an unused label in the mswinpr2 driver. (gdevwpr2.c)
+ - The X driver didn't flush buffered output before reading back
+bits from the display. (gdevx.c)
+ - The X driver still didn't set up the color mapping tables
+correctly -- in particular, it didn't initialize cman.color_to_rgb before
+setting up the dither ramp or cube. This is at least the third time we have
+"fixed" this problem. (gdevxcmp.c)
+
+Removes the remaining uses of gs_malloc, gs_free, and gs_memory_default from
+Aladdin's non-display drivers. (gdevbit.c, gdevbmp.c, gdevbmpa.c,
+gdevcgm.c, gdevclj.c, gdevcljc.c, gdevdjet.c, gdevlj56.c, gdevmiff.c,
+gdevpbm.c, gdevpcx.c, gdevpng.c, gdevpsim.c, gdevtfax.c, gdevtfnx.c,
+gdevxalt.c)
+
+Adds a MaxBitmap parameter to the X driver: the driver will maintain a
+full-window pixmap in memory if it requires no more space than MaxBitmap.
+The default value of this parameter is 0, meaning never use a client-side
+bitmap. (gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
+
+Moves the X device closing and get/put parameters procedures from gdevx.c to
+gdevxini.c. (gdevx.c, gdevxini.c)
+
+Removes some remaining uses of gs_malloc and gs_free from the X driver.
+Note that this requires making the X device structure properly
+garbage-collectable. (gdevx.h, gsstruct.h, gdevxini.c)
+
+Removes the remaining uses of 'register' from the X driver. (gdevx.c,
+gdevxini.c)
+
+Removes the remaining uses of the obsolete far_data keyword from Aladdin's
+non-PC drivers. (gdevbmp.c, gdevbmpa.c, gdevcgm.c, gdevlj56.c, gdevmiff.c,
+gdevp2up.c)
+
+Improves the X driver's algorithm for deciding when to update the screen,
+and makes its parameters available for reading and setting. (gdevx.h,
+gdevx.c, gdevxini.c)
+
+In the X driver's color mapper, improves performance slightly by replacing
+multiplies and divides with shifts and table lookups in the normal case of
+standard color maps. (gdevxcmp.h, gdevxcmp.c)
+
+Moves some filter-related code from the driver level to the stream level.
+(gdevpsdf.c)
+
+Moves some utilities for printing values in ASCII form from the driver level
+to the stream level. (devs.mak, gdevpdfx.h, gdevpstr.h [deleted], gdevps.c,
+gdevpsde.c, gdevpsdf.c, gdevpsdp.c, gdevpstr.c [deleted])
+
+Upgrades the PDF writer to handle TrueType fonts as well as Type 1.
+(gdevpdfx.h, gdevpsdf.h, gdevpdff.c, gdevpdft.c, gdevpsde.c => gdevpsd1.c,
+gdevpsdt.c)
+
+Starts to implement font subsetting in the PDF writer. (gdevpdfx.h,
+gdevpsdf.h, gdevpdff.c, gdevpsd1.c, gdevpsdt.c)
+
+Partially implements WMode when writing font descriptors. (gdevpdff.c)
+
+Changes psdf_binary_writer so that adding the ASCII85 filter in
+psdf_begin_binary doesn't require allocating any memory. (gdevpsdf.h,
+gdevpsdf.c)
+
+Makes the PDF writer guess the Ascent and StemV values for embedded fonts
+when it can't determine them by examining the font. (gdevpdff.c)
+
+Makes the PDF writer able to handle xshow and yshow (TEXT_REPLACE_WIDTHS).
+(gdevpdft.c)
+
+Updates code to reflect the addition of glyph_space to the font encode_char
+and enumerate_glyph procedures. (gdevpsdf.h, gdevpdff.c, gdevpdft.c,
+gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
+
+Removes some unnecessary #includes. (gdevxres.c)
+
+Removes the sample driver-based CRD from the variant X drivers, since this
+created a pointless dependency. (The `bit' drivers still provide this
+feature, for testing.) (gdevxalt.c)
+
+Changes the default compatibility level of PDF output from 1.2 (Acrobat 3)
+to 1.3 (Acrobat 4). (gdevpdf.c)
+
+</pre><h3><a name="5.88_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - A comment included an extra /*. (gp_mswin.c)
+ - The definitions for min and max in a couple of files disagreed
+with the ones typically provided in system header files. (dwimg.cpp,
+dwtext.cpp)
+
+Removes some unnecessary code related to generating temporary file names.
+(gp_iwatc.c)
+
+</pre><h3><a name="5.88_Fonts"></a>Fonts</h3><pre>
+
+Changes the loader for TrueType fonts to keep the 'instructions', which are
+required if the font is going to be written out in a PDF file.
+(lib/gs_ttf.ps)
+
+Adds some more debugging output to the TrueType font loader.
+(lib/gs_ttf.ps)
+
+Registers the MacGlyphEncoding so it can be made available to the PDF
+writer. (lib/gs_mgl_e.ps, lib/gs_ttf.ps, unixinst.mak, gsccode.h, ifont.h)
+
+</pre><h3><a name="5.88_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The serif and small-caps flags in the FontDescriptor were ignored
+when doing font substitution. (lib/gs_fonts.ps, lib/pdf_font.ps)
+ - The ri operator was undefined. We added a dummy definition.
+(lib/pdf_ops.ps)
+ - The redefinitions of restore could cause a recursion loop.
+(lib/gs_fform.ps, lib/gs_lev2.ps)
+ - There was an extra gsave executed for each page, causing the
+graphics state stack to grow deeper and deeper, which caused problems when
+wrapping up at the end of execution. (lib/pdf_main.ps)
+
+Implements the sh operator. (lib/pdf_draw.ps)
+
+Works around a bug in some PDF files generated by Adobe's PDF library (?),
+which attempt to create a font Encoding array with more than 256 elements.
+(lib/pdf_font.ps)
+
+</pre><h3><a name="5.88_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The GNU readline completion code (which Aladdin did not write) was
+completely wrong. (gp_gnrdl.c)
+ - The top-level restore sometimes tried to restore global VM an
+extra time, leading to memory corruption. (bug probably introduced in 5.85)
+(isave.c)
+ - The glyph_ref procedure was defined in two different places
+(inconsistently). (ichar.h, zchar.c, zchar1.c)
+
+Restructures the name table to improve cache coherence and to make it
+possible to store initial name strings in ROM. (iname.h, inamedef.h,
+inames.h, inamestr.h, igc.c, iname.c, isave.c)
+
+Changes the scanner so it doesn't copy name strings when scanning a compiled
+init string. This reduces RAM requirements by about 20K when using compiled
+initialization. (iscan.c)
+
+Removes redundant FontBBox correction code, since this is now handled by the
+library. (zfont42.c)
+
+Updates the Type 1 and Type 42 font code to implement the new font
+procedures. (icharout.h, zcharout.c, zchar1.c, zchar42.c, zfont1.c,
+zfont42.c)
+
+Simplifies the code that checks whether a grestore needs to do a
+setpagedevice. (zdevice2.c)
+
+Updates code to reflect the change of the vptr argument of enum_ptrs
+procedures to const *. (igcref.c)
+
+Updates code to reflect the change in the pep argument of enum_ptrs
+procedures to enum_ptr_t *. (igc.h, iscan.h, istruct.h, igc.c, igcref.c,
+ilocate.c, iscan.c)
+
+Updates code to reflect the addition of glyph_space to the font encode_char
+and enumerate_glyph procedures. (bfont.h, ifont.h, zbfont.c, zfont1.c,
+zfont32.c, zfont42.c)
+
+Cleans up some code details. (idebug.h, ifunc.h, iparray.h, istream.h,
+zfunc.c)
+
+Removes some no longer needed test code. (zfont1.c)
+
+Updates memory manager code to reflect the change from o_large to o_alone.
+(igc.c, igcref.c, ilocate.c, isave.c)
+
+Changes the printed font substitution message to be closer to what some
+Adobe products print if SHORTERRORS is defined. (Thanks to Andrew Chilvers
+for the suggestion.) (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.88_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The fix in 5.85 for ASCII85Encode EOLs was wrong and caused a word
+of data to be dropped occasionally. (sfilter2.c)
+
+Moves some filter-related code from the driver level to the stream level.
+(stream.h, stream.c)
+
+Moves some utilities for printing values in ASCII form from the driver level
+to the stream level. (lib.mak, spprint.h, spsdf.h, spprint.c, spsdf.c)
+
+Adds some more tracing output for image scaling. (siscale.c)
+
+</pre><h3><a name="5.88_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The bbox device's check for whether a rectangle filled the entire
+page was wrong. (gdevbbox.c)
+ - The bbox device didn't correctly handle parallelograms, triangles,
+or thin lines with points specified in other than ascending order.
+(gdevbbox.c)
+ - The bbox device smashed the reference count of the text enumerator
+it created, causing a memory leak. (gdevbbox.c)
+ - The bbox device didn't copy back all the dynamic information from
+a subsidiary text enumerator, with unpredictable results. (gxtext.h,
+gdevbbox.c, gstext.c)
+ - The default implementation of glyph_info for fonts incorrectly
+reported that it returned values for all members, not just the ones it knew
+about. (gsfont.c)
+ - The profiling implementation of memset was incorrect, leading to
+memory smashing. (gsmisc.c)
+ - The default implementation of glyph_info had a memory leak.
+(gsfont.c)
+ - The default implementation of character rendering didn't correctly
+handle the case where the character was in the cache and only the character
+width was requested. (gxchar.c)
+ - Text processing didn't correctly handle REPLACE_WIDTHS if the X
+and Y width arrays were different. (The PostScript interpreter never does
+this.) (gstext.h, gstext.c, gxchar.c)
+ - Compositing devices weren't initialized properly, leading to
+invalid accesses. This is the last (?) bit of the device reference counting
+bug tail. (gsalphac.c, gsropc.c)
+
+Changes the bbox device to make the procedures for managing the bounding box
+virtual, so the X device can be a subclass. (gdevbbox.h, gdevbbox.c)
+
+Changes the bbox device so it always adds the bounding box after doing the
+drawing operation rather than before, for the benefit of the buffering X
+device. (gdevbbox.c)
+
+Removes some remaining uses of gs_memory_default. (gdevdrop.c)
+
+Removes all uses of the obsolete far_data keyword from the library.
+(gconf.c, gdevbbox.c)
+
+Changes the bbox device so it doesn't run drawing algorithms twice if it has
+a target that uses the default implementation. (gdevbbox.c)
+
+Speeds up the implementation of fill_rectangle for 16-bit memory devices.
+(gdevm16.c)
+
+Makes TrueType fonts implement the new font procedures. (gxfont42.h,
+gxmatrix.h, gsmatrix.c, gstype42.c)
+
+Adds a gs_id to gs_font objects, so that fonts with the same name can be
+distinguished reliably without relying on the address. (gxfont.h, gsfont.c)
+
+Makes the vptr argument of enum_ptrs procedures be const *. This is a
+long-overdue change. (gsstype.h, gxxfont.h, gsalloc.c, gsfont.c,
+gsmemory.c) ****** REDO THE CONST-BREAKING CASTS IN gsfont.c ******
+
+Changes the pep argument of enum_ptrs from const void ** to enum_ptr_t *, to
+get rid of some hacks in enum_ptrs implementations that had to construct
+temporary gs_strings. (gsstruct.h, gsstype.h, gstext.h, gsalloc.c,
+gscolor2.c, gsfont.c, gsmemory.c, gstext.c)
+
+Adds a general mechanism that provides for an arbitrary number of clients to
+be notified when an event occurs. For the moment, we only use it to notify
+PDF writers when a font is about to be freed. (gsnotify.h, gsnotify.c)
+
+Makes fonts use the new notification mechanism to notify clients when the
+font is about to be freed. (gxfont.h, gsfont.c)
+
+Adds a gs_text_set_cache procedure to parallel restart and retry.
+(gstext.h, gxtext.h, gstext.c)
+
+Adds a glyph_space argument to the font encode_char and enumerate_glyph
+procedures, so that clients can choose between glyph names and glyph indices
+in environments that use both. (gsccode.h, gxchar.h, gxfont.h, gxfont42.h,
+gsfont.c, gstype42.c, gxchar.c)
+
+Changes the bbox device so it optionally considers white to be opaque.
+(gdevbbox.h, gdevbbox.c)
+
+Cleans up some code details. (gshsb.h)
+
+Adds a hack to suppress warning messages from the Watcom compiler about
+testing constant values. (stdpre.h)
+
+Replaces the glyph_pieces font procedure with a GLYPH_INFO_PIECES option for
+glyph_info. (gxfont.h, gxfont42.h, gsfont.c, gstype42.c)
+
+Adds a font_info font procedure, similar to glyph_info but giving
+information about the font as a whole. (gxfont.h)
+
+In order to fix a bug in resizing large objects, gets rid of the concept of
+large objects entirely, replacing it with the concept of an 'alone' object
+that is guaranteed to be the only object in its chunk. (gxalloc.h, gxobj.h,
+gsalloc.c)
+
+Adds some more tracing output for interpolated images. (gxiscale.c)
+
+Adds a _long parameter setting procedure to parallel _bool, _enum, and _int.
+(gsparamx.h, gsparamx.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.87"></a>Version 5.87 (tester) (6/29/99)</h2>
+
+<p>
+In this fileset, the pdfwrite device finally handles general Type 1 fonts,
+and can write them in both embedded and non-embedded form. This fileset
+also contains a few more changes to the text API, and some incompatible
+changes to the gs_font procedure vector: more such changes are likely. It
+also fixes a couple of long-standing pdfmark bugs.
+
+<p>
+NOTE: there are known problems in PDF output with non-embedded fonts (fonts
+represented only by a descriptor): some characters will be missing, and
+because of bugs in Acrobat's Print function, even more characters will be
+missing or wrong when printing from Acrobat. We will fix our problems, and
+work around Acrobat's bugs, in the next couple of filesets.
+
+<h3><a name="5.87_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Text enumerators now have a release procedure.
+ - gx_device_text_begin no longer stores its arguments into the
+enumerator: the driver text_begin procedure must do this.
+ - The argument list for the font encode_char procedure no longer
+includes the enumerator, and the second argument is now a gs_char rather
+than a gs_char *.
+ - The font next_char procedure is removed. (It has been obsolete
+for a while.) The next_glyph procedure is renamed next_char_glyph.
+ - The first argument of the font init_fstack, build_char, and
+next_glyph procedures is changed from gs_show_enum * to gs_text_enum_t *.
+ - gx_font_stack[_item] is renamed gx_font_stack[_item]_t.
+ - New font procedures have been added, of which two (enumerate_glyph
+and glyph_outline) are required. The font procedure vector has been
+reorganized.
+ - The Type 1 font next_glyph procedure is replaced by the gs_font
+enumerate_glyph procedure.
+ - psdf_embed_type1_font is renamed psdf_write_type1_font, and has
+an additional argument.
+ - psdf_alloc_param_printer takes slightly different arguments;
+print_binary_ok and print_ASCII85_ok are now upper-case.
+
+</pre><h3><a name="5.87_Documentation"></a>Documentation</h3><pre>
+
+Reorganizes the driver API documentation slightly, documents the fact that
+get_alpha_bits and draw_line are obsolete, and documents the driver text
+API. (doc/Drivers.htm)
+
+Documents an additional Irix configuration where the compiler doesn't work.
+(doc/Make.htm)
+
+</pre><h3><a name="5.87_Procedures"></a>Procedures</h3><pre>
+
+Moves the %pipe% IODevice into lib.mak, since it is now included on Windows
+as well as Unix. (lib.mak, unix-aux.mak)
+
+Adds the bmpgray driver to all platforms that include the other BMP drivers.
+(bcwin32.mak, msvc32.mak, os2.mak, unix-gcc.mak, watc.mak, watcw32.mak)
+
+</pre><h3><a name="5.87_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The PS and PDF writers didn't maintain the font embedding lists
+correctly. (gdevpsdp.c)
+ - The CreationDate in PDF output was always set to the current date,
+and couldn't be set with a pdfmark. We now don't set CreationDate at all,
+since it is supposed to be the creation date of the original document, not
+of the PDF file. (gdevpdfm.c, gdevpdfu.c)
+ - The Producer in PDF output couldn't be set with a pdfmark.
+(gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfu.c)
+ - pdfmarks with /Action /GoTo incorrectly retained the Action key.
+(gdevpdfm.c)
+ - pdfmarks didn't substitute /Dest => /D or /File => /F correctly.
+(gdevpdfm.c)
+
+Updates the PDF writer to use the new text API rather than the show
+pseudo-parameter. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
+
+Changes pdf_open_document so that it opens the document even if some
+resources have been allocated. (gdevpdf.c)
+
+Splits off pdfwrite utilities from top-level control, since the file was
+getting too big. (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
+
+When writing PDF, avoids resetting the word spacing parameter if the string
+doesn't contain any spaces, and the character spacing parameter if the
+string has no more than 1 character. (gdevpdft.c)
+
+Splits off PDF font handling from text handling, since the file was getting
+too big. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+
+Implement both embedded and non-embedded fonts beyond the base 14 in the PDF
+writer. This code doesn't work very reliably yet. (gdevpdfx.h, gdevpdff.c,
+gdevpdft.c)
+
+Adds a bmpgray driver that produces 8-bit gray-scale output. (devs.mak,
+gdevbmp.c)
+
+Updates the PDF writer for changes in the gs_font procedure vector.
+(gdevpdff.c, gdevpdft.c)
+
+Updates the Type 1 font writer for changes in the gs_font procedure vector,
+and adds some output options. (gdevpsdf.h, gdevpsde.c)
+
+Changes the printing parameter list implementation to take all of its
+parametric arguments in the params structure, and changes the names of the
+options. (gdevpsdf.h, gdevpsde.c, gdevpsdf.c, gdevpdff.c, gdevpdfi.c,
+gdevpdfu.c)
+
+</pre><h3><a name="5.87_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Indexed color spaces didn't allow the base space to be an indirect
+reference. (lib/pdf_draw.ps)
+ - The CS and cs operators didn't accept a literal color space name
+(as opposed to a color space resource name). (lib/pdf_draw.ps)
+ - Some PDF 1.2 files had a SM entry in graphics state dictionaries,
+even though this is not documented and requires a LL3 interpreter.
+(lib/pdf_draw.ps)
+ - Generated font names included a % character, which could cause
+problems for ps2pdf. (lib/pdf_font.ps)
+
+</pre><h3><a name="5.87_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The calculation of the final index when enumerating the pointers
+in a context state was incorrect. (source bug only, no effect on execution)
+(icontext.c)
+
+Updates the interpreter's glue code for the changes in the PDF writer.
+(lib/gs_pdfwr.ps)
+
+Updates a client to use gs_font_alloc. (zbfont.c)
+
+Updates clients for changes in the gs_font procedure vector. (zbfont.c,
+zchar1.c, zfont0.c, zfont1.c, zfont32.c)
+
+Updates a client for the change to psdf_write_type1_font. (zfont1.c)
+
+</pre><h3><a name="5.87_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some code used rc_decrement_only instead of gx_device_retain.
+(Stylistic bug only.) (gschar.c)
+ - The finalize procedure for the character cache device could get
+unset and/or the retained flag cleared, leading to a reference count not
+getting decremented. (gxccman.c)
+ - Allocating a show enumerator didn't clear the show_gstate member.
+(Probably no effect in practice.) (gschar.c)
+ - Cleaning up at the end of text processing was not consistent and
+sometimes didn't get done. The old API used explicit and separate client
+allocation (gs_show_enum_alloc), release (gs_show_enum_release), and freeing
+(gs_free_object); release, but not free, was automatic at the end of
+processing (in show_finish). The new API has allocation in gs_text_begin or
+gx_device_text_begin, no implicit release or free, and a single
+gs_text_release call to handle both release and free. Reconciling these
+required adding an auto_release flag in the gs_show_enum structure to
+indicate which API was used to create it, and a release procedure. (The
+auto_release flag is only needed for backward compatibility with clients
+that use the old API. Ghostscript itself no longer has such clients, but
+the PCL interpreters do.) (gxchar.h, gxtext.h, gdevbbox.c, gschar.c,
+gstext.c, gxchar.c)
+ - We were burned once again by gcc's acceptance of private/public
+procedure mismatches. (gxchar.c)
+ - A line break was missing between the return type and a procedure
+name. (gsstate.c)
+ - Show enumerators had an incorrect GC descriptor. (gxchar.c)
+ - Text enumerators didn't terminate their list properly. (gstext.c)
+
+Adds a debugging procedure that finds all the pointers to an object. This
+uses the GC's pointer enumeration procedures, so it will only work if all
+structures have correct GC descriptors. (Of course, we think this is true
+of all of Ghostscript.) The current implementation doesn't trace refs.
+(gsalloc.c)
+
+Removes remaining references from gxchar.c to procedures defined in
+gschar.c. The standard Ghostscript build now no longer needs gschar.c,
+although we will keep it for the moment for backward compatibility.
+(gschar.c, gxchar.c)
+
+Removes an obsolete reference to gs_show_enum. (gstype1.h)
+
+Adds definitions for the built-in encoding indices. (gsccode.h, gxfont.h,
+gxxfont.h)
+
+To make text_begin implementations callable, requires them, rather than
+gx_device_text_begin, to save their parameters in the enumerator structure.
+(gxtext.h, gstext.c, gxchar.c)
+
+Adds a TEXT_DO_CHARWIDTH alternative to the text operation, to just advance
+the current point by the character width (stringwidth rmoveto). (gscpm.h,
+gstext.h, gxchar.c, gxpath.c)
+
+Adds procedures to allocate and initialize fonts. (gxfont.h, gsfont.c)
+
+Starts to revise the gs_font procedure vector to create a real "font socket"
+API, adding several new procedures. This is a NON-BACKWARD-COMPATIBLE
+change, and there probably are more to come. (gxchar.h, gxfont.h, gsfont.c,
+gstext.c, gxchar.c)
+
+Moves the Type 0 font stack from gs_show_enum to gs_text_enum_t, and renames
+its types to gx_font_stack_[item_]t. Also moves cmap_code. (gxchar.h,
+gxtext.h, gschar0.c, gstext.c, gxchar.c)
+
+Moves the glyph enumeration procedure from Type 1 fonts to general fonts,
+changing its name to enumerate_glyph. (gxfont1.h)
+
+Changes the debugging code for reference counting to call procedures, to
+allow better breakpointing. (gsrefct.h, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.86"></a>Version 5.86 (tester) (6/14/99)</h2>
+
+<p>
+This fileset includes the first batch of changes for the new driver-based
+text API. Unfortunately, a few of them are non-backward-compatible.
+WARNING: This API is UNSTABLE and should not be used yet. This includes the
+APIs and structures in gxtext.h, and to a lesser extent those in gstext.h.
+
+<h3><a name="5.86_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The default initialization of fonts now sets next_glyph rather
+than next_char.
+(Library)
+ - The font argument of the driver text_begin procedure is no
+longer declared as const.
+ - Text enumerators now have a is_width_only and current_width
+procedures; the restart procedure is renamed retry, and there is a new
+restart procedure that does something different.
+ - The scale member of gs_text_enum_t is renamed log2_scale.
+ - gs_show_restore_font is removed.
+ - The current_char, current_glyph, width, and log2_current_scale
+members of gs_show_enum are removed (replaced by members of gs_text_enum_t).
+ - The current_width member of gs_text_enum_t is removed.
+ - Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single
+TEXT_REPLACE_WIDTHS.
+
+</pre><h3><a name="5.86_Documentation"></a>Documentation</h3><pre>
+
+Fixes a number of outdated URLs. (doc/Devices.htm, doc/Fonts.htm,
+doc/Install.htm, doc/Language.htm, doc/Make.htm, doc/New-user.htm)
+
+Documents the name change from gs_iso_e.ps to gs_il1_e.ps.
+(doc/Psfiles.htm)
+
+Documents the fact that a double % may be needed on MS systems.
+(doc/Use.htm)
+
+Documents that reversepath discards a trailing moveto, for compatibility
+with Adobe implementations. (gxpath2.c)
+
+</pre><h3><a name="5.86_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - Some punctuation was omitted that affects builds on VMS systems.
+(gs.mak)
+ - 'make install' didn't install doc/History5.htm. (unixinst.mak)
+ - The Borland makefile put some generated files in the top-level
+directory rather than the build directory. (bcwin32.mak)
+
+Updates the Unix install script for the name change of gs_iso_e.ps.
+(unixinst.mak)
+
+Moves the GNU-licensed drivers to a separate makefile. (contrib.mak,
+gnu/src/gnudevs.mak)
+
+Adds pipe.dev to the BC++, MSVC++, and OS/2 (GCC/EMX) platforms.
+(bcwin32.mak, dvx-gcc.mak, msvc32.mak, msvclib.mak)
+
+</pre><h3><a name="5.86_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems: - The usage message for pdf2ps was incorrect. (lib/pdf2ps,
+ lib/pdf2ps.bat)
+
+</pre><h3><a name="5.86_Drivers"></a>Drivers</h3><pre>
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (gdevpdf.c, gdevpdfo.c)
+
+Adds a user-contributed driver for the Oki Data OkiPage 4w+ LED printer.
+This is a GPL'ed driver. (contrib.mak, gnu/src/gdevop4w.c)
+
+</pre><h3><a name="5.86_Platforms"></a>Platforms</h3><pre>
+
+Adds a %handle% IODevice (mshandle.dev) to recognize file names of the form
+%handle%NNNNNNNN under MS Windows. GSview uses this feature in place of
+pipes, which are an open industry standard not supported by MS Windows.
+(msvc32.mak, winlib.mak, gp_mshdl.c)
+
+</pre><h3><a name="5.86_Fonts"></a>Fonts</h3><pre>
+
+Adds the ISO 8859-2 encoding to the stock of built-in encodings.
+(lib/gs_il2_e.ps, lib/gs_iso_e.ps => lib/gs_il1_e.ps)
+
+</pre><h3><a name="5.86_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Using a colored pattern with an uncolored Pattern color space
+caused an error. (lib/pdf_draw.ps)
+ - Embedded CIDFontType 2 fonts didn't work, and embedded TrueType
+fonts did an extra definefont. (lib/gs_ttf.ps, lib/pdf_font.ps,
+lib/pdf_ops.ps) ****** IN PROGRESS ******
+
+</pre><h3><a name="5.86_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some files hadn't been updated for the removal of the gs_imemory
+static. (int.mak, gp_gnrdl.c, imain.c, ztrap.c)
+ - %statementedit could append a spurious character if the last
+character of the statement was not whitespace. (bug probably introduced in
+5.8x) (ziodev.c)
+ - The show operators didn't properly handle the special case of
+executing within a cshow procedure for a non-CID font. (zchar.c)
+ - cshow applied to a composite font didn't scale the current font
+correctly (in fact, at all). (zcfont.c)
+ - If an error occurred within the procedure called by
+resourceforall, it wasn't reported. (lib/gs_res.ps)
+ - flushfile and closefile didn't correctly handle filters that only
+write a fixed amount of data. (zfileio.c)
+ - cshow didn't restore the font reliably after executing the
+procedure. (ichar.h, zcfont.c, zchar.c)
+ - An execstackoverflow error might temporarily leave the execution
+stack in an invalid state. (interp.c)
+
+Cleans up some macros. (iname.c, isave.c, iscan.c)
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (icontext.c, iname.c, isave.c, iscan.c,
+istack.c, zcontext.c, zfproc.c)
+
+Adds a run-time warning message if gp_gnrdl.c is included in a non-GNU
+build. (gp_gnrdl.c)
+
+Converts clients to use the gs_text procedures that replace the gs_show
+procedures, and to use gs_text_enum_t rather than gs_show_enum as the
+enumerator type. (ichar.h, zbfont.c, zcfont.c, zchar.c, zchar1.c,
+zchar32.c, zchar42.c, zcharout.c, zcharx.c, zfont.c, zfont0.c, zfont1.c,
+zfont32.c, zimage.c, zimage2.c)
+
+Updates the initialization code for the name change of gs_iso_e.ps.
+(lib/gs_init.ps)
+
+Splits off the definitions relating to name indices, in anticipation of
+defining some name indices statically. (inamedef.h, inameidx.h, iname.c)
+
+</pre><h3><a name="5.86_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The pixel-difference filters didn't initialize the previous sample
+to 0 at the beginning of each row. (spdiff.c)
+ - The CCITTFaxDecode filter didn't correctly handle the case where
+the last code of a row occurred less than 7 or 8 bits before the end of the
+input stream. (scf.h, shc.h, scfd.c)
+ - Flushing filters didn't work. (stream.c)
+ - The DCTEncode filter gave an error if asked to write to a string
+with less than 100 bytes of free space left when the end of the input data
+was reached. (sdct.h, sdcte.c)
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (stream.c)
+
+Changes the ASCII85Encode stream to reliably insert a newline at least once
+every 80 characters, rather than unreliably after at most 80 characters of
+data. (sfilter2.c)
+
+Cleans up some formatting. (stream.c)
+
+</pre><h3><a name="5.86_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - A client wasn't updated for the change in the declaration of
+gx_dht_proc. (bug introduced in 5.84) (genht.c)
+ - When rendering a 12-bit-per-sample color image, the device color
+wasn't initialized, possibly causing a memory access error when comparing
+the current color with the previous one. (gxi12bit.c)
+ - arch_floats_are_IEEE was incorrectly defined as
+arch_floats_are_ieee. (bug introduced in 5.83) (std.h)
+ - Decoding of IEEE floats on non-IEEE systems was wrong. (ibnum.c)
+ - The fast case of masked images in Pattern color spaces didn't
+work. (bug introduced since 5.50) (gxifast.c)
+ - cshow gave an error if there was no current point. (gxchar.c)
+
+Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single TEXT_REPLACE_WIDTHS.
+(gstext.h, gstext.c)
+
+Cleans up some macros. (gdevddrw.c, gsfont.c, gsht1.c)
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (gdevddrw.c, gdevplnx.c, gsalloc.c, gschar.c,
+gscolor.c, gscolor2.c, gscrd.c, gscsepr.c, gscspace.c, gsdevice.c, gsdsrc.c,
+gsfcmap.c, gsfont.c, gsfont0.c, gsht1.c, gshtscr.c, gsimage.c, gspcolor.c,
+gsptype1.c, gsstate.c, gstext.c, gxcmap.c, gxht.c, gxipixel.c, gxmclip.c,
+gxtype1.c)
+
+Adds gs_c_param_list_write_more, to switch a C parameter list back to write
+mode without clearing it. (gsparam.h, gscparam.c)
+
+Adds gs_grestore_only, to do a grestore without requiring 2 entries on the
+graphics state stack. (gsstate.h, gsstate.c)
+
+Completes a first bridge between the new driver text_begin procedure and the
+existing text API defined in gschar.h. The changes are backward-compatible
+for both clients of the APIs and (the few) implementors of text_begin,
+except that the font argument of text_begin is no longer const. Note that
+gschar.h is no longer used by any client, and in fact is deprecated.
+(gschar.h, gstext.h, gxfcache.h, gxtext.h, gzstate.h, gdevbbox.c,
+gdevnfwd.c, gschar.c, gsfont.c, gsfont0.c, gstext.c)
+
+Mostly splits off the existing text procedures from the default
+implementation of the new text facilities. (lib.mak, gxchar.h, gschar.c,
+gxchar.c)
+
+Makes the structure descriptor for gs_state public, for testing in gxchar.c.
+(gzstate.h, gsstate.c)
+
+Adds is_width_only and current_width procedures to the text enumerator;
+renames restart as retry, and adds a restart procedure for restarting with
+different parameters. (gstext.h, gxtext.h, gdevbbox.c, gschar.c, gstext.c,
+gxchar.c)
+
+Makes the masks for the subgroups of text operation parameters public.
+(gstext.h)
+
+Removes members of gs_show_enum that are superseded by members of
+gs_text_enum_t: current_char, current_glyph, width, and log2_current_scale.
+(gxchar.h, gxchar.c)
+
+Adds aliases for popen and pclose under WIN32. (pipe_.h)
+
+Moves gs_incachedevice from gschar.h to gsstate.h. (gschar.h, gsstate.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.85"></a>Version 5.85 (tester) (5/29/99)</h2>
+
+<p>
+This fileset removes a few more writable statics, and adds uniform support
+for %filedevice%filename syntax in OutputFile. Unfortunately, removing the
+static that held the interpreter's allocator group was almost as much of an
+upheaval as removing the statics for the interpreter stacks.
+
+<h3><a name="5.85_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - context_state_alloc now takes an additional parameter, as do
+obj_cvp, make_packed_array, parse_real_file_name, ref_stack_store,
+sread/write_proc, terminate_file_name, and a number of other internal
+interpreter procedures.
+ - scan_number now does not mark the result as new.
+ - The _param_list_read/write procedures now take an additional
+gs_ref_memory_t * parameter.
+ - It is no longer possible to store pointers to the interpreter's
+allocator group (gs_dual_memory_t) in structures or variables across a
+garbage collection.
+ - The save_level instance variable is moved from gs_dual_memory_t
+to gs_ref_memory_t.
+ - op_show_finish_setup can now fail.
+ - fname.h is renamed gsfname.h; the procedure names and parameters
+for %device%name file names are changed.
+ - gx_imager_stroke_add now takes an additional argument; a NULL
+value for the device argument of gx_stroke_path_only is no longer valid.
+ - gx_make_clip_translate_device now takes a memory parameter, and no
+container parameter; gx_make_clip_device no longer takes a container
+parameter; gx_mask_clip_initialize and tile_clip_initialize now take a
+memory parameter.
+
+</pre><h3><a name="5.85_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The language documentation still referred to outside clipping.
+(doc/Language.htm)
+
+Documents the new curve join graphics state parameter. (doc/Language.htm)
+
+Documents the fact that the OutputFile device parameter now supports the
+%device%file syntax. (gp.h, doc/Use.htm)
+
+Documents the licensing problems related to GNU readline. (int.mak,
+unix-gcc.mak, gp_gnrdl.c)
+
+</pre><h3><a name="5.85_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The bmpa devices needed gdevppla. (bug introduced in 5.84)
+(devs.mak)
+ - The bmpa devices were accidentally included in the DEVICE_DEVS
+setting in the distributed fileset. (unix-gcc.mak)
+ - msvclib.mak was missing some definitions. (msvclib.mak)
+
+Adds a CC_NO_WARN macro for those few files that produce tons of warnings
+that we can't work around. (bcwin32.mak, dvx-gcc.mak, msvccmd.mak,
+openvms.mak, openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watcw32.mak, wccommon.mak, devs.mak, lib.mak, zlib.mak)
+
+Adds version.mak to msvclib.mak, so library clients can track the version.
+(msvclib.mak)
+
+</pre><h3><a name="5.85_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - -replace didn't work if it was the last item of a module
+description. (genconf.c)
+
+</pre><h3><a name="5.85_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - CCITTFax-compressed bitmaps sometimes used both a Rows value and
+an end-of-block indicator, which some PostScript implementations don't
+handle properly. (gdevpsdf.h, gdevps.c, gdevpsdf.c)
+
+Removes an unused procedure and macro. (gdevlj56.c)
+
+</pre><h3><a name="5.85_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The interpreter cached objects even if the reference had the wrong
+generation number, causing errors if a correct reference occurred later.
+(lib/pdf_base.ps)
+ - Embedded TrueType fonts using the Macintosh encoding sometimes
+caused an error. (lib/gs_ttf.ps)
+
+</pre><h3><a name="5.85_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Multiple contexts were broken (probably since 5.80). Fixing this
+required adding a parameter to context_state_alloc, to provide systemdict.
+(icontext.h, icontext.c, interp.c)
+ - setpagedevice didn't accept the 4-element PageSize values that
+appear in the InputAttributes dictionary. (zmedia2.c)
+ - BuildChar/BuildGlyph was "short circuited" even in some cases
+where it wasn't safe to do so. (ichar.h, zchar.c, zcharout.c)
+ - The show operators didn't properly handle the special case of
+executing within a cshow procedure. (ichar.h, zcfont.c, zchar.c, zcharx.c)
+ - The -dDOINTERPOLATE switch had gotten broken somehow.
+(lib/gs_init.ps)
+ - The is_identity flag wasn't properly cleared when loading cached
+CIE mapping values, causing incorrect output. (zcie.c)
+
+Removes the writable static for the context scheduler. (zcontext.c)
+
+Removes the writable static for the interpreter's group of allocators
+(gs_imemory). This too turned out to be a massive change with many
+NON-BACKWARD-COMPATIBLE changes required in internal procedures. (bfont.h,
+files.h, fname.h, ialloc.h, ifunc.h, imemory.h, interp.h, iparam.h,
+iparray.h, ipcolor.h, isave.h, iscannum.h, istack.h, istream.h, iutil.h,
+store.h, ialloc.c, icontext.c, idebug.c, idict.c, iinit.c, imain.c,
+imainarg.c, interp.c, iparam.c, ireclaim.c, isave.c, iscan.c, iscanbin.c,
+iscannum.c, isstate.h, istack.c, iutil.c, zarray.c, zbfont.c, zcontext.c,
+zdict.c, zfname.c, zdps.c, zdps1.c, zfcmap.c, zdict.c, zfile.c, zfilter.c,
+zfont.c, zfont0.c, zfproc.c, zfreuse.c, zfunc.c, zfunc0.c, zfunc3.c,
+zgeneric.c, zht2.c, ziodev.c, ziodev2.c, zpacked.c, zpcolor.c, zshade.c,
+zupath.c, zvmem.c)
+
+Adds a gs_memory_t * argument to obj_cvp. This is part of the work for
+removing the gs_imemory static: we note it separately because it affects
+code beyond the interpreter. (iutil.h, gp_gnrdl.c, iutil.c, zfileio.c)
+
+Updates interpreter code for the addition of new_mask, test_mask, and
+save_level to gs_ref_memory_t, and the removal of save_level from
+gs_dual_memory_t. (ialloc.h, ialloc.c, isave.c)
+
+Adds a gs_ref_memory_t * argument to all the _param_list_read/write
+procedures. (iparam.h, iparam.c, zcrd.c, zdevice.c, zfdctd.c, zfdcte.c,
+zfdecode.c, zfilter2.c, ziodev2.c, zusparam.c)
+
+Changes the hack in file_alloc_stream that determines whether a gs_memory_t
+* is actually a gs_ref_memory_t *. The former code tested specifically
+whether the allocator was one of the current interpreter allocators; the new
+code simply tests the procedure vector. We aren't 100% sure that this
+change will work reliably. (zfile.c)
+
+Factors common code out of isave.h and store.h. (idosave.h, isave.h,
+store.h)
+
+Removes the reclaim_data member of gs_dual_memory_t, since it is no longer
+useful. (imemory.h, ialloc.c, ireclaim.c)
+
+Makes the default InputAttributes and OutputAttributes elements of page
+device dictionaries writable and (if possible) allocated in local VM, to
+work around bugs in the output of Word Perfect. (lib/gs_setpd.ps)
+
+Modifies the interpreter's error printout to indicate whether dictionaries
+on the stack(s) are writable. (lib/gs_init.ps)
+
+Moves support for %device%name file naming into the library. (fname.h,
+zfile.c, zfname.c [deleted])
+
+Adds interpreter support for the new curve join graphics state parameter.
+(zgstate.c)
+
+</pre><h3><a name="5.85_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - bbox_fill_path device didn't interact with compositors correctly.
+(This problem had no practical effect.) (gdevbbox.c)
+ - kshow didn't check for CID fonts. (gschar.c)
+ - The bbox and ImageType 3 image enumerators had incorrect GC
+descriptors, possibly causing memory-related crashes. (gsstruct.h,
+gdevbbox.c, gximage3.c)
+ - gx_make_clip_[translate_]device took an obsolete container
+parameter. (gxcpath.h, gsshade.c, gxccache.c, gxfill.c, gxstroke.c)
+ - Non-transient clipping devices were used for image clipping, but
+the API didn't support creating them. (gxcpath.h, gxclip.c, gximage3.c,
+gxipixel.c)
+ - Some devices were created without setting their memory member,
+which caused the GC not to trace pointers to them. (gxmclip.h, gxclip2.h,
+gxclip2.c, gximage3.c, gxmclip.c, gxp1fill.c)
+ - The bbox device didn't handle ImageType 3 images correctly.
+(gdevbbox.c)
+ - When the bbox device passed a stroke operation to the library, it
+didn't pass the device, causing absolute-length dots to render incorrectly.
+Fixing this required adding a device parameter to the gx_imager_stroke_add
+procedure. (gxpaint.h, gdevbbox.c, gxpaint.c)
+ - The counter control OtherSubrs (12 and 13) weren't implemented.
+(This probably had no effect.) (gstype1.c)
+ - Type 1 stem hints with negative widths didn't work properly.
+(gxhint2.c)
+ - The debugging output for hintmask and cntrmask printed the vstem
+and hstem counts in the wrong order. (gstype2.c)
+ - If the value of the OutputFile device parameter was too long,
+the result could be memory corruption rather than a rangecheck error.
+(gsdevice.c)
+ - The dash pattern pointer in the saved imager state of a band list
+writer could point inside the writer structure, confusing the garbage
+collector. (gxclist.h, gxclpath.c)
+
+Adds new_mask, test_mask, and save_level instance variables to
+gs_ref_memory_t. This too is part of the gs_imemory work: we note it
+separately because it is the only piece of this work that affects the
+library. (gxalloc.h, gsalloc.c)
+
+Makes cntrmask at the beginning of a charstring act like vstemhm + cntrmask,
+as with hintmask. This is not documented, but we see it used this way in
+Type 2 CharStrings. (gstype2.c)
+
+Cleans up formatting and macros. (gp.h)
+
+Speeds up the bounding box device by skipping path filling if the entire
+path falls within the already-accumulated bounding box, and by defining the
+device as 8-bit gray to avoid halftone computation. (gdevbbox.c)
+
+Adds a procedure, gs_show_use_glyph, for implementing the show-in-cshow
+hack. (gschar.h, gschar.c)
+
+Moves support for %device%file file naming into the library. (lib.mak,
+gsfname.h, gxiodev.h, gdevpipe.c, gsfname.c)
+
+Makes the OutputFile device parameter recognize %device%file syntax, as well
+as "-" and (on platforms that support pipes) |command. (gp.h, gxdevice.h,
+gdevprn.c, gsdevice.c, gp_unix.c)
+
+Adds a separate graphics state parameter to indicate how to treat joins
+between segments of a flattened curve, for compatibility with Adobe
+interpreters (which apparently always use bevel joins). (gsline.h,
+gxclpath.h, gxline.h, gsline.c, gsstate.c, gxclpath.c, gxclrast.c,
+gxstroke.c)
+
+Changes code slightly, introducing an unnecessary assignment, in order to
+suppress a compiler warning. (gxclpath.c)
+
+Tweaks the CIE_LOAD_CACHE_BODY macro slightly. (gscie.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.84"></a>Version 5.84 (tester) (5/19/99)</h2>
+
+<p>
+This fileset completes the implementation of planar rendering, and fixes a
+few more bugs, some of them surprisingly old.
+
+<h3><a name="5.84_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The dopath vector device implementation procedure was changed to
+take an optional matrix argument.
+(Library)
+ - The internal memory__need_ macros are changed to upper case.
+
+</pre><h3><a name="5.84_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - There was a duplicate entry for GENINIT_XE in the Watcom makefile.
+(wctail.mak)
+
+Adds the duplex-capable LaserJet drivers (ljet3d and ljet4d) to all standard
+configurations. (bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak,
+openvms.mmk, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak,
+watcw32.mak)
+
+Adds a PROFILE compilation switch, similar to DEBUG, to work around the fact
+that gprof under GNU/Linux doesn't count time in memset, memcpy, or other C
+library procedures. PROFILE will substitute our own versions of memset,
+memcpy, and memmove. Currently, this switch is supported only on Unix.
+(unix-end.mak)
+
+Defines a new makefile macro, SYNC, that gives the module name for thread /
+synchronization facilities; makes async.dev include this module. This is
+posync on Unix and VMS platforms, winsync on MS Windows and OS/2 platforms.
+(bcwin32.mak, dvx-gcc.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
+openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watclib.mak, watcw32.mak)
+
+Splits off the rules common to the 3 Windows makefiles (watc, watclib,
+winlib) into a separate file, defining new modules winplat.dev and
+winsync.dev. (watc.mak, watclib.mak, winlib.mak, winplat.mak)
+
+Removes -Wcast-align from the gcc switches, since this produces huge numbers
+of warnings that we will certainly never get rid of. (unix-gcc.mak)
+
+</pre><h3><a name="5.84_Utilities"></a>Utilities</h3><pre>
+
+Enhances the ps2pdf script with a patch contributed by Jim Avera
+(avera@fjst.com) so that it can be used as a pipe by specifying "-" for the
+input and/or output file. (lib/ps2pdf)
+
+Modifies ps2ascii to handle landscape pages better. (lib/ps2ascii.ps)
+
+</pre><h3><a name="5.84_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - PDF output that used Pattern colors on more than one page failed
+to include the color space resource in the resource dictionaries of pages
+other than the first. (gdevpdf.c)
+ - The PDF writer emitted bitmap patterns inverted in Y.
+(gdevpdfi.c)
+ - The PCL XL driver's GC descriptor had become incorrect, causing
+crashes. (gdevpx.c)
+ - The pdfwrite driver could still emit coordinates too large for
+Acrobat Reader to handle, for stroked lines with an unusual CTM.
+(gdevpdfd.c)
+ - The pxl drivers emitted invalid output for dashed lines.
+(gdevpx.c)
+ - The [e]pswrite and pxl drivers scaled line widths and dash
+patterns incorrectly. Fixing this properly involved refactoring the
+handling of scaling for paths, and removing gdev_vector_stroke_path.
+(gdevpsdf.h, gdevvec.h, gdevpdfd.c, gdevps.c, gdevpsdf.c, gdevpx.c,
+gdevvec.c)
+ - The lj5 drivers didn't pad images to a multiple of 4 bytes per
+scan line, producing invalid PCL XL output. (We don't see how they could
+ever have worked, in fact.) (gdevpcl.h, gdevlj56.c, gdevpcl.c)
+
+Adds a user-contributed driver for the DEClaser 2100. This is a GPL'ed
+driver. (contrib.mak, gnu/src/gdevln03.c)
+
+Makes the UsePlanarBuffer parameter, and planar buffering capability, from
+the PPM devices available to general printer devices, but in a separate
+module to avoid making all printer devices require gdevmpla.c. (gdevppla.h,
+gdevpbm.c, gdevppla.c)
+
+Adds a UsePlanarBuffer parameter to the async BMP drivers, for testing.
+(gdevbmpa.c)
+
+Removes the comment about the instability of the "vector" driver interface.
+(gdevvec.h, gdevvec.c)
+
+</pre><h3><a name="5.84_Platforms"></a>Platforms</h3><pre>
+
+Splits off the Windows thread and synchronization primitives into a new file
+and a new module, winsync.dev. (watc.mak, watclib.mak, winlib.mak,
+gp_win32.c, gp_wsync.c)
+
+</pre><h3><a name="5.84_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - As usual, gcc failed to flag some signed/unsigned char mismatches.
+(gp_gnrdl.c, iutil.c)
+
+Moves the indexed color space cache lookup procedure from the interpreter to
+the library. (zcsindex.c)
+
+</pre><h3><a name="5.84_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - If a 2-D CCITTFax stream ended with 1 or 2 "vertical 0" codes,
+those codes would be ignored. (scfd.c)
+
+</pre><h3><a name="5.84_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - gsnogc.h contained an extern for gs_gc_reclaim rather than for
+gs_nogc_reclaim. (gsnogc.h)
+ - Banded images in Indexed color spaces rendered incorrectly.
+(gximage.c)
+ - A function declared some arguments as float rather than floatp.
+(gshtx.h, gshtx.c)
+ - As usual, gcc failed to flag some public/private mismatches.
+(gdevmrun.c)
+ - The tracing output for monobit images printed 8 bits per pixel
+rather than 1 bit per pixel. (gxidata.c)
+ - A Pn macro was used in a header file that didn't include stdpre.h.
+(gscdefs.h, gconf.c, genht.c, gxhtbit.c, gxclrast.c)
+ - get_bits_rectangle for the planar memory device didn't flush the
+last byte of each row. (gdevmpla.c)
+ - When banding, Indexed color spaces using a procedure rather than a
+lookup table caused a crash. (gxcolor2.h, gscolor2.c, gxclrast.c)
+ - When filling a region with a Pattern with a rotated matrix, some
+parts of the region could be missed. (bug introduced by a fix in 5.38)
+(gxp1fill.c)
+
+When compiling with gcc, replaces inline with __inline__ to get rid of a
+potential warning. (stdpre.h)
+
+Adds our own implementations of memset, memcpy, and memmove, to work around
+the fact that gprof under GNU/Linux doesn't count time in C library procedures.
+(memory_.h, string_.h, gsmisc.c)
+
+Finishes implementing planar rendering for printer / banded devices.
+(gdevprn.h, gxclist.h, gxdevbuf.h, gdevprn.c, gxclread.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.83"></a>Version 5.83 (tester) (5/13/99)</h2>
+
+<p>
+This fileset was driven mostly by commercial licensee demands; it doesn't
+fix most of the problems reported in 5.82. It features smaller threshold
+halftones, the ability to store halftones in ROM, and a nearly complete
+implementation of a planar memory device.
+
+<p>
+Items pushed off to the next fileset:
+<ul>
+<li> - Finish multi-planar band buffers (requires changing
+gdev_prn_render_lines to be based on memory devices rather than buffer
+pointers).
+<li> - For Adobe compatibility, change stroking so that it always
+uses
+bevel joins between the segments of a curve (this directly contradicts the
+Red Book, but it's what Adobe interpreters do).
+<li> - Implement an IdiomSet for Corel Draw fountain fills?
+(idioms.ps)
+<li> - Change shading so it doesn't install a clip device (make this
+a
+driver procedure instead), because that prevents clist_fill_path from being
+called.
+</ul>
+
+<h3><a name="5.83_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The spaces.indexed member of a vm_spaces structure has been
+renamed spaces_indexed (a macro).
+ - The gs_reclaim procedure is changed to a macro, GS_RECLAIM.
+(Library)
+ - The bits member of a halftone order is now called bit_data, and is
+opaque; halftone orders are now "objects"; gx_ht_alloc_[ht_]order now take
+an additional argument.
+ - The architectural values in arch.h are now all upper-case.
+(std.h defines lower-case synonyms for backward compatibility.)
+ - The buffer device procedures for printer devices are now collected
+in a structure; this also changes the parameters of clist_init_params.
+ - The parameters of the buffered device setup_buf_device procedure
+are changed.
+ - gx_path_copy_reducing now takes an additional argument, an imager
+state, for flattening stroked paths.
+ - Memory devices now must be created by copying a prototype device,
+rather than by initializing individual members, even if they are only being
+used for limited purposes.
+
+</pre><h3><a name="5.83_Documentation"></a>Documentation</h3><pre>
+
+Documents the new facility for compiled halftones, and the old one for
+compiling initialization files. (doc/Make.htm)
+
+</pre><h3><a name="5.83_Utilities"></a>Utilities</h3><pre>
+
+Adds a utility for compiling halftones into the executable. Also defines
+the dependency lists for the auxiliary programs in lib.mak and int.mak,
+rather than replicating them for every platform. (bcwin32.mak,
+dvx-tail.mak, gs.mak, int.mak, lib.mak, msvctail.mak, openvms.mak,
+openvms.mmk, os2.mak, unix-aux.mak, wctail.mak, genht.c)
+
+Adds support for halftone "resources" in the makefile. (genconf.c)
+
+Adds code to determine the primary and secondary CPU cache sizes
+empirically. (genarch.c)
+
+Changes the architecture definition macros from lower to upper case, with
+lower-case synonyms in std.h for backward compatibility. (gsjconf.h, std.h,
+genarch.c)
+
+Changes the ps2ai utility so that jtxt3 can be set from the command line, to
+allow pstoedit to generate AI3-compatible output. (lib/ps2ai.ps)
+
+</pre><h3><a name="5.83_Procedures"></a>Procedures</h3><pre>
+
+Adds some optional library modules to the base library compilation list, so
+that compilation errors won't slip through. (lib.mak)
+
+</pre><h3><a name="5.83_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - A change from char to byte needed to be undone (gcc didn't catch
+this). (iutil.c)
+
+Adds a 167x167 stochastic halftone that CalComp put in the public domain.
+(lib/ht_ccbnm.ps, int.mak, unixinst.mak)
+
+Updates the interpreter for the change to per-VM-spaces garbage collection.
+(igc.h, ialloc.c, icontext.c, igc.c, ilocate.c, imain.c, interp.c,
+ireclaim.c, isave.c, zfile.c, zht.c, zht1.c, zht2.c)
+
+Updates places that only use gsstruct.h for extern_st to use gsstype.h
+instead. (icontext.h, ifont.h)
+
+</pre><h3><a name="5.83_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some types needed updating to reflect the change in the string
+freelists. (gsalloc.c, gsnogc.c)
+ - clip_copy_color didn't initialize some variables in the fastest
+case. (bug probably introduced in 5.83) (gxclip.c)
+ - The fit_fill_ and fit_copy_ macros didn't always parenthesize
+their dev argument. (gxdevice.h)
+ - The sample_load macros returned the wrong results for depth 1 and
+2. Amazingly enough, it appears that this case had never been used.
+(gsbitops.h)
+ - The standard allocator would free chunks even if is_controlled was
+true. (gsalloc.c)
+ - Stroking drew semicircles rather than full circles for round
+joins. (gxstroke.c)
+ - The calculation of how finely to sample a curve to achieve a
+particular flatness didn't take line width into account when stroking (the
+flatness has to apply to the outside of the stroked curve). (gxpath.h,
+gxpcopy.c, gxstroke.c)
+
+Speeds up the bbox device a little. (gdevbbox.c)
+
+Speeds up the most common cases of clipping a little. (gxclip.h,
+gxacpath.c, gxclip.c)
+
+Makes halftone orders more "object-oriented", so we can use an alternate
+representation that trades time for space. This requires a
+NON-BACKWARD-COMPATIBLE CHANGE in the gx_ht_order structure and the
+arguments of gx_ht_alloc_[ht_]order. (gxcldev.h, gxdht.h, gzht.h, gsht.c,
+gsht1.c, gshtscr.c, gshtx.c, gsistate.c, gxcht.c, gxclimag.c, gxclrast.c,
+gxht.c, gxhtbit.c)
+
+Makes it possible to compile-in halftone threshold arrays and orders (e.g.,
+in ROM) so they don't take up RAM at execution time. (gscdefs.h, gxdht.h,
+gxdhtres.h, gzht.h, gconf.c, gsht.c, gsht1.c, gxclrast.c, gxhtbit.c)
+
+Adds some statistics to the 24-bit memory device (in DEBUG mode only, as
+usual). (gdevm24.c)
+
+Makes the 24-bit memory device optionally use memcpy for wide rectangle
+fills. We thought this got us a factor of 3 speedup on a Pentium with gcc's
+library, but it turned out to be a profiler artifact. (gdevm24.c)
+
+Cleans up some formatting. (gxclip.h)
+
+Dusts off the run-length-encoded memory device, changing it so it reverts to
+the unencoded representation when necessary. This code hasn't been tested,
+and is not currently used. (gdevmrun.h, gdevrun.c [deleted], gdevmrun.c)
+
+Adds more statistics to the clipping device. (gxclip.c)
+
+Adds an implementation of the MD5 Algorithm defined in RFC 1321, derived
+directly from the text of the RFC and not from the reference implementation.
+This code uses the zlib license, which is more liberal than the Aladdin or
+GNU licenses. (md5.h, md5.c)
+
+Finishes implementing the planar memory device, including generalizing it to
+store varying numbers of bits per plane rather than 1 bit per plane.
+(gdevmem.h, gdevmpla.h, gxdevmem.h, gdevmem.c, gdevmpla.c)
+
+Updates clients to initialize memory devices more fully, now required to
+distinguish chunky from planar devices. (gxpcmap.c)
+
+Mostly implements enhancing printer / banded devices so they can use a
+planar memory device for rendering and/or band buffering. The code
+currently works only in the non-banded case. (gdevprn.h, gxclist.h,
+gxdevbuf.h, gxdevcli.h, gdevprn.c, gxclist.c, gxclread.c)
+
+For testing, adds a -dUsePlanarBuffer=&lt;boolean&gt; parameter to the PPM devices
+to make them use a planar memory device. (gdevpbm.c)
+
+Cleans up some code formatting. (gdevmem.c)
+
+Makes the garbage collection procedure separately settable for each group of
+VM spaces. (In an environment with "async" rendering, the renderer has its
+owm VM space group.) Unfortunately, this involved a NON-BACKWARD-COMPATIBLE
+change in the vm_spaces structure. (gsgc.h, gsnogc.h, gsnogc.c)
+
+Updates a client for the change in gs_reclaim; also makes the renderer
+thread use the non-tracing garbage collector. (gdevprna.c)
+
+Updates the non-tracing GC to reflect its role as a garbage collection
+procedure in a vm_spaces. (gsnogc.c)
+
+Enhances the non-tracing GC so that if a chunk ever contains no strings, the
+string marking area reserved for the tracing GC is added to free space.
+(gxalloc.h, gsalloc.c, gsnogc.c)
+
+Changes the font cache allocator to use a different structure descriptor for
+its data so that memory dumps will show "font cache bytes" rather than just
+"bytes". (gxccman.c)
+
+Splits gsstruct.h into gsstype.h, which contains enough of the definition of
+structure type descriptors to support extern_st, and gsstruct.h, which is
+needed to actually define structure types. (gsstruct.h, gsstype.h,
+gxfmap.h)
+
+Updates places that only use gsstruct.h for extern_st to use gsstype.h
+instead. (gsbitmap.h, gsccolor.h, gscie.h, gxfont.h, gzpath.h, scommon.h,
+gscdevn.c, gscrd.c, gscrdp.c, gsshade.c, gxpath2.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.82"></a>Version 5.82 (tester) (4/24/99)</h2>
+
+<p>
+This fileset fixes a few odds and ends, removes a couple more writable
+statics, and improves performance in a couple of areas.
+
+<h3><a name="5.82_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - dict_uid_param now takes an additional argument, the interpreter
+context pointer.
+ - obj_cvp now takes a stream rather than a string.
+
+</pre><h3><a name="5.82_Documentation"></a>Documentation</h3><pre>
+
+Documents the -dGraphicsAlphaBits and -dTextAlphaBits switches; reorganizes
+the documentation of the -d/-s switches by function. (doc/Use.htm)
+
+</pre><h3><a name="5.82_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - Building with MSVC didn't work if COMPILE_INITS was selected.
+(msvctail.mak)
+ - The cp script didn't work on all MS-DOS systems, since the systems
+are incompatible with each other in undocumented ways. (cp.bat)
+ - Using ^ in a command line failed on Windows 98. (wccommon.mak)
+ - Watcom compilation under Windows NT didn't include some needed
+headers. (wccommon.mak)
+ - The Watcom compiler's quoting requirements were inconsistent.
+(gs.mak)
+ - GLCCWIN was used without being defined. The MS DOS/Windows
+makefiles really are a tangled mess.... (watc.mak)
+ - The build directories didn't get created automatically when
+compiling with the Watcom compiler. (watc.mak)
+
+Adds more optimization switches for Watcom compilation. (wccommon.mak)
+
+</pre><h3><a name="5.82_Utilities"></a>Utilities</h3><pre>
+
+Adds a pfbtopfa script. (unixinst.mak, lib/pfbtopfa, lib/pfbtopfa.bat,
+lib/pfbtopfa.ps)
+
+</pre><h3><a name="5.82_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - "Vector" drivers (currently only the PCL XL driver) filled
+polygons incorrectly. (gdevvec.c)
+ - The PCL XL drivers produced incorrect output for images. (We
+can't understand how they ever could have worked.) (gdevpx.c)
+ - The PCL XL drivers skipped blank pages. (gdevpx.c)
+ - The page origin for the clj driver was set incorrectly. (fix from
+Artifex) (gdevclj.c)
+ - The map_color_rgb procedure for the 32-bit CMYK bmp device was
+wrong, causing RasterOps to produce incorrect output. (fix from Artifex)
+(gdevbmp.c)
+
+Works around a bug in Acrobat Reader's Print command, by changing the
+scaling for bitmap patterns. (gdevpdfi.c)
+
+Cleans up some formatting and macros. (gdevpx.c)
+
+Factors out some common parameter-putting utilities. (gdevpsdf.h,
+gdevpdfp.c, gdevpsdp.c)
+
+</pre><h3><a name="5.82_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The DLL code "knew" it could only be compiled on Windows and OS/2
+platforms. (gsdll.c)
+
+Removes a Mac-specific file that is now moved to the Mac-specific archive.
+(gsdllmac.h [deleted])
+
+</pre><h3><a name="5.82_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - An invalidaccess could occur when repositioning the file after
+executing an image XObject. (lib/pdf_draw.ps)
+ - Indexed color spaces gave an error if the underlying space was
+represented as a name rather than an array. (bug introduced in 5.80)
+(lib/pdf_draw.ps)
+
+</pre><h3><a name="5.82_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The interpreter reentrancy changes broke the GNU readline
+interface. (gp_gnrdl.c, ziodev.c)
+ - The TrappingType resource category wasn't defined.
+(lib/gs_res.ps, lib/gs_trap.ps)
+ - CIE color spaces in shading patterns didn't work. (lib/gs_ll3.ps)
+ - Printing a string of more than 200 characters with == was broken.
+Fixing this required a NON-BACKWARD-COMPATIBLE change in the argument list
+of obj_cvp. (bug introduced in 5.80) (iutil.h, gp_gnrdl.c, idebug.c,
+iutil.c, zfileio.c)
+
+Changes the interpreter trace output to be somewhat more readable.
+(interp.c)
+
+Makes the linking of the binary token scanning procedure static rather than
+dynamic. (int.mak, inobtokn.c, iscan.c, zbseq.c)
+
+Makes the language level a property of the context, eliminating a writable
+static. (icstate.h, idparam.h, ilevel.h, icontext.c, idparam.c, iinit.c,
+interp.c, zcontext.c, zmisc2.c)
+
+Updates clients for the change in dict_uid_param. (zbfont.c, zfcmap.c,
+zpcolor.c, zshade.c)
+
+</pre><h3><a name="5.82_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - There was a signed/unsigned char * mismatch. (sfxfd.c)
+ - Some very picky compilers complained inappropriately about a
+const/non-const mismatch. (gxcht.c)
+ - The format of the string freelists didn't allow chunks with more
+than 64K bytes of string area. (gxalloc.h, gsnogc.c)
+
+Moves the interface definitions for the memory dump debugging code into a
+header file. (gxalloc.h, gsalloc.c)
+
+Makes the standard memory manager recognize more effectively when it can
+reset the high-water mark for occupied space in the current chunk. This
+turns out to make a big difference in preventing sandbars. (gxalloc.h,
+gsalloc.c)
+
+Makes clipping lists keep track of their minimum and maximum X values, so
+that they can return accurate outer clipping boxes, which in turn allows
+more effective pre-clipping of filled regions. (gxcpath.h, gxacpath.c,
+gxclip.c, gxcpath.c)
+
+Makes clipping devices cache their clipping box, so they can return it
+quickly. (gxcpath.h, gxclip.c)
+
+Makes the colored halftone logic check bounding boxes before running the
+expensive algorithms. This improves performance dramatically for some files
+without costing much for the rest. (gxcht.c)
+
+Adds some more debugging printout for clipping lists. (gxcpath.c)
+
+Cleans up formatting and macros. (gdevdflt.c, gdevhit.c, gdevnfwd.c)
+
+Factors out some common parameter-putting utilities. (gsparamx.h,
+gsparamx.c, gstrap.c)
+
+Adds some more tracing output for images. (gxidata.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.81"></a>Version 5.81 (tester) (4/14/99)</h2>
+
+<p>
+This fileset cleans up most of the bug tail from 5.80, but it doesn't fix
+all the reported problems. It also factors out the platform-specific DLL
+calls, and extends the DLL API to the Mac.
+
+<h3><a name="5.81_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Platforms)
+ - gsdll_get_bitmap is now defined in gsdllos2.h; gsdll_copy_dib,
+_copy_palette, _draw, and _get_bitmap_row are now defined in gsdllwin.h.
+
+(Interpreter)
+ - zcolor_remap_one may return 0 rather than o_push_estack. (This
+change actually occurred in 5.80, but was not documented.)
+
+(Library)
+ - The initialized parameters of an image scaling filter are now
+stored in a subsidiary structure.
+ - The names max_support and log2_max_support are changed to
+MAX_ISCALE_SUPPORT and LOG2_MAX_ISCALE_SUPPORT.
+ - The structure definition for the smoothed image scaling filter is
+now private, although its descriptor remains public.
+ - The criteria for when to use Interpolate are now more stringent.
+
+</pre><h3><a name="5.81_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - gs_trap.ps wasn't installed by `make install'. (unixinst.mak)
+ - A semicolon was missing in one definition of GS_LIB_DEFAULT.
+(watc.mak)
+ - ll.tr and _temp_.tr weren't created in the obj directory.
+(watc.mak, wctail.mak)
+ - RM_ was defined incorrectly on one platform. (wccommon.mak)
+
+</pre><h3><a name="5.81_Utilities"></a>Utilities</h3><pre>
+
+Makes some minor edits in ansi2knr, contributed by a user, to remove gcc
+warnings. (ansi2knr.c)
+
+</pre><h3><a name="5.81_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - There was an int/uint mismatch. (gdevbmpa.c)
+ - There was a const/non-const mismatch. (gdevbmpa.c)
+
+Changes the p*m drivers so that they use the default color mapper when
+possible, speeding up execution. (gdevpbm.c)
+
+</pre><h3><a name="5.81_Fonts"></a>Fonts</h3><pre>
+
+Adds Black as indicating that a bold font should be substituted if
+necessary. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.81_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The Watcom NT compiler implements setmode and fileno but not
+_setmode and _fileno. (gp_ntfs.c)
+ - The procedure parameter passed to the Windows _beginthread
+procedure had the wrong prototype. (gp_win32.c)
+ - Watcom's _beginthread procedure takes an extra argument.
+(windows_.h, gp_win32.c)
+
+Extends the DLL API to work on the Mac. This required some restructuring of
+the code, and some NON-BACKWARD-COMPATIBLE changes to move
+environment-specific calls into environment-specific header files.
+(pcwin.mak, os2.mak, winint.mak, dwdll.h, gsdll.h, gsdllmac.h, gsdllos2.h,
+gsdllwin.h, dpmainc.c, dwdll.cpp, dwnodll.cpp, gdevmswn.c, gdevpm.c,
+gdevwdib.c, gsdll.c)
+
+</pre><h3><a name="5.81_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Changes the interpreter to handle two more specification-violating
+conditions that Adobe Acrobat accepts: truncation of %%EOF to %%EO, and use
+of Dest links with no Dests dictionary. (lib/pdf_main.ps)
+
+</pre><h3><a name="5.81_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - gcc failed to flag initialization of an automatic aggregate, which
+is allowed in neither ANSI nor traditional C. (iutil.c)
+ - The system name table lacked the last 3 entries.
+(lib/gs_btokn.ps)
+ - Interpolated images always wound up at (0, 0). (bug introduced in
+5.80) (gxipixel.c)
+ - The Watcom compiler didn't consider "const uint" and "const
+unsigned" to be compatible. (ifunc.h)
+ - The code to detect identity transfer functions could cause
+transfer functions not to be processed at all. (icolor.h, zcolor.c,
+zcolor1.c, zht2.c)
+ - The Level 2 redefinition of restore could do an extra grestore,
+possibly creating a temporary reference to a freed object. (zdevice2.c)
+
+Adds more tracing for undo-saves, and changes a macro to a procedure.
+(isave.c)
+
+Removes some #define'd casts. (isave.c)
+
+</pre><h3><a name="5.81_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - When banding, the color space wasn't reinitialized for each page.
+(gxclist.c)
+ - The criterion for allowing image interpolation still produced
+"mush" for some important classes of image. (gxiscale.c)
+ - The Watcom compiler didn't consider "const uint" and "const
+unsigned" to be compatible. (gscdefs.h, gconf.c)
+ - Identity black generation and undercolor removal functions weren't
+passed through the band list correctly. (gxcldev.h, gxclbits.c, gxclrast.c)
+ - Once again, gcc failed to give a warning for extern followed by
+private. (gxcdevn.h)
+ - glyphshow set up the text operation in a way that created a
+garbage collector error. (gschar.c)
+
+Makes gs_opendevice complete the device procedure vector if the device
+wasn't already open. (gsdevice.c)
+
+Factors out the image scaling filter so that we can use either Adobe's
+algorithm or the Mitchell filter. This involves a NON-BACKWARD-COMPATIBLE
+CHANGE in the way the filter parameters are defined. (gximage.h, siscale.h,
+sisparam.h, gxclimag.c, gxidata.c, gxiscale.c, siscale.c)
+
+Makes the criteria for when to use interpolation stricter, since we are
+still using the Mitchell filter. (gxiscale.c)
+
+Starts to implement Adobe's image interpolation algorithm. (siinterp.h,
+siinterp.c, gxiscale.c)
+
+Speeds up RGB interpolated images by detecting runs of output color.
+(gxiscale.c)
+
+Makes the default RGB color mapper a "known" mapper that can be propagated
+through device pipelines. (gxdevice.h, gsdevice.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.80"></a>Version 5.80 (tester) (4/6/99)</h2>
+
+<p>
+This version contains the first, and, we hope, largest wave of changes in
+the interpreter required to make the interpreter fully reentrant.
+Unfortunately, many externally visible APIs, including the argument list for
+operator procedures, required changes.
+
+<p>
+Because of the magnitude of the change, we incremented the version number to
+5.80.
+
+<p>
+The non-backward-compatible API changes were confined to the interpreter:
+the (very minor) changes to the library required to support interpreter
+reentrancy are fully backward-compatible.
+
+<p>
+This fileset also implements DeviceN color spaces (always using the
+alternate space), including Indexed spaces over DeviceN spaces, for all uses
+except smooth shading.
+
+<h3><a name="5.80_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - names_init now takes a gs_ref_memory_t * rather than a gs_memory_t
+*.
+ - type_print_strings, type_name_strings, and
+ref_type_properties_data are now REF_TYPE_DEBUG_PRINT_STRINGS,
+REF_TYPE_NAME_STRINGS, and REF_TYPE_PROPERTIES_DATA.
+ - The undocumented .writecvp operator, and obj_cvp, now take an
+integer instead of a Boolean to define the type of output desired.
+ - The argument list for operators is changed from os_ptr to
+i_ctx_t *. Many internal interpreter APIs have changed.
+ - The typedef name for operator procedures is changed from op_proc_p
+to op_proc_t.
+ - gs_interpret now takes an additional context (i_ctx_t **)
+argument.
+ - The interpreter's rescheduling and time-slicing procedures,
+gs_interp_reschedule_proc and gs_interp_time_slice_proc, now take a context
+(i_ctx_t **) argument.
+ - The Type 1 interpreter push_value callback is renamed push_values;
+the first argument of push_values and pop_value has changed from
+gs_font_type1 * to void *.
+ - dict_put*, dict_copy*, dict_undef, dict_resize, dict_grow, and
+dict_unpack now take an additional argument, a dictionary stack where the
+dictionary may be present.
+
+</pre><h3><a name="5.80_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The dependency list for the (dummy) trapping feature was wrong.
+(int.mak)
+ - The directory for jerror_.h was incorrect. (jpeg.mak)
+
+Removes the never-used -header switch from genconf. (genconf.c)
+
+Adds priority-sorted resources to genconf, currently used only for image
+classes. (genconf.c)
+
+Adds an imageclass resource to genconf, for what used to be called image
+strategies. (genconf.c)
+
+</pre><h3><a name="5.80_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ansi2knr didn't recognize id1(id2, xxxxx) as not being a function.
+(ansi2knr.c)
+ - viewpcx still referred to the deleted PCXDecode filter.
+(lib/viewpcx.ps)
+ - strlen was called without being declared. (genarch.c)
+
+</pre><h3><a name="5.80_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Some drivers that called gdev_prn_open_printer didn't check the
+return code for errors. (gdevdjet.c, gdevhl7x.c)
+ - The cljet5 driver didn't handle long-edge feed properly. (from
+Artifex) (gdevclj.c)
+ - The [e]pswrite driver could produce incorrect output if the input
+file had zero-length lines. (gdevps.c)
+ - The X driver didn't handle byte-swapped 16-bit displays.
+(gdevx.c)
+ - There was an int/uint mismatch. (gdevbmp.c)
+ - Some needed headers weren't included. (gdevdcrd.c, gdevpdfo.c)
+ - The updated mswinpr2 driver wouldn't compile with older Windows
+header files. (gdevwpr2.c)
+
+Removes some unnecessary #includes. (gdevps.c)
+
+Adds user-contributed drivers for the CoStar LabelWriter II Plus and XL
+label printers. (gdevcslw.c)
+
+Speeds up color mapping for the bitrgb driver a little, by using the default
+procedure. (gdevbit.c)
+
+</pre><h3><a name="5.80_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with odd-length glyf definitions caused an
+invalidfont error. (lib/gs_ttf.ps)
+
+Changes the font substitution mechanism slightly to be more useful to the
+PDF interpreter. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.80_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - Some needed headers weren't included. (watc.mak, watclib.mak,
+winlib.mak, gp_win32.c)
+
+</pre><h3><a name="5.80_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - There were many signed/unsigned char type errors that gcc didn't
+catch. (gp_gnrdl.c)
+ - The operator definition list for zdouble was too long. (int.mak,
+zdouble.c)
+
+Removes some unnecessary #includes. (zchar.c)
+
+Speeds up names_string_ref. (inamedef.h, inames.h, imain.c, iname.c)
+
+Speeds up reading string/name array parameters. (iparam.c)
+
+Refactors the implementation of ==, so that all types other than arrays and
+dictionaries are handled in C code. (lib/gs_init.ps, iutil.h, iref.h,
+gp_gnrdl.c, idebug.c, iutil.c, zfileio.c, ztype.c)
+
+Changes the type name for operator procedures from op_proc_p to op_proc_t,
+for consistency and also to help detect places that need the argument list
+changed. (ichar.h, interp.h, iref.h, opdef.h, interp.c, iutil.c, zchar.c,
+zcharx.c, zcontrol.c, zupath.c)
+
+Changes the argument type for operators from os_ptr to i_ctx_t *. (i_ctx_t
+is an alias for gs_context_state_t.) This also requires adding a context
+pointer to many internal procedures, or changing an os_ptr argument to
+i_ctx_t *. This is a MASSIVE NON-BACKWARD-COMPATIBLE change which we simply
+saw no way to avoid if the interpreter was to be made fully re-entrant. See
+"Incompatible changes" above for externally visible changes.
+(lib/gs_init.ps, bfont.h, btoken.h, dstack.h, estack.h, files.h, ichar.h,
+ichar1.h, icharout.h, icie.h, icolor.h, icontext.h, icsmap.h, ifilter.h,
+ifont1.h, igstate.h, iht.h, iimage.h, iimage2.h, imain.h, imemory.h,
+interp.h, ipacked.h, iref.h, iscan.h, istream.h, opdef.h, oper.h,
+opextern.h, ostack.h, ialloc.c, icontext.c, iinit.c, imain.c, inouparm.c,
+interp.c, ireclaim.c, iscan.c, iscanbin.c, zarith.c, zarray.c, zbfont.c,
+zbseq.c, zcfont.c, zchar.c, zchar1.c, zchar2.c, zchar32.c, zchar42.c,
+zcharout.c, zcharx.c, zcid.c, zcie.c, zcolor.c, zcolor1.c, zcolor2.c,
+zcontext.c, zcontrol.c, zcrd.c, zcsdevn.c, zcsindex.c, zcspixel.c,
+zcssepr.c, zdevice.c, zdevice2.c, zdict.c, zdosio.c, zdouble.c, zdpnext.c,
+zdps.c, zdps1.c, zfbcp.c, zfcmap.c, zfdctd.c, zfdcte.c, zfdecode.c, zfile.c,
+zfileio.c, zfilter.c, zfilter2.c, zfilterx.c, zfont.c, zfont0.c, zfont1.c,
+zfont2.c, zfont32.c, zfont42.c, zfproc.c, zfreuse.c, zfunc.c, zfzlib.c,
+zgeneric.c, zgstate.c, zhsb.c, zht.c, zht1.c, zht2.c, zimage.c, zimage2.c,
+zimage3.c, ziodev.c, ziodev2.c, zmath.c, zmatrix.c, zmedia2.c, zmisc.c,
+zmisc1.c, zmisc2.c, zmisc3.c, zpacked.c, zpaint.c, zpath.c, zpath1.c,
+zpcolor.c, zrelbit.c, zrop.c, zshade.c, zstack.c, zstring.c, zsysvm.c,
+ztoken.c, ztrap.c, ztype.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
+
+Changes caching for the interpreter's CIE color spaces so that instead of
+changing the color space installation procedure to one that schedules the
+sampling of the procedures though a back door, it leaves the installation
+procedure alone and schedules the sampling in the color-space-specific
+setcolorspace operator. This is needed for interpreter reentrancy.
+(icie.h, zcie.c, zcrd.c)
+
+Makes the linkage from the dictionary machinery to the cached values in the
+dictionary stack and the name table explicit, by adding a dstack pointer to
+all the relevant dict_* procedures. This is needed for interpreter
+reentrancy. (iddstack.h, idict.h, idstack.h, idict.c)
+
+Updates clients for the change in the dictionary API. For each changed
+dict_ procedure, we add an idict_ procedure that uses i_ctx_p-&gt;dict_stack as
+the additional argument. (iddict.h, icontext.c, iinit.c, interp.c,
+iparam.c, iscanbin.c, zdps.c, zfcmap.c, zdict.c, zfont.c, zfont0.c,
+zgeneric.c, zht2.c, zmisc2.c)
+
+Changes Pattern color remapping so that it saves information in the
+interpreter's part of the graphics state, rather than manipulating the
+e-stack directly. This is needed for interpreter reentrancy. (errors.h,
+icremap.h, igstate.h, interp.c, zgstate.c, zpcolor.c)
+
+Adds to the "main instance" structure a pointer to the currently executing
+context. This is needed for interpreter reentrancy. (imain.h, iminst.h,
+main.h, imain.c, imainarg.c)
+
+Changes the argument list for operator initialization procedures from void
+to i_ctx_t *. (opdef.h, ireclaim.c, zbfont.c, zbseq.c, zcontext.c, zfile.c,
+zfont.c, zpcolor.c)
+
+Changes the initialization of the interpreter's allocators so it doesn't
+presume the allocator structure is global. (ialloc.h, ialloc.c, imain.c)
+
+Factors out the structure definition of the stacks, which is needed for
+defining the state of a context, from the API, which is only needed by
+actual clients. (icstate.h, idsdata.h, idstack.h, iesdata.h, iestack.h,
+iosdata.h, iostack.h, isdata.h, istack.h)
+
+Changes filter error reporting so that the report_error procedure doesn't
+need access to the interpreter. (interp.h, interp.c, zfile.c, zfileio.c)
+
+Completes the implementation of DeviceN color spaces at the interpreter
+level. (lib/gs_res.ps, lib/gs_lev2.ps, lib/gs_ll3.ps, icsmap.h, zcsdevn.c,
+zcsindex.c, zcssepr.c, zimage.c)
+
+Speeds up color mapping for identity transfer, BG, or UCR functions.
+(zcolor.c)
+
+</pre><h3><a name="5.80_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The L range for Lab color spaces was wrong. (lib/pdf_draw.ps)
+ - Images in Lab color spaces came out all black. (lib/pdf_draw.ps)
+
+Improves the font substitution mechanism slightly. (lib/pdf_font.ps)
+
+</pre><h3><a name="5.80_Streams"></a>Streams</h3><pre>
+
+Adds an error string to the stream state structure, which stream
+implementations can set when returning an error. The motivation is to allow
+the PostScript interpreter to put this into $error.errorinfo. (scommon.h,
+stream.c)
+
+</pre><h3><a name="5.80_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The S_ISCHR fix in 5.73 had a typo. (stat_.h)
+ - The garbage collector traced dash pattern pointers even if the
+pattern had no elements. (gzline.h, gsistate.c)
+ - Always tracing the clip_path element of gx_device_clist for
+garbage collection could cause crashes, because this pointer could be stale.
+However, we have to trace this pointer if an image is being processed.
+(gxclist.c)
+ - A close-brace was positioned incorrectly. (No effect on the
+working of the code.) (gximage3.c)
+ - Some macros caused some compilers to complain about functions that
+didn't return values. (gsmemlok.c)
+ - A procedure vector wasn't declared const. (gsmemlok.c)
+ - Some needed headers weren't included. (gscrdp.c)
+ - A const pointer was being treated as non-const. (gxcpath.c)
+ - The algorithm for choosing halftone cell dimensions required an
+unreasonably close angle tolerance (0.01 degrees, rather than 1% of a
+90-degree possible difference). (gshtscr.c)
+
+Speeds up arcs a little more. (gspath1.c)
+
+Removes some unnecessary #includes. (gxclpath.h, gxcpath.h, gzcpath.h,
+gxccman.c, gxclip.c, gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c,
+gximono.c, gxiscale.c, gxpcmap.c)
+
+Cleans up some formatting. (gxpath.c)
+
+Re-enables image interpolation for images that have at least 8 bits of input
+data per pixel. This is still a compromise.... (gxiscale.c)
+
+Enhances the default implementation of parameter lists so that a C parameter
+list can forward unrecognized param_read calls to another parameter list.
+This allows constructing incrementally modified parameter lists for internal
+purposes. (gsparam.h, gscparam.c)
+
+Changes the first argument of the Type 1 charstring interpreter push_value
+(which is renamed push_values) and pop_value callbacks from the font pointer
+to an arbitrary pointer passed in to the interpreter. This is needed for
+PostScript interpreter reentrancy. (gstype1.h, gxfont1.h, gxtype1.h,
+gstype1.c, gxtype1.c)
+
+Adds an allocator wrapper that calls a closure to attempt to free up memory
+if an allocation fails. This is used for asynchronous operation (waiting
+for the page queue to empty) and operation with an optional disk for the
+band list. (gsmemret.h, gsmemret.c)
+
+Adds the retrying wrapper to the malloc allocator. (gsmalloc.c)
+
+Makes "async" printer devices use the retrying wrapper. (gdevprna.c)
+
+Makes clist_fill_parallelogram recognize rectangles. This makes a big
+difference for images rotated 90 degrees. (gsrect.h, gdevddrw.c,
+gxclpath.c)
+
+Arranges to construct the list of image classes (formerly called strategies)
+statically rather than dynamically. (lib.mak, gscdefs.h, gxiclass.h,
+gximage.h, gconf.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c,
+gxipixel.c, gxiscale.c)
+
+Implements Indexed color spaces for high-level image banding. (gxclist.h,
+gxclpath.h, gxclimag.c, gxclrast.c)
+
+Arranges to construct the blank bitmap for colored patterns statically
+rather than dynamically. (gsbitmap.h, gxbitmap.h, gxcht.c)
+
+Changes FORCE_STRIP_HALFTONES from a #define to a static Boolean.
+(gshtscr.c)
+
+Implements alternate-space DeviceN color spaces. (gscspace.h, gxcdevn.h,
+gscdevn.c)
+
+Implements DeviceN color spaces for images. (gximage.h, gsimage.c,
+gxi12bit.c, gxicolor.c, gxidata.c, gximage3.c, gximono.c, gxipixel.c)
+
+Speeds up color mapping a bit. (gxfmap.h, gsdevice.c, gsstate.c,
+gxclbits.c, gxclrast.c, gxcmap.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.73"></a>Version 5.73 (tester) (3/19/99)</h2>
+
+<p>
+This fileset fixes a few bugs and adds a couple of minor performance
+improvements. Its purpose is to fix a fairly serious memory management bug
+and a Microsoft-platform compilation problem, both introduced in 5.72.
+
+<h3><a name="5.73_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Removes the restriction on device registration that was introduced
+in 5.72.
+ - gx_[c]path_scale_exp2 are replaced by gx_[c]path_scale_exp2_shared.
+
+</pre><h3><a name="5.73_Documentation"></a>Documentation</h3><pre>
+
+Identifies GNU readline support as user-contributed, and adds the author's
+name. (int.mak, unix-gcc.mak, gp_gnrdl.c)
+
+Notes that an edit is required for GNU readline for AIX. (doc/Make.htm)
+
+Changes the bug reporting e-mail address to bug-gs@aladdin.com.
+(doc/Bug-form.htm, doc/New-user.htm, doc/Use.htm, imainarg.c)
+
+</pre><h3><a name="5.73_Procedures"></a>Procedures</h3><pre>
+
+Adds FEATURE_DEVS_EXTRA and DEVICE_DEVS_EXTRA, reserved for setting from the
+command line. (gs.mak)
+
+</pre><h3><a name="5.73_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - A needed cast was missing. (gdevx.c)
+
+</pre><h3><a name="5.73_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - A needed cast was missing. (zfname.c)
+ - The CFF loader didn't handle empty subsections correctly.
+(lib/gs_cff.ps)
+ - GNU readline gave an error, rather than expanding the input
+buffer, when called in response to %lineedit. (files.h, zfileio.c,
+ziodev.c)
+ - GNU readline wasn't always initialized, causing a crash when an
+attempt was made to shut it down. (iminst.h, imain.c)
+
+Adds more tracing to the CFF loader. (lib/gs_cff.ps)
+
+Adds some deconstifying casts to compensate for broken headers in the GNU
+readline package. (gp_gnrdl.c)
+
+</pre><h3><a name="5.73_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The bounding box device didn't ignore filling paths consisting
+only of a moveto. (gdevbbox.c)
+ - Some systems have S_IFCHR but not S_ISCHR. (stat_.h)
+ - The clipping list accumulator didn't merge single rectangles
+correctly. (gxacpath.c)
+ - The clipping list accumulator wasn't aggressive enough about
+merging rectangles. (Performance effect only.) (gxacpath.c)
+ - The page wasn't cleared when installing a new device. (bug
+introduced in 5.72) (gsdevice.c)
+ - With graphics anti-aliasing enabled, executing clip or eoclip
+followed by fill or stroke produced incorrect output. (bug introduced
+between 5.10 and 5.50) (gxpath.h, gspaint.c, gxcpath.c, gxpath2.c)
+ - The garbage collector could crash if any banded devices were
+active. (bug introduced in 5.72) (gdevprn.c)
+
+Changes memory management for device instances to allocate the structure
+type objects dynamically. This gets rid of a static, and also gets rid of
+the requirement that device prototypes be registered, at the expense of an
+extra copy of the (small) structure type object per instance of certain
+devices. (gscdefs.h, gxdevcli.h, gxdevice.h, gconf.c, gsdevice.c)
+
+Disables image interpolation for all high-resolution images, not just
+black-and-white, since this produces better-looking output. (gxiscale.c)
+
+Speeds up path bounding box computation a little. (gxpath2.c)
+
+Speeds up clipping a little. (gxclip.c)
+
+Cleans up formatting a bit. (gxacpath.c)
+
+Adds support for libpng version 1.0.3, but (for now) updates only the
+OpenVMS and Unix makefiles to use it. (libpng.mak, openvms.mak,
+openvms.mmk, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak)
+
+Attempts to work around picky compilers that don't allow assigning T[M][N]
+to const T[M][N]. (gxcht.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.72"></a>Version 5.72 (tester) (3/17/99)</h2>
+
+<p>
+This fileset finally gets rid of the need to have jpeg, libpng, or zlib
+source code on Unix systems that already have these libraries available. It
+also starts to add support for general DeviceN color spaces.
+
+<p>
+Works in progress:
+<ul>
+<li> - Fix Fontmap -&gt; Fontmap.GS link, which VMS can't handle.
+<li> - Make x11alpha do real alpha blending.
+<li> - spdiff.c is unfinished, partly wrong.
+<li> - DeviceN support is in progress. In gxcht.c,
+set_ht_colors_le_4
+and set_color_ht_gt_4 don't have any way to color-map >4 planes.
+</ul>
+
+<h3><a name="5.72_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The str argument of arg_push_memory_string is no longer const.
+ - The last argument of print_reloc is now const.
+
+(Library)
+ - Clients should never call the device open_device or close_device
+procedure directly: they should call gs_opendevice or gs_closedevice.
+ - The fn_free_functions procedure has been made private.
+ - The first argument of gs_currentpoint is no longer const.
+ - References to header files in the third-party libraries must now
+include a trailing _, i.e.: jerror_.h jmorecf_.h jpeglib_.h png_.h zconf_.h
+ - IJG JPEG library versions before v5a are no longer supported.
+ - ilog2 replaces small_exact_log2.
+ - Support for "outside" clipping has been removed.
+ - Clients that define their own devices now must either register
+them in the makefile (using the SET[P]DEV[2] macros) or set the stype
+pointer in the static prototype to the correct structure type (or at least a
+structure type with the correct procedures).
+
+</pre><h3><a name="5.72_Documentation"></a>Documentation</h3><pre>
+
+Clarifies the fact that clients should never call the device open_device or
+close_device procedure directly. (doc/Drivers.htm)
+
+Updates contact information for Artifex Software. (doc/Commprod.htm,
+doc/New-user.htm)
+
+Clarifies the fact that Aladdin did not write gdevcdj.c. (gdevcdj.c)
+
+Documents the new -TTYPAUSE switch. (doc/Use.htm)
+
+Adds SCO OpenServer 5.0.5 to the list of systems where Ghostscript is known
+to build. (doc/Make.htm)
+
+Notes that the MIPSpro 7.2.1.3m compiler produces incorrect output.
+(doc/Make.htm)
+
+</pre><h3><a name="5.72_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The Unix install directory ($(gsdatadir)) and the Unix default
+search path ($(gsdatadir)/lib) weren't compatible. (bug introduced since
+5.50) (unixinst.mak)
+ - The compilation rule for echogs omitted a dependency and also
+failed to specify a directory for header files. (unix-aux.mak)
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. (devs.mak, gs.mak, int.mak,
+lib.mak, jpeg.mak)
+
+Adds a -dTTYPAUSE switch to cause .confirm to read from /dev/tty instead of
+stdin, useful when the data input is a pipe. (lib/gs_init.ps)
+
+</pre><h3><a name="5.72_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - Some preprocessor macros were defined twice on VMS. (echogs.c)
+ - traceop.ps didn't build operator-tracing procedures in global VM.
+(This didn't matter before we introduced local pseudo-operators.)
+(lib/traceop.ps)
+ - geninit produced invalid output or hung if the input files didn't
+have the correct EOL representation for the platform. (geninit.c)
+
+Updates a (probably otherwise obsolete) file for the deletion of the private
+JPEG library error message table. (bughunt.sh)
+
+</pre><h3><a name="5.72_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - A procedure returning void tried to return a value. (gdevtfax.c)
+ - For 24-bit displays, XGetImage can return an image in which
+bits_per_pixel is 32 rather than 24, which is not at all obvious from the
+documentation; also, the bit and byte ordering may not be MSBFirst.
+(gdevx.c)
+ - XFree takes a char *, not a void *. (gdevx.c)
+ - The fix in 5.71 to adjust the width of TIFF images introduced
+another bug. (gdevtfax.c)
+ - If the X driver used a standard colormap, pixel values 255 and
+less didn't map back to RGB properly. (bug introduced in 5.71) (gdevxcmp.c)
+ - The ForceMono addition to gdevbit.c (in 5.71) was incorrect.
+(gdevbit.c)
+ - There was a const mismatch in an extern. (gdevxalt.c)
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. Fixing this required
+referencing all third-party library header files through *_.h files.
+(gdevjpeg.c, gdevpdfi.c, gdevpng.c, gdevpsdi.c, gdevpsdp.c)
+ - There was no way to cause the bounding box device to give up its
+reference to the target. (gdevbbox.h, gdevbbox.c)
+ - pdfwrite crashed if given a 12-bit-per-sample CMYK image when
+ConvertCMYKImagesToRGB was true, and produced invalid output for other
+12-bit-per-sample images (PDF limits bits-per-sample to 8). (gdevpsdi.c)
+ - pdfwrite mangled planar images if bits-per-sample was other than
+8. (bug introduced since 5.50) (gdevpdfi.c)
+
+Changes some code to reduce compiler warnings about casts discarding const.
+(gdevxalt.c)
+
+Removes a test that allowed referencing the statically allocated instance of
+the alternative X drivers. (gdevxalt.c)
+
+Changes a reference to small_exact_log2. (gdevsvga.c)
+
+Greatly improves the PDF writer's handling of simple pattern fills, by
+retaining them as pattern fills. (gdevpdfx.h, gdevpdf.c, gdevpdfi.c)
+
+</pre><h3><a name="5.72_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - Cn in a font name wasn't recognized as indicating a condensed
+font. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.72_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. Fixing this required
+referencing all third-party library header files through *_.h files.
+(zfdctd.c, zfdcte.c)
+ - An /undefined error occurred on floating point numbers whose
+integer part exceeded the size of a long (normally 31 bits) and that also
+included a fraction. (iscannum.c)
+ - ialloc.c included gxarith.h unnecessarily. (ialloc.c)
+
+When opening a terminal for reading, always sets the buffer size to 1. This
+does not apply to %stdin, %lineedit, or %statementedit. (zfile.c)
+
+Changes code to use the new deconstifying freeing procedures, to remove
+deconstifying casts. (gsargs.h, ialloc.h, gsargs.c, zfname.c, zfunc.c)
+
+Adds a writable packed ref pointer variant to ref.value, to remove compiler
+warnings about casts discarding const. (igc.h, iref.h, idict.c, igc.c,
+igcref.c)
+
+Changes the help printouts to use the new printf_program_ident procedure.
+(imainarg.c)
+
+Generalizes clients to handle color spaces that may have more than 4
+components. (zcsdevn.c, zcsindex.c, zcssepr.c, zdpnext.c, zfdecode.c)
+
+Removes support for outside clipping, which we implemented only because we
+misinterpreted a requirement. (zpath.c)
+
+</pre><h3><a name="5.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Selecting a colored Pattern color space caused an error.
+(lib/pdf_draw.ps, lib/pdf_ops.ps)
+ - Reading data from a subfile with no filter caused an error.
+(lib/pdf_base.ps)
+
+Allows mask images to omit BitsPerComponent: Acrobat Reader accepts this
+even though the PDF specification requires it to be present (with value =
+1). (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.72_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The PixelDifference filters didn't propagate leftover bits in the
+last byte of a row. (bug probably introduced in 5.60) (spdiff.c)
+ - The 1- and 2-bit-per-pixel PixelDifferenceEncode filters were
+broken. (spdiff.c)
+
+Changes code slightly to remove a warning about an uninitialized variable.
+(spdiff.c)
+
+Extends the PixelDifference filters to handle more than 4 Colors.
+s_PDiff_max_Colors is the maximum value. (spdiffx.h, spdiff.c)
+
+Adds a stream for converting 12-bit samples to 8-bit. (gdevpsds.h,
+gdevpsds.c)
+
+Gets rid of the no longer needed private copy of the JPEG error message
+table. (sdcte.c, sdeparam.c, sjpegerr.c [deleted], sjpegc.c)
+
+</pre><h3><a name="5.72_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - If a 1-bit-per-pixel image terminated early, the last few scan
+lines might not be written out. (gxidata.c)
+ - The bbox device could leave its target in a half-open state,
+because it called the open/close_device procedures directly rather than
+going through gs_open/closedevice. We "fixed" this by making this device
+forward open and close, but conditionally, so that clients can choose.
+(gdevbbox.c)
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. Fixing this required
+referencing all third-party library header files through *_.h files.
+(sdcparam.c, sdctc.c, sdctd.c, sddparam.c, sjpegc.c, sjpegd.c, sjpege.c,
+sjpegerr.c)
+ - Low-memory recovery in the band list writer sometimes didn't work,
+because a test was backwards. (gxcldev.h, gxclist.c)
+ - Executing a put_params during band rasterizing didn't update
+cached values in the imager state. This was probably not a problem in
+practice, since the only parameters that affect cached values (device color
+space, depth, and color mapping) were very rarely set. (gxclrast.c)
+ - Converting 12-bit planar images to chunky format could store
+beyond the end of the output area and corrupt memory. (gsflip.h, gsflip.c)
+ - The algorithms for converting 4-plane, 1- and 2-bit planar images
+to chunky format were wrong. (gsflip.c)
+ - Images that lay entirely outside the page could cause a memory
+access error. (gxclimag.c)
+ - The bbox device could return excessively conservative values for
+stroked paths. (gxpaint.h, gdevbbox.c, gxpaint.c, gxstroke.c)
+ - Banding devices now include some pointers that the garbage
+collector must trace. (gdevprn.h, gxclist.h, gxdevice.h, gdevprn.c,
+gsdevice.c, gxclist.c)
+
+Adds a gs_opendevice procedure to mirror gs_closedevice. (gsdevice.h,
+gsdevice.c)
+
+Adds deconstifying freeing procedures to the memory manager. This allows us
+to have pointers as structure members that should be const * for all
+ordinary clients, and still be able to free the referenced objects without a
+compiler warning. (gsmemory.h, gsmemory.c)
+
+Changes code, often to use the new deconstifying freeing procedures, to
+remove deconstifying casts. (gspath.h, gxfunc.h, gsfunc.c, gsfunc0.c,
+gsfunc3.c, gspath.c, gsptype1.c)
+
+Changes the eprintf macros so they print the version as well as the program
+name. (std.h, gscdef.c, gsmisc.c)
+
+Adds procedures that update cached values in graphics or imager states after
+setting device parameters. Clients should use these when setting parameters
+of devices that may be current in graphics or imager states. Note that this
+is only a partial solution for a much deeper problem, and may even have to
+be replaced at some point. (gsdevice.h, gsdevice.c)
+
+Defines GS_CLIENT_COLOR_MAX_COMPONENTS (in gsccolor.h),
+GX_DEVICE_COLOR_MAX_COMPONENTS (in gxcindex.h), and GS_IMAGE_MAX_COMPONENTS,
+and starts to use them where needed, in anticipation of implementing DeviceN
+color spaces. (gsccolor.h, gsdcolor.h, gsiparam.h, gsiparm4.h, gxcindex.h,
+gxctable.h, gximage.h, gxshade.h, gdevplnx.c, gscdevn.c, gscolor2.c,
+gxcht.c, gxclimag.c, gxcmap.c, gxicolor.c, gxctable.c, gxi12bit.c)
+
+Replaces small_exact_log2 by a procedure ilog2 that computes floor(log2(n)).
+(gxarith.h, gsmisc.c, gspaint.c, gxccman.c, gxclimag.c, gxclrect.c)
+
+Upgrades gsflip.c to handle >4 planes. (gsbitops.h, gsflip.h, gsflip.c)
+
+Speeds up getting and testing memory device prototypes a little. (gdevmem.c)
+
+Speeds up adding arcs to a path a little. (gspath1.c)
+
+Increases the precision of a precomputed constant from float to double.
+(gxpath.h)
+
+Adds a new band list operation to make circles smaller and faster.
+(gxclpath.h, gxclpath.c, gxclrast.c)
+
+Adds an accessor procedure for the start point of the current subpath.
+(gxpath.h, gxpath2.c)
+
+Removes support for outside clipping, which we implemented only because we
+misinterpreted a requirement. (gspath.h, gxcldev.h, gxcpath.h, gxpath.h,
+gspath.c, gxacpath.c, gxclip.c, gxclpath.c, gxclrast.c, gxcpath.c)
+
+Changes gs_copydevice to require that static prototypes either be registered
+in gx_device_list or have a correct stype pointer. (This is already the
+case for all devices in code we distribute.) (gsdevice.c)
+
+Adds ENUM_PTRS_PROC and RELOC_PTRS_PROC macros for giving a name to the
+typed pointer to the object being processed. (gsstruct.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.71"></a>Version 5.71 (tester) (3/3/99)</h2>
+
+<p>
+This fileset reinstates support for TrueColor X displays, and adds optional
+support for GNU readline. It also includes a little more work on the new
+driver text API.
+
+<h3><a name="5.71_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The *line_accum* macros are now capitalized; declare_line_accum is
+renamed DECLARE_LINE_ACCUM_COPY, and DECLARE_LINE_ACCUM is new.
+
+</pre><h3><a name="5.71_Documentation"></a>Documentation</h3><pre>
+
+Documents the CIE joint cache invariant more accurately. (gscie.h)
+
+Adds a request for xdpyinfo/xwininfo output to the problem reporting form.
+(doc/Bug-form.htm)
+
+</pre><h3><a name="5.71_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The default search path was missing the lib subdirectory on many
+platforms. (dvx-gcc.mak, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watc.mak, watclib.mak, watcw32.mak)
+ - The dependency list for the X Windows drivers was incorrect,
+sometimes causing needed recompilation to be omitted. (devs.mak)
+
+</pre><h3><a name="5.71_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The representation of maximum unsigned values produced warnings on
+some compilers (specifically, gcc with -Wtraditional). (genarch.c)
+ - Some string variables weren't declared const. (echogs.c,
+genarch.c)
+ - The viewpbm utility was broken for pgm and ppm (but not pbm).
+(bug introduced in 5.66) (lib/viewpbm.ps)
+
+</pre><h3><a name="5.71_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The X driver didn't handle TrueColor displays properly.
+(gdevxcmp.h, gdevxcmp.c)
+ - The alternative X drivers didn't implement get_bits properly.
+(gdevxalt.c)
+ - The X driver specified the byte order incorrectly for displays
+with more than 8 bits per pixel. (gdevx.c)
+ - The X driver used the wrong number of bits for comparing colors on
+visuals with fixed color maps. (gdevxcmp.h, gdevxcmp.c)
+ - Some symbols were multiply defined with -DNOPRIVATE. (gdevbit.c)
+ - If a file specified a paper size, rather than using the default,
+the G3/G4 fax output drivers didn't adjust the width to a legal one for fax
+systems. (gdevtfax.c)
+
+Segregates the resource lists, for which warnings about casting of const to
+non-const string types should be suppressed, into a separate file.
+(devs.mak, gdevx.h, gdevxini.c, gdevxres.c)
+
+Splits off the code related to color mapping for X Windows, for greater
+understandability. (devs.mak, gdevx.h, gdevxcmp.h, gdevx.c, gdevxcmp.c,
+gdevxini.c)
+
+Changes code slightly to remove warnings about signed/unsigned integer
+constants. (gdevxalt.c)
+
+Changes code to remove unused variables. (gdevx.c, gdevxalt.c)
+
+Adds a user-contributed driver for the H-P LaserJet 4D. (devs.mak,
+gdevdjet.c)
+
+Makes the bitcmyk driver reset its map_cmyk_color procedure dynamically
+according to the depth, allowing more efficient execution in the 1- and
+8-bit cases. (gdevbit.c)
+
+Adds a settable option, AdjustWidth, to control whether the fax-format
+drivers (faxg*, tiffcrle, tiffg*) adjust the page width to legal fax values.
+Its default value is 1 (do adjust). (devs.mak, gdevtfax.c)
+
+Adds a ForceMono parameter to the bitcmyk/bitrgb devices to implement a
+special monochrome-in-CMYK mode requested by a customer. (gdevbit.c)
+
+Removes the TRIM_ and EXPAND_BITS_TO_BYTES options from the bit devices,
+since they are no longer needed. (gdevbit.c)
+
+</pre><h3><a name="5.71_Fonts"></a>Fonts</h3><pre>
+
+Changes the substitution mechanism for condensed / narrow fonts, so that the
+PDF interpreter can use it. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.71_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The bind operator generated unaligned accesses and might not
+operate reliably. (bug introduced in 5.70) (zmisc.c)
+ - If the BuildChar procedure of a font included an image or
+imagemask operator, charpath would (incorrectly) display the character.
+(zimage.c)
+
+Adds a bogus return statement to suppress a compiler warning. (gs.c)
+
+Changes code slightly to remove warnings about signed/unsigned integer
+constants. (store.h, ibnum.c)
+
+Changes the build date format to %d-%02d-%02d. (lib/gs_init.ps, imainarg.c)
+
+Rearranges some code to add readline support. (files.h, imain.c, zfileio.c,
+ziodev.c)
+
+Adds support for GNU readline, with several completion keys, contributed by
+a user. (int.mak, gs_rdlin.ps, gp_gnrdl.c)
+
+Changes the font substitution machinery slightly so the PDF interpreter can
+use it. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.71_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - In-line images caused a syntaxerror or stackunderflow.
+(lib/pdf_draw.ps)
+ - The font substitution mechanism didn't detect Condensed fonts.
+(lib/pdf_font.ps)
+ - The font substitution mechanism didn't use the intelligent
+algorithm used for PostScript files. (lib/pdf_font.ps)
+
+Prints a message when substituting for a font on the basis of its
+descriptor. (lib/pdf_font.ps)
+
+</pre><h3><a name="5.71_Streams"></a>Streams</h3><pre>
+
+Adds an interface and default implementation for readline. (srdline.h,
+stream.h, stream.c)
+
+</pre><h3><a name="5.71_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - A void procedure attempted to return a value. (stream.c)
+ - A pointer was declared with an extra *. (gsmemory.c)
+ - An argument would be stringified with traditional C. (gdevdbit.c)
+ - The check for validity of the CIE joint caches was wrong, leading
+to incorrect output in some obscure cases. (gsciemap.c)
+ - A tiny rounding inaccuracy could cause an occasional blank line
+when rendering adjacent images. (gxipixel.c)
+ - Some symbols were multiply defined with -DNOPRIVATE. (gsptype2.h)
+ - If a character was too large to be cached, it didn't use
+anti-aliasing, even if TextAlphaBits was >1. (gspaint.c)
+
+Changes code slightly to remove warnings about signed/unsigned integer
+constants. (gsccode.h, gsmisc.c, gxcht.c)
+
+Changes code to remove a warning about an unhandled case in a switch.
+(gsstruct.h, gsmemory.c)
+
+Changes code to remove unused variables. (gxcindex.h, gdevdbit.c,
+gdevprn.c, gxiscale.c)
+
+Restructures the header files for the new text API, adding the SINGLE
+options in text_params, enough new elements in text_enum to store all the
+arguments of text_begin, and new elements in text_enum to hold results
+returned by text_process. This code is no longer "subject to [arbitrary]
+change without notice", although it is still not very stable. (gstext.h,
+gxtext.h, gstext.c)
+
+Changes code to remove warnings about uninitialized variables. (gxipixel.c)
+
+Changes the syntactic form of some constants yet again to suppress a
+different set of compiler warnings. (gxsample.c)
+
+Adds a procedure to fix the charpath-in-BuildChar problem. (gsimage.h,
+gsimage.c, gsptype1.c)
+
+Speeds up the handling of certain RasterOp cases for CMYK devices.
+(gxdevice.h, gxdevmem.h, gdevdrop.c, gdevmem.c, gdevmr8n.c, gdevrops.c)
+
+Adds a platform-specific interface for reading lines from stdin. This is
+intended primarily to support GNU readline. (lib.mak, gp.h, gp_strdl.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.70"></a>Version 5.70 (internal) (2/20/99)</h2>
+
+<p>
+This fileset includes substantial changes to the interpreter in support of
+making it fully reentrant (eliminating writable globals).
+
+<h3><a name="5.70_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The ref_stack structure has been renamed ref_stack_t, and has been
+changed substantially. Clients should now access all of its members, other
+than the pointers to the current block, through the macros or procedures
+defined in istack.h. The STACK_LOOP_{BEGIN,END} macros have been removed.
+ - The argument of context_state_load is no longer const.
+ - Each file's table of operator definitions is now limited to 16
+entries. op_def_table[] no longer exists: use op_index_def() instead.
+ - invalid_file_entry now has an associated VM space,
+avm_invalid_file_entry, that must be used in constructing invalid file refs.
+ - restore will now undo binding of pseudo-operators. Attempting to
+bind a local pseudo-operator into a global procedure will cause an
+invalidaccess error.
+
+</pre><h3><a name="5.70_Documentation"></a>Documentation</h3><pre>
+
+Updates the driver documentation a bit. It probably still includes a lot of
+out-of-date text. (doc/Drivers.htm)
+
+Improves the problem reporting form to make it absolutely clear that test
+data are required, and that the problem must be reproducible without using a
+viewer. (doc/Bug-form.htm)
+
+Documents the -dDOINTERPOLATE switch. (doc/Use.htm)
+
+Documents the difference between public and tester releases, in connection
+with making tester releases available to everyone. (doc/New-user.htm)
+
+Updates the list of history files. (doc/Readme.htm)
+
+Adds a questionnaire for people who want to be notified of new test
+releases. (doc/Readme.htm, doc/Tester.htm)
+
+</pre><h3><a name="5.70_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - A ! was missing before an include. (bcwin32.mak, msvc32.mak)
+ - A trailing \ in some macro definitions was quoted incorrectly.
+(bcwin32.mak, msvc32.mak)
+ - An editing error prevented a makefile from working. (bcwin32.mak)
+ - The 16-bit spooler executable didn't reference its icon correctly.
+(gs16spl.rc)
+ - The Watcom makefiles had gotten badly out of date. (watc.mak,
+watclib.mak, wccommon.mak)
+ - Some DEVICE_DEVS lines were too long for the shell to handle.
+(openvms.mmk)
+ - A space was missing before a colon. (openvms.mmk)
+
+Updates MSVC support to handle version 6. (msvc32.mak)
+
+Extends genconf to handle function types as well as image types, and changes
+the output for image types. (genconf.c)
+
+Desupports the use of CONFIG for selecting between multiple configurations,
+since parameterized output directories do this better. (bcwin32.mak,
+dvx-gcc.mak, gs.mak, int.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
+openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watclib.mak, watcw32.mak)
+
+Adds a -dDOINTERPOLATE switch to force Interpolate in all images.
+(lib/gs_init.ps)
+
+</pre><h3><a name="5.70_Utilities"></a>Utilities</h3><pre>
+
+Rewrites viewpcx to eliminate dependence on a special filter.
+(lib/viewpcx.ps)
+
+</pre><h3><a name="5.70_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The [e]pswrite and pdfwrite drivers wrote out clipping paths using
+the winding number rule even if the path had been set with eoclip.
+(gdevpdfd.c, gdevvec.c)
+ - Some occurrences of ushort should have been gx_color_value.
+(gdevpbm.c)
+ - A comment was accidentally left outside comment quotes.
+(gdev3852.c)
+ - There was a char/byte mismatch not covered by a cast.
+(gdevdcrd.c)
+ - There were still some references to the 'huge' keyword, which has
+been superseded by FAR. (gdevwdib.c)
+ - Some obsolete references to which_colors hadn't been removed.
+(gdevwdib.c)
+ - The [e]pswrite driver produced incorrect output for a curveto or
+closepath followed by a lineto and then a moveto. (gdevps.c)
+ - The [e]pswrite driver could produce incorrect output for paths
+ending with a lineto. (gdevps.c)
+ - The name paper_sizes was used both by a driver and by other code,
+causing a problem when building with -dNOPRIVATE. (gdevclj.c)
+
+Consolidates the X error handling statics into a structure. (gdevxini.c)
+
+Updates the pdfwrite driver to reflect the addition of state to the
+ASCII85Encode filter. (gdevpsdf.c)
+
+Adds a user-contributed driver for the Lexmark 5700 printer (black-and-white
+only). (contrib.mak, gdevlxm.c)
+
+Updates the mswinpr2 driver with a new, user-contributed one that includes
+interaction with the user. (gdevwpr2.c)
+
+</pre><h3><a name="5.70_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - When TrueType support was present, the FONTPATH scanner didn't
+recognize TrueType fonts whose 'type' was "true" rather than the documented
+<00 01 00 00>. (lib/gs_ttf.ps)
+ - When DEBUG was set, loading a TrueType font could cause an
+/undefined error. (lib/gs_ttf.ps)
+
+</pre><h3><a name="5.70_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Local (pseudo-)operators could get bound into global procedures
+with 'bind', causing dangling references. Attempting this now causes an
+invalidaccess error. Fixing this also required making restore undo binding
+of pseudo-operators. (zmisc.c)
+ - A harmless dictfull error occurring during language level
+switching caused an error. (zmisc2.c)
+ - If given a closed input file, flushfile caused an error, rather
+than doing nothing. (zfileio.c)
+
+Renames the ref_stack structure as ref_stack_t, and factors it so that the
+parts set only at initialization are separated from the dynamic parts, in
+support of moving the stacks from static to dynamic storage. (icstate.h,
+idebug.h, idstack.h, iestack.h, iostack.h, iparam.h, iparray.h, istack.h,
+idebug.c, interp.c, iparam.c, istack.c, zcontext.c, zpacked.c, zvmem.c)
+
+Moves the dynamic part of the stacks in-line in the context structure; gets
+rid of the statically allocated stacks. (dstack.h, estack.h, icontext.h,
+icstate.h, idstack.h, iestack.h, interp.h, iostack.h, ostack.h, icontext.c,
+iinit.c, interp.c, zcontext.c)
+
+Packages the dictionary lookup statistics in a structure, like the other
+statistics. (idict.c)
+
+Changes from dynamic to static initialization of the function type table.
+(int.mak, ifunc.h, iconf.c, zfunc.c, zfunc0.c, zfunc3.c)
+
+Removes the PCXDecode filter. (zfilterx.c)
+
+Removes more writable statics. (int.mak, btoken.h, files.h, icstate.h,
+igstate.h, ipacked.h, iscan.h, icontext.c, imain.c, iscan.c, iscanbin.c,
+zbseq.c, zcolor2.c, zcontext.c, zgstate.c, ziodev.c, zmath.c, zpcolor.c,
+zpacked.c)
+
+Changes the representation of the operator table to avoid allocating a
+dynamic copy. This introduces a limit of 16 entries per definition set.
+(int.mak, opdef.h, iconf.c, idebug.c, iinit.c, interp.c, iutil.c,
+zcontext.c, zcontrol.c, zdict.c, zfileio.c, zgstate.c, ztype.c)
+
+Includes the ASCII85Decode filter in all configurations, for simplicity.
+(iscan.c, zfdecode.c)
+
+Makes the invalid file reference point to a static object. (files.h,
+icontext.c, zfile.c, ziodev.c)
+
+Changes all dictfull error returns from the dictionary code to use
+return_error. This should have been done a long time ago! (idict.c)
+
+Increases the predefined size of systemdict a little more because .upp files
+may define a lot of new entries. (iinit.c)
+
+Adds a few more interpreter statistics. (interp.c)
+
+</pre><h3><a name="5.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Images never closed the data stream, placing a heavy load on the
+garbage collector to clean up streams and stream states. (lib/pdf_draw.ps)
+ - Streams stored on external files didn't work. (lib/pdf_base.ps)
+
+Reorganizes code slightly to allocate less memory for in-line images.
+(lib/pdf_draw.ps)
+
+Speeds up some common operations a little. (lib/pdf_base.ps)
+
+</pre><h3><a name="5.70_Streams"></a>Streams</h3><pre>
+
+Removes the PCXDecode filter. (spcxx.h [deleted], spcxd.c [deleted])
+
+Changes the name of a variable for greater clarity. (stream.c)
+
+Splits off the ASCII85Decode filter into a separate file, since it turns out
+to be convenient to include it in all configurations. (sa85d.h, sa85x.h,
+sa85d.c, sfilter2.c)
+
+Makes an initialization entry point available for non-heap-allocated
+streams. (stream.h, stream.c)
+
+Changes the ASCII85Encode filter so it always produces lines of at most 80
+characters, not counting the EOD marker. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, because this filter now needs a state structure, which it didn't
+before. (sa85x.h, sfilter2.c)
+
+</pre><h3><a name="5.70_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Reference counting of graphics state elements was wrong when
+creating multiple contexts, causing memory corruption. (bug probably
+introduced in 5.68) (gsstate.c)
+ - If CIE joint caches were created because the reference count of
+the existing caches was >1, the new caches weren't initialized correctly.
+(bug introduced in 5.60, found by Ray Johnston.) (gscie.c)
+ - If Margins are set so that part of the default clipping region
+lies outside the ((0,0),(width,height)) device coordinate space, the fast
+case of images could cause a memory access error. (gxifast.c)
+ - In the case of a halftone with more bits than levels,
+gx_check_tile_cache could incorrectly return false, causing images to render
+more slowly than they should. (gzht.h, gxht.c)
+ - There was a const mismatch between an argument and the formal
+parameter. (gdevprn.h, gdevprn.c, gxclread.c)
+ - An error in the definition of st_imager_state_num_ptrs caused the
+garbage collector to omit marking one pointer in imager states, possibly
+causing memory corruption. (gxistate.h)
+ - The bbox device, used with no target, didn't properly handle
+images where more data was provided than needed. (gdevbbox.c)
+
+Removes any pretense of supporting multiple threads in a single-threaded
+environment. Dummy synchronization primitives, however, are still provided.
+(gp_nsync.c)
+
+Removes more writable statics. (gximage.h, gxi12bit.c, gxino12b.c,
+gxipixel.c)
+
+Changes the handling of image types, and adds similar handling for function
+types. (gscdefs.h, gconf.c)
+
+Consolidates the gs_std* files into a structure. (gsio.h, gsmisc.c)
+
+Speeds up the fastest (common) case of clipping fill_rectangle and copy_mono
+operations. We could do the same for the other operations if we wanted.
+(gxclip.c)
+
+Identifies this fileset as a tester release. (gscdef.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.69"></a>Version 5.69 (internal) (2/4/99)</h2>
+
+<p>
+This incremental fileset fixes minor compilation problems, as well as many
+problems with driver-based CRDs (not used by PostScript or PDF).
+
+<h3><a name="5.69_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The OpenVMS makefile had not been updated properly to reflect the
+division of files into subdirectories. (openvms.mak)
+ - A space was missing before a :. (devs.mak)
+ - The MMK makefile had not been updated to reflect the renaming of
+the psm[raw] devices to pksm[raw]. (openvms.mmk)
+
+Changes the default name of the build directory for the library test program
+from debugobj to libobj, so that one can work with both library and
+interpreter builds without interference. (ugcclib.mak)
+
+Adds -fno-builtin to the gcc switches, to detect failure to declare
+functions like memcpy, at a small cost in performance. (ugcclib.mak,
+unix-gcc.mak)
+
+</pre><h3><a name="5.69_Utilities"></a>Utilities</h3><pre>
+
+Makes a couple of minor fixes to ansi2knr, suggested by users. (ansi2knr.c)
+
+Updates ps2ai.ps with an improved version from its author. (lib/ps2ai.ps)
+
+</pre><h3><a name="5.69_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The 32-bit CMYK "async" BMP driver was declared incorrectly as a
+non-async device. (gdevbmpa.c)
+ - Some #includes were missing, because gcc didn't warn about
+failures to declare certain standard functions. (x_.h, gdevdcrd.c, gdevx.c)
+ - The PC frame buffer device still referred to _ss and near.
+(gdevpcfb.c)
+ - The [e]pswrite driver didn't handle bitmaps with a non-zero X bit
+offset correctly. (gdevps.c)
+ - The pdfwrite driver wrote all clipping paths with the winding
+number rule, even if they were established by eoclip. (gdevpdfd.c)
+ - "Vector" drivers wrote all clipping paths with the winding number
+rule, even if they were established by eoclip. (gdevvec.c)
+
+Adds the CRDName parameter to the sample driver-based CRD. (gdevdcrd.c)
+
+Tweaks the sample driver-based CRD to make it a more realistic (closer to
+the PostScript default). (gdevdcrd.c)
+
+Adds the sample driver-based CRD to the modified X drivers. (devs.mak,
+gdevxalt.c)
+
+</pre><h3><a name="5.69_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some #includes were missing, because gcc didn't warn about
+failures to declare certain standard functions. (zchar1.c)
+ - Driver CRDs were not supported properly. (zcrd.c, lib/gs_lev2.ps)
+
+Changes some code because non-int switch expressions are not handled
+correctly in pre-ANSI C. (igcref.c, zdevice.c)
+
+Adds the ability to set the orientation of zero-length "dots". (zgstate.c)
+
+Adds comments on an alternative shallow-binding design. (dstack.h)
+
+Changes the threshold for repeatedly rescanning change lists so that it is
+based on the cumulative amount of rescanning and not the amount in a single
+pass. (isave.c)
+
+</pre><h3><a name="5.69_Streams"></a>Streams</h3><pre>
+
+Changes some code because non-int switch expressions are not handled
+correctly in pre-ANSI C. (sfilter1.c)
+
+</pre><h3><a name="5.69_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some casts to (gx_device *) were missing. (gschar.c)
+ - Some #includes were missing, because gcc doesn't warn about
+failures to declare certain standard functions. (gdevdgbr.c, gscie.c,
+gsmatrix.c, gxshade1.c)
+ - gxclread.c now needs gdevprn.h to declare certain procedures. We
+tried very hard to make the command list machinery not depend on anything
+related to printer devices, but at this point we have not succeeded.
+(gxclread.c)
+ - For CRDs set by library clients, the is_identity flags in the
+caches were set incorrectly, producing incorrect output. (gscie.h, gscie.c,
+gscrd.c, gscrdp.c)
+ - For CRDs set by library clients, the EncodeABC and RenderTable T
+procedures were sampled incorrectly. (gsciemap.c, gscrd.c)
+ - The interpreter tried to sample the TransformPQR functions in the
+PostScript CRD even for driver CRDs. (gscie.h, gscie.c)
+ - Library assistance was needed for the interpreter to support
+driver CRDs properly. (gscrdp.h, gscrdp.c)
+ - The procedures that accessed cached CIE values didn't round the
+index, so accessing already-cached values could wipe out the cache.
+(gscie.c)
+ - The procedure that accessed cached RenderTable.T values simply
+wasn't implemented. (gscrd.c)
+
+Adds an "if (1)" to a macro to suppress "statement not reached" warnings
+from stupid compilers. (gsmemlok.c)
+
+Changes the syntactic form of some constant tables to suppress
+signed/unsigned warning messages. (gsbitops.c, gxsample.c)
+
+Changes some switch statements to if/else because non-int switch expressions
+are not handled correctly in pre-ANSI C. (gdevmr8n.c, gxdcolor.c)
+
+Adds the ability to set the orientation of zero-length "dots". (gsline.h,
+gxline.h, gsline.c, gsstate.c, gxstroke.c)
+
+Adds an allocator state variable to support the change in the rescanning
+algorithm. (gxalloc.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.68"></a>Version 5.68 (internal) (1/29/99)</h2>
+
+<p>
+This fileset implements PatternType 2 (gradient fill) Patterns. All
+significant PostScript LanguageLevel 3 features are now implemented, except
+for DeviceN color spaces. We have also verified that the MMK script for
+OpenVMS also works with MMS.
+
+<p>
+Note that there are significant non-backward compatible changes to memory
+management for device instances: we are sorry about this, but just as with
+paths in 5.22, we had to fix this design problem at some point.
+
+<h3><a name="5.68_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - A new makefile, unix-aux.mak, must be included in all Unix
+top-level makefiles. (It is included in the ones we distribute.)
+unixtail.mak is renamed unixlink.mak.
+
+(Library)
+ - The names of the anti-aliasing parameters in the device color_info
+structure have been changed.
+ - Dummy definitions for PC-specific C keywords (_cs, _ds, _ss, near,
+far, huge) are no longer provided: these keywords should be removed from
+non-PC-specific code.
+ - The names of the alignment_mod, ptr_le, ptr_lt, ptr_ge, ptr_gt,
+and ptr_between macros have been changed to upper case (ALIGNMENT_MOD etc.)
+ - gs_make_null_device now takes an additional argument.
+ - The ccolor member of a gx_device_color is no longer inside a
+substructure.
+ - Clients now must initialize Pattern templates with
+gs_patternN_init, where N is the PatternType (normally 1), before filling in
+the members.
+ - gs_pattern_instance_common_t is renamed gs_pattern_instance_t;
+gs_pattern_instance is renamed gs_pattern1_instance.
+ - To set the target of a forwarding device, you must now use
+gx_device_set_target rather than setting the target member directly.
+ - Memory management for devices has changed substantially, and in a
+subtle way. If you have code that calls the library, please read the
+documentation in gxdevcli.h.
+ - Callers of the driver create_buf_device procedure must always call
+it through gdev_create_buf_device, never directly.
+ - For composite and CID-keyed fonts, the character code returned by
+gs_show_current_char and gs_kshow_previous_char is now the full multi-byte
+character code rather than just the last byte of the code.
+ - gdev_cmap_set_method has been replaced by a device parameter,
+ColorMappingMethod.
+ - The CRD pointer parameter for param_write_cie_render1 and
+param_put_cie_render1 is no longer const.
+
+</pre><h3><a name="5.68_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The documentation for resize_object and resize_string didn't allow
+the new size to be the same as the old size, didn't describe what data was
+preserved, and didn't guarantee to return the same object if the new size
+was the same as the old size. (gsmemraw.h, gsmemory.h)
+ - The documentation for the value returned by the internal
+.getmetrics32 operator was incorrect. (zchar32.c)
+ - The documentation for the special color mapping device didn't say
+that the caller had to call gs_setdevice_no_init to update graphics states.
+(gdevcmap.h)
+
+Notes that OPENVMS.MMK works with both MMK and MMS. (doc/Make.htm)
+
+Adds a note to the C style guide about nested vs. multi-branch 'if'
+statements. (doc/C-style.htm)
+
+Notes that the multi-threaded ("async") drivers require libc version 6 or
+higher under GNU/Linux. (doc/Make.htm)
+
+Notes additional Irix/MIPSpro combinations that compile idict.c incorrectly,
+and gives a workaround. (doc/Make.htm)
+
+Adds a couple more acknowledgements. (doc/Helpers.htm)
+
+Documents the new -Z^ switch. (doc/Use.htm)
+
+Documents the new rules about memory management for device instances
+(gxdevcli.h, gxdevice.h)
+
+</pre><h3><a name="5.68_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The "async" BMP devices were accidentally included in the default
+list for Unix, leading to a requirement for the POSIX thread package, which
+is not available on all systems. (unix-gcc.mak)
+ - There was a minor typo in the new MMK script. (openvms.mmk)
+ - The MMK script redefines macros, which MMS does not allow.
+(openvms.mmk)
+ - The gcc version test used gcc rather than $(CC) for the compiler
+name. (unix-gcc.mak)
+ - There was a minor typo in the pcx2up device makefile entry.
+(devs.mak)
+ - Some commands in the Unix install rules referenced sh rather than
+$(SHELL). (unixinst.mak)
+
+Makes (dummy) in-RIP trapping an optional feature, and removes it from the
+default configuration. (int.mak, lib.mak)
+
+Splits off the build rules for the Unix auxiliary programs, so they can be
+shared between interpreter and library configurations. (ugcclib.mak,
+unix-aux.mak, unix-gcc.mak, unixansi.mak, unixtail.mak [deleted],
+unixlink.mak, unixtrad.mak)
+
+Adds the bitcmyk device to the list of devices for the library test program.
+(ugcclib.mak)
+
+</pre><h3><a name="5.68_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ansi2knr didn't handle occurrences of '/' or quoted strings inside
+an argument list correctly. (ansi2knr.c)
+
+At the suggestion of a GNU person, makes ansi2knr check for output errors.
+(ansi2knr.c)
+
+</pre><h3><a name="5.68_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Setting the resolution on the SPARCprinter didn't work.
+(gdevsppr.c)
+ - Even in PDF 1.1 compatibility mode, the PDF writer used a
+predictor to compress images. (gdevpsdi.c)
+ - Reference counting for devices was not implemented consistently.
+(gdevxalt.c)
+ - gcc (again) missed some static / non-static inconsistencies.
+(gdevbmpa.c, gdevifno.c)
+
+Removes all remaining uses of segment identifiers (_cs, _ds, _ss) from
+non-PC-specific code. (gdev3852.c, gdevcdj.c, gdevhl7x.c, gdevl256.c,
+gdevmgr.c, gdevsgi.c, gdevsppr.c, gdevvglb.c)
+
+Removes all remaining uses of the 'near' keyword from non-PC-specific code.
+(gdevcd8.c, gdevcdj.c, gdevcgm.c)
+
+Changes uses of round_up to ROUND_UP. (gdevmsxf.c, gdevpcx.c, gdevpx.c,
+gdevxxf.c)
+
+Adds user-contributed support for 16-bit displays to the MS Windows driver.
+(gdevmswn.c, gdevwdib.c)
+
+Adds a user-contributed driver (sunhmono) for the Harlequin variant of 1-bit
+Sun raster files. We expect to add other varieties of Sun Raster file
+eventually as well. (contrib.mak, gdevsunr.c)
+
+Adds a user-contributed driver (fs600) for the Kyocera FS-600 laser printer.
+(devs.mak, gdevdjet.c)
+
+Replaces the sample device CRD with a slightly hacked version of the default
+PostScript CRD, and moves it to a separate file for greater flexibility in
+testing. (gdevdcrd.h, gdevbit.c, gdevdcrd.c)
+
+Adds standard and "async" 32-bit CMYK BMP drivers (even though this is
+outside the published BMP format). (gdevbmp.c, gdevbmpa.c)
+
+Changes the names of the separated-CMYK PBM drivers from psm to pksm, to be
+more descriptive. (devs.mak, openvms.mak, unix-gcc.mak, gdevpbm.c)
+
+</pre><h3><a name="5.68_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - On MS Windows and OS/2, "(%stdin) (r) file bytesavailable" caused
+a crash. (gp_msio.c, gp_os2.c)
+
+</pre><h3><a name="5.68_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with fewer glyph names in post than entries in loca
+caused an error. (gs_ttf.ps)
+
+Adds additional tracing to the TrueType font loader. (lib/gs_ttf.ps)
+
+Per Adobe, adds the Euro symbol under the name /Euro (capitalized) to
+various built-in Encodings. (lib/gs_mro_e.ps, lib/gs_pdf_e.ps,
+lib/gs_sym_e.ps, lib/gs_wan_e.ps)
+
+</pre><h3><a name="5.68_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - An extraneous file got left in the fileset. (lib/pdf_main.ps.sav
+[deleted])
+ - The number of required arguments for .pathbbox was incorrectly
+specified as 0 rather than 1. (zpath1.c)
+ - Opening a ReusableStreamDecode filter with a string source and no
+decoding filters left an extra value on the stack. (lib/gs_ll3.ps)
+ - Type 32 fonts sometimes didn't display the characters, or
+displayed them offset. (lib/gs_typ32.ps)
+ - In LanguageLevel 3, copypage still called EndPage with 1 rather
+than 0. (lib/gs_init.ps)
+ - The HalftoneName parameter was missing from the trapping parameter
+set. (lib/gs_ll3.ps)
+ - CMap character entries were processed in the wrong order.
+(lib/gs_cmap.ps)
+ - CMap'ed non-CID fonts didn't work properly, because they called
+BuildChar with the original character code rather than BuildGlyph with the
+mapped glyph. (zchar.c)
+ - Using an out-of-range CID value with a CIDFont caused an error
+rather than substituting a notdef. (lib/gs_cidfn.ps)
+ - CIDFontType 0 fonts with a GlyphDirectory didn't fall back to the
+indexed character data if the CID wasn't in the GlyphDirectory.
+(lib/gs_cidfn.ps)
+ - CIDFontType 0 fonts didn't substitute a notdef at all.
+(lib/gs_cidfn.ps)
+
+Changes uses of round_up to ROUND_UP. (igcstr.c)
+
+Updates clients for the object-oriented changes to Patterns. (zcolor2.c,
+zpcolor.c)
+
+Implements the rest of PatternType 2. (ipcolor.h, zpcolor.c, zshade.c)
+
+Makes in-RIP trapping an optional feature. (lib/gs_ll3.ps, lib/gs_trap.ps)
+
+Updates clients for the change in gs_show_current_char. (zcfont.c, zchar.c)
+
+Changes the dict_*_param macros to procedures, for easier tracing. This
+includes a change in the return value of dict_matrix3_param. (icie.h,
+zcie.c, zcrd.c)
+
+</pre><h3><a name="5.68_Streams"></a>Streams</h3><pre>
+
+Changes uses of round_up to ROUND_UP. (scfd.c, scfe.c)
+
+</pre><h3><a name="5.68_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Once again, gcc failed to flag a static procedure declaration
+followed by a non-static definition. (gdevprna.c, gximage3.c)
+ - Anti-aliasing no longer worked for the x11alpha device. To fix
+this, we factored out the anti-aliasing information in the
+gx_device_color_info structure. (bug introduced in 5.65) (gxdevcli.h,
+gdevabuf.c, gdevdflt.c, gdevxalt.c, gsdparam.c)
+ - An empty declaration generated an extraneous semicolon.
+(gxclip2.h)
+ - Some macros that generated an if-else construct didn't enclose it
+in BEGIN/END, possibly leading to incorrect parsing. (gxobj.h)
+ - A comment was missing a closing */. (gxpageq.h)
+ - The handling of the phase in Pattern filling was broken again. We
+probably broke it with the "fix" introduced in 5.24. (gxp1fill.c)
+ - Looking up an undefined IODevice name caused a memory access
+error. (bug claimed to be fixed in 5.24) (gsiodev.c)
+ - The null device installed for stringwidth didn't copy the color
+mapping information from its target, causing confusion if the current device
+was a pattern accumulator. (gxdevcli.h, gxdevice.h, gschar.c, gsdevice.c,
+gxpcmap.c)
+ - mem_mapped2_copy_mono produced incorrect results for byte-aligned
+rectangles exactly 1 byte wide (fix from John D.), and could also access
+data 1 byte beyond the end of each source row. (gdevm2.c)
+ - In the case of a masked image or a RasterOp involving a Pattern,
+the garbage collector could fail to follow a pointer, possibly causing
+memory corruption. (gsdcolor.h)
+ - Assigning a double value to a float variable caused an infinite
+recursion. (gxshade1.c)
+ - Failure to detect when the region being filled had become very
+small caused excessive recursion. (gxshade4.c)
+ - The default implementations of resize_object didn't always return
+the old object if the old and new sizes were the same. (gsalloc.c,
+gsmalloc.c)
+ - The left side bearing of TrueType characters was sometimes
+calculated incorrectly. (gstype42.c)
+ - The TrueType renderer disregarded the left side bearing values.
+We aren't sure that the change we made is right, but it seems to produce
+better output. (gstype42.c)
+ - Shadings used the first Decode entry for both X and Y values.
+(gxshade.c)
+ - Function-based Shadings sometimes omitted part of their output.
+(gxshade1.c)
+ - Function-based Shadings didn't access 4-bit-per-sample data
+correctly. (gsfunc0.c)
+ - The malloc/free-based allocator didn't finalize objects when
+freeing them. (gsmalloc.c)
+ - Reference counting for device instances was not implemented even
+close to consistently. THIS IS THE BUG TAIL WE WORRIED ABOUT IN 5.24.
+(gxdevcli.h, gxdevice.h, gdevbbox.c, gdevcmap.c, gdevmem.c, gdevnfwd.c,
+gdevplnx.c, gdevprn.c, gdevrops.c, gsalphac.c, gschar.c, gsdevice.c,
+gsropc.c, gxidata.c, gxmclip.c, gxipixel.c, gxpcmap.c)
+ - Some device structure definitions failed to include finalization.
+(gdevmrop.h, gsstruct.h, gxclip2.h, gxcpath.h, gxdevmem.h, gxmclip.h)
+ - Reference counting for the device halftone wasn't correct in the
+band rasterizer. This must be a recently introduced bug, because otherwise
+banding couldn't have worked. (gxclrast.c)
+ - When banding, high-level images that extended off the page in the
+Y direction caused memory access errors. (gxclimag.c)
+ - [a]widthshow didn't use the correct value for comparison for
+composite fonts with FMapType 9 (CMap). (gxchar.h, gschar.c, gschar0.c,
+gsfcmap.c)
+ - The special color mapping device only worked for
+device_cmap_monochrome. (gdevcmap.h, gdevcmap.c)
+ - The definition of gs_memory_locked_release was wrong.
+(gsmemlok.h, gsmemlok.c)
+ - An opaque structure definition (for gx_device) was missing,
+creating a need for an otherwise unnecessary #include. (gscrdp.h)
+ - Certain cached values weren't computed when needed. Fixing this
+required removing 'const' from a parameter type. (gscrdp.h, gscrdp.c)
+ - gxclmem.c #included "gsmalloc.h", which is no longer needed.
+(gxclmem.c)
+ - Memory management for device halftones was incorrect, leading to
+objects being freed twice or other memory corruption during band rendering.
+(gzht.h, gsht.c, gsstate.c, gxclrast.c, gxistate.c)
+ - Setting a driver-originated CRD didn't invalidate cached
+information, leading to incorrect output. (gscrdp.c)
+ - A consistency check on driver-originated CRDs was incorrect,
+causing valid CRDs to be rejected. (gscrdp.c)
+
+Removes dummy definitions for old PC-specific language extensions.
+(stdpre.h)
+
+Removes uses of the PC-specific 'huge' keyword. (gdevmem.c)
+
+Removes uses of the PC-specific 'near' keyword. (gdevabuf.c, gdevbbox.c)
+
+Changes the pointer comparison macros to upper-case names. (gxalloc.h,
+stdpre.h, gsalloc.c, gsmisc.c)
+
+Changes the alignment_mod macro to upper case. (stdpre.h, gdevdbit.c,
+gdevdgbr.c, gsparams.c, gxifast.c)
+
+Changes the round_up and round_down macros to upper case. We retain the
+lower-case definitions for the sake of the PCL code. (gxfcache.h, gxobj.h,
+stdpre.h, gdevalph.c, gdevmem.c, gsalloc.c, gspath1.c, gxccman.c,
+gxclimag.c, gxifast.c)
+
+Makes Pattern colors more object-oriented, to support PatternType 2,
+splitting gsptype1.c off from gspcolor.c in the process. (gsccolor.h,
+gsdcolor.h, gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h, gxpcolor.h,
+gspcolor.c, gsptype1.c, gxpcmap.c)
+
+Implements PatternType 2. (gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h,
+gxpcolor.h, gxshade.h, gspcolor.c, gsptype2.c)
+
+Changes the interface to shaded filling to make filling rectangles more
+efficient. (gsshade.h, gscolor3.c, gsshade.c)
+
+Improves some macros that didn't handle expressions as arguments.
+(gsrect.h)
+
+Improves tracing of loading the CIE caches. (gscie.c)
+
+Cleans up some formatting, and replaces some floating point divides with
+multiplies. (gstype42.c)
+
+Adds default values for the MaxSeparations (1), Separations (false), and
+SeparationColorNames (empty array) device parameters. (gsdparam.c)
+
+Adds -Z^ to trace reference counting. (gsrefct.h, gsmemory.c)
+
+Changes the definition of finalization so that finalization procedures *can*
+assume that objects they reference still exist. This is necessary so that
+forwarding devices can decrement the reference counts of their targets.
+Fortunately, all invocations of finalization (in 'restore', the garbage
+collector, and freeing) already have this property. (gsstruct.h)
+
+Extends CRD initialization so that cached values may be copied from an
+existing CRD. (gscrd.h, gscrd.c)
+
+Adds a wrapper to the driver create_buf_device procedure to increment the
+reference count, so that buffer devices can be freely used in graphics
+states and as a target. (gxdevcli.h, gdevprn.c, gxclread.c)
+
+Removes recursion from the shading rendering code, in preparation for making
+it interruptible (required for DeviceN color mapping callouts).
+(gxshade4.h, gxshade1.c, gxshade4.c, gxshade6.c)
+
+Monitor-locks the default allocator based on the C heap, if multi-threading
+is being supported at all. (lib.mak, gsmalloc.h, gsmalloc.c)
+
+Speeds up the implementation of mem_true32_copy_mono for the common case.
+(gdevm32.c)
+
+Adds a (disabled) option for defining gx_color_index as a pointer or a
+structure, for testing. (gxcindex.h)
+
+Makes the library test program test the special color mapper more
+thoroughly. (gslib.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.67"></a>Version 5.67 (internal) (1/8/99)</h2>
+
+<p>
+This fileset adds more PostScript LanguageLevel 3 capability:
+<ul>
+<li> - Complete implementation of shfill.
+<li> - Most of the expanded CMap capabilities.
+<li> - ReusableStreamDecode filter.
+<li> - FontType 2 for CFFs (formerly done in an incompatible way).
+<li> - HalftoneMode user parameter.
+<li> - HalftoneTypes 6, 10, and 16.
+<li> - ImageType 3 images.
+<li> - UseCIEColor device parameter.
+</ul>
+
+<p>
+It also adds a build script for MMK (which may also work with MMS) under
+OpenVMS, and Uli Wortmann's drivers for the H-P color inkjet printers.
+Among other bug fixes, it eliminates about half the "possibly uninitialized
+variable" compiler warnings.
+
+<h3><a name="5.67_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The default UCR and BG functions are now f(k) = k rather than f(k)
+= 0.
+ - The set_[d]fmul2fixed_vars macros have been removed from
+gxfixed.h. Clients must use the new CHECK/FINISH_[D]FMUL2FIXED_VARS macros.
+(We don't think there are any such clients outside Ghostscript itself.)
+ - The internal procedure gx_cpath_intersect_slow is replaced with
+gx_cpath_intersect_path_slow, with different arguments.
+ - gs_color_space_type_Device{Gray,RGB,CMYK} are now private.
+Clients should use the gs_cspace_Device{Gray,RGB,CMYK} access procedures in
+gscspace.h to obtain device color space objects.
+ - FontType 2 was renamed from ft_CFF to ft_encrypted2.
+ - FontType 2 fonts now have FontType = ft_encrypted2, rather than
+ft_encrypted with CharstringType = 2. CharstringType no longer exists.
+ - Type 1 / Type 2 fonts now have an additional member, interpret,
+that must be initialized.
+ - gdev_prn_render_lines and gdev_prn_get_band_buffer replace
+gdev_prn_locate_overlay_buffer and gdev_prn_get_overlay_bits. "Async"
+drivers must now use the new procedures to implement partial-page rendering
+recovery.
+ - Clients that pass ImageType 3 images where the mask and the image
+are not scaled identically, or that call image_plane_data without knowing
+the image type, must now call gs_image_planes_wanted or
+gx_image_planes_wanted in order to find out which subset of the data planes
+to pass to the next call of image_plane_data.
+ - gx_image_enum_common_init now takes slightly different arguments.
+ - gs_imager_state_initialize now initializes the entire imager
+state, including halftone, dev_ht, and ht_cache.
+ - The argument lists for the plane_data and end_image procedures in
+image enumerators have changed.
+
+</pre><h3><a name="5.67_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The 5.66 News mentioned the non-existent WAITFILE macro, and had
+another minor typo. (doc/News.htm)
+ - The URL for the user-contributed H-P 850c driver was incorrect.
+(doc/Devices.htm, contrib.mak)
+ - The documentation for the driver image API had gotten out of date.
+(doc/Drivers.htm)
+
+Greatly improves documentation for the page queue. (from Artifex 5.50c)
+(gxpageq.h)
+
+Documents the fact that Solaris builds now need -lposix4 for &lt;semaphore.h&gt;.
+(doc/Make.htm)
+
+Adds a stack status comment in .pdfshow. (lib/gs_pdfwr.ps)
+
+Documents the new -Z` debugging switch. (doc/Use.htm)
+
+Touches up some formatting in the C style guide, and adds a mention of the
+space-before-: rule for makefiles. (doc/C-style.htm)
+
+Adds documentation for the new H-P 8xx drivers. (doc/Devices.htm)
+
+Splits off news for versions 5.0 - 5.50 into a separate file.
+(doc/History5.htm)
+
+</pre><h3><a name="5.67_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - On MS Windows platforms, the DLL object file wasn't created in the
+proper directory. (from Artifex 5.55) (msvc32.mak)
+ - cfonts.mak didn't have no-op commands for rules that didn't
+contain any commands. (cfonts.mak)
+ - The version number for libpng was different from libpng's own
+version numbering system. (libpng.mak)
+ - Solaris builds now need -lposix4 for &lt;semaphore.h&gt;.
+(unix-gcc.mak, unixansi.mak, unixtrad.mak)
+ - The makefiles redefined a number of macros, which MMS doesn't
+allow. (bcwin32.mak, gs.mak, int.mak, lib.mak, libpng.mak, msvc32.mak,
+openvms.mak, openvms.mmk, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+version.mak)
+
+Changes cp.bat and rm.bat to eliminate "File not found" messages. (from
+Artifex 5.55) (cp.bat, rm.bat)
+
+Changes all platform-independent makefiles to add a space before the : that
+separates the targets from the dependencies, to allow the makefiles to be
+used with MMS/MMK. (cfonts.mak, contrib.mak, devs.mak, gs.mak, int.mak,
+jpeg.mak, lib.mak, libpng.mak, zlib.mak)
+
+Adds a script for compiling Ghostscript on OpenVMS systems with MMK. This
+has not been tested extensively. (doc/Make.htm, openvms.mmk)
+
+Changes the set of optimization switches for MSVC++. We believe the new
+switches produce working executables, which /O2 didn't. (msvc32.mak,
+msvccmd.mak)
+
+Updates the default expected libpng version to 1.0.2. (bcwin32.mak,
+dvx-gcc.mak, msvc32.mak, msvclib.mak, openvms.mak, os2.mak, ugcclib.mak,
+unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watclib.mak,
+watcw32.mak)
+
+</pre><h3><a name="5.67_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - Default scaling in viewcmyk.ps was broken. (lib/viewcmyk.ps)
+
+Updates pdf2dsc.ps with a newer (user-contributed) version that generates
+DocumentMedia and PageMedia comments. (lib/pdf2dsc.ps)
+
+</pre><h3><a name="5.67_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - An int * was provided where a uint * was required. (gdevpbm.c)
+ - ps2ps -dLanguageLevel=1 generated invalid output. (gdevps.c)
+ - The X drivers crashed on gray-scale displays. (bug probably
+introduced in 5.61) (gdevx.c)
+ - The width and height of the cljet5 device were interchanged.
+(from Artifex) (gdevclj.c)
+ - The PDF writer didn't clip cached characters properly. (bug
+introduced somewhere between 3.51 and 5.10) (gdevpdfi.c)
+ - For stroked paths with a non-uniform CTM, the PDF writer could
+emit coordinates larger than 32K, which Acrobat handles incorrectly.
+(gdevpdfd.c)
+
+Restructures some code to suppress bogus "possibly uninitialized variable"
+warnings. (gdevpdfm.c, gdevps.c)
+
+Adds some unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (gdevpbm.c, gdevpdfd.c, gdevvec.c,
+gdevxalt.c)
+
+Rewrites the (contributed) X11 xfont code to remove code duplication.
+(gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
+
+Adds a user-contributed driver for the H-P LaserJet 3100 with H-P software.
+(gdevmeds.h, gdevl31s.c, gdevmeds.c)
+
+Adds a user-contributed option for 600 dpi output on H-P DesignJet
+650C-compatible printers. (gdevcdj.c)
+
+Removes unnecessary references to device color spaces. (gdevpdfi.c)
+
+Changes the [e]pswrite and pdfwrite drivers to use EndOfBlock rather than
+Rows for CCITTFax image encoding, producing slightly smaller output.
+(gdevpsdf.c)
+
+Changes the sample async driver to use gdev_prn_render_lines and
+gdev_prn_get_band_buffer instead of locate_overlay_buffer and
+get_overlay_bits. Unfortunately, because "async" memory management is
+broken, we have no way to test the code. (gdevbmpa.c)
+
+Updates clients for the change in gx_image_enum_common_init. (gdevpdfi.c,
+gdevvec.c)
+
+Adds Uli Wortmann's drivers for the H-P color inkjet printers.
+(contrib.mak, gdevcd8.c)
+
+Adds mode 9 compression to the PCL printer utilities. (gdevpcl.h,
+gdevcdj.c, gdevpcl.c)
+
+Updates implementors for the change in the plane_data and image_end image
+processing procedures. (gdevpdfi.c, gdevps.c, gdevpx.c)
+
+</pre><h3><a name="5.67_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - The PFM files for URW Grotesk and Antiqua had some extraneous ^M
+characters inserted before ^J characters. (fonts/u003043t.pfm,
+fonts/u004006t.pfm)
+ - CID-keyed fonts didn't handle GlyphDirectory correctly.
+(lib/gs_cidfn.ps)
+ - CIDFontType 0 fonts with 0-length Subrs caused an error.
+(lib/gs_cidfn.ps)
+ - Malformed TrueType fonts with overlapping tables (which are
+nevertheless apparently acceptable to Windows) caused an error.
+(lib/gs_ttf.ps)
+ - The Hershey font repairs documented in fileset 5.24 apparently
+never happened: the makeher.ps program was fixed, but the derived fonts were
+still broken. (fonts/h*.ps)
+ - In some Fontmaps, the /Charter-* font names were linked directly
+to the Bitstream fonts, rather than being aliases for /CharterBT-*.
+(lib/Fontmap.GS, lib/Fontmap.Sol, lib/Fontmap.Ult)
+
+Makes undefined fonts execute the SubstituteFont procedure in $error, per a
+posting by Stephen Zisk of Adobe on pdf-prepress-l on 10/8/97.
+(lib/gs_fonts.ps)
+
+Changes the interpreter-level CIE color space install procedures to reflect
+the addition of const to the color space argument. (zcie.c)
+
+</pre><h3><a name="5.67_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The interpreter appeared to be a distiller even when the current
+device was not pdfwrite. We fixed this by patching 'where' to make the
+distiller operators visible iff the current device is pdfwrite. We also
+moved the setcolor hack in 'where' into PostScript code. (lib/gs_init.ps,
+lib/gs_lev2.ps, lib/gs_pdfwr.ps, zmisc2.c)
+ - The current color space for shfill wasn't identically the same
+color space as the one in the shading. (gs_ll3.ps)
+
+Changes the default UCR and BG functions from f(k) = 0 to f(k) = k.
+(lib/gs_init.ps)
+
+Adds some unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (igc.c, zcie.c)
+
+Restructures some code slightly to suppress a bogus "possibly uninitialized
+variable" warning. (zdevice.c)
+
+Brings the CMap machinery up to LL3, by allowing a single CMap to reference
+multiple fonts (usefont, usematrix, and array CIDSystemInfo).
+(lib/gs_cmap.ps, zfcmap.c)
+
+Finishes implementing ReusableStreamDecode. The implementation is very
+inefficient -- it reads the entire contents into a string -- but it passes
+the Genoa FTS. (lib/gs_ll3.ps, lib/gs_res.ps, zfreuse.c)
+
+Changes CFFs with CharstringType = 2 to generate FontType 2 fonts, rather
+than FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
+implementations. (lib/gs_cff.ps, lib/gs_type1.ps, lib/type1ops.ps, bfont.h,
+ichar1.h, ifont.h, ifont1.h, zbfont.c, zchar1.c, zchar2.c, zcharx.c,
+zfont.c, zfont1.c, zfont2.c)
+
+Adds the ability to create (with .bytestring) and do a few operations
+(currently only length, put, putinterval) on byte arrays. This is needed
+for implementing ReusableStringDecode filters with >64K bytes of data, and
+for the LL3 halftone types. (zgeneric.c, zstring.c)
+
+Implements HalftoneMode, and HalftoneTypes 6, 10, and 16. To do this, we
+introduce an internal HalftoneType 7. (lib/gs_dps2.ps, lib/gs_init.ps,
+lib/gs_ll3.ps, lib/gs_res.ps, zht2.c)
+
+Finishes implementing ImageType 3 images. (zimage.c, zimage3.c)
+
+Adds the hooks in ColorSpace defineresource and undefineresource for
+detecting definitions that interact with UseCIEColor. (gs_res.ps)
+
+Implements UseCIEColor at the interpreter level. (lib/gs_dps1.ps,
+lib/gs_ll3.ps, zcolor1.c, zcolor2.c, zimage.c, zmisc3.c)
+
+Touches up some formatting. (igstate.h)
+
+</pre><h3><a name="5.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - A MediaBox with a non-zero llx or lly would produce incorrect
+output. The way we fixed this doesn't exactly match Acrobat, but it
+produces reasonable output. (based on a change from Artifex 5.55)
+(lib/pdf_main.ps)
+ - Colored patterns didn't work properly. (lib/pdf_draw.ps)
+ - The resources in a Pattern dictionary weren't made available
+during the execution of the PaintProc. (fix from Artifex) (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.67_Streams"></a>Streams</h3><pre>
+
+Adds a flag to the ASCIIHexEncode filter to indicate whether or not to write
+an EOD, required for Level 1 output from the pswrite device. (sstring.h,
+sstring.c)
+
+Adds a close_at_eod flag to the stream state, for implementing reusable
+streams; also cleans up some formatting. (stream.h, stream.c)
+
+</pre><h3><a name="5.67_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Black-and-white images with Interpolate = true produced
+undesirable artifacts if the image resolution was close to that of the
+device. We now disable Interpolate in this case. (gxiscale.c)
+ - In "async" mode, get_hardware_params did an unnecessary flush and
+reopen. (from Artifex 5.50c) (gdevprna.c)
+ - The computation of the minimum band height for the "async" reader
+was incorrect. (from Artifex 5.50c) (gdevbmpa.c)
+ - The "fix" for reallocating async buffer memory in 5.50 was
+incorrect. (from Artifex 5.55) (gdevprn.c)
+ - The "async" reader called clist_finish_page, which it shouldn't.
+(from Artifex 5.50c) (gdevprn.c)
+ - The image enumeration procedures for ImageType 4 were unnecessary,
+since the ImageType 1 code now handles ImageType 4 as well. (gximage4.c)
+ - The structure descriptor for tile clipping devices was
+unnecessary, since these are the same as mask clipping devices. (gxclip2.h)
+ - There was a trailing comma in an enumeration list. (gsbitops.c)
+ - Some compilers didn't like initializing a uint with ~0.
+(gdevm1.c)
+ - shfill unnecessarily saved, reset, and restored the graphics
+state. (gscolor3.c)
+ - Radial shadings always extended the shading to radius = 0.
+(gxshade1.c)
+ - An identifier exceeded VMS's limit of 31 characters. (gdevprn.h,
+gdevprn.c)
+ - A header file didn't #include enough of its prerequisites.
+(gxpcolor.h)
+ - Images with non-default ImageMatrix weren't written correctly in
+the band list. (bug introduced in 5.60) (gximage1.c)
+ - Banded images that had to use the default implementation incurred
+an extra level of procedure call for each block of data. (gxclimag.c)
+ - Images rotated by other than a multiple of 90 degrees produced
+incorrect output, because pie-&gt;rect.p.y was updated after each block of
+data, causing image_band_box to produce inconsistent results. (bug
+introduced by async changes in 5.50) (gxclimag.c)
+ - The client_data pointer in client_order halftones wasn't traced
+correctly, possibly causing memory corruption if this type of halftone was
+used. (These are not currently used by the PostScript interpreter.)
+(gsht.c, gsht1.c)
+ - ImageType 3 images didn't handle subrectangles. (Not a problem
+for PostScript, which doesn't generate subrectangles, or for PCL, which
+doesn't use them.) (gximage3.c)
+ - If a VMerror occurred when setting up an ImageType 3 image. an
+attempt could be made to free an uninitialized pointer. (gximage3.c)
+ - ImageType 4 images with 1 to 8 bits per sample and Decode = [1 0]
+didn't test transparency correctly. (bug introduced in 5.60) (gximage.h,
+gxicolor.c, gximono.c, gxipixel.c)
+ - setgray, setrgbcolor, sethsbcolor, and setcmykcolor didn't use
+gs_cspace_assign, causing code duplication. After this fix, we made the
+device color space types private, since there are no longer any references
+to them outside gscspace.c. (gxcspace.h, gscolor.c, gscolor1.c, gscspace.c)
+ - gs_cspace_assign was misspelled cs_cspace_assign. (gscspace.h)
+ - setgray didn't set the pattern pointer of the current color to 0,
+possibly causing the GC to retain patterns it shouldn't. (gscolor.c)
+ - The dev_ht member of an imager (or graphics) state wasn't included
+in the macro that enumerates reference-counted pointers. This probably had
+no effect, since the macro isn't used. (gxistate.h)
+ - When the band rasterizer freed its imager state, the halftone and
+device halftone structures weren't freed, possibly causing memory leakage.
+(gsistate.c)
+
+Changes the default UCR and BG functions from f(k) = 0 to f(k) = k, per a
+user's suggestion. We aren't sure which matches the Adobe implementations
+on color devices. (gxdcconv.c)
+
+Conditionally removes some variables that are not needed on big-endian
+systems. (gdevm1.c)
+
+Restructures some code to suppress bogus "possibly uninitialized variable"
+warnings. (gxfixed.h, gdevddrw.c, gsmatrix.c, gsmisc.c, gxclimag.c)
+
+Adds a couple of unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (gsbitops.c)
+
+Implements BBox, Background, and Extend for shadings. (Background isn't
+tested yet, because it only takes effect for pattern shading, which isn't
+implemented yet.) (gsshade.h, gxacpath.h, gxistate.h, gxpath.h, gscolor3.c,
+gsshade.c, gxacpath.c, gxacpath.c, gxcpath.c)
+
+Brings the CMap machinery up to LL3, by allowing a single CMap to reference
+multiple fonts (usefont, usematrix, and array CIDSystemInfo). (gsfcmap.h,
+gxfcmap.h, gsfcmap.c)
+
+Adds more tracing output to the band list reader. (gxclrast.c)
+
+Cleans up some formatting. (gstext.h, gxtext.h)
+
+Replaces FontType = 1, CharstringType = 2 with FontType = 2, to match the
+Adobe implementations. (gxfont1.h, gxftype.h, gxtype1.h, gstype1.c,
+gstype2.c, gxtype1.c)
+
+Adds new gs_bytestring and gs_const_bytestring structures that may reference
+either string or (byte) object storage. (gsstruct.h, gstypes.h, gsmemory.c)
+
+Implements an additional halftone type (ht_type_threshold2) needed for
+HalftoneTypes 6, 10, and 16. We don't extend gshtx.[hc] to deal with this
+at this time, since the new type is only needed for the PostScript
+interpreter. (gxht.h, gxhttype.h, gzht.h, gsht.c, gsht1.c, gshtscr.c)
+
+Adds a procedure for division mod M, possibly needed for halftones.
+(gxarith.h, gsmisc.c)
+
+Adds a -Z` debugging switch to turn off high-level images in the band list.
+(gxclimag.c)
+
+Implements gdev_prn_render_lines, as the lowest-level external API for
+rendering lines in a banded device. This call replaces the "overlay" calls
+for async rendering. (gdevprn.h, gdevprna.h, gxclist.h, gdevprn.c,
+gxclread.c)
+
+Extends the image enumeration API so that the enumerator can indicate what
+subset of the input planes it wants delivered on the next call to
+image_plane_data. Currently this is only needed for ImageType 3.
+(gsimage.h, gxdevcli.h, gxiparam.h, gdevddrw.c, gsimage.c, gximage.c,
+gximage3.c)
+
+Extends the image enumeration structures to handle images that require a
+different amount of data for plane N than Width * plane_depths[N]. This
+requires a NON-BACKWARD-COMPATIBLE change to the argument list of the
+gx_image_enum_common_init procedure. (gxiparam.h, gdevbbox.c, gsimage.c,
+gxclimag.c, gximage.c, gximage2.c, gximage3.c, gxipixel.c)
+
+Updates the copyright date to 1999. (gscdef.c)
+
+Cleans up formatting, capitalizes macro names, etc. (gximage.h, gxsample.h,
+gxipixel.c)
+
+Adds the UseCIEColor device parameter. (gxdevcli.h, gxdevice.h, gsdparam.c)
+
+Implements color space substitution (UseCIEColor). (gscolor2.h, gscspace.h,
+gscssub.h, gxistate.h, gzstate.h, gscolor.c, gscolor1.c, gscolor2.c,
+gscolor3.c, gscssub.c, gslib.c, gspcolor.c, gsstate.c)
+
+Changes the color space install procedure so that its color space argument
+is const. Now all color space implementation procedures take a const
+argument. (gscie.h, gxcspace.h, gscdevn.c, gscolor2.c, gscscie.c,
+gscspace.c, gscsepr.c, gspcolor.c)
+
+Changes gs_setcolorspace so its color space argument is const. (gscolor2.h,
+gscolor2.c)
+
+Splits imager state procedures out of gsstate.c, which was getting too
+large. (gxistate.h, gsstate.c, gsistate.c)
+
+Changes gs_imager_state_initialize so it really initializes the whole imager
+state. (gsistate.c, gxclrast.c)
+
+Removes the now-redundant first (device) argument from the plane_data and
+end_image procedures in image enumerators. Implementors of these procedures
+must now get the device from the enumerator structure. This is a
+NON-BACKWARD-COMPATIBLE design cleanup that we have been putting off for
+most of a year. Also adds an argument to plane_data so it can tell its
+client how many rows of data was used: this is needed for the implementation
+of ImageType 3. (gxdevcli.h, gxiparam.h, gdevbbox.c, gdevplnx.c, gsimage.c,
+gxclimag.c, gxidata.c, gximage.c, gximage3.c)
+
+Changes CFFs with CharstringType = 2 to FontType 2 fonts, rather than
+FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
+implementations. (gstype1.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.66"></a>Version 5.66 (internal) (11/25/98)</h2>
+
+<p>
+This fileset includes the ability to efficiently and conveniently obtain
+planar rather than chunky raster output. It also fixes a large number of
+minor compilation problems on non-ANSI compilers, and a small number of real
+problems. It also implements the PostScript LanguageLevel 3 clipsave and
+cliprestore operators. Unfortunately, because of fragility in third-party
+code changes that we were forced to include in the base graphics library,
+overlapped rasterizing ("async mode") fails:
+<ul>
+<li> - At 300 dpi, for 4-bit planar devices in the low-memory
+("partial
+ page") condition, and always for 32-bit planar devices.
+
+<li> - At 600 dpi, for all devices other than monochrome.
+</ul>
+
+<h3><a name="5.66_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - Every platform-specific makefile must now define _D_, the internal
+separator for defining preprocessor macros.
+ - Every platform-specific makefile must now define PSLIBDIR, the
+directory holding the PS initialization files at build time. (This need not
+be the same as where these files are stored at run time.)
+
+(Library)
+ - New elements arch_float_mantissa_bits and
+arch_double_mantissa_bits have been added to arch.h. Cross-build
+environments that supply arch.h rather than generating it at build time must
+add these elements.
+ - A new GB_SELECT_PLANES option has been added to the options mask
+for the get_bits_rectangle driver procedure. Implementations of this
+procedure must take this option into account (although they do not have to
+implement it).
+ - The make_buffer_device printer device procedure has been replaced
+with create_buf_device, setup_buf_device, and destroy_buf_device. All
+clients and implementors of make_buffer_device must be changed, including
+users of the clist_init_params macro.
+ - The gx_device_cmap_procs procedure has been replaced with
+gx_get_cmap_procs, which also take an imager state as an argument. Callers
+of gx_device_cmap_procs must be changed.
+
+</pre><h3><a name="5.66_Documentation"></a>Documentation</h3><pre>
+
+Updates Make.htm to clarify the standard directory structure.
+(doc/Make.htm)
+
+Adds a note about DEC C vs. VAX C for remapping of exit codes.
+(doc/Make.htm)
+
+Clarifies that the end_image procedure frees the enumerator. (gxiparam.h)
+
+</pre><h3><a name="5.66_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The genxxx utilities didn't compile properly on systems where the
+C compiler doesn't automatically search for .h files in the directory of the
+.c file. (unixtail.mak)
+ - Preprocessor definitions require special quoting with Watcom C.
+Fixing this required adding a _D_ macro similar to II. This is a
+NON-BACKWARD-COMPATIBLE change, since this definition is now required in
+each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
+unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
+ - The VMS subdirectories didn't include the "." to make the
+directory name relative. (openvms.mak)
+ - Some of the OpenVMS command files were omitted from the
+distribution. (copy_one.com, rm_one.com, rm_all.com)
+ - MMK interprets a final - on a command line as a continuation
+marker. (gs.mak)
+ - gsiparm4_h was used before being defined. (lib.mak)
+ - Compiled initialization code (COMPILE_INITS=1) was broken because
+of the introduction of subdirectories. (bcwin32.mak, dvx-gcc.mak,
+msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watcw32.mak, int.mak, geninit.c)
+ - Level 1 configurations would no longer build with the standard set
+of drivers. (devs.mak)
+ - wmake interpreted "&amp;" in a rule command line as calling for
+background execution. (wccommon.mak)
+
+Makes the standard set of features the same on all platforms, namely, psl3
+(PostScript LanguageLevel 3) + pdf (PDF 1.2/1.3) + dpsnext (DPS with NeXT
+extensions) + ttfont (ability to load TrueType fonts directly). Unix
+platforms add pipe (recognition of %pipe% file names). (bcwin32.mak,
+dvx-gcc.mak, msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watc.mak, watcw32.mak)
+
+Adds minimal support for Windows 95/NT compiler versions. (wccommon.mak)
+
+Notes a set of switches that may work around the optimizer bug in MSVC++
+5.0. (msvccmd.mak)
+
+</pre><h3><a name="5.66_Utilities"></a>Utilities</h3><pre>
+
+Adds a switch to genconf to set the escape character, since wmake interprets
+"&amp;" in a rule command line as calling for background execution. (genconf.c)
+
+Makes echogs recognize -+ alone as equivalent to - alone, for the sake of
+VMS systems, which interpret a final - as a line continuation marker.
+(echogs.c)
+
+Adds a viewpsm procedure to viewpbm.ps, for reassembling plane-separated
+files. (lib/viewpbm.ps)
+
+</pre><h3><a name="5.66_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - There were places where the code assumed that void * could be
+coerced to byte *, which not all C compilers support. (gdevpdfx.h,
+gdevpdfo.c)
+ - The name put_bytes was defined in two places, causing an error
+when linking with NOPRIVATE=1. (gdevpx.c)
+ - The minimum space computation for high-level images and for the
+scan line length for the sample async driver was slightly too small.
+(gdevbmpa.c)
+
+Improves the tracing output from the psm driver. (gdevpbm.c)
+
+Rewrites some macros to eliminate "statement not reached" compiler warnings.
+(gdevpx.c)
+
+Revises the (only) client for changes in the plane-extraction device API.
+(gdevpbm.c)
+
+Adds plane-separated BMP drivers, primarily for testing but also as an
+example. bmp[a]sep1 and bmp[a]sep8 produce 1- and 8-bit-per-pixel separated
+CMYK. (gdevbmp.h, gdevbmp.c, gdevbmpa.c, gdevbmpc.c)
+
+</pre><h3><a name="5.66_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The Watcom environment doesn't provide the st_blocks member of the
+stat structure. (stat_.h)
+ - In its standard configuration, the Watcom environment doesn't
+provide stdprn. (gp_iwatc.c)
+ - Newer versions of DEC C on OpenVMS don't require the remapping
+of the exit codes. (stdpre.h)
+
+Revises the dummy implementation of semaphores, monitors, and threads in an
+attempt to make async rendering (just barely) work for the non-overlay case.
+Unfortunately, this turned out not to be feasible. (gp_nsync.c)
+
+</pre><h3><a name="5.66_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Certain DEC compilers assume that a pointer is aligned even if it
+is cast to a pointer whose target type has weaker alignment; this produced
+"unaligned access" errors in the interpreter. (interp.c)
+ - A necessary cast was omitted. (zcrd.c)
+ - Level 1 configurations would no longer run. (lib/gs_init.ps)
+
+Updates clients to set mask image fattening properly. (zimage.c, zimage2.c)
+
+Rewrites some macros to eliminate "statement not reached" compiler warnings.
+(files.h, istruct.h)
+
+</pre><h3><a name="5.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The test for whether to honor the Rotate key was backwards. (bug
+probably introduced in 5.24) (lib/pdf_main.ps)
+
+Updates the code to handle improper PDF files in which the startxref and the
+following file position appear on the same line rather than (as required by
+the spec) two successive lines. (lib/pdf_main.ps)
+
+</pre><h3><a name="5.66_Streams"></a>Streams</h3><pre>
+
+Notes a bug in s_DCT_get_quantization_tables. (sdcparam.c)
+
+</pre><h3><a name="5.66_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The algorithm for reducing 4-bit chunky to 1-bit separated colors
+didn't handle the trailing pixels of a transfer correctly. (gdevplnx.c)
+ - Banding for RGB devices with multi-plane halftones was broken.
+(bug introduced recently) (gxdcolor.c)
+ - Mask images were written in the band list with inverted polarity.
+(bug introduced in 5.60) (gximage1.c)
+ - Mask images were always fattened. Fixing this required extending
+the API, since gs_image_t_init_mask set adjust = true by default (a bad
+decision) and we didn't want to change it. (gschar.h, gscpm.h, gsiparam.h,
+gzstate.h, gschar.c, gximage1.c)
+ - The member names push and pop caused problems for compilers whose
+preprocessors consider it an error to use a macro defined with arguments as
+a name without arguments. (gxfont1.h, gstype1.c)
+ - Once again, gcc didn't detect some private/non-private mismatches.
+(gdevplnx.c, gsalphac.c, gximage2.c, gximage4.c)
+ - &amp; was used with an array (which gcc doesn't complain about).
+(gxshade6.c)
+ - There were several uses of automatic aggregate initialization,
+which not all C compilers support. (gdevprn.c, gdevps.c)
+ - There were places where the code assumed that void * could be
+coerced to byte *, which not all C compilers support. (gdevprn.c)
+ - Some \ line continuation characters were used inappropriately
+(in a macro argument list). (gxclimag.c)
+ - Some function prototypes didn't use the Pn macros. (gsalloc.c)
+ - A function definition not at the left margin confused ansi2knr.
+(gsfont.c)
+ - A cast for the result of malloc, needed on systems where malloc
+returns a char * rather than a void *, was missing. (gsmalloc.c)
+ - An occurrence of dev should be pdev. (I can't understand how we
+missed this in 5.65.) (gdevprna.c)
+ - A value was missing from a list of initial structure values,
+causing mismatches between subsequent values and the members they
+initialized. (gcc treated this as a warning: it should have given an
+error.) (gxband.h)
+ - When setting the tile phase during banding, the old value of the
+tile phase was written out rather than the new one. (gxclutil.c)
+ - The definition of fixed_mult_quo wasn't consistent between systems
+with FPU (where it took the floor, and might be slightly inaccurate) and
+systems without FPU (where it truncated towards zero, and was accurate).
+(gxfixed.h, genarch.c, gsmisc.c)
+ - Banding devices using multi-screen halftones didn't set the
+halftone phase correctly. We have now "fixed" this problem at least 4
+times. (gxclrast.c)
+ - The name put_bytes was defined in two places, causing an error
+when linking with NOPRIVATE=1. (gsparams.c)
+ - For [x][y]show, the pointers to the width arrays weren't
+initialized, causing memory access errors when checking or garbage
+collecting. (gschar.c)
+ - Due to a typo, bitmap characters were fattened too much.
+(gximage1.c)
+ - Some identifiers exceeded VMS's limit of 31 characters.
+(gdevprn.h, gscsepr.h, gsdevice.h, gxdevice.h, gdevdflt.c, gdevprn.c,
+gscsepr.c, gsdparam.c)
+ - The device halftone parameter was declared const inappropriately
+in some places. (gsdcolor.h, gxdither.h, gxdcolor.c, gxdither.c)
+ - gdev_mem_raster was used (misleadingly, even though it happened to
+produce the correct result) on possibly non-memory devices. (gxclread.c)
+ - Pure Level 1 configurations had some undefined procedures.
+(gscolor1.c, gscspace.c)
+ - Indexed color images could incorrectly conclude that they didn't
+need to re-render halftones, producing incorrect output. (gximono.c)
+ - gs_device_is_memory returned false for non-banding printer
+devices: this didn't used to matter, but it matters now. We changed it to
+test the procedures rather than the device name. (gdevmem.c)
+ - The plane extraction device didn't handle halftoned colors
+correctly. (gdevplnx.c)
+ - If an error occurred while building a Function object, a crash
+could occur while freeing the partially built object. (gsfunc.c)
+ - The plane extraction device didn't handle RasterOps correctly.
+(gdevplnx.c)
+ - The colors-used mask could include some additional, invalid bits.
+(gxclrect.c)
+ - The colors-used mask was updated incorrectly for RasterOps on
+subtractive-color devices. (gxclrect.c)
+ - Memory devices didn't set enough option bits for the case where
+get_bits_rectangle had to do conversion. (gdevmem.c)
+ - The TrueType font rasterizer didn't accept fonts whose 'type' was
+"true" rather than the documented <00 01 00 00>. (gstype42.c)
+ - A bug in the Watcom compiler caused two conditional expressions to
+execute incorrectly. (gstype42.c)
+ - When a page queue was freed, it attempted to free the page_info
+resource in the reserve entry, which is actually unused. (gxpageq.c)
+ - A necessary #include was missing. (gdevmr2n.c)
+
+Reduces the size of band list entries for halftoned colors somewhat.
+(gxclpath.h, gxclpath.c, gxclrast.c)
+
+Increases the number of saved band color masks per page, mostly for testing.
+(gxband.h)
+
+Rewrites some macros, and one 'for' statement, to eliminate "statement not
+reached" compiler warnings. (gxcldev.h, gxpath2.c)
+
+Corrects a tiny inaccuracy in the computation of trapezoid coordinates.
+(gdevddrw.c)
+
+Edits the trapezoid fill code for greater readability and better
+documentation of its functioning. The new code runs a little slower on
+compilers that don't support 'inline'. (gdevddrw.c)
+
+Improves the documentation of the tile phase bookkeeping. (gxclrast.c)
+
+Documents the fact that fixed_mult_quo takes the floor if the first argument
+is negative. (gxfixed.h)
+
+Finishes implementing clipsave and cliprestore. (gxclipsr.h, gxistate.h,
+gzstate.h, gsclipsr.c, gsstate.c)
+
+Implements driver access to planar, rather than chunky, banding.
+(gdevplnx.h, gdevprn.h, gxclist.h, gxdevcli.h, gxrplane.h, gdevplnx.c,
+gdevprn.c, gxclread.c)
+
+Makes it possible to set up memory devices that allocate just the line
+pointer table (but not the bitmap), or neither the line pointers nor the
+bitmap. (gxdevmem.h, gdevmem.c)
+
+Moves gx_device_white/black to a more appropriate header file. (gxdcolor.h)
+
+Moves gx_default_make_buffer_device to a more appropriate file.
+(gdevdflt.c, gdevprn.c)
+
+Adds plane extraction and expansion utility procedures, required for the
+extended capability of get_bits_rectangle. (gsbitops.h, gsbitops.c)
+
+Extends get_bits_rectangle so it can return individual planes rather than
+all planes. (gdevplnx.h, gsbittab.h, gxbitfmt.h, gxgetbit.h, gdevdgbr.c,
+gdevdrop.c, gdevmem.c, gdevplnx.c, gsalphac.c, gsbittab.c)
+
+Factors out the two more complex cases of gx_get_bits_copy into single-use
+procedures for readability. (gdevdgbr.c)
+
+Makes public the procedure for reducing a colored halftone to a pure or
+binary halftone, needed for planar rendering. (gxdither.h, gxdither.c)
+
+Moves the client_data pointer from gs_state to gs_imager_state.
+(gxistate.h, gzstate.h, gsstate.c)
+
+Extends the plane extraction device to handle fill_mask and images
+efficiently. (gxcmap.h, gdevplnx.h, gdevplnx.c)
+
+Creates a procedure to make a temporary copy of a gs_imager_state, needed
+for planar image processing. (gxistate.h, gsstate.c)
+
+Makes getting the color mapping procedures for a device a virtual procedure
+of the imager state, needed for planar image processing. (gxcmap.h,
+gxistate.h, gxcmap.c, gxicolor.c, gximono.c, gxi12bit.c)
+
+Increases the amount of memory allocated to the asynchronous rasterizer,
+since we now may need a dynamically allocated line pointer table for the
+target (plane) memory device. (gdevprna.c)
+
+Adds a record of which bands have "difficult" RasterOps -- RasterOps that
+can't be executed, even in principle, in CMYK space. We don't do anything
+with this information yet, but we will have to. (gsropt.h, gxband.h,
+gxcldev.h, gxclpath.h, gxclist.c, gxclpath.c, gxclrect.c)
+
+Makes conversion from render_plane indices to bit ranges the responsibility
+of the device, not the client. (gxrplane.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.65"></a>Version 5.65 (internal) (11/13/98)</h2>
+
+<p>
+The main purpose of this fileset is to fix the MS Windows and OpenVMS build
+procedures, which have been broken since 5.60. It also adds the ability for
+a driver to determine efficiently which colors are used in a given page or
+band, which is important for separated color printing, and contains some
+early support for plane-separated color printing.
+
+<h3><a name="5.65_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - Every platform-specific makefile must now define D_ and _D, the
+brackets for defining preprocessor macros.
+ - The unix-cc.mak makefile has been renamed unixtrad.mak, since it
+only applies to "traditional C" compilers.
+
+(Drivers, Library)
+ - Devices now store their TextAlphaBits and GraphicsAlphaBits values
+explicitly. The former get_alpha_bits procedure is obsoleted, and no
+longer implemented or called by any code we distribute.
+ - gx_device_color_info now has additional fields. Code that
+constructed gx_color_info_values in any way other than by using the dci_
+macros will no longer work.
+
+</pre><h3><a name="5.65_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The -sPSFile= switch was still documented, even though it no
+longer exists. (doc/Use.htm)
+ - The - "switch" wasn't documented in the list of switches,
+although it was documented elsewhere. (doc/Use.htm)
+ - The documentation for the PC environments was out of date -- it
+didn't mention the use of subdirectories. (doc/Make.htm)
+
+Updates the documentation on PostScript files to indicate in what directory
+the files are distributed. (doc/Psfiles.htm)
+
+Documents more of the utility procedures used by printer drivers.
+(gdevprn.h)
+
+Notes that the public tar archives may not be compatible with the tar
+program in SunOS 4.1.3. (doc/Make.htm)
+
+Adds documentation on the Unix "make pg" target. (doc/Make.htm)
+
+Updates documentation to reflect the name change from unix-cc.mak to
+unixtrad.mak. (doc/Make.htm)
+
+Adds some links for the benefit of people who have built Ghostscript before
+and therefore skip reading the initial sections of the documentation.
+(doc/Make.htm)
+
+Documents the new -_ switch. (doc/Use.htm)
+
+Updates the documentation to mention PostScript LanguageLevel 3 and to
+remove many references to 16-bit systems. (doc/Language.htm)
+
+</pre><h3><a name="5.65_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - A cast discarded `const' needlessly. (genconf.c)
+ - Upper-case echogs switches were getting converted to lower case
+on VMS. (jpeg.mak)
+ - $(EXP) was missing before some invocations of executables.
+(gs.mak, jpeg.mak, lib.mak)
+ - Some dependencies in the Unix install script were incorrect.
+(unixinst.mak)
+ - Because of differences between shells, putting *.upp in the list
+of files to be installed didn't work with some shells. (unixinst.mak)
+ - The PC makefiles were out of date. (bcwin32.mak, pcwin.mak,
+winint.mak, winlib.mak, dwmain.rc, gsdll32.rc)
+ - Some makefiles still used $(DEV) instead of dev. (dvx-tail.mak,
+msvclib.mak, openvms.mak, os2.mak, pcwin.mak, watclib.mak, winlib.mak)
+ - The DEVICE_DEVSn lists overflowed the DOS 120-character command
+line limit again. We had to add DEVICE_DEVS16 through 20 to work around
+this. (*.mak)
+ - Preprocessor definitions have a different syntax on VMS. Fixing
+this required adding D_ and _D macros, similar to I_ and _I. This is a
+NON-BACKWARD-COMPATIBLE change, since these definitions are now required in
+each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
+unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
+
+Adds command line switches to generate additional warnings when compiling
+the auxiliary programs with gcc. (unix-gcc.mak)
+
+Gets rid of the EXPP and SHP macros, since they aren't used or needed any
+longer. (gs.mak, bcwin32.mak, dvx-head.mak, msvccmd.mak, openvms.mak,
+os2.mak, unixhead.mak, watcw32.mak, wccommon.mak)
+
+Changes the Unix EXP to null, since all executables now use an explicit
+directory prefix. (unixhead.mak)
+
+Renames unix-cc.mak as unixtrad.mak, since people with ANSI-compatible cc
+were getting confused. (unix-cc.mak [deleted], unixtrad.mak)
+
+Adds a -_ switch, for piped execution with buffering. (iminst.h,
+imainarg.c)
+
+</pre><h3><a name="5.65_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The revised ansi2knr didn't recognize "foo(void)" as a procedure
+definition. (ansi2knr.c)
+ - ansi2knr didn't handle function definitions where the last
+formal parameter was a procedure parameter. (ansi2knr.c)
+
+Adds a utility for printing an informative error page if a PostScript job
+fails. (lib/errpage.ps, doc/Psfiles.htm, unixinst.mak)
+
+</pre><h3><a name="5.65_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The [e]pswrite drivers produced incorrect output for images in
+non-Device color spaces. We fixed this by causing all other images to be
+handled as rectangles. This is clearly not satisfactory: we need to unify
+the PS and PDF writers in this area. (gdevps.c)
+ - The CCITTFaxEncoded data produced by the [e]pswrite driver had
+both a Rows value and an EndOfBlock marker, which wasn't compatible with
+some Adobe interpreters. (gdevpsdf.c)
+ - X devices couldn't be copied, because the copy didn't clear the
+list of X fonts and therefore tried to free it a second time. (gdevx.c,
+gdevxini.c)
+ - gdevx.h declared a type called rect, conflicting with variables
+named rect. (gdevx.h, gdevx.c)
+ - A function definition wasn't formatted properly to be
+recognized by ansi2knr. (gdevupd.c)
+ - The PCL XL drivers crashed if given a masked image. (gdevpx.c)
+
+Adds a PBM driver that writes separated CMYK, using the colors-used masks to
+skip bands. (devs.mak, gdevpbm.c)
+
+Updates drivers that formerly supported the TextAlphaBits and
+GraphicsAlphaBits parameters themselves. (gdevmswn.h, gdevsvga.h,
+gdevpbm.c, gdevmswn.c, gdevpm.c, gdevwdib.c, gdevsvga.c, gdevxalt.c)
+
+</pre><h3><a name="5.65_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The stack size on the Watcom platform was set too small.
+(watc.mak)
+ - The OpenVMS platform code and makefiles had gotten out of date.
+(gp_vms.c, openvms.mak)
+
+</pre><h3><a name="5.65_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The size of Indexed color space lookup tables wasn't set, possibly
+causing them to be corrupted during garbage collection. (zcsindex.c)
+ - A function definition wasn't formatted properly to be
+recognized by ansi2knr. (icontext.c)
+ - quit was only rebound to stop in encapsulated jobs, rather than in
+any context under control of a job server. Since we don't currently have
+any explicit way to indicate whether execution is under control of a job
+server, we consider that it is under a job server iff startjob has ever been
+executed. (lib/gs_lev2.ps)
+
+Adds tracing output for removing an entry from a dictionary. (idict.c)
+
+Slightly improves dictionary deletion so that it can replace a run of
+deleted keys with empty keys. (idict.c)
+
+Adds statistics-gathering to the interpreter. (interp.c)
+
+Adds more statistics-gathering to the dictionary stack search. (idstack.c)
+
+Improves the debugging printout of packed arrays. (idebug.c)
+
+Increases the name table allocation increment from 128 names (1.5K) to 256
+names (3K), to provide better scattering of name indices. (inamedef.h)
+
+Changes the name count / index mapping to provide better scattering.
+(inamedef.h)
+
+</pre><h3><a name="5.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - If a font other than the base 14 wasn't embedded and lacked a
+descriptor, an error occurred. (The PDF specification explicitly prohibits
+this, but Acrobat PDFWriter 3.02 for Windows produces PDF files with
+TrueType fonts that lack a descriptor.) (lib/pdf_font.ps)
+
+</pre><h3><a name="5.65_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The computation of colors used by CMYK halftones was incorrect.
+(gxclpath.c)
+ - Some header files had preprocessor directives with a space before
+the #, which pre-ANSI compilers don't accept. (gpsync.h, gsjconf.h,
+gsmemlok.h, gxsync.h, gxxfont.h)
+ - A number of prototypes didn't use the Pn macros. (gscolor2.h,
+gscsepr.h, gsptype1.h, gspcolor.c)
+ - A function definition wasn't formatted properly to be
+recognized by ansi2knr. (gxcht.c)
+ - The algorithm for reducing single-plane CMYK halftones to binary
+halftones was incorrect (bug introduced in 5.60). (gxdither.c)
+ - Writing a degenerate triangle or parallelogram in the band list
+could cause a memory access error when rasterizing. (gxclrast.c)
+
+Adds per-band "colors used" information to the information for a saved page,
+and procedures (gdev_prn_colors_used and gx_page_info_colors_used, defined
+in gdevprn.h) for accessing it. (gdevprn.h, gxband.h, gxclist.h, gdevprn.c,
+gxclist.c)
+
+Adds an internal device that appears to clients as a multi-plane color
+device, and extracts a single plane for actual rendering. This device will
+be used to support planar output devices. (gdevplnx.h, gsbitops.h,
+gdevplnx.c)
+
+Adds explicit color_info.text_anti_alias_bits and graphics_anti_alias_bits
+values in the device state, obsoleting the get_alpha_bits procedure, and
+makes them settable for all devices. (gxdevcli.h, gxdevice.h, gdevabuf.c,
+gdevdflt.c, gdevnfwd.c, gdevprn.c, gsdparam.c)
+
+Reformats some code for readability. (gxdither.c)
+
+Adds a tentative API for a procedure that allows band rasterizing directly
+into client's memory. This is tentative because we may need to add the
+ability to select an individual plane. (gdevprn.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.64"></a>Version 5.64 (internal) (11/5/98)</h2>
+
+<p>
+This is another incremental fileset to fix problems for an external
+customer.
+
+<h3><a name="5.64_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The output_page procedure of all drivers now must call
+gx_finish_output_page as its last action. (This doesn't affect ordinary
+printer or raster file drivers, which already call a common procedure.)
+
+</pre><h3><a name="5.64_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The instructions for creating 'makefile' on Unix systems were
+out of date. (doc/Make.htm)
+
+</pre><h3><a name="5.64_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - An omitted return statement caused genconf to malfunction on some
+platforms. (genconf.c)
+ - The replacement of MAKEFILES by TOP_MAKEFILES accidentally changed
+some comments that should not have been changed. (bcwin32.mak, gs.mak,
+msvctail.mak, openvms.mak, os2.mak, watcw32.mak, wctail.mak, winlib.mak)
+
+</pre><h3><a name="5.64_Drivers"></a>Drivers</h3><pre>
+
+Updates drivers to call gx_finish_output_page where needed. (gdev3b1.c,
+gdevcgm.c, gdevcp50.c, gdevpdf.c, gdevmswn.c, gdevpm.c, gdevps.c, gdevpx.c,
+gdevsnfb.c, gdevwprn.c, gdevx.c)
+
+</pre><h3><a name="5.64_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The FontBBox workaround introduced in 5.63 didn't work properly.
+(zchar1.c)
+ - PageCount was getting incremented in the first device of a device
+pipeline, rather than in the last one and being propagated back.
+(gxdevice.h, gdevbbox.c, gdevdflt.c, gdevnfwd.c, gdevprn.c, gdevprna.c,
+gsdevice.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.63"></a>Version 5.63 (internal) (11/4/98)</h2>
+
+<p>
+This fileset was driven by the development needs of an external customer,
+primarily related to asynchronous rendering. It includes a few bug fixes as
+well.
+
+<h3><a name="5.63_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - In the makefiles, changes the name MAKEFILES to TOP_MAKEFILES.
+
+(Library)
+ - The pis member of the Type 1 interpreter state was renamed in
+order to catch places that assumed it was set. (It may now be 0.) This
+should not affect any client code.
+ - gx_page_queue_dnit and gx_page_queue_finish_dequeue now free the
+band list information associated with the page_info in the queue entry. An
+explicit call of gx_page_queue_entry_free_page_info is now required to free
+this information before any other call of gx_page_queue_entry_free.
+
+</pre><h3><a name="5.63_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - devs.mak incorrectly referred to msdevs.mak rather than pcwin.mak.
+(devs.mak)
+
+</pre><h3><a name="5.63_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - There was a $ in the makefile that wasn't quoted. (unix-gcc.mak)
+ - The name MAKEFILES has a special meaning in GNU make which only be
+disabled by using a directive that is a syntactic error for standard 'make'
+implementations. We had to work around this by changing all occurrences of
+MAKEFILES to TOP_MAKEFILES. (*.mak)
+ - genconf did the wrong thing for modules with names shorter than
+5 characters. (genconf.c)
+
+</pre><h3><a name="5.63_Drivers"></a>Drivers</h3><pre>
+
+Updates the Canon BJC library, changing the names of the files. This code
+is still very preliminary. (gdevbjcl.h, gdevbjcl.c)
+
+</pre><h3><a name="5.63_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some Type 1 fonts have a plausible but incorrect (too-small)
+FontBBox, causing some characters to be clipped. We work around this by
+enlarging the FontBBox and restarting the rasterization if the outline goes
+outside the FontBBox. (zchar1.c)
+
+</pre><h3><a name="5.63_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - gx_default_strip_copy_rop didn't check for zero width before
+dividing by it. (gdevdrop.c)
+ - Some places that called a procedure returning void tried to use
+the return value. (gximage.c, gximage1.c, gximage4.c)
+ - The flatness for rendering Type 1 characters was set incorrectly
+(always set to 0, producing best accuracy at extra cost) for characters not
+in portrait orientation. (gxtype1.c)
+ - clist_begin_typed_image incorrectly used the memory manager client
+name "clist_begin_image". (gxclimag.c)
+ - If a page queue entry was created without a page_info, the entry's
+page_info wasn't initialized, probably causing a crash when attempting to
+free the (nonexistent) associated band files later. (gxpageq.c)
+
+More fully supports the use of saved page_info objects for decoupling banded
+rendering from band list construction:
+ - Adds the ability to close and free the command list associated
+with a saved page. (gxclist.h, gxclist.c)
+ - Separates freeing of the band list information associated with a
+page queue entry from freeing the entry itself. (gxpageq.h, gxpageq.c)
+ - Changes the rendering thread for asynchronous band rendering so
+that it doesn't try to free the band list information twice. (gdevprna.c)
+
+Implements triangles and parallelograms in the band list, primarily for the
+sake of smooth shading. (gxclpath.h, gxclist.c, gxclpath.c, gxclrast.c)
+
+Adds a rectangle merging procedure, parallel to rectangle intersection.
+This is needed for the FontBBox fix. (gsrect.h)
+
+Adds logic for keeping track of what pixel values are used in which bands.
+Currently this information is not used for anything. (gdevmrop.h, gsropt.h,
+gxcldev.h, gxclpath.h, gxclrect.c, gxclpath.c, gxclimag.c)
+
+Updates a few more files for readability and coding conventions.
+(gxband.h, gxpageq.c)
+
+Updates users of gxband.h and gxpageq.h. (gdevprn.h, gxclist.h, gxpageq.h,
+gdevprna.c, gxclpage.c, gxclread.c)
+
+Moves the definition of the page queue into the (private) implementation
+file. (gxpageq.h, gxpageq.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.62"></a>Version 5.62 (internal) (10/31/98)</h2>
+
+<p>
+This fileset concludes this round of work on (primarily color) performance
+improvement. It contains almost no new bug fixes.
+
+<h3><a name="5.62_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Clients that load the CIE caches themselves must now reset the
+procedures to the _from_cache values. (This affects the PostScript
+interpreter, but no ordinary library clients.)
+ - gs_cie_compute_wbsd (an internal procedure) was changed to
+gs_cie_compute_points_sd, with different parameters.
+
+</pre><h3><a name="5.62_Documentation"></a>Documentation</h3><pre>
+
+Adds information about problems with PDF files copied from Macintosh
+environments. (doc/Use.htm)
+
+</pre><h3><a name="5.62_Drivers"></a>Drivers</h3><pre>
+
+Adds a library for generating Canon BJC commands. This code is subject to
+change without notice! (gdevcbjc.h, gdevcbjc.c)
+
+</pre><h3><a name="5.62_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The structures allocated for CIE RenderTables weren't marked
+correctly for garbage collection, possibly mangling the output. (zcie.c)
+ - The CIE color space procedures weren't reset after the cache was
+loaded, producing incorrect output now that it matters. (zcie.c, zcrd.c)
+
+</pre><h3><a name="5.62_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Under some circumstances, a setbbox didn't take effect.
+(gxpcopy.c)
+ - The last step of CIE color mapping didn't clamp the very top end
+of the range correctly. (gsciemap.c)
+
+Speeds up bits_replicate_horizontally a bit more. (gsbitops.c)
+
+Separates the CIE color mapping code from CIE cache loading, since the file
+was getting too big. (gscie.h, gscie.c, gsciemap.c)
+
+Finishes adding the hooks for skipping steps during CIE color mapping when
+possible, and implements one case of step-skipping. (gscie.h, gscie.c,
+gsciemap.c, gscrd.c)
+
+Adds more tracing to the CIE color machinery. (gscie.c)
+
+Changes the default number of tiles for the colored halftone screen caches
+from 1 to 4, substantially reducing cache turnover. (gsht1.c, gshtx.c,
+gxclrast.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.61"></a>Version 5.61 (internal) (10/28/98)</h2>
+
+<p>
+More rendering speedups, and fixes for many of the minor problems reported
+in 5.50.
+
+<h3><a name="5.61_Documentation"></a>Docmentation</h3><pre>
+
+Fixes problems:
+ - There were still some incorrect references to .txt files.
+(gs.mak, libpng.mak)
+ - Two references to libpng should have referred to libjpeg.
+(gs.mak)
+
+</pre><h3><a name="5.61_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - GNU 'make' treats the name MAKEFILES specially. (unix-gcc.mak)
+ - genconf didn't sort libraries in the right order. (genconf.c)
+ - The dependency for ansi2knr, and the invocation of ccgs, didn't
+include the directory name. (ccgs, unix-cc.mak)
+ - The CC_ and CCAUX rules didn't invoke the new ccgs correctly.
+(unix-cc.mak)
+ - There was a typo in a comment. (unixtail.mak)
+ - gcc versions of the form 2.7.2.f.1 weren't recognized as having
+the const-related code generation bug. (unix-gcc.mak)
+
+Documents workaround for bugs in newer IRIX compilers. (doc/Make.htm)
+
+</pre><h3><a name="5.61_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ansi2knr didn't understand the new formatting of the enum_ptrs and
+reloc_ptrs procedures, which now don't have a left brace on the same line as
+the macro call that defines the procedure. (ansi2knr.c)
+
+Adds a utility for viewing MIFF files. (lib/viewmiff.ps)
+
+</pre><h3><a name="5.61_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The X driver could report a depth (e.g., 15 bits) that caused
+problems elsewhere. (gdevxini.c)
+ - With the X driver, if the display is grey-scale or does not have
+enough colors to allocate a color ramp, Ghostscript crashed in
+x_map_color_rgb due to an array index overflow. (gdevx.c)
+ - The PDF writer used the X scaling of fonts to determine the point
+size rather than the Y scaling, which gives the wrong result for synthetic
+condensed fonts. (gdevpdft.c)
+ - If the last thing written before a flushpage was text, the X
+driver might fail to display it. (gdevx.c)
+ - The PDF writer didn't free the streams created for image
+compression, causing a memory leak. (gdevpsdf.c)
+ - pswrite didn't output a command to set the page size. (gdevps.c)
+
+Removes an obsolete comment and commented-out line. (gdevxalt.c)
+
+</pre><h3><a name="5.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Explicit (not resource) Indexed color spaces caused an error.
+(lib/pdf_draw.ps)
+
+</pre><h3><a name="5.61_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The PNGPredictor filters didn't free their row buffer. (spngp.c)
+ - The PNGPredictor filters didn't handle end-of-data correctly.
+(spngp.c)
+
+Changes the eexec filter to ignore % characters when reading
+ASCIIHex-encoded data. This is contrary to the Adobe documentation, but one
+badly coded prologue requires it. (seexec.c)
+
+</pre><h3><a name="5.61_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The definition of TRANSPARENCY_PER_H_P was in the wrong module,
+causing it to be ignored. (gdevmrop.h, gdevdrop.c)
+ - There was a typo in the tracing output for init_tile_cursor.
+(gxcht.c)
+ - gx_get_bits_copy computed the standard raster incorrectly if
+the destination used a different color representation from the source,
+causing multi-line transfers to be done incorrectly. (gdevdgbr.c)
+ - Parentheses were missing around the use of width_bits in the
+definition of bitmap_raster, possibly causing incorrect computation.
+(gxbitmap.h)
+ - When rendering a Pattern, a singular CTM caused an error even if
+the Pattern was empty. (gspcolor.c)
+ - The lookup table wasn't allocated for device-originated CRDs.
+(gscrdp.c)
+ - If an error occurred when setting up to rasterize a band,
+data_bits could be freed without ever having been initialized. (gxclrast.c)
+ - Processing a CIE-color image with a color space different from the
+current color space caused an error. (gscie.c)
+ - The speedup for bits_replicate_horizontally had an algorithm
+error, producing incorrect output. (gsbitops.c)
+
+Splits up the memory device implementation of RasterOp, since the file was
+getting too large. (gdevmem.h, gdevm1.c, gdevm8.c, gdevm16.c, gdevm24.c,
+gdevm32.c, gdevmrop.c [deleted], gdevmr1.c, gdevmr2n.c, gdevmr8n.c,
+gsnorop.c)
+
+Cleans up a little formatting. (gsbittab.h)
+
+Speeds up the default RasterOp implementation some more. (gdevdgbr.c,
+gdevdrop.c, gdevmem.c)
+
+Speeds up testing whether a given halftone level is already present in its
+cache. (gzht.h, gxht.c)
+
+Speeds up 1-bit CMYK halftones a bit more. (gxcht.c)
+
+Makes filling always use the (much faster) trapezoid-based algorithm if the
+region being filled is a rectangle. (gxfill.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.60"></a>Version 5.60 (internal) (10/18/98)</h2>
+
+<p>
+This fileset incorporates many performance enhancements for 1-bit CMYK
+devices, especially for PCL 5c interpretation.
+
+<p>
+This fileset divides the files into subdirectories. In the lists of changed
+files, files with no explicit subdirectory name are in the src subdirectory.
+The revised OpenVMS and OS/2 makefiles have not been tested.
+
+<h3><a name="5.60_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - The instructions for font compilation in doc/Fonts.htm are
+different.
+ - The fileset has been split into multiple directories; the source
+code and makefiles are now in src/.
+ - The top-level makefile requires a definition for BINDIR for the
+directory to hold the final executable.
+ - Every .dev rule of the form
+ xxx.dev: &lt;list&gt;
+ $(SETyyy) xxx &lt;items&gt;
+ $(ADDMOD) xxx &lt;items&gt;
+must be changed to
+ $(DD)xxx.dev: &lt;list&gt;
+ $(SETyyy) $(DD)xxx &lt;items&gt;
+ $(ADDMOD) $(DD)xxx &lt;items&gt;
+(DD for drivers, PSD for PostScript/PDF-interpreter features, GLD for
+graphics library features). Every -include and -replace option in the
+makefiles rules, and every element of FEATURE_DEVS and DEVICE_DEVS*, must be
+changed similarly. This is very unfortunate, especially since people
+editing FEATURE_DEVS and DEVICE_DEVS* must now know which subsystem
+implements a particular feature; but we tried 3 different ways to get the
+generated .dev files out of the top-level directory, and this was the only
+one we could make work.
+ - Top-level makefiles must define both MAKEFILE and MAKEFILES,
+the latter to include any subsidiary makefiles that define configuration
+parameters. Dependencies on $(MAKEFILE) must be changed to $(MAKEFILES).
+ - Color space objects now must either be allocated with the
+gs_cspace_build_ procedures or initialized with the gs_cspace_init_
+procedures: building color spaces "by hand" is no longer allowed.
+
+(Library)
+ - There are new required elements of the gs_image_type_t structure.
+ - The binary and colored variants of gx_device_halftone have
+changed. (No APIs are affected.)
+ - If a device changes its (effective) color mapping algorithm other
+than as a side effect of put_params, it must call
+gx_device_decache_colors(dev).
+
+</pre><h3><a name="5.60_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - Some files still referred to .doc files rather than .htm.
+(gsiparam.h, imain.h)
+ - Version 5.50 was incorrectly identified as a beta version.
+(doc/News.htm)
+ - The instructions for cross-compilation were seriously
+incomplete. (doc/Make.htm)
+
+Adds a text-only README file. (doc/README)
+
+Updates the instructions for font compilation. (doc/Fonts.htm)
+
+Updates the instructions for device and feature selection. (doc/Make.htm)
+
+Adds material on 8.3 file names, compiler warning messages, and graphics
+library error codes to the C style guide. (doc/C-style.htm)
+
+Adds a note about gx_device_decache_colors. (doc/Drivers.htm)
+
+Improves formatting slightly. (doc/Install.htm, doc/Use.htm)
+
+</pre><h3><a name="5.60_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The Unix install script referred to an obsolete ps2image.ps file.
+(unixinst.mak)
+ - The Unix CC script had some duplicated definitions. (unix-cc.mak)
+ - The DVX makefile referred to int.mak in GLSRC rather than PSSRC.
+(dvx-gcc.mak)
+ - rollconv.ps wasn't installed with the other utilities.
+(unixinst.mak)
+ - Some definitions of MAKEFILE lacked a directory name. (os2.mak,
+unix-cc.mak, unixansi.mak, watclib.mak)
+ - There were inappropriate dependencies on a file with the literal
+name `makefile'. (bcwin32.mak, gs.mak, watc32.mak)
+ - Unix systems didn't use -fomit-frame-pointer when possible.
+(unix-cc.mak, unix-gcc.mak, unixansi.mak, unix-end.mak)
+
+Restructures the source files into multiple subdirectories:
+ src/ - files needed at build time: *.mak, *.h, *.c, *.cpp, *.icx, *.rc,
+ *.cmd, ??.bat, *.com, *.rps, *.dif, *.cfg
+ lib/ - files needed at run time: *_*.ps, *.ppd, *.upp, *.bat
+ doc/ - documentation other than man pages: *.htm, *.txt
+ man/ - man pages: *.1
+ examples/ - sample input data: *.ps, *.eps, *.pdf
+Also incorporates the font compilation makefile into the main makefile,
+since the former now depends on parameters defined in the latter. (*.mak)
+
+****** HAVEN'T SETTLED HOW TO HANDLE .ico FILES ******
+
+NOTE: Still need to update: openvms.mak, os2.mak.
+
+Updates the Unix install script for the directory split. (unixinst.mak)
+
+Updates the font compilation makefile rules to handle alternate directories.
+(cfonts.mak, int.mak)
+
+****** PROBLEM: cfonts.mak NEEDS CCFONT, BUT int.mak NEEDS CF* FOR ADDING
+ONE'S OWN FONTS ******
+
+Removes useless dependencies on gs_*.ps files. (int.mak)
+
+Moves the .dev files into the GEN directories where they belong. (gs.mak,
+dvx-tail.mak, msvclib.mak, openvms.mak, os2.mak, pcwin.mak, ugcclib.mak,
+unixhead.mak, unixtail.mak, unix-end.mak, watc.mak, watclib.mak, winlib.mak,
+echogs.c, genconf.c) ****** NO_OP FOR dvx HASN'T BEEN VERIFIED ******
+NOTE: Still to do:
+src/bcwin32.mak
+src/dvx-gcc.mak
+src/dvx-head.mak
+src/dvx-tail.mak
+src/msvc32.mak
+src/msvccmd.mak
+src/msvclib.mak
+src/msvctail.mak
+src/openvms.mak
+src/os2.mak
+src/pcwin.mak
+src/ugcclib.mak
+src/watc.mak
+src/watclib.mak
+src/watcw32.mak
+src/wccommon.mak
+src/wctail.mak
+src/winint.mak
+src/winlib.mak
+
+Adds a new BINDIR directory for the final executable (and associated files
+like resource files). After building, only the contents of BINDIR and lib
+are needed for execution. (gs.mak, unix-end.mak) ****** NEED TO DO
+openvms.mak, os2.mak, OTHER PC MAKEFILES ******
+
+Updates libpng to version 1.0.2. (libpng.mak)
+
+</pre><h3><a name="5.60_Utilities"></a>Utilities</h3><pre>
+
+Adds a new switch, -b, to echogs. (echogs.c)
+
+</pre><h3><a name="5.60_Drivers"></a>Drivers</h3><pre>
+
+Updates the PDF writer for the change in color space initialization.
+(gdevpdfi.c)
+
+Speeds up the pkmraw driver a bit more. (gdevpbm.c)
+
+Updates some drivers to use the new CMYK color mapping procedures.
+(gdevpbm.c, gdevpcx.c, gdevxalt.c)
+
+Updates one driver that maintained its own color cache. (gdevxalt.c)
+
+Removes some compiler warnings (mostly about "uninitialized" variables).
+(gdevpdfo.c, gdevpdft.c, gdevpx.c)
+
+Adds another driver for the H-P Color LaserJet 5/5M. (gdevcljc.c)
+
+</pre><h3><a name="5.60_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - A change in the MetroWerks C compiler caused the hypot function
+to become declared. (math_.h)
+
+</pre><h3><a name="5.60_Interpreter"></a>Interpreter</h3><pre>
+
+Updates the compiled font code for updates in the type declarations.
+(iccfont.c, icfontab.c)
+
+Cleans up some more formatting and macros. (ccfont.h, errors.h, icfontab.c,
+interp.c)
+
+Updates clients for the change in color space initialization. (zcsdevn.c,
+zcsindex.c, zcspixel.c, zcssepr.c, zpcolor.c)
+
+Updates the memory validator for the addition of the large-block freelist.
+(ilocate.c)
+
+</pre><h3><a name="5.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - If the final %%EOF was followed by any blanks before the newline,
+an error would occur. (lib/pdf_main.ps)
+
+</pre><h3><a name="5.60_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The LZWDecode filter wouldn't handle a file that had 4096-256-2+1
+data items before the reset. (We think this is a bug in the file, but
+Acrobat accepts it.) (slzwx.h, slzwd.c)
+
+Rearranges code slightly to improve readability. (spdiff.c)
+
+</pre><h3><a name="5.60_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Changing the resolution (or any other parameter) of the bbox
+device from the command line caused an invalid memory access. (gdevbbox.c)
+ - When banding, if the very first drawing operation involved a
+halftone with non-zero phase, an arithmetic exception occurred.
+(gxclpath.c)
+ - When banding, the X offset of the band was negated, producing
+incorrect output when placing multiple source pages on a single output page.
+(gxclread.c)
+ - When banding, rotated images crossing band boundaries produced
+incorrect output, because the subrectangle X value was inconsistent with the
+amount of data transmitted. (gxclimag.c)
+ - When banding, the clipping check didn't take interpolation support
+into account. (gxclimag.c)
+ - The clipping check for banding used (int) to take the floor of
+floating point values, which is wrong for negative values. (gxclimag.c)
+ - The bounding box device didn't return an empty bounding
+rectangle if nothing had been written to it. (gdevbbox.c)
+ - A value was conditional on a debugging switch even if DEBUG wasn't
+defined. (gxcht.c)
+ - Filling a region with a large colored halftone, a non-default
+RasterOp, and a non-null RasterOp source could cause only part of the region
+to be filled. (gxcht.c) ****** NOT FIXED YET ******
+ - Type 1 fonts that used very large numbers (&gt;= 2^19) caused a
+rangecheck. We've fixed this for the only case that seems to matter, namely
+&lt;very-large-number&gt; &lt;number&gt; div. (gxtype1.h, gstype1.c)
+ - The memory-based band list allocator failed to return an error
+code from memfile_next_blk. (gxclmem.c)
+ - When recovering from a low-band-list-memory condition while
+writing an image, the record of the current image enumeration
+(cdev-&gt;image_enum_id) wasn't updated. (gxclimag.c)
+ - The estimated memory requirement for the band list rasterizer was
+too small. (gdevprna.c)
+
+Adds some tracing to mask clipping. (gxclipm.c)
+
+Speeds up masked images by doing mask clipping before halftoning, using a
+more efficient mask scanning algorithm, and checking for vertical blocks of
+1s. (gxclipm.c)
+
+Speeds up ImageType 4 images greatly by incorporating the color-key check
+into the ImageType 1 rendering code. NOTE: the 12-bit case has not been
+tested. (gxcpath.h, gximage.h, gxi12bit.c, gxicolor.c, gxifast.c,
+gxiinit.c, gximage4.c, gximono.c, gxiscale.c)
+
+Implements passing ImageType 4 images (and potentially others) through the
+band list. This involves adding image parameter writing and reading
+procedures to the image type structure. (gscdefs.h, gsiparam.h, gsiparm2.h,
+gsiparm4.h, gsmatrix.h, gxclpath.h, gxiparam.h, gconf.c, genconf.c,
+gsmatrix.c, gxclimag.c, gxclist.c, gxclpath.c, gxclrast.c, gxiinit.c,
+gximage2.c, gximage3.c, gximage4.c)
+
+Splits off the generic image support code from the ImageType 1 code.
+(gxiinit.c [deleted], gximage.c, gximage1.c, gxipixel.c)
+
+Removes some vestiges of support for 16-bit environments. (gsmisc.c)
+
+Implements bit-planar images, important for PCL interpretation.
+(gsiparam.h, gximage.h, gxiparam.h, gdevddrw.c, gdevpdfi.c, gdevps.c,
+gsimage.c, gxclimag.c, gxidata.c, gximage.c, gxipixel.c) ****** NOT TESTED
+YET ******
+
+Makes closing a memory device that owns its bitmap set the bitmap pointer to
+0, for the sake of an application that doesn't handle is_open properly.
+(gdevmem.c)
+
+Speeds up floating-point emulation for single-precision add, subtract, and
+multiply. (gsfemu.c)
+
+Speeds up sampling of transfer functions. (gshtx.c)
+
+Makes the CIE cache used fixed-point values if the CPU has slow floating
+point. (gscie.h)
+
+Adds a unique ID to color spaces to allow fast detection of reselecting the
+same color space. This matters for certain client code that repeatedly
+reselects the same color space, since selecting certain color spaces is
+expensive. (gscpixel.h, gscspace.h, gxcspace.h, gscolor2.c, gscpixel.c,
+gscscie.c, gscspace.c, gspcolor.c, gsstate.c, gximage2.c) ****** NEED TO FIX
+gxclrast.c TO ALLOC INDEXED COLOR SPACE ******
+
+Speeds up setting Pattern color spaces, by bypassing the install code for
+the base space. (gspcolor.c)
+
+Adds a unique ID to CRDs to allow fast detection of reselecting the same
+CRD. This matters for certain client code that does this repeatedly.
+(gscie.h, gscrd.h, gscrd.c)
+
+Detects setting the CRD to one with identical PQR components, and bypasses
+an expensive setup step. (gscie.c)
+
+Speeds up converting pixels between representations (gx_get_bits_copy) for
+devices with up to 4 bits per pixel, by caching the pixel values.
+(gdevdgbr.c)
+
+Speeds up the slow default RasterOp algorithm a little. (gdevdrop.c)
+
+Defines standard mapping procedures for 1-bit-per-component CMYK colors.
+Other code can then test for the presence of these procedures and use more
+efficient algorithms. (gxdevice.h, gxcmap.c)
+
+Speeds up some algorithms in the bbox device by making some recursive calls
+use a pure color rather than a client-supplied one. (gdevbbox.h, gdevbbox.c)
+
+Adds a cache for the black and white pixel values to the device structure.
+(gxdevcli.h, gxdevice.h, gdevalph.c, gdevnfwd.c, gsdparam.c, gxdcolor.c)
+
+Makes the code for colored halftones a little more readable. (gxcht.c)
+
+Speeds up color mapping for CMYK devices by copying the color mapping
+procedures into forwarding devices, when applicable. (gdevcmap.c,
+gdevmem.c, gsdevice.c, gxclip.c)
+
+Removes some compiler warnings (mostly about "uninitialized" variables).
+(gxcldev.h, gsdevmem.c, gsshade.c, gstype42.c, gxclpath.c, gxfill.c,
+gximage3.c, gxpath2.c, gxpcopy.c)
+
+For the benefit of certain client code that commonly sets a CRD and then
+doesn't use it, makes loading of the joint CIE caches lazy (at the library
+level). (gscie.h, gscie.c)
+
+Changes CIE color restriction from a macro to a procedure, since it is
+rarely used. (gscie.c)
+
+Adds code and structures for detecting when CIE Decode and/or Encode
+procedures are simply linear transformations, which would allow collapsing
+them into the adjacent matrix, but doesn't actually do the collapsing.
+(gscie.h, gscie.c)
+
+Speeds up color halftoning by pre-computing the mask of planes that need to
+be halftoned, and preconverting multi-plane halftones to binary or solid
+colors when possible. (gsdcolor.h, gxcht.c, gxdcolor.c, gxdither.c, gxht.c)
+
+Optimizes color mapping for 1-bit-per-component CMYK halftones. (gxcht.c)
+
+Optimizes null RasterOp sources for black = 1 as well as black = 0.
+(gxdcolor.c)
+
+Modifies the standard allocator so it keeps track of large free blocks as
+well as small ones, and uses them to satisfy requests when appropriate.
+(gxalloc.h, gsalloc.c)
+
+Speeds up the horizontal bitmap replication code a bit. (Much more is
+possible.) (gsbitops.c)
+
+Changes gs_image_max_planes to gs_image_max_components to reflect its
+function more accurately. (gdevddrw.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.50"></a>Version 5.50 (9/16/98)</h2>
+
+<p>
+This is the first public release since 5.10. See
+<a href="Current.htm">the release summary</a>
+for a list of major additions and changes.
+
+<h3><a name="5.50_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - Many files still referred to .txt rather than .htm files.
+(DLL.htm, Make.htm, New-user.htm, Readme.htm, bcwin32.mak, cfonts.mak,
+devs.mak, dvx-gcc.mak, dwmainc.cpp, gs-vms.hlp, gxdevcli.h, gxdevice.h,
+int.mak, jpeg.mak, libpng.mak, msvc32.mak, msvclib.mak, openvms.mak,
+os2.mak, unix-cc.mak, unix-gcc.mak, unixansi.mak, watc.mak, watcw32.mak,
+wccommon.mak, zlib.mak)
+
+Notes that ps2epsi.1 and ps2epsi.txt may be inconsistent or obsolete.
+(ps2epsi.1, ps2epsi.txt)
+
+Adds a reference to Thomas Merz's Ghostscript manual. (Readme.htm)
+
+Adds instructions for making RPMs. (Install.htm, Make.htm)
+
+Changes the URL for post-release notes. (Bug-form.htm, Make.htm,
+New-user.htm)
+
+Notes problems with Watcom compilation. (Make.htm)
+
+</pre><h3><a name="5.50_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - On Unix systems, the documentation files didn't get installed by
+`make install'. (unixinst.mak)
+ - $() was missing around MAKEFILE in a Windows makefile.
+(msvc32.mak)
+ - The dfax drivers didn't include all the necessary files in the
+linker list. (contrib.mak)
+ - The MSVC makefiles didn't allow building the executable in a
+different directory. (bcwin32.mak, gs.mak, lib.mak, msvc32.mak,
+msvccmd.mak, msvclib.mak, msvctail.mak, os2.mak, watcw32.mak, winint.mak,
+winlib.mak)
+ - The default build directory for the Borland compiler was debugobj
+rather than obj. (bcwin32.mak)
+
+Adds a patch file and some specification files for making RPMs. (gs.rps,
+gs-fonts.rps, rpm-conf.dif)
+
+Removes the docs target in the makefile, since this function is now
+performed by another program. (unix-end.mak)
+
+</pre><h3><a name="5.50_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The jpeg drivers caused a memory access error. (bug introduced in
+5.20 by an incorrectly made fix) (gdevjpeg.c)
+ - The x11cmyk driver implemented map_rgb_color, which it should not
+do. (gdevxalt.c)
+
+Updates a high-level driver for the addition of the bit-planar image format.
+(gdevps.c)
+
+</pre><h3><a name="5.50_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - echogs -h didn't work in environments where char is signed.
+(echogs.c)
+
+</pre><h3><a name="5.50_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - MSVC++ 5.0 produced incorrect code with TDEBUG=0. We "fixed" this
+problem by noting in the makefile that TDEBUG must be left set to 1.
+(msvc32.mak, msvclib.mak)
+
+Updates the icons for the MS Windows and OS/2 platforms. (gsgraph.icx,
+gsos2.icx, gspmdrv.icx, gstext.icx)
+
+</pre><h3><a name="5.50_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - setpagedevice didn't update the state correctly when switching to
+a new type of device (different OutputDevice value). (gs_setpd.ps)
+ - The interpreter's initialization depended on BSS being initialized
+to 0. (files.h, zfile.c)
+
+Removes all references to reloc_struct_ptr other than in gsstruct.h.
+(igcref.c)
+
+Adds DEBUG tracing for pdfmarks. (gs_pdfwr.ps)
+
+Disables TEST code for release. (zcrd.c, zfdcte.c)
+
+</pre><h3><a name="5.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Some third-party software still referred to the obsolete #?
+procedure. (pdf_main.ps)
+ - Destinations with string names weren't properly converted to
+pdfmarks. (pdf_main.ps)
+ - Destinations with S = /Named weren't supported. (pdf_main.ps)
+
+</pre><h3><a name="5.50_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Dropout prevention wasn't applied to landscape image masks.
+(gximono.c)
+ - When using async rendering, the renderer's allocator was allocated
+with the wrong allocator. (gdevprna.c)
+ - gx_strip_bitmap and gx_device_mask_clip didn't have proper GC
+descriptors, causing crashes if a GC occurred while rendering an ImageType 3
+or 4 image. (gsstruct.h, gxbitmap.h, gxclip2.h, gxclipm.h, gxmclip.h,
+gspcolor.c, gxclipm.c, gxmclip.c)
+ - The buffer for printer devices wasn't reallocated properly for
+async devices when the page size changed. We aren't entirely comfortable
+with the fix, but it's the best we've got right now. (gdevprn.c)
+ - Some files wouldn't compile with -dNOPRIVATE. (gxcspace.h,
+gscdevn.c, gscolor2.c, gscscie.c, gscsepr.c)
+ - gp_semaphore_close and gp_monitor_close were defined as not
+returning an error code. (gpsync.h, gp_nsync.c, gp_posem.c, gp_semon.c,
+gp_win32.c)
+ - Initialization code depended on BSS being initialized to 0.
+(gsiodev.c)
+ - The special PCL color mapping device didn't handle CMYK devices
+correctly in other than "identity" mode. (gdevcmap.c)
+
+Cleans up a little formatting. (gscie.h, gscpixel.c, gxmclip.c)
+
+Removes all references to reloc_struct_ptr other than in gsstruct.h.
+(gsstruct.h, gsalloc.c, gsdevice.c, gsfont.c, gxcpath.c)
+
+Patches the async code so that it allocates twice as much space for the
+renderer as should be needed, to deal with sandbars. (gdevprna.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.40"></a>Version 5.40 (beta) (9/10/98)</h2>
+
+<p>
+A few more fixes. This is intended as the candidate fileset for the 5.50
+release.
+
+<h3><a name="5.40_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The current GNU Ghostscript version was documented as 3.33, not
+4.03. (New-user.htm)
+ - The ansi2knr usage documentation didn't mention --filename.
+(ansi2knr.1)
+ - A projected completion date was too optimistic. (ps2pdf.1)
+
+Replaces all documentation files with new HTML versions. (*.txt [deleted],
+*.htm, index.html, imainarg.c)
+
+Adds a contributed set of Emacs macros useful for working with Ghostscript
+documentation. (gsdoc.el)
+
+Changes the version and date format slightly in one file for consistency.
+(gs-vms.hlp)
+
+</pre><h3><a name="5.40_Procedures"></a>Procedures</h3><pre>
+
+Adds a make target (make docs) to touch up documentation files before a
+release. (unix-end.mak)
+
+</pre><h3><a name="5.40_Utilities"></a>Utilities</h3><pre>
+
+Removes the long-obsolete ps2image.ps utility. (ps2image.ps [deleted])
+
+</pre><h3><a name="5.40_Drivers"></a>Drivers</h3><pre>
+
+Adds a driver for the Color LaserJet 5. (devs.mak, gdevclj.c)
+
+</pre><h3><a name="5.40_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - Blanks in command lines weren't handled properly. (dwmain.cpp,
+dwmainc.cpp)
+
+</pre><h3><a name="5.40_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - 16-bit devices didn't convert colors to RGB correctly.
+(gdevm16.c)
+ - 16- and 32-bit RasterOp didn't work, because pack_from_standard
+didn't handle depths greater than 8. (gdevdrop.c)
+ - RasterOps with devices with non-standard color representation
+sometimes substituted black or white for the source or target. (gdevdrop.c)
+ - The non-orthogonal case of Axial shading executed the axial-case
+code as well. (gxshade1.c)
+ - copy_color on 4-bit-deep memory devices did an unnecessary
+fit_copy check. (gdevm4.c)
+ - An upcast was missing. (gdevbbox.c)
+ - View clipping was applied to internal devices, incorrectly.
+(gspath.c)
+
+Revises the implementation of shading so as to reduce the use of macros,
+update formatting, and help prepare for PatternType 2 patterns. (gsshade.h,
+gxshade.h, gxshade4.h, gscolor3.c, gsshade.c, gxshade.c, gxshade1.c,
+gxshade4.c, gxshade6.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.39"></a>Version 5.39 (beta) (9/8/98)</h2>
+
+<p>
+A couple more small fixes.
+
+<h3><a name="5.39_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The pkm[raw] drivers didn't work with 32-bit pixels. (gdevpbm.c)
+
+Adds (fake) 8-, 16-, and 32-bit X11 CMYK devices, for debugging.
+Unfortunately, the 16- and 32-bit devices consume the hardware color map and
+then no longer behave reasonably; the 8-bit device produces output with
+garbled colors (fixed in 5.40). (devs.mak, gdevxalt.c)
+
+</pre><h3><a name="5.39_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - All banded devices caused a memory access error. (bug introduced
+in 5.38) (gsstate.c)
+ - The special color mapping device didn't update its state after
+put_params. (gdevcmap.c)
+ - RasterOp on 8-bit non-gray-scale devices didn't handle filling
+with constant 0 or 1 properly. (gdevmrop.c)
+ - The halftone machinery didn't switch from full-size to strip
+halftones early enough, possibly allocating very large halftone data
+structures. (gshtscr.c)
+ - If an ioerror (such as a disk- or memory-full condition) occurred
+while writing out the band list, the bookkeeping structures were left in an
+inconsistent state, causing further problems. (gxclutil.c)
+ - Some shaded fills didn't check for errors when filling
+sub-regions. (gxshade1.c, gxshade4.c)
+
+Cleans up some formatting. (gxshade6.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.38"></a>Version 5.38 (beta) (9/3/98)</h2>
+
+<p>
+The sole purpose of this release was to fix some obscure bugs detected by
+the Genoa tests and by another Aladdin project.
+
+<h3><a name="5.38_Documentation"></a>Documentation</h3><pre>
+
+Updates the list of implemented PostScript LanguageLevel 3 features.
+(current.txt)
+
+</pre><h3><a name="5.38_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The PDF writer did the wrong thing for multi-source images with
+more than 180 bytes of data (total) per scan line. (gdevpdfi.c)
+ - If one used setdistillerparams, [g]restore caused a rangecheck in
+.setpagedevice. ****** DISABLED FOR DCT DICTS, SINCE THIS CAUSES A SEGV
+****** (gdevpsdp.c)
+
+</pre><h3><a name="5.38_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - 0-length parameter arrays were given an arbitrary type, confusing
+clients. (iparam.c)
+ - EOD on a write stream caused an error. (zfileio.c)
+
+</pre><h3><a name="5.38_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - 0-length parameter arrays confused clients that wanted arrays of a
+particular type. (gsparam.c)
+ - Patterns with XStep or YStep smaller than the bounding box didn't
+work properly. (gxp1fill.c)
+ - Resizing an object sometimes copied it unnecessarily. (gsalloc.c)
+ - Freeing the shared part of a graphics state didn't free its
+sub-objects. (gsstate.c)
+ - The standard allocator didn't free its initial (self-containing)
+chunk when asked to free itself. (gsalloc.c)
+ - The standard allocator didn't attempt to merge free blocks before
+giving up. We implemented this by adding another virtual procedure to
+allocators, consolidate_free. (gsmemory.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c, gsmemory.c)
+ - The free object merging algorithm thought there were free objects
+even when there weren't. (Small performance bug only.) (gsalloc.c)
+
+Adds some more tracing to pattern filling. (gxclip2.c, gxp1fill.c)
+
+Replaces the cs_alloc, cs_copy, and cs_undo_alloc macros with procedures.
+(gxcspace.h, gscolor2.c, gscsepr.c, gscspace.c, gspcolor.c)
+
+Moves the free-object merging code from gsnogc.c to gsalloc.c, so it can be
+used even in systems that have a garbage collector. (gsalloc.h, gxalloc.h,
+gsalloc.c, gsnogc.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.37"></a>Version 5.37 (beta) (8/31/98)</h2>
+
+<h3><a name="5.37_Documentation"></a>Documentation</h3><pre>
+
+Mentions the new cid2code utility in the documentation. (psfiles.txt)
+
+Documents dpsnext.dev. (gs.mak)
+
+Notes that clients of ImageType 3 images are responsible for providing the
+mask data before the pixel data. (gsiparm3.h)
+
+</pre><h3><a name="5.37_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The makefiles were missing a dependency of jconfig.h on arch.h.
+With this fix, parallel builds (make -jN) work reliably. (jpeg.mak)
+
+</pre><h3><a name="5.37_Utilities"></a>Utilities</h3><pre>
+
+Adds a utility for creating maps from CIDs to Unicode. (unixinst.mak,
+cid2code.ps)
+
+</pre><h3><a name="5.37_Drivers"></a>Drivers</h3><pre>
+
+Removes the %Fax% IODevice code, since it was only a skeleton and Adobe no
+longer supports this facility. (devs.mak, gdevpfax.c [deleted])
+
+</pre><h3><a name="5.37_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts whose first code wasn't 0 or 0xf000 didn't display
+correctly. (bug introduced in 5.36) (gs_ttf.ps)
+ - CIDFontType 0 fonts didn't handle being redefined with another
+name. (gs_cidfn.ps)
+ - CIDFontType 0 fonts could get local-into-global-store errors.
+(gs_cidfn.ps)
+ - PDF files couldn't use already-defined CMap resources.
+(pdf_font.ps)
+ - Out-of-range CIDs gave an error rather than using a notdef
+character. (gs_cidfn.ps)
+
+</pre><h3><a name="5.37_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - CIDFontType 4 fonts weren't recognized as CID-keyed. (zchar2.c,
+zchar32.c, zfont32.c)
+ - When recovering from an error in an operator procedure, the
+interpreter didn't update the dictionary stack caches. (interp.c)
+ - startjob didn't reinitialize the stacks or VM space. (gs_lev2.ps)
+ - Encoding filters with a Predictor always caused an error.
+(zfilter2.c)
+ - currenttrapparams gave an error. (gs_ll3.ps)
+ - settrapparams had no effect, and left the dictionary on the stack.
+(gs_ll3.ps)
+
+Finishes implementing Type 32 fonts. These fonts don't actually work
+directly with the cache -- they store the bitmaps in a compressed form in an
+ordinary Dictionary -- but they do behave the way they are specified.
+(gs_typ32.ps, zchar32.c, zfont32.c)
+
+Cleans up formatting and macros in a few more files. (ccfont.h, icharout.h,
+icstate.h, iutil.h, iutil2.h, ibnum.c, iccfont.c, iccinit0.c, ilocate.c,
+isave.h, isave.c, iscannum.c, iutil.c, iutil2.c)
+
+Removes or capitalizes a few more macros. (zcontext.c, zcssepr.c,
+zusparam.c)
+
+</pre><h3><a name="5.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Color spaces with subsidiary spaces (Indexed, Separation, DeviceN)
+sometimes didn't work properly, because they were translated to PostScript
+structures more than once. (pdf_draw.ps)
+ - Type 3 fonts didn't rebind the resource context when executing the
+CharProc procedure. (pdf_font.ps)
+
+</pre><h3><a name="5.37_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The CCITTFax decoder signaled an error if it saw an EOB with
+EndOfBlock = false. (According to e-mail from Adobe, EOBs should be
+recognized even if EndOfBlock is false, even though the Red Book implies the
+opposite.) (scfd.c)
+
+Cleans up macros and formatting in a few more files. (slzwce.c, sfxfd.c,
+sfxstdio.c)
+
+</pre><h3><a name="5.37_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Landscape color images usually didn't display. (bug introduced in
+5.32) (gxicolor.c)
+ - If gs_heap_free_object was called with ptr != 0 but bp = 0 (which
+is an error), an invalid memory access would occur. (gsmalloc.c)
+ - The left side bearing was still being added in a second time for
+the accent of a seac. (bug probably introduced in 5.20) (gxtype1.c)
+ - An access error occurred when rendering the very last glyph of a
+TrueType font with a 2-byte loca table. (gstype42.c)
+ - In the fast portrait case of monochrome images, a numerical error
+sometimes produced a 1-bit-wide vertical stripe of an incorrect color at the
+right edge of the image. (gxifast.c)
+ - ImageType 3 images with InterleaveType = 3 gave memory access
+errors. (gximage3.c)
+ - Hit detection ignored any part of the aperture that had negative X
+or Y coordinates. (gdevhit.c)
+ - The special color mapping device didn't copy all necessary values
+back from its target. (gxdevice.h, gdevbbox.c, gdevcmap.c, gsdevice.c)
+ - The special color mapping device didn't handle ordinary (Type 1)
+images correctly. (gdevcmap.c)
+ - CMYK halftones complemented both the color and the halftone level:
+this produced the right number of pixels turned on (only for linear spot
+functions or threshold arrays), but wasn't consistent with either the Adobe
+specification or the user's intentions. (gxcht.c)
+ - The phase of mask Patterns wasn't always set correctly.
+(gxp1fill.c)
+ - The reader side of overlapped band devices was confused about its
+open/closed status. (gdevprna.c)
+
+Renames Type 32 fonts from ft_bitmap to ft_CID_bitmap. (gxftype.h)
+
+Adds some more tracing for composite font decoding. (gsfcmap.c)
+
+Adds some more tracing for images. (gxiinit.c)
+
+Cleans up formatting and macros in a few more files. (gxifast.c)
+
+Moves the image*_type_data and image*_enum_procs_data definitions from
+header files into more appropriate .c files. (gsiparm2.h, gsiparm3.h,
+gsiparm4.h, gxiparam.h, gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.36"></a>Version 5.36 (beta) (8/25/98)</h2>
+
+<p>
+Another set of fixes. The free-standing bbox device now produces convenient
+%%BoundingBox messages. This fileset also includes support for double-byte
+TrueType fonts.
+
+<h3><a name="5.36_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - There was a minor spacing glitch in one man page. (gs.1)
+ - The page printed by align.ps didn't make it clear enough what to
+do with the numbers it asks users to calculate. (align.ps)
+ - The sample code for adding gamma adjustment didn't work most of
+the time. (devices.txt)
+ - The prolog produced by pswrite was completely uncommented.
+(gdevps.c)
+ - The documentation didn't note that the string block freelist
+(sfree) is sorted in address order. (gxalloc.h)
+
+Notes that FirstBitLowOrder and LowBitFirst are equivalent. (slzwx.h)
+
+Notes a change in the FTP site of the free Kanji ("Wadalab") fonts.
+(fonts.txt)
+
+Adds a pointer to the freely available Unicode CMaps. (fonts.txt)
+
+Changes an obsolete e-mail address for Carsten Emde. (contrib.mak)
+
+</pre><h3><a name="5.36_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The viewgif utility sometimes left 1-scan-line gaps when rendering
+interlaced images. (viewgif.ps)
+
+</pre><h3><a name="5.36_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - In the PDF writer, downsampled images were always written with 8
+bits per sample, not the requested depth. (gdevpsdi.c)
+ - The 8-to-N-bit compression filter produced an extra byte at the
+end of each row, and the N-to-8-bit expansion filter skipped an input byte
+at the end of each row. (gdevpsds.c)
+ - In the PDF writer, the size of downsampled images for changing the
+pixel width was set incorrectly, leading to inconsistent image parameters in
+the output. (gdevpsdi.c)
+ - The subsampling filters didn't take a clear position about what to
+do with excess input samples beyond a multiple of the reduction factor,
+leading to inconsistent image parameters. We added a Boolean to indicate
+whether they should discard the samples or use them to create an additional
+output sample. (gdevpsds.h, gdevpsdi.c, gdevpsds.c)
+ - The subsampling filters didn't provide the necessary set_defaults
+procedures. (gdevpsds.h, gdevpsds.c)
+ - Because of a typo, pdfwrite and pswrite printed sequences of 4
+decimal values wrong. (bug introduced during macro removal in 5.25)
+(gdevpstr.c)
+
+Makes the PS writer produce a %%HiResBoundingBox as well as a %%BoundingBox.
+(gdevps.c)
+
+</pre><h3><a name="5.36_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The Borland makefile didn't include the MT libraries. We added a
+MULTITHREAD option to this makefile. (bcwin32.mak)
+ - The MSVC makefile didn't include the MT switches in the right
+place. (msvccmd.mak)
+ - 'make clean' in the Windows makefiles didn't clean up quite
+enough. (bcwin32.mak, msvc32.mak, msvccmd.mak)
+ - The OS/2 makefile had gotten slightly out of date. (os2.mak)
+
+Cleans up some formatting. (gp_win32.c)
+
+</pre><h3><a name="5.36_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - Loading large TrueType fonts caused excessive garbage collection.
+(gs_ttf.ps)
+
+Finishes implementing support for turning double-byte TrueType fonts into
+CIDFontType 2 fonts. (gs_ttf.ps)
+
+</pre><h3><a name="5.36_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - We thought the dictionary returned by currentuserparams should
+always be allocated in local VM, but in fact the correct definition is that
+it should be allocated in the current VM. The simplest way to make this
+work is for setuserparams to copy any string values into global VM.
+(gs_lev2.ps)
+ - 1-input stitching functions didn't allow k = 0. (ifunc.h,
+zfunc.c)
+ - OtherSubrs defined in PostScript no longer worked. (bug probably
+introduced when we rewrote the Type 1 code in C) (zchar1.c)
+
+Cleans up a few compiler warnings (missing empty 'default' cases, unused
+variables). (igc.c, iname.c)
+
+Replaces some uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
+(isave.c, iscan.c)
+
+</pre><h3><a name="5.36_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Resources were re-created on each page, causing (sometimes a lot
+of) unnecessary computation. We implemented most of the machinery for
+avoiding this, but not the mechanism for actually storing resources in
+global VM. (pdf_base.ps, pdf_main.ps)
+
+Adds a little more debugging code. (pdf_draw.ps)
+
+</pre><h3><a name="5.36_Streams"></a>Streams</h3><pre>
+
+Cleans up formatting in a few more files. (sbtx.h, sfilter.h, slzwx.h,
+spngpx.h, srlx.h, sstring.h, seexec.c, sfilter1.c, sfilter2.c, smtf.c,
+spcxd.c, srld.c, srle.c)
+
+Replaces a couple of #defines with duplicated (small) structures. (sbtx.h,
+sfilter.h, sfilter1.c, sfilter2.c)
+
+Replaces all uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
+(stream.c)
+
+</pre><h3><a name="5.36_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - If a garbage collection occurred during a string show operation,
+memory could be corrupted. (bug introduced in 5.24) (gstext.h, gstext.c)
+ - A debugging check incorrectly indicated an error when
+miter-checking lines with a 0 degree angle between them. (gxstroke.c)
+ - A structure created for bitmap/pixmap patterns was never freed.
+(gspcolor.c)
+ - Colored halftones didn't work with 24-bit devices. (This case was
+never actually used.) (gxcht.c)
+ - CIE colors didn't remap properly if the current color space was a
+Pattern space. (gscie.c)
+ - In a non-garbage-collected environment, freeing a string in the
+current chunk made an unnecessary test. (Minor performance impact only.)
+(gsnogc.c)
+
+Cleans up a few compiler warnings (missing empty 'default' cases, unused
+variables). (gsht.c, gsht1.c, gshtscr.c, gsimage.c, gxacpath.c, gxclread.c,
+gxicolor.c, gxshade4.c)
+
+Replaces some uses of RELOC_*_PTR with RELOC_*_VAR. (gsht1.c)
+
+Changes the printed output of the free-standing bbox device so it produces
+%%BoundingBox and %%HiResBoundingBox lines that can be dropped directly into
+a DSC header. (gdevbbox.c)
+
+Speeds up the 4-bit case of copy_mono by about 30%. (gdevm4.c)
+
+Expands some macros and cleans up formatting, for easier reading and
+debugging. Speeds up the color halftone generation algorithm substantially
+(up to 40%), by skipping the halftone computation for planes that are known
+to be solid-color, and using copy_mono directly if only one plane is not
+solid-color. (gxcht.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.35"></a>Version 5.35 (beta) (8/18/98)</h2>
+
+<p>
+More updates for 5.3x, specifically fixing problems with halftones on banded
+CMYK devices.
+
+<h3><a name="5.35_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The URLs for the third-party libraries were out of date.
+(make.txt, jpeg.mak, libpng.mak, zlib.mak)
+
+</pre><h3><a name="5.35_Drivers"></a>Drivers</h3><pre>
+
+Adds an x11gray4 device for help in debugging. (devs.mak, gdevxalt.c)
+
+</pre><h3><a name="5.35_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with more than 64K of data before or after the
+glyfs caused an error. (gs_ttf.ps)
+
+</pre><h3><a name="5.35_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The dictionary returned by currentuserparams was allocated in the
+current VM rather than always in local VM. (gs_lev2.ps)
+
+</pre><h3><a name="5.35_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - CID-keyed fonts caused an error, because their CDevProc was
+incorrect. (pdf_font.ps)
+
+</pre><h3><a name="5.35_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - A comment was duplicated. (gxht.h)
+ - The main procedure of the command list reader was so large that it
+couldn't be optimized by many compilers, and was very hard to read.
+(gxclrast.c)
+ - Banding devices using multi-screen halftones could get memory
+access errors because they didn't clear the halftone caches when changing
+halftone parameters. (gxclrast.c)
+ - Banding devices using multi-screen halftones didn't set the
+halftone phase correctly. (gxcht.c, gxclrast.c)
+ - RasterOp didn't work for 2- or 4-bit gray-scale devices. It still
+doesn't work right, but it's closer. (gdevm2.c, gdevm4.c, gdevmrop.c)
+ - Undefined characters in CMap-based composite fonts caused errors
+and possible invalid memory accesses. (gschar0.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.34"></a>Version 5.34 (beta) (8/16/98)</h2>
+
+<p>
+More updates for 5.3x.
+
+<h3><a name="V5.34_Documentation"></a>Documentation</h3><pre>
+
+Updates all of the man pages to new versions. (gs-vms.hlp, gs.1, pdf2dsc.1,
+pdf2ps.1, ps2ascii.1, ps2epsi.1, ps2pdf.1, ps2ps.1)
+
+</pre><h3><a name="V5.34_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The MSVC library makefile incorrectly included gp_msio.c.
+(msvclib.mak, winlib.mak)
+
+</pre><h3><a name="V5.34_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The PDF writer unnecessarily checked for other parameters after a
+failing show or pdfmark. (gdevpdfp.c)
+ - The device's BufferSpace parameter was ignored. (bug introduced
+by async rendering code in 5.30) (gdevprn.c)
+ - Banding devices smashed the first 4 bytes of each scan line. (bug
+introduced in 5.28) (gxdevmem.h, gdevmem.c, gxclread.c)
+ - The phase for colored halftones was set wrong. (We have "fixed"
+this innumerable times, and it is still probably wrong.) (gxclrast.c)
+
+Replaces the deprecated gx_device_image_xxx calls with the new gx_image_xxx
+calls. (gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
+
+</pre><h3><a name="V5.34_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The equality test for idiom recognition sometimes incorrectly
+returned false. (zmisc3.c)
+ - shfill didn't take the BBox into account. (It still doesn't.)
+(gxshade.c)
+ - The status operator could return an incorrect pages or bytes value
+for files larger than 2 Gb, rather than giving an error. (zfile.c)
+
+</pre><h3><a name="V5.34_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The hint tables weren't reset after processing the base character
+of a 'seac', leading to incorrect hinting and (for Type 2 CharStrings)
+possible mis-parsing of the outline data. (gstype2.c)
+ - When processing a 'seac', the left side bearing was added in
+twice, displacing characters to the right. (bug probably introduced in
+5.20) (gstype1.c)
+ - RasterOps didn't set the size of the RasterOp texture device,
+which caused filling operations involving a colored halftone to be clipped
+to an empty rectangle. (gdevrops.c)
+ - When filling with a colored halftone, the RasterOp source was
+often disregarded. (gxcht.c)
+ - gx_device_image[_plane]_data and gx_device_end_image took an
+unused dev argument, leading to potential confusion. We deprecated the
+gx_device_image_plane_data and gx_device_end_image procedures, replacing
+them with macros that call their replacements gx_image_plane_data and
+gx_image_end (which no longer have the spurious dev argument). (gxdevcli.h,
+gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c, gdevdflt.c, gsimage.c,
+gslib.c, gxclimag.c, gxclrast.c, gximage2.c, gximage3.c, gximage4.c)
+ - gs_color_adjust_count, introduced in 5.33 to address the problem
+of freeing free-standing patterns, just made things worse. We are replacing
+them with gs_pattern_reference, essentially the procedure introduced in 5.31
+that we deleted in 5.33. (gsccolor.h, gspcolor.h, gscolor.c, gspcolor.c)
+
+Changes hint suppression from a #define to a debugger-settable static.
+(gxhint1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.33"></a>Version 5.33 (beta) (8/14/98)</h2>
+
+<p>
+This is the third set of updates for 5.30. These updates have been driven
+mostly by the needs of another Aladdin project, so they haven't included as
+many problem fixes as we would normally make.
+
+<h3><a name="V5.33_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The thread creation procedure for Win32 called a Windows function
+rather than the proper C library function. (gp_win32.c)
+ - In some MS-DOS implementations, the copy command doesn't recognize
+the /Y switch. (bcwin32.mak)
+
+</pre><h3><a name="V5.33_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with *less* than 64K of glyf data stopped working.
+(bug introduced in 5.31) (gs_ttf.ps)
+
+</pre><h3><a name="V5.33_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Using an Identity function left an extra element on the stack.
+(pdf_draw.ps)
+ - The syntax of # in names is different in PDF 1.1 and PDF 1.2, but
+the PDF 1.2 syntax was always used. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V5.33_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Color images still always caused an error. (bug introduced in
+5.32) (gxicolor.c)
+ - Because of a typo, the implementation of image types didn't
+compile. (bug introduced in 5.32) (gxiparam.h)
+ - Free-standing colors (specifically pattern colors) and color
+spaces couldn't be freed. This required a NON-BACKWARD-COMPATIBLE change in
+an internal API used for managing color and color space reference counts.
+(gxcspace.h, gsccolor.h, gscdevn.c, gscolor.c, gscolor2.c, gscscie.c,
+gscsepr.c, gscspace.c, gspcolor.c)
+
+Cleans up a little more formatting. (gscspace.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.32"></a>Version 5.32 (beta) (8/13/98)</h2>
+
+<p>
+This is the second set of updates for 5.30.
+
+<h3><a name="V5.32_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The OS/2 makefile accidentally omitted the OS/2-PM driver.
+(os2.mak)
+ - The MSVC library makefile didn't work. (msvclib.mak)
+ - Debugging was turned on in the Borland Windows makefile.
+(bcwin32.mak)
+ - The BEGINFILES2 list was too long in the MSVC makefile.
+(msvc32.mak)
+
+</pre><h3><a name="V5.32_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - .execn wouldn't accept pseudo-operators. (iref.h)
+ - inustroke with a matrix operand didn't work correctly. (zupath.c)
+ - ImageType 4 images didn't work. (bug introduced in 5.31)
+(zimage3.c)
+
+</pre><h3><a name="V5.32_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Forms used more than once caused an invalidaccess error.
+(pdf_draw.ps)
+
+</pre><h3><a name="V5.32_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Using a colored pattern with a Pattern color space that included a
+base space could access uninitialized floating point values, possibly
+causing an arithmetic trap. (gspcolor.c)
+ - RasterOp wasn't implemented for 16- and 32- bit devices.
+(gdevm16.c, gdevm32.c, gdevmrop.c)
+ - The library test program relied on copysign, which some C
+libraries lack. (gslib.c)
+ - The gs_free and gs_heap_free_all debugging printout were included
+even if DEBUG wasn't defined. (bug introduced in 5.30) (gsmalloc.c)
+ - Color images always caused an error. (bug introduced in 5.30)
+(gxicolor.c)
+ - Masked images with pis = NULL could cause an error. (gximono.c)
+ - In landscape orientation, masked images didn't guarantee that the
+buffer of mask scan lines would be flushed to the mask clipping device
+before processing the data being masked. (gxiparam.h, gxidata.c, gxifast.c,
+gximage3.c)
+ - Images with source transparency set but CombineWithColor = false
+could get an error because of trying to paint with an unloaded
+color. (caused by a bug fix in 5.30) (gxdcolor.c, gxiinit.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.31"></a>Version 5.31 (limited) (8/11/98)</h2>
+
+<p>
+This is the first set of updates for 5.30. They fix a few minor build
+problems, and some significant problems with bitmap patterns that do not
+affect the PostScript or PDF interpreters.
+
+<h3><a name="V5.31_Drivers"></a>Drivers</h3><pre>
+
+Moves some casting macros from generic files to the few specific files that
+use them. (gdev4693.c, gdevn533.c, gdevsnfb.c)
+
+</pre><h3><a name="V5.31_Interpreter"></a>Interpreter</h3><pre>
+
+Changes ImageType 4 images to match the change in the library interface.
+(zimage3.c)
+
+</pre><h3><a name="V5.31_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The MaskColor elements of ImageType 4 images were defined as int
+rather than uint, truncating the range by 1 bit and causing problems in
+comparing the mask color against the pixel samples. (gsiparm4.h,
+gximage4.c)
+ - A needed cast was missing from gs_malloc_memory_release.
+(gsmalloc.h)
+ - A needed cast from byte to char was missing. (gsparams.c)
+ - Patterns always allocated a mask for rendering, which for large
+patterns specified directly as bitmaps allocated a lot of unnecessary
+memory. (gxcolor2.h, gspcolor.c, gxp1fill.c, gxpcmap.c)
+ - Macros simply defining casted versions of variables made the code
+hard to debug. We have only removed the ones that are in generic code (not
+drivers) and that cast pointers to gx_device or its subclasses: the only
+ones removed from header files were prn_dev in gdevprn.h, mdev in gdevmem.h,
+and ccdev, crdev, and cwdev in gxcldev.h. gdevmem.h, (gdevprn.h, gxclist.h,
+gdevabuf.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c, gdevm24.c,
+gdevm32.c, gdevmpla.c, gdevnfwd.c, gdevprn.c, gxacpath.c, gxclimag.c,
+gxclist.c, gxclpage.c, gxclpath.c, gxclread.c, gxclrect.c)
+ - There was no way to free a pattern instance outside the graphics
+state. (gspcolor.h, gspcolor.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.30"></a>Version 5.30 (limited) (8/10/98)</h2>
+
+<p>
+This is the first beta candidate for the 5.50 release. It completes the
+merge of the overlapped rasterizing code into the main development line.
+
+<h3><a name="V5.30_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Yves Arrouye's e-mail address was out of date. (gdevbjc.h,
+gdevcdj.c, contrib.mak, devices.txt, unix-lpr.txt)
+
+Makes the warning against using SHARE_JPEG=1 even stronger. (make.txt,
+dvx-gcc.mak, ugcclib.mak. unix*.mak)
+
+Removes information about using DCL files on VMS to build Ghostscript.
+(make.txt)
+
+Updates the documentation for begin_typed_image. (drivers.txt)
+
+</pre><h3><a name="V5.30_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The Unix build procedure didn't create the obj subdirectory
+automatically. (unixhead.mak, unix-end.mak)
+ - gsdll_h wasn't defined for the OS/2 PM device. Fixing this
+properly required moving the OS/2 drivers into the same makefile as the MS
+Windows drivers, and renaming the file. (devs.mak, msdevs.mak =&gt; pcwin.mak,
+winlib.mak)
+ - gsiparm4_h was used before it was defined. (lib.mak)
+ - Building with shared libaries still used header files in
+Ghostscript's directories, not the ones in /usr/include. ****** NOT DONE
+YET ******
+ - The makefiles all assumed they were located in the current
+directory, not in the source directory. (*.mak)
+
+Adds new 'debugclean' and 'pgclean' targets, parallel to 'debug' and 'pg',
+for the Unix platforms. (unix-end.mak)
+
+Changes the management of .dev files so that on Unix platforms, one can
+really maintain standard, debugging, and profiling builds simultaneously.
+This is a hack, but a fairly reliable one. (gs.mak, unixhead.mak,
+unix-end.mak)
+
+Adds a dummy thread / semaphore / monitor implementation to all platforms
+other than Windows. (dvx-tail.mak, openvms.mak, os2.mak, ugcclib.mak,
+unixtail.mak, watc.mak, watclib.mak)
+
+</pre><h3><a name="V5.30_Drivers"></a>Drivers</h3><pre>
+
+Updates driver support to use the new write-position stream. (gdevpsdf.c)
+
+</pre><h3><a name="V5.30_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows Registry calls didn't deal properly with a null
+pointer. (gp_wgetv.c)
+
+Makes a small change in the platform semaphore / monitor API. (gpsync.h,
+gxsync.h, gp_win32.c, gxsync.c)
+
+Adds a dummy thread / semaphore / monitor implementation. Note that with
+this implementation, async rendering WILL NOT WORK. (gp_nsync.c)
+
+Adds pthreads thread creation and POSIX semaphores for Unix platforms. (We
+still need to add System V semaphores, which is all that is available on
+Solaris and BSDI.) (gp_semon.c, gp_posem.c, gp_pthr.c).
+
+</pre><h3><a name="V5.30_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - CIDFontType 0 fonts didn't select the proper VM space for adding
+entries to font dictionaries, and for loading Subrs strings. (gs_cidfn.ps)
+ - TrueType fonts with an odd glyfs length didn't work. (gs_ttf.ps)
+ - TrueType fonts with a Format 3 'post' table didn't work.
+(gs_ttf.ps)
+ - TrueType fonts where the encoding in the 'post' table didn't cover
+the entire set of glyfs didn't work. (gs_ttf.ps)
+ - TrueType fonts with more than 128K of glyfs didn't work.
+(gs_ttf.ps)
+ - TrueType cmap format 6 didn't work. (gs_ttf.ps)
+ - CIDFontType 0 fonts with hex data didn't skip over the &gt; at the
+end of the data. (gs_cidfn.ps)
+
+</pre><h3><a name="V5.30_Interpreter"></a>Interpreter</h3><pre>
+
+Works around the fact that gs_shfill can't do a gs_setcolorspace for color
+spaces that require interpreter assistance. (gs_ll3.ps)
+
+Moves clipsave and cliprestore to C code. (gs_ll3.ps, zmisc3.c)
+
+Updates some files to reflect the redivision of gsmemory.h and gsstruct.h.
+(imemory.h, istruct.h, ialloc.c)
+
+</pre><h3><a name="V5.30_Streams"></a>Streams</h3><pre>
+
+Adds a stream that just keeps track of the write position. (stream.h,
+stream.c)
+
+Removes the compilation dependency that required all clients of the zlib
+filters to be compiled with the zlib source directory in the search path.
+(szlibx.h, szlibxx.h, szlib[cde].c)
+
+</pre><h3><a name="V5.30_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - ImageType 4 images with &gt;1 input component didn't work.
+(gximage4.c)
+ - Sampled functions didn't keep the fractional part when
+interpolating, possibly leading to infinite recursion in shading.
+(gsfunc0.c)
+ - The color error value for shadings was computed incorrectly for
+CIE color spaces. (gxshade.c)
+ - The CharstringType 2 'roll' operator rolled the operands in the
+wrong direction. (gstype2.c)
+ - Images with RasterOp or transparency didn't retain the current
+color properly, leading to unpredictable results. (gdevmrop.h, gsropt.h,
+gdevddrw.c, gdevrops.c, gxdcolor.c, gxiinit.c, gximage3.c)
+ - A cast to void * was needed to remove a const modifier.
+(gscrdp.c)
+ - On 8-bit non-gray-scale devices, RasterOp values of all-0s or
+all-1s produced the wrong output. (gdevmrop.c)
+ - The GC procedure for halftone screen enumerators was wrong,
+possibly causing invalid memory access errors. This bug predates 5.10.
+(gshtscr.c)
+ - An extra pair of string quotes confused some compilers.
+(gsshade.c)
+ - There were several errors in the CharstringType 2 'flex'
+operators. (gstype2.c)
+ - The structure descriptors for devices weren't initialized in
+library-only configurations. (int.mak, gconf.c)
+ - The Pattern cache got confused if the current device when a
+Pattern color was used wasn't the same as the current device when the
+Pattern instance was created. (gxpcmap.c)
+ - The target of forwarding devices wasn't reference-counted
+properly. (gsdevice.c) ****** FIXING THIS PROPERLY WILL BE A LOT OF WORK:
+WE ONLY FIXED gs_setdevice_no_erase ******
+ - As a result of fixing a typo, the structure declaration for
+gx_page_queue was private, causing clients not to compile. We left it
+private and added an instance allocation procedure. (gxpageq.h, gdevprna.c,
+gxpageq.c)
+ - The mask for ImageType 3 images was clipped (incorrectly).
+(gximage3.c)
+ - Interpolated images with negative X-&gt;X values in the CTM were
+displaced on the page. (gxiscale.c)
+
+Finishes integrating the asynchronous rendering code. (gpsync.h, gxclist.h,
+gdevprna.c, gsmemlok.c, gxclimag.c, gxclpath.c, gxclutil.c)
+
+Updates the memory manager API for additional flexibility needed for
+asynchronous rendering. (gsmalloc.h, gsmemlok.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c)
+
+Updates the standard memory manager to work with a fixed (externally
+supplied) set of chunks, needed for asynchronous rendering, removing some
+macros in the process. (gsalloc.h, gsalloc.c)
+
+Updates some code to use more mnemonic variable names. (gstype2.c,
+gxicolor.c)
+
+Removes some macros for better readability. (gdevmrop.c)
+
+Adds dummy implementations of clipsave and cliprestore. (gsclipsr.h,
+gsclipsr.c)
+
+Implements an alternative, but completely untested, parameter list
+serializer based on streams. (gsparam2.c)
+
+Moves more of the internal memory manager structures from gsmemory.h to
+gsstruct.h. (gsmemory.h, gsstruct.h, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.28"></a>Version 5.28 (limited) (8/3/98)</h2>
+
+<p>
+This fileset almost finishes merging in the code for overlapped
+("asynchronous") interpretation and rasterizing that gave rise to the
+side-branch versions 5.13 and 5.14; eliminates all initialized non-constant
+globals from the graphics library (but not from the interpreter); and adds a
+few more LanguageLevel 3 features (CIEBasedDEF[G] color spaces, CloseSource
+and CloseTarget for streams, Separation base space for Indexed color
+spaces).
+
+<p>
+We were not originally planning to produce another fileset until the code
+merge was completed; however, the schedule demands of another Aladdin
+project justify another intermediate fileset.
+
+<h3><a name="V5.28_Documentation"></a>Documentation</h3><pre>
+
+Notes that the MSVC++ 5.0 compiler may lock up when compiling gxi12bit.c
+with optimization. (make.txt)
+
+</pre><h3><a name="V5.28_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - psl3 didn't include fzlib. (int.mak)
+ - The Windows makefile had the wrong name for a DLL. (winint.mak)
+ - The Borland Windows makefile had several errors. (bcwin32.mak)
+
+At the request of a user, changes the creation of jconfig.h so it #includes,
+rather than copies, arch.h. (jpeg.mak, gsjconf.h)
+
+</pre><h3><a name="V5.28_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - viewpbm.ps scaled the image wrong. (viewpbm.ps)
+
+</pre><h3><a name="V5.28_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - clist_close was declared as an open proc rather than a close proc.
+(As it happens, this didn't make any difference.) (gxclist.c)
+ - A comment was improperly terminated. (gxpageq.h)
+ - A needed #include of memory_.h was missing. (gdevpsde.c)
+
+Integrates nearly all the rest of the code for asynchronous rendering.
+(gdevprn.h, gdevprna.h, gxcldev.h, gxclist.h, gxclpath.h, gxclmem.h,
+gdevbmpa.c, gdevprn.c, gdevprna.c, gxclbits.c, gxclimag.c, gxclist.c,
+gxclmem.c, gxclpath.c, gxclread.c, gxclrect.c)
+
+Changes tracing of memory-based clists to occur only if -Z: is selected,
+rather than always if the code was compiled with -DDEBUG. Note that this is
+a NON-BACKWARD-COMPATIBLE CHANGE (but only affects debugging). (gxclmem.c)
+
+Implements the NumCopies parameter for all page devices, not just printers.
+(gxdevcli.h, gxdevice.h, gdevprn.c, gsdparam.c)
+
+Splits off command list writing utilities into a separate file, since
+gxclist.c was getting too large. (gxclist.h, gxclist.c, gxclutil.c)
+
+Splits command list reading into control (gxclread.c) and the actual list
+interpreter (gxclrast.c), since the file was getting too large. (gxcldev.h,
+gxclrast.c, gxclread.c)
+
+Distinguishes dev_proc_* (defining a general driver procedure) from
+prn_dev_proc_* (defining a printer driver procedure). Unfortunately, we
+have to keep dev_proc_print_page and _print_page_copies for backward
+compatibility. (gdevprn.h)
+
+Splits out of the BMP driver the parts shared with the async version
+(gdevbmp.h, gdevbmp.c, gdevbmpc.c).
+
+Changes the band rasterizer to implement get_bits_rectangle rather than
+get_bits. In some cases, this results in much less computation.
+(gxclist.c, gxclread.c)
+
+Makes the monochrome H-P printer drivers emit a printer reset when closing
+the device. According to a user, this helps prevent the ink nozzles from
+clogging. (gdevdjet.c)
+
+</pre><h3><a name="V5.28_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows DLL entry point procedure didn't return a value as it
+was supposed to. (gp_mswin.c)
+
+Removes all remaining initialized but non-constant globals, and ensures that
+all non-debugging-related BSS variables in the library are explicitly set to
+0 at initialization time. (gp_unix.c)
+
+Improves an error message slightly. (dwmainc.cpp)
+
+</pre><h3><a name="V5.28_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The tracing code for restore_resources could access an invalid
+address. (isave.c)
+ - sizeof(procedure) is not allowed in ANSI C++. (opdef.h,
+iccfont.c, interp.c, ireclaim.c)
+ - A variable was declared incorrectly as bin_token_type_t rather
+than bin_seq_type_t. (iscanbin.c)
+ - The behavior of copypage didn't change in LanguageLevel 3.
+(gs_init.ps)
+ - When grestore et al reactivated a page device, they performed an
+initgraphics, which should only be performed by showpage. (gs_setpd.ps)
+ - The RunLengthEncode filter was broken in cases where the caller
+supplied a record size. (bug introduced in 5.2x) (zfilter.c)
+ - A needed #include of memory_.h was missing. (zfreuse.c)
+ - On machines with sizeof(long) &gt; sizeof(int), the dictionary form
+of image and imagemask didn't work. (bug introduced in 5.2x) (zimage2.c)
+ - exitserver left a 'true' on the operand stack. (gs_lev2.ps)
+
+Replaces the STACK_LOOP_BEGIN/END macros with procedures. (We retain the
+macros for backward compatibility.) (istack.h, istack.c, zchar.c,
+zcontrol.c, zdict.c, zvmem.c)
+
+Reviews the remaining operator files for ease of reading / debugging,
+including removing macros where appropriate. (z*.c)
+
+Changes the dictionary stack printer to indicate whether the dictionary is
+allocated in global or local VM. (gs_init.ps)
+
+Redefines countexecstack and execstack as operators, solely for the sake of
+the Genoa [count]execstack tests. (gs_init.ps, zcontrol.c)
+
+Changes array/string/packedarray forall not to keep an index on the stack,
+solely for the sake of the Genoa [count]execstack tests. (zgeneric.c)
+
+Finishes implementing CIEBasedDEF[G] color spaces. (icie.h, zcie.c)
+
+Adds a ColorSpace resource instance for sRGB. (gs_lev2.ps, gs_res.ps)
+
+Implements CloseSource and CloseTarget for filters. ****** DOESN'T WORK IF
+AN EXCEPTION OCCURS DURING A NESTED CLOSE. ****** (zfile.c)
+
+Allows Separation and DeviceN color spaces as the base space for an Indexed
+color space. (zcsdevn.c, zcsindex.c, zcssepr.c)
+
+</pre><h3><a name="V5.28_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - In PDF files, Indexed color spaces with a CIEBasedABC base space
+gave an /undefined error. (pdf_draw.ps)
+
+</pre><h3><a name="V5.28_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The report_error member of the DCT streams wasn't initialized
+early enough. (ifilter.h, zfdctd.c, zfdcte.c, zfile.c)
+
+Changes the zlib filters to use the stream's allocator, rather than the
+default allocator, for their private storage. Note that this requires the
+stream itself to keep pointers to this storage, for garbage collection.
+(szlibx.h, szlibc.c, szlibd.c, szlibe.c)
+
+Updates some clients to use new, simpler GC structure descriptors. (sdct.h,
+sfilter.h, sdctc.c, sfilter1.c)
+
+Adds a close_strm member for the interpreter's use (CloseSource /
+CloseTarget). (stream.h, stream.c)
+
+</pre><h3><a name="V5.28_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gstate, currentgstate, and setgstate didn't handle the effective
+clip path properly, possibly leading to dangling pointers. (gsstate.c)
+ - setrasterop, setsourcetransparent, and settexturetransparent
+should all return int rather than void, since they can fail. (gsrop.h,
+gsrop.c)
+ - FunctionType 1 functions didn't clip the output value to the
+Range. (gsfunc3.c)
+ - A needed cast from byte * to char * was missing. (gscrdp.c)
+ - Some needed #includes of *_.h were missing. (gscrd.c, gscrdp.c,
+gxshade6.c)
+ - The prototype for gx_effective_clip_path wasn't #included in a
+needed place. (gsimage.c)
+ - RasterOp sometimes didn't work properly for devices whose
+representation of white wasn't a pixel value of 0. (gxdcolor.h, gdevbbox.c,
+gdevdbit.c, gdevvec.c, gslib.c, gxdcolor.c)
+ - The variable used to detect double declaration of
+gs_get_bits_params_t was named incorrectly. (gxdevcli.h, gxgetbit.h)
+ - gs_[eo]clip never retained the clipping path in its original form.
+These routines now retain it in the simple case (the old clipping path is a
+rectangle, and the new path is completely contained within it). This
+requires a small NON-BACKWARD-COMPATIBLE change in the gx_cpath_intersect
+procedure: it no longer updates the new path, and it flattens the path if
+needed. To avoid problems, we renamed this procedure as gx_cpath_clip.
+(gsdps.c, gspath.c, gxcpath.c)
+ - If the image was empty, gs_image_common_init didn't free the
+lower-level enumerator. (gsimage.c, gxccache.c)
+
+Removes all remaining initialized but non-constant globals, and ensures that
+all non-debugging-related BSS variables in the library are explicitly set to
+0 at initialization time. (gxdevice.h, gconf.c, gsdevice.c, gshtscr.c,
+gsiodev.c, gsutil.c, gxcht.c)
+
+Finishes implementing table-driven GC descriptors. We expected it to save
+considerable space at negligible time cost; it actually shrank the 1Mb
+executable by only about 5K, and slowed down garbage collection by about
+2%. (gsfcmap.h, gsstrtab.h [deleted], gsstruct.h, gzpath.h, gsfcmap.c,
+gsmemory.c, gsstrtab.c [deleted])
+
+Finishes implementing CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
+
+Simplifies some code by removing or redefining macros. (gxi12bit.c)
+
+Removes all patches made for easier retrofitting of 5.2x code into 5.1x
+filesets. (gdevdrop.c, gdevmrop.c, gslib.c, gspcolor.c)
+
+Reviews a few more files for style and readability. (gxbitfmt.h,
+gxgetbit.h)
+
+Allows Separation (and, if included, DeviceN) color spaces as the base space
+of an Indexed color space. Unfortunately, this involves introducing a new
+distinction in color space types, which entails NON-BACKWARD-COMPATIBLE
+changes in the color space and color space type structures. (gxcspace.h,
+gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c,
+gscspace.c, gspcolor.c)
+
+Makes a small addition in order to fix an interpreter bug. (gxfixed.h,
+gdevbbox.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.27"></a>Version 5.27 (limited) (7/18/98)</h2>
+
+<p>
+This is another "in-flight" snapshot made in preparation for the 5.2x / 5.1x
+code merge. It completes the driver CRD API.
+
+<h3><a name="V5.27_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The reference to psview was out of date. (new-user.txt)
+
+Adds some pointers to Aladdin Ghostscript mirror sites. (new-user.txt)
+
+Updates the C style guide a little further. (c-style.txt)
+
+Adds documentation on driver-supplied CRDs. (drivers.txt)
+
+Updates the JPEG makefile to mention IJG release 6b. (jpeg.mak)
+
+Updates documentation to reflect the devs.mak / contrib.mak split. (README,
+devices.txt, drivers.txt, make.txt, new-user.txt, source.txt, use.txt)
+
+</pre><h3><a name="V5.27_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - sjpegerr.o was needed even when using the shared JPEG library.
+(jpeg.mak)
+
+Changes the name of the jpeg library directory from jpeg-&lt;version&gt; to just
+jpeg, to parallel libpng and zlib. (make.txt, *.mak)
+
+Creates a separate makefile for contributed drivers. Eventually these
+drivers will go in a separate directory. (devs.mak, contrib.mak, *.mak)
+
+</pre><h3><a name="V5.27_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The pkm driver was absurdly inefficient. (gdevpbm.c)
+ - The psfax driver (which, admittedly, doesn't come close to
+working) no longer compiled. (gdevpfax.c)
+ - The ARCHAIC mode of the Epson driver emitted an incorrect
+character ('r' instead of ^R). (gdevepsn.c)
+ - The X driver didn't check the calls of XInitImage for error
+status. (gdevx.c)
+
+Updates a client for the change in the names of the gb_ values. (gdevx.c)
+
+Updates a client for the added param_request procedure. (gdevpsdf.c)
+
+Reformats all Aladdin-maintained drivers to the new Ghostscript standard
+format, using indent. We deliberately did not reformat user-contributed
+drivers, since indent mangles a line once in a while and we do not want to
+take responsibility for fixing others' code. (*.h, *.c)
+
+Adds a default CRD specification to the 'bit' device, for testing.
+(gdevbit.c)
+
+Integrates a bit more of the support code for asynchronous rasterizing.
+(gxband.h, gxclio.h, gxclist.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c,
+gxclread.c, gxpageq.h, gxpageq.c)
+
+</pre><h3><a name="V5.27_Platforms"></a>Platforms</h3><pre>
+
+Adds thread support to the Win32 platform. (gp_win32.c)
+
+</pre><h3><a name="V5.27_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Composite fonts with CID-keyed descendants didn't run the
+BuildGlyph procedure. (zchar.c)
+ - The internal representation of CMaps was built incorrectly.
+(zfcmap.c)
+ - Category resources didn't load from files automatically.
+(gs_res.ps)
+
+Reformats all files to the new Ghostscript standard format, using indent.
+(*.h, *.c)
+
+Reviews most of the operator files for ease of reading / debugging,
+including removing macros where appropriate. (z*.c)
+
+Updates a client for the change in the names of the gb_ values. (zdevice.c)
+
+Updates a client for the added param_request procedure. (iparam.c)
+
+Updates clients for the completion of the CRD API. (zcie.c, zcrd.c)
+
+Increases the initial size of systemdict a little more, to allow for -d and
+-s. (iinit.c)
+
+</pre><h3><a name="V5.27_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Text modes other than 0 didn't work with multiple-byte fonts.
+(pdf_ops.ps)
+ - There were many bugs in the code for Type 0 and CIDFontType 0
+fonts. (pdf_font.ps)
+
+</pre><h3><a name="V5.27_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - cshow returned a character code of -1 for composite fonts with
+FMapType 9 (CMap-based). (gsfcmap.h, gschar0.c, gsfcmap.c)
+ - The GC procedure for enumerating show enumerators was broken.
+(bug introduced in 5.24 or 5.25) (gschar.c)
+ - dashpath always copied the path, instead of only copying it if
+needed. (gspath1.c)
+ - The hint replacement fix in 5.24 sometimes thought a path was
+closed when it wasn't, producing gross distortions of some characters.
+(gxhint3.c)
+
+Cleans up code for debugging by expanding macros, etc. (gstext.h,
+gschar0.c)
+
+Changes the gb_ values to all caps, in line with general C convention. This
+is a NON-BACKWARD-COMPATIBLE change to an as yet rarely-used API.
+(gxbitfmt.h, gdevalph.c, gdevdgbr.c, gdevmem.c, gsalphac.c, gximage2.c)
+
+Enhances the default implementation of parameter lists to allow requesting
+individual parameters. This is needed for the driver CRD API. (gsparam.h,
+gscparam.c, gsparam.c)
+
+Completes the API for driver CRDs, also moving some code from gscie.c to
+gscrd.c. This involves a NON-BACKWARD-COMPATIBLE change in the prototype of
+the TransformPQR procedures. (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c,
+gscrdp.c)
+
+Reformats all files to the new Ghostscript standard format, using indent.
+(*.h, *.c)
+
+Splits up gdevmrop.c into 3 files: gdevmrop.c (RasterOp implementation for
+memory devices), gdevdrop.c (default and device-independent RasterOp
+algorithms), and gdevrops.c (RasterOp-source device). (gdevmrop.h,
+gdevdrop.c, gdevmrop.c, gdevrops.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.26"></a>Version 5.26 (limited) (7/7/98)</h2>
+
+<p>
+The purpose of this fileset is to add an API for drivers to provide one or
+more device-appropriate CIE rendering dictionaries. Like 5.25, it is a
+"snapshot" fileset not made available even to beta testers.
+
+<h3><a name="V5.26_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - An !endif was omitted. (msvc32.mak)
+ - A newly needed Windows library was omitted. (msvctail.mak)
+ - The /Za and /Ze switches were set incorrectly for MSVC.
+(bcwin32.mak, msvccmd.mak, watcw32.mak, winint.mak, winlib.mak)
+
+</pre><h3><a name="V5.26_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A closing bracket was omitted (in code that is ifdef'd out).
+(gdevpdf.c)
+
+</pre><h3><a name="V5.26_Fonts"></a>Fonts</h3><pre>
+
+Changes the font loader so that instead of pushing systemdict and a small
+empty dictionary on the stack before loading a font, it pushes userdict.
+This is what Adobe interpreters do, but this will probably break some
+PostScript files, specifically ones that redefine 'index'. I don't see how
+the Adobe interpreters can possibly do the right thing for such files.
+(gs_fonts.ps, gs_type1.ps)
+
+</pre><h3><a name="V5.26_Interpreter"></a>Interpreter</h3><pre>
+
+Updates clients for changes in CRD API. This involves some changes in
+internal procedures. (gs_lev2.ps, icie.h, zcie.c, zcrd.c)
+
+</pre><h3><a name="V5.26_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Pickling string, name, and array parameters tried to force
+inappropriate alignment. (gsparams.c)
+ - Pickling dictionary parameters wrote the result in the wrong
+place. (gsparams.c)
+ - An occurrence of dev_t should have been gx_device. The compiler
+didn't catch this because there happens to be a type named dev_t in
+&lt;types.h&gt; (!). (gxclread.c)
+
+Adds an API for drivers to provide one or more CRDs (as device parameters).
+Makes a small but NON-BACKWARD-COMPATIBLE change in the names and argument
+lists of the existing CRD API (which is not used by anything in the standard
+configuration). (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c, gscrdp.c,
+gslib.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.25"></a>Version 5.25 (limited) (7/1/98)</h2>
+
+<p>
+This is a "snapshot" fileset created for the purpose of merging with a
+separate development branch. While it fixes some significant bugs in 5.24,
+it doesn't represent substantial additional progress.
+
+<h3><a name="V5.25_Documentation"></a>Documentation</h3><pre>
+
+Completely rearranges the C style guide, updates it to reflect current
+practice, and adds a 1-page summary of the most important points.
+(c-style.txt)
+
+Updates the man pages for consistency and to correct minor errors. (*.1)
+
+Notes that the pjxl300 driver works with the H-P CopyJet. (devices.txt,
+devs.mak).
+
+Notes that in order to deal with over-zealous Solaris security checking,
+additional linker switches are needed. (make.txt, unix*.mak)
+
+</pre><h3><a name="V5.25_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make install' didn't get the executable from the right place.
+unixinst.mak)
+ - COMPILE_INITS=1 didn't work. (int.mak, geninit.c)
+ - The MSVC makefile updates hadn't been applied to the MSVC-only
+devices. (devs.mak)
+ - The other PC makefiles didn't define GLCCWIN. (bcwin32.mak,
+watcw32.mak)
+
+Adds bounding box testing to the library test program. (ugcclib.mak)
+
+Reviews and reformats code for maintainability. (genarch.c, geninit.c)
+
+Moves the MS Windows-specific devices to a new file. (bcwin32.mak,
+devs.mak, msdevs.mak, msvc32.mak, watcw32.mak)
+
+</pre><h3><a name="V5.25_Platforms"></a>Platforms</h3><pre>
+
+Reviews and reformats header files for maintainability. (vmsmath.h,
+windows_.h)
+
+Removes some no-longer-used files from the fileset. (overlay.h, gp_itbc.c)
+
+</pre><h3><a name="V5.25_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Substituted fonts had their FontName set to the requested one.
+There was a comment in the code saying that some files that depend on this
+happening, but Adobe implementations don't do it. However, aliased fonts in
+Fontmap will continue to have the FontName set to the Fontmap key.
+(gs_fonts.ps)
+
+Adds the euro symbol at position 240 (0360) in SymbolEncoding. This is a
+PostScript 3 addition, but it's too much work to make it appear there only
+if languagelevel &gt;= 3. (gs_sym_e.ps)
+
+</pre><h3><a name="V5.25_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The bbox device didn't work if its target was itself a forwarding
+device. (gdevbbox.c)
+ - User parameters maintained at the PostScript (as opposed to VM)
+level didn't work. (gs_init.ps)
+ - Idiom recognition didn't work. (gs_init.ps, gs_ll3.ps, zmisc3.c)
+ - .beginpage and .endpage could cause an error if the current device
+was a page device but was installed with setdevice rather than
+setpagedevice. (gs_setpd.ps)
+
+In the interest of readability, replaces all casting macros with separate
+variables, other than those used in enum_ptrs and reloc_ptrs procedures.
+Note that doing this for rptr in gc_trace in igc.c will have a significant
+performance cost on Intel CPUs, unless the compiler has a very good
+optimizer, because it introduces another variable competing for scarce
+registers in the most performance-critical section of code in the garbage
+collector. (ialloc.c, igc.c, iparam.c, isave.c, istack.c, zchar42.c,
+zfproc.c, zusparam.c)
+
+Changes some macros to procedures. (igc.c, ilocate.c, zusparam.c)
+
+Changes some macros to static quasi-constants (only variable for debugging).
+(zvmem.c)
+
+Adds #include "errors.h" to oper.h, removing it from z*.c. (oper.h, z*.c)
+
+Reviews and reformats some header files for maintainability. This is an
+ongoing project. (bfont.h, errors.h, iinit.c)
+
+Consolidates and simplifies the reading and writing of binary tokens and
+binary object sequences. (bseq.h [deleted], btoken.h, ibnum.h, ibnum.c,
+iscanbin.c, zbseq.c)
+
+Adds dummy user and system parameter entries for all the parameters listed
+in Appendix C of the PostScript Red Book: even though the book clearly says
+that no PostScript program should rely on the presence of any particular
+parameter, PostScript files routinely assume the existence of the parameters
+listed in Appendix C. (gs_init.ps, gs_lev2.ps, gs_res.ps)
+
+Adds dummy user and system parameter entries for the new parameters listed
+in the 3010 Supplement. (gs_ll3.ps)
+
+Adds double-inclusion protection to all header files. (*.h)
+
+Moves the creation of binary object sequence headers from C to PostScript
+code. (zbseq.c, gs_btokn.ps)
+
+Adds support for multiple FormTypes and ColorRenderingTypes. (gs_init.ps,
+gs_lev2.ps, gs_res.ps, zcrd.c)
+
+Updates structures and clients for the introduction of "raw memory"
+allocators. (ialloc.h, igc.h, ialloc.c, imain.c, isave.c)
+
+In the interest of readability and being able to use GNU indent to create
+standard formatting, changes the operator tables from procedures back to
+data structures. This change is backward-compatible for all operator files,
+although we also edited all of Ghostscript's own operator definitions to
+remove the BEGIN_OP_DEFS and END_OP_DEFS macros (which now have to generate
+a little unnecessary code for backward compatibility). (opdef.h, iconf.c,
+iinit.c, iutil.c, z*.c)
+
+Splits zchar2.c into a Level 1+ part and a Level 2 part. (zcfont.c,
+zchar2.c)
+
+</pre><h3><a name="V5.25_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Adds font synthesis based on the FontDescriptor. Currently this is very
+rudimentary. (pdf_font.ps)
+
+</pre><h3><a name="V5.25_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer didn't default to A4 paper size if A4 was selected
+as the default in the makefile. (gdevpdf.c)
+ - The default implementation of the begin_image procedure always
+called the image's begin_image implementation, rather than the device's
+begin_typed_image implementation. (gdevddrw.c)
+ - The bbox device didn't initialize its reference count.
+(gdevbbox.c)
+ - A necessary cast was omitted. (gdevpsde.c)
+
+Changes some macros to procedures. (gdevpstr.h, gdevpstr.c)
+
+Adds an internal device to implement the PCL5 special color mapping
+algorithms. (gdevcmap.h, gxdevice.h, gdevcmap.c, gdevnfwd.c)
+
+Adds double-inclusion protection to all header files. (*.h)
+
+Updates drivers for the change in begin_image. (gdevbbox.c, gdevpdfi.c,
+gdevvec.c, gxclimag.c)
+
+</pre><h3><a name="V5.25_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The non-ANSI definitions of CLEAR_MARKS_PROC, ENUM_PTRS_BEGIN_PROC
+and RELOC_PTRS_BEGIN were missing a parameter. (gsstruct.h)
+ - A few necessary casts were omitted. (gsparam.c, gxpcmap.c)
+ - Images or Patterns with non-default RasterOps could cause crashes.
+(gdevmrop.c, gxp1fill.c)
+ - Exponential Interpolation functions with non-integral positive
+exponents incorrectly required the lower bound of the domain to be strictly
+positive rather than only non-negative. (gsfunc3.c)
+ - The attempt to achieve the desired color smoothness when shading
+could compute (nearly) forever. (gxshade.c, gxshade1.c)
+ - The arc change in 5.24 caused arcs to render incorrectly.
+(gspath1.c)
+ - The macro-reducing cleanup in 5.24 introduced a bug in handling
+copy operations with negative skew. (gdevm1.c)
+
+Adds unmasked images and bounding box testing to the library test program.
+(gxdevcli.h, gslib.c)
+
+Changes some macros to procedures. (gxfunc.h, gsfunc.c, gsfunc0.c,
+gsfunc3.c)
+
+Adds double-inclusion protection to all header files. (*.h)
+
+Reviews and reformats header files for maintainability. (*_.h, dodebug.h
+[deleted])
+
+Changes the structure of the common part of the image enumerator to include
+the device (which may be different from the original device, because of
+forwarding), and to access the procedures through a pointer to a const
+structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
+begin_image, since they now must pass the device to
+gx_image_enum_common_init. (gximage.h, gxiparam.h, gdevddrw.c, gdevdflt.c,
+gxiinit.c, gximage3.c, gximage4.c)
+
+Adds tests of the new color mapping device to the library test program.
+(gslib.c)
+
+Removes the last vestiges of segmented pointers. (genarch.c, std.h)
+
+Introduces a "raw memory" API, primarily for managing the underlying memory
+pool for embedded systems. This involves a NON-BACKWARD-COMPATIBLE-CHANGE
+in the implementation (but not ordinary clients) of allocators.
+(gsmemory.h, gsmemraw.h, gxalloc.h, gsalloc.c, gsmalloc.c, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.24"></a>Version 5.24 (limited) (6/17/98)</h2>
+
+<p>
+In addition to the usual bug fixes, and a few enhancements where temptation
+proved irresistible or in response to an external need, this fileset:
+<ul>
+<li> - Takes the first steps on a major readability cleanup
+ (4-space indentation instead of 2, replacement of macros by
+ procedures, ....)
+
+<li> - Implements a bit more of the DPS functionality, including view
+ clipping, and gstate stack copying for 'fork'.
+
+<li> - Starts to sketch a text API for drivers.
+
+<li> - Changes the Unix makefiles so that they create production
+binaries
+ in a separate directory.
+</ul>
+
+<p>
+Again, there are some non-backward-compatible changes required by other
+architectural improvements. As always, we have tried to minimize the impact
+of such changes on users' code.
+
+<h3><a name="V5.24_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The -Kn switch wasn't documented. (use.txt)
+ - The term "Software" was used instead of "Program" in the last
+paragraphs of the license. (PUBLIC)
+
+Adds a couple of missing operators to the list at the end of ostack.h.
+(ostack.h)
+
+Documents more precisely which gstate points to which objects after various
+gstate operations. (gsstate.c)
+
+Corrects some addresses for the Free Software Foundation. (commprod.txt,
+new-user.txt)
+
+Improves the documentation for memory management of color spaces. (gscie.h,
+gscolor2.h)
+
+Updates the list of hardware available to Aladdin. (new-user.txt)
+
+Documents ReopenPerPage. (language.txt)
+
+Moves the documentation of image rendering procedures to a better place.
+(gximage.h, gxiinit.c)
+
+Clarifies that old slzwe.c files may not work with current Ghostscript
+versions. (make.txt)
+
+</pre><h3><a name="V5.24_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - psl3.dev didn't include func.dev. (int.mak)
+ - device and device2 devices weren't sorted together, causing
+devices to appear in the list out of order (including, possibly, selecting
+the wrong device as default). (genconf.c)
+ - The mswindll module definition omitted some needed files.
+(devs.mak)
+
+Changes the optimization level for gcc from -O to -O2 for both standard and
+profiling builds. (unix-gcc.mak)
+
+Defines 3 new makefile macros for the Unix platforms,
+CFLAGS_{STANDARD|DEBUG|PROFILE}, that give the additional compiler switches
+for these 3 compilation options. (unixansi.mak, unix-cc.mak, unix-gcc.mak)
+
+Changes the Unix makefiles so that by default they create the binaries in an
+'obj' subdirectory of the source directory. (unixansi.mak, unix-cc.mak,
+unix-gcc.mak, unix-end.mak)
+
+Updates the MSVC++ makefiles so they allow setting any configuration
+parameter from the make command line. (msvc32.mak, msvccmd.mak, msvccom.mak
+[deleted], msvclib.mak, msvctail.mak)
+
+</pre><h3><a name="V5.24_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii was broken. (ps2ascii.ps)
+
+Adds capability to gslp.ps:
+
+ - Variable-width fonts (but without automatic line breaking);
+
+ - Pair kerning (from AFM file);
+
+ - Inter-character and space width adjustment.
+
+This project was done for a paying customer. (gslp.ps)
+
+</pre><h3><a name="V5.24_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The name of the plan9bm device was wrong. (gdevpbm.c)
+ - The PDF writer wrote incorrect parameters for the CCITTFax filter
+used to compress Type 3 font bitmaps. (bug introduced in 5.23) (gdevpdfi.c)
+ - The PDF writer emitted two 'endobj' lines for Type 3 bitmap fonts.
+(gdevpdf.c)
+
+Removes all remaining uses of _ds and _ss in Aladdin's drivers. (gdevprn.h,
+gdevsvga.h, gdevbit.c, gdevcgm.c, gdevdjet.c, gdevmsxf.c, gdevpbm.c,
+gdevpccm.c, gdevpcfb.c, gdevpdfi.c, gdevprn.c, gdevsvga.c, gdevtfax.c)
+
+Renames a local macro named END. (gdevcgml.c)
+
+Removes all uses of far_data other than for device (but not device2)
+prototypes. (gdevbit.c, gdevdjet.c, gdevemap.c, gdevmsxf.c, gdevpbm.c,
+gdevpcfb.c, gdevpcx.c, gdevpdf.c, gdevpng.c, gdevps.c, gdevpsim.c, gdevpx.c,
+gdevtfax.c, gdevtfnx.c, gdevvglb.c, gdevx.c, gdevxalt.c)
+
+Adds a psrgb driver that writes PostScript (Level 2) planar,
+run-length-compressed, 24-bit RGB images. (gdevpsci.c)
+
+Starts to define and implement a driver procedure for text. This interface
+will certainly change in the future as we get more insight into the division
+of responsibility and control flow between generic code, individual drivers,
+and internal and external fonts. This involves a major
+NON-BACKWARD-COMPATIBLE CHANGE in the gs_show_enum structure (which no
+client should be accessing directly). (gdevmem.h, gdevprn.h, gstext.h,
+gxchar.h, gxdevcli.h, gxdevice.h, gxtext.h, gdevbbox.c, gdevht.c,
+gdevnfwd.c, gschar.c, gschar0.c, gstext.c, gxacpath.c, gxclip.c, gxclip2.c,
+gxclipm.c, gxclist.c, gxpcmap.c)
+
+Extends the parameter list printer to handle names and arrays. (gdevpsdf.c)
+
+Implements the ability to write out a Type 1 font definition, for embedding
+fonts in PDF output. Currently this code isn't called from anywhere, and it
+will certainly be subject to change in the future. (gdevpsdf.h, gdevpdfi.c,
+gdevpsde.c, gdevpsdf.c)
+
+Adds the PCL XL Protocol Class 2.0 operators, attributes, and enumerated
+values to the relevant header files. (gdevpxat.h, gdevpxen.h, gdevpxop.h)
+
+Converts some additional devices to -dev2, to make them const. (devs.mak,
+gdevjpeg.c)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(gdevpdfi.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
+
+Massages mem_mono_copy_mono and mem_mono_strip_tile_rectangle to reduce the
+use of macros somewhat. (gdevm1.c, gdevmem.h)
+
+Makes a change to support the change in gs_param_list_common. (gdevpsdf.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(gdevpdfm.c, gdevpx.c, gdevx.c, gdevxalt.c)
+
+Adds a ReopenPerPage Boolean device parameter for printers, which causes the
+output file to be closed and reopened for each page. This may be helpful in
+persuading spoolers to start printing as soon as the first page is
+available. (gdevprn.h, gdevprn.c)
+
+Makes the %-format validator for output file names a procedure, even though
+it's only called in one place. (gdevprn.c)
+
+Updates some clients for the change from std_procs to procs. (gdevp2up.c,
+gdevpbm.c, gdevupd.c,
+
+Removes the use of the CleanFaxData tag (327) from TIFF output, since many
+applications don't recognize it and it isn't in the TIFF 6 documentation.
+(gdevtifs.h, gdevtfax.c)
+
+</pre><h3><a name="V5.24_Platforms"></a>Platforms</h3><pre>
+
+Adds a new gp_setmode_binary platform procedure, to set a file into binary
+mode on platforms that distinguish text and binary. (gp.h, gp_*.c)
+
+</pre><h3><a name="V5.24_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The derived (Bold, Oblique, ...) Hershey fonts were broken.
+(fonts/makeher.ps, fonts/h*.ps)
+
+</pre><h3><a name="V5.24_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - As always, gcc failed to report some signed/unsigned char *
+mismatches. (imainarg.c)
+ - Some needed #includes were missing. (zcrd.c, ztype.c)
+ - Contexts were always allocated in global VM (should be local VM),
+and were freed in the current VM (should be local VM). Fixing this required
+changing some internal interfaces defined in icontext.h. (icontext.h,
+icontext.c, interp.c, zcontext.c)
+ - restore did some unnecessary gsaves. (zvmem.c)
+ - Creating a new context didn't initialize the graphics state
+properly, and didn't do the first gsave that grestoreall relies on.
+(gs_dps.ps)
+ - The bookkeeping for open files didn't work with multiple contexts.
+Fixing this required a substantial (simplifying) redesign of the
+interpreter's bookkeeping for streams in general: this may have introduced
+new bugs. (files.h, ireclaim.c, isave.c, zfile.c)
+ - fork didn't copy the graphics state stack. (zcontext.c)
+ - The space bits were set incorrectly in the array reference for the
+operand stack, causing the garbage collector not to mark the operand stack
+of contexts other than the current one. (interp.c)
+ - LanguageLevel 3 facilities weren't enabled when desired.
+(gs_ll3.ps, ilevel.h, opdef.h, iinit.c, zcsdevn.c, zimage3.c, zmisc2.c,
+zmisc3.c, zshade.c, ztrap.c)
+ - flushfile with a procedure-target stream didn't pass the buffered
+data to the procedure. We tinkered with this a little, but it still isn't
+fixed. (zfilter.c, zfproc.c)
+ - The top-level color space objects allocated by the CIE color space
+setting operators were never freed (until garbage collection). (zcie.c)
+ - setpagedevice with a 0-size page didn't fail. (gs_setpd.ps,
+zmedia2.c)
+ - If one or more of the matrices in a CIE color space or CRD was
+singular, setcolorspace or setcolorrendering could cause a stackoverflow.
+(zcie.c)
+ - defineuserobject didn't work. (I don't see how it could ever have
+worked.) (gs_dps2.ps)
+ - The version string wasn't read-only. (gs_init.ps, gs_lev2.ps,
+gs_ll3.ps)
+ - Some standard resource categories weren't defined (which they need
+to be, even if they have no instances). (gs_res.ps, gs_ll3.ps)
+ - The Trapping ProcSet was empty. (gs_ll3.ps)
+ - setvmthreshold didn't accept a value of -1. (gs_lev2.ps,
+gs_pdfwr.ps, zusparam.c, zvmem2.c)
+ - Binary tokens containing native reals with swapped byte order
+didn't read in properly. (ibnum.c, iscanbin.c)
+ - In binary object sequences, many executable objects were
+incorrectly written out as literal. (zbseq.c)
+ - String DataSources for shadings didn't work. (zshade.c)
+ - Parameter dictionaries with integer keys didn't work. (iparam.c)
+ - A "can't happen" condition caused massive confusion instead of a
+rangecheck error. (gs_setpd.ps)
+ - setcachelimit and setcacheparams were broken, because they no
+longer interacted correctly with setuserparams and setsystemparams.
+(gs_lev2.ps)
+ - The source width and height of images was arbitrarily limited to
+32767. (zimage2.c)
+ - The optional dictionary parameter for filters was the last
+operand, not the first. (zfbcp.c, zfdecode.c, zfilter.c, zfilter2.c,
+zfilterx.c, zfzlib.c)
+ - If the current color space was Indexed, Separation using the
+alternative space, or DeviceN using the alternative space,
+currentgray/cmykcolor/hsbcolor/rgbcolor returned 0 rather than the
+underlying color. (This was a correction to the Red Book in the 3010
+Language Supplement, Section D.2.4 and D.2.5.) (gscolor.c, gscolor1.c,
+gxcspace.h)
+
+Implements some additional LanguageLevel 3 stream facilities:
+ - CloseSource and CloseTarget (parsing only). (ilevel.h, zfilter.c)
+ - Dictionary argument for SubFileDecode. (zfilter.c)
+ - UnitSize (fully implemented) and LowBitFirst (parsing only) for
+ LZWDecode. (zfdecode.c)
+ - ReusableStreamDecode (incomplete). (gs_ll3.ps, zfreuse.c)
+
+Removes all remaining uses of _ds and _ss. (bfont.h, errors.h, files.h,
+icie.h, idict.h, idparam.h, ifunc.h, iscan.h, iutil2.h, opdef.h; iccfont.c,
+idict.c, idparam.c, igc.c, iinit.c, iparam.c, iscan.c, iscannum.c, iutil2.c,
+zcid.c, zcie.c, zdevice2.c, zfdecode.c, zfile.c, zfileio.c, zfont0.c,
+zfont2.c, zfont42.c, zfunc.c, zht2.c, zusparam.c)
+
+Removes the use of gs_if_debug_c. (zvmem2.c)
+
+Updates clients for the change in color space num_components. (zcolor2.c,
+zcsindex.c, zcssepr.c, zpcolor.c)
+
+Changes the stack manager so it can ensure an unused margin above the top
+element. This is needed for a possible change in the operator API.
+(istack.h, istack.c)
+
+Decouples the definition of the interpreter instance from the definition of
+the exported procedures that use it, so that we can use it in more places
+internally. (iminst.h, main.h)
+
+Removes all initialization of static per-context state. (iinit.c, iscan.c,
+zmath.c)
+
+Makes the freeing of VM spaces entirely dependent on the number of contexts
+referencing them, removing the special handling of interpreter termination.
+(icontext.h, gsalloc.c, icontext.c, inouparm.c, interp.c, zcontext.c,
+zusparam.c) ****** IN PROGRESS ******
+
+Enables printing of time and memory usage even in non-DEBUG systems, for
+benchmarking. (imain.c)
+
+Adds a .forceundef operator to parallel .forceput. (gs_init.ps, zdict.c)
+
+Rewrites the Form caching code to use the Pattern cache. (gs_fform.ps)
+
+Removes all uses of far_data. (imain.c, imainarg.c, iname.c, opdef.h)
+
+Moves responsibility for null page devices from C code to PostScript code.
+(gs_setpd.ps, igstate.h, zdevice2.c, zgstate.c)
+
+Changes the context scheduler to not store or reload the state when
+switching from a context to the same context. (zcontext.c)
+
+Moves .registerencoding from C code to PostScript code. (gs_init.ps,
+zfont2.c)
+
+Splits off inames.h (API for names and the name table) from iname.h (API for
+the interpreter's name table); renames the_nt as the_gs_name_table, and
+moves it to imain.c. We would like to rename iname.h as names.h, but there
+are too many places that include it. (igc.h, iname.h, inamedef.h, inames.h,
+imain.h, idict.c, idstack.c, igc.c, iname.c, interp.c, isave.c)
+
+Splits off iestack.h and iostack.h from estack.h and ostack.h, as was done
+for [i]dstack.h in 5.23. (estack.h, iestack.h, iostack.h, ostack.h,
+interp.c)
+
+Splits off the hit detection device from the user path code, moving it to
+the library level where it belongs. (zupath.c)
+
+Updates the interpreter for the changes in the enum_ptrs, reloc_ptrs, and
+clear_marks memory management procedures. (igc.c, igcref.c, ilocate.c,
+zcontext.c)
+
+Removes all uses of 'near' from the interpreter: if short and long calls
+have different formats, we rely on the compiler to generate the most
+efficient one. (iccfont.c, imainarg.c, iparam.c, zdevice2.c, zdouble.c,
+zdps.c, zgstate.c, zmatrix.c, zpath.c, zpath1.c, zrelbit.c, ztype.c)
+
+Makes a couple of minor changes to support the change in
+gs_param_list_common. (iparam.h, iparam.c)
+
+Changes internaldict to an operator, and executive and findencoding to
+procedures, in order to satisfy the Genoa FTS. (gs_dps.ps, gs_init.ps,
+gs_res.ps)
+
+Updates clients for the addition of device reference counting. (zpcolor.c,
+zupath.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(istruct.h, opcheck.h)
+
+Adds a debugging operator for printing out a Type 1 font. (zfont1.c)
+
+Updates the Type 1 font operators for the change in the procedure structure.
+(zchar1.c, zfont1.c)
+
+Updates one client for the change in the gs_show_enum structure. (zchar.c)
+
+Removes an obsolete "hook" put in for a customer. (zchar.c)
+
+Removes the BigStringEncode filter, which was only used by a former
+customer. (zfilter.c)
+
+</pre><h3><a name="V5.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Images defined in non-Device color spaces were broken.
+(pdf_draw.ps)
+
+Removes some vestiges of the old pdf2ps. (pdf_draw.ps, pdf_main.ps)
+
+Adds some leftover PDF 1.2 features:
+
+ - F, FFilter, and FDecodeParms keys in stream dictionaries.
+ (pdf_base.ps)
+
+ - Functions, including predefined spot functions. (pdf_draw.ps)
+
+ - Name trees. (pdf_base.ps)
+
+Adds some PDF 1.3 features. Note that these require a fair amount of
+PostScript LanguageLevel 3 support. Note also that none of these have been
+tested yet, because we don't have any source of test files.
+
+ - DeviceN and (stubbed) ICCBased color spaces. (pdf_draw.ps,
+ pdf_ops.ps)
+
+ - Additional extended graphics state parameters. (pdf_draw.ps)
+
+ - Number trees. (pdf_base.ps)
+
+ - Masked images. (pdf_draw.ps)
+
+Works around a bug in pdfTeX, which can generate Encoding vectors containing
+nulls. (pdf_font.ps)
+
+</pre><h3><a name="V5.24_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A needed #include of memory_.h was missing. (sdeparam.c)
+ - The needed input buffer size for the RunLengthEncode filter was
+128, but should be 129. (srle.c)
+ - The ASCII85Encode and ASCIIHexEncode filters sometimes didn't
+insert \n characters often enough. (sfilter2.c, sstring.c)
+ - In one obscure boundary case, the CCITTFaxEncode filter with K =
+-1 could emit an extra, incorrect code. (scfe.c)
+ - The CCITTFaxDecode filter didn't default DamagedRowsBeforeError to
+0. (scfx.h)
+
+Removes all remaining uses of _ds and _ss. (sfilter.h, sbcp.c, scfe.c,
+seexec.c, sfilter1.c, sstring.c)
+
+Removes the use of do_debug. (scfd.c)
+
+Removes all uses of far_data. (scf.h, scfdgen.c, scfdtab.c, scfetab.c,
+sjpegerr.c)
+
+Removes the save_count member of streams, which is now no longer needed.
+(stream.h)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(sbcp.c, sbhc.c, sbwbs.c, scfd.c, scfe.c, sdctc.c, sdctd.c, sdcte.c,
+seexec.c, sfilter1.c, sfilter2.c, sfxfd.c, sfxstdio.c, siscale.c, slzwc.c,
+slzwce.c, slzwd.c, smtf.c, spdiff.c, spngp.c, srld.c, srle.c, sstring.c,
+szlibc.c, szlibd.c, szlibe.c)
+
+Changes all groups of statistic-gathering variables to be structure
+variables named stats_*. (scfe.c)
+
+Rewrites the CCITTFaxEncode filter to cut down one particularly large and
+obnoxious macro, and to simplify the code by allocating an output buffer as
+well as an input buffer. (scf.h, scfdgen.c, scfe.c, scfetab.c)
+
+</pre><h3><a name="V5.24_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The masked image clipper sequenced through mask rows incorrectly.
+(gxclipm.c)
+ - gx_[c]path_init_local_shared were declared as returning void, but
+could actually return an error. (gxpath.h, gxcpath.c, gxpath.c)
+ - As always, gcc failed to report some static/non-static
+inconsistencies. However, to my dismay, I find that the ANSI C standard
+allows these, so I'll have to stop complaining about them. (gxclimag.c,
+gxclipm.c)
+ - As always, gcc failed to report some signed/unsigned char *
+mismatches. (gdevpdfi.c, gsparam.c)
+ - A loop counted on a non-existent zero value to mark the end of the
+IODevice table. (gsiodev.c)
+ - Some needed #includes of memory_.h were missing. (gdevddrw.c,
+gscolor2.c, gscrdp.c, gscspace.c, gxclipm.c, gximage3.c, gxshade4.c)
+ - Pattern device colors didn't have access to the original halftone
+phase, making it impossible to handle non-standard X/YStep correctly.
+(gsdcolor.h, gspcolor.c)
+ - Pattern filling disregarded the phase. THIS MAY UNDO A FIX MADE
+IN 5.02. WE NEED TO RE-TEST PATTERNS CAREFULLY. (gxp1fill.c)
+ - restore did some unnecessary gsaves. (gsstate.h, gsstate.c)
+ - The reference counting macros could read from an object after
+freeing it. (gsrefct.h)
+ - setgstate and currentgstate freed the view clipping path, which
+they shouldn't do. (gsstate.c)
+ - If no view clipping path was set, viewclippath returned the entire
+extent of the device, not the imageable area. (gxpath.h, gsdps.c, gspath.c)
+ - Assigning one stack-allocated path to another incorrectly wound up
+sharing their segments. (gxcpath.c, gxpath.c)
+ - dot_length_absolute was incorrectly declared as float rather than
+bool. (gxline.h)
+ - The test for varying-depth banded images was incorrect, causing
+varying-depth images to be treated as constant-depth. (This only affected
+ImageType 3 images.) (gxclimag.c)
+ - Failure to clamp Y values when processing banded images could
+cause crashes or invalid band list data. (gxclimag.c)
+ - The changes in gsparam.c introduced in 5.23 made the coercion of
+int arrays to float arrays fail. (gsparam.h, gsparam.c)
+ - Interpolated banded images could be transmitted incompletely,
+causing narrow stripes to be chopped out of their rendering. (gxclimag.c)
+ - FunctionType 0 functions with 32-bit samples didn't read their
+data correctly. (gsfunc0.c)
+ - Lattice-form Shadings with packed coordinates could crash or
+produce incorrect results. (gxshade.c)
+ - Lattice-form Shadings with packed coordinates always returned an
+error. (gxshade4.c)
+ - If the PaintProc of a Pattern or a Form, or a CharString
+procedure, or a similar callback copied the current graphics state with
+gstate or currentgstate, a dangling reference to the device could result.
+Fixing this required adding a reference count to devices: internally created
+devices initialize it to 0, externally visible devices initialize it to 1.
+THIS IS A DELICATE CHANGE AND WILL PROBABLY HAVE A BUG TAIL. (gsdevice.h,
+gxdevcli.h, gxdevice.h, gdevmem.c, gdevmrop.c, gdevnfwd.c, gschar.c,
+gsdevice.c, gsmemory.c, gspaint.c, gsstate.c, gxacpath.c, gxccman.c,
+gxclip.c, gxmclip.c, gxpcmap.c)
+ - The return_if_error macro referred to code rather than code_.
+(gserror.h)
+ - Non-monotonic halftones didn't allocate enough slots in the
+halftone cache. (gxht.c)
+ - setpagedevice with a 0-size page didn't fail. Fixing this
+required making the nullpage device provide explicit InputAttributes.
+(gdevnfwd.c)
+ - Halftone angles were often slightly off. (gshtscr.c)
+ - Banded fill_mask operations (used for characters) were sometimes
+broken. This bug was obviously introduced since 5.10; I'm surprised that it
+didn't have more serious effects. (gxclread.c)
+ - Partially transparent patterns didn't work with non-default
+RasterOp values. (gxp1fill.c)
+ - The default implementation of strip_copy_rop didn't handle color
+space conversion properly. (gdevmrop.c)
+ - Hint replacement could cause the initial moveto and final
+closepath of a Type 1 outline to differ, confusing the filling code.
+(gxhint3.c)
+ - Interpolated images were truncated at the bottom. (bug probably
+introduced in 5.23) (gxiscale.c)
+ - Using an unsigned type for the index passed to enum_ptrs
+procedures caused comparisons against signed values to be incorrect.
+(gsstruct.h)
+
+Rewrites the rectangle list and mask clipping algorithms to use callback
+procedures rather than macros. The rectangle list source code grew by 20%,
+but the compiled code shrank from 10K to less than 4K; the mask clip source
+code and compiled code both shrank. (gxclip.h, gxmclip.h, gxclip.c,
+gxclip2.c, gxclipm.c, gxcpath.c)
+
+Removes all remaining uses of _ds and _ss. (gsmemory.h, gsstruct.h, gzht.h,
+stdpre.h, gp_dosfb.c, gsbitops.c, gscie.c, gsht.c, gstype1.c, gstype2.c,
+gxclpath.c, gxclread.c, gxcmap.c, gxfill.c, gxi12bit.c, gxop1.h, gxpflat.c,
+gxstroke.c, gxtype1.c)
+
+Changes some GC procedures from explicit code to standard macros.
+(gsstruct.h, gscscie.c, gxcht.c)
+
+For easier debugging, changes gs_debug_c to a procedure; removes
+gs_if_debug_c and do_debug. (gdebug.h, gsht1.c, gsmisc.c, gspaint.c,
+gxcht.c, gxht.c, gxpcmap.c)
+
+Changes the num_components member of the color space structure to a
+procedure, which is needed because DeviceN color spaces have a variable
+number of components; also makes Pattern spaces return -1 - the correct
+num_components instead of -1. This is a NON-BACKWARD-COMPATIBLE CHANGE.
+Also adds a base_space procedure. (gxcspace.h, gscdevn.c, gscolor1.c,
+gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c, gscspace.c, gspcolor.c,
+gxiinit.c, gxiscale.c)
+
+Changes all groups of statistic-gathering variables to be structure
+variables named stats_*. (gxclip.c, gxclist.c, gxclpath.c, gxfill.c,
+gxifast.c)
+
+Starts to pull apart gs_makebitmap/pixmappattern to remove the dependency on
+masked images. (gspcolor.c)
+
+Splits the C heap allocator from generic allocator support. (gsmemory.c,
+gsmalloc.c)
+
+Removes all uses of far_data other than references to device (but not
+device2) prototypes. (gdevmem.h, gdevmrop.h, gxdevcli.h, gconf.c,
+gdevabuf.c, gdevht.c, gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c,
+gsbittab.c, gsflip.c, gsroptab.c, gxcht.c)
+
+Adds a streams member to gs_ref_memory_t. The library doesn't use this, but
+it greatly simplifies the interpreter's bookkeeping. (gsalloc.h, gxalloc.h,
+gsalloc.c)
+
+Adds some more opaque types to the graphics state structure, rather than
+using naked struct types. (gsccolor.h, gzstate.h)
+
+Introduces the notion of the "effective clip path" in a graphics state.
+Painting operators should now call gx_effective_clip_path rather than using
+the clip_path member directly. (gxpath.h, gschar.c, gsdps1.c, gsimage.c,
+gspaint.c, gspath.c, gxccache.c, gxpaint.c)
+
+Implements view clipping. (gzstate.h, gspath.c, gsstate.c)
+
+Starts to pare down the fit_* macros in gxdevice.h, since some people feel
+strongly they are hard to follow, and also adds BEGIN/END wrapping.
+(gxdevice.h, gdevabuf.c, gdevmem.c, gxclpath.c)
+
+Refactors the structure definition macros in anticipation of moving to a
+more table-driven approach. Replaces ENUM_CALL, ENUM_RETURN_CALL, and
+RELOC_CALL with ENUM_USING and RELOC_USING. (gsstruct.h, gdevmem.c,
+gshtscr.c, gxcpath.c, gxiinit.c)
+
+Sketches a table-driven rather than procedural representation for GC
+descriptors. We believe this will improve readability, reduce code size,
+and perhaps reduce cache thrashing during garbage collection. This requires
+a NON-BACKWARD-COMPATIBLE CHANGE to the enum_ptrs, reloc_ptrs, and
+clear_marks procedures (to add the structure descriptor as a parameter).
+This should not affect any ordinary clients, because they should already
+define these procedures using the macros in gsstruct.h, which *are*
+backward-compatible; however, they do affect two internal clients that use
+their own type tags with unions (color spaces and device colors).
+(gsstrtab.h, gsstruct.h, gsalloc.c, gsstrtab.c)
+
+Updates color spaces for the change in enum_ptrs and reloc_ptrs.
+(gxcspace.h, gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c,
+gscsepr.c, gscspace.c, gspcolor.c)
+
+Updates device colors for the change in enum_ptrs and reloc_ptrs.
+(gsdcolor.h, gxdcolor.h, gxpcolor.h, gspcolor.c, gxcht.c, gxcmap.c,
+gxdcolor.c, gxht.c, gxp1fill.c)
+
+Implements a hit detection device at the library level. (gserrors.h,
+gdevhit.c)
+
+Changes some configuration parameters from #defines to statics. (gschar.c)
+
+Changes "simple" structures so they no longer have 0 for the enum_ptrs or
+reloc_ptrs procedure. This is a NON-BACKWARD-COMPATIBLE CHANGE for
+structure-definers that don't use the macros in gsstruct.h (of which there
+shouldn't be any). (gsstruct.h, gsalloc.c)
+
+Adds the structure type name to the debugging printout for freeing objects.
+(gsalloc.c)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(gxclread.c)
+
+Removes all uses of 'near' from the library: if short and long calls have
+different formats, we rely on the compiler to generate the most efficient
+one. (gscie.c, gscoord.c, gsimpath.c, gsstate.c, gstype2.c, gxclpath.c,
+gxclread.c, gxfill.c, gxhint1.c, gxhint2.c, gxhint3.c, gxstroke.c)
+
+Adds 'inline' to stdpre.h, defined as the empty string on compilers other
+than the ones we know accept it. (stdpre.h)
+
+Adds printout of the subrectangle to ImageType 1 tracing. (gxiinit.c)
+
+Replaces a few uses of gs_memory_default with dev-&gt;memory. (gdevdbit.c,
+gxclread.c)
+
+Improves support for halftone objects not associated with graphics states.
+This involves a minor change to the definitions of gs_spot_halftone and
+gs_threshold_halftone, to define the transfer function as a closure. This
+is slightly NON-BACKWARD-COMPATIBLE in that it requires clients to set
+transfer_closure.proc to 0 if they also set transfer to 0. NOTE: the API
+defined in gshtx.h is subject to future change. (gscsepnm.h, gshtx.h,
+gxdht.h, gxfmap.h, gxht.h, gxtmap.h, gscolor.c, gsht.c, gsht1.c, gshtx.c)
+
+Changes the Bezier approximation of arcs to cut arcs at absolute multiples
+of 90 degrees rather than at intervals of 90 degrees (e.g., an arc from 45
+to 105 would now be cut at 90 rather than being treated as a single
+60-degree curve) in order to produce more uniform output and also to ensure
+that the bounding box for arcs is more accurate (to pacify the Genoa FTS).
+(gxfarith.h, gsmisc.c, gspath1.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(gsbitops.h, gsdsrc.h, gserror.h, gsmdebug.h, gsrect.h, gxcldev.h, gxfunc.h,
+gxop1.h, gxtype1.h, gsalphac.c, gsshade.c, gstype2.c, gstype42.c,
+gxclread.c, gxcpath.c, gximage4.c, gxpath.c)
+
+Adds a user-defined halftone type, to support non-monotonic halftones. We
+could make any of the following structures fully object-oriented:
+ - Halftones (client level)
+ - Halftone orders (device level, but not rendered)
+ - Device halftones (device level, fully rendered)
+The right place to do this for non-monotonic halftones, which are specified
+directly by bit masks, is at the device halftone level. However, there are
+too many places that know too much about the implementation of device
+halftones and halftone orders right now. WE NEED TO REVISIT THIS AFTER THE
+5.1x CODE BRANCH IS TERMINATED. SHOULD ALSO CONVERT UNION TO TYPED UNION
+FOR GC -- CODE IS DUPLICATED IN gsht.c VS gshtx.c. (gxdht.h, gxht.h,
+gxhttype.h, gshtx.h, gsht.c, gsht1.c, gshtx.c)
+
+Moves the procedures in Type 1 font data into a structure. This is a
+NON-BACKWARD-COMPATIBLE CHANGE, but an internal one. (gxfont1.h, gstype1.c,
+gstype2.c, gxtype1.c)
+
+Extends Type 1 / 2 / 4 fonts to require that they be able to enumerate the
+set of glyphs that they define, to allow writing them out. We may propagate
+this to all base fonts in the future. (gxfont1.h)
+
+Provides some utilities for devices that want to define their own
+InputAttributes and OutputAttributes. (gdevprn.h, gxdevice.h, gdevprn.c,
+gsdparam.c)
+
+Removes all of the text-display procedures that took null-terminated C
+strings as operands. This is NON-BACKWARD-COMPATIBLE. However, since the
+memory manager required that all such operands be allocated using
+gs_alloc_string, the procedures were never usable with arbitrary C strings
+anyway. (gschar.h, gschar.c)
+
+Renames the gx_device procedure record from std_procs to procs, in
+anticipation of more unified support for "objects". This is a
+NON-BACKWARD-COMPATIBLE CHANGE for a surprisingly large number of clients
+that should have been using dev_proc and set_dev_proc. (gdevbbox.h,
+gxdevcli.h, gxdevice.h, gdevdflt.c, gdevdgbr.c, gdevmem.c, gdevprn.c,
+gsalphac.c, gsdevice.c, gsropc.c, gxccache.c, gxifast.c)
+
+Disallows setting of the RasterOp-related graphics state parameters when
+a cache device is active. (gsrop.c)
+
+Changes the tracing printout of path segments to provide enough accuracy to
+cover all the fraction bits of a 'fixed'. (gxpath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.23"></a>Version 5.23 (limited) (5/14/98)</h2>
+
+<p>
+This fileset adds a number of PostScript LanguageLevel 3 features: library
+support for ImageType 3 and 4 (masked) images, PostScript-level support for
+ImageType 4, and the shfill operator for smooth shading. It also adds RCS
+Id lines to all the files we maintain. It also changes the Unix makefiles
+so that they create debugging or profiling binaries in separate directories.
+
+<p>
+This fileset includes an unusually large number of non-backward-compatible
+API changes. Most of them don't affect ordinary library clients, but a few
+do. These changes, and a few more to come, result from the next (large)
+increment in our ongoing project to make the code completely re-entrant (no
+non-idempotent writable globals in our own code). This necessarily involves
+putting some things that used to be global into structures, some of which
+must be added to some interfaces.
+
+<p>
+NOTE: because of a combination of hardware problems, time pressure, and
+belated discovery of sloppiness by the original developers of the PC
+makefiles, none of the PC makefiles in this fileset work. The Borland
+makefiles probably come the closest.
+
+<h3><a name="V5.23_Documentation"></a>Documentation</h3><pre>
+
+Adds documentation for:
+ - The changes in begin_image and related facilities. (drivers.txt)
+ - The addition of -Z/. (use.txt)
+ - The new ps2ps utility. (ps2ps.1)
+ - The new get_hardware_params procedure. (drivers.txt)
+ - The new -B&lt;size&gt; / -B- switch. (use.txt).
+
+Improves the documentation for the sample_ macros. (gsbitops.h)
+
+Adds some documentation on how the debugging/tracing flags work. (gdebug.h)
+
+Improves the documentation of DDAs. (gxdda.h)
+
+Documents a subtle change in the meaning of a flag in the PDF
+FontDescriptor. (pdf_font.ps)
+
+Changes the location of the authoritative site for zlib sources. (zlib.mak)
+
+Corrects a typo. (gsht1.h)
+
+Removes pdf_2ps.ps from the fileset. (psfiles.txt)
+
+Adds standard file name comments to all .c and .h files that didn't already
+have them. (dodebug.h, gdev3b1.c, gdev8510.c, gdevadmp.c, gdevhl7x.c,
+gdevimgn.c, gdevo182.c, gdevpdfx.h, gdevpe.c gdevsco.c, gdevsj48.c,
+gdevvglb.c, gsalpha.c, gscolor1.c, gscsepr.h, gsdsc.c, scfetab.c string_.h,
+zfunc3.c, zmedia2.c)
+
+Unifies the nroff styles of the various man pages a bit. (*.1)
+
+Adds a reference to the CTAN mirror sites. (new-user.txt)
+
+Notes that the result of rect_intersect may be anomalous. (gsrect.h)
+
+Improves the documentation for the Distiller parameter handling code.
+(gdevpdfp.c, gdevpsdp.c)
+
+Corrects an ambiguity in the definition of the int_keys argument of
+param_begin_xmit_dict. (gsparam.h)
+
+Adds a new file that will evolve into a reasonable guide to the source code.
+(README, source.txt)
+
+Adds the convention for 'status' and 'code' to the C style guide.
+(c-style.txt)
+
+Improves the documentation for the '-' pseudo-switch. (use.txt)
+
+Updates the problem reporting form to include the URL for known post-release
+problems. (bug-form.txt)
+
+Documents the availability of sources and binaries for Plan 9.
+(new-user.txt)
+
+</pre><h3><a name="V5.23_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The 'tags' target in the Unix makefiles had an incorrect directory
+name. (bug probably introduced since 5.20) (unix-end.mak)
+ - The ld_tr and CCFLAGS macros were used in the makefiles before
+they were defined, causing problems with `make' implementations that
+substitute macros into definitions at definition time rather than at use
+time. (*.mak)
+ - Recent Digital Unix versions (4.0 and later) require -std1 when
+compiling. (make.txt)
+ - The Unix library-only makefile had gotten out of date.
+(ugcclib.mak)
+ - pf2afm[.bat] were omitted from the fileset. (master/package.tcl)
+ - The Borland makefile didn't work, because the Borland compiler
+requires specifying the output file name (-o) before the input file name
+(-c)! This required changing the order of every compilation command in
+every platform-independent makefile. The win*.mak files still need work.
+(*.mak)
+ - None of the non-Unix makefiles specified directory names for the
+auxiliary programs. (dvx-tail.mak, os2.mak, wctail.mak, winlib.mak)
+ - The Windows makefiles lacked build rules for gp_ntfs and gp_win32.
+(msvclib.mak, winlib.mak)
+
+Adds a new debugging switch -Z/ that prints the file name and line number on
+all trace messages. (gdebug.h, std.h)
+
+Changes the Unix 'pg' and 'debug' build targets so that they create the
+binaries in a 'pgobj' or 'debugobj' subdirectory of the standard build
+directory. This allows keeping all 3 configurations active. (unix-end.mak)
+
+Adds GEN directories for jpeg, libpng, and zlib. (devs.mak, gs.mak,
+jpeg.mak, lib.mak, libpng.mak, zlib.mak)
+
+Adds a gendev.c that will eventually replace genconf.c. (gendev.c, *.mak)
+
+Adds -Wcast-align to the gcc compilation switches. (unix-gcc.mak)
+
+Adds support for libpng 1.0.1. (libpng.mak)
+
+Notes the use of -R on Solaris and other SVR4 systems. (unix*.mak)
+
+Removes pdf_2ps.ps from the fileset. (int.mak, unixinst.mak,
+pdf_2ps.ps[deleted])
+
+Ensures that every file that is copyright, maintained, and distributed by
+Aladdin Enterprises has a RCS Id line. In .c and .h files, these lines
+currently are only comments, but they could be converted easily to static
+strings later if we want to. We had to touch almost every file in the
+fileset to do this, but we did *not* change the write dates. (*)
+
+Makes the build procedure auto-detect whether the installed version of gcc
+has the 'const' code generation bug. (gs.mak, lib.mak, unix-gcc.mak)
+
+Removes 'makefile' as a precondition for ccf32.tr. (I can't quite figure
+out why it was there in the first place.) (msvccom.mak)
+
+Replaces the -F&lt;file&gt; switch with a -B&lt;buffer size&gt; switch that forces all
+files to use the run_string interfaces. -B- turns it off. (iminst.h,
+imainarg.c)
+
+Adds a new resource to genconf.c, -replace &lt;module&gt;. This causes &lt;module&gt;
+*not* to be included if the module with the -replace resource *is* included.
+If two modules -replace each other, either directly or indirectly through
+-includes, the result is undefined. (genconf.c)
+
+Uses -replace to implement a default roplib package. (lib.mak)
+
+</pre><h3><a name="V5.23_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - unprot.ps stopped working because of the stricter prohibition
+against storing local-VM objects into systemdict. (unprot.ps)
+
+Adds a new ps2ps utility, like pdf2ps, that "distills" PostScript.
+(ps2ps, ps2ps.bat)
+
+Modifies the ps2epsi utility so it can be run outside the ps2epsi script for
+testing. (ps2epsi.ps)
+
+Changes the pdf2ps utility to use the pswrite device. This gets rid of all
+conversion problems, at the expense of larger and stupider output files.
+(pdf2ps, pdf2ps.bat)
+
+</pre><h3><a name="V5.23_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Two procedures were declared 'private' inconsistently (thank you
+again, gcc). (gdevps.c)
+ - The author of the uniprint driver sent a fix for an
+allocation-related bug and an off-by-one bug. (gdevupd.c)
+ - The PDF writer incorrectly converted open stroked rectangles (only
+3 sides drawn) to closed (4 sides drawn). (gxpath.h, gzpath.h, gdevpdfd.c,
+gxpath2.c)
+ - When banding, filling a character within the PaintProc of a
+Pattern could produce memory access errors. (The problem was in
+gx_forward_fill_mask, which might affect filling characters in other
+situations as well.) (gdevnfwd.c)
+ - The [e]pswrite driver produced incorrect line widths for stroked
+graphics. (gdevps.c)
+ - The [e]pswrite driver didn't invoke colorimage correctly, so
+didn't handle Patterns right. (gdevps.c)
+ - Vector devices didn't set the color before writing trapezoids,
+possibly causing incorrectly colored output. (gdevvec.c)
+ - Vector devices could give errors on Pattern fills. (gdevvec.c)
+ - The bbox device retained a pointer to the clipping path, which,
+since the path was embedded in the gs_state_contents, confused the garbage
+collector, causing memory access errors. We fixed this by de-embedding the
+path object: see below. (gsstate.c)
+ - On some GNU/Linux systems, the X driver could get a memory access
+error when displaying patterns. We fixed this by adding calls on XInitImage
+in the necessary places when running X11R6. (gdevx.c)
+ - PDF output didn't check names for unusual characters, and could
+produce invalid output if the input included names with those characters.
+(gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfo.c)
+ - In the PDF writer, DEST pdfmarks with /Dest but no /Page or /View
+didn't generate named destinations. (gdevpdfm.c)
+ - Printer devices didn't allow . in %-formats in the output file
+name. (gdevprn.c)
+ - The x11cmyk driver didn't read bits back from the screen
+correctly. (gdevxalt.c)
+ - The pcxmono and pcxgray drivers used colored rather than
+gray-scale palettes. (gdevpcx.c)
+ - The PCX drivers could emit repetition counts greater than 15,
+confusing some readers. (gdevpcx.c)
+
+Removes some vestiges of the obsolete draw_line driver procedure. We also
+rename the draw_line member of the driver procedure structure as
+obsolete_draw_line, so that any uses of it will cause compilation errors,
+but we don't remove it from the structure, so that existing driver procedure
+vectors will continue to compile (although the draw_line procedure will
+never be called). (gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevdflt.c)
+
+To repair a design error, and at the same time add flexibility needed for
+ImageType 3:
+
+ - Removes the image_data and end_image driver procedures,
+associating them with the gx_image_enum(_common)_t structure instead.
+Clients should call gx_device_image_data and gx_device_end_image instead: we
+set the image_data and end_image procedures in the device structures to
+these procedures when filling in defaulted procedures. This is a
+NON-BACKWARD-COMPATIBLE CHANGE for drivers that implement begin_image, since
+they now have to fill the procedures into the enumerator structure.
+(gsiparm*.h, gxdevcli.h, gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
+gdevdflt.c, gdevnfwd.c, gsimage.c, gxclist.c, gxidata.c, gxifast.c,
+gxiinit.c, gximage3.c, gximage4.c)
+
+ - Replaces the image_data driver procedure with a plane_data
+procedure (now associated with the image enumerator, not the device) that
+allows specifying the X offset and raster independently for each plane, and
+(depending on the image type) may allow omitting some planes. We provide a
+gx_device_image_plane_data procedure parallel to _image_data and _end_image
+(see above). (gsiparm*.h, gxdevcli.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
+gxidata.c, gxiinit.c, gximage3.c, gximage4.c)
+
+Updates clients for image processing changes. (gdevvec.h, gdevpdf.c,
+gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
+
+Enhances [e]pswrite to detect other kinds of opportunities for producing
+smaller output. This involves a change in the moveto procedure in the
+'vector' interface. (gdevps.c)
+
+Changes the bbox device so that it automatically detects whether it is being
+used as a component in a device pipeline or as a free-standing device,
+rather than having to select this in the makefile. (lib.mak, gdevbbox.h,
+gdevbbox.c)
+
+Moves the halftoning driver a bit closer to real usability. (gdevht.h,
+gdevht.c)
+
+Adds some tracing to the color mapping code in the X driver. (gdevx.c)
+
+Implements setting the Dict and ACSDict parameters for pswrite and pdfwrite.
+Dict is effective with the CCITTFaxEncode filter for black-and-white images;
+otherwise, these parameters still don't do anything. (gdevpdfi.c,
+gdevpsdp.c) ****** READING HUFFMAN TABLES IS NYI, SEE sdcparam.c; SETTING
+DOESN'T WORK BECAUSE DCT_set_defaults DOESN'T DO WHAT IT SHOULD ******
+
+Updates the PS/PDF writers to reflect the fact that the ASCIIHexEncode
+filter now has a state. (gdevpsdf.c)
+
+Modifies the X driver so that it can draw multiple platform characters at a
+time rather than one character per call. (gdevx.h, gdevx.c, gdevxxf.c)
+
+Takes advantage of the filter stream procedures now available in stream.c.
+(gdevjpeg.c, gdevpdf.c, gdevpsdf.c)
+
+Adds a get_hardware_params procedure, similar to get_params except that it
+reads parameters whose values depend on hardware state that may change
+without program intervention (e.g., panel switches). The default is that
+there are no hardware parameters. (gdevmem.h, gdevprn.h, gsdevice.h,
+gxdevcli.h, gxdevice.h, gxacpath.c, gxclip2.c, gxclipm.c, gxclist.c,
+gxcpath.c, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
+gdevprn.c, gsdparam.c)
+
+Updates the PS/PDF writer for the change in the parameter list API.
+(gdevpsdf.c)
+
+Makes a few more writable statics const. (gdevos2p.c, gdevpipe.c,
+gdevpsim.c, gdevx.c)
+
+Removes the rrgb sample device, since it now no longer serves any purpose.
+(gdevrrgb.c[deleted])
+
+Converts some additional devices to -dev2, to make them const. (devs.mak,
+gdevbit.c, gdevpbm.c, gdevpcx.c, gdevpsim.c, gdevpng.c, gdevtfax.c,
+gdevtfnx.c, gdevx.c, gdevxalt.c)
+
+Updates a client accessing the preallocated color spaces. (gdevpsdi.c)
+
+Renames the debugging-related statics in the X driver as X_SOMETHING.
+(gdevx.c)
+
+</pre><h3><a name="V5.23_Platforms"></a>Platforms</h3><pre>
+
+Makes a few minor changes to support Plan 9. (make.txt, devs.mak, stat_.h,
+stdio_.h, time_.h, gdevpbm.c)
+
+</pre><h3><a name="V5.23_Fonts"></a>Fonts</h3><pre>
+
+Documents the availability of a free Chinese font. (fonts.txt,
+new-user.txt)
+
+Works around a bug in the Adobe PostScript driver. We though it just output
+the FontBBox for Type 42 fonts in the 2048- or 4096-unit character space
+rather than a 1-unit space, but in fact it outputs garbage. (zfont42.c,
+gstype42.c)
+
+Augments the handling of Type 42 fonts to recognize the gdir /
+GlyphDirectory method of outline definition in addition to the loca / glyf
+method, per Adobe versions 2015 and later (undocumented!). (ifont.h,
+zfont42.c)
+
+</pre><h3><a name="V5.23_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Memory management for argument strings was wrong. (gsargs.h,
+gsargs.c)
+ - 1 .setlanguagelevel was broken, because it didn't allow for the
+possibility that values could get deleted from systemdict that existed in
+level2dict. (bug introduced in 5.x, x &lt;= 10) (zmisc2.c)
+ - -dFAKEFONTS was broken. (gs_fonts.ps, gs_init.ps)
+ - copyscanlines was broken. (bug introduced in 5.20) (gs_init.ps)
+ - The matrix returned by sizeimage was incorrect. (zdpnext.c)
+ - The implementation of .buildpattern for PatternType 2 was wrong.
+(gs_ll3.ps)
+ - Ghostscript couldn't load TrueType fonts where the amount of data
+either before or after the glyf section exceeds 64K. (gs_ttf.ps) ****** WE
+BACKED OUT THIS CHANGE, BECAUSE WE HAD TO BACK OUT THE NEXT ONE. ******
+ - Ghostscript couldn't load TrueType fonts where the total data is
+more than 64K and the offset or length of the glyfs is odd. (gs_ttf.ps)
+****** WE BACKED OUT THIS CHANGE: IT BROKE THE PDF INTERPRETER, BECAUSE IT
+IMPOSES A NEW REQUIREMENT THAT TTF FILES BE POSITIONABLE. ******
+ - Some compilers complained about arithmetic on enums. (interp.c)
+ - The CIE color space and CRD GC structure definitions were in the
+interpreter rather than the library. (zcie.c, zcrd.c)
+ - NullFont was still present in FontDirectory when currentglobal was
+false. (gs_init.ps)
+ - execform failed with Form resources, because it tried to insert
+the Implementation in a read-only dictionary. (gs_fform.ps, gs_lev2.ps)
+
+Finishes implementing ImageType 4 images, and moves closer to implementing
+ImageType 3. (iimage.h, zdps.c, zimage.c, zimage2.c, zimage3.c)
+
+Updates tracing output to use the new dlprintf macros. (idict.c, igc.c,
+igcref.c, igcstr.c, iname.c, interp.c, isave.c, iscan.c, zcie.c, zcontext.c)
+
+Implements multiproc=true for readimage. (gs_dpnxt.ps)
+
+Does a bit more work on implementing shading with PatternType 2.
+(gs_ll3.ps, zfunc.c, zshade.c)
+
+Adds a .bitadd operator for adding integers modulo the word size.
+(zarith.c)
+
+Updates filter operators to use the new stream parameter facility.
+(iparam.h, iparam.c, zfdecode.c, zfdctc.c[deleted], zfdctd.c, zfdcte.c)
+
+Updates the implementation of parameter lists for the change from _dict to
+_collection. (iparam.c, iparam.h)
+
+Takes advantage of the filter stream procedures now available in stream.c.
+(zfilter.c)
+
+Adds get_hardware_params to one device procedure vector. (zupath.c)
+
+Adds .gethardwareparams to parallel .getdeviceparams. (zdevice.c)
+
+Updates the interpreter's parameter list machinery to match the change in
+gsparam.h. (iparam.h, iparam.c)
+
+Makes more writable statics const. (gs_init.ps, btoken.h, dstack.h, iref.h,
+opextern.h, icontext.c, idict.c, igc.c, igcref.c, iinit.c, imainarg.c,
+interp.c, iscanbin.c, iutil.c, zbseq.c, zcie.c, zcontrol.c, zdevcal.c,
+zdevice2.c, zdps.c, zdps1.c, zfont2.c, zgeneric.c, zgstate.c, ziodev.c,
+ziodev2.c, ztype.c)
+
+Removes an inappropriate reference to PROGRAM_NAME. (imainarg.c)
+
+Removes set/currentrenderalgorithm, since they are useless for the purpose
+for which they were intended. (zrop.c)
+
+Uncomments code for CIEBasedDEF[G] color spaces, even though these aren't
+fully implemented yet. (zcie.c)
+
+Reimplements StartJobPassword and SystemParamsPassword as no-access strings
+in systemdict. (gs_lev2.ps, iutil2.h, iutil2.c, ziodev2.c, zusparam.c)
+
+Splits off the context state record from icontext.h, so that places that
+only need access to state variables don't need to import the
+procedures. (icontext.h, icstate.h)
+
+Updates a client for the change in gs_malloc_limit. (imainarg.c)
+
+Updates clients for the change in the accessors for predefined color spaces.
+(zcolor1.c, zimage.c, zimage2.c)
+
+Renames the (few) debugging-related statics as I_SOMETHING. (igc.c)
+
+Splits off idstack.h (API for dictionary stacks) from dstack.h (API for the
+interpreter's dictionary stack), and idstack.c (dictionary stack
+implementation) from idict.c (dictionary implementation). We should have
+done this a long time ago! (dstack.h, idictdef.h, idstack.h, idict.c,
+idstack.c, iinit.c, ireclaim.c)
+
+Folds the cached currentfile pointer into the exec-stack structure.
+(estack.h, interp.c)
+
+Changes clients of gs_register_*_root to eliminate statically allocated
+roots. (iinit.c, iname.c, interp.c, zbseq.c, zcontext.c, zfile.c, zfont.c,
+zfont2.c, zgstate.c, ziodev.c)
+
+Adds a ref_free_stack procedure, and reformats the implementation of stacks.
+(istack.h, interp.c, istack.c)
+
+</pre><h3><a name="V5.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Pattern colors sometimes caused errors. (gs_pdf.ps)
+ - A file ending with %%EOF without an EOL caused an error.
+(pdf_main.ps)
+ - Fl wasn't recognized as an abbreviation for FlateDecode in in-line
+images. (pdf_draw.ps)
+
+Removes all code related to converting PDF to PS: it never worked reliably,
+and we now support this function with the pswrite device instead.
+(gs_pdf.ps =&gt; pdf_ops.ps, pdf*.ps)
+
+</pre><h3><a name="V5.23_Streams"></a>Streams</h3><pre>
+
+Updates tracing output to use the new dlprintf macros. (shc.h, scfd.c,
+scfe.c, shcgen.c)
+
+Provides the ability to read and set stream initial parameters to/from a
+parameter list. This is currently needed only by the PDF/PS writers and the
+filter operator, so it is implemented in modules separate from the stream
+implementation per se, but it might be useful for other clients too.
+(scommon.h, scfparam.c, sdcparam.c, sdct*.c, sdeparam.c, sddparam.c,
+gdevpsfp.c[deleted])
+
+Changes the ASCII85Encode filter so it never produces two %% at the
+beginning of a line, which could mislead document managers or spoolers.
+(sfilter2.c)
+
+Changes the ASCIIHexEncode filter so it always produces lines of exactly 64
+characters, except for the last one. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, because this filter now needs a state structure, which it didn't
+before. (sstring.h, sstring.c)
+
+Moves filter_{read,write}_procs to stream.c, changing the names to
+s_filter_{read,write}_procs. (stream.h, stream.c)
+
+Makes creation of JPEG filters set default values for parameters that are
+outside the IJG library (Picky and Relax). (sdct.h, sjpegd.c, sjpege.c)
+
+</pre><h3><a name="V5.23_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An error in dda_step_add could theoretically produce anomalies in
+images (although we don't think we've ever seen any). (gxdda.h)
+ - A boundary error in dda_state_next/previous/advance could
+theoretically produce anomalies in images by allowing R = 0 (although we
+don't think we've ever seen any). (gxdda.h)
+ - A rounding error in computing the size of portrait images could
+produce a spurious 1-pixel-wide line at the edge of the image. (gxifast.c)
+ - When banding, images with singular or nearly singular CTM or
+ImageMatrix could confuse things badly enough to cause memory access errors.
+(gxclimag.c)
+ - Patterns were broken. (bug introduced in 5.21) (gxclip2.c)
+ - Because some image processing code retained a pointer to the
+clipping path, which was embedded inside the gs_state_contents object,
+garbage collection could cause crashes. (The only case where we know this
+happened was the bounding box device, since we think all other image
+enumerators preconstruct a clipping device, which does not retain a pointer
+to the clipping path, rather than constructing one from the path on the
+fly.) We fixed this by replacing gs_state_contents with individual objects:
+see below.
+ - The *_.h files didn't have double-inclusion protection. (*_.h)
+ - ImageType 2 images were broken by the change in begin_typed_image.
+(gximage2.c)
+ - Color-setting operators that "substitute the nearest legal value"
+didn't substitute it in storage, only when using it. E.g., after
+gs_setgray(pgs, 2.0), gs_currentgray(pgs) returned 2.0 rather than 1.0.
+This bug has been there since release 1.0! (gxcspace.h, gscie.c, gscolor.c,
+gscolor1.c, gscolor2.c, gscdevn.c, gscsepr.c, gscpixel.c, gspcolor.c)
+ - The RasterOp implementation for 2-bit, 4-bit, and non-gray 8-bit
+devices didn't work. (gdevmrop.c)
+ - The test of whether to use copy_mono, fill_mask, or general
+imaging for rendering characters sometimes used copy_mono when not
+appropriate. (gxccache.c)
+ - The default implementation of fill_mask produced solid rectangles,
+rather than properly masked output, if the logical operation didn't use its
+source operand. (gdevdbit.c)
+ - Some more files needed double inclusion protection. (gscie.h)
+ - Checking for interrupts before a return always returned 0 rather
+than the correct return code if there was no interrupt. (gsmisc.c)
+ - Characters within Pattern PaintProcs sometimes didn't get drawn.
+(gxpcmap.c)
+ - The CIE color space and CRD GC structure definitions were in the
+interpreter rather than the library. (gscie.h, gscie.c)
+ - Numeric overflows when setting up the character cache caused
+errors rather than simply disabling caching for that character. (gschar.c)
+ - FORCE_STRIP_HALFTONES was accidentally left set to 1 (in 5.10!),
+slowing down all uses of monobit halftones. (gshtscr.c)
+
+Implements mask clipping, which is needed for ImageType 3 images.
+(gxclip2.h, gxclipm.h, gxmclip.h, gxclip2.c, gxclipm.c, gxmclip.c)
+
+Finishes implementing ImageType 3 and 4 images. (gsimage.h, gsiparam.h,
+gsimage.c, gsiparm3.h, gximage3.c, gximage4.c)
+
+Starts to update the banding code to handle ImageType 3 and 4 images.
+(gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxiinit.c)
+
+Make eprintf_program_name, lprintf_file_{and_line,only}, and new
+dlprintf_file_{and_line,only} always be procedures, rather than sometimes
+macros and sometimes procedures. (std.h, gdebug.h, gsmisc.c)
+
+Adds new dlprintf, dlputc, and dlputs macros that are like
+dprintf/dputc/dputs but also print the source file name and line number at
+the beginning of the line if the -Z/ debugging switch is set. The if_debug*
+macros now use dlprintf rather than dprintf; many other places also needed
+changing. Note that if any place was overlooked, no great harm is done:
+printout produced there simply won't include the source file and line number
+even if -Z/ is set. (std.h, gdebug.h, gsmisc.c; gdevbbox.c, gdevdbit.c,
+gdevdgbr.c, gdevmrop.c, gdevrun.c, gdevsvga.c, gdevx.c, gp_unifs.c,
+gsalloc.c, gschar.c, gscoord.c, gsfont.c, gshsb.c, gsht.c, gshtscr.c,
+gsmemory.c, gspath.c, gstype1.c, gstype2.c, gxacpath.c, gxccache.c,
+gxclimag.c, gxclist.c, gxclpath.c, gxclread.c, gxcpath.c, gxfill.c,
+gxidata.c, gxpath.c, gxpcopy.c, gxpflat.c, gxstroke.c)
+
+Simplifies storage management for graphics states by replacing
+gs_state_contents with individual objects. This slows down gsave and
+grestore a bit, but eliminates a class of potential obscure bugs.
+(gxpath.h, gzstate.h, gsstate.c, gxcpath.c, gxpath.c)
+
+Adds some more information to the deubgging printout for paths. (gxpath.c)
+
+Modifies the library test program to test ImageType 3 and 4 images.
+(ugcclib.mak, gslib.c)
+
+Extends the @-file parser to be more shell-like:
+
+ - The sequence \ &lt;newline&gt; is ignored everywhere.
+
+ - If a # appears as the first character on a line outside quotes,
+ the entire line (including the terminating newline) is ignored.
+
+(gsargs.h, gsargs.c)
+
+Changes a stem hint tracing message so that it will print with the correct
+line number. (gxhint2.c)
+
+Moves the 'format' information for images to the image parameter structure.
+This entails a NON-BACKWARD-COMPATIBLE CHANGE in the begin_typed_image
+driver procedure (which was not guaranteed stable). (gsiparam.h,
+gxdevcli.h, gsimage.c, gxiinit.c)
+
+Adds an optional matrix argument to begin_typed_image, overriding the CTM in
+the imager state if present. This is needed to make masks and masked images
+line up precisely; this too is a NON-BACKWARD-COMPATIBLE CHANGE.
+(gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevnfwd.c, gdevx.c, gxclimag.c,
+gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
+
+Adds a procedure for testing monotonicity of Functions over a given range.
+(gsfunc.h, gsfunc0.c, gsfunc3.c)
+
+Implements smooth shading with shfill. All documented ShadingTypes (1-7)
+are implemented. (gscspace.h, gsdsrc.h, gspath.h, gsshade.h, gxshade.h,
+gxshade4.h, gscolor.c, gscolor3.c, gsdsrc.c, gsfunc0.c, gsfunc3.c,
+gspath1.c, gsshade.c, gxshade.c, gxshade1.c, gxshade4.c, gxshade6.c)
+
+Changes the TrueType rasterizer to remove the assumption that the entire
+loca table is stored contiguously. This may not have any practical effect,
+since currently Type 42 fonts never split the loca table across segments.
+(gstype42.c)
+
+Adds a new interface for creating CIE CRDs that provides the parameters as
+separate arguments. (gscrd.h, gscrd.c)
+
+Starts to add the ability for a device to provide one or more default CIE
+CRDs as (read-only) device parameters. (Not ready for use yet.) (gscie.h,
+gscrdp.h, gscie.c, gscrdp.c)
+
+Adds a multiple-bit-per-pixel analogue of gs_makebitmappattern,
+gs_makepixmappattern, for use by another Aladdin project. (lib.mak,
+gsbitmap.h, gsptype1.h, gxbitmap.h, gspcolor.c)
+
+Changes the API of param_begin_write_dict so that the client can request the
+creation of an array rather than a dictionary. This is a
+NON-BACKWARD-COMPATIBLE CHANGE for implementors (of which there are only
+2.5), but not for clients. (gsparam.h, gsparam.c)
+
+Adds dynamically typed data to the parameter list interface, and removes the
+statically typed procedures. This isn't important for any standard facility
+yet. This too is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
+parameter lists. (gsparam.h, gsparams.h, gsparam.c, gsparams.c)
+
+Adds a new platform-specific API for thread creation and synchronization,
+and a memory manager "wrapper" that monitor-locks each call. No code
+normally included in this fileset uses any of this machinery as yet. (gp.h,
+gpsync.h, gxsync.h, gsmemlok.h, gsmemlok.c, gxsync.c)
+
+Splits off (PatternType 1) Pattern filling into a separate file, since the
+file was getting too big; refactors the filling code to use procedures
+rather than macros. (gxp1fill.h, gspcolor.c, gxp1fill.c)
+
+Makes a few more writable statics const. (gscie.h, gscscie.c, gsdll.c,
+gsmemory.c, gsmisc.c, gstype1.c, gstype2.c, gxclpath.c)
+
+Adds a compile-time option, SYSTEM_CONSTANTS_ARE_WRITABLE, to choose whether
+the system configuration values (buildtime, copyright, product, revision,
+revisiondate, serialnumber) are const or not. By default they are now
+const: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE (affecting only one user).
+(lib.mak, openvms.mak, os2.mak, unix-end.mak, wctail.mak, winlib.mak,
+gscdefs.h, gscdef.c)
+
+Removes the dependence of std.h on PROGRAM_NAME. (std.h, gsdll.c, gsmisc.c,
+gscdef.c)
+
+Adds a new member of the color space type structure, the size of the
+smallest color space structure that will hold a color space of the given
+type. Also removes the obsolete _ds modifier. (gscspace.h, gxcspace.h,
+gscdevn.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscpixel.c,
+gscsepr.c, gspcolor.c, gxiinit.c)
+
+Removes set/currentrenderalgorithm, since they are useless for the purpose
+for which they were intended. (gsrop.h, gsropt.h, gdevmrop.c, gsrop.c)
+
+Splits off gscspace.c from gscolor.c, and gscscie.c from gscie.c. (gscie.c,
+gscolor.c, gscscie.c, gscspace.c)
+
+Adds constructor and accessor procedures for color spaces. (gscie.h,
+gscolor2.h, gscsepr.h, gscspace.h, gsptype1.h, gxcolor2.h, gxcspace.h,
+gscolor.c, gscolor2.c, gscscie.c, gscsepr.c, gscspace.c, gslib.c,
+gspcolor.c)
+
+Changes the CIEBased color space structures slightly to allow implementation
+of the CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
+
+Changes gs_malloc_limit from a static to a member of the allocator
+structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for clients that
+declared this variable as an extern. (gsmalloc.h, gsmemory.c)
+
+In order to eliminate some statics, changes the static color space accessors
+(gs_color_space_Device*) so they require a const gx_imager_state as
+parameter, and changes their names as well to avoid confusion. This is a
+NON-BACKWARD-COMPATIBLE CHANGE not only in these accessors, but also in
+gs_image_t_init_{gray,color}. This is very unfortunate, but we see no way
+to avoid it. (gscspace.h, gsiparam.h, gxistate.h, gscolor1.c, gscscie.c,
+gscspace.c, gsimage.c, gspcolor.c, gsstate.c, gxclread.c, gxiinit.c,
+gximage2.c, gximage3.c, gximage4.c)
+
+Unifies the handling of const for the IODevice table. (gscdefs.h,
+gxiodev.h, gconf.c, gsiodev.c)
+
+Changes the register_root memory manager call so that a NULL as the pointer
+to the root structure asks the memory manager to allocate the root structure
+itself. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
+memory manager API (of which there are only 3). (gsmemory.h, gsstruct.h,
+gsalloc.c, gsmemory.c)
+
+Adds a new GC structure type, suffix_add0_local, which is a more efficient
+form of suffix_add0 that can be used when the supertype is defined in the
+same file as the subtype. (gsbitmap.h, gscie.h, gsshade.h, gsstruct.h)
+
+Uses the new package replacement facility in the makefile to make RasterOp
+optional without tinkering with statics at runtime. (lib.mak, gxdevice.h,
+gxdevrop.h, gdevdbit.c, gdevdflt.c, gdevmrop.c, gdevnfwd.c, gsnorop.c,
+gsropc.c)
+
+Makes RasterOp really optional. (gdevmrop.h, gsrop.h, gdevmrop.c, gsrop.c,
+gxiinit.c)
+
+Rewrites bits_fill_rectangle to get rid of nearly all the macros.
+(gxbitops.h, gsbitops.c)
+
+Removes the obsolete _ds from gs_log_error. (gserror.h, gsmisc.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.22"></a>Version 5.22 (limited) (2/19/98)</h2>
+
+<p>
+This fileset has a few more bug fixes, a major overhaul of memory management
+for paths so that we can do view clipping in a reasonable way, and the
+ability to build executables in a different directory from the sources.
+
+<h3><a name="V5.22_Documentation"></a>Documentation</h3><pre>
+
+Designates gv as the preferred VMS and Unix previewer. (new-user.txt,
+use.txt)
+
+Adds a pointer to post-release documentation. (README)
+
+Notes that compilation with certain platforms and compilers must turn off
+optimization. (make.txt)
+
+Improves the documentation of the fit_fill and fit_copy macros.
+(gxdevice.h)
+
+</pre><h3><a name="V5.22_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The ccgs script for non-ANSI compilers was no longer flexible
+enough to handle all the possible command lines. (ccgs)
+ - The pdfwrite device was missing on the DesqView/X platform.
+(dvx-gcc.mak)
+ - The System V build procedure was broken. (unixtail.mak)
+ - A Watcom makefile lacked parentheses around a macro name.
+(wctail.mak)
+ - Some `make' programs drop trailing spaces in macro definitions: we
+didn't work around this. (os2.mak, unixhead.mak, winlib.mak)
+
+Adds support for WCVERSION=11.0 in the Watcom makefiles. (watc.mak,
+wccommon.mak)
+
+Adds a shell script for removing the 'includes' from makefiles, since a very
+few Unix systems don't support this capability. (catmake)
+
+Changes -dNOPROMPT to -dNOPAGEPROMPT, and adds -dNOPROMPT to suppress both
+the end-of-page prompt and the executive prompt. (use.txt, gs_init.ps)
+
+Adds definitions of {GL,PS}{SRC,GEN,OBJ}DIR to the top-level makefiles,
+removing these definitions from gs.mak. (*.mak, gs.mak)
+
+Adds explicit directories to more makefile rules. We can now do builds with
+source, GL/PS generated files, and GL/PS object files in 5 different
+directories! (*.mak, gsjconf.h)
+
+</pre><h3><a name="V5.22_Utilities"></a>Utilities</h3><pre>
+
+Adds a user-contributed utility that runs dvips followed by ps2pdf.
+(dvipdf, unixinst.mak)
+
+</pre><h3><a name="V5.22_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A pointer was incorrectly declared const. (gdevpdfm.c)
+ - pdfwrite handled the Title element of ARTICLE pdfmarks
+incorrectly. (gdevpdfm.c)
+ - pdfwrite inserted a Dest element in Link annotations even if an A
+(Action) key was present. (gdevpdfm.c)
+ - pdfwrite didn't recognize and convert /Article actions in
+pdfmarks. (gdevpdfm.c)
+
+Replaces some open-coded accesses to path structure elements with macros, in
+anticipation of a representation change. (gdevpdfd.c)
+
+Moves pdfwrite further towards supporting Dict and ACSDict Distiller
+parameters. (gdevpsdf.h, gdevpsdp.c, gdevpsfp.c)
+
+Updates a few places for the change in the path API. (gdevpdfd.c,
+gdevvec.c)
+
+Adds recognition of named object references to the PDF writer, fixing many
+bugs in the named object code in the process. (gdevpdfx.h, gdevpdfm.c,
+gdevpdfo.c)
+
+Enhances pswrite to skip fills or strokes of completely empty paths, to
+recognize horizontal and vertical lines, and to abbreviate color settings
+based on 8-bit fractions. This requires a NON-BACKWARD-COMPATIBLE CHANGE in
+the "vector" device interface (which was, however, clearly identified as
+subject to change without notice). (gdevpsdf.h, gdevvec.h, gdevps.c,
+gdevpsdf.c, gdevpx.c, gdevvec.c)
+
+</pre><h3><a name="V5.22_Interpreter"></a>Interpreter</h3><pre>
+
+Updates a few places for the change in the path API. (zupath.c)
+
+Implements %statementedit properly. (iscan.h, iscan.c, ziodev.c)
+
+Changes the initialization code so that if DELAYBIND is set, .forcedef and
+.forceput remain accessible until .bindnow is called. (gs_init.ps)
+
+</pre><h3><a name="V5.22_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - An empty Differences array, which Acrobat Distiller 3.02 can emit,
+caused a rangecheck error. (pdf_font.ps)
+
+</pre><h3><a name="V5.22_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The alternative LZWEncode filter didn't emit a reset code as the
+first code, and waited one code too long to emit a reset. (slzwce.c)
+
+Adds some double-inclusion protection. (scfx.h)
+
+</pre><h3><a name="V5.22_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was an (incorrect) assignment to a read-only structure
+member. (gximage2.c)
+ - A formal parameter list was incorrect if __PROTOTYPES__ wasn't
+defined. (gsroptab.c)
+ - Some images didn't get clipped properly when banding. This was a
+fix for 5.03 that somehow didn't make it into 5.10. (gxclimag.c)
+ - When banding, dashed lines could cause an invalid memory access.
+This was apparently caused by an error in a fix made in 5.04. (gsline.c)
+ - Images with non-zero data_x could cause an invalid memory access.
+(gxiinit.c, gxidata.c)
+ - The band list rasterizer didn't initialize the image structure
+properly, causing control to go to a random address. (gxclread.c)
+
+Replaces some open-coded accesses to path structure elements with macros, in
+anticipation of a representation change. (gxpath.h, gzpath.h, gspath1.c,
+gxfill.c, gxpath2.c, gxstroke.c)
+
+Changes the path and clipping path structures so that segments and clipping
+lists are stored in separate, reference-counted structures. This finally
+supports reliable freeing of path segments and clipping lists even in the
+presence of off-stack gstates, and the ability to store the original
+segments of a clipping path, both of which we have wanted for a long time.
+Unfortunately, it requires SIGNIFICANT NON-BACKWARD-COMPATIBLE CHANGES TO
+THE API FOR PATHS:
+ Paths:
+ - adds gx_path_alloc_contained;
+ - gx_path_init =&gt; gx_path_init_local (or nothing);
+ - gx_path_reset =&gt; gx_path_new;
+ - removes gx_path_share and gx_path_release;
+ - gx_path_assign =&gt; gx_path_assign_{preserve,release};
+ - renames gx_path_expand_dashes =&gt; gx_path_add_dash_expansion,
+ gx_path_flatten[_accurate] =&gt; gx_path_add_flattened[_accurate],
+ gx_path_monotonize =&gt; gx_path_add_monotonized;
+ - removes the init Boolean from gx_path_copy[_reversed].
+ Clipping paths:
+ - gx_cpath_init =&gt; gx_cpath_init_local (or nothing);
+ - removes gx_cpath_share and gx_cpath_release_segments;
+ - gx_cpath_path =&gt; gx_cpath_to_path;
+ - removes the mem argument from gx_cpath_from_rectangle.
+We believe that we either renamed or changed the argument list of every API
+function that was affected in a non-backward-compatible way, so incompatible
+clients will get either compilation or linking errors. (gxpath.h,
+gzcpath.h, gzpath.h, gschar.c, gsdps.c, gsdps1.c, gspaint.c, gspath.c,
+gspath1.c, gsstate.c, gxacpath.c, gxccache.c, gxclpath.c, gxclread.c,
+gxcpath.c, gxfill.c, gxpath.c, gxpath2.c, gxpcmap.c, gxpcopy.c, gxpdash.c,
+gxstroke.c)
+
+Reimplements view clipping bookkeeping to use reference-counted paths.
+(gzstate.h, gsdps.c, gsstate.c)
+
+Adds const in a couple more places. (gxpath2.c)
+
+If -Z? is enabled, makes the reference counting machinery check for
+reference counts going negative. (gsrefct.h)
+
+Adds the first bit of code for rendering smooth shadings. The code is
+nowhere near usable. (gsshade.h, gxshade.h, gsshade.c, gxshade.c)
+
+Adds BEGIN ... END macros for creating compound statements that are
+syntactically equivalent to single statements. (stdpre.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.21"></a>Version 5.21 (limited) (1/19/98)</h2>
+
+<p>
+This is primarily a bug fix fileset for 5.20, with a little new
+functionality (pdfwrite image downsampling and more complete pdfmark
+processing).
+
+<h3><a name="V5.21_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The build procedures still referred to tar_cat. (make.txt)
+
+Documents some user-developed patches for using certain kinds of Japanese
+fonts with Ghostscript. (new-user.txt)
+
+Notes that on Solaris 2.x systems, it is probably not a good idea to use
+Sun's fonts. (use.txt)
+
+Documents -dSTRICT. (use.txt)
+
+</pre><h3><a name="V5.21_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The definitions of MAKEFILE in several makefiles was incorrect.
+(dvx-gcc.mak, unix-cc.mak, unixansi.mak)
+ - The build rules for the gp_*.$(OBJ) files lacked a directory name,
+confusing most 'make' programs. (*.mak)
+ - geninit didn't work, because the syntax of psfile_() entries in
+gconfig.h had changed. (geninit.c)
+ - Some files were created and then deleted during building,
+preventing [gnu]make -j from working. (lib.mak, int.mak)
+
+Adds an explicit directory name to more files in the makefiles. (jpeg.mak,
+lib.mak) Added in this fileset:
+ .$(OBJ): jpeg.mak, {dvx-tail,msvclib,openvms,os2,ugcclib,unixtail,
+ watc,watclib,winint,winlib}.mak
+ .dev: jpeg.mak
+
+Removes the default suppression of 'const' with gcc. You must now compile
+with gcc 2.7.2.1 or newer, or patch the makefile. (ugcclib.mak,
+unix-gcc.mak)
+
+Removes -DPNG_USE_CONST from the command line for compiling libpng, since
+this has never actually worked, and is handled in a different way starting
+with libpng 0.97. (gs.mak)
+
+Adds a -dSTRICT switch that disables some Ghostscript extensions, to be more
+helpful in debugging applications that produce output for Adobe and other
+RIPs. (gs_init.ps, gs_statd.ps)
+
+</pre><h3><a name="V5.21_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Many occurrences of 'const' were missing or incorrect.
+(gdevpdfd.c, gdevpdfi.c, gdevpdfo.c, gdevpdft.c)
+ - pdfmark processing was broken by changes introduced in 5.20.
+(gs_pdfwr.ps)
+ - pdfwrite didn't convert /Color =&gt; /C or /Title =&gt; /T in ANN and
+LNK pdfmarks. (gdevpdfm.c)
+ - pdfwrite didn't convert /Dest =&gt; /D or /File =&gt; /F in the Action
+dictionary of ANN and LNK pdfmarks. (gdevpdfm.c)
+ - pdfwrite didn't convert a /Launch annotation to an Action with a
+dictionary. (gdevpdfm.c)
+ - pdfwrite didn't convert \n in annotation Contents strings to \r.
+(gdevpdfm.c)
+ - jstrm.state was used before being set. (gdevjpeg.c)
+ - The SVGA devices were not identified as page devices.
+(gdevsvga.c)
+ - The SPARCPrinter driver returned the address of a local buffer
+containing an error string. (gdevsppr.c)
+ - pdfwrite no longer compressed character bitmaps. (bug introduced
+in 5.20) (gdevpdfi.c)
+ - pdfwrite didn't recognize _objdef syntax everywhere. (gdevpdfx.h,
+gdevpdfm.c, gdevpdfo.c)
+ - pdfwrite didn't recognize and convert Launch and GoToR OUT
+pdfmarks. (gdevpdfm.c)
+ - pdfwrite used a /Dest key rather than a /P key for the page number
+in articles. (gdevpdfx.h, gdevpdfm.c)
+ - pdfwrite didn't save and write the /I dictionary for articles.
+(gdevpdfx.h, gsstruct.h, gdevpdf.c, gdevpdfm.c)
+
+Implements a parameter list "reader" that prints the parameter values on a
+stream in PS/PDF syntax. (We need something like this for printing filter
+parameters.) (gdevpsdf.h, gdevpdf.c, gdevpsdf.c)
+
+Implements a write stream that just keeps track of the position. We use
+this to determine how much space to allocate for data we're going to save.
+(gdevpsdf.h, gdevpsdf.c)
+
+Implements image downsampling, but not anti-aliasing, for the PDF writer.
+(gdevpsdf.h, gdevpsds.h, gdevpsdi.c, gdevpsds.c)
+
+</pre><h3><a name="V5.21_Fonts"></a>Fonts</h3><pre>
+
+Adds Frutiger to the built-in list of sans-serif fonts. (gs_fonts.ps)
+
+</pre><h3><a name="V5.21_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Many occurrences of 'const' were missing. (gsargs.c, ialloc.c,
+zdpnext.c, zfunc3.c, zshade.c)
+ - Some byte * =&gt; char * casts were missing. (imainarg.c)
+ - The stack limit check in .eqproc was wrong. (zmisc3.c)
+ - The paper sizes a4small and lettersmall weren't implemented.
+(gs_statd.ps)
+ - setuserparams signalled errors on 64-bit systems. (zusparam.c)
+
+Changes .image2 to track the change in the library. (zdps.c)
+
+Some improvements were made to the (still not entirely functional) Type 32
+font code. (zchar32.c)
+
+Updates some filters to use the new procedure for transmitting collections
+of parameters. (zfdecode.c)
+
+Adds ISO paper sizes C0 through C6. (gs_statd.ps)
+
+Trims down the list of #includes in iconf.c. (iconf.c)
+
+</pre><h3><a name="V5.21_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - CalGray color spaces with a Gamma value caused an error.
+(gs_pdf.ps)
+
+</pre><h3><a name="V5.21_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was a 'const' conflict in the code for handling ImageType 2
+images. Fixing this properly required a small change in the ImageType 2
+structure. (gsiparm2.h, gximage2.c)
+ - Many occurrences of 'const' were missing. (gsfunc3.h, gstrap.h,
+gxgetbit.h, gdevdgbr.c, gstrap.c, gxclist.c, gxclread.c)
+ - A couple of enumerations had trailing commas. (gsshade.h,
+gxbitfmt.h)
+ - The gcst parameter was omitted in the non-ANSI version of the
+ENUM_PTRS_BEGIN_PROC macro. (gsstruct.h)
+ - gcc missed a private / non-private discrepancy. (gxpcmap.c)
+ - An uninitialized variable was used by mistake
+(copy_params.options). (gdevdgbr.c)
+ - The last statement of a procedure was unreachable. (gxclpath.c)
+ - If a Type 2 font was transformed so that hints were not being
+used, hintmask and cntrmask didn't compute the number of following bytes
+correctly. (gxtype1.h, gstype2.c, gxtype1.c)
+
+Factors out some common code in gxclip2.c into macros. (gxclip2.c)
+
+Starts to reimplement RasterOp using the compositing framework. (gsropc.h,
+gxropc.h, gsropc.c) ****** IN PROGRESS ******
+
+Adds an equality-testing procedure for device colors. This is used both for
+color images (which previously did this adhoc) and for RasterOp compositing.
+(gxdcolor.h, gximage.h, gxcht.c, gxdcolor.c, gxht.c, gspcolor.c)
+
+Implements hintmask (but not cntrmask) for Type 2 CharString fonts. I don't
+know any reasonable way to test whether it's working, though. (gxtype1.h,
+gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
+
+Adds a more convenient interface for reading and setting sets of parameters.
+(gsparam.h, gsparam.c)
+
+Pulls the decision as to whether to halftone for a given device out into a
+macro. Eventually we will do something more sophisticated about this.
+(gxdevice.h, gxclist.c, gxcmap.c)
+
+Breaks apart a macro in anticipation of future usage. (gsrefct.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.20"></a>Version 5.20 (limited) (1/8/98)</h2>
+
+<p>
+This fileset provides enough of the Display PostScript capabilities to start
+running real programs. It also adds the first few LanguageLevel 3 features
+(none of which have been tested) and reorganizes the makefile structure
+somewhat. There are many internal changes since 5.10, some of them still in
+progress, so we expect more problems than usual.
+
+<p>
+This fileset is being provided for testing in two different configurations:
+a full release, and a DPS-only package. The latter will be released with
+the GPL when it is reasonably complete and reliable.
+
+<h3><a name="V5.20_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - TrueType fonts on GS_FONTPATH weren't recognized. (use.txt)
+ - The argument list for gstate was incorrect. (zdevice2.c)
+ - There were a couple of minor errors in the e-stack documentation.
+(estack.h)
+ - fonts.txt had several errors regarding compiled fonts.
+(fonts.txt)
+ - An out-of-date Aladdin address still appeared in documentation.
+(new-user.txt)
+
+Updates make.txt to reflect the changes in makefile structure. (make.txt)
+
+Notes the addition of -Z' and -Z". (use.txt)
+
+Documents the new begin_typed_image, get_bits_rectangle,
+map_color_rgb_alpha, and create_compositor driver procedures. (drivers.txt)
+
+Moves documentation for all releases before 5.0 to history4.txt. (NEWS,
+history4.txt)
+
+Documents the addition of SHARE_JPEGLIB. (make.txt)
+
+Removes the author's name and e-mail address from the ps2ascii man page, at
+his request. (ps2ascii.1)
+
+Documents the addition of (some) image compression facilities to ps2pdf /
+pdfwrite. (ps2pdf.txt)
+
+Documents the new -dNOINTERPOLATE and -F&lt;n&gt; switches. (use.txt)
+
+Adds documentation for a user-contributed port to the SMS/QDOS operating
+system. (new-user.txt)
+
+Removes documentation for BGI, which is no longer supported. (use.txt)
+
+Documents the use of the Registry and the GS_DLL environment variable on
+Windows platforms. (install.txt)
+
+</pre><h3><a name="V5.20_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The OpenVMS makefile referred to EXTEND_NAME rather than
+EXTEND_NAMES. (openvms.mak)
+ - A typo caused a spurious error message from lpr. (unix-lpr.sh)
+ - The PDF writer didn't include a needed dependency on zlib
+compression. (devs.mak)
+ - The rule for the OS/2 printer device was wrong. (devs.mak)
+ - The -migrate switch was incorrectly removed from the command line
+for pre-4.0 Digital Unix. (make.txt)
+ - The -r switch was ignored with -dNODISPLAY. (gs_init.ps)
+
+Adds targets for Type 32 fonts (type32.dev) and PostScript LanguageLevel 3
+(psl3.dev, psl3core.dev, psl3read.dev). (gs.mak, int.mak, lib.mak)
+
+Changes the documented feature names for PostScript Level 1 and 2
+interpreters from level1/2 to psl1/2. The old names are still recognized
+for backward compatibility. (gs.mak, int.mak, *.mak)
+
+Removes support for building with DCL under VMS. Building under VMS now
+requires some version of make, preferably GNU make. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, but there was plenty of lead time for users
+(it was announced in 5.01, 6/22/97). (vms*.mak[deleted])
+
+Starts to add an explicit directory name to every file in the makefiles, to
+allow building multiple object versions (e.g., debug, profile, product) or
+cross-building for multiple platforms in separate directories without any
+makefile editing. (*.mak) Done so far:
+(done) _h= devs.mak gs.mak int.mak jpeg.mak lib.mak
+(done) .h devs.mak gs.mak int.mak lib.mak zlib.mak
+ openvms.mak os2.mak ugcclib.mak unix-end.mak
+ unixtail.mak wctail.mak winint.mak winlib.mak
+ .$(OBJ): devs.mak int.mak (except ccfonts)
+ lib.mak (except special compilations)
+ libpng.mak zlib.mak
+ .dev: libpng.mak zlib.mak
+
+Gets rid of tar_cat. Building on Unix platforms now requires that make
+recognize the include directive. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE:
+rather than editing the *head.mak files, users should now edit the unix*.mak
+or dvx*.mak files (which they previously were instructed NOT to do). Aside
+from this, we think the change won't actually affect anyone, since most Unix
+make programs (include GNU make) do recognize this directive. (*.mak,
+ansihead.mak[deleted], cc-head.mak[deleted], gcc-head.mak[deleted],
+dgc-head.mak[deleted], tar_*cat[deleted], dvx-gcc.mak, unixansi.mak,
+unix-cc.mak, unix-gcc.mak)
+
+Includes the basic context machinery in every PostScript interpreter
+configuration. (int.mak)
+
+Removes the division between 'low-level' and 'high-level' band list
+facilities: we once thought we might make the latter optional, but this no
+longer seems useful. (lib.mak)
+
+Introduces a new category of devices, identified to genconf as -dev2 and
+created with SETDEV2 and SETPDEV2. For the moment, these are the same as
+existing devices except that their static instance is const, but we plan to
+make them quite different in the future: don't attempt to create any.
+(devs.mak, gs.mak, genconf.c, gconf.c)
+
+Removes the obsolete -includef resource from genconf. (genconf.c)
+
+Removes support for IJG JPEG library v5* from the makefile, since we no
+longer support these library versions. (jpeg.mak, lib.mak,
+gsjerror.h[deleted], gsjpglib.h[deleted], gsjerror.c[deleted])
+
+Makes the JPEG library use floating point if it is fast. (gsjmorec.h)
+
+Adds a SHARE_JPEG option to the makefiles, with the necessary warning about
+possible incompatibilities. (*.mak)
+
+Replaces the CCC macro in the makefiles with CC_, the various CC* macros
+with CC_* (except for CCA2K and CCAUX), and the O macro with O_; removes the
+'begin' target and the CCBEGIN macro. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, required for the new arrangement of files into directories. (*.mak)
+
+Replaces all occurrences of -Idir1 -Idir2 ... -Idirn in platform-generic
+makefiles with $(I_)dir1 $(II)dir2 ... $(_I)dirn, and defines these macros
+in platform-specific makefiles, in order to accommodate OpenVMS command
+syntax. (*.mak)
+
+Adds -fno-common to the default gcc compilation and linking switches, to
+improve checking for doubly-defined externs. (unix-gcc.mak)
+
+Adds a -dNOINTERPOLATE switch to turn off image interpolation. (gs_init.ps)
+
+Adds a -F&lt;file&gt; switch that runs files through the run_string interface with
+an 1-byte buffer. (imainarg.c)
+
+Allows specifying the name of the gconfig.h file with -DGCONFIG_H= in the
+compilation command line, to support certain multi-configuration build
+procedures. (int.mak, lib.mak, gconf.h, gconf.c, gscdef.c, iconf.c)
+
+Splits off the installation targets from unix-end.mak. (unix-end.mak,
+unixinst.mak, unix*.mak, ugcclib.mak)
+
+</pre><h3><a name="V5.20_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - A case label was misplaced. (No effect on normal operation.)
+(genconf.c)
+ - ps2ascii had some Encoding-related problems, and a serious bug
+causing the stack to grow indefinitely. (ps2ascii.ps)
+
+Adds a new font2pcl.ps utility, for converting outline fonts to bitmapped
+PCL fonts. (font2pcl.ps)
+
+At the request of a user, modifies ansi2knr to read stdin if no input file
+is supplied, and to accept an optional --filename switch to set the file
+name in the #line directive. Also makes ansi2knr write the usage message on
+stderr rather than stdout. (ansi2knr.c)
+
+Adds a user-contributed Perl script that fixes compatibility problems
+between MS Word output and Ghostview 1.5. (fixmswrd.pl)
+
+Adds a new test file that produces some pretty color output. (vasarely.ps,
+unix-end.mak)
+
+Adds a user-contributed utility for producing AFM files from PFA/PFB and
+optionally PFM files. (pf2afm.bat, pf2afm.ps)
+
+</pre><h3><a name="V5.20_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some 'static' declarations were missing (gcc lossage). (gdevht.c,
+gdevmgr.c, gdevpcfb.c, gdevrrgb.c)
+ - Some 'char *' should have been 'unsigned char *'. (gdevccr.c)
+ - The PDF writer represented non-rectangular clipping paths in a way
+that could cause Acrobat to produce incorrect output. (The fix relies on
+the new clipping path enumeration facility.) (gdevpdfd.c)
+ - get_params for the X device didn't read the WINDOWID and
+.IsPageDevice parameters. (gdevx.c)
+ - A superseded driver was still in the distribution.
+(gdevnp6.c[deleted])
+ - The PDF writer's default parameters didn't quite match the default
+parameters of Adobe Acrobat(TM). (gdevpsdf.h)
+ - A cast from const byte * to const char * was omitted.
+(gdevpdft.c)
+ - x_map_color_rgb returned incorrect values for values in the dither
+cube/ramp. (gdevx.c)
+
+Adds user-contributed drivers for:
+ - the Brother HL 720/730 laser printer (gdevhl7x.c);
+ - the Cirrus Logic CL-GD54xx SuperVGA chipset (in gdevsvga.c).
+
+Adds stubs or dummy implementations for the new Acrobat Distiller 3.0
+pdfmark features (BP/EP/SP, _objdef/OBJ, PUT/PUTINTERVAL/CLOSE). Features
+not yet implemented:
+ - Predefining Catalog and DocInfo.
+ - Writing out added Catalog and Info keys.
+ - Special handling for Page#, Prev/This/NextPage.
+ - Writing out added keys in Page objects.
+ - Defining objects for ANN, DEST, LNK, PS.
+ - Writing out added keys for ANN, BP, DEST, LNK, PS.
+ - Adding information to streams (PUT, CLOSE).
+ - Writing out streams.
+(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c)
+
+Removes the DoThumbnails distiller parameter, which Acrobat Distiller 3.0 no
+longer supports. (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data, as in the interpreter (see below); specifically, makes
+all device and xfont procedure structures const in devices that Aladdin
+maintains. Note that this involves a NON-BACKWARD-COMPATIBLE CHANGE in the
+get_xfont_procs device procedure (to add const to the return type); this
+only affects the 3 implementations of xfonts. (gdevprn.h, gdevdjet.c,
+gdevm1.c, gdevpccm.c, gdevpdf.c, gdevpdfm.c, gdevpdft.c, gdevps.c,
+gdevpsdf.c, gdevpx.c; gxdevice.h, gxxfont.h, gdevbgi.c, gdevbit.c,
+gdevbmp.c, gdevdflt.c, gdevdjet.c, gdevlj56.c, gdevmiff.c, gdevmsxf.c,
+gdevnfwd.c, gdevpbm.c, gdevpcfb.c, gdevpdf.c, gdevpng.c, gdevprn.c,
+gdevps.c, gdevpx.c, gdevs3ga.c, gdevsvga.c, gdevtfax.c, gdevtfnx.c,
+gdevvglb.c, gdevwddb.c, gdevwdib.c, gdevwpr2.c, gdevwprn.c, gdevx.c,
+gdevxalt.c, gdevxxf.c, gxccman.c)
+
+Makes the statically allocated device templates const in some devices, using
+the new -dev2 device resource type. NOTE: the meaning of -dev2 is subject
+to change without notice in future releases. (gdevdjet.c, gdevpdf.c,
+gdevps.c, gdevpx.c, gdevvglb.c)
+
+Adds a new begin_typed_image driver procedure which is called for all types
+of images, not just ImageType 1. The default implementation calls
+begin_image if the ImageType is 1. (gdevmem.h, gdevprn.h, gsiparam.h,
+gxdevice.h, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
+gxacpath.c, gxclimag.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c)
+
+Adds a new get_bits_rectangle driver procedure which allows reading back an
+arbitrary rectangle of bits from the device, not just a single full scan
+line. The default implementation calls get_bits, being careful to avoid a
+recursion loop; the default implementation of get_bits calls
+get_bits_rectangle similarly. This procedure has a lot of flexibility,
+almost all of which is ultimately provided by the implementation in memory
+devices. (gdevmem.h, gsbitops.h, gxcindex.h, gxdevice.h, gdevbbox.c,
+gdevdflt.c, gdevdgbr.c, gdevht.c, gdevm*.c, gdevmem.c, gdevmpla.c,
+gdevnfwd.c, gxbitfmt.h, gxclip2.c, gxclist.c, gxclread.c, gxcpath.c,
+gxgetbit.h)
+
+Removes support for the BGI (Borland Graphics Interface) device, since we no
+longer support the Borland compilers for MS-DOS. (devs.mak, dvx-head.mak,
+openvms.mak, unixhead.mak, gdevbgi.c[deleted])
+
+Speeds up x_map_color_rgb by avoiding server access in most cases.
+(gdevx.h, gdevx.c, gdevxini.c)
+
+Implements get_bits_rectangle in the X driver in place of get_bits.
+(gdevx.c, gdevxalt.c)
+
+Implements begin_typed_image for ImageType 2 images in the X driver, as an
+example of how a driver can implement this function itself. (gdevx.c)
+
+Adds a call on the DCTEncode set_defaults procedure, which is now required
+(see under Streams below). (gdevjpeg.c)
+
+Implements a substantial part of the Distiller image compression machinery.
+See ps2pdf.txt for details. (gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c,
+gdevps.c, gdevpsdf.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
+
+Adds a map_color_rgb_alpha driver procedure, complementing
+map_rgb_alpha_color. (gdevmem.h, gdevprn.h, gxdevice.h,
+gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c, gdevprn.c,
+gxclip2.c, gxclist.c, gxcmap.c, gxcpath.c)
+
+Splits off gxdevcli.h (client definitions) from gxdevice.h, which had gotten
+very large. This doesn't do much good yet in terms of reducing dependencies
+and compilation time, because every client still includes gxdevice.h, but
+it's the raw material for doing so in the future. (gxdevcli.h, gxdevice.h)
+
+Adds alpha tracking to the command list. (gxclpath.h, gxclimag.c,
+gxclpath.c, gxclread.c)
+
+Changes the 'show' pseudo-parameter for the PDF writer so that it takes
+multiple additional parameters instead of a dictionary. This greatly
+reduces garbage collection overhead. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c,
+gdevpdft.c)
+
+Adds a create_compositor driver call for handling compositing. (gdevbbox.h,
+gdevmem.h, gdevprn.h, gsdevice.h, gxdevcli.h, gxdevice.h, gdevbbox.c,
+gdevdflt.c, gdevht.c, gdevnfwd.c, gsdevice.c, gxclimag.c, gxclip2.c,
+gxclist.c, gxcpath.c, gxpcmap.c)
+
+Updates drivers to account for the more careful handling of file name
+length. (gdevpdfx.h, gdevwprn.c)
+
+Adds a user-contributed enhancement to make the Epson dot matrix driver work
+at 180x60dpi and 240x180dpi for 24 pin printers. (gdevepsn.c)
+
+</pre><h3><a name="V5.20_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows platform didn't put stdin into binary mode.
+(dwmainc.cpp)
+
+Removes all remaining uses of gs_malloc and gs_free in platform-specific
+code. (gp_dosfb.c, gp_vms.c)
+
+Adds a platform-specific gp_getenv call, to allow the Windows implementation
+to consult the Registry. (gp.h, gpgetenv.h, gp_getnv.c, gp_wgetv.c, *.mak,
+gp_win32.c)
+
+Separates out the declaration of popen and pclose, which may be declared
+correctly in stdio.h, incorrectly in stdio.h, or not at all, depending on
+the platform. (lib.mak, unixtail.mak, pipe_.h, gdevpipe.c, gp_os2.c,
+gp_os9.c, gp_unix.c)
+
+Tweaks the platform-workaround header file conditionals a little more.
+(malloc_.h, memory_.h).
+
+Makes the Windows DLL check the GS_DLL environment/registry variable for the
+location of the DLL. (dwdll.cpp)
+
+Defines the maximum length for the file name returned by
+gp_open_scratch_file, and possibly by gp_open_printer. (gp.h, gp_*.c)
+
+</pre><h3><a name="V5.20_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - A 'flush' was missing from a debugging message. (gs_fonts.ps)
+ - Type 2 fonts didn't always have a PaintType entry. (gs_cff.ps)
+ - CIDFontType 0 fonts were broken, probably because of a recently
+added validity test in the C code. (gs_cidfn.ps)
+ - Font types without an Encoding caused an error (in .completefont).
+(gs_fonts.ps)
+ - composefont required the elements of the font array to be actual
+fonts, rather than allowing font names. (gs_cidfn.ps)
+ - composefont required that all elements of the font array have
+CIDSystemInfo dictionaries. (Adobe has said that their interpreters don't
+check for this in some cases, but it's a bug. Unfortunately, by now it's an
+established one.) (zfcmap.c)
+
+Adds .dir to the list of file suffixes known not to be fonts. (gs_fonts.ps)
+
+</pre><h3><a name="V5.20_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A Type 2 font that provided fewer CharStrings than charset
+elements caused an error. (gs_cff.ps)
+ - If a context was joined before it terminated, its stack was never
+copied to the joining context. (zcontext.c)
+ - Freeing a context didn't free most of its substructures.
+(icontext.h, istack.h, icontext.c, interp.c, istack.c, zcontext.c)
+ - save and restore didn't save and restore the user parameters.
+(gs_lev2.ps, zvmem2.c)
+ - %stdin and %stdout weren't defined per-context. (files.h,
+icontext.h, icontext.c, ziodev.c)
+ - Switching contexts didn't clean up the stacks. (The current way
+we do this is very inefficient: we should use a special null for filling the
+untouched area, so we can use it to detect the high water mark.)
+(icontext.c)
+ - A cast from const to non-const was missing. (zdpnext.c)
+ - User parameters weren't managed per-context. (The current way we
+do this is inefficient.) (gs_dps.ps, gs_init.ps, gs_lev2.ps, isave.h,
+icontext.c, iinit.c, isave.c, zcontext.c, zusparam.c)
+ - Some operand checks weren't wrapped in do { ... } while(0),
+possibly leading to incorrect parsing of 'if's. (opcheck.h)
+ - If a context terminated with unmatched saves, the restores weren't
+executed. (isave.h, isave.c, zcontext.c)
+ - If two or more contexts shared the same global VM, the outermost
+restore (which in this case saves only local VM) checked for invalidrestore
+incorrectly. (isave.c)
+ - resourceforall didn't remove its own temporary values from the
+operand stack when calling the procedure. (gs_res.ps)
+ - resourceforall returned local instances even when currentglobal
+was true. (gs_res.ps)
+ - If a context had unmatched saves, other contexts sharing the same
+local VM weren't blocked from running. (zcontext.c)
+ - The NeXT compositing operations (Copy, etc.) weren't defined in
+systemdict. (gs_dpnxt.ps)
+ - In the case of a stack overflow, some garbage could get left on
+the stack. (istack.c)
+ - Stack overflow was reported prematurely -- typically when the
+stack depth had reached half the specified limit. (istack.c)
+ - Freed ref arrays weren't filled with nulls, which could confuse
+the garbage collector later. (ialloc.c)
+ - Certain stack overflow conditions could put a stack into an
+anomalous state that confused the garbage collector. (istack.c)
+ - The maximum stack size could not be set to a value smaller than
+the current allocated space, but the minimum value should be the number of
+entries actually in use. (istack.c)
+ - If .buildfont* had to add any elements to the font dictionary, a
+temporary pointer to the Encoding, FDepVector, or sfnts could become
+invalid, causing crashes or confusion. (zfont0.c, zfont2.c, zfont42.c)
+
+Changes exit, stop, and .stop so that if there is no matching dynamically
+enclosing context (loop or stopped), the effect is a quit, like the Adobe
+interpreters, and not an invalidexit. (zcontrol.c)
+
+Adds support for ImageTypes other than 1. (gs_init.ps, gs_lev2.ps,
+gs_res.ps, zimage2.c)
+
+Adds support for LanguageLevel 3 features:
+ - Idiom recognition in 'bind'. (gs_init.ps, gs_dps.ps, gs_lev2.ps,
+gs_ll3.ps, zmisc3.c)
+ - HalftoneTypes 6, 10, and 16. (gs_ll3.ps)
+ - FunctionType resource category. (gs_ll3.ps)
+ - FunctionType 2 and 3 Functions. (zfunc3.c)
+ - PatternType 2 and smooth shading (structures and API only, no
+algorithms). (gs_init.ps, gs_ll3.ps, gs_res.ps, zshade.c)
+ - In-RIP trapping (structures and API only, no algorithms).
+(gs_ll3.ps, ztrap.c)
+ - ImageType 3 and 4 (masked images) (structures and parsing only, no
+algorithms). (gs_ll3.ps, gs_res.ps, iimage2.h, zimage.c, zimage2.c,
+zimage3.c)
+ - DevicePixel color space. (gs_lev2.ps, zcolor2.c, zcspixel.c)
+ - DeviceN color space. (gs_lev2.ps, igstate.h, zcsdevn.c)
+
+Adds support for Type 32 fonts. (gs_cidfn.ps, gs_init.ps, gs_typ32.ps,
+zchar32.c, zfont32.c)
+
+Adds debugging printout to the CFF loader. (gs_cff.ps)
+
+Removes support for _ds pointers referencing the stacks, since we no longer
+support 16-bit implementations. (iref.h, istack.h, interp.c, ireclaim.c,
+istack.c)
+
+Removes all #ifdef DPNEXT conditionalization. (We had intended to use this
+to delimit blocks of code to be released with the GPL, but we're now
+planning to release a much larger number of files.) (igstate.h, interp.h,
+istruct.h, interp.c, zgstate.c)
+
+Allows user parameters to be implemented partly in PostScript code, since
+this is required for some LanguageLevel 3 features (currently only
+IdiomRecognition). (gs_lev2.ps)
+
+Removes most of the references to a global process scheduler. Completing
+this will require passing an interpreter state structure to all operators in
+place of the operand stack pointer, which we aren't prepared to contemplate
+yet. (zcontext.c)
+
+Adds tracing for context operations, -Z' and -Z". (zcontext.c)
+
+Changes def so that it doesn't have a special exception for storing
+references to local objects into systemdict or its subsidiary dictionaries
+during initialization: such stores now must use .forceput (or .forcedef,
+defined in gs_init.ps using .forceput); changes .forceput to allow storing a
+local reference into any global dictionary, not only systemdict, if the save
+level is 0. (gs_dps1.ps, gs_init.ps, gs_lev2.ps, gs_pdfwr.ps, gs_res.ps,
+gs_statd.ps, zdict.c)
+
+Moves all of the initialization of internaldict to PostScript code.
+(gs_init.ps, iinit.c, zcontrol.c)
+
+Moves the JobName user parameter from C to PostScript code. (gs_lev2.ps,
+zusparam.c)
+
+Adds to every dictionary a pointer to the allocator that created it. This
+allows us to create and grow dictionaries without having to reference any
+global variables. (idict.h, idict.c, iinit.c)
+
+Implements the localfork operator, which creates contexts with private local
+VM. (gs_dps.ps, gs_init.ps, dstack.h, gsalloc.h, ialloc.c, icontext.c,
+iinit.c, interp.c, zcontext.c)
+
+Systematizes reliable access to variables in systemdict and userdict.
+(gs_dps1.ps, gs_dps2.ps, gs_fonts.ps, gs_init.ps, gs_lev2.ps, gs_statd.ps,
+gs_type1.ps)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data. (Writable globals containing procedures,
+run-time-settable switches, pointers to static data, or non-pointer values
+that are initialized once and idempotently are OK.) (iconf.c, iinit.c,
+imain.c, imainarg.c, interp.c, zfont1.c, zht2.c, ziodev.c, ztype.c,
+zupath.c, zusparam.c)
+
+Adds support for ImageType 2 (device source) images. (gs_dps.ps, zdps.c)
+
+Adds begin_typed_image to internal device procedure vectors. (zupath.c)
+
+Increases the maximum stack sizes to match the Adobe implementation more
+closely. (gs_init.ps)
+
+Adds a file_is_invalid macro to work around a bug in the Borland 5.0
+compiler. (files.h, ziodev.c, zvmem.c)
+
+Changes the character cache to be allocated in the C heap rather than global
+VM. This is required because cache chunks are now allocated from the same
+allocator as the cache. (zfont.c)
+
+Implements sizeimage and readimage, including a new .getbitsrect operator.
+(gs_dpnxt.ps, gs_init.ps, zdevice.c, zdpnext.c)
+
+Resets the maximum stack sizes earlier in initialization. (gs_init.ps)
+
+Tweaks the default CRD slightly (syntactically, not the content).
+(gs_lev2.ps)
+
+Adds support for PatternTypes other than 1. (gs_init.ps, gs_lev2.ps,
+gs_res.ps, zpcolor.c)
+
+Adds a pointer to the C heap allocator to the gs_main_instance structure,
+working towards the goal of removing all references to gs_memory_default.
+(iminst.h)
+
+Removes all remaining uses of gs_malloc and gs_free from the interpreter.
+(igc.h, igc.c, imain.c, zfdctd.c, zfdcte.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default in the
+interpreter. (zfdctd.c, zfdcte.c, zvmem.c)
+
+Adds a map_color_rgb_alpha driver procedure, complementing
+map_rgb_alpha_color. (zupath.c)
+
+Removes the obsolete writeppmfile operator. (zwppm.c[deleted])
+
+Updates the implementation of the image operators to match the change from
+HasAlpha to Alpha in the image definition structure. (iimage.h, zcolor1.c,
+zimage.c)
+
+Reimplements upath in C code, since UnpaintedPath requires it. (zupath.c)
+
+Updates interpreter code for the change in the GC interface. (imemory.h,
+istruct.h, icontext.c, igc.c, igcref.c, igcstr.c, ilocate.c, iname.c,
+isave.c, iscan.c, istack.c, zfproc.c)
+
+Implements the compositing operators. (zdpnext.c, zdps.c, zupath.c)
+
+Changes some matrix operators to pass unpacked matrices on the stack.
+(zmatrix.c)
+
+Moves the alpha-related operators to where they belong. (zcolor.c,
+zdpnext.c)
+
+Changes all calls on getenv to gp_getenv. (imainarg.c, zmisc.c)
+
+</pre><h3><a name="V5.20_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PostScript pass-throughs caused an error. They are now always
+executed; probably we should offer the option of not executing them, for
+closer compatibility with Acrobat. (pdf_draw.ps, pdf_main.ps)
+ - Font resources, unlike all other types of resources, couldn't be
+inherited from an ancestor Page(s) object. (pdf_font.ps)
+ - Resources appearing only in Form or Pattern dictionaries weren't
+recognized as being present. (pdf_base.ps, pdf_draw.ps, pdf_main.ps)
+
+Moves closer to supporting Type 0 (and CID) fonts. (pdf_font.ps)
+
+</pre><h3><a name="V5.20_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If the image was very narrow or very shallow, the interpolated
+image scaling stream could make an invalid memory reference. (siscale.c)
+
+Removes the last few references to gs_malloc and gs_free from stream code.
+Clients now *must* call the set_defaults procedure for the DCT filters
+before initializing them: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
+(sdct.h, sdctd.c, sdcte.c, sjpegc.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default.
+(sdctd.c, sdcte.c, szlibd.c, szlibe.c)
+
+</pre><h3><a name="V5.20_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some files that included shc.h didn't include scommon.h. (shc.h)
+ - A file didn't include std.h before &lt;stdio.h&gt;. (gslib.c)
+ - There was an unnecessary extern (cleanup only). (gscsepr.c)
+ - The uid.xvalues member of gs_client_pattern structures wasn't
+traced by the GC. (gspcolor.h)
+ - If an Interpolated image reached the end of the input at exactly
+the wrong time, an assertion could fail. (gxiscale.c)
+ - With non-ANSI compilers, an integer constant passed to the fmod
+library function, which requires a floating point argument, could cause a
+floating point exception or an incorrect result. (gsmisc.c)
+ - An error in computing the bounding box sometimes caused strokes to
+print incorrectly (for example, some graduated fills printed incorrectly).
+(gxstroke.c)
+
+Implements an undocumented (!) feature of Type 2 CharStrings, namely that if
+the endchar operator is invoked with 4 or 5 operands on the stack, it is
+equivalent to the Type 1 seac operator (without the asb operand). This
+required changing the implementation of seac so that it does the base
+character first, rather than the accent. (gxtype1.h, gstype1.c, gstype2.c,
+gxtype1.c)
+
+Adds support for ImageTypes other than 1. (gsiparam.h, gximage.h,
+gxiparam.h, gdevddrw.c, gsimage.c, gximage.c, gximage0.c)
+
+Adds support for ImageType 2 (device source) images. Currently we only
+handle the simplest case (source is not transformed). (gsimage.h,
+gsiparm2.h, gsimage.c, gximage2.c)
+
+Adds support for LanguageLevel 3 features:
+ - FunctionType 2 and 3 Functions. (gsfunc3.h, gsfunc3.c)
+ - PatternType 2 and smooth shading (structures and API only, no
+algorithms). (gscolor3.h, gsptype2.h, gsshade.h, gxistate.h, gscolor3.c,
+gsshade.c)
+ - In-RIP trapping (structures and API only, no algorithms).
+(gstrap.h, gstrap.c)
+ - ImageType 3 (masked images) (structures and API only, no
+algorithms). (gsiparm3.h, gximage3.c)
+ - ImageType 4 (chroma-keyed masked images). (gsiparm4.h,
+gximage4.c)
+ - DevicePixel color space. (gscpixel.h, gscspace.h, gscpixel.c,
+gximono.c)
+ - DeviceN color space. (gscspace.h, gscdevn.c)
+
+Removes the #ifdef FUTURE around the code for passing multi-plane and
+interpolated images through the band list (version 5.01) and for banded
+filling and stroking with colored halftones (version 4.71). This code is
+now part of the standard release. (gxcldev.h, gxclpath.h, gxdht.h,
+gxhttype.h, gsht.c, gxclimag.c, gxclread.c, gximage.c)
+
+Adds a _ptrs6 structure definition macro. (gsstruct.h)
+
+Removes #ifdef DPNEXT conditionalization, as in the interpreter (see above).
+(gzstate.h, gsdps.c, gsstate.c, gximage.c, gximage5.c)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data, as in the interpreter (see above). (gsbittab.h,
+gscdefs.h, gsdcolor.h, gxclist.h, gxsample.h, gzht.h, gconf.c, gsbitops.c,
+gsbittab.c, gscdef.c, gsdparam.c, gsflip.c, gsinit.c, gsmatrix.c,
+gspcolor.c, gsstate.c, gxcht.c, gxclist.c, gxcmap.c, gxdcolor.c, gxdither.c,
+gxht.c, gximage.c)
+
+Removes the division between 'low-level' and 'high-level' band list
+facilities. (gxcldev.h, gxclimag.c, gxclist.c, gxclpath.c)
+
+Renames gximage*.c as gxi*.c, since these files apply only to ImageType 1
+images and the use of numerical suffixes was confusing. (gximage.c =&gt;
+gxiinit.c, gximage0.c =&gt; gxidata.c, gximage1.c =&gt; gxifast.c,
+gximage2.c =&gt; gximono.c, gximage3.c =&gt; gxicolor.c, gximage4.c =&gt;
+gxi12bit.c, gximage5.c =&gt; gxiscale.c)
+
+Provides the ability to enumerate a clipping path (based on the clipping
+list) using an enumerator, in the same way as an ordinary path. (gxpath.h,
+gzcpath.h, gzpath.h, gxcpath.c, gxpath2.c)
+
+Speeds up mem_mapped4_copy_mono substantially. (gdevm4.c)
+
+Removes all remaining uses of gs_malloc and gs_free in the library, other
+than in drivers. This turned out to require changing a couple of
+initialization APIs. (gsfont.h, gslib.h, gxdevice.h, gxfcache.h, gsfont.c,
+gxccman.c)
+
+Reduces the writable statics related to the default (C heap) allocator to a
+single pointer. (gsmalloc.h, gsmemory.h, gsinit.c, gsmemory.c)
+
+Adds support for PatternTypes other than 1. (gscolor2.h, gspcolor.h,
+gsptype1.h, gxcolor2.h, gspcolor.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default that
+aren't covered by gxdevice.h. (gxclmem.c)
+
+Splits off the default implementations of the bit-copying device procedures,
+because the file was getting too large. (gdevdbit.c, gdevdflt.c)
+
+Adds a procedure for calculating the difference of two rectangles, needed
+for Type 2 images. (gsrect.h, gxpath.h, gsutil.c)
+
+Extends the image machinery to allow alpha values to either precede or
+follow color values in image data, replacing HasAlpha with Alpha in the
+ImageType 1 image structure. (gsiparam.h, gximage.h, gsimage.c, gxclimag.c,
+gxclread.c, gxicolor.c, gxiinit.c, gxiscale.c)
+
+Extends the path enumeration API to decouple path copying from coordinate
+transformation. (gspath.h, gzpath.h, gspath1.c, gxpath2.c)
+
+Changes the garbage collector interface so that all procedures are passed
+through a structure rather than being referenced as externs. This allows
+programs other than the GC itself to enumerate and relocate pointers, and
+also removes all static dependencies on the GC from the library. This
+involves a NON-BACKWARD-COMPATIBLE CHANGE to the argument list of enum_ptrs
+procedures, and to the implementation of both enum_ptrs and reloc_ptrs. (We
+hope that the new macros we've introduced will avoid non-backward-compatible
+changes in the future.) (gsstruct.h, gdevmem.c, gsalloc.c, gscdevn.c,
+gscolor.c, gscolor2.c, gscsepr.c, gsdevice.c, gsfont.c, gshtscr.c,
+gsimage.c, gsmemory.c, gspcolor.c, gsstate.c, gxcmap.c, gxcpath.c, gxht.c,
+gxiinit.c)
+
+Moves the image compositing code into the library from its inappropriate
+home in the interpreter. (gsdpnext.h)
+
+Splits up gsbitops.h into client interface and implementation support.
+Removes some obsolete code at the same time. (gdevmem.h, gsbitops.h,
+gxbitops.h, gsbitops.c)
+
+Creates the concept of compositing functions and compositing devices
+(compositors). (gscompt.h, gxcomp.h)
+
+Implements the default compositor for alpha-based compositing. (gsalphac.h,
+gsalphac.c)
+
+Creates a store_alpha device that adds alpha channel storage to any other
+device. (gdevalph.c)
+
+Moves alpha channel capability into the dpsnext feature, where it should
+have been all along. (gsalpha.h, gscolor.h, gsalpha.c, gscolor.c,
+gsstate.c)
+
+Implements color premultiplying by (non-unity) alpha values. Currently we
+always premultiply towards white: see gxalpha.h for some comments.
+(gxalpha.h, gxcmap.c)
+
+Reduces the amount of boilerplate in the RasterOp implementation table.
+(gsroptab.c)
+
+Adds an arg_push_temp_string procedure to accommodate the new gp_getenv
+call. (gsargs.h, gsargs.c)
+
+Updates various library APIs to account for the more careful handling of
+file name length. (gdevprn.h, gxclio.h, gxclist.h, gsdevice.c, gxclfile.c,
+gxclmem.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.10"></a>Version 5.10 (11/23/97)</h2>
+
+<p>
+This release, not originally planned, greatly reduces the size of PDF files
+produced by the pdfwrite device, fixes a number of minor problems in PDF
+output, and optionally produces output compatible with Acrobat 2.x, in order
+to address problems reported by NSF in processing these files as part of
+their FastLane electronic proposal submission process. Aside from that, and
+some localized bug fixes, it has minimal changes from 5.03.
+
+<h3><a name="V5.10_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - ansihead.mak referred to unix-ansi.mak, which is actually named
+unixansi.mak. (ansihead.mak)
+ - README referred to an "If you need help" section that was moved to
+new-user.txt. (README)
+
+Updates build information for HP-UX systems. (make.txt)
+
+Updates the information for getting Martin Lottermoser's hpdj driver.
+(new-user.txt)
+
+Improves the error message when a user tries to invoke gswin32c without
+explicitly selecting a device. (dwmainc.cpp)
+
+Removes the author's name and e-mail address from the pdf2ps man page, at
+his request. (pdf2ps.1)
+
+Improves the documentation for BandBufferSpace. (language.txt)
+
+</pre><h3><a name="V5.10_Procedures"></a>Procedures</h3><pre>
+
+Changes the VMS command files so that they don't echo the commands.
+(append_l.com, copy_one.com, rm_all.com, rm_one.com)
+
+</pre><h3><a name="V5.10_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The "lp" command files all inappropriately set the top margin to
+0.1". (lp386.bat, lp386r2.bat, lpgs, lpgs.bat, lpr2, lpr2.bat)
+ - The lp386[r2].bat command files inappropriately set the
+LanguageLevel to 1. (lp386.bat, lp386r2.bat)
+
+</pre><h3><a name="V5.10_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer got confused about the current color if the input
+contained text strings separated only by color changes. (gdevpdf.c)
+ - Some casts between const char * and const byte * were incorrect
+(warnings only). (gdevpdft.c)
+
+Adds a NoCancel parameter to the winpr2 device, which suppresses display of
+the dialog box. (gdevwpr2.c)
+
+</pre><h3><a name="V5.10_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An "extern" was omitted, causing a duplicate definition of
+build_function_procs. (ifunc.h)
+ - The global pseudo-operator table was too small, causing a
+limitcheck in ps2ascii. (iinit.c)
+ - setcolorspace with a Pattern space with no underlying space would
+cause an error if the current color space was a Pattern space. (zpcolor.c)
+ - The Decode key was optional, not required, in the dictionary form
+of image[mask]. (zimage2.c)
+
+Adds two more PCL/PJL reset sequences to the list of sequences to ignore.
+(gs_init.ps)
+
+</pre><h3><a name="V5.10_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Multi-screen color halftones could produce "seams". (gxcht.c)
+ - A bug in the gcc optimizer on H-P RISC workstations caused all
+curves to be output as lines. (gxpflat.c)
+ - If a non-standard OtherSubr was called before the [h]sbw in a Type
+1 font, a crash could occur. (gxhint3.c)
+ - gxclist.c didn't include string_.h. (gxclist.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.07"></a>Version 5.07 (limited) (10/31/97)</h2>
+
+<p>
+A few more bug fixes for the 5.10 release.
+
+<h3><a name="V5.07_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Some file and directory names hadn't been updated to match the new
+directory structure on the primary server. (make.txt, new-user.txt)
+
+Adds the URL for reaching URW++. (Fontmap.*)
+
+</pre><h3><a name="V5.07_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Because the C % operator isn't equivalent to 'modulus' for
+negative numerators, gx_default_strip_tile_rectangle could crash in some
+cases. (gxdevice.h, gdevdflt.c)
+ - In the PDF writer, Dest values were correct (page numbers) for
+GoToR actions, but were incorrect (should be page object references) for
+other actions; also, Rect values were transformed, but should not be.
+(gdevpdfm.c)
+ - In the PDF writer, articles and bookmarks could attempt to write
+multiple Contents streams, which is not allowed. (gdevpdfx.h, gdevpdf.c,
+gdevpdfm.c)
+ - The PDF writer ignored PS (PostScript pass-through) pdfmarks.
+(gdevpdfm.c)
+ - The PDF writer didn't write out the color space parameters for
+CIE-based spaces. (gdevpdfi.c)
+
+</pre><h3><a name="V5.07_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Suffix subclass structures with 4 added pointers skipped the first
+pointer in the superclass when garbage collecting, possibly causing invalid
+memory accesses. (gsstruct.h)
+ - An argument list incompatibility in a procedure used in a static
+structure initialization upset some compilers. (gsfunc.h, gsfunc0.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.06"></a>Version 5.06 (limited) (10/7/97)</h2>
+
+<p>
+This fixes a few more bugs in the PDF writer, and a few other very obscure
+problems. It also adds support for Functions and brings multiple contexts
+closer to working, neither of which we expect actually to be used any time
+soon. This is intended to be the candidate fileset for the 5.10 release,
+but since we had to tinker with a delicate part of the PDF writer to fix a
+problem affecting visual quality with Acrobat, there may be new bugs that
+will have to be fixed in yet another candidate fileset.
+
+<h3><a name="V5.06_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Jim McPherson's e-mail address was out of date. (devices.txt)
+ - Invoking ps2pdf with only a single file name is supported on some
+versions of Windows NT and OS/2, not only on Unix. (ps2pdf.txt)
+ - The ps2pdf documentation didn't indicate that ps2pdf can use the
+Windows "console mode" executable as well as the MS-DOS executable.
+(ps2pdf.txt)
+ - The list of which Distiller parameters actually have an effect was
+incorrect. (gdevpdfp.c)
+
+Notes that the cdj550 driver is compatible with the H-P 660C and 660Cse.
+(devs.mak, devices.txt)
+
+Adds a note about using Acrobat Reader fonts. (install.txt, use.txt)
+
+Notes that the LJ 5P, like the 5L, is not a PCL XL printer. (devs.mak)
+
+Notes problems and possible problems with certain versions of the Borland
+C++ compiler. (make.txt)
+
+Notes the change in -Z:. (use.txt)
+
+Updates the uniprint documentation for this release. (devices.txt)
+
+Expands the rationale for the large resolution in the bbox device.
+(gdevbbox.c)
+
+Notes that the H-P DeskJet 600 series can use the djet500 driver with -r600.
+(devs.mak)
+
+</pre><h3><a name="V5.06_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Vector devices didn't include a necessary dependency on the stream
+package. (lib.mak)
+ - There were several bugs in the ps2pdf.bat file. (ps2pdf.bat)
+
+Changes -Z: so it prints some summary lines as well as minimal information
+about banding. This makes the -ZA trace compatible with our memory leak
+tool. (iminst.h, imain.c)
+
+</pre><h3><a name="V5.06_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi sometimes produced a too-large bounding box, or even
+caused a rangecheck. (ps2epsi)
+
+At the advice of a user, removes the RESOLUTION=100 line from pv.sh.
+(pv.sh)
+
+</pre><h3><a name="V5.06_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer produced incorrect output for stroke operations
+with unusual CTMs, because PDF, unlike PostScript, applies the CTM to the
+path at the time of the fill or stroke, not as the path is being
+constructed. (gdevpdfd.c)
+ - Vector devices returned an error, instead of falling back to the
+default implementations, when filling or stroking with a pattern.
+(gdevvec.c)
+ - The PDF writer freed an internal stream structure using the wrong
+allocator, possibly causing memory corruption. (gdevpdf.c)
+ - The uniprint driver had some compilation problems, and possibly
+other problems as well (consult the source file). (gdevupd.c, *.upp)
+ - With -dNOCACHE, the PDF writer wrote all text in the base 14 fonts
+twice, once as text and once as outlines. (gs_pdfwr.ps, gdevpdfd.c)
+ - The PDF writer didn't properly recognize Symbol and ZapfDingbats
+as being among the base 14 fonts. (gs_pdfwr.ps)
+ - When using Acrobat Reader with font smoothing turned on, the base
+14 fonts appeared too bold on the screen in files produced by ps2pdf,
+because Reader decides that a 100-unit font at 1 unit = 0.1 point should be
+bolder than a 10-unit font at 1 unit = 1 point. (gdevpdfx.h, gdevpdf.c,
+gdevpdft.c)
+ - The PDF writer didn't convert View/Page specifications for
+bookmark pdfmarks to a Dest key, causing bookmarks not to work.
+(gdevpdfm.c)
+
+Speeds up the PDF writer by only passing the encoding if it isn't
+StandardEncoding. (gs_pdfwr.ps, gdevpdft.c)
+
+Changes the PDF writer's handling of unencoded glyphs. Adds device
+parameters ReEncodeCharacters and ReAssignCharacters to control how
+unencoded glyphs are handled. (These parameters will go away when we handle
+variant encodings in full generality.) (gdevpdfx.h, gdevpdf.c, gdevpdfp.c,
+gdevpdft.c)
+
+</pre><h3><a name="V5.06_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - setpagedevice didn't restore the stack properly if it failed.
+(gs_setpd.ps)
+ - 0 identmatrix didn't cause an error. (gs_init.ps)
+ - Devices expecting array-valued parameters didn't accept packed
+arrays. (iparam.c)
+
+Starts to de-implement support for special handling of the stacks on
+machines with 16:16 addressing. Currently this only happens if DPNEXT is
+defined. (istack.h)
+
+Brings multiple contexts closer to working. The interpreter can now run
+some very simple test cases. (int.mak, icontext.h, igstate.h, interp.h,
+istruct.h, icontext.c, interp.c, zcontext.c, zgstate.c)
+
+Adds support for FunctionType 0 Functions. (ifunc.h, iref.h, store.h,
+zfunc.c, zfunc0.c)
+
+Updates a few remaining pseudo-operators in gs_init.ps to take advantage of
+automatic operand and dictionary stack restoration: eexec, identmatrix,
+pathbbox. Not updated yet: filter. (gs_init.ps)
+
+</pre><h3><a name="V5.06_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Separation color spaces weren't supported. (gs_pdf.ps,
+pdf_draw.ps)
+
+</pre><h3><a name="V5.06_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The size argument to gs_free was wrong in an out-of-memory case.
+(This was irrelevant, since gs_free only uses the size argument for
+error-checking during debugging.) (gdevprn.c)
+ - When freeing a block on the C heap, if -Z@ was set, the block's
+header wasn't filled with the sentinel pattern. (Only relevant when
+debugging.) (gsmemory.c)
+ - The C heap allocator didn't fix up pointers properly when freeing
+a block, causing unpredictable memory corruption after a 'resize' call.
+(gsmemory.c)
+ - Using a show operator inside the procedure of a cshow with a
+composite font could cause an invalid access. (gschar.c)
+
+Adds support for FunctionType 0 Functions. (gsdsrc.h, gsfunc.h, gsfunc0.h,
+gxfunc.h, gsdsrc.c, gsfunc.c, gsfunc0.c)
+
+Moves the GC descriptor for arrays of constant strings to a place where it
+is more visible. (gscie.h, gsstruct.h, gscie.c, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.05"></a>Version 5.05 (limited) (9/24/97)</h2>
+
+<p>
+This fixes a few bugs found in the first few days of testing 5.04. There
+will probably be several more small incremental filesets before the next
+public release.
+
+<h3><a name="V5.05_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows code wouldn't compile with the latest MSVC++, because
+Microsoft changed the prototype for fprintf. (gp_msio.c)
+
+</pre><h3><a name="V5.05_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A picky compiler complained about some omitted casts. (gdevpdf.c,
+gdevpdft.c)
+ - Writing a PDF file with any synthesized fonts could produce
+slightly garbled output or possibly even an invalid memory access, because a
+string was not terminated. (gdevpdft.c)
+ - When writing a PDF file, the first character of a string could get
+placed off the page, because of a matrix bookkeeping error. (gdevpdft.c)
+
+</pre><h3><a name="V5.05_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - In case of an error, setpagedevice executed a 'stop'
+unconditionally, rather than just signalling an error through the error
+machinery. (gs_setpd.ps)
+
+</pre><h3><a name="V5.05_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Files with unknown operators caused errors, even if the BX
+operator was used to disable the error report. (pdf_base.ps)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.04"></a>Version 5.04 (limited) (9/21/97)</h2>
+
+<p>
+This is a test fileset for an unplanned release that greatly reduces the
+size of PDF files produced by the pdfwrite device, and also optionally
+produces output compatible with Acrobat 2.x, in order to address problems
+reported by NSF in processing these files as part of their FastLane
+electronic proposal submission process. Aside from that, and some localized
+bug fixes, it has minimal changes from 5.03.
+
+<h3><a name="V5.04_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - George Cameron's address was listed with a domain of .ukis rather
+than .uk. (devices.txt)
+ - The default value of ORIENT1 was given as false rather than true.
+(use.txt)
+ - The documentation for ps2pdf said one can omit the output file
+name, but this is only true on Unix systems. (ps2pdf.txt)
+ - The documentation for ps2pdf didn't make clear that the executable
+must be named gs on Microsoft OSs. (ps2pdf.txt)
+ - ht_cache is actually allocated with the first gstate, not on
+demand. (gsstate.c)
+
+Slightly improves the documentation of .type1execchar. (zchar1.c)
+
+Clarifies the distinction between Ghostscript (PostScript) commands and
+shell commands, for the benefit of users brainwashed by Microsoft.
+(use.txt)
+
+Improves the usage synopsis in the ps2epsi man page. (ps2epsi.1)
+
+Adds a reference to Uli Wortmann's H-P drivers. (new-user.txt)
+
+Improves the documentation of GS_FONTPATH, distinguishing it from GS_LIB and
+the search path. (use.txt)
+
+Notes that on some systems, one must substitute 'installbsd' for 'install'
+in the makefile and make other edits. (install.txt, ansihead.mak,
+cc-head.mak, gcc-head.mak)
+
+Notes that ps2epsi is no longer maintained. (ps2epsi.ps)
+
+Clarifies the availability of support. (new-user.txt)
+
+</pre><h3><a name="V5.04_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The uniprint driver was accidentally omitted from the default
+Watcom (MS-DOS) and OS/2 configurations. (watc.mak, os2.mak)
+ - The suggested compiler switches for Digital Unix were incorrect.
+(make.txt)
+ - The cp.cmd script file didn't work in the newest versions of OS/2.
+(cp.cmd)
+ - The compilation rules for some Windows-specific files didn't
+include ccf32.tr in their dependencies, which could cause the compilation to
+fail. (winint.mak)
+
+Removes the lev2min configuration, since we no longer support 16-bit Windows
+environments. (int.mak)
+
+</pre><h3><a name="V5.04_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi.bat always appended to the output file, rather than
+writing over it. (There are probably other bugs in this script file.)
+(ps2epsi.bat)
+ - The output of pdf2ps didn't execute properly on some printers,
+especially Level 1 printers. (gs_pdf.ps)
+
+Makes ps2pdf do an initial 'save', which causes fonts to be retained better
+across pages. (ps2pdf, ps2pdf.bat)
+
+Adds an option to pcharstr.ps to produce C-like rather than PostScript-like
+output. (pcharstr.ps)
+
+</pre><h3><a name="V5.04_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The LaserJet III and higher printers weren't able to print in the
+narrow strip between 1/6" and 1/4" from the left edge of the page.
+(gdevdjet.c)
+ - The PCL XL drivers produced incorrect output which often caused a
+PCL XL NoCurrentFont error at the beginning of the second page. (gdevpx.c)
+ - The GC descriptors for the pswrite device and for PS/PDF devices
+were incorrect, causing the GC to smash memory. (gdevpsdf.h, gdevps.c)
+ - The pdfwrite device didn't have a GC descriptor at all. ******
+DISABLED because the device allocates all its temporary structures directly
+on the C heap. ****** (gdevpdf.c)
+ - When the PDF writer wrote out the Dest key in an action
+dictionary, it always used a page object instead of a page number, even if
+the page was in another file or didn't exist; it now always uses a page
+number. (gdevpdfm.c)
+ - The PDF writer gave an error if a file redefined any of the 14
+known fonts. (gs_pdfwr.ps)
+ - The PDF writer didn't handle copy_mono with a non-zero sourcex.
+(This probably had no effect in practice.) (gdevpdfi.c)
+
+Splits off gdevpdfd.c (driver drawing procedures) from gdevpdf.c, since the
+file was getting too large. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c)
+
+Adds recognition of the CompressPages, CompatibilityLevel, and
+UseFlateCompression device (distiller) parameters to the PDF writer. If
+CompressPages is true (default), CompatibilityLevel is 1.2 (default), and
+UseFlateCompression is true (default), page contents will be compressed with
+Flate ("zip") compression; otherwise, they will not be compressed.
+
+Restructures the PDF writer to produce much smaller and faster PDF files, by
+restructuring its handling of text to defer all resources to the end of the
+file, eliminate duplicate Font resources, turn characters into Type 3 fonts
+rather than Image XObjects, use more efficient text positioning commands,
+and optionally (but by default) Flate-compress the contents streams. Also
+removes some unnecessary spaces in the output. (gdevpdfx.h, gdevpdf.c,
+gdevpdfd.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
+
+Improves the PDF writer so that it no longer converts stroke operations with
+non-uniform CTMs to fills, and doesn't bother to stroke empty paths at all.
+(gdevpdfd.c)
+
+Speeds up the "alternate" X devices substantially. (gdevxalt.c)
+
+</pre><h3><a name="V5.04_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Filling a string with a Pattern caused a crash with the PDF
+writer. (gs_pdfwr.ps)
+ - Converting a file with no marks at all to PDF produced invalid
+output. (gdevpdf.c)
+ - .endpage, which is called at the end of every page, sometimes left
+2 extra values on the stack. (gs_setpd.ps)
+ - A definefont with a Type 1 font lacking a .notdef character didn't
+cause an invalidfont error. (bfont.h, zfont1.c, zfont2.c)
+ - On anti-aliased devices, characters from Type 1 fonts with an
+incorrect or missing FontBBox came out a factor of 2 or 4 too small if the
+character was small enough to cache. (zchar1.c)
+ - If a file redefined certain operators, loading Type 1 fonts could
+fail. This problem was fixed in an earlier release, and somehow the fix got
+undone. (gs_type1.ps)
+ - cshow didn't set the correct current font when running the
+procedure, and didn't restore it properly afterwards. (zchar.c, zchar2.c)
+ - With certain compilers, the interpreter loop caused unaligned
+memory accesses on DEC Alpha systems running Windows NT. (iref.h)
+
+Adds freelist validation to the memory checker. (ilocate.c)
+
+Changes the debugging switch for bypassing the garbage collector from
+compile-time to run-time. (igc.c)
+
+Adds the real operators for view clipping (but they don't do anything yet,
+because view clipping isn't implemented at the library level). (zdps.c,
+zvmem.c)
+
+Completes the implementation of defineusername. (zdps.c)
+
+Adds an implementation of wtranslation, by simply reading a device parameter
+of the same name. (gs_dps.ps)
+
+</pre><h3><a name="V5.04_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Lab color spaces weren't implemented, and gave an error.
+(gs_pdf.ps)
+ - Images only worked with built-in color spaces, not color space
+resources. (pdf_draw.ps)
+ - Embedded font subsets were treated as undefined. (pdf_font.ps)
+
+</pre><h3><a name="V5.04_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - strokepath sometimes clipped the path to the current clipping
+region, which it should never do. (gxstroke.c)
+ - The initial X/Y position for Type 2 charstrings (CFFs) sometimes
+was set incorrectly. (gstype2.c)
+ - Memory management for dash patterns was still incorrect (despite
+the fix in 4.36), possibly causing snarled freelists and invalid memory
+references. (gsline.c, gsstate.c)
+ - The saved gstate of a Pattern instance was freed properly when the
+instance was freed by reference counting as a result of setting the color or
+color space, but not when the instance was freed by reference counting
+anywhere else. (gspcolor.c)
+ - A test for whether to use a slower form of oversampling was
+incorrect. (Probably only a performance bug.) (gschar.c)
+ - cshow didn't set the correct current font when running the
+procedure, and didn't restore it properly afterwards. (gsfont.h, gschar.c,
+gsfont.c)
+
+Improves allocator validity checking when DEBUG is set. (gsalloc.c)
+
+Adds a couple of missing FontType values. (gxftype.h)
+
+Changes the default conversions between CMYK and RGB colors back to the
+Adobe rules documented in the Red Book, to reduce output differences from
+Adobe implementations. (gxdcconv.c)
+
+Adds a graphics state element for view clipping, under an #ifdef DPNEXT, and
+implementations of the view clipping operators (but not the logic for doing
+the actual clipping). (gsstate.h, gzstate.h, gsstate.c)
+
+Removes the redundant clip_rule variable from the graphics state (which
+wasn't used for anything). (gzstate.h, gspath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.03"></a>Version 5.03 (8/8/97)</h2>
+
+<p>
+The only reason for this release is to fix two serious bugs introduced
+between 5.01 and 5.02. We fixed a few other very localized and low-risk
+bugs at the same time.
+
+<h3><a name="V5.03_Documentation"></a>Documentation</h3><pre>
+
+Removes the "(if relevant)" from the bug reporting form, since about 25% of
+the forms are submitted without a URL or any other data. (bug-form.txt)
+
+Adds a discussion of single-use procedures to the style guide.
+(c-style.txt)
+
+Updates the information about obtaining Ghostscript on physical media.
+(new-user.txt)
+
+Updates the information about ps_view. (new-user.txt)
+
+</pre><h3><a name="V5.03_Procedures"></a>Procedures</h3><pre>
+
+Adds the uniprint driver to all platforms. (*.mak)
+
+Changes the contents of the pc.tar.gz archives:
+ - Adds *.upp.
+ - Removes *.res.
+ - Removes cp.bat, font2c.bat, mv.bat, rm.bat, wmakebat.bat,
+ cp.cmd, mv.cmd and rm.cmd, and gv-vms.hlp.
+
+Removes an obsolete script file. (tar_mv)
+
+</pre><h3><a name="V5.03_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The uniprint driver didn't handle an increase in media height
+correctly. (gdevupd.c)
+
+</pre><h3><a name="V5.03_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Printing to printers other than LPT1 under MS Windows no longer
+worked. (bug introduced in 5.02) (gp_mswin.c)
+ - Drag-and-drop didn't work under Windows NT (or other 32-bit
+Windows environments). (dwtext.cpp)
+ - Sequent systems needed an additional system header file.
+(time_.h)
+
+</pre><h3><a name="V5.03_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The substitutions Myriad =&gt; Times and Minion =&gt; Helvetica were
+incorrect; they should be the other way around. (gs_fonts.ps)
+ - MyriadPkg wasn't recognized as a condensed font. (gs_fonts.ps)
+ - Univers wasn't recognized as mapping to Helvetica. (gs_fonts.ps)
+
+</pre><h3><a name="V5.03_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A line of debugging code, printing the sections of 3 regions of
+TrueType fonts being loaded, was accidentally left in. (gs_ttf.ps)
+ - TrueType fonts whose pre-glyf data had odd length were broken
+(typically gave a rangecheck error), because of the fix to treat the odd
+byte of individual sfnts strings as padding per Adobe documentation. (bug
+introduced in 5.02) (gs_ttf.ps)
+
+</pre><h3><a name="V5.03_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If a real-number token in a CFF had an even number of nibbles, a
+unmatchedmark error would occur. (gs_cff.ps)
+ - If the strings Index in a CFF included an empty string, a
+rangecheck error would occur. (gs_cff.ps)
+ - CFFs with non-standard Encodings that included standard strings
+would get a typecheck error. (gs_cff.ps)
+
+</pre><h3><a name="V5.03_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Using %d in an OutputFile name didn't substitute the page number.
+(bug introduced in 5.02) (gsdevice.c)
+ - In Type 2 CharStrings, if a hintmask occurred at the beginning, it
+wasn't recognized as also incorporating the function of vstemhm.
+(gstype2.c)
+ - The data bytes for hintmask and cntrmask weren't printed for
+debugging. (gstype2.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.02"></a>Version 5.02 (7/28/97)</h2>
+
+<p>
+Because of an ISP failure that delayed the 5.0 announcement for 12 days, the
+5.01 release only responded to a few days of bug reports; 5.02 fixes some
+problems that should have been fixed in 5.01, as well as a large number of
+obscure problems uncovered by Genoa testing.
+
+<h3><a name="V5.02_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The documentation for building on the Intergraph Clipper was out
+of date. (make.txt)
+ - ESC was claimed to be a self-delimiting character. (gs_init.ps)
+ - Removes the documentation claiming that ^D and ^Z are
+self-delimiting. (language.txt)
+ - Document that -dSUBSTFONT doesn't create a font with the requested
+font name. (use.txt)
+ - Ghostscript was defined as compatible with PDF 1.1 rather than PDF
+1.2. (language.txt)
+ - The description of gcc problems on Alpha didn't make it clear that
+the use of gcc was optional, not required. (make.txt)
+ - The description of how to use GNU make on VMS systems was
+inaccurate. (make.txt)
+
+Improves the documentation for building on H-P RISC systems. (make.txt)
+
+Corrects the discussion of Cygnus' licensing terms for the cygwin32
+environment. (make.txt)
+
+Removes the apology for the poor quality of Ghostscript's TrueType
+rasterizer, since the quality is now quite good. (fonts.txt)
+
+Documents the fact that one must use # rather than = with Watcom C.
+(use.txt)
+
+Documents the updates and additions to the uniprint driver. (devices.txt)
+
+Adds some material to Aladdin's C style guide. (c-style.txt)
+
+Documents the fact that using gmake requires VMS 6.2 or later on Alphas and
+7.1 (perhaps 7.0) or later on VAXen. (make.txt)
+
+Adds an example EPS file. (psfiles.txt)
+
+Adds some information about compiling and linking under OS/2. (make.txt)
+
+Expands the description of XLIBDIR and XLIBDIRS. (*head.mak)
+
+Adds a new pointer to information on using a Kanji font with Ghostscript.
+(new-user.txt)
+
+Documents the use of /Resource/&lt;category&gt;/&lt;resource&gt; as the default place
+where resources are sought. (use.txt)
+
+Updates the documentation on building with MSVC++ to reflect the makefile
+changes. (make.txt)
+
+</pre><h3><a name="V5.02_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - In openvms.mak, several ifdef tests were wrong. (openvms.mak)
+ - One CP command was slightly inconsistent with the others.
+(zlib.mak)
+ - If libz and libpng were both shared, libz was linked first,
+resulting in some undefined references. (libpng.mak)
+ - The VMS makefile didn't interact properly with VMS's version
+numbering facility. (copy_one.com)
+
+Updates the VMS DCL script one last time, to handle libpng version 96.
+(vms.mak)
+
+Restructures the MSVC++ makefiles to allow building the graphics library
+without the PostScript interpreter. (bcwin32.mak, msvc4.mak[deleted],
+msvc5.mak[deleted], msvc32.mak, msvccom.mak, watcw32.mak,
+wincom.mak[deleted], winint.mak, winlib.mak)
+
+Adds a makefile to create a library-only demo program under MSVC++, like the
+ones for Unix/gcc and MS-DOS/Watcom. (msvclib.mak)
+
+Adds an example EPS file. (ridt91.eps, unix-end.mak)
+
+Removes support for libpng release 0.88, which is now quite obsolete.
+(libpng.mak)
+
+</pre><h3><a name="V5.02_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2pdf.bat, unlike ps2pdf, didn't accept options. (ps2pdf.bat)
+ - echogs used 'const' in one place, which wasn't accepted by some
+very old compilers. (echogs.c)
+ - pdf2ps output Orientation, which it shouldn't. (pdf_main.ps)
+
+Makes the usage message from ps2pdf.bat include the options, like ps2pdf.
+(ps2pdf.bat)
+
+Changes the printpath utility so that its output is legal PostScript code.
+(ppath.ps)
+
+Makes pdf2dsc add DSC comments for the bounding box (if a CropBox is
+available in the PDF file) and the orientation. (pdf2dsc.ps)
+
+</pre><h3><a name="V5.02_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The get_bits operation wasn't implemented for the vgalib driver.
+(gdevvglb.c)
+ - The dnj650c driver output an extra % near the end of the file.
+(gdevcdj.c)
+ - The definition of pprintd2 didn't have a line break before the
+procedure name, confusing ansi2knr. (gdevpstr.c)
+ - EPS files produced invalid PDF output. (gdevpdf.c)
+ - "Vector" output devices didn't recognize %d in output file names,
+or - for output to stdout. (gdevprn.h, gxdevice.h, gdevprn.c, gdevvec.c,
+gsdevice.c)
+ - With the pdfwrite driver, restore or grestore would cause a
+rangecheck error in .installpagedevice if a setpagedevice had been executed.
+(gdevpdfp.c)
+ - The pdfwrite driver produced garbage output for text rotated by
+angles that were only infinitesimally different from multiples of 90
+degrees. (gdevpdft.c)
+ - The pnm[raw] driver didn't handle anti-aliasing properly.
+(gdevpbm.c)
+ - The PDF writer didn't scale the parameters for [a][width]show
+correctly. (gs_pdfwr.ps, gdevpdft.c)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(gdevbbox.c, gdevpdfm.c, gshtscr.c, gsmemory.c, gxccman.c, gxfill.c,
+gximage0.c)
+
+Fixes some bugs in the uniprint driver and adds some more printer models.
+(gdevupd.c, bjc610a*.upp, bjc610b*.upp, necp2x6.upp, stc1520h.upp)
+
+Makes a small change for clean compilation on BeOS. (gdevcdj.c)
+
+Updates the PNG driver to use updated API calls for allocating/initializing
+and freeing the PNG structures. (gdevpng.c)
+
+</pre><h3><a name="V5.02_Platforms"></a>Platforms</h3><pre>
+
+Refactors the MS Windows code to allow building the library without the
+interpreter. (gs_msio.c, gs_mslib.c, gp_mswin.c)
+
+</pre><h3><a name="V5.02_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - definefont was executed twice on TrueType fonts. (No bad
+consequences, just unnecessary work.) (gs_ttf.ps)
+
+</pre><h3><a name="V5.02_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The fix for the 'stopped' around run_string_* in 5.01 was made
+incorrectly. (gs_init.ps)
+ - Many operators that expect a matrix operand didn't accept packed
+arrays. (iutil.c)
+ - The default CRD didn't have an explicit BlackPoint, which some
+Genoa tests require. (gs_lev2.ps)
+ - A stack protection fix caused setscreen and setcolorscreen with
+dictionary operands to give a typecheck. (gs_dps2.ps)
+ - Executing a string didn't handle tail recursion properly if the
+last token was followed by a single whitespace character. (interp.c)
+ - Clearing the error indication didn't set errorname to null.
+(gs_init.ps)
+ - Some unexpected items appeared on the execution stack, confusing
+some of the Genoa tests. (gs_init.ps, istack.h, istack.c, zcontrol.c)
+ - The dummy definitions for setucacheparams/ucachestatus didn't look
+enough like the real ones. (gs_dps2.ps)
+ - Insideness tests didn't work, because the hit detection device
+width and height weren't set up. (zupath.c)
+ - defineuserobject didn't use the same algorithm for growing the
+array as Adobe interpreters. (gs_dps2.ps)
+ - eq and ne didn't work correctly on save objects. (iutil.c)
+ - findfont used =string internally, interfering with PostScript
+programs that also used it. (gs_fonts.ps)
+ - cshow didn't set up scaled versions of base fonts as the current
+font. (zchar2.c)
+ - defineresource didn't make the resource value read-only.
+(gs_res.ps)
+ - If inustroke got an error, it could return without an error
+indication and without changing the stack. (zupath.c)
+ - The arrays returned by different invocations of currentcolorspace
+with the same device color space weren't guaranteed to be eq. (gs_lev2.ps)
+ - Out-of-range integers followed by a '.' were converted to names
+rather than reals. (iscan.c, iscannum.c)
+ - resourceforall caused an invalidaccess error if currentglobal was
+true but the procedure, template, or scratch string was in local VM.
+(gs_res.ps)
+ - In many places, integer values were converted to floats rather
+than doubles, losing precision. (ichar.h, icharout.h, ifont.h, iutil.h,
+idparam.c, iparam.c, iutil.c, zchar.c, zchar1.c, zchar42.c, zcharout.c,
+zcie.c, zcolor.c, zcolor1.c, zcolor2.c, zcontrol.c, zcsindex.c, zcssepr.c,
+zdpnext.c, zdps1.c, zfont.c, zfont2.c, zgstate.c, zhsb.c, zht.c, zmath.c,
+zmatrix.c, zmedia2.c, zpath.c, zpath1.c, zupath.c)
+ - The TransformPQR procedure in the default CRD didn't pop its
+auxiliary operands from the stack. (gs_lev2.ps)
+ - Because of an incorrect stack depth check, setcolorrendering
+sometimes produced a stackunderflow. (zcrd.c)
+ - sethalftone caused an invalidaccess error if the HalfTone type was
+not 5, the dictionary was in local VM, and the current VM was global.
+(gs_dps2.ps)
+ - writeobject and printobject caused an invalidaccess error if the
+object being written was in local VM and the current VM was global.
+(gs_btokn.ps)
+ - ustrokepath appended the strokepath segments to the current path,
+rather than replacing the path. (zupath.c)
+ - restore incorrectly purged from the character cache any characters
+in a font being freed, even if the font had a UID. (zfont.c)
+ - The definition of zimage_opaque_setup confused ansi2knr.
+(zimage.c)
+ - Type 42 fonts that included the padding byte in each sfnts string
+didn't work if sfnts had more than one string. (zfont42.c)
+ - Doing a garbage collection at the same time as handling a
+stackoverflow failed to update the object that needed re-execution, causing
+the interpreter to execute random data. (interp.c)
+ - %stdout and %stderr weren't flushed if they were closed
+explicitly. (ziodev.c)
+
+For greater Adobe compatibility:
+ - Changes setdash to limit dash patterns to 11 elements. (This is
+enforced at the PostScript level: the graphics library doesn't have a
+limit.) (gs_init.ps)
+ - Changes ^D and ^Z so they are not self-delimiting characters, and
+changes ^K so it is not a whitespace character. (gs_init.ps, iscan.c,
+scantab.c)
+ - Makes = cause an error on non-read-accessible objects rather than
+printing them as --nostringval--. (gs_init.ps)
+ - When -dSUBSTFONT= is used, makes findfont return the actual named
+font, rather than a copy with the FontName changed to the requested one.
+(gs_fonts.ps)
+ - CFF fonts with a non-default FontMatrix caused an error.
+(gs_cff.ps)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(iparam.c, zfcmap.c)
+
+Strengthens the test of o-stack validity in the main interpreter loop in
+debug mode. (interp.c)
+
+Changes the filling rule for Type 1 fonts from winding-number to even-odd.
+This affects no properly designed fonts, and seems to match Adobe
+interpreters better. (zchar1.c)
+
+Implements non-standard Encodings in CFF fonts. (gs_cff.ps)
+
+Changes the default halftone screen for 600 dpi printers from 85 to 106 lpi,
+which reduces the number of halftone levels from 50 to 32 but produces
+visually better output. (gs_init.ps)
+
+</pre><h3><a name="V5.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Pattern color spaces weren't supported. (gs_pdf.ps, pdf_draw.ps)
+
+Causes references to undefined named Destinations to be ignored rather than
+giving an error. (pdf_main.ps)
+
+</pre><h3><a name="V5.02_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A 'const' was omitted in a declaration, upsetting several
+compilers. (gxclread.c)
+ - arct and arcto gave an error for negative radii. (gspath1.c)
+ - The collinearity check for arct[o] could cause some arcs to be
+rendered as single points. (gspath1.c)
+ - Uncolored patterns sometimes came out blank, because the color
+wasn't set before calling the PaintProc. (gspcolor.c)
+ - The phase for masking colored patterns was wrong, producing
+incorrect output. (gspcolor.c)
+ - reversepath always appended the current position to the new path,
+rather than only doing so if the path just consisted of a single moveto.
+(gxpath2.c)
+ - cshow didn't restore the current font properly. (gschar.h,
+gschar.c)
+ - The check for whether characters can be cached didn't consider
+PaintType values other than 0 and 2. (gschar.c)
+ - The bounding box device didn't handle PageCount properly.
+(gdevbbox.c)
+ - Uncached fonts with a next_char procedure didn't set the glyph
+properly. (gschar.c)
+ - Parallelograms with ax &lt; bx, ay &lt; by, and the 'a' edge to the
+right of the 'b' edge weren't filled, causing pixels to be omitted from some
+highly skewed images. (gdevddrw.c)
+ - 12-bit-per-pixel images in portrait orientation filled each scan
+line with the value of the last pixel -- i.e., didn't work. (gximage4.c)
+ - The path representation of a clipping path could include some
+inappropriate, leftover path segments. (gxcpath.c)
+ - The angle for the miter check was computed in device space rather
+than in user space. (gxstroke.c)
+ - TrueType fonts were lumpy, and the accents of accented characters
+were placed incorrectly. (gstype42.c)
+ - Some macros used for generating device prototypes didn't
+parenthesize all uses of their parameters, causing possible errors if the
+parameters were expressions rather than numeric constants. (gdevprn.h)
+ - When banding, strip halftones (typically produced by
+AccurateScreens) sometimes didn't have the correct phase. (gxbitmap.h,
+gxclread.c)
+ - A minor change was required for correct compilation with Microsoft
+VC++. (memory_.h)
+ - Under certain conditions, character shapes could get wildly
+distorted by hints. (bug introduced in 5.01) (gxhint3.c)
+
+For greater Adobe compatibility:
+ - Changes reversepath so that the implicit line created by closepath
+is not considered a "segment". (gxpath2.c)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(gstype1.c)
+
+Changes the font and scaled-font caches so that if the font has a UID
+(UniqueID or XUID), the UID and FontType are both considered part of the
+key, and we don't cache fonts with non-zero PaintType. (The Red Book says
+that changing anything except the Encoding should also change or remove the
+UID, but some files don't do this. The current fix is probably not
+sufficient, but it is a step in the right direction.) (gxfcache.h,
+gxccache.c, gxccman.c)
+
+Splits off the definitions of font_type and fbit_type into a separate file,
+since gxfcache.h now needs font_type. (gxfcache.h, gxfont.h, gxftype.h)
+
+Makes the Flex feature in Type 1 fonts conform to the published
+specification, rather than always producing curves. The comment in the code
+(and in the NEWS entry for release 2.6) says that this breaks some very old
+Adobe fonts: if this turns out to be a problem, we'll figure out a test that
+will do the right thing for these fonts. (gstype1.c)
+
+Provides 'double' versions of some API functions to accommodate the
+increased use of doubles in the interpreter. (gschar.h, gschar.c)
+
+Adds a compile-time option to force the use of strip halftones, for
+debugging. (gshtscr.c)
+
+Changes the hint snapping algorithm in the Type 1 rasterizer so that it will
+only change a stem width by a maximum of 1/2 pixel rather than 1 pixel.
+This appears to help with dropouts at certain sizes. (gxhint2.c)
+
+Makes a few changes for clean compilation on BeOS. (stdpre.h, stat_.h,
+gxcpath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.01"></a>Version 5.01 (6/22/97)</h2>
+
+<p>
+This fixes a few bugs reported in the 5.0 release. This will be a
+commercially supported release.
+
+<h3><a name="V5.01_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - README referred to an obsolete file devarch.txt. (README)
+ - The comment on flip4x12 had a typo. (gsflip.c)
+ - The algorithm comments for adjusted_y_spans_pixel weren't precise
+enough. (gxfill.c)
+ - The usage message printed by the ps2pdf script didn't indicate
+that one can now insert options before the input file name. (ps2pdf)
+ - The file searching documentation didn't indicate that paths
+beginning with ./ or ../ are considered "explicit" and not subject to
+searching. (use.txt)
+ - The description of SEARCH_HERE_FIRST in the per-platform makefiles
+indicated that it only applied to initialization files, not to files
+specified on the command line as well. (*.mak)
+ - There were still some references to 16-bit implementations.
+(install.txt)
+
+Clarifies that -dNODISPLAY also suppresses output to other devices.
+(use.txt)
+
+Adds the e-mail address for reporting problems to the bug report form, and
+also a space to report makefile changes. (bug-form.txt)
+
+Adds a note under -g indicating that it fixes the media size. (use.txt)
+
+Adds an explanation of why Ghostscript can't use the system libraries for
+the JPEG package. (make.txt)
+
+Notes that ps2ai doesn't work properly with Adobe's Helvetica-Oblique font,
+and other fonts whose original FontMatrix involves skewing or rotation.
+(psfiles.txt)
+
+Updates the uniprint documentation slightly. (devices.txt)
+
+Notes that the new lj5 drivers do not work with the LJ5L. (devs.mak)
+
+Modifies the Aladdin Free Public License slightly to make it clearer that
+the exception for freely redistributable CD-ROMs only applies if the CD-ROM
+is being distributed by itself, not with anything else commercial. (This
+has always been the case, but the previous wording wasn't clear enough.)
+(PUBLIC)
+
+Notes that gcc with -O still has code generation problems on H-P RISC
+machines. (make.txt)
+
+Adds a pointer to Martin Lottermoser's hpdj driver. (new-user.txt)
+
+Enhances and reorganizes the documentation for building Ghostscript, in
+response to user feedback. (make.txt, install.txt)
+
+Adds a description of the EPSF recognition feature. (language.txt)
+
+</pre><h3><a name="V5.01_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - string__h was misspelled string_h in one place. (lib.mak)
+ - gs_dps.ps wasn't installed by "make install". (unix-end.mak)
+ - ccgs (used with non-ANSI C compilers) didn't do the right thing
+with -DPNG_USE_CONST. (ccgs)
+
+Adds support for version 96 of libpng, and updates all the makefiles to
+reference it. (libpng.mak, *.mak)
+
+Updates the MSVC makefiles to get rid of some warning messages and provide a
+way to specify a library path for the final link. (msvc*.mak)
+
+</pre><h3><a name="V5.01_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The usage message for the gslp utility had a minor typo.
+(gslp.ps)
+ - The "line printer" utility didn't expand tabs properly when
+producing PostScript output. (gslp.ps)
+ - The gslp utility didn't automatically include the date. (gslp)
+ - The line printer scripts didn't pass the script name to the
+utility program, so the usage message didn't use the correct name. (gsbj*,
+gsdj*, gslj*, gslp*, lp*)
+
+Modifies the gslp utility so that invoking it with no arguments prints the
+usage message. (gslp.ps)
+
+Adds the ability to specify the number of bits per component to the
+CMYK-viewing utility. (viewcmyk.ps)
+
+Changes the ps2pdf script so that on Windows NT, as on Unix, it allows
+omitting the output file name, automatically replacing the extension of the
+input file with .pdf. (ps2pdf.bat)
+
+</pre><h3><a name="V5.01_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some compilers didn't accept a #define with the macro name on the
+next line. (gdevpx.c)
+ - The procedure dash_pattern_eq was defined in two places.
+(gdevpdf.c)
+ - The uniprint driver sometimes dropped some output or got confused,
+because of a misunderstanding about how to update device procedure vectors
+properly. (gdevupd.c)
+ - The PostScript and EPS writers produced binary output for images,
+which generally can't be sent to PostScript printers. (gdevpsdf.h,
+gdevpdf.c, gdevps.c)
+ - The EPS writer put a %%EOF at the end of the file, which might
+cause problems for some spoolers if the file is embedded in another.
+(gdevps.c)
+
+Changes the implementation of printer drivers so that they flush the output
+stream after each page. We aren't absolutely sure that this is a good idea,
+but it prevents certain anomalous behavior where the last page isn't ejected
+properly. (gdevprn.c)
+
+Implements a long-delayed update to the mgr drivers, to restore the color
+mapping to an older one. (gdevmgr.h, gdevmgr.c)
+
+Updates the uniprint driver with a number of changes from its author.
+(gdevupd.c)
+
+</pre><h3><a name="V5.01_Platforms"></a>Platforms</h3><pre>
+
+Adds the JPEG, Postscript, and PCL XL drivers, which are included on all
+other platforms, to the MS Windows platforms. (bcwin32.mak, msvc4.mak,
+msvc5.mak, watcw32.mak)
+
+</pre><h3><a name="V5.01_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - composefont defined the resource with the font name and font
+directory interchanged. (gs_cmap.ps)
+ - With dFIXEDMEDIA, documents requesting other sizes caused an error
+instead of clipping the page. (gs_init.ps)
+ - PageSize Policy = 7 wasn't implemented. (However, the current
+implementation is wrong.) (gs_setpd.ps, zmedia2.c)
+ - FontType resource 42 wasn't defined even if Type 42 fonts were
+supported; similarly for FontType 9, 10, and 11 for CIDFonts. (gs_cidfn.ps,
+gs_res.ps)
+ - The error handling machinery would break if the name /errordict
+was redefined. (gs_init.ps)
+ - Level 1 systems got an /undefined in .doneshowpage. (zdevice.c,
+zdevice2.c)
+ - Because of an initialization order problem, copy didn't work on
+gstates. (zgeneric.c)
+
+Adds a naive implementation of findcolorrendering. (gs_lev2.ps, gs_res.ps)
+
+Removes the 'stopped' around run_string[_begin/continue/end] so that, as in
+4.03, errors print a hex dump and exit with a non-zero code instead of
+printing a readable message and continuing. (We aren't sure that this
+change didn't undo the fix in 5.0 regarding calling startjob from
+run_string.) (gs_init.ps)
+
+</pre><h3><a name="V5.01_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - stdin redirection failed for PDF files even if the new stdin was
+seekable. This was fixed in 4.02, but the fix stopped working with the
+introduction of .runexec. (pdf_main.ps)
+
+Makes the cross-reference reader accept a startxref value that points at the
+EOL before the xref line. The Adobe documentation doesn't allow this, but
+some real files are this way. (pdf_main.ps)
+
+</pre><h3><a name="V5.01_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The bounding box of a completely empty path was reported as
+garbage. (gxpath2.c)
+ - Stroking a path with more than one segment didn't produce correct
+output when anti-aliasing was used. (gspaint.c)
+ - The alpha-buffer device returned an incorrect clipping box,
+causing output to be discarded. (gdevabuf.c)
+ - gx_forward_get_clipping_box passed the wrong device to the target
+procedure, producing incorrect results. (gdevnfwd.c)
+ - The sin/cos procedure did some unnecessary computations
+(performance bug only). (gsmisc.c)
+ - The procedure for adjusting the ends of curves to match the
+tangents did some unnecessary computations (performance bug only).
+(gxpcopy.c)
+ - RAM-based banding always gave an invalidfileaccess error, due to a
+typo in memfile_fopen. (gxclmem.c)
+ - The algorithms for deciding whether a line is thin still weren't
+correct. (gxstroke.c)
+ - The fill adjustment values for the any-part-of-pixel case (adjust
+= 0.5) were (0.5-epsilon, 0.5+epsilon), which colored inappropriate
+additional pixels if the higher coordinate was integral. With considerable
+trepidation, we have changed this to (0.5-epsilon,0.5), which does the right
+thing in every case we can think of. (gxfill.c)
+ - When banding, paths were clipped to only 0.5 pixel outside their
+bounding box, which may be slightly too conservative; 1 pixel is safer.
+(gxclpath.c)
+ - The algorithm for testing whether an adjusted Y value spanned a
+pixel center was incorrect, causing some pixels to get colored incorrectly.
+(gxfill.c)
+ - 24-bit devices could cause a memory fault, by accessing a pointer
+just beyond the end of the line pointer array. (gdevm24.c)
+ - Astonishingly enough, the determination of which hints were
+applicable to a given segment of a Type 1 character was wrong in several
+different places. Fixing this in a way that correctly handled all allowed
+permutations of the coordinate system was not simple. (gxfont1.h,
+gxhint1.c, gxhint3.c)
+ - The debugging printout macros didn't include the syntactic hack to
+prevent an 'else' from begin assigned to the wrong 'if'. (gdebug.h)
+ - The bbox device was accidentally limited to 130 x 130 pixels (not
+130" x 130"). (bug introduced in 5.0) (gdevbbox.c)
+ - The bbox device didn't recognize PageBoundingBox in put_params,
+causing a possible /undefined error on [g]restore. (gdevbbox.c)
+ - setlinewidth didn't take the absolute value of its operand.
+(zgstate.c)
+ - Some code formatting was slightly off. (gximage5.c)
+ - Some extra pixels were written for Interpolated images, but they
+were immediately overwritten, so the output was correct. (gximage5.c)
+
+Changes the data flipping API from a macro to a procedure, adds a return
+value, and makes the individual flipping procedures private. (gsflip.h,
+gsflip.c)
+
+Adds (under an #ifdef FUTURE) code to allow passing multi-plane images
+through the band list. (gxclpath.h, gxclimag.c, gxclread.c)
+
+Adds (under an #ifdef FUTURE) code to allow passing interpolated images
+through the band list. NOTE: interpolated images will appear slightly
+different than without banding, because the part of the image intersecting
+each band will be scaled slightly differently in the (device) Y direction.
+(gxclpath.h, gxclimag.c, gxclread.c, gximage.c)
+
+Changes Type 1 hinting so that when it moves points on a curve, it does so
+by properly scaling the curve in the given direction. (gxhint3.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.0"></a>Version 5.0 (6/6/97)</h2>
+
+<p>
+This is the first public release since 4.03.
+
+<h3><a name="V5.0_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Fontmap.Sol was incorrectly referred to as Fontmap.Solaris.
+(use.txt)
+ - There was still a reference to pstoppm in the documentation.
+(psfiles.txt)
+ - The JPEG DOS source site information was out of date. (jpeg.mak)
+ - The list of devices included in the distributed Unix makefiles was
+out of date. (make.txt)
+ - The MCU size limitation on the DCT filters was documented
+incorrectly. (current.txt)
+ - The URL for the uniprint driver home page was incorrect.
+(devices.txt)
+ - The makefiles referred to sfilefd.c, which is now named sfxfd.c.
+(gs.mak, *.mak)
+
+Adds a VMS help file. (gs-vms.hlp)
+
+Removes documentation for Digital Unix (OSF/1) 1.2 and 1.3, which are now
+long obsolete, and updates the documentation for current versions.
+(make.txt)
+
+Notes that there may be a problem with libpng version 0.95. (libpng.mak)
+
+Adds some specific documentation for the JPEG drivers. (devices.txt)
+
+Adds a suggestion that people compiling Ghostscript check the values of
+JVERSION and PVERSION. (make.txt)
+
+Removes the requirement for setting the LIB environment variable when
+compiling with MSVC. (make.txt)
+
+</pre><h3><a name="V5.0_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were a number of small errors in the new OpenVMS makefile.
+(openvms.mak)
+ - The MSVC makefiles omitted a necessary switch to work around some
+"unspecified Pentium bugs". (msvccom.mak)
+ - The Borland makefile wasn't even close to working; fixing it
+required moving the compilation rule for genarch.exe into the
+compiler-specific makefiles. (bcwin32.mak, msvccom.mak, watcw32.mak,
+wincom.mak)
+ - There were some (harmless) undefined macro references in the MSVC
+makefile. (msvccom.mak)
+
+Makes it unnecessary to set the LIB environment variable for MSVC.
+(msvc4.mak, msvc5.mak, wincom.mak)
+
+Adds a note on compiling with the cygwin32 gcc compiler for Windows NT.
+(make.txt)
+
+Updates vms.mak yet again, hopefully for the last time. (vms.mak)
+
+Moves the CGM, JPEG, and MIFF file formats from DEVICE_DEVS8 to
+DEVICE_DEVS14 to shorten command lines; adds pcxcmyk to all platforms that
+include PCX format at all; adds jpeggray to all platforms that include jpeg.
+(devs.mak, *.mak)
+
+Adds -DPNG_USE_CONST for compiling libpng, to get rid of compiler warning
+messages. (gs.mak)
+
+Removes obsolete makefiles from the fileset. (tccommon.mak, tctail.mak)
+
+</pre><h3><a name="V5.0_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - restore was broken if -dNOBIND was invoked. This fix should have
+been in the 4.81 fileset, but was left out due to operator error.
+(gs_dps1.ps)
+ - Some compilers complained about macro argument replacement within
+a string literal. (isave.c)
+ -dSAFER didn't allow opening the %stdxxx files, which caused the
+combination of -dSAFER and -dNOBIND to cause an infinite error.
+(gs_init.ps)
+ - If C code used run_string to execute a startjob, an error
+occurred. (gs_init.ps)
+
+</pre><h3><a name="V5.0_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some compilers complained about macro argument replacement within
+a string literal. (gxclbits.c, gdevpdfi.c)
+ - At certain resolutions, a 1-pixel line of the wrong color could
+appear at one edge of landscape-oriented monobit images. (This is the 4th
+or 5th time we have "fixed" this one infuriatingly fragile piece of code.)
+(gxfixed.h, gximage1.c)
+ - The optimized code for landscape monobit images overlooked the
+possibility of partial images, causing parts of images to be translated and
+possibly clipped. (Yes, it's that same fragile piece of code.)
+(gximage1.c)
+ - The bounding box device allowed resetting its resolution, which
+could cause limitchecks from coordinate overflow. Our fix is to initialize
+the device to a very high resolution (4000 dpi), which reduces the maximum
+page size it can handle to about 130" on a side. (gdevbbox.c)
+ - The bounding box device wasn't identified as a page device.
+(gdevbbox.c)
+ - The bounding box device used alone disregarded changes in page
+size. (gdevbbox.c)
+ - One old compiler didn't allow a structure member name to be the
+same as a typedef name. (gximage.h, gximage.c, gximage4.c)
+ - The height and band intersection computations for banded images
+still weren't right, leading to inconsistencies in the band list and errors
+in the output (typically, thin horizontal white stripes at band boundaries).
+(gxclimag.c)
+
+Adds an extensive memory dump facility to the standard allocator.
+Eventually this should be moved into a separate file, but it would be too
+disruptive to do this just before a release. (gsalloc.c)
+
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1997, 1998, 1999, 2000 Aladdin Enterprises.
+All rights reserved.</small>
+
+<p>
+This software is provided AS-IS with no warranty, either express or
+implied.
+
+This software is distributed under license and may not be copied,
+modified or distributed except as expressly authorized under the terms
+of the license contained in the file LICENSE in this distribution.
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/History6.htm b/Master/xemtex/doc/ghostscript/History6.htm
new file mode 100644
index 00000000000..c6229760705
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History6.htm
@@ -0,0 +1,7293 @@
+<!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 6.n</title>
+<!-- $Id: History6.htm,v 1.30.2.11.2.6 2003/05/17 14:39:00 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] ================================================== -->
+
+<table width="100%" border="0">
+<tr><th align="center" bgcolor="#CCCC00"><font size=6>History of Ghostscript versions 6.n</font>
+</table>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version6.64">Version 6.64 (2001-04-07)</a>
+<ul>
+<li><a href="#6.64_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.64-Documentation">Documentation</a>,
+ <a href="#6.64-Procedures">Procedures</a>,
+ <a href="#6.64-Utilities">Utilities</a>,
+ <a href="#6.64-Drivers">Drivers</a>,
+ <a href="#6.64-PDF_writer">PDF writer</a>,
+ <a href="#6.64-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#6.64-Interpreter">Interpreter</a>,
+ <a href="#6.64-Streams">Streams</a>,
+ <a href="#6.64-Library">Library</a>,
+ <a href="#6.64-Other">Other</a>
+</ul>
+<li><a href="#Version6.63">Version 6.63 (2001-03-31)</a>
+<ul>
+<li><a href="#6.63_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.63-Documentation">Documentation</a>,
+ <a href="#6.63-Procedures">Procedures</a>,
+ <a href="#6.63-Utilities">Utilities</a>,
+ <a href="#6.63-Drivers">Drivers</a>,
+ <a href="#6.63-PDF_writer">PDF writer</a>,
+ <a href="#6.63-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#6.63-Interpreter">Interpreter</a>,
+ <a href="#6.63-Streams">Streams</a>,
+ <a href="#6.63-Library">Library</a>
+</ul>
+<li><a href="#Version6.62">Version 6.62 (2001-03-19)</a>
+<ul>
+<li><a href="#6.62-Documentation">Documentation</a>,
+ <a href="#6.62-Procedures">Procedures</a>,
+ <a href="#6.62-Utilities">Utilities</a>,
+ <a href="#6.62-Drivers">Drivers</a>,
+ <a href="#6.62-PDF_writer">PDF writer</a>,
+ <a href="#6.62-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#6.62-Interpreter">Interpreter</a>,
+ <a href="#6.62-Streams">Streams</a>,
+ <a href="#6.62-Library">Library</a>,
+ <a href="#6.62-Other">Other</a>
+</ul>
+<li><a href="#Version6.61">Version 6.61 (2001-02-21)</a>
+<ul>
+<li><a href="#6.61-Documentation">Documentation</a>,
+ <a href="#6.61-Procedures">Procedures</a>,
+ <a href="#6.61-Utilities">Utilities</a>,
+ <a href="#6.61-Drivers">Drivers</a>,
+ <a href="#6.61-PDF_writer">PDF writer</a>,
+ <a href="#6.61-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#6.61-Interpreter">Interpreter</a>,
+ <a href="#6.61-Streams">Streams</a>,
+ <a href="#6.61-Library">Library</a>,
+ <a href="#6.61-Other">Other</a>
+</ul>
+<li><a href="#Version6.60">Version 6.60 (2000-12-31)</a>
+<ul>
+<li><a href="#6.60_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.60-Documentation">Documentation</a>,
+ <a href="#6.60-Procedures">Procedures</a>,
+ <a href="#6.60-Utilities">Utilities</a>,
+ <a href="#6.60-Drivers">Drivers</a>,
+ <a href="#6.60-PDF_writer">PDF writer</a>,
+ <a href="#6.60-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#6.60-Interpreter">Interpreter</a>,
+ <a href="#6.60-Streams">Streams</a>,
+ <a href="#6.60-Library">Library</a>,
+ <a href="#6.60-Other">Other</a>
+</ul>
+<li><a href="#Version6.30">Version 6.30 (2000-10-03)</a>
+<ul>
+<li><a href="#6.30_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.30 Documentation">Documentation</a>,
+ <a href="#6.30 Procedures">Procedures</a>,
+ <a href="#6.30 Utilities">Utilities</a>,
+ <a href="#6.30 Drivers">Drivers</a>,
+ <a href="#6.30 PDF writer">PDF writer</a>,
+ <a href="#6.30 Interpreter (PDF)">Interpreter (PDF)</a>,
+ <a href="#6.30 Interpreter">Interpreter</a>,
+ <a href="#6.30 Streams">Streams</a>,
+ <a href="#6.30 Library">Library</a>,
+ <a href="#6.30 ???Other???">???Other???</a>
+</ul>
+<li><a href="#Version6.23">Version 6.23 (2000-08-07)</a>
+<ul>
+<li><a href="#6.23_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.23 Documentation">Documentation</a>,
+ <a href="#6.23 Procedures">Procedures</a>,
+ <a href="#6.23 Utilities">Utilities</a>,
+ <a href="#6.23 Drivers">Drivers</a>,
+ <a href="#6.23 PDF writer">PDF writer</a>,
+ <a href="#6.23 Interpreter (PDF)">Interpreter (PDF)</a>,
+ <a href="#6.23 Interpreter">Interpreter</a>,
+ <a href="#6.23 Library">Library</a>
+</ul>
+<li><a href="#Version6.22">Version 6.22 (2000-07-05)</a>
+<ul>
+<li><a href="#6.22_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.22 Documentation">Documentation</a>,
+ <a href="#6.22 Procedures">Procedures</a>,
+ <a href="#6.22 Utilities">Utilities</a>,
+ <a href="#6.22 Drivers">Drivers</a>,
+ <a href="#6.22 PDF writer">PDF writer</a>,
+ <a href="#6.22 Interpreter (PDF)">Interpreter (PDF)</a>,
+ <a href="#6.22 Interpreter">Interpreter</a>,
+ <a href="#6.22 Streams">Streams</a>,
+ <a href="#6.22 Library">Library</a>
+</ul>
+<li><a href="#Version6.21">Version 6.21 (2000-04-28)</a>
+<ul>
+<li><a href="#6.21_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.21 Documentation">Documentation</a>,
+ <a href="#6.21 Procedures">Procedures</a>,
+ <a href="#6.21 Utilities">Utilities</a>,
+ <a href="#6.21 Drivers">Drivers</a>,
+ <a href="#6.21 PDF writer">PDF writer</a>,
+ <a href="#6.21 Interpreter (PDF)">Interpreter (PDF)</a>,
+ <a href="#6.21 Interpreter">Interpreter</a>,
+ <a href="#6.21 Streams">Streams</a>,
+ <a href="#6.21 Library">Library</a>
+</ul>
+<li><a href="#Version6.20">Version 6.20 (2000-04-06)</a>
+<ul>
+<li><a href="#6.20_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.20 Documentation">Documentation</a>,
+ <a href="#6.20 Procedures">Procedures</a>,
+ <a href="#6.20 Utilities">Utilities</a>,
+ <a href="#6.20 Drivers">Drivers</a>,
+ <a href="#6.20 PDF writer">PDF writer</a>,
+ <a href="#6.20 Interpreter (PDF)">Interpreter (PDF)</a>,
+ <a href="#6.20 Interpreter">Interpreter</a>,
+ <a href="#6.20 Streams">Streams</a>,
+ <a href="#6.20 Library">Library</a>
+</ul>
+<li>(Versions 6.02 - 6.19 deliberately omitted.)
+<li><a href="#Version6.01">Version 6.01 (2000-03-17)</a>
+<ul>
+<li><a href="#6.01_Incompatible_changes">Incompatible changes</a>,
+ <a href="#6.01 Documentation">Documentation</a>,
+ <a href="#6.01 Procedures">Procedures</a>,
+ <a href="#6.01 Utilities">Utilities</a>,
+ <a href="#6.01 Drivers">Drivers</a>,
+ <a href="#6.01 PDF writer">PDF writer</a>,
+ <a href="#6.01 Interpreter (PDF)">Interpreter (PDF)</a>,
+ <a href="#6.01 Interpreter">Interpreter</a>,
+ <a href="#6.01 Streams">Streams</a>,
+ <a href="#6.01 Library">Library</a>
+</ul>
+<li><a href="#Version6.0">Version 6.0 (2000-02-03)</a>
+<ul>
+<li><a href="#6.0_Documentation">Documentation</a>,
+ <a href="#6.0_Procedures">Procedures</a>,
+ <a href="#6.0_Utilities">Utilities</a>,
+ <a href="#6.0_Drivers">Drivers</a>,
+ <a href="#6.0_Platforms">Platforms</a>,
+ <a href="#6.0_Fonts">Fonts</a>,
+ <a href="#6.0_PDF_writer">PDF writer</a>,
+ <a href="#6.0_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#6.0_Interpreter">Interpreter</a>,
+ <a href="#6.0_Streams">Streams</a>,
+ <a href="#6.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 6.n.
+For earlier versions, see the the history documents:
+
+<blockquote>
+<a href="History5.htm">History of Ghostscript versions 5.n</a><br>
+<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,
+PDF writer (included under Drivers through fileset 5.88), 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>
+
+<h1><a name="Version6.64"></a>Version 6.64 (2001-04-07)</h1>
+
+<p>
+This is probably the last beta release before 7.0. Most of the patches
+since last time are bug and portability fixes.
+
+<p>
+All problems registered on SourceForge numbered 414104 or lower are
+closed, except for the following: 209350, 215256, 219798, 221582,
+222534, 222727, 224056, 224863, 226477, 226584, 227684, 227709,
+228180, 228641, 230694, 231390, 404255, 404482, 405342, 406285,
+406689, 406696, 406979, 407342, 409887, 410371, 411753, 413114,
+413669, 413747, 414022, 414104.
+
+<h3><a name="6.64_Incompatible_changes"></a>Incompatible changes</h3>
+
+<pre>
+(Library)
+ - The gs_logical_operation_t type now has a bit indicating
+PDF 1.4 transparency.
+(Build process)
+ - The default directories for XLIBDIR and XINCLUDE now point
+to /usr/X11R6.
+
+
+<h2><a name="6.64-Documentation"></a>Documentation</h2><pre>
+
+1. Removing the article "Minor Bugs. kshow doesn't restore currentfont after
+running proc." due to fixed. 2. Adding article "Buffering in input filters"
+to "Differences from Adobe Implementation". (doc/Issues.htm [1.6]:
+2001/04/03 15:53:01 igorm)
+
+Updates Glenn Ramsey's email address in the Epson 300 documentation.
+(doc/Devices.htm [1.24]: 2001/04/04 04:25:00 raph)
+
+Adds request for code-review submissions to identify intended branches.
+(doc/Maintain.htm [1.14]: 2001/04/04 07:22:48 raph)
+
+Move SourceForge bug #226943 to the "Other implementation" section of this
+document. The %ram% device has never been a user or customer issue, but it
+might be handy to have. (doc/Projects.htm [1.27]: 2001/04/04 16:36:36 rayjj)
+
+Updates to documentation. Remove the statement that the Inprise compiler is
+used for Windows distribution archives. (doc/Bug-info.htm [1.14],
+doc/Fonts.htm [1.16], doc/Install.htm [1.20], doc/Make.htm [1.26],
+doc/New-user.htm [1.23], doc/Release.htm [1.32], doc/Tester.htm [1.10]:
+2001/04/05 08:49:57 ghostgum)
+
+Adds issues from SourceForge bug numbers: 232334, 233403, 406643. Also adds
+missing bug ID for #228808. (doc/Issues.htm [1.7]: 2001/04/05 14:44:39
+rayjj)
+
+Various documenation fixups. Removes pointer to external pdf_sec.ps now that
+the full implementation is in our distribution. Adds note on the
+class="offset" attribute to the html style guidelines. (doc/API.htm [1.5],
+doc/Bug-form.htm [1.18], doc/Htmstyle.htm [1.13], doc/New-user.htm [1.24],
+doc/Psfiles.htm [1.17], doc/Readme.htm [1.25]: 2001/04/06 11:27:00 giles)
+
+Uses better test for avoiding crash on "gs -h". Also updates API document.
+Thanks to Russell Lang. (doc/API.htm [1.6]: 2001/04/07 00:08:08 raph)
+
+adds a last few doc fixups before the 6.64 beta release.
+(doc/Bug-info.htm [1.15], doc/C-style.htm [1.15], doc/Htmstyle.htm [1.14]:
+2001/04/07 00:15:02 giles)
+
+Integrates patch from hpijs 0.94 so that Ghostscript can use hpijs drivers.
+(doc/Devices.htm [1.25]: 2001/04/07 00:33:29 raph)
+
+Corrections to interpreter API documentation. If "gs -h" executed,
+gsapi_exit() must be called next. Assign copyright to artofcode LLC.
+(doc/API.htm [1.7]: 2001/04/07 01:17:50 ghostgum)
+
+Updates version number and date in preparation for 6.64 release. Updates
+Develop.htm to accurately list source files. (doc/API.htm [1.8],
+doc/Bug-form.htm [1.19], doc/Bug-info.htm [1.16], doc/C-style.htm [1.16],
+doc/Commprod.htm [1.12], doc/Copying.htm [1.10], doc/Current.htm [1.10],
+doc/DLL.htm [1.12], doc/Develop.htm [1.36], doc/Devices.htm [1.26],
+doc/Drivers.htm [1.18], doc/Fonts.htm [1.17], doc/Helpers.htm [1.14],
+doc/History1.htm [1.10], doc/History2.htm [1.10], doc/History3.htm [1.10],
+doc/History4.htm [1.10], doc/History5.htm [1.12], doc/History6.htm [1.25],
+doc/Htmstyle.htm [1.15], doc/Install.htm [1.21], doc/Issues.htm [1.8],
+doc/Language.htm [1.29], doc/Lib.htm [1.10], doc/Maintain.htm [1.15],
+doc/Make.htm [1.27], doc/New-user.htm [1.25], doc/News.htm [1.83],
+doc/Projects.htm [1.28], doc/Ps-style.htm [1.10], doc/Ps2epsi.htm [1.11],
+doc/Ps2pdf.htm [1.28], doc/Psfiles.htm [1.18], doc/README [1.9],
+doc/Readme.htm [1.26], doc/Release.htm [1.33], doc/Source.htm [1.10],
+doc/Tester.htm [1.11], doc/Unix-lpr.htm [1.10], doc/Use.htm [1.26],
+doc/Xfonts.htm [1.10], doc/gs-vms.hlp [1.9], man/dvipdf.1 [1.7],
+man/font2c.1 [1.7], man/gs.1 [1.7], man/gslp.1 [1.7], man/gsnd.1 [1.7],
+man/pdf2dsc.1 [1.7], man/pdf2ps.1 [1.9], man/pdfopt.1 [1.7],
+man/pf2afm.1 [1.7], man/pfbtopfa.1 [1.8], man/printafm.1 [1.7],
+man/ps2ascii.1 [1.7], man/ps2epsi.1 [1.7], man/ps2pdf.1 [1.11],
+man/ps2pdfwr.1 [1.8], man/ps2ps.1 [1.14], man/wftopfa.1 [1.7]: 2001/04/07
+07:55:24 raph)
+
+Trivial doc patch. (doc/Develop.htm [1.37]: 2001/04/07 07:58:50 raph)
+
+Documentation fixups for broken internal links. (doc/Devices.htm [1.27],
+doc/Maintain.htm [1.16], doc/Make.htm [1.28], doc/Release.htm [1.34]:
+2001/04/07 08:18:53 giles)
+
+</pre><h2><a name="6.64-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - Speed up shading type 1. (lib.mak [1.47]: 2001/04/05 08:32:28
+igorm)
+
+Adds target to OS/2 makefile to build distribution zip archive. Disables
+multiple image windows for OS/2 because we can't tell when subsequent
+windows are closed. To allow multiple windows we would need to rewrite
+gspmdrv.c. (os2.mak [1.14]: 2001/04/01 10:13:24 ghostgum)
+
+Remove the bmpa*** devices from the default build. These are example devices
+to demonstrate async rendering but do not have any advantages to users over
+the bmp*** devices, and their inclusion requires thread support which is not
+available on all systems. Resolves SourceForge bug #213799.
+(unix-gcc.mak [1.15], unixansi.mak [1.11], unixtrad.mak [1.11]: 2001/04/03
+20:04:46 rayjj)
+
+updates to support libpng v1.0.9. (all-arch.mak [1.7], bcwin32.mak [1.9],
+dvx-gcc.mak [1.9], libpng.mak [1.5], msvc32.mak [1.14], msvclib.mak [1.11],
+openvms.mak [1.10], os2.mak [1.15], ugcclib.mak [1.10], unix-gcc.mak [1.16],
+unixansi.mak [1.12], unixtrad.mak [1.12], watc.mak [1.11],
+watclib.mak [1.11], watcw32.mak [1.10]: 2001/04/04 07:51:15 giles)
+
+updates to support libpng v1.0.10. OS/2 makefile fixup for v1.0.9 and above
+from Russell Lang. (all-arch.mak [1.8], bcwin32.mak [1.10],
+dvx-gcc.mak [1.10], libpng.mak [1.6], msvc32.mak [1.15], msvclib.mak [1.12],
+openvms.mak [1.11], os2.mak [1.16], ugcclib.mak [1.11], unix-gcc.mak [1.17],
+unixansi.mak [1.13], unixtrad.mak [1.13], watc.mak [1.12],
+watclib.mak [1.12], watcw32.mak [1.11]: 2001/04/06 07:27:22 giles)
+
+Integrates patch from hpijs 0.94 so that Ghostscript can use hpijs drivers.
+(contrib.mak [1.23]: 2001/04/07 00:33:29 raph)
+
+Changes default XLIBDIR and XINCLUDE to /usr/X11R6, which is far more likely
+than the previous values. (contrib.mak [1.24], ugcclib.mak [1.12],
+unix-gcc.mak [1.18], unixtrad.mak [1.14]: 2001/04/07 06:50:27 raph)
+
+Updates version number and date in preparation for 6.64 release. Updates
+Develop.htm to accurately list source files. (version.mak [1.32]: 2001/04/07
+07:55:25 raph)
+
+</pre><h2><a name="6.64-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - -dDELAYSAFER flag added; append operator fixed in Windows and OS/2
+scripts; literal newlines removed from sed script. Bugs #223896, #230699
+(lib/ps2epsi [1.5], lib/ps2epsi.bat [1.4], lib/ps2epsi.cmd [1.2],
+lib/ps2epsi.ps [1.5]: 2001/04/04 04:45:42 alexcher)
+ - The fileposition operator cannot be used on some data sources. Use
+.fileposition (if on Ghostscript) and make some other changes to make this
+portable to other PostScript interpreters. SourceForge bug #223005.
+(lib/image-qa.ps [1.3]: 2001/04/04 04:54:53 rayjj)
+ - Previous fix had OutputFile set to a debug value. Restoring it to
+NUL (lib/ps2epsi.bat [1.5]: 2001/04/04 05:19:33 alexcher)
+ - Adds whitespace to sed command in ps2epsi, needed on RedHat Linux 6.2.
+(lib/ps2epsi [1.6]: 2001/04/04 21:05:00 raph)
+
+</pre><h2><a name="6.64-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - JPEG data made GC-traceable to prevent early freeing. Bug # 227090
+gdevjpeg.c gdevpsdu.c sdeparam.c zfdctd.c zfdcte.c : JPEG control structure
+is allocated with a descriptor. sdct.h : defines descriptors for JPEG
+structures. sjpegc.c : implements the linked list of JPEG core blocks
+sjpegd.c sjpege.c : corrects the initialization order of (de)compress
+struct's gsstruct.h : yet another macro for a structure with 1 string and 1
+ptr (gdevjpeg.c [1.3], gdevpsdu.c [1.10]: 2001/04/04 19:20:27 alexcher)
+
+Integrates patch from hpijs 0.94 so that Ghostscript can use hpijs drivers.
+(gdevhpij.c [1.1], gdevhpij.h [1.1]: 2001/04/07 00:33:29 raph)
+
+</pre><h2><a name="6.64-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - Emits W or W* after path construction operators when outputting
+clip paths in the pdfwrite driver, to be correct with respect to the PDF
+spec. (gdevpdfd.c [1.14]: 2001/04/07 07:12:52 raph)
+
+</pre><h2><a name="6.64-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - The search area for %%EOF at the end of PDF file is increased to
+4K to cover a file generated by Distiller 3.02b for AIX 4.1.1 Customer #580
+(lib/pdf_main.ps [1.31]: 2001/04/07 01:34:23 alexcher)
+ - A comment is corrected to match the source.
+(lib/pdf_main.ps [1.32]: 2001/04/07 01:47:00 alexcher)
+
+PDF 1.4 improvements: Fixes garbage collection of device filter stack.
+Forces idempotent path drawing in transparency mode. Corrects handling of
+Group at toplevel page. (lib/pdf_draw.ps [1.29], lib/pdf_main.ps [1.30]:
+2001/04/06 22:23:44 raph)
+
+</pre><h2><a name="6.64-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Windows poll function now returns a code to interrupt Ghostscript
+if the text window is closing. Don't show message box on exit if user closed
+the text window. (dwmain.c [1.4], dwtext.c [1.3]: 2001/04/03 11:12:58
+ghostgum)
+ - equality operation between a pointer and enum constant (with 0
+value) is a syntax error on CodeWarrior. Replacing the enum with NULL. From
+Bernd Heller (zdscpars.c [1.10]: 2001/04/04 05:25:32 alexcher)
+ - Register /All and /None in the name table on look-up. Otherwise an
+attempt to set the separation color space fails with /undefined
+(zcssepr.c [1.7]: 2001/04/04 16:09:15 alexcher)
+ - JPEG data made GC-traceable to prevent early freeing. Bug # 227090
+gdevjpeg.c gdevpsdu.c sdeparam.c zfdctd.c zfdcte.c : JPEG control structure
+is allocated with a descriptor. sdct.h : defines descriptors for JPEG
+structures. sjpegc.c : implements the linked list of JPEG core blocks
+sjpegd.c sjpege.c : corrects the initialization order of (de)compress
+struct's gsstruct.h : yet another macro for a structure with 1 string and 1
+ptr (zfdctd.c [1.4], zfdcte.c [1.4]: 2001/04/04 19:20:27 alexcher)
+ - Set default size of MAX_ESTACK to 5000. This is the minimal fix
+recommended by L. Peter Deutsch in the followup to SourceForge bug #224095.
+This should be fixed later to handle automatic stack expansion. The
+approaches are defined by Peter as #2 and #3. Interim resolution to
+SorceForge bug #224095. (interp.c [1.8]: 2001/04/06 06:42:45 rayjj)
+ - Apparently Japanese Windows uses WM_USER+1 internally and
+conflicts with gswin32c messages starting from WM_USER+1. So gswin32c
+messages are moved to WM_USER+101 range. Fix from Akira Kakuto
+(dwmainc.c [1.4]: 2001/04/06 08:36:02 ghostgum)
+ - Do not put Windows stdin into binary mode if it is the console
+because this returns CR and LF each time the Enter key is pressed. This
+caused Ghostscript to not pause at following showpage prompts.
+(dwmainc.c [1.5]: 2001/04/06 08:43:29 ghostgum)
+ - Genoa FTS 035-07.ps got a SEGV error caused by data being
+allocated in non-GC memory, but pointer enumumeration giving these pointers
+to the GC for tracing. Since these objects didn't have GC type headers bad
+things happened. Also change one of the allocations in sjpegc.c to immovable
+that was not -- this change was not needed to prevent the crash.
+(zfdctd.c [1.5]: 2001/04/07 00:33:22 rayjj)
+ - Compressed fonts are now recognized as narrow during font
+substitution. Customer #580 (lib/gs_fonts.ps [1.11]: 2001/04/07 01:07:01
+alexcher)
+ - two small issues with compilation under xlc on IBM AIX RS6000, a
+name conflict with structures names (u)int64, and trailing commas in enum
+declarations. Patch from Dan Coby. Sourceforge bug #414328.
+(dscparse.h [1.4]: 2001/04/07 07:28:33 giles)
+
+Adds target to OS/2 makefile to build distribution zip archive. Disables
+multiple image windows for OS/2 because we can't tell when subsequent
+windows are closed. To allow multiple windows we would need to rewrite
+gspmdrv.c. (dpmain.c [1.3]: 2001/04/01 10:13:24 ghostgum)
+
+updates to support libpng v1.0.10. OS/2 makefile fixup for v1.0.9 and above
+from Russell Lang. (imain.c [1.11]: 2001/04/06 07:27:22 giles)
+
+Removed unecessary include of Macintosh QDOffscreen.h header (iapi.h [1.2]:
+2001/04/06 22:57:46 bdheller)
+
+Uses better test for avoiding crash on "gs -h". Also updates API document.
+Thanks to Russell Lang. (imain.c [1.12]: 2001/04/07 00:08:08 raph)
+
+Updates version number and date in preparation for 6.64 release. Updates
+Develop.htm to accurately list source files. (lib/gs_init.ps [1.33]:
+2001/04/07 07:55:25 raph)
+
+Removes \r\n line ends inadvertently added. (dscparse.h [1.5]: 2001/04/07
+08:07:17 raph)
+
+</pre><h2><a name="6.64-Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - JPEG data made GC-traceable to prevent early freeing. Bug # 227090
+gdevjpeg.c gdevpsdu.c sdeparam.c zfdctd.c zfdcte.c : JPEG control structure
+is allocated with a descriptor. sdct.h : defines descriptors for JPEG
+structures. sjpegc.c : implements the linked list of JPEG core blocks
+sjpegd.c sjpege.c : corrects the initialization order of (de)compress
+struct's gsstruct.h : yet another macro for a structure with 1 string and 1
+ptr (sdct.h [1.3], sdeparam.c [1.3], sjpegc.c [1.3], sjpegd.c [1.3],
+sjpege.c [1.3]: 2001/04/04 19:20:27 alexcher)
+ - Genoa FTS 035-07.ps got a SEGV error caused by data being
+allocated in non-GC memory, but pointer enumumeration giving these pointers
+to the GC for tracing. Since these objects didn't have GC type headers bad
+things happened. Also change one of the allocations in sjpegc.c to immovable
+that was not -- this change was not needed to prevent the crash.
+(sjpegc.c [1.4]: 2001/04/07 00:33:22 rayjj)
+
+</pre><h2><a name="6.64-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Register /All and /None in the name table on look-up. Otherwise an
+attempt to set the separation color space fails with /undefined
+(gscsepr.c [1.8]: 2001/04/04 16:09:15 alexcher)
+ - JPEG data made GC-traceable to prevent early freeing. Bug # 227090
+gsstruct.h : yet another macro for a structure with 1 string and 1 ptr
+(gsstruct.h [1.8]: 2001/04/04 18:45:08 alexcher)
+ - Speed up shading type 1. (gsshade.c [1.4], gxshade1.c [1.9]:
+2001/04/05 08:32:28 igorm)
+ - Some compilers complain that: "Argument of type "stream *" is
+incompatible with parameter of type "FILE *". Thanks to Nelson Beebe for
+finding this (on SGI). (gs_stdio.h [1.2]: 2001/04/06 03:19:07 rayjj)
+ - Fixes crashes in Type 4 function evaluator when stack is empty.
+(gsfunc4.c [1.5]: 2001/04/06 22:22:38 raph)
+
+Adds a lop_pdf14 field to logical operators, which is used to force non-
+idempotent drawing of paths. (gsropt.h [1.4]: 2001/04/05 23:21:15 raph)
+
+PDF 1.4 improvements: Fixes garbage collection of device filter stack.
+Forces idempotent path drawing in transparency mode. Corrects handling of
+Group at toplevel page. (gdevp14.c [1.2], gsstate.c [1.11]: 2001/04/06
+22:23:44 raph)
+
+</pre><h2><a name="6.64-Other"></a>Other</h2><pre>
+
+Fixes problems:
+ - two small issues with compilation under xlc on IBM AIX RS6000, a
+name conflict with structures names (u)int64, and trailing commas in enum
+declarations. Patch from Dan Coby. Sourceforge bug #414328.
+(icclib/icc.c [1.2], icclib/icc.h [1.2]: 2001/04/07 07:28:33 giles)
+
+Removes \r\n line ends inadvertently added. (icclib/icc.c [1.3],
+icclib/icc.h [1.3]: 2001/04/07 08:07:16 raph)
+
+<hr>
+
+<h1><a name="Version6.63"></a>Version 6.63 (2001-03-31)</h1>
+
+<p>
+This is the second beta release for the upcoming 7.0 release. This
+fileset contains a number of stability improvements for the new
+display device, integration of PDF 1.4 rendering with all devices, and
+the usual round of bug fixes.
+
+<p>
+All problems registered on SourceForge numbered 411753 or lower are
+closed, except for the following: 201955, 202735, 206652, 209350,
+213799, 215256, 219798, 220967, 221582, 222534, 222727, 223005,
+223754, 223896, 223992, 224056, 224095, 224863, 226477, 226584,
+226943, 227090, 227684, 227709, 228180, 228641, 230694, 230699,
+231390, 232334, 233403, 404255, 404482, 405313, 406285, 406643,
+406689, 406696, 406979, 407342, 409887, 410371, 410722, 411753.
+
+<h3><a name="6.63_Incompatible_changes"></a>Incompatible changes</h3>
+
+<pre>
+(Library)
+ - The gs_text_enum_common structure has a new imaging_dev field
+which is used by the bbox device to intercept low-level drawing
+operations when drawing text.
+ - There is a new pdf14 device filter used for rendering PDF 1.4
+documents.
+
+
+<h2><a name="6.63-Documentation"></a>Documentation</h2><pre>
+
+Moves the following SourceForge bugs to the Issues.htm documentation:
+201955, 220967, 223992. (doc/Issues.htm [1.2]: 2001/03/20 07:36:30 rayjj)
+
+Added 2 issues related to JPEG in PDF, Bug 226391 (doc/Issues.htm [1.3]:
+2001/03/20 16:41:28 alexcher)
+
+Adds %printer% device to Windows to allow a printer to be specified as
+-sOutputFile="%printer%Printer Name". This replaces the use of
+"\\spool\Printer Name" for all but Windows 3.1/Win32s. Unlike the old
+\\spool\, the new %printer% device does not write a large temporary file.
+(doc/Install.htm [1.17]: 2001/03/26 11:28:20 ghostgum)
+
+Change the search order for the Ghostscript Windows DLL to try the
+executable directory before the location specified in the GS_DLL environment
+variable. (doc/Install.htm [1.18]: 2001/03/27 09:35:22 ghostgum)
+
+Some attributes of Catalog object are lost during PDF to PDF conversion
+(doc/Issues.htm [1.4]: 2001/03/27 21:03:18 alexcher)
+
+Increments version number after 6.62 release. (doc/News.htm [1.81]:
+2001/03/28 21:27:15 raph)
+
+Updates dates in preparation for 6.63 beta release. News updated.
+(doc/API.htm [1.4], doc/Bug-form.htm [1.17], doc/Bug-info.htm [1.13],
+doc/C-style.htm [1.14], doc/Commprod.htm [1.11], doc/Copying.htm [1.9],
+doc/Current.htm [1.9], doc/DLL.htm [1.11], doc/Develop.htm [1.35],
+doc/Devices.htm [1.23], doc/Drivers.htm [1.17], doc/Fonts.htm [1.15],
+doc/Helpers.htm [1.13], doc/History1.htm [1.9], doc/History2.htm [1.9],
+doc/History3.htm [1.9], doc/History4.htm [1.9], doc/History5.htm [1.11],
+doc/History6.htm [1.23], doc/Htmstyle.htm [1.12], doc/Install.htm [1.19],
+doc/Issues.htm [1.5], doc/Language.htm [1.28], doc/Lib.htm [1.9],
+doc/Maintain.htm [1.13], doc/Make.htm [1.25], doc/New-user.htm [1.22],
+doc/News.htm [1.82], doc/Projects.htm [1.26], doc/Ps-style.htm [1.9],
+doc/Ps2epsi.htm [1.10], doc/Ps2pdf.htm [1.27], doc/Psfiles.htm [1.16],
+doc/README [1.8], doc/Readme.htm [1.24], doc/Release.htm [1.31],
+doc/Source.htm [1.9], doc/Tester.htm [1.9], doc/Unix-lpr.htm [1.9],
+doc/Use.htm [1.25], doc/Xfonts.htm [1.9], doc/gs-vms.hlp [1.8],
+man/dvipdf.1 [1.6], man/font2c.1 [1.6], man/gs.1 [1.6], man/gslp.1 [1.6],
+man/gsnd.1 [1.6], man/pdf2dsc.1 [1.6], man/pdf2ps.1 [1.8],
+man/pdfopt.1 [1.6], man/pf2afm.1 [1.6], man/pfbtopfa.1 [1.7],
+man/printafm.1 [1.6], man/ps2ascii.1 [1.6], man/ps2epsi.1 [1.6],
+man/ps2pdf.1 [1.10], man/ps2pdfwr.1 [1.7], man/ps2ps.1 [1.13],
+man/wftopfa.1 [1.6]: 2001/04/01 01:10:54 raph)
+
+</pre><h2><a name="6.63-Procedures"></a>Procedures</h2><pre>
+
+Adds %printer% device to Windows to allow a printer to be specified as
+-sOutputFile="%printer%Printer Name". This replaces the use of
+"\\spool\Printer Name" for all but Windows 3.1/Win32s. Unlike the old
+\\spool\, the new %printer% device does not write a large temporary file.
+(winlib.mak [1.9]: 2001/03/26 11:28:20 ghostgum)
+
+Adds Windows %printer% device to MS Visual C++ build. (msvc32.mak [1.13]:
+2001/03/26 12:00:07 ghostgum)
+
+Adds icclib subdirectory to tarballs. (toolbin/makeset.tcl [1.7]: 2001/03/28
+21:24:00 raph)
+
+Increments version number after 6.62 release. (version.mak [1.30]:
+2001/03/28 21:27:15 raph)
+
+Applies PDF 1.4 rendering with all devices. Previously, only pnga device
+contained PDF 1.4 rendering capabilities. Now, when the PDF 1.4 imaging
+model is detected in the source file, it installs the pdf 1.4 rendering
+device as a device filter. (lib.mak [1.46]: 2001/04/01 00:30:41 raph)
+
+Updates dates in preparation for 6.63 beta release. News updated.
+(version.mak [1.31]: 2001/04/01 01:10:55 raph)
+
+</pre><h2><a name="6.63-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - closefile added for procedure based stdio to prevent disabled
+stream from appearing valid. (ziodevsc.c [1.2]: 2001/03/27 09:37:10
+ghostgum)
+ - Avoid rangecheck error when character code exceeds 255. Support
+zero-size bitmap used by some fonts for space character.
+(lib/bdftops.ps [1.3]: 2001/03/27 20:53:36 alexcher)
+ - BATCH parameter is added to all bdftops* scripts
+(lib/bdftops [1.2], lib/bdftops.bat [1.3], lib/bdftops.cmd [1.2]: 2001/03/27
+21:15:55 alexcher)
+ - Corrects memory allocation of command line arguments in the
+programs which load the Ghostscript interpreter DLL / shared object.
+(dxmain.c [1.2]: 2001/03/31 10:09:47 ghostgum)
+
+Adds %printer% device to Windows to allow a printer to be specified as
+-sOutputFile="%printer%Printer Name". This replaces the use of
+"\\spool\Printer Name" for all but Windows 3.1/Win32s. Unlike the old
+\\spool\, the new %printer% device does not write a large temporary file.
+(gp_msprn.c [1.1]: 2001/03/26 11:28:20 ghostgum)
+
+</pre><h2><a name="6.63-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - AutoFilter.* options now select lossless compression for the image
+smaller than 64 pixels in any dimension. Bug # 226391 from a free user.
+(gdevpsdi.c [1.14]: 2001/03/24 04:17:07 alexcher)
+ - In the display device, allow NULL as a valid value for
+DisplayHandle. Correct the code which requires the device to be closed
+before changing the DisplayHandle and DisplayFormat parameters. SourceForge
+bug # 411101. (gdevdsp.c [1.2]: 2001/03/28 08:46:15 ghostgum)
+ - mdev-&gt;memory member was set to 0 causing gx_device_enum_ptr()
+not enumerate mdev. This led to freeing of mdev by GC and memory exceptions
+during de-allocation of the display device. (gdevdsp.c [1.3]: 2001/03/28
+21:50:56 alexcher)
+ - Correct memory allocation problems in the display device. Return
+correct pointers from display_enum_ptrs so that the memory device and bitmap
+are not moved or prematurely freed. Adds a finalize procedure. Change the
+memory device to not forward to the display device. Mark the memory device
+as retained so it gets freed at the correct time. (gdevdsp.c [1.4],
+gdevdsp2.h [1.2]: 2001/03/29 07:26:57 ghostgum)
+ - Prevents the buffered mode of the x11 device from missing updates
+from the bitmap buffer to the X display. Fix for Artifex customer #1130
+(gdevx.c [1.8]: 2001/03/30 18:22:28 rayjj)
+
+Adds Tumble parameter to mswinpr2 device for specifying the duplex
+arrangement. Adds QueryUser to the parameters returned by
+win_pr2_get_params, so that it works from the command line.
+(gdevwpr2.c [1.8]: 2001/03/26 09:44:08 ghostgum)
+
+Adds %printer% device to Windows to allow a printer to be specified as
+-sOutputFile="%printer%Printer Name". This replaces the use of
+"\\spool\Printer Name" for all but Windows 3.1/Win32s. Unlike the old
+\\spool\, the new %printer% device does not write a large temporary file.
+(gdevwpr2.c [1.9]: 2001/03/26 11:28:20 ghostgum)
+
+Applies PDF 1.4 rendering with all devices. Previously, only pnga device
+contained PDF 1.4 rendering capabilities. Now, when the PDF 1.4 imaging
+model is detected in the source file, it installs the pdf 1.4 rendering
+device as a device filter. (gdevp14.h [1.1]: 2001/04/01 00:30:41 raph)
+
+Change: The Ghostscript 'pwrite' function name conflicted with the standard
+pwrite function defined in unistd.h on several systems. To avoid confusion
+with the standard function change the name to stream_write. Also change
+'pputc' to 'stream_putc' and 'pputs' to 'stream_puts'. Fixes SourceForge bug
+#410772. Fix by Ray Johnston. (gdevps.c [1.16], gdevpsdu.c [1.9],
+gdevpsu.c [1.4]: 2001/04/01 00:35:26 raph)
+
+</pre><h2><a name="6.63-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - coordinate range is reduced to +/- 16383 to satisfy actual AR4
+restrictions. When CTM was scaled to reduce the range, line width in stroke
+and CTM in fill were wrong. Bug # 409105 from raf_mellen at
+users.sourceforge.net (gdevpdfd.c [1.12]: 2001/03/21 04:25:48 alexcher)
+ - ARTICLE pdfmark generated invalid bead object if /Page key was
+left out. Bug # 227651 from mbentley at users.sourceforge.net
+(gdevpdfm.c [1.10]: 2001/03/21 05:10:31 alexcher)
+ - initial values of fill and stroke color didn't change when
+ProcessColorModel changed. An attempt to set white color in CMYK mode was
+ignored because it was considered equal to the default color. Bug #410441
+from a free user. (gdevpdf.c [1.30]: 2001/03/22 15:12:48 alexcher)
+ - pdf_reset_graphics() didn't set correct default color (black) in
+/DeviceCMYK color model. An attempt to set white color was ignored because
+it was considered equal to the default color causing white objects rendered
+black. Bug #410441 from a free user. (gdevpdfg.c [1.11]: 2001/03/23 22:04:19
+alexcher)
+ - Maximum depth of an outline tree increased from 8 to 32. Bug
+#410595 from a free user. (gdevpdfx.h [1.29]: 2001/03/23 22:18:28 alexcher)
+
+Change: The Ghostscript 'pwrite' function name conflicted with the standard
+pwrite function defined in unistd.h on several systems. To avoid confusion
+with the standard function change the name to stream_write. Also change
+'pputc' to 'stream_putc' and 'pputs' to 'stream_puts'. Fixes SourceForge bug
+#410772. Fix by Ray Johnston. (gdevpdf.c [1.31], gdevpdfb.c [1.4],
+gdevpdfc.c [1.15], gdevpdfd.c [1.13], gdevpdfe.c [1.9], gdevpdfg.c [1.12],
+gdevpdfj.c [1.6], gdevpdfm.c [1.11], gdevpdfo.c [1.7], gdevpdfs.c [1.3],
+gdevpdft.c [1.32], gdevpdfu.c [1.15], gdevpdfw.c [1.10]: 2001/04/01 00:35:26
+raph)
+
+</pre><h2><a name="6.63-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - OmniForm generates PDF files with endobj missing in some objects.
+Adobe Acrobat Reader ignores this. Generally speaking, Ghostscript does not
+attempt to accept files that grossly fail to obey the Adobe specification
+and are produced by software other than a very few extremely widespread
+applications. However work-around for this case is easy and unlikely to
+break anything. SourceForge bug #406694. (lib/pdf_base.ps [1.14]: 2001/03/20
+05:04:59 alexcher)
+ - URI action was not converted to corresponding pdfmark and lost
+during PDF to PDF conversion. Bug #409245, patch Leon Bottou with some
+changes. (lib/pdf_main.ps [1.28]: 2001/03/24 23:59:23 alexcher)
+
+Implementation of security hooks for PDF reader by Geoffrey Keating is
+merged into the main GS code base. (lib/pdf_sec.ps [1.3]: 2001/03/25
+02:03:44 alexcher)
+
+Applies PDF 1.4 rendering with all devices. Previously, only pnga device
+contained PDF 1.4 rendering capabilities. Now, when the PDF 1.4 imaging
+model is detected in the source file, it installs the pdf 1.4 rendering
+device as a device filter. (lib/pdf_main.ps [1.29]: 2001/04/01 00:30:41
+raph)
+
+</pre><h2><a name="6.63-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - flush procedure based stdout and stderr on exit. (imain.c [1.8]:
+2001/03/27 09:38:39 ghostgum)
+ - Fix for CIDFontType 0 : 1. Erroneous glyphs are drawn by cshow
+(with -dNOCACHE); 2. Glyphs written in horizontal direction instead vertical
+(with anti-aliasing); 3. Erroneous glyphs and awkward metrics (with
+anti-aliasing and -dNOCACHE); Patches 1 &amp; 3 from Hideyuki Suzuki
+(hideyuki), improved by igorm. SourceForge bug #222683. (zchar1.c [1.7]:
+2001/03/27 09:56:39 igorm)
+ - Changes to introduce the min_left stream state variable set this
+to 1 for procedure streams, which caused 1 character to be retained in the
+stream buffer which was not passed to the client. This broke the DLL
+interface where procedure callouts were used to get the string from the
+callback. Procedure streams have no need for EOD lookahead (to force
+closure) so the correct min_left value is 0. SourceForge bug #404331.
+(zfproc.c [1.9]: 2001/03/29 04:09:40 rayjj)
+ - After recognizing a number the scanner wrongly interpreted it as a
+name, if the number ends at the end of input buffer. Change from Raph.
+SourceForge bug #224205. (iscannum.c [1.3]: 2001/03/29 13:27:59 igorm)
+ - Correct the Windows virtual key code passed from the image window
+to the console. (dwimg.c [1.2]: 2001/03/31 10:07:48 ghostgum)
+ - Put Windows console stdout and stderr in binary mode. Ignore the
+initial callout for stdout and stderr as the procedure stream acquires a
+buffer. (dwmainc.c [1.2], imain.c [1.9]: 2001/03/31 10:08:43 ghostgum)
+ - Corrects memory allocation of command line arguments in the
+programs which load the Ghostscript interpreter DLL / shared object.
+(dpmain.c [1.2], dwmain.c [1.2], dwmainc.c [1.3]: 2001/03/31 10:09:47
+ghostgum)
+ - When gswin32 text window is closed, exit the interpreter on next
+access to stdin and then destroy the text window. (dwmain.c [1.3],
+dwtext.c [1.2], imain.c [1.10]: 2001/03/31 10:11:55 ghostgum)
+
+Change the search order for the Ghostscript Windows DLL to try the
+executable directory before the location specified in the GS_DLL environment
+variable. (dwdll.c [1.2]: 2001/03/27 09:35:22 ghostgum)
+
+Update mail address from bug-gs@aladdin.com to bug-gs@ghostscript.com.
+(imainarg.c [1.10]: 2001/03/28 18:30:35 rayjj)
+
+Increments version number after 6.62 release. (lib/gs_init.ps [1.32]:
+2001/03/28 21:27:15 raph)
+
+Applies PDF 1.4 rendering with all devices. Previously, only pnga device
+contained PDF 1.4 rendering capabilities. Now, when the PDF 1.4 imaging
+model is detected in the source file, it installs the pdf 1.4 rendering
+device as a device filter. (zdfilter.c [1.2]: 2001/04/01 00:30:41 raph)
+
+Change: The Ghostscript 'pwrite' function name conflicted with the standard
+pwrite function defined in unistd.h on several systems. To avoid confusion
+with the standard function change the name to stream_write. Also change
+'pputc' to 'stream_putc' and 'pputs' to 'stream_puts'. Fixes SourceForge bug
+#410772. Fix by Ray Johnston. (zfcmap.c [1.9]: 2001/04/01 00:35:26 raph)
+
+</pre><h2><a name="6.63-Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - Changes to introduce the min_left stream state variable set this
+to 1 for procedure streams, which caused 1 character to be retained in the
+stream buffer which was not passed to the client. This broke the DLL
+interface where procedure callouts were used to get the string from the
+callback. Procedure streams have no need for EOD lookahead (to force
+closure) so the correct min_left value is 0. SourceForge bug #404331.
+(stream.c [1.11], stream.h [1.8]: 2001/03/29 04:09:40 rayjj)
+
+Change: The Ghostscript 'pwrite' function name conflicted with the standard
+pwrite function defined in unistd.h on several systems. To avoid confusion
+with the standard function change the name to stream_write. Also change
+'pputc' to 'stream_putc' and 'pputs' to 'stream_puts'. Fixes SourceForge bug
+#410772. Fix by Ray Johnston. (spprint.c [1.3], spprint.h [1.3],
+spsdf.c [1.5]: 2001/04/01 00:35:26 raph)
+
+</pre><h2><a name="6.63-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - The old code can mis-identify ShadingType 1 function as constant
+due to testing it at insufficient set of points. Replacing it with slower
+accurate code. SourceForge bug #228714. (gxshade.c [1.6], gxshade.h [1.4],
+gxshade1.c [1.8]: 2001/03/25 10:18:50 igorm)
+ - Fix for CIDFontType 0 : 1. Erroneous glyphs are drawn by cshow
+(with -dNOCACHE); 2. Glyphs written in horizontal direction instead vertical
+(with anti-aliasing); 3. Erroneous glyphs and awkward metrics (with
+anti-aliasing and -dNOCACHE); Patches 1 &amp; 3 from Hideyuki Suzuki
+(hideyuki), improved by igorm. SourceForge bug #222683. (gxchar.c [1.4]:
+2001/03/27 09:56:39 igorm)
+ - Adds imaging_dev field to text enumeration, so that bbox device
+can intercept low level drawing operations caused by implementation of
+forwarded high level text operations. (gdevbbox.c [1.4], gstext.c [1.6],
+gxccache.c [1.4], gxtext.h [1.7]: 2001/04/01 00:33:36 raph)
+
+Applies PDF 1.4 rendering with all devices. Previously, only pnga device
+contained PDF 1.4 rendering capabilities. Now, when the PDF 1.4 imaging
+model is detected in the source file, it installs the pdf 1.4 rendering
+device as a device filter. (gdevp14.c [1.1], gsdfilt.c [1.2],
+gsdfilt.h [1.2]: 2001/04/01 00:30:41 raph)
+
+Change: The Ghostscript 'pwrite' function name conflicted with the standard
+pwrite function defined in unistd.h on several systems. To avoid confusion
+with the standard function change the name to stream_write. Also change
+'pputc' to 'stream_putc' and 'pputs' to 'stream_puts'. Fixes SourceForge bug
+#410772. Fix by Ray Johnston. (gdevpsf1.c [1.9], gdevpsfm.c [1.5],
+gdevpsft.c [1.7], gsfunc4.c [1.4]: 2001/04/01 00:35:26 raph)
+
+<hr>
+
+<h1><a name="Version6.62"></a>Version 6.62 (2001-03-19)</h1>
+
+<p>
+This is the first beta release for the upcoming 7.0 release. This fileset
+adds ICC profile support using Graeme Gill's icclib, and the new DLL
+interface from Russell Lang.
+
+<p>
+All problems registered on SourceForge numbered 409245 or lower are
+closed, except for the following: 201955, 202735, 206652, 209350,
+213799, 215256, 219677, 219798, 220967, 221582, 222534, 222683,
+222727, 223005, 223091, 223754, 223896, 223992, 224056, 224095,
+224134, 224205, 224863, 226364, 226391, 226462, 226477, 226584,
+226943, 227090, 227190, 227276, 227382, 227651, 227684, 227709,
+228180, 228354, 228423, 228641, 228714, 228788, 228808, 229439,
+230694, 230699, 231390, 232334, 232696, 233403, 404255, 404255,
+404482, 404933, 405313, 406285, 406643, 406689, 406694, 406696,
+406699, 406979, 407342, 409105, 409133, 409244, 409245. Note that,
+since the 6.61 release, SourceForge has renumbered all bugs in the
+1xxxxx range by adding 100000 (thus, they are now 2xxxxxx).
+
+
+<h2><a name="6.62-Documentation"></a>Documentation</h2><pre>
+
+Increments version number to 6.62 as part of 6.61 release process.
+(doc/News.htm [1.77]: 2001/02/24 01:56:01 raph)
+
+Adds Epson Stylus Color 300 support to uniprint, also some code cleanups.
+Thanks to Glenn Ramsey and Gunther Hess for the patch.
+(doc/Devices.htm [1.20]: 2001/03/03 00:45:01 raph)
+
+Added documentation for Ghostscript interpreter API as used by Windows and
+OS/2 DLL and GNU/Linux shared object. (doc/API.htm [1.1], doc/DLL.htm [1.8],
+doc/Readme.htm [1.20]: 2001/03/13 07:12:06 ghostgum)
+
+Documentation changes in preparation for 6.62 beta release.
+(doc/API.htm [1.2], doc/Bug-form.htm [1.15], doc/Bug-info.htm [1.11],
+doc/C-style.htm [1.12], doc/Commprod.htm [1.9], doc/Copying.htm [1.7],
+doc/Current.htm [1.7], doc/DLL.htm [1.9], doc/Develop.htm [1.33],
+doc/Devices.htm [1.21], doc/Drivers.htm [1.15], doc/Fonts.htm [1.13],
+doc/Helpers.htm [1.10], doc/History1.htm [1.7], doc/History2.htm [1.7],
+doc/History3.htm [1.7], doc/History4.htm [1.7], doc/History5.htm [1.9],
+doc/History6.htm [1.19], doc/Htmstyle.htm [1.10], doc/Install.htm [1.15],
+doc/Language.htm [1.26], doc/Lib.htm [1.7], doc/Maintain.htm [1.11],
+doc/Make.htm [1.23], doc/New-user.htm [1.20], doc/News.htm [1.78],
+doc/Projects.htm [1.24], doc/Ps-style.htm [1.7], doc/Ps2epsi.htm [1.8],
+doc/Ps2pdf.htm [1.25], doc/Psfiles.htm [1.14], doc/README [1.6],
+doc/Readme.htm [1.21], doc/Release.htm [1.29], doc/Source.htm [1.7],
+doc/Tester.htm [1.7], doc/Unix-lpr.htm [1.7], doc/Use.htm [1.23],
+doc/Xfonts.htm [1.7], doc/gs-vms.hlp [1.6], man/dvipdf.1 [1.4],
+man/font2c.1 [1.4], man/gs.1 [1.4], man/gslp.1 [1.4], man/gsnd.1 [1.4],
+man/pdf2dsc.1 [1.4], man/pdf2ps.1 [1.6], man/pdfopt.1 [1.4],
+man/pf2afm.1 [1.4], man/pfbtopfa.1 [1.5], man/printafm.1 [1.4],
+man/ps2ascii.1 [1.4], man/ps2epsi.1 [1.4], man/ps2pdf.1 [1.8],
+man/ps2pdfwr.1 [1.5], man/ps2ps.1 [1.11], man/wftopfa.1 [1.4]: 2001/03/17
+01:26:48 raph)
+
+Updates Changes and History6 files from cvs commit logs, in preparation for
+6.62 beta release. (doc/Changes.htm [1.22], doc/History6.htm [1.20]:
+2001/03/17 01:30:16 raph)
+
+There was a spelling error in Juan Manuel Acosta's name. His entry is also
+moved to "major contributers" section. (doc/Helpers.htm [1.11]: 2001/03/19
+16:46:05 alexcher)
+
+Updates date for 6.62 release to 2001-03-19. (doc/API.htm [1.3],
+doc/Bug-form.htm [1.16], doc/Bug-info.htm [1.12], doc/C-style.htm [1.13],
+doc/Commprod.htm [1.10], doc/Copying.htm [1.8], doc/Current.htm [1.8],
+doc/DLL.htm [1.10], doc/Develop.htm [1.34], doc/Devices.htm [1.22],
+doc/Drivers.htm [1.16], doc/Fonts.htm [1.14], doc/Helpers.htm [1.12],
+doc/History1.htm [1.8], doc/History2.htm [1.8], doc/History3.htm [1.8],
+doc/History4.htm [1.8], doc/History5.htm [1.10], doc/History6.htm [1.21],
+doc/Htmstyle.htm [1.11], doc/Install.htm [1.16], doc/Language.htm [1.27],
+doc/Lib.htm [1.8], doc/Maintain.htm [1.12], doc/Make.htm [1.24],
+doc/New-user.htm [1.21], doc/News.htm [1.79], doc/Projects.htm [1.25],
+doc/Ps-style.htm [1.8], doc/Ps2epsi.htm [1.9], doc/Ps2pdf.htm [1.26],
+doc/Psfiles.htm [1.15], doc/README [1.7], doc/Readme.htm [1.22],
+doc/Release.htm [1.30], doc/Source.htm [1.8], doc/Tester.htm [1.8],
+doc/Unix-lpr.htm [1.8], doc/Use.htm [1.24], doc/Xfonts.htm [1.8],
+doc/gs-vms.hlp [1.7], man/dvipdf.1 [1.5], man/font2c.1 [1.5],
+man/gs.1 [1.5], man/gslp.1 [1.5], man/gsnd.1 [1.5], man/pdf2dsc.1 [1.5],
+man/pdf2ps.1 [1.7], man/pdfopt.1 [1.5], man/pf2afm.1 [1.5],
+man/pfbtopfa.1 [1.6], man/printafm.1 [1.5], man/ps2ascii.1 [1.5],
+man/ps2epsi.1 [1.5], man/ps2pdf.1 [1.9], man/ps2pdfwr.1 [1.6],
+man/ps2ps.1 [1.12], man/wftopfa.1 [1.5]: 2001/03/19 17:26:17 raph)
+
+Inital version of this file that will be used to capture notes about minor
+bugs or compatibility that are identified when action will not be undertaken
+immediately. (doc/Issues.htm [1.1]: 2001/03/19 19:27:04 rayjj)
+
+</pre><h2><a name="6.62-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - Minor changes to fix compilation on VMS, thanks to Jacob
+=JoukJansen for the patch. (devs.mak [1.42]: 2001/03/01 22:16:02 raph)
+ - Corrects whitespace for new entries in devs.mak for VMS build.
+Thanks to Jouk Jansen. (devs.mak [1.44]: 2001/03/13 20:01:35 raph)
+ - Fixes SourceForge bug #219677. Adds debug and debugclean targets
+to MSVC++ makefile that build in the debugobj and debugbin directories.
+Fixes BEGINFILES and BEGINFILES2 so that 'make clean' removes all files.
+(msvc32.mak [1.10], winlib.mak [1.7]: 2001/03/16 22:53:18 ghostgum)
+ - /None and /All separations are now supported. SourceForge bug
+#228354. (lib.mak [1.45]: 2001/03/18 19:15:50 igorm)
+ - Adds lib directory to MS-Windows distribution archive. Change
+copyright message in MS-Windows setup program to artofcode LLC. Thanks to
+Russell Lang for the patch. (winint.mak [1.7]: 2001/03/19 17:12:45 raph)
+
+Increments version number to 6.62 as part of 6.61 release process.
+(version.mak [1.27]: 2001/02/24 01:56:01 raph)
+
+Provide alternate %stdin/out/err implementation using procedure based
+streams and callouts. Previous stdio implementation with
+STDIO_IMPLEMENTATION= New callout stdio implementation with
+STDIO_IMPLEMENTATION=c Bug fix to zflush and zpeekstring. New stdio stream
+code is in ziodevsc.c which will be in next commit. (bcwin32.mak [1.5],
+dvx-gcc.mak [1.6], gs.mak [1.3], int.mak [1.43], msvc32.mak [1.7],
+msvclib.mak [1.7], openvms.mak [1.7], os2.mak [1.10], ugcclib.mak [1.7],
+unix-gcc.mak [1.10], unixansi.mak [1.8], unixtrad.mak [1.8], watc.mak [1.7],
+watclib.mak [1.7], watcw32.mak [1.6]: 2001/03/12 04:05:19 ghostgum)
+
+Adds device filter pipeline, which will be used by PDF 1.4 and other
+enhanced imaging operations. (int.mak [1.44], lib.mak [1.43]: 2001/03/13
+00:41:10 raph)
+
+Implement new Ghostscript interpreter API for DLL or shared object.
+Reimplement old DLL interface using new API. See iapi.h and iapi.c for new
+API. For unix, build using "make so". Added loader programs for Ghostscript
+interpreter library for GNU/Linux (dxmain.c), Windows (dw*.c) and OS/2
+(dpmain.c). Add new "display" device for use with the new API. GNU/Linux
+dxmain.c uses the "display" device, Gtk+ and GdkRgb for faster drawing than
+the "x11" device. (devs.mak [1.43], gsdll2.def [1.2], gsdll32.def [1.2],
+int.mak [1.45], msvc32.mak [1.8], os2.mak [1.11], unix-dll.mak [1.1],
+unix-gcc.mak [1.11], winint.mak [1.6], winlib.mak [1.6]: 2001/03/13 07:09:28
+ghostgum)
+
+When building the GNU/Linux shared object, separate directories soobj and sobin
+are used to prevent 'make' from mixing the object files and building a
+corrupt executable. Added 'API.htm' to the installed documentation files.
+(unix-dll.mak [1.2], unix-gcc.mak [1.12], unixinst.mak [1.18]: 2001/03/15
+09:11:28 ghostgum)
+
+Change path on Windows and OS/2 platforms from c:/aladdin
+to c:/gs. (bcwin32.mak [1.6], msvc32.mak [1.9], msvclib.mak [1.8],
+watc.mak [1.8], watclib.mak [1.8], watcw32.mak [1.7]: 2001/03/16 22:19:16
+ghostgum)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (bcwin32.mak [1.7], devs.mak [1.45], dvx-gcc.mak [1.7], gs.mak [1.4],
+icclib.mak [1.1], int.mak [1.46], lib.mak [1.44], msvc32.mak [1.11],
+msvclib.mak [1.9], openvms.mak [1.8], os2.mak [1.12], ugcclib.mak [1.8],
+unix-gcc.mak [1.13], unixansi.mak [1.9], unixtrad.mak [1.9],
+version.mak [1.28], watc.mak [1.9], watclib.mak [1.9], watcw32.mak [1.8],
+wctail.mak [1.3], winlib.mak [1.8]: 2001/03/17 01:15:42 raph)
+
+Moves patched icclib 1.23 files into the new icclib/ subdirectory, with
+makefile changes to match. Adds missing COPYRIGHT and other documentation to
+icclib. Thanks to L. Peter Deutsch for pointing out the need.
+(bcwin32.mak [1.8], dvx-gcc.mak [1.8], msvc32.mak [1.12],
+msvclib.mak [1.10], openvms.mak [1.9], os2.mak [1.13], ugcclib.mak [1.9],
+unix-gcc.mak [1.14], unixansi.mak [1.10], unixtrad.mak [1.10],
+watc.mak [1.10], watclib.mak [1.10], watcw32.mak [1.9]: 2001/03/19 17:11:15
+raph)
+
+Updates date for 6.62 release to 2001-03-19. (version.mak [1.29]: 2001/03/19
+17:26:18 raph)
+
+</pre><h2><a name="6.62-Utilities"></a>Utilities</h2><pre>
+
+Replace many references to exit() with returns. (gp_dvx.c [1.3],
+gp_os2.c [1.7], gp_unix.c [1.4]: 2001/03/12 03:50:02 ghostgum)
+
+Cleanup of MS-Windows and OS/2 code. Remove old 16-bit MS-Windows code.
+Remove references to stdout/err, replacing with eprintf(). Remove global
+variables. Disable mswindll and os2dll devices if a callback function is not
+provided. (gp_mswin.c [1.4], gp_os2.c [1.8]: 2001/03/12 03:56:13 ghostgum)
+
+stdio implementation using callouts. Missing file from last commit.
+(ziodevsc.c [1.1]: 2001/03/12 04:11:28 ghostgum)
+
+Implement new Ghostscript interpreter API for DLL or shared object.
+Reimplement old DLL interface using new API. See iapi.h and iapi.c for new
+API. For unix, build using "make so". Added loader programs for Ghostscript
+interpreter library for GNU/Linux (dxmain.c), Windows (dw*.c) and OS/2
+(dpmain.c). Add new "display" device for use with the new API. GNU/Linux
+dxmain.c uses the "display" device, Gtk+ and GdkRgb for faster drawing than
+the "x11" device. (dxmain.c [1.1], gp_msdll.c [1.1], gp_mswin.c [1.5],
+gp_os2.c [1.9], gsdll.c [1.4]: 2001/03/13 07:09:28 ghostgum)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (icc.c [1.1]: 2001/03/17 01:15:42 raph)
+
+Moves patched icclib 1.23 files into the new icclib/ subdirectory, with
+makefile changes to match. Adds missing COPYRIGHT and other documentation to
+icclib. Thanks to L. Peter Deutsch for pointing out the need. (icc.c [1.2]:
+2001/03/19 17:11:15 raph)
+
+</pre><h2><a name="6.62-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - to achieve page independence, every page must in the general case
+set page parameters. To preserve duplexing the page cannot set page
+parameters. New code checks the current page size and sets it only if it is
+necessary. Bug #404376 reported by bannis at users.sourceforge.net
+(gdevpsu.c [1.3]: 2001/03/03 03:27:03 alexcher)
+
+Adds Epson Stylus Color 300 support to uniprint, also some code cleanups.
+Thanks to Glenn Ramsey and Gunther Hess for the patch. (gdevupd.c [1.4],
+lib/stc300.upp [1.1], lib/stc300bl.upp [1.1], lib/stc300bm.upp [1.1]:
+2001/03/03 00:45:01 raph)
+
+Cleanup of MS-Windows and OS/2 code. Remove old 16-bit MS-Windows code.
+Remove references to stdout/err, replacing with eprintf(). Remove global
+variables. Disable mswindll and os2dll devices if a callback function is not
+provided. (gdevmswn.c [1.3], gdevpm.c [1.3], gdevwdib.c [1.3],
+gdevwpr2.c [1.6], gdevwprn.c [1.3]: 2001/03/12 03:56:13 ghostgum)
+
+Redirect all user messages from stdout and stderr to outwrite() and
+errwrite(). This is needed to allow stdout/err to be redirected to the
+caller for DLL / shared object builds. (gdev4693.c [1.2], gdevcdj.c [1.5],
+gdevhl7x.c [1.4], gdevifno.c [1.2], gdevimgn.c [1.3], gdevos2p.c [1.4],
+gdevsppr.c [1.3], gdevsunr.c [1.3], gdevupd.c [1.5], gdevwddb.c [1.3],
+gdevwpr2.c [1.7]: 2001/03/13 06:51:39 ghostgum)
+
+Implement new Ghostscript interpreter API for DLL or shared object.
+Reimplement old DLL interface using new API. See iapi.h and iapi.c for new
+API. For unix, build using "make so". Added loader programs for Ghostscript
+interpreter library for GNU/Linux (dxmain.c), Windows (dw*.c) and OS/2
+(dpmain.c). Add new "display" device for use with the new API. GNU/Linux
+dxmain.c uses the "display" device, Gtk+ and GdkRgb for faster drawing than
+the "x11" device. (gdevdsp.c [1.1], gdevdsp.h [1.1], gdevdsp2.h [1.1],
+gdevmswn.c [1.4], gdevpm.c [1.4]: 2001/03/13 07:09:28 ghostgum)
+
+Adds typed image rendering to pnga (prototype PDF 1.4) device.
+(gdevpnga.c [1.3]: 2001/03/17 00:16:53 raph)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (gdevpx.c [1.6]: 2001/03/17 01:15:42 raph)
+
+</pre><h2><a name="6.62-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - properly include unistd_.h in files that call unlink()
+(gdevpdf.c [1.29]: 2001/03/16 22:12:34 giles)
+
+Redirect all user messages from stdout and stderr to outwrite() and
+errwrite(). This is needed to allow stdout/err to be redirected to the
+caller for DLL / shared object builds. (gdevpdfm.c [1.9]: 2001/03/13
+06:51:39 ghostgum)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (gdevpdfc.c [1.14]: 2001/03/17 01:15:42 raph)
+
+</pre><h2><a name="6.62-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - When the stream is located in an external file (i.e. the stream
+dictionary contains an /F entry) GS fails with "typecheck in .knownget"
+because of a minor bug in stack handling in pdf_base.ps. Bug #229425, the
+fix from Andreas Bolsch &lt;meromorphic at users.sourceforge.net&gt;
+(lib/pdf_base.ps [1.13]: 2001/03/04 16:59:19 alexcher)
+ - GS can override image interpolation using INTERPOLATE or
+NOINTERPOLATE flags. These flags had no effect on PDF because the PDF
+interpreter is bound earlier than image operator is redefined. New version
+takes image and imagemask values from systemdict at run time.
+(lib/pdf_draw.ps [1.27]: 2001/03/11 05:15:26 alexcher)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (lib/pdf_draw.ps [1.28], lib/pdf_ops.ps [1.16]: 2001/03/17 01:15:41
+raph)
+
+</pre><h2><a name="6.62-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Allocate filter in local VM when currentglobal is false. Prevents
+a problem with some QuarkXpress ProcSets that turn off vmreclaim and expect
+save/restore to free memory which only works on local VM. Fix for problem
+reported by Artifex customer #150, file "japan.ps". (zfilter.c [1.5]:
+2001/02/28 00:39:26 rayjj)
+ - Speed-up JPEG decompression by increasing file buffer to 2K. This
+avoids installation of an intermediate buffering filter that resulted in a
+byte-by-byte filling of the buffer to the JPEG code. When the buffer was not
+full enough a recoverable error would result in a round trip for the next
+byte. Fixes SourcForge bug #405342 for Artifex customer #350.
+(zfile.c [1.7]: 2001/03/02 03:06:50 alexcher)
+ - Removes Category dictionary from dictionary stack during the
+execution of the /Font resourceforall procedure, needed for proper access
+from the procedure to underlying dictionary. Fixes SourceForge bug #224973.
+(lib/gs_cidcm.ps [1.2]: 2001/03/03 15:09:12 igorm)
+ - GS didn't accept packed array as data source in image with
+multiple data sources. From internal bug report. (zimage2.c [1.4]:
+2001/03/12 22:53:22 alexcher)
+ - ztype9mapcid now allocates string in global memory space to match
+allocation of contents. Thanks to Masatake YAMATO for the patch.
+(zfcid0.c [1.6]: 2001/03/13 19:57:06 raph)
+ - Define to DefaultGray, DefaultRGB, DefaultCMYK color spaces to
+allow UseCIEColor to work. SourceForge bugs #216461, #219676.
+(lib/gs_ll3.ps [1.8]: 2001/03/14 12:00:37 igorm)
+ - /None and /All separations are now supported. SourceForge bug
+#228354. (zcssepr.c [1.6]: 2001/03/18 19:17:50 igorm)
+
+Increments version number to 6.62 as part of 6.61 release process.
+(lib/gs_init.ps [1.30]: 2001/02/24 01:56:01 raph)
+
+Replace many references to exit() with returns. (errors.h [1.3], gs.c [1.3],
+igcref.c [1.3], imain.c [1.4], imainarg.c [1.7], imainarg.h [1.3],
+zcontext.c [1.7]: 2001/03/12 03:50:02 ghostgum)
+
+Provide alternate %stdin/out/err implementation using procedure based
+streams and callouts. Previous stdio implementation with
+STDIO_IMPLEMENTATION= New callout stdio implementation with
+STDIO_IMPLEMENTATION=c Bug fix to zflush and zpeekstring. New stdio stream
+code is in ziodevsc.c which will be in next commit. (errors.h [1.4],
+files.h [1.3], imain.c [1.5], iminst.h [1.3], interp.c [1.7], zfile.c [1.8],
+zfileio.c [1.10], zfproc.c [1.8], ziodev.c [1.4]: 2001/03/12 04:05:19
+ghostgum)
+
+This fix corrects a problem with VM usage in the DSC parser. Previously the
+dictionary dsc_dict was allocated in global VM but the DSC parser would try
+to insert items while in local VM mode. This fix forces the DSC parser into
+global VM mode. (lib/gs_dscp.ps [1.4]: 2001/03/12 22:41:22 dancoby)
+
+Adds device filter pipeline, which will be used by PDF 1.4 and other
+enhanced imaging operations. (zdfilter.c [1.1]: 2001/03/13 00:41:10 raph)
+
+Redirect all user messages from stdout and stderr to outwrite() and
+errwrite(). This is needed to allow stdout/err to be redirected to the
+caller for DLL / shared object builds. (gs.c [1.4], idebug.c [1.3],
+igc.c [1.3], imain.c [1.6], imainarg.c [1.8]: 2001/03/13 06:51:39 ghostgum)
+
+Implement new Ghostscript interpreter API for DLL or shared object.
+Reimplement old DLL interface using new API. See iapi.h and iapi.c for new
+API. For unix, build using "make so". Added loader programs for Ghostscript
+interpreter library for GNU/Linux (dxmain.c), Windows (dw*.c) and OS/2
+(dpmain.c). Add new "display" device for use with the new API. GNU/Linux
+dxmain.c uses the "display" device, Gtk+ and GdkRgb for faster drawing than
+the "x11" device. (dpmain.c [1.1], dpmainc.c [1.3], dwdll.c [1.1],
+dwdll.cpp [1.3], dwdll.h [1.3], dwimg.c [1.1], dwimg.cpp [1.4],
+dwimg.h [1.3], dwmain.c [1.1], dwmain.cpp [1.3], dwmain.h [1.3],
+dwmainc.c [1.1], dwmainc.cpp [1.4], dwnodll.c [1.1], dwnodll.cpp [1.3],
+dwtext.c [1.1], dwtext.cpp [1.3], dwtext.h [1.3], files.h [1.4], gs.c [1.5],
+iapi.c [1.1], iapi.h [1.1], iconf.c [1.3], idisp.c [1.1], idisp.h [1.1],
+imain.c [1.7], imainarg.c [1.9], iminst.h [1.4], main.h [1.3]: 2001/03/13
+07:09:28 ghostgum)
+
+Interpolation overriding is modified to support - colorimage; old version
+did nothing - ImageType 3 dictionaries; old version did nothing - local data
+source in global mode; old version failed (lib/gs_init.ps [1.31]: 2001/03/13
+22:50:03 alexcher)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (icie.h [1.3], lib/gs_icc.ps [1.1], zcie.c [1.5], zicc.c [1.1]:
+2001/03/17 01:15:41 raph)
+
+</pre><h2><a name="6.62-Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - eexecDecode filter returned EOF immediately if the input stream
+was shorter than 9 characters. New code may misidentify short streams but
+old code always failed. (seexec.c [1.4]: 2001/02/23 03:00:13 alexcher)
+
+Replace many references to exit() with returns. (stdpre.h [1.3]: 2001/03/12
+03:50:02 ghostgum)
+
+Redirect all user messages from stdout and stderr to outwrite() and
+errwrite(). This is needed to allow stdout/err to be redirected to the
+caller for DLL / shared object builds. (std.h [1.4]: 2001/03/13 06:51:39
+ghostgum)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (stream.c [1.10]: 2001/03/17 01:15:42 raph)
+
+Minor patch to header files so that unlink() prototype doesn't conflict when
+const is disabled through #define. (stdio_.h [1.4]: 2001/03/17 01:18:34
+raph)
+
+</pre><h2><a name="6.62-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Minor changes to fix compilation on VMS, thanks to Jacob
+=JoukJansen for the patch. (gstrans.c [1.13]: 2001/03/01 22:16:02 raph)
+ - gp_file_name_sizeof is increased to 260 bytes, == MAX_PATH on MS
+Windows. The platform-specific fix is too difficult because some platforms
+may have very long or unlimited file names. Bug #231514 submitted by
+anonymous user. (gp.h [1.6]: 2001/03/03 04:38:19 alexcher)
+ - When objects were resized or trimmed, the objects o_size was not
+being updated if the rounded_size didn't change. This could lead to
+alignment issues on some systems (causing a crash). Problem reported by
+Artifex customer #460. (gsalloc.c [1.9]: 2001/03/12 00:04:28 rayjj)
+ - Some device color components were missed while serializing
+halftone to clist, causing segment fault during playback. Changes use proper
+number of device color components to be written to clist and read from it.
+SourceForge bug #211449. (gxclpath.c [1.9], gxclrast.c [1.9]: 2001/03/13
+08:38:03 igorm)
+ - kshow now restores currentfont if changed while running proc.
+Fixes SourceForge bug #221715. (gxchar.c [1.3]: 2001/03/14 13:03:49 igorm)
+ - properly include unistd_.h in files that call unlink()
+(gsiodev.c [1.5], gxclfile.c [1.3]: 2001/03/16 22:12:34 giles)
+ - /None and /All separations are now supported. SourceForge bug
+#228354. (gscsepr.c [1.7]: 2001/03/18 19:17:50 igorm)
+
+Replace many references to exit() with returns. (gsargs.c [1.3],
+gsargs.h [1.4], gsexit.h [1.3], gxalloc.h [1.6]: 2001/03/12 03:50:02
+ghostgum)
+
+Adds device filter pipeline, which will be used by PDF 1.4 and other
+enhanced imaging operations. (gsdfilt.c [1.1], gsdfilt.h [1.1],
+gsstate.c [1.10], gzstate.h [1.5]: 2001/03/13 00:41:10 raph)
+
+Redirect all user messages from stdout and stderr to outwrite() and
+errwrite(). This is needed to allow stdout/err to be redirected to the
+caller for DLL / shared object builds. (gp_unifs.c [1.4], gsargs.c [1.4],
+gsinit.c [1.3], gsio.h [1.5], gslib.c [1.4], gsmisc.c [1.10],
+gxclutil.c [1.4]: 2001/03/13 06:51:39 ghostgum)
+
+Implement new Ghostscript interpreter API for DLL or shared object.
+Reimplement old DLL interface using new API. See iapi.h and iapi.c for new
+API. For unix, build using "make so". Added loader programs for Ghostscript
+interpreter library for GNU/Linux (dxmain.c), Windows (dw*.c) and OS/2
+(dpmain.c). Add new "display" device for use with the new API. GNU/Linux
+dxmain.c uses the "display" device, Gtk+ and GdkRgb for faster drawing than
+the "x11" device. (gsexit.h [1.4]: 2001/03/13 07:09:29 ghostgum)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (gs_stdio.h [1.1], gscdef.c [1.12], gscie.c [1.4], gscie.h [1.3],
+gsciemap.c [1.5], gscolor.c [1.5], gscolor1.c [1.4], gscscie.c [1.4],
+gscspace.h [1.6], gscssub.c [1.3], gsicc.c [1.1], gsicc.h [1.1],
+gxcie.h [1.3], gxshade.c [1.5], icc.h [1.1]: 2001/03/17 01:15:42 raph)
+
+Minor patch to header files so that unlink() prototype doesn't conflict when
+const is disabled through #define. (unistd_.h [1.2]: 2001/03/17 01:18:34
+raph)
+
+Moves patched icclib 1.23 files into the new icclib/ subdirectory, with
+makefile changes to match. Adds missing COPYRIGHT and other documentation to
+icclib. Thanks to L. Peter Deutsch for pointing out the need. (icc.h [1.2]:
+2001/03/19 17:11:15 raph)
+
+</pre><h2><a name="6.62-Other"></a>Other</h2><pre>
+
+Cleanup of MS-Windows and OS/2 code. Remove old 16-bit MS-Windows code.
+Remove references to stdout/err, replacing with eprintf(). Remove global
+variables. Disable mswindll and os2dll devices if a callback function is not
+provided. (gp_mswin.h [1.3]: 2001/03/12 03:56:13 ghostgum)
+
+Implement new Ghostscript interpreter API for DLL or shared object.
+Reimplement old DLL interface using new API. See iapi.h and iapi.c for new
+API. For unix, build using "make so". Added loader programs for Ghostscript
+interpreter library for GNU/Linux (dxmain.c), Windows (dw*.c) and OS/2
+(dpmain.c). Add new "display" device for use with the new API. GNU/Linux
+dxmain.c uses the "display" device, Gtk+ and GdkRgb for faster drawing than
+the "x11" device. (gp_mswin.h [1.4], gsdll.h [1.3], gsdllwin.h [1.3]:
+2001/03/13 07:09:28 ghostgum)
+
+Integrates ICC profile input support from Jan Stoeckenius. Also includes
+slightly modified version of icclib (icc.h, icc.c, icc9809.h) by Graeme
+Gill. (icc9809.h [1.1]: 2001/03/17 01:15:42 raph)
+
+Moves patched icclib 1.23 files into the new icclib/ subdirectory, with
+makefile changes to match. Adds missing COPYRIGHT and other documentation to
+icclib. Thanks to L. Peter Deutsch for pointing out the need.
+(icc9809.h [1.2], icclib/COPYRIGHT [1.1], icclib/NOTES [1.1],
+icclib/README [1.1], icclib/icc.c [1.1], icclib/icc.h [1.1],
+icclib/icc9809.h [1.1]: 2001/03/19 17:11:14 raph)
+
+<hr>
+
+<h1><a name="Version6.61"></a>Version 6.61 (2001-02-21)</h1>
+
+<p>
+The primary updates in this fileset are in the PDF 1.4 transparency and
+blending code (available for testing with the pnga driver). The usual
+bug fixes are also present.
+
+<p>
+All problems registered on SourceForge numbered 133403 or lower are
+closed, except for the following: 101814, 101955, 102735, 106652,
+109350, 111449, 113116, 113799, 114084, 115256, 116461, 119676,
+119677, 119798, 120967, 121582, 121715, 122534, 122683, 122727,
+123005, 123091, 123754, 123896, 123992, 124056, 124095, 124134,
+124205, 124863, 124973, 126364, 126391, 126462, 126477, 126584,
+126943, 127090, 127190, 127244, 127276, 127382, 127651, 127684,
+127709, 127802, 128180, 128354, 128423, 128641, 128714, 128808,
+129425, 129439, 130694, 130699, 131001, 131390, 131514, 132334,
+132696, 133403.
+
+
+<h2><a name="6.61-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Ps-style.htm was missing from the index/blurbs in Readme.htm Adds
+a note about documentation to the "Adding and Removing Files" section, and
+moves that section to Maintain.htm from Release.htm. Closes sourceforge bug
+#126771 (doc/Maintain.htm [1.9], doc/Readme.htm [1.18],
+doc/Release.htm [1.27]: 2001/02/09 01:59:35 giles)
+
+Brings prototypes for fill_path, stroke_path, and fill_trapezoid in sync
+with code. New description for fill_trapezoid, as the parameters changed
+considerably. (doc/Drivers.htm [1.13]: 2001/01/04 19:08:25 raph)
+
+Adds a link to Adobe's Technote #5407 regarding transparency.
+(doc/Language.htm [1.24]: 2001/01/07 18:21:55 giles)
+
+Updates png and zlib urls to the new canonical domain. Patch from Tobias
+Burnus. (doc/Devices.htm [1.18], doc/Make.htm [1.20],
+doc/New-user.htm [1.18]: 2001/01/07 18:36:35 giles)
+
+Increments CVS version number to 6.61 as part of (very delayed) 6.60 release
+process. (doc/News.htm [1.75]: 2001/02/03 01:23:03 raph)
+
+Added DOPDFMARKS to allow pdfmark to be called for annotations, links and
+cropboxes for PDF files on any device. Fixes SourceForge bug # 127062.
+(doc/Use.htm [1.21]: 2001/02/09 23:38:12 ghostgum)
+
+Added addition comments about how to build GS on am IBM RS6000 under AIX
+version 4.3.3 using the IBM C compiler (xlc) version 5.
+(doc/Make.htm [1.21]: 2001/02/20 06:09:31 dancoby)
+
+Updates dates and version numbers in preparation for 6.61 release.
+(doc/Bug-form.htm [1.14], doc/Bug-info.htm [1.10], doc/C-style.htm [1.11],
+doc/Commprod.htm [1.8], doc/Copying.htm [1.6], doc/Current.htm [1.6],
+doc/DLL.htm [1.7], doc/Develop.htm [1.32], doc/Devices.htm [1.19],
+doc/Drivers.htm [1.14], doc/Fonts.htm [1.12], doc/Helpers.htm [1.9],
+doc/History1.htm [1.6], doc/History2.htm [1.6], doc/History3.htm [1.6],
+doc/History4.htm [1.6], doc/History5.htm [1.8], doc/History6.htm [1.17],
+doc/Htmstyle.htm [1.9], doc/Install.htm [1.14], doc/Language.htm [1.25],
+doc/Lib.htm [1.6], doc/Maintain.htm [1.10], doc/Make.htm [1.22],
+doc/New-user.htm [1.19], doc/News.htm [1.76], doc/PUBLIC [1.4],
+doc/Projects.htm [1.23], doc/Ps-style.htm [1.6], doc/Ps2epsi.htm [1.7],
+doc/Ps2pdf.htm [1.24], doc/Psfiles.htm [1.13], doc/README [1.5],
+doc/Readme.htm [1.19], doc/Release.htm [1.28], doc/Source.htm [1.6],
+doc/Tester.htm [1.6], doc/Unix-lpr.htm [1.6], doc/Use.htm [1.22],
+doc/Xfonts.htm [1.6], doc/gs-vms.hlp [1.5], man/dvipdf.1 [1.3],
+man/font2c.1 [1.3], man/gs.1 [1.3], man/gslp.1 [1.3], man/gsnd.1 [1.3],
+man/pdf2dsc.1 [1.3], man/pdf2ps.1 [1.5], man/pdfopt.1 [1.3],
+man/pf2afm.1 [1.3], man/pfbtopfa.1 [1.4], man/printafm.1 [1.3],
+man/ps2ascii.1 [1.3], man/ps2epsi.1 [1.3], man/ps2pdf.1 [1.7],
+man/ps2pdfwr.1 [1.4], man/ps2ps.1 [1.10], man/wftopfa.1 [1.3]: 2001/02/22
+07:30:37 raph)
+
+</pre><h2><a name="6.61-Procedures"></a>Procedures</h2><pre>
+
+Updates png and zlib urls to the new canonical domain. Patch from Tobias
+Burnus. (libpng.mak [1.4], zlib.mak [1.3]: 2001/01/07 18:36:35 giles)
+
+First cut of the PDF 1.4 transparency and blending operations.
+(contrib.mak [1.21], lib.mak [1.42]: 2001/01/14 00:25:27 raph)
+
+Increments CVS version number to 6.61 as part of (very delayed) 6.60 release
+process. (version.mak [1.25]: 2001/02/03 01:23:03 raph)
+
+Continuing development of PDF 1.4 transparency and blending. This round of
+commits implements groups, including non-isolated and knockout variants.
+Also, moves the build rule for the pnga device from contrib to devs.
+(contrib.mak [1.22], devs.mak [1.41]: 2001/02/22 07:27:10 raph)
+
+Updates dates and version numbers in preparation for 6.61 release.
+(version.mak [1.26]: 2001/02/22 07:30:39 raph)
+
+</pre><h2><a name="6.61-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Temporary _.at file was not deleted. (lib/pdf2ps.bat [1.4]:
+2001/02/03 16:12:29 alexcher)
+ - Added -dSAFER (lib/pdf2ps.cmd [1.2]: 2001/02/03 18:31:12 alexcher)
+ - Defines prototypes for fputs only for (broken) Sun platforms, to
+avoid type mismatches when compiling with -Dconst=. Fixes SourceForge bug
+133358. (echogs.c [1.3]: 2001/02/22 03:59:39 raph)
+
+branches: 1.1.2; file vdtrace.c was initially added on branch HINTER.
+(vdtrace.c [1.1]: 2001/01/12 06:19:36 igorm)
+
+branches: 1.1.2; file _type1.c was initially added on branch HINTER.
+(_type1.c [1.1]: 2001/02/02 20:27:09 igorm)
+
+Converted to SAFER mode. (lib/pf2afm [1.2], lib/pf2afm.bat [1.2],
+lib/pf2afm.cmd [1.2], lib/pf2afm.ps [1.3]: 2001/02/03 21:31:40 alexcher)
+
+</pre><h2><a name="6.61-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - Changes tiff12nc to output correct number of bytes for odd widths.
+(gdevtfnx.c [1.5]: 2001/02/03 18:50:01 raph)
+ - Added down cast from gx_device_printer to gx_device_fax The fix is
+suggested by the user. (gdevdfax.c [1.4]: 2001/02/12 21:02:51 alexcher)
+ - pswrite ProcSet is reordered to eliminate forward references and
+please a simplistic parser used by one of GS customers. (gdevps.c [1.15]:
+2001/02/21 05:52:07 alexcher)
+
+First cut of the PDF 1.4 transparency and blending operations.
+(gdevpnga.c [1.1]: 2001/01/14 00:25:27 raph)
+
+Continuing development of PDF 1.4 transparency and blending. This round of
+commits implements groups, including non-isolated and knockout variants.
+Also, moves the build rule for the pnga device from contrib to devs.
+(gdevpnga.c [1.2]: 2001/02/22 07:27:10 raph)
+
+</pre><h2><a name="6.61-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - in pdfwrite mode kshow called its procedure in infinite loop
+bacause the character indes was not updated. Unexpected number of calls to
+the procedure often caused various errors such as /stackunderfloe.
+(gdevpdfs.c [1.2]: 2001/02/06 21:42:38 alexcher)
+ - imagemask used the color of previous object if the object had
+smaller clipping path than imagemask. Deferred grestore and setcolor were
+transposed. (gdevpdfi.c [1.21]: 2001/02/07 03:49:27 alexcher)
+
+</pre><h2><a name="6.61-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - skip all bytes after the end of the stream in the inline image
+until EOL or EI is found. Some buggy PDF files require this. Fix: In PDF 1.3
+/Matrix key in XObject is optional. Add unitary matrix to the form
+dictionary if XObject has none. (lib/pdf_draw.ps [1.25]: 2001/02/02 22:08:33
+alexcher)
+
+Added DOPDFMARKS to allow pdfmark to be called for annotations, links and
+cropboxes for PDF files on any device. Fixes SourceForge bug # 127062.
+(lib/pdf_main.ps [1.27]: 2001/02/09 23:38:12 ghostgum)
+
+Continuing development of PDF 1.4 transparency and blending. This round of
+commits implements groups, including non-isolated and knockout variants.
+Also, moves the build rule for the pnga device from contrib to devs.
+(lib/pdf_draw.ps [1.26]: 2001/02/22 07:27:10 raph)
+
+</pre><h2><a name="6.61-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - cvs operator did't report rangecheck when source operand is a name
+or string and it's longer than the destination string. Bug # 130975
+(iutil.c [1.3]: 2001/02/05 20:43:40 alexcher)
+ - memmove() was used without portability header file memory_.h
+(ztrans.c [1.13]: 2001/02/13 19:45:38 alexcher)
+ - New TransformPQR implements a relative colorimetric intent by
+scaling the XYZ values relative to the white and black points. Bug #129771
+(lib/gs_lev2.ps [1.7]: 2001/02/21 04:23:44 alexcher)
+
+branches: 1.1.2; file dwtrace.h was initially added on branch HINTER.
+(dwtrace.h [1.1]: 2001/01/12 06:18:35 igorm)
+
+branches: 1.1.2; file dwtrace.cpp was initially added on branch HINTER.
+(dwtrace.cpp [1.1]: 2001/01/12 06:22:06 igorm)
+
+Increments CVS version number to 6.61 as part of (very delayed) 6.60 release
+process. (lib/gs_init.ps [1.29]: 2001/02/03 01:23:03 raph)
+
+</pre><h2><a name="6.61-Streams"></a>Streams</h2><pre>
+
+Minor patches for clean VMS compile. Thanks to Jacob (=Jouk) Jansen.
+(stdio_.h [1.3]: 2001/02/02 07:52:26 raph)
+
+</pre><h2><a name="6.61-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - egcc - 2.91.66 generates incorrect code for dda_step_add(dxx4,
+dxx4); Using the intermediate variable now to wark around the problem. This
+bug corrupted memory block headers and caused random crashes.
+(gxifast.c [1.3]: 2001/01/25 21:36:17 alexcher)
+
+Changes gx_image_cached_char so that it now images to the device in the text
+enumeration, rather than the current device. This change gives more
+flexibility for implementations of begin_text to interpose a device of their
+own for actual imaging. (gxccache.c [1.3]: 2001/01/04 19:39:24 raph)
+
+Updates documentation in gxdevcli.h on creating device instances.
+(gxdevcli.h [1.4]: 2001/01/14 00:24:30 raph)
+
+First cut of the PDF 1.4 transparency and blending operations.
+(gxblend.c [1.1], gxblend.h [1.1]: 2001/01/14 00:25:27 raph)
+
+Minor patches for clean VMS compile. Thanks to Jacob (=Jouk) Jansen.
+(gsnogc.c [1.6], gxblend.c [1.2]: 2001/02/02 07:52:25 raph)
+
+Continuing development of PDF 1.4 transparency and blending. This round of
+commits implements groups, including non-isolated and knockout variants.
+Also, moves the build rule for the pnga device from contrib to devs.
+(gstrans.c [1.12], gxdevcli.h [1.5]: 2001/02/22 07:27:10 raph)
+
+</pre><h2><a name="6.61-Other"></a>Other</h2><pre>
+
+branches: 1.1.2; file _type1.h was initially added on branch HINTER.
+(_type1.h [1.1]: 2001/01/12 06:22:23 igorm)
+
+branches: 1.1.2; file vdtrace.h was initially added on branch HINTER.
+(vdtrace.h [1.1]: 2001/02/02 20:27:09 igorm)
+
+<hr>
+
+<h1><a name="Version6.60"></a>Version 6.60 (2000-12-31)</h1>
+
+<p>
+This long-overdue fileset includes major new developer documentation, major
+improvements in the PDF writer (for embedded fonts and for DSC comments),
+and lots of bug fixes. Unfortunately, for unknown reasons, the release
+"smoke test" loops forever on the file data/ps/screen.ps -- but only when
+compiled in 'production' mode, not in 'debug' mode. We suspect a gcc bug,
+but don't have the time to track it down before the end of the millennium.
+
+<p>
+All problems registered on SourceForge numbered 127190 or lower are closed,
+except for the following: 101814, 101955, 102735, 105289, 106652, 109350,
+111449, 113116, 113799, 114084, 115256, 116461, 117260, 119676, 119677,
+119798, 120967, 121582, 121715, 122426, 122532, 122534, 122683, 122727,
+123005, 123091, 123702, 123754, 123867, 123896, 123992, 124042, 124056,
+124095, 124134, 124205, 124863, 124973, 126364, 126391, 126462, 126477,
+126506, 126584, 126771, 126943, 127062, 127090, 127190.
+
+<h3><a name="6.60_Incompatible_changes"></a>Incompatible changes</h3>
+
+<pre>
+(Interpreter)
+ - With WMode = 1, CID-keyed fonts with no Metrics2 now use default
+metrics computed from FontBBox rather than the horizontal metrics.
+(PDF interpreter)
+ - The interpreter now skips to the next EOL after reading the data
+following the ID operator.
+ - The incorrectly named ViewerOrientation DSC comment is now
+corrected to ViewingOrientation.
+(Streams)
+ - All decoding filters that recognize an EOD in the source data
+must now have an init procedure that sets state->min_left = 1.
+(Library)
+ - The glyph_data, subr_data, and seac_data procedures in a Type 1
+font (gs_type1_data_procs), and the glyph_data procedure passed to
+psf_{check,get}_outline_glyphs, must now return 1 iff the outline string was
+newly allocated and should be freed by the caller, like the get_outline
+procedure of Type 42 fonts (gs_type42_data).
+ - The ip_state structure is renamed ip_state_t, and has a new
+member, free_char_string.
+ - The incorrectly named ViewerOrientation DSC comment is now
+corrected to ViewingOrientation, and the viewer_orientation members of
+the DSC parsing structure are corrected to viewing_orientation.
+
+
+
+<h2><a name="6.60-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - An isolated ampersand needed to be converted to the HTML form.
+(doc/Bug-form.htm [1.12]: 2000/11/04 17:53:57 lpd)
+ - cvs2hist was generating invalid anchor names and not escaping
+special charaters. also enable '-r' commandline option, and pass '-b' if
+it's not specified for default branch logs only. Changes.htm now passes the
+validator. Minor url cleanup in Release.htm (doc/Changes.htm [1.19],
+doc/Release.htm [1.23]: 2000/11/10 01:52:35 giles)
+ - Removes obsolete documentation reference to -DUsePrinterImages and
+clarifies the entry for the replacing -DPrinted. Fixes sourceforge bug #
+121907. (doc/Use.htm [1.16]: 2000/11/20 20:34:23 giles)
+ - Type 1 CharStrings loaded from disk for type 0 CIDFonts were never
+freed, except by garbage collection (which doesn't reclaim chunks with only
+a small amount of surviving data). In practice, this probably only affects
+the PDF writer. (doc/News.htm [1.71]: 2000/11/23 23:34:23 lpd)
+ - The pswrite device couldn't write to pipes. The fix involved
+expanding the API for opening device OutputFiles so that the individual
+driver could specify whether it required, requested, or did not want a
+positionable file. Fixes SourceForge bug # 122223. (doc/Use.htm [1.17]:
+2000/11/29 02:25:13 lpd)
+ - The default ps2pdf "distiller parameters" weren't documented
+correctly; the parameter values for the other PDFSETTINGS (screen, printer,
+prepress) weren't documented at all; the xxxImageDownsampleThreshold
+parameters were incorrectly documented as xxxDownsampleThreshold.
+(doc/Ps2pdf.htm [1.22]: 2000/12/19 17:55:55 lpd)
+ - The documentation of the -dSAFER command line switch was
+inaccurate. (doc/Use.htm [1.18]: 2000/12/23 01:33:06 lpd)
+ - documentation for gs_cidcm.ps and gs_dscp.ps was missing.
+(doc/Psfiles.htm [1.11]: 2000/12/29 02:17:12 lpd)
+
+Adds developer documentation on the color mapping pipeline.
+(doc/Develop.htm [1.16]: 2000/11/03 04:53:00 lpd)
+
+switch to Tobias Burnus' stylesheet for the B-D html documentation, along
+with some minor cleanups (doc/Bug-form.htm [1.10], doc/Bug-info.htm [1.8],
+doc/C-style.htm [1.6], doc/Commprod.htm [1.4], doc/Copying.htm [1.4],
+doc/Current.htm [1.4], doc/DLL.htm [1.4], doc/Develop.htm [1.17],
+doc/Devices.htm [1.14], doc/Drivers.htm [1.10], doc/gs.css [1.1]: 2000/11/03
+06:42:42 giles)
+
+update remaining file links in Develop.htm to &lt;dl&gt; format, plus
+additional cleanup (doc/Commprod.htm [1.5], doc/DLL.htm [1.5],
+doc/Develop.htm [1.18], doc/Devices.htm [1.15], doc/Drivers.htm [1.11]:
+2000/11/03 20:15:55 giles)
+
+Lists all the monochrome TIFF drivers individually, rather than as a class.
+(doc/Devices.htm [1.16]: 2000/11/03 23:33:18 lpd)
+
+Switches the rest of the human-maintained html documentation to the new
+stylesheet. We now pass validator.w3.org for HTML 4.01 with the exception of
+an error I couldn't figure out in Bug-form.htm. (doc/Bug-form.htm [1.11],
+doc/Fonts.htm [1.9], doc/Helpers.htm [1.7], doc/Hershey.htm [1.3],
+doc/Htmstyle.htm [1.7], doc/Humor.htm [1.2], doc/Install.htm [1.10],
+doc/Language.htm [1.21], doc/Lib.htm [1.4], doc/Maintain.htm [1.7],
+doc/Make.htm [1.17], doc/New-user.htm [1.15], doc/Projects.htm [1.20],
+doc/Ps-style.htm [1.4], doc/Ps2epsi.htm [1.5], doc/Ps2pdf.htm [1.19],
+doc/Psfiles.htm [1.10], doc/Public.htm [1.4], doc/Readme.htm [1.15],
+doc/Release.htm [1.22], doc/Source.htm [1.4], doc/Tester.htm [1.4],
+doc/Unix-lpr.htm [1.4], doc/Use.htm [1.15], doc/Xfonts.htm [1.4],
+doc/index.html [1.2]: 2000/11/04 05:00:00 giles)
+
+updated News.htm to use gs.css (doc/News.htm [1.70]: 2000/11/04 21:59:35
+giles)
+
+Adds documentation on Ghostscript's object-oriented coding conventions, and
+more documentation on error generation. (doc/C-style.htm [1.7],
+doc/Develop.htm [1.19]: 2000/11/07 07:34:57 lpd)
+
+Expands the description of the color mapping process.
+(doc/Develop.htm [1.20]: 2000/11/09 05:41:46 lpd)
+
+updates history files 1-4 (historical) to valid html4 and the new stylesheet
+(doc/History1.htm [1.4], doc/History2.htm [1.4], doc/History3.htm [1.4],
+doc/History4.htm [1.4]: 2000/11/28 22:55:34 giles)
+
+updates the version 5.x history file to the conforming html4
+(doc/History5.htm [1.6]: 2000/12/01 00:47:08 giles)
+
+Adds documentation on creating a release directory, including checking the
+version numbers of the third-party libraries.
+(doc/Release.htm [1.24]: 2000/12/05 21:16:25 lpd)
+
+Updates documentation to reflect recent improvements in text and DSC comment
+handling. (doc/Ps2pdf.htm [1.20]: 2000/12/09 08:01:56 lpd)
+
+Documents the change from ViewerOrientation to ViewingOrientation in the DSC
+parser. (doc/News.htm [1.72]: 2000/12/09 19:53:48 lpd)
+
+Makes the PDF writer extract orientation and bounding box information from
+DSC comments, if present. The orientation is used to set Rotate if
+AutoRotatePages is not selected; the bounding box is not yet used for
+anything. (doc/Ps2pdf.htm [1.21]: 2000/12/09 19:54:55 lpd)
+
+adds a brief blurb for Develop.htm (doc/Readme.htm [1.16]: 2000/12/11
+19:39:36 giles)
+
+In the developer documentation, breaks down several long file lists into
+shorter, more focused ones. (doc/Develop.htm [1.21]: 2000/12/12 19:52:49
+lpd)
+
+Adds some additional documentation on halftones. (doc/Develop.htm [1.22]:
+2000/12/15 01:46:57 lpd)
+
+Adds additional documentation on makefile conventions, and improves a few
+other areas. (doc/Develop.htm [1.23]: 2000/12/18 06:45:23 lpd)
+
+Adds more documentation on makefiles, .dev files, and related topics.
+(doc/Develop.htm [1.24]: 2000/12/20 05:09:31 lpd)
+
+Adds more developer documentation on the PostScript interpreter; divides up
+some lists of files to provide more helpful detail. (doc/Develop.htm [1.25]:
+2000/12/20 20:15:41 lpd)
+
+Documents the preferred line breaking and indentation format for assignment
+statements, including chain assignments. (doc/C-style.htm [1.8]: 2000/12/22
+16:58:55 lpd)
+
+Makes some minor corrections and improvements to the developer
+documentation. (doc/Develop.htm [1.26]: 2000/12/28 05:57:18 lpd)
+
+Adds substantial new material on coding conventions for structures, classes,
+and subclasses. (doc/C-style.htm [1.9]: 2000/12/28 07:12:38 lpd)
+
+Documents about 15 additional non-standard operators (the ones most likely
+to be used in future code). (doc/Develop.htm [1.27],
+doc/Language.htm [1.22]: 2000/12/28 18:29:49 lpd)
+
+Documents the need to run hrefcov as part of the release process; also fixes
+some minor inaccuracies. (doc/Release.htm [1.25]: 2000/12/29 02:12:08 lpd)
+
+Adds more files to the developer "roadmap" documentation.
+(doc/Develop.htm [1.28]: 2000/12/29 02:18:47 lpd)
+
+Adds the Fontmaps and the contributed drivers to the developer documentation
+"roadmap", which is now complete. (doc/Develop.htm [1.29]: 2000/12/29
+02:33:40 lpd)
+
+Adds some developer documentation on design principles.
+(doc/Develop.htm [1.30]: 2000/12/30 22:07:37 lpd)
+
+Removes or updates no longer appropriate references to Aladdin Enterprises.
+(doc/Commprod.htm [1.6], doc/Fonts.htm [1.10], doc/Install.htm [1.11],
+doc/Make.htm [1.18], doc/New-user.htm [1.16], doc/Projects.htm [1.21],
+doc/Use.htm [1.19]: 2000/12/31 21:43:59 lpd)
+
+Updates documentation for the Windows uninstall program to reflect a name
+change.
+(doc/Install.htm [1.12]: 2000/12/31 22:26:08 lpd)
+
+Updates repository for 6.60 release. (doc/Bug-form.htm [1.13],
+doc/Bug-info.htm [1.9], doc/C-style.htm [1.10], doc/Commprod.htm [1.7],
+doc/Copying.htm [1.5], doc/Current.htm [1.5], doc/DLL.htm [1.6],
+doc/Develop.htm [1.31], doc/Devices.htm [1.17], doc/Drivers.htm [1.12],
+doc/Fonts.htm [1.11], doc/Helpers.htm [1.8], doc/History1.htm [1.5],
+doc/History2.htm [1.5], doc/History3.htm [1.5], doc/History4.htm [1.5],
+doc/History5.htm [1.7], doc/History6.htm [1.15], doc/Htmstyle.htm [1.8],
+doc/Install.htm [1.13], doc/Language.htm [1.23], doc/Lib.htm [1.5],
+doc/Maintain.htm [1.8], doc/Make.htm [1.19], doc/New-user.htm [1.17],
+doc/News.htm [1.73], doc/Projects.htm [1.22], doc/Ps-style.htm [1.5],
+doc/Ps2epsi.htm [1.6], doc/Ps2pdf.htm [1.23], doc/Psfiles.htm [1.12],
+doc/Readme.htm [1.17], doc/Release.htm [1.26], doc/Source.htm [1.5],
+doc/Tester.htm [1.5], doc/Unix-lpr.htm [1.5], doc/Use.htm [1.20],
+doc/Xfonts.htm [1.5], doc/gs-vms.hlp [1.4], man/dvipdf.1 [1.2],
+man/eps2eps.1 [1.3], man/font2c.1 [1.2], man/gs.1 [1.2], man/gslp.1 [1.2],
+man/gsnd.1 [1.2], man/pdf2dsc.1 [1.2], man/pdf2ps.1 [1.4],
+man/pdfopt.1 [1.2], man/pf2afm.1 [1.2], man/pfbtopfa.1 [1.3],
+man/printafm.1 [1.2], man/ps2ascii.1 [1.2], man/ps2epsi.1 [1.2],
+man/ps2pdf.1 [1.6], man/ps2pdfwr.1 [1.3], man/ps2ps.1 [1.9],
+man/wftopfa.1 [1.2]: 2001/01/01 00:24:05 lpd)
+
+</pre><h2><a name="6.60-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - cvs2hist was generating invalid anchor names and not escaping
+special charaters. also enable '-r' commandline option, and pass '-b' if
+it's not specified for default branch logs only. Changes.htm now passes the
+validator. Minor url cleanup in Release.htm (toolbin/cvs2hist.py [1.4]:
+2000/11/10 01:52:35 giles)
+ - The OS/2 platform code would no longer compile, because the stdio
+files are no longer available. (fix from rjl) (os2.mak [1.9]: 2000/12/05
+01:16:26 lpd)
+ - Embedded font subsets always used similar sequences of prefixes,
+making it likely that combining multiple PDF files would lead to clashes;
+the code now generates truly random prefixes, using an external source of
+random data. (devs.mak [1.39]: 2000/12/10 00:12:23 lpd)
+ - Fixes a couple of dependency lists that had gotten out of sync.
+(devs.mak [1.40]: 2000/12/10 00:17:51 lpd)
+ - Seek was broken and PDF interpreter failed when
+FILE_IMPLEMENTATION=fd The implementation of streams using direct OS calls
+is extended to support MSVC &amp;&amp; Win32. close_.h is replaced by more
+general unistd_.h (lib.mak [1.40]: 2000/12/19 03:35:40 alexcher)
+ - In the previous fix unistd__h was misspelt as unistd_h .
+(lib.mak [1.41]: 2000/12/19 05:35:53 alexcher)
+ - The recent change for localized man pages didn't update 2 of the 3
+top-level Unix makefiles. (unixansi.mak [1.7], unixtrad.mak [1.7]:
+2000/12/23 16:29:53 lpd)
+ - The list of doc files to be installed had gotten out of date
+(Develop.htm, Maintain.htm, and Ps-style.htm were missing).
+(unixinst.mak [1.16]: 2000/12/23 16:30:36 lpd)
+ - unixinst.mak was checked in with the previous fix only partly
+done. (unixinst.mak [1.17]: 2000/12/23 16:34:12 lpd)
+
+Collect some stray configuration related externs into iconf.h
+(int.mak [1.40]: 2000/11/04 06:12:02 rayjj)
+
+Adds DSC parsing capability to the PostScript interpreter, with an optional
+'feature' to use the DSC Orientation comments to compensate for sloppy
+PostScript producers that don't emit an appropriate setpagedevice command.
+(int.mak [1.41]: 2000/11/05 18:33:53 lpd)
+
+Adds the 'hook' for passing DSC comments to the PDF writer, but doesn't
+actually process any of the comments. NOTE: Part of this code was
+accidentally included in the recent fix for local/global VM problems in the
+PostScript code for using the DSC parser. (devs.mak [1.36]: 2000/11/07
+18:54:26 lpd)
+
+Reorganizes some text-writing code in anticipation of adding CIDFont and
+CMap support. (devs.mak [1.37]: 2000/11/17 22:11:44 lpd)
+
+Avoids exporting empty LD_RUN_PATH environment variable to the link process.
+This was causing binaries to search the current directory for libraries,
+which was a security hole. Fixes SourceForge bug 122532. (ugcclib.mak [1.6],
+unixlink.mak [1.3]: 2000/11/28 00:14:48 raph)
+
+Updates the date and version checker for compatibility with the newest
+documentation standards; also makes it check the makefile values of JVERSION
+and PVERSION against the currently installed third-party source code.
+(toolbin/pre [1.9]: 2000/12/05 21:14:14 lpd)
+
+Extensively revises and updates the pdfwrite text handling code to support
+processing and embedding of all types of fonts (except for Type 3 and
+CIDFontType 1, which are defined by PostScript procedures), and all variants
+of 'show' (including kshow and glyphshow). In particular, Type 0 fonts with
+all FMapTypes (including CMap-based), CIDFontType 0 and 2 fonts, and both
+standard and non-standard CMaps are supported. (devs.mak [1.38],
+int.mak [1.42], lib.mak [1.38]: 2000/12/08 23:35:37 lpd)
+
+removes a spurious import of the cgi module (toolbin/cvs2hist.py [1.5]:
+2000/12/11 19:40:23 giles)
+
+Splits off the code for downsampling an oversampled character bitmap into a
+separate file. (lib.mak [1.39]: 2000/12/14 00:14:52 lpd)
+
+Adds a '-t' option to enable text output rather than html, replacing the old
+behavior, which was to return text unless a version string was passed with
+'-v'. The version string is now set to 'CVS' if no explicit version is
+passed, and this is used in the named anchors within the html output.
+(toolbin/cvs2hist.py [1.6]: 2000/12/23 09:38:10 giles)
+
+Adds support for localized manpages to the make 'install' target. On unix
+the makefile will now intall any files with the $MAN1EXT extension it finds
+under locale subdirs of the man directory that are listed in the MAN_LCDIRS
+variable. The $man1dir is correspondingly removed from unix-gcc.mak. Also
+adds separate targets: install-doc install-man install-examples
+install-libdata (unix-gcc.mak [1.9], unixinst.mak [1.15]: 2000/12/23
+10:10:37 giles)
+
+Improves the set of files checked by hrefcov +lib.
+(toolbin/hrefcov.tcl [1.5]: 2000/12/29 02:16:13 lpd)
+
+Adds a script for batch-converting PostScript files to PDF, intended to be
+useful for testing. (toolbin/many2pdf.tcl [1.1]: 2000/12/31 22:28:09 lpd)
+
+Updates repository for 6.60 release. (toolbin/pre [1.10],
+version.mak [1.24]: 2001/01/01 00:24:06 lpd)
+
+</pre><h2><a name="6.60-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - pdfopt.ps used the "unresolved?" procedure from pdf_base.ps, which
+has been replaced by the slightly different "resolved?" procedure.
+(lib/pdfopt.ps [1.4]: 2000/12/01 04:15:52 lpd)
+ - The OS/2 platform code would no longer compile, because the stdio
+files are no longer available. (fix from rjl) (gp_os2.c [1.5]: 2000/12/05
+01:16:26 lpd)
+ - File flush method uses file member in stream. On Windows and OS/2
+it is NULL for %stdout or %stderr. So the standard flush method is
+installed. (gp_msio.c [1.3], gp_os2.c [1.6]: 2000/12/19 03:44:24 alexcher)
+ - /NullEncode filter no longer supports fileposition. Replacing
+fileposition with .fileposition (lib/impath.ps [1.3]: 2000/12/28 17:06:07
+alexcher)
+ - _.at file was not deleted in BAT file; SAFER option added to CMD
+file. (lib/eps2eps.bat [1.4], lib/eps2eps.cmd [1.2]: 2000/12/30 18:45:37
+alexcher)
+
+Improves documentation of cid2code.ps by adding a complete usage example.
+(lib/cid2code.ps [1.3]: 2000/11/30 18:22:11 lpd)
+
+Adds extensive documentation to genconf.c; also brings it into line with
+current Ghostscript coding standards. (genconf.c [1.4]: 2000/12/20 04:20:34
+lpd)
+
+Safe mode implemented using DELAYSAFER flag. (lib/pdf2dsc [1.3],
+lib/pdf2dsc.bat [1.1], lib/pdf2dsc.ps [1.3]: 2000/12/29 05:03:49 alexcher)
+
+</pre><h2><a name="6.60-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - In PDF output, color values of 1.0 were usually written as 0.999.
+(bug introduced in version 6.22) (gdevpsdu.c [1.8]: 2000/11/12 07:13:26 lpd)
+ - The pswrite device couldn't write to pipes. The fix involved
+expanding the API for opening device OutputFiles so that the individual
+driver could specify whether it required, requested, or did not want a
+positionable file. Fixes SourceForge bug # 122223. (gdevps.c [1.13],
+gdevpx.c [1.5]: 2000/11/29 02:25:13 lpd)
+ - Invalid (uninitialized) StripByteCount was being left in file for
+the tiff12nc and tiff24nc devices. Needed to call gdev_tiff_end_strip().
+(gdevtfnx.c [1.4]: 2000/12/15 06:09:27 rayjj)
+ - Fixes bug introduced in gdevxini.c revision 1.5. Don't overwrite
+the pixmap handle provided in the GHOSTVIEW environment variable.
+(gdevxini.c [1.10]: 2000/12/15 10:18:47 ghostgum)
+ - The pswrite device produced an extra page if the transfer function
+didn't map "1 setgray" to device white. (gdevps.c [1.14]: 2000/12/21
+03:58:54 lpd)
+
+</pre><h2><a name="6.60-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - kshow caused the PDF writer to revert to bitmapped fonts. Fixes
+SourceForge bug # 104118. (gdevpdft.c [1.21]: 2000/11/06 04:17:14 lpd)
+ - The PDF writer didn't handle stroked fonts correctly (they were
+filled instead of stroked). (gdevpdf.c [1.23], gdevpdfd.c [1.11],
+gdevpdft.c [1.22], gdevpdfx.h [1.23]: 2000/11/12 06:52:08 lpd)
+ - When mixing filled and stroked fonts, the color wasn't set
+correctly. (gdevpdft.c [1.23]: 2000/11/12 07:14:30 lpd)
+ - The PDF writer incorrectly assumed that in PDF 1.3, the standard
+Latin character set was the PostScript 3 extended set (it's actually the old
+PostScript Level 2 set). (gdevpdft.c [1.28]: 2000/11/20 18:13:55 lpd)
+ - Embedded CIDFontType 2 fonts had an incorrect BoundingBox.
+(gdevpdff.c [1.14]: 2000/12/09 06:53:25 lpd)
+ - Embedded font subsets always used similar sequences of prefixes,
+making it likely that combining multiple PDF files would lead to clashes;
+the code now generates truly random prefixes, using an external source of
+random data. (gdevpdf.c [1.26], gdevpdfe.c [1.8], gdevpdff.c [1.15],
+gdevpdff.h [1.9], gdevpdfx.h [1.27]: 2000/12/10 00:12:23 lpd)
+ - Non-embedded Multiple Master instances weren't identified as such
+(font Subtype = /MMType1). (gdevpdfw.c [1.7]: 2000/12/11 08:52:01 lpd)
+ - pdfwrite would crash if a bitmap character was larger than 10Kb
+(compressed). The fix simply raises the limit to 1 Mb. (gdevpdft.c [1.30]:
+2000/12/13 01:33:37 lpd)
+ - When processing DSC comments, some constant strings weren't copied
+to the heap, possibly causing memory access errors. (gdevpdfp.c [1.16]:
+2000/12/16 07:02:35 lpd)
+ - If the same standard (base 14) font was loaded more than once
+(because of save/restore), the PDF file could contain fonts that had
+suffixed names (e.g., Helvetica~2) but with data missing as though they were
+standard fonts, upsetting Acrobat Reader. Fixes SourceForge bug # 101905.
+THIS FIX IS IN A VERY FRAGILE AREA AND MAY INTRODUCE NEW PROBLEMS.
+(gdevpdff.c [1.16]: 2000/12/16 08:00:53 lpd)
+ - The previous fix for copying DSC comment keys to the heap was
+unnecessarily complex. (gdevpdfp.c [1.17]: 2000/12/16 19:28:51 lpd)
+ - Resource usage wasn't tracked separately for Form XObjects (BP/EP
+pdfmarks), producing non-compliant files that caused errors from Acrobat.
+Fixes SourceForge bug # 102146. (gdevpdf.c [1.28], gdevpdff.c [1.17],
+gdevpdff.h [1.10], gdevpdfm.c [1.8], gdevpdfo.c [1.6], gdevpdfo.h [1.6],
+gdevpdft.c [1.31], gdevpdfu.c [1.14], gdevpdfw.c [1.8], gdevpdfx.h [1.28]:
+2000/12/16 19:36:32 lpd)
+ - Strict type correctness is required on VMS system. Contributed by
+Jouk Jansen joukj@hrem.stm.tudelft.nl (gdevpdfw.c [1.9]: 2000/12/18 21:58:03
+alexcher)
+
+Adds the 'hook' for passing DSC comments to the PDF writer, but doesn't
+actually process any of the comments. NOTE: Part of this code was
+accidentally included in the recent fix for local/global VM problems in the
+PostScript code for using the DSC parser. (gdevpdfp.c [1.13]: 2000/11/07
+18:54:26 lpd)
+
+Changes the internal indication of whether to allow font subsetting from a
+Boolean to OK, YES, NO. (Unfortunately, I no longer remember why this change
+is needed.) (gdevpdfe.c [1.6], gdevpdff.c [1.10], gdevpdff.h [1.5],
+gdevpdft.c [1.24]: 2000/11/14 06:57:21 lpd)
+
+When writing PDF output, adds the ability to convert text in Type 0 fonts to
+text in the descendant leaf fonts. This completes the handling of text
+output except for CID-keyed fonts. (gdevpdft.c [1.25]: 2000/11/14 16:47:09
+lpd)
+
+Reorganizes some text-writing code in anticipation of adding CIDFont and
+CMap support. (gdevpdff.c [1.11], gdevpdff.h [1.6], gdevpdft.c [1.26]:
+2000/11/17 22:11:44 lpd)
+
+Makes glyphshow no longer revert to bitmapped fonts. Also adds a CIDFont
+pseudo-resource, in anticipation of adding CID-keyed font support.
+(gdevpdff.c [1.12], gdevpdff.h [1.7], gdevpdft.c [1.27], gdevpdfx.h [1.24]:
+2000/11/20 08:31:20 lpd)
+
+Extensively revises and updates the pdfwrite text handling code to support
+processing and embedding of all types of fonts (except for Type 3 and
+CIDFontType 1, which are defined by PostScript procedures), and all variants
+of 'show' (including kshow and glyphshow). In particular, Type 0 fonts with
+all FMapTypes (including CMap-based), CIDFontType 0 and 2 fonts, and both
+standard and non-standard CMaps are supported. (gdevpdf.c [1.24],
+gdevpdfe.c [1.7], gdevpdff.c [1.13], gdevpdff.h [1.8], gdevpdfs.c [1.1],
+gdevpdft.c [1.29], gdevpdfu.c [1.13], gdevpdfw.c [1.6], gdevpdfx.h [1.25]:
+2000/12/08 23:35:38 lpd)
+
+If ParseDSCCommentsForDocInfo is set to true, copies information from DSC
+comments Creator, CreationDate, For, and Title into the output's Info
+dictionary. (gdevpdfp.c [1.14]: 2000/12/09 07:49:22 lpd)
+
+Makes the PDF writer extract orientation and bounding box information from
+DSC comments, if present. The orientation is used to set Rotate if
+AutoRotatePages is not selected; the bounding box is not yet used for
+anything. (gdevpdf.c [1.25], gdevpdfp.c [1.15], gdevpdfx.h [1.26]:
+2000/12/09 19:54:54 lpd)
+
+Slightly changes the initialization of the random offset for font subset
+prefixes, to work better with low-resolution clocks such as those typical on
+PCs. (gdevpdf.c [1.27]: 2000/12/16 19:31:10 lpd)
+
+</pre><h2><a name="6.60-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - Type 0 fonts with a non-standard (embedded) CMap didn't work at
+all. (lib/pdf_font.ps [1.15]: 2000/12/02 20:41:52 lpd)
+ - The PDF interpreter ignored the CIDToGIDMap entry in (embedded)
+CIDFontType 2 fonts, producing incorrect output if the map wasn't /Identity.
+(lib/pdf_font.ps [1.16]: 2000/12/07 23:41:10 lpd)
+ - GS didn't dereference indirect objects in Widths array.
+(lib/pdf_font.ps [1.17]: 2000/12/17 19:06:19 alexcher)
+ - Fixes a slight oversight in the true/false/null improvement for
+the PDF interpreter. (lib/pdf_base.ps [1.12]: 2000/12/26 04:10:12 lpd)
+ - When a non-TrueType font was substituted for a TrueType font, the
+Encoding in the font descriptor was ignored. This hack was intended to fix
+SF bug # 104702, an invalid PDF file, but it broke another case. Removal of
+the hack makes GS render both cases similar to AR 4.
+(lib/pdf_font.ps [1.18]: 2000/12/26 04:29:30 alexcher)
+ - The PDF interpreter didn't rotate the CropBox for landscape pages,
+producing incorrect output if the input of ps2pdf was a landscape PDF file.
+(lib/pdf_main.ps [1.26]: 2000/12/31 01:07:18 lpd)
+
+Improves font substitution by taking the "Narrow" property into account.
+Fixes SourceForge bug 116460. Fix due to Leon Bottou.
+(lib/pdf_font.ps [1.13]: 2000/11/05 17:36:28 raph)
+
+Wraps the showpagecontents call in gsave/grestore, so that the graphics
+state for drawing annotations is pristine. Fixes Sourceforge bug 123310.
+(lib/pdf_main.ps [1.23]: 2000/11/25 22:00:21 raph)
+
+The published PDF specification says the Encoding name "must be" one of the
+3 predefined Encodings, implying that an error should occur if it isn't.
+However, Acrobat Reader simply ignores unknown names, and since there are
+some buggy applications that rely on this, we do the same.
+(lib/pdf_font.ps [1.14]: 2000/11/28 18:55:24 alexcher)
+
+The PDF specification says that the 'xref' must be on a line by itself. The
+code formerly used readline and linene to check this. However, Acrobat
+Reader only requires the line to begin with 'xref', and there are enough
+applications producing non-compliant PDF files that we have to do this too.
+(lib/pdf_main.ps [1.24]: 2000/12/18 03:41:35 alexcher)
+
+AI8 writes bogus encoding array [0 1 0 0 0 0 0 0] AR doesn't care. So we
+have to straighten it up here. (lib/pdf_draw.ps [1.24]: 2000/12/20 19:02:24
+alexcher)
+
+Makes the PDF interpreter handle true, false, and null specially, rather
+than by dictionary lookup, so that the PostScript interpreter can still
+process these names using the special fast case for names defined only in
+systemdict. (lib/pdf_base.ps [1.11], lib/pdf_main.ps [1.25]: 2000/12/26
+04:08:44 lpd)
+
+</pre><h2><a name="6.60-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - The recently updated code for activating the DSC comment parser
+had several local/global VM problems, causing invalidaccess errors.
+(lib/gs_dps2.ps [1.3], lib/gs_init.ps [1.27], lib/gs_pdfwr.ps [1.7]:
+2000/11/07 18:51:24 lpd)
+ - There was still a bug in the code for passing DSC comments to the
+PDF writer, causing typecheck errors. (lib/gs_pdfwr.ps [1.8]: 2000/11/07
+19:27:14 lpd)
+ - If the procedure of a FunctionType 4 Function was syntactically
+valid but exceeded the maximum stack depth, an attempt was made to free a
+string as an object, causing memory corruption. (zfunc4.c [1.6]: 2000/11/11
+17:34:06 lpd)
+ - Disk-based TrueType fonts caused a memory leak. (Currently, there
+are no such fonts, but CIDFontType 2 fonts, and directly-accessed TrueType
+fonts, should be made disk-based.) (zfcid1.c [1.4]: 2000/11/22 08:32:07 lpd)
+ - Type 1 CharStrings loaded from disk for type 0 CIDFonts were never
+freed, except by garbage collection (which doesn't reclaim chunks with only
+a small amount of surviving data). In practice, this probably only affects
+the PDF writer. (zfcid0.c [1.5]: 2000/11/23 23:34:22 lpd)
+ - Single-byte notdef ranges in CMaps incorrectly incremented the CID
+number, rather than assigning the same CID to all characters in the range.
+(lib/gs_cmap.ps [1.9]: 2000/11/29 06:58:36 lpd)
+ - In dictionaries, an int lookup key sometimes didn't match a real
+stored key, and vice versa. Fixes SourceForge bug # 123678. (idict.c [1.3]:
+2000/11/30 07:13:08 lpd)
+ - Further tweaking of the logic to clear end_status flags in a
+pipeline in the continuation of a procedure write, making it more aggressive
+than the previous fix, but less aggressive than the original code. This is a
+revised fix for Sourceforge bug 119777. (zfproc.c [1.7]: 2000/12/02 19:58:45
+raph)
+ - 'gstate' was allowed in global VM even if the current graphics
+state included references to structures in local VM (which is, in fact,
+normally the case) and the save level was non-zero: this could create a
+dangling pointer after the 'restore'. This "fix" is a workaround that simply
+prohibits doing this, but a correct fix would copy any such structures.
+(zdps1.c [1.3]: 2000/12/02 20:39:37 lpd)
+ - The first call of check_psc_function in gs_build_function_4 didn't
+initialize size to 0, causing the computed value of size to be garbage,
+possibly leading to a VMerror or memory corruption. (zfunc4.c [1.7]:
+2000/12/03 16:56:31 alexcher)
+ - The font_info procedure for PostScript fonts other than Type 1
+didn't return information from the FontInfo dictionary (Copyright,
+FamilyName, FullName, Notice), causing this information to be omitted when
+embedding the font in a PDF file. (ifont.h [1.6], zbfont.c [1.7],
+zfont.c [1.3], zfont1.c [1.9]: 2000/12/03 23:35:30 lpd)
+ - The %%ViewingOrientation: DSC comment was misspelled
+%%ViewerOrientation:. This also corrects the CDSC_VIEWINGORIENTATION enum
+value (formerly CDSC_VIEWERORIENTATION, and the viewing_orientation members
+of the CDSCPAGE structure and the CDSC structure (formerly
+viewer_orientation). (dscparse.c [1.3], dscparse.h [1.3], zdscpars.c [1.8]:
+2000/12/09 18:28:23 lpd)
+ - Unitialized member of CDSCPAGE caused random crashes.
+(dscparse.c [1.4]: 2000/12/13 07:18:46 alexcher)
+ - systemdict was being created too small for LanguageLevel 3
+systems. (It expanded properly, but left a sandbar.) (iinit.c [1.3]:
+2000/12/26 04:25:54 lpd)
+ - Expanding a permanent dictionary (systemdict or userdict)
+destroyed the single-definition bookkeeping for names defined in that
+dictionary, slowing down subsequent interpretation. (idict.c [1.4]:
+2000/12/26 06:09:58 lpd)
+ - Fix to dscparse.c for parsing DOS EPS files. Code now looks for
+%!PS-Adobe- at the start of the PostScript section, not at the start of the
+DOS EPS header. (dscparse.c [1.5]: 2000/12/28 01:45:01 ghostgum)
+
+Collect some stray configuration related externs into iconf.h
+(imain.c [1.3], imainarg.c [1.5]: 2000/11/04 06:12:02 rayjj)
+
+branches: 1.1.2; Collect some stray configuration related externs into
+iconf.h (iconf.h [1.1]: 2000/11/04 06:12:02 rayjj)
+
+Add COMPILE_INITS information line to -h help output. (imainarg.c [1.6]:
+2000/11/04 06:13:42 rayjj)
+
+Adds DSC parsing capability to the PostScript interpreter, with an optional
+'feature' to use the DSC Orientation comments to compensate for sloppy
+PostScript producers that don't emit an appropriate setpagedevice command.
+(lib/gs_dscp.ps [1.1], zdscpars.c [1.1]: 2000/11/05 18:33:52 lpd)
+
+branches: 1.1.2; Adds DSC parsing capability to the PostScript interpreter,
+with an optional 'feature' to use the DSC Orientation comments to compensate
+for sloppy PostScript producers that don't emit an appropriate setpagedevice
+command. (dscparse.c [1.1], dscparse.h [1.1]: 2000/11/05 18:33:53 lpd)
+
+Polishes the DSC parser interface: improves comments and formatting, and
+fixes a couple of very minor glitches. (zdscpars.c [1.2]: 2000/11/06
+07:34:21 lpd)
+
+branches: 1.3.2; ... and fixes an overlooked const discrepancy.
+(zdscpars.c [1.3]: 2000/11/06 07:35:51 lpd)
+
+branches: 1.2.2; Fix: The recently updated code for activating the DSC
+comment parser had several local/global VM problems, causing invalidaccess
+errors. (lib/gs_dscp.ps [1.2]: 2000/11/07 18:51:25 lpd)
+
+Return code variables (code and comment_code) in zparse_dsc_comments(). need
+to be signed. (zdscpars.c [1.4]: 2000/11/08 00:54:48 dancoby)
+
+Rewrites .parse_dsc_comment to use the parameter list machinery, removing a
+little functionally duplicated code; changes two incorrect uints to ints
+(fix from dan@artifex.com); adds additional comment types (BoundingBox,
+PageBoundingBox, BeginDefaults, EndDefaults) to the interface.
+(zdscpars.c [1.5]: 2000/11/08 07:07:32 lpd)
+
+DSC parser changes: adds %%ViewerOrientation to DSC parser; doesn't flag an
+error if %%Pages is absent but one %%Page is found; frees memory if
+initialization fails; recognizes general whitespace in some places where
+only spaces were recognized before. (changes from gsview@ghostgum.com.au)
+(dscparse.c [1.2], dscparse.h [1.2]: 2000/11/13 05:44:58 lpd)
+
+Adds DSC comment tracing to ps2pdf, if -dDEBUG is specified on the command
+line. (lib/gs_pdfwr.ps [1.9]: 2000/11/13 17:03:51 lpd)
+
+Adds %%EndDefaults, %%For:, and %%ViewerOrientation: to the set of DSC
+comments handled by the .parse_dsc_comments operator. (zdscpars.c [1.6]:
+2000/11/13 17:06:18 lpd)
+
+Slightly simplifies the code for creating the internal representation of
+CMaps. (lib/gs_cmap.ps [1.8]: 2000/11/16 00:32:00 lpd)
+
+Changes .buildshading to always apply a ReusableStreamDecode filter to file
+and stream DataSources, so that multiple passes over the stream work. This
+patch closes SourceForge bug 121810. (lib/gs_ll3.ps [1.7]: 2000/11/16
+00:37:32 raph)
+
+Makes single-byte CMap ranges convert into a single range in the internal
+representation, rather than (largest - smallest + 1) separate single-element
+ranges. (lib/gs_cmap.ps [1.10]: 2000/11/29 07:10:27 lpd)
+
+Adds documentation for the procedures declared in ifont.h. (ifont.h [1.5]:
+2000/12/03 23:14:28 lpd)
+
+Extensively revises and updates the pdfwrite text handling code to support
+processing and embedding of all types of fonts (except for Type 3 and
+CIDFontType 1, which are defined by PostScript procedures), and all variants
+of 'show' (including kshow and glyphshow). In particular, Type 0 fonts with
+all FMapTypes (including CMap-based), CIDFontType 0 and 2 fonts, and both
+standard and non-standard CMaps are supported. (lib/gs_cidfn.ps [1.18]:
+2000/12/08 23:35:38 lpd)
+
+Makes the default value of ParseDSCCommentsForDocInfo true rather than
+false. (lib/gs_pdfwr.ps [1.10]: 2000/12/09 08:00:52 lpd)
+
+Changes the parsing of the DSC Orientation comments to return -1 .. 3 rather
+than 0 or 1. (lib/gs_dscp.ps [1.3], zdscpars.c [1.7]: 2000/12/09 17:52:29
+lpd)
+
+Changes .parse_dsc_comments to distinguish (document default)
+ViewingOrientation from PageViewingOrientation, as for [Page]Orientation.
+(zdscpars.c [1.9]: 2000/12/09 19:52:49 lpd)
+
+Updates the comments with a new proposal for speeding up name lookup in the
+interpreter. (dstack.h [1.3]: 2000/12/26 01:20:58 lpd)
+
+The old code caused gswin crash when console window closes.
+(dwimg.cpp [1.3]: 2000/12/26 13:41:40 igorm)
+
+New flag DELAYSAFER added to defer activation of safety checks. SAFER=false
+=&gt; no safety checks SAFER=true, DELAYSAFER=false =&gt; safety checks
+always SAFER=true, DELAYSAFER=true =&gt; safety checks after .setsafe
+(lib/gs_init.ps [1.28]: 2000/12/29 04:13:56 alexcher)
+
+</pre><h2><a name="6.60-Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - Seek was broken and PDF interpreter failed when
+FILE_IMPLEMENTATION=fd The implementation of streams using direct OS calls
+is extended to support MSVC &amp;&amp; Win32. close_.h is replaced by more
+general unistd_.h (sfxfd.c [1.6]: 2000/12/19 03:35:40 alexcher)
+
+</pre><h2><a name="6.60-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Several places in the band list code didn't call s_init_state to
+initialize locally allocated stream states: this is now required (see the
+"Incompatible changes" section above). We suspect there are a few more
+places that will need this fix. (gxclbits.c [1.3], gxcldev.h [1.4],
+gxclread.c [1.3], gxclutil.c [1.3]: 2000/11/05 00:34:24 lpd)
+ - Fixes infinite loops when writing large bitmaps into clist. Now,
+cmd_put_bits never requests an allocation in the clist buffer larger than
+cbuf_size. (gxclbits.c [1.4]: 2000/11/05 18:44:57 raph)
+ - Works around an Acrobat Reader 4 bug that causes AR4 to draw a
+single pixel, rather than nothing, when filling a subpath consisting only of
+a moveto. (gdevvec.c [1.8]: 2000/11/07 16:42:28 lpd)
+ - The PDF writer didn't handle stroked fonts correctly (they were
+filled instead of stroked). (gdevvec.c [1.9], gdevvec.h [1.5]: 2000/11/12
+06:52:08 lpd)
+ - The pdfwrite and pswrite drivers could emit a lineto or rlineto
+without a moveto at the beginning of the path. (bug introduced very
+recently, by a workaround for an Acrobat Reader bug) (gdevvec.c [1.10]:
+2000/11/14 07:41:08 lpd)
+ - Attempting to write a CFF Type 2 font larger than 32K but smaller
+than 64K caused a rangecheck. (gdevpsf2.c [1.8]: 2000/11/19 17:48:08 lpd)
+ - Computing the default width or the fixed width for a CIDFont or
+TrueType font could do a huge amount of unnecessary work. (Probably only
+affects the PDF writer.) (gsfont.c [1.3]: 2000/11/20 21:09:09 lpd)
+ - The Type 1 to Type 2 CharString converter (currently used only by
+the PDF writer) often didn't detect invalid CharStrings as input.
+(gdevpsfx.c [1.6]: 2000/11/21 02:33:55 lpd)
+ - The code for writing a CIDFontType0 CFF font mistook Type 2
+CharStrings for Type 1, and tried to convert them to Type 2. (This currently
+affects only the PDF writer.) (gdevpsf2.c [1.9]: 2000/11/21 02:35:59 lpd)
+ - Disk-based TrueType fonts caused a memory leak. (Currently, there
+are no such fonts, but CIDFontType 2 fonts, and directly-accessed TrueType
+fonts, should be made disk-based.) (gdevpsft.c [1.5], gstype42.c [1.10]:
+2000/11/22 08:32:07 lpd)
+ - Type 1 CharStrings loaded from disk for type 0 CIDFonts were never
+freed, except by garbage collection (which doesn't reclaim chunks with only
+a small amount of surviving data). In practice, this probably only affects
+the PDF writer. (gsfcid.c [1.5], gstype1.c [1.6], gstype2.c [1.9],
+gxfont1.h [1.5], gxtype1.c [1.8], gxtype1.h [1.5]: 2000/11/23 23:34:22 lpd)
+ - The pswrite device couldn't write to pipes. The fix involved
+expanding the API for opening device OutputFiles so that the individual
+driver could specify whether it required, requested, or did not want a
+positionable file. Fixes SourceForge bug # 122223. (gdevpipe.c [1.4],
+gdevvec.c [1.11], gdevvec.h [1.6], gsdevice.c [1.8]: 2000/11/29 02:25:13
+lpd)
+ - The change for freeing transient CharStrings introduced two bugs,
+possibly causing the code to free data twice, or to free data that should be
+retained. (gdevpsfx.c [1.8]: 2000/11/30 05:58:19 lpd)
+ - Allocates graphics state path in stable memory. This prevents
+paths in Type 3 fonts allocated inside a save ... setcachedevice ... restore
+sequence from being prematurely freed. Fixes SourceForge bug 101549.
+(gspath1.c [1.3], gsstate.c [1.6]: 2000/12/04 21:13:55 raph)
+ - An inadvertent change caused the graphics state not to be freed on
+grestore. This fix, due to lpd, restores the freeing statement.
+(gsstate.c [1.7]: 2000/12/05 09:24:57 raph)
+ - The pointers to the substituted color spaces in the graphics state
+weren't included in the structure descriptor, causing memory access errors
+if UseCIEColor was used. (gsstate.c [1.8]: 2000/12/11 04:06:22 alexcher)
+ - In TrueType fonts, glyph outlines starting with an off-curve point
+didn't render correctly, replacing the curve with a pair of straight lines.
+(gstype42.c [1.11]: 2000/12/12 22:27:56 alexcher)
+ - Strict type correctness is required on VMS system. Contributed by
+Jouk Jansen joukj@hrem.stm.tudelft.nl (gdevpsf2.c [1.12], gsfcmap.c [1.13]:
+2000/12/18 21:58:03 alexcher)
+ - Seek was broken and PDF interpreter failed when
+FILE_IMPLEMENTATION=fd The implementation of streams using direct OS calls
+is extended to support MSVC &amp;&amp; Win32. close_.h is replaced by more
+general unistd_.h (gpmisc.c [1.9]: 2000/12/19 03:35:40 alexcher)
+ - Fixes a subtle logic bug in the scan line path filling code, which
+unfortunately involved rewriting the code from scratch. The new code is also
+somewhat subtle, and may contain new bugs: DON'T TRUST IT YET. Fixes
+SourceForge bug # 117066. (gxfill.c [1.7]: 2000/12/23 06:02:39 lpd)
+ - Embedded Type 1 fonts omitted StdVW. (Acrobat Reader requires
+this, even though the Type 1 specification says it is optional.)
+(gdevpsf1.c [1.8]: 2000/12/29 01:18:55 lpd)
+
+Adds developer documentation on the color mapping pipeline. (gxfrac.h [1.3]:
+2000/11/03 04:53:00 lpd)
+
+Improves the documentation of the minimum responsibilities of the 'process'
+procedure in a text enumerator. (gxtext.h [1.6]: 2000/11/06 00:44:37 lpd)
+
+Adds a param_string_from_transient_string macro, to parallel
+param_string_from_string for non-permanent C strings. (gsparam.h [1.8]:
+2000/11/08 06:56:50 lpd)
+
+Adds a macro for declaring suffix subclasses with 5 added pointers (in
+addition to the existing 1, 2, 3, 4, and 6). (gsstruct.h [1.6]: 2000/11/21
+16:46:55 lpd)
+
+Adds a procedure for testing whether a glyph is a "notdef" in a font,
+necessary for fixing a memory consumption problem when accessing type 0
+CIDFonts. (gsfont.c [1.4], gxfont.h [1.3]: 2000/11/23 23:23:40 lpd)
+
+Speeds up the slow case of fixed_mult_quo by nearly a factor of 2, by using
+a tiny bit of numerical analysis. (gsmisc.c [1.9], gxfixed.h [1.3]:
+2000/11/24 06:53:23 lpd)
+
+Improves the performance of embedded font writing by freeing strings when no
+longer needed, and by removing redundant computation. (Currently relevant
+only to the PDF writer.) (gdevpsf1.c [1.7], gdevpsf2.c [1.10],
+gdevpsfu.c [1.5], gdevpsfx.c [1.7]: 2000/11/24 07:10:41 lpd)
+
+Adds a procedure for creating an Identity CMap, needed by the PDF writer.
+(gsfcmap.c [1.11], gxfcmap.h [1.6]: 2000/11/26 04:08:41 lpd)
+
+Implements the stopgap measure of increasing fill_adjust for Coons patch
+shading, to cover the dropouts caused by incorrect triangulation of the mesh
+surface. See SourceForge Bug 119588 for a more thorough analysis.
+(gsptype2.c [1.4], gxshade4.c [1.4]: 2000/11/29 01:31:30 raph)
+
+Adds an internal unique ID to CMap structures (gs_cmap_t), for use as a
+cache or comparison key. (gsfcmap.c [1.12], gxfcmap.h [1.7]: 2000/11/29
+05:50:03 lpd)
+
+The old code did not comply ISO/IEC C language standard and compiled wrongly
+to Mac, causing halftone problem on Mac. (gshtscr.c [1.5]: 2000/11/29
+14:41:34 igorm)
+
+Adds macros for suffix subclass structures with 7 or 8 additional pointers
+(1-6 and 9 existed already). (gsstruct.h [1.7]: 2000/12/04 01:11:53 lpd)
+
+Extensively revises and updates the pdfwrite text handling code to support
+processing and embedding of all types of fonts (except for Type 3 and
+CIDFontType 1, which are defined by PostScript procedures), and all variants
+of 'show' (including kshow and glyphshow). In particular, Type 0 fonts with
+all FMapTypes (including CMap-based), CIDFontType 0 and 2 fonts, and both
+standard and non-standard CMaps are supported. (gdevpsf.h [1.9],
+gdevpsf2.c [1.11], gdevpsfm.c [1.4], gdevpsft.c [1.6], gdevpsfu.c [1.6]:
+2000/12/08 23:35:38 lpd)
+
+Moves definitions of gs_state_do_ptrs and gs_state_num_ptrs from gsstate.c
+to gzstate.h since they depend on the contents of struct gs_state_s defined
+there. (gsstate.c [1.9], gzstate.h [1.4]: 2000/12/11 12:52:16 alexcher)
+
+Splits off the code for downsampling an oversampled character bitmap into a
+separate file. (gsbitcom.c [1.1], gsbitops.c [1.3]: 2000/12/14 00:14:52 lpd)
+
+branches: 1.1.2; Fix: Seek was broken and PDF interpreter failed when
+FILE_IMPLEMENTATION=fd The implementation of streams using direct OS calls
+is extended to support MSVC &amp;&amp; Win32. close_.h is replaced by more
+general unistd_.h (unistd_.h [1.1]: 2000/12/19 03:35:40 alexcher)
+
+Brings gxfill.c up to date with current coding standards (except for adding
+_t to the names of locally defined structure types); also puts #ifdef
+FILL_TRAPEZOIDS around a little more code that tests 'if (fill_trapezoids)'.
+(gxfill.c [1.6]: 2000/12/21 16:10:36 lpd)
+
+Updates repository for 6.60 release. (gscdef.c [1.11]: 2001/01/01 00:24:06
+lpd)
+
+</pre><h2><a name="6.60-Other"></a>Other</h2><pre>
+
+Fixes problems:
+ - Seek was broken and PDF interpreter failed when
+FILE_IMPLEMENTATION=fd The implementation of streams using direct OS calls
+is extended to support MSVC &amp;&amp; Win32. close_.h is replaced by more
+general unistd_.h (close_.h [1.3]: 2000/12/19 03:35:40 alexcher)
+
+<hr>
+
+<h1><a name="Version6.30"></a>Version 6.30 (2000-10-03)</h1>
+
+<p>
+This fileset consists of xxx.
+
+<p>
+All problems registered on SourceForge numbered 110922 or lower are closed,
+except for the following: 101549, 101814, 101905, 101955, 102146, 102735,
+104118, 105289, 105558, 106340, 106652, 109350, 110445, 110898, 110922.
+
+<p>
+The following projects are in a partially completed state:
+
+<ul>
+
+<li>CID-keyed fonts in the PDF writer (gdevpdf[eftw].c) -- barely started.
+
+</ul>
+
+<pre>
+
+<h2><a name="6.24_Incompatible_changes"></a>Incompatible changes</h2>
+
+(Procedures)
+ - The -Zv and -ZV switches now trace alpha/transparency features.
+ - The program name has changed.
+ - The default Windows installation directory is now c:\gs rather
+than c:\Aladdin.
+(Utilities)
+ - lib/pdfeof.ps is deleted; its functionality is included in the
+standard code.
+(Drivers)
+ - The X driver now implements sync_output using XSync(False) rather
+than XFlush().
+(Library)
+ - gdev_vector_dopath now never returns 1.
+ - Color space types now have a new, required, "equal" procedure.
+
+
+<h2><a name="6.30 Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - the "User parameters" section was incorrectly titled "Device
+parameters". (doc/Language.htm [1.11]: 2000/08/17 17:00:42 lpd)
+
+Initializes files for the 6.24 fileset. (doc/News.htm [1.57]: 2000/08/09
+16:54:01 lpd)
+
+Adds Alex Cherepanov to the roster of helpers. (doc/Helpers.htm [1.2]:
+2000/08/09 16:54:39 lpd)
+
+Documents the -dDEVICE{WIDTH,HEIGHT}POINTS= switches. (doc/Use.htm [1.10]:
+2000/08/17 01:31:52 lpd)
+
+Notes the change in the return value of gdev_vector_dopath.
+(doc/News.htm [1.58]: 2000/08/20 00:20:42 lpd)
+
+Changes text to make it clear that Yves Arrouye no longer maintains the BJC
+drivers that he wrote. (doc/Devices.htm [1.11]: 2000/08/21 14:38:27 lpd)
+
+Puts the logic for detecting garbage after %%EOF (and some similar invalid
+constructs) back into the main code, making it produce a message on stderr.
+(doc/Psfiles.htm [1.6]: 2000/08/23 02:22:39 lpd)
+
+Documents the deletion of lib/pdfeof.ps. (doc/News.htm [1.59]: 2000/08/23
+02:23:54 lpd)
+
+Starts to implement the PDF 1.4 transparency features. All API and operator
+additions are now implemented (at least as stubs) and documented, as is
+bookkeeping for the new scalar graphics state members (but not for the soft
+masks or the transparency group stack). (doc/Language.htm [1.12]: 2000/08/23
+21:46:31 lpd)
+
+Adds a project to avoid DCT-decoding followed by DCT-encoding images when
+writing PDF files. (doc/Projects.htm [1.16]: 2000/08/24 03:43:12 lpd)
+
+Adds a new equality-testing virtual procedure for color spaces.
+(doc/News.htm [1.60]: 2000/08/24 05:42:30 lpd)
+
+Brings the (still mostly stubbed) transparency code to a more
+self-consistent state. (doc/Language.htm [1.13]: 2000/08/30 01:34:40 lpd)
+
+Completes the parsing of .{begin,end}transparency{group,mask}, except for
+the TransferFunction for masks. The specification is still subject to
+change. (doc/Language.htm [1.14]: 2000/08/30 15:03:36 lpd)
+
+Divides the list of documents according to whether the document is for
+users, for developers, or both. (doc/Readme.htm [1.11]: 2000/08/30 21:24:00
+lpd)
+
+Adds more documentation for the transparency rendering stack.
+(doc/Language.htm [1.15]: 2000/08/31 03:34:41 lpd)
+
+Adds a requirement to only use ANSI standard C library facilities.
+(doc/C-style.htm [1.2]: 2000/09/08 04:53:14 lpd)
+
+Changes the -Zv switch to trace alpha/transparency-related features.
+(doc/News.htm [1.61], doc/Use.htm [1.11]: 2000/09/10 05:23:10 lpd)
+
+Implements another chunk of the PDF 1.4 transparency features, fixing some
+bugs in the previous code. (doc/Language.htm [1.16]: 2000/09/10 05:26:27
+lpd)
+
+Documents the addition of (limited) PDF 1.4 output capabilities.
+(doc/Ps2pdf.htm [1.16]: 2000/09/11 02:08:58 lpd)
+
+Moves the Matte entry of soft mask images from the main structure to the
+mask structures, and changes Matted to has_Matte. (doc/Language.htm [1.17]:
+2000/09/11 04:08:13 lpd)
+
+Documents division of bug-gs mailbox into bug-gs, bug-gs-dev, and
+bug-gs-beta. (doc/Bug-form.htm [1.7], doc/Bug-info.htm [1.5]: 2000/09/15
+23:44:21 lpd)
+
+Adds a paragraph explaining license details. (doc/PUBLIC [1.2],
+doc/Public.htm [1.2]: 2000/09/18 22:26:32 lpd)
+
+Updates the license notices to reflect the name change; also updates many
+internal references. (doc/Bug-form.htm [1.8], doc/Bug-info.htm [1.6],
+doc/C-style.htm [1.3], doc/Changes.htm [1.17], doc/Commprod.htm [1.2],
+doc/Copying.htm [1.2], doc/Current.htm [1.2], doc/DLL.htm [1.2],
+doc/Devices.htm [1.12], doc/Drivers.htm [1.7], doc/Fonts.htm [1.7],
+doc/Helpers.htm [1.3], doc/History1.htm [1.2], doc/History2.htm [1.2],
+doc/History3.htm [1.2], doc/History4.htm [1.2], doc/History5.htm [1.4],
+doc/History6.htm [1.12], doc/Htmstyle.htm [1.5], doc/Install.htm [1.6],
+doc/Language.htm [1.18], doc/Lib.htm [1.2], doc/Maintain.htm [1.3],
+doc/Make.htm [1.14], doc/New-user.htm [1.11], doc/News.htm [1.62],
+doc/PUBLIC [1.3], doc/Projects.htm [1.17], doc/Ps2epsi.htm [1.3],
+doc/Ps2pdf.htm [1.17], doc/Psfiles.htm [1.7], doc/Public.htm [1.3],
+doc/Readme.htm [1.12], doc/Release.htm [1.18], doc/Source.htm [1.2],
+doc/Tester.htm [1.2], doc/Unix-lpr.htm [1.2], doc/Use.htm [1.12],
+doc/Xfonts.htm [1.2], doc/gs-vms.hlp [1.2]: 2000/09/19 21:37:50 lpd)
+
+Updates README from Readme.htm. (doc/README [1.3]: 2000/09/19 23:39:31 lpd)
+
+Changes the default Windows installation directory from c:\Aladdin to c:\gs.
+(doc/Install.htm [1.7], doc/News.htm [1.63]: 2000/09/22 05:32:17 lpd)
+
+Replaces the OpenVMS installation instructions with an improved set
+contributed by a user. (doc/Helpers.htm [1.4], doc/Install.htm [1.8]:
+2000/09/22 20:33:19 lpd)
+
+Adds a project for fixing PDF files that have gotten mangled by EOL
+conversion. (doc/Projects.htm [1.18]: 2000/09/25 14:40:37 lpd)
+
+Adds a reference to PreScript, another free text extraction program based on
+Ghostscript. (doc/New-user.htm [1.12]: 2000/09/26 01:04:40 lpd)
+
+Documentation changes in preparation for 6.30 release. Replaced some contact
+information, updated version numbers. (doc/Bug-form.htm [1.9],
+doc/Bug-info.htm [1.7], doc/Commprod.htm [1.3], doc/Copying.htm [1.3],
+doc/Current.htm [1.3], doc/DLL.htm [1.3], doc/Devices.htm [1.13],
+doc/Drivers.htm [1.8], doc/Fonts.htm [1.8], doc/Helpers.htm [1.5],
+doc/History1.htm [1.3], doc/History2.htm [1.3], doc/History3.htm [1.3],
+doc/History4.htm [1.3], doc/History5.htm [1.5], doc/History6.htm [1.13],
+doc/Htmstyle.htm [1.6], doc/Install.htm [1.9], doc/Language.htm [1.19],
+doc/Lib.htm [1.3], doc/Maintain.htm [1.4], doc/Make.htm [1.15],
+doc/New-user.htm [1.13], doc/News.htm [1.64], doc/Projects.htm [1.19],
+doc/Ps2epsi.htm [1.4], doc/Ps2pdf.htm [1.18], doc/Psfiles.htm [1.8],
+doc/README [1.4], doc/Readme.htm [1.13], doc/Release.htm [1.19],
+doc/Source.htm [1.3], doc/Tester.htm [1.3], doc/Unix-lpr.htm [1.3],
+doc/Use.htm [1.13], doc/Xfonts.htm [1.3], doc/gs-vms.hlp [1.3]: 2000/10/04
+04:33:27 raph)
+
+Bring version numbers and dates up to date. Small bug fix in toolbin/pre to
+make it able to handle months with leading zeros. (doc/C-style.htm [1.4],
+doc/Helpers.htm [1.6], man/ps2ps.1 [1.7]: 2000/10/04 05:18:54 raph)
+
+</pre><h2><a name="6.30 Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - The PostScript image writing drivers (psmono/gray/rgb) didn't set
+the page size in the output, and didn't produce DSC-compliant output.
+(devs.mak [1.31]: 2000/08/09 06:55:45 lpd)
+ - The FlateEncode and zlibEncode filters didn't implement the
+"Effort" parameter. (fix from Alex Cherepanov) (int.mak [1.28]: 2000/08/09
+16:55:24 lpd)
+ - Because "-" as an OutputFile now references the %stdout IODevice,
+it no longer worked in configurations without a PostScript interpreter.
+Fixing this required factoring out the stdin/out/err IODevices and providing
+an implementation that didn't reference the PostScript interpreter.
+(int.mak [1.32], lib.mak [1.34], ugcclib.mak [1.3]: 2000/09/07 06:14:45 lpd)
+ - Configurations including PDF but not PostScript didn't include all
+the PostScript LL3 features needed to interpret PDF 1.3 et seq.
+(int.mak [1.33]: 2000/09/07 06:35:06 lpd)
+ - Cleans up some missing and incorrect dependencies.
+(devs.mak [1.33], int.mak [1.34], lib.mak [1.35]: 2000/09/11 04:43:09 lpd)
+ - The definition of PSRCDIR was inconsistent with the definition of
+PVERSION. (openvms.mak [1.5]: 2000/09/22 04:05:40 lpd)
+ - The pgnm and pnm drivers didn't properly detect the presence of
+gray shades or color in images, sometimes causing gray or color information
+to be lost in the output. (fix contributed by a user) (devs.mak [1.35]:
+2000/09/23 04:52:56 lpd)
+
+Initializes files for the 6.24 fileset. (version.mak [1.19]: 2000/08/09
+16:54:02 lpd)
+
+Adds a mention of the Color LaserJet 4500 as a color PCL XL printer.
+(devs.mak [1.32]: 2000/08/17 20:43:50 lpd)
+
+Changes text to make it clear that Yves Arrouye no longer maintains the BJC
+drivers that he wrote. (contrib.mak [1.19]: 2000/08/21 14:38:28 lpd)
+
+Puts the logic for detecting garbage after %%EOF (and some similar invalid
+constructs) back into the main code, making it produce a message on stderr.
+(unixinst.mak [1.12]: 2000/08/23 02:22:39 lpd)
+
+Starts to implement the PDF 1.4 transparency features. All API and operator
+additions are now implemented (at least as stubs) and documented, as is
+bookkeeping for the new scalar graphics state members (but not for the soft
+masks or the transparency group stack). (int.mak [1.29], lib.mak [1.30]:
+2000/08/23 21:46:31 lpd)
+
+Adds a new equality-testing virtual procedure for color spaces.
+(lib.mak [1.31]: 2000/08/24 05:42:30 lpd)
+
+Partly implements opacity and shape mask bookkeeping. gsave/grestore/etc.
+and banding don't do the right thing yet. (int.mak [1.30],
+version.mak [1.20]: 2000/08/25 01:46:48 lpd)
+
+Brings the (still mostly stubbed) transparency code to a more
+self-consistent state. (lib.mak [1.32]: 2000/08/30 01:34:40 lpd)
+
+Finishes the code for parsing ImageType 103 (soft-mask) images.
+(int.mak [1.31], lib.mak [1.33]: 2000/08/30 04:30:05 lpd)
+
+*** empty log message *** (int.mak [1.35]: 2000/09/14 19:46:05 alexcher)
+
+Undoes uncommented and in some cases inappropriate changes. (int.mak [1.36]:
+2000/09/18 06:28:58 lpd)
+
+Updates license notices
+rather than simply saying "All rights reserved". (toolbin/3way.tcl [1.2],
+toolbin/cvs2hist.py [1.2], toolbin/errlist.tcl [1.2],
+toolbin/gsindent [1.2], toolbin/gsmake.tcl [1.4], toolbin/headers.tcl [1.2],
+toolbin/leaks.tcl [1.2], toolbin/makegnu.tcl [1.2],
+toolbin/makeset.tcl [1.4], toolbin/pre [1.6], toolbin/precheck.tcl [1.2],
+toolbin/suite.tcl [1.2], toolbin/tmake.tcl [1.2]: 2000/09/19 17:30:25 lpd)
+
+Updates the license notices to reflect the name change, and changes
+internal references in various scripts. (toolbin/3way.tcl [1.3],
+toolbin/cvs2hist.py [1.3], toolbin/errlist.tcl [1.3], toolbin/gsindent
+[1.3], toolbin/gsmake.tcl [1.5], toolbin/headers.tcl [1.3],
+toolbin/leaks.tcl [1.3], toolbin/makegnu.tcl [1.3], toolbin/makeset.tcl
+[1.5], toolbin/pre [1.7], toolbin/precheck.tcl [1.3], toolbin/suite.tcl
+[1.3], toolbin/tmake.tcl [1.3]: 2000/09/19 18:10:51 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (all-arch.mak [1.5], bcwin32.mak
+[1.3], cfonts.mak [1.2], contrib.mak [1.20], devs.mak [1.34], dvx-gcc.mak
+[1.4], dvx-head.mak [1.2], dvx-tail.mak [1.3], dwmain.rc [1.2], dwsetup.def
+[1.2], dwsetup.rc [1.2], dwuninst.def [1.2], dwuninst.rc [1.3]: 2000/09/19
+19:00:08 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gs.mak [1.2], gs16spl.rc [1.2],
+gsdll2.rc [1.2], gsdll32.rc [1.2]: 2000/09/19 19:00:25 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gsos2.rc [1.2], gspmdrv.rc [1.2]:
+2000/09/19 19:00:30 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gswin.rc [1.2]: 2000/09/19
+19:00:33 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (int.mak [1.37], jpeg.mak [1.3],
+lib.mak [1.36], libpng.mak [1.2], msvc32.mak [1.5], msvccmd.mak [1.5],
+msvclib.mak [1.5], msvctail.mak [1.4], openvms.mak [1.4], openvms.mmk
+[1.5], os2.mak [1.7], pcwin.mak [1.2]: 2000/09/19 19:00:45 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (ugcclib.mak [1.4], unix-aux.mak
+[1.3], unix-end.mak [1.2], unix-gcc.mak [1.7], unixansi.mak [1.5],
+unixhead.mak [1.2], unixinst.mak [1.13], unixlink.mak [1.2], unixtrad.mak
+[1.5], version.mak [1.21], watc.mak [1.5], watclib.mak [1.5], watcw32.mak
+[1.4], wccommon.mak [1.3], wctail.mak [1.2], winint.mak [1.5], winlib.mak
+[1.4], winplat.mak [1.2], wmin.mak [1.2], zlib.mak [1.2]: 2000/09/19
+19:00:52 lpd)
+
+Add commands to make the target GLGENDIR and BINDIR directories so that a
+clean build works automatically. (msvctail.mak [1.5]: 2000/09/21 15:14:37
+rayjj)
+
+Changes the default Windows installation directory from c:\Aladdin to c:\gs.
+(dwsetup.rc [1.3]: 2000/09/22 05:32:17 lpd)
+
+Changes the default Windows Start Menu Folder from "Aladdin" to
+"Ghostscript". (dwsetup.rc [1.4]: 2000/09/22 05:35:02 lpd)
+
+Updates the makefiles from libpng version 1.0.5 to 1.0.8.
+(all-arch.mak [1.6], bcwin32.mak [1.4], dvx-gcc.mak [1.5], libpng.mak [1.3],
+msvc32.mak [1.6], msvclib.mak [1.6], openvms.mak [1.6], openvms.mmk [1.6],
+os2.mak [1.8], ugcclib.mak [1.5], unix-gcc.mak [1.8], unixansi.mak [1.6],
+unixtrad.mak [1.6], watc.mak [1.6], watclib.mak [1.6], watcw32.mak [1.5]:
+2000/09/25 15:06:28 lpd)
+
+Documentation changes in preparation for 6.30 release. Replaced some contact
+information, updated version numbers. (version.mak [1.22]: 2000/10/04
+04:33:29 raph)
+
+Bring version numbers and dates up to date. Small bug fix in toolbin/pre to
+make it able to handle months with leading zeros. (toolbin/pre [1.8]:
+2000/10/04 05:18:54 raph)
+
+</pre><h2><a name="6.30 Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - ps2pdf13.cmd set the output PDF version to 1.2 rather than 1.3.
+(lib/ps2pdf13.cmd [1.2]: 2000/09/10 19:32:44 lpd)
+ - The OpenVMS Fontmap had gotten badly out of date; specifically, it
+didn't reference the URW++ fonts distributed with Ghostscript.
+(lib/Fontmap.VMS [1.2]: 2000/09/22 03:30:21 lpd)
+
+Puts the logic for detecting garbage after %%EOF (and some similar invalid
+constructs) back into the main code, making it produce a message on stderr.
+(lib/pdfeof.ps [1.2]: 2000/08/23 02:22:39 lpd)
+
+Adds script / batch / command files for producing PDF 1.4 output.
+(lib/ps2pdf14 [1.1], lib/ps2pdf14.bat [1.1], lib/ps2pdf14.cmd [1.1]:
+2000/09/10 19:33:47 lpd)
+
+Updates the license notices to reflect the name change, and changes a few
+other internal references. (lib/Fontmap.ATB [1.2], lib/Fontmap.ATM [1.2],
+lib/Fontmap.GS [1.2], lib/Fontmap.OS2 [1.2], lib/Fontmap.SGI [1.2],
+lib/Fontmap.Sol [1.2], lib/Fontmap.Ult [1.2], lib/addxchar.ps [1.2],
+lib/afmdiff.awk [1.2], lib/align.ps [1.2], lib/bdftops.ps [1.2],
+lib/caption.ps [1.2], lib/cbjc600.ppd [1.2], lib/cbjc800.ppd [1.2],
+lib/cid2code.ps [1.2], lib/docie.ps [1.2], lib/errpage.ps [1.2],
+lib/font2c.ps [1.2], lib/font2pcl.ps [1.2], lib/gslp.ps [1.2], lib/gsnup.ps
+[1.2], lib/image-qa.ps [1.2], lib/impath.ps [1.2], lib/jispaper.ps [1.2],
+lib/lines.ps [1.2], lib/markhint.ps [1.2], lib/markpath.ps [1.2],
+lib/packfile.ps [1.2], lib/pcharstr.ps [1.2], lib/pdf2dsc.ps [1.2],
+lib/pdfopt.ps [1.3], lib/pdfwrite.ps [1.3], lib/pfbtopfa.ps [1.2],
+lib/ppath.ps [1.2], lib/ps2ai.ps [1.2], lib/ps2ascii.ps [1.2], lib/ps2epsi
+[1.4], lib/ps2epsi.ps [1.4], lib/showchar.ps [1.2], lib/stcinfo.ps [1.2],
+lib/stcolor.ps [1.2], lib/stocht.ps [1.3], lib/traceimg.ps [1.2],
+lib/traceop.ps [1.2], lib/type1enc.ps [1.2], lib/type1ops.ps [1.2],
+lib/uninfo.ps [1.2], lib/unprot.ps [1.2], lib/viewcmyk.ps [1.2],
+lib/viewgif.ps [1.2], lib/viewmiff.ps [1.2], lib/viewpbm.ps [1.2],
+lib/viewpcx.ps [1.2], lib/viewps2a.ps [1.2], lib/wftopfa.ps [1.2],
+lib/winmaps.ps [1.2], lib/wrfont.ps [1.2], lib/zeroline.ps [1.2]:
+2000/09/19 18:29:11 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (bench.c [1.3], echogs.c [1.2]:
+2000/09/19 19:00:08 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (genarch.c [1.2], genconf.c [1.3],
+gendev.c [1.2], genht.c [1.2], geninit.c [1.3], gp_dvx.c [1.2], gp_iwatc.c
+[1.4], gp_mktmp.c [1.2], gp_mshdl.c [1.2], gp_msio.c [1.2], gp_mslib.c
+[1.2], gp_mswin.c [1.3], gp_ntfs.c [1.4], gp_os2.c [1.4], gp_os9.c [1.3],
+gp_sysv.c [1.2], gp_unix.c [1.3], gp_vms.c [1.4], gp_wgetv.c [1.3],
+gp_win32.c [1.2], gp_wsync.c [1.2], gs16spl.c [1.2]: 2000/09/19 19:00:23
+lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gsdll.c [1.3], gserver.c [1.2]:
+2000/09/19 19:00:27 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gspmdrv.c [1.2]: 2000/09/19
+19:00:31 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (scfdgen.c [1.2]: 2000/09/19
+19:00:48 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (zdosio.c [1.2]: 2000/09/19
+19:00:53 lpd)
+
+When GSC environment variable is not set, gssetgs.bat fails to set it, which
+makes ps2pdf.bat and several other scripts fail on Windows NT 4.0 with the
+following misleading error message: "_.at" This file doesn't have a program
+associated with it ... This change fixes the problem.
+(lib/gssetgs.bat [1.2]: 2000/10/01 15:25:37 alexcher)
+
+</pre><h2><a name="6.30 Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - The PostScript image writing drivers (psmono/gray/rgb) didn't set
+the page size in the output, and didn't produce DSC-compliant output.
+(gdevps.c [1.11], gdevpsci.c [1.2], gdevpsim.c [1.3], gdevpsu.c [1.1],
+gdevpsu.h [1.1]: 2000/08/09 06:55:45 lpd)
+ - the user-contributed cfax driver didn't correctly handle page
+widths other than the standard fax widths, and didn't write the required
+end-of-document marker. (gdevcfax.c [1.2]: 2000/08/17 04:43:25 lpd)
+ - Setting parameters for the PS/PDF writer reset any unspecified
+*Dict parameter dictionaries to the empty dictionary, rather than leaving
+them alone. (gdevpsdp.c [1.6]: 2000/08/18 03:18:59 lpd)
+ - BJC printers with different X and Y resolution produced incorrect
+output. Also removes the comment asking users to report problems to Yves
+Arrouye, since he no longer maintains this code. (gdevcdj.c [1.3]:
+2000/08/21 14:43:17 lpd)
+ - The emulation of XPutImage (Ghostscript*useXPutImage: 0) was
+broken. (gdevx.c [1.6]: 2000/08/21 17:23:26 lpd)
+ - Dictionary-valued device parameters for high-level devices could
+be freed while the device still referred to them. (gdevpsdp.c [1.7]:
+2000/08/31 15:55:46 lpd)
+ - Cleans up some missing and incorrect dependencies.
+(gdevsco.c [1.2]: 2000/09/11 04:43:09 lpd)
+ - Works around a gcc code generation bug that sometimes caused gray
+colors to be written out as RGB in PDF files. (Minor performance issue
+only.) (gdevpsdu.c [1.6]: 2000/09/11 21:12:12 lpd)
+ - The pgnm and pnm drivers didn't properly detect the presence of
+gray shades or color in images, sometimes causing gray or color information
+to be lost in the output. (fix contributed by a user) (gdevpbm.c [1.3]:
+2000/09/23 04:52:57 lpd)
+
+In the X Windows driver, changes XFlush() to XSync(False) so that updates
+will actually complete before the command prompt appears. (gdevx.c [1.5],
+gdevxini.c [1.8]: 2000/08/19 03:31:44 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdev3852.c [1.2], gdev3b1.c
+[1.2], gdev4081.c [1.2], gdev8510.c [1.2], gdev8bcm.c [1.2], gdev8bcm.h
+[1.2], gdevadmp.c [1.2], gdevatx.c [1.6], gdevbit.c [1.2], gdevbj10.c
+[1.3], gdevbjc.h [1.2], gdevbjcl.c [1.2], gdevbjcl.h [1.2], gdevbmp.c
+[1.3], gdevbmp.h [1.2], gdevbmpa.c [1.3], gdevbmpc.c [1.2], gdevccr.c
+[1.2], gdevcdj.c [1.4], gdevcfax.c [1.3], gdevcgm.c [1.2], gdevcgml.c
+[1.2], gdevcgml.h [1.2], gdevcgmx.h [1.2], gdevcif.c [1.2], gdevclj.c
+[1.2], gdevcljc.c [1.2], gdevcp50.c [1.2], gdevcslw.c [1.2], gdevdcrd.c
+[1.2], gdevdcrd.h [1.2], gdevdfax.c [1.3], gdevdjet.c [1.6], gdevdjtc.c
+[1.2], gdevdljm.c [1.4], gdevdljm.h [1.4], gdevdm24.c [1.2], gdevegaa.asm
+[1.2], gdevepsc.c [1.2], gdevepsn.c [1.2], gdevescp.c [1.2], gdevevga.c
+[1.2], gdevfax.c [1.2], gdevfax.h [1.2], gdevherc.c [1.2], gdevhl7x.c
+[1.3], gdevimgn.c [1.2], gdevjpeg.c [1.2], gdevl256.c [1.3], gdevl31s.c
+[1.2], gdevlbp8.c [1.2], gdevlj56.c [1.2], gdevlp8k.c [1.2], gdevlxm.c
+[1.2], gdevmeds.c [1.2]: 2000/09/19 19:00:11 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevmeds.h [1.2], gdevmgr.c
+[1.2], gdevmgr.h [1.2], gdevmiff.c [1.2], gdevmswn.c [1.2], gdevmswn.h
+[1.2], gdevmsxf.c [1.2], gdevn533.c [1.2], gdevo182.c [1.2], gdevokii.c
+[1.2], gdevos2p.c [1.3], gdevp2up.c [1.2], gdevpbm.c [1.2], gdevpccm.c
+[1.2], gdevpccm.h [1.3], gdevpcfb.c [1.2], gdevpcfb.h [1.2], gdevpcl.c
+[1.4]: 2000/09/19 19:00:14 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevpcl.h [1.4], gdevpcx.c [1.2],
+gdevpe.c [1.2]: 2000/09/19 19:00:17 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevphex.c [1.2], gdevpjet.c
+[1.2], gdevpm.c [1.2], gdevpm.h [1.2], gdevpng.c [1.3], gdevps.c [1.12],
+gdevpsdf.h [1.8], gdevpsdi.c [1.12], gdevpsdp.c [1.8], gdevpsds.c [1.4],
+gdevpsds.h [1.4], gdevpsdu.c [1.7], gdevpsim.c [1.4], gdevpsu.c [1.2],
+gdevpsu.h [1.2], gdevpx.c [1.4], gdevpxat.h [1.3], gdevpxen.h [1.3],
+gdevpxop.h [1.2], gdevpxut.c [1.2], gdevpxut.h [1.2], gdevs3ga.c [1.2],
+gdevsco.c [1.3], gdevsj48.c [1.2], gdevsnfb.c [1.2], gdevsppr.c [1.2],
+gdevstc.c [1.2], gdevstc.h [1.2], gdevstc1.c [1.2], gdevstc2.c [1.2],
+gdevstc3.c [1.2], gdevstc4.c [1.2], gdevsun.c [1.2]: 2000/09/19 19:00:20
+lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevsunr.c [1.2], gdevsvga.c
+[1.2], gdevsvga.h [1.2], gdevtfax.c [1.4], gdevtfax.h [1.4], gdevtfnx.c
+[1.3], gdevtifs.c [1.3], gdevtifs.h [1.3], gdevtknk.c [1.2], gdevupd.c
+[1.3], gdevvglb.c [1.3], gdevwddb.c [1.2], gdevwdib.c [1.2], gdevwpr2.c
+[1.5], gdevwprn.c [1.2], gdevx.c [1.7], gdevx.h [1.4], gdevxalt.c [1.2],
+gdevxcmp.c [1.2], gdevxcmp.h [1.2], gdevxini.c [1.9], gdevxres.c [1.3],
+gdevxxf.c [1.5]: 2000/09/19 19:00:23 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (png_.h [1.2]: 2000/09/19 19:00:47
+lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (x_.h [1.2]: 2000/09/19 19:00:52
+lpd)
+
+</pre><h2><a name="6.30 PDF writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - The SrcPg entry in ANN pdfmarks was (effectively) ignored. (bug
+introduced between 5.50 and 6.01.) (gdevpdfm.c [1.5]: 2000/08/31 18:49:59
+lpd)
+ - When CompatibilityLevel < 1.4, transparency was ignored rather
+than being rendered explicitly. (gdevpdfg.c [1.9]: 2000/09/11 21:13:49 lpd)
+
+Works around the bug in Acrobat Reader (all versions) that apparently treats
+stroked fonts as filled fonts, ignoring the PaintType. (gdevpdft.c [1.15]:
+2000/08/31 03:23:26 lpd)
+
+Adds the ability to write some PDF 1.4 constructs: graphics state parameters
+AIS, BM, ca/CA, and TK, and images with soft masks (except for Matte).
+(gdevpdfg.c [1.8], gdevpdfg.h [1.8], gdevpdfi.c [1.18]: 2000/09/11 02:14:09
+lpd)
+
+Adds the ability to write PDF 1.4 soft-masked images. (gdevpdfi.c [1.19],
+gdevpdfo.c [1.4], gdevpdfo.h [1.4], gdevpdfv.c [1.2]: 2000/09/11 04:10:42
+lpd)
+
+Replaces "Distiller" with our program name in the Info Producer string.
+(gdevpdf.c [1.20], gdevpdfm.c [1.6], gdevpdfu.c [1.11], gdevpdfx.h [1.21]:
+2000/09/12 02:03:35 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevpdf.c [1.21], gdevpdfb.c
+[1.2], gdevpdfc.c [1.12], gdevpdfd.c [1.10], gdevpdfe.c [1.4], gdevpdff.c
+[1.8], gdevpdff.h [1.4], gdevpdfg.c [1.10], gdevpdfg.h [1.9], gdevpdfi.c
+[1.20], gdevpdfj.c [1.5], gdevpdfm.c [1.7], gdevpdfo.c [1.5], gdevpdfo.h
+[1.5], gdevpdfp.c [1.10], gdevpdfr.c [1.4], gdevpdft.c [1.16], gdevpdfu.c
+[1.12], gdevpdfv.c [1.3], gdevpdfw.c [1.5], gdevpdfx.h [1.22]: 2000/09/19
+19:00:17 lpd)
+
+</pre><h2><a name="6.30 Interpreter (PDF)"></a>Interpreter (PDF)</h2><pre>
+
+Fixes problems:
+ - PDF files with embedded CID fonts with FontName != BaseFont
+(prohibited by the PDF specification, but produced by some Adobe software)
+caused an error. (lib/pdf_font.ps [1.11], lib/pdf_ops.ps [1.8]: 2000/08/08
+22:29:12 lpd)
+ - Setting the color (fill or stroke) sometimes overwrote the color
+associated with an outer gsave level. (lib/pdf_ops.ps [1.9]: 2000/08/24
+01:55:37 lpd)
+ - The PDF text rendering modes that included clipping (modes 4-7)
+didn't work. The fix is a bit of a hack, but it's much closer to being
+right. (lib/pdf_ops.ps [1.12]: 2000/08/31 02:05:55 lpd)
+ - The new code for detecting whether a page used any transparency
+features could cause an error. (lib/pdf_main.ps [1.14]: 2000/09/10 18:48:26
+lpd)
+ - Filters with indirect object parameters caused an error. (Fix from
+Artifex.) (lib/pdf_base.ps [1.9]: 2000/09/14 00:38:05 lpd)
+ - The page dictionary was left on the operand stack while the page
+was being rendered, causing the sc[n]/SC[N] operators to give an error if
+the color consisted of only a single value. (bug introduced after 6.23)
+(lib/pdf_main.ps [1.18]: 2000/09/18 06:38:38 lpd)
+
+Puts the logic for detecting garbage after %%EOF (and some similar invalid
+constructs) back into the main code, making it produce a message on stderr.
+(lib/pdf_main.ps [1.11]: 2000/08/23 02:22:39 lpd)
+
+Implements the op, OP, and OPM (overprint control) elements of ExtGStates.
+(lib/pdf_draw.ps [1.17], lib/pdf_ops.ps [1.10]: 2000/08/24 02:26:52 lpd)
+
+Implements the new PDF 1.4 scalar graphics state parameters (ca, CA, SMask,
+AIS, BM, TK). The implementation of SMask is a stub.
+(lib/pdf_draw.ps [1.18], lib/pdf_ops.ps [1.11]: 2000/08/24 03:04:29 lpd)
+
+If a PDF file is invalid but repairable, prints out the Producer as part of
+the warning message. (lib/pdf_main.ps [1.12]: 2000/08/24 04:18:40 lpd)
+
+Adds most of the code needed to support PDF 1.4 transparency groups and soft
+masks in the graphics state. (lib/pdf_draw.ps [1.19], lib/pdf_ops.ps [1.13]:
+2000/09/08 04:54:10 lpd)
+
+Implements another chunk of the PDF 1.4 transparency features, fixing some
+bugs in the previous code. (lib/pdf_draw.ps [1.20], lib/pdf_main.ps [1.13],
+lib/pdf_ops.ps [1.14]: 2000/09/10 05:26:27 lpd)
+
+Moves the Matte entry of soft mask images from the main structure to the
+mask structures, and changes Matted to has_Matte. (lib/pdf_draw.ps [1.21]:
+2000/09/11 04:08:13 lpd)
+
+Renders pages that use any transparency features as transparency groups.
+(lib/pdf_main.ps [1.15]: 2000/09/12 20:36:23 lpd)
+
+*** empty log message *** (lib/pdf_main.ps [1.16]: 2000/09/15 03:51:54
+alexcher)
+
+Undoes uncommented and in some cases inappropriate changes.
+(lib/pdf_main.ps [1.17]: 2000/09/18 06:28:58 lpd)
+
+Updates the license notices to reflect the name change, and changes a few
+other internal references. (lib/pdf_base.ps [1.10], lib/pdf_draw.ps [1.22],
+lib/pdf_font.ps [1.12], lib/pdf_main.ps [1.19], lib/pdf_ops.ps [1.15],
+lib/pdf_sec.ps [1.2]: 2000/09/19 18:29:11 lpd)
+
+</pre><h2><a name="6.30 Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - The FlateEncode and zlibEncode filters didn't implement the
+"Effort" parameter. (fix from Alex Cherepanov) (zfzlib.c [1.2]: 2000/08/09
+16:55:25 lpd)
+ - The *ACSImageDict parameter dictionaries weren't being set for the
+/default configuration; the *ACSImageDict parameters were never recognized,
+because their names were spelled incorrectly as *ACSDict. (Two separate
+bugs.) (lib/gs_pdfwr.ps [1.5]: 2000/08/18 03:20:12 lpd)
+ - When given an array of the wrong size, a number of operators
+produced a limitcheck error rather than a rangecheck. (idparam.c [1.2],
+idparam.h [1.2], zcie.c [1.3], zfont1.c [1.7], zfunc.c [1.5],
+zfunc0.c [1.2], zimage2.c [1.2], zimage3.c [1.2], zpcolor.c [1.2],
+zshade.c [1.3]: 2000/08/23 01:45:08 lpd)
+ - The stub implementations of .{set,current}{opacity,shape}mask
+didn't {pop the argument}{push null}. (ztrans.c [1.2]: 2000/08/24 03:03:18
+lpd)
+ - The BeOS C compiler objected to some int/bool mismatches.
+(icontext.c [1.5]: 2000/08/31 03:51:29 lpd)
+ - If changing LanguageLevels caused a dictionary to grow, memory
+could be corrupted. (zmisc2.c [1.2]: 2000/08/31 14:43:58 lpd)
+ - Because "-" as an OutputFile now references the %stdout IODevice,
+it no longer worked in configurations without a PostScript interpreter.
+Fixing this required factoring out the stdin/out/err IODevices and providing
+an implementation that didn't reference the PostScript interpreter.
+(ziodev.c [1.2], ziodevs.c [1.1]: 2000/09/07 06:14:45 lpd)
+ - .LocalDefaults was stored in a local array in the (global)
+ColorSpace category dictionary, causing memory anomalies with multiple
+contexts. (lib/gs_ll3.ps [1.6], lib/gs_res.ps [1.13]: 2000/09/20 07:15:11
+lpd)
+ - A missing cast caused the picky OpenVMS compiler to complain.
+(zdevcal.c [1.3]: 2000/09/22 04:18:17 lpd)
+ - Attempting to show an undefined character code in a TrueType font
+with no .notdef entry caused an error. (lib/gs_ttf.ps [1.8]: 2000/09/23
+18:47:06 lpd)
+
+Initializes files for the 6.24 fileset. (lib/gs_init.ps [1.21]: 2000/08/09
+16:54:02 lpd)
+
+Adds the PDF "overprint mode" to the graphics state. THE ACTUAL
+FUNCTIONALITY IS NOT IMPLEMENTED YET. (zcssepr.c [1.4]: 2000/08/23 17:54:16
+lpd)
+
+Starts to implement the PDF 1.4 transparency features. All API and operator
+additions are now implemented (at least as stubs) and documented, as is
+bookkeeping for the new scalar graphics state members (but not for the soft
+masks or the transparency group stack). (ztrans.c [1.1]: 2000/08/23 21:46:31
+lpd)
+
+Partly implements opacity and shape mask bookkeeping. gsave/grestore/etc.
+and banding don't do the right thing yet. (igstate.h [1.2], ztrans.c [1.3]:
+2000/08/25 01:46:48 lpd)
+
+Implements some minor improvements to the freelist algorithms that can
+produce nearly a factor of 2 speedup in some allocation-intensive
+situations. (isave.c [1.2]: 2000/08/26 03:21:34 lpd)
+
+Brings the (still mostly stubbed) transparency code to a more
+self-consistent state. (ztrans.c [1.4]: 2000/08/30 01:34:40 lpd)
+
+Finishes the code for parsing ImageType 103 (soft-mask) images.
+(ztrans.c [1.5]: 2000/08/30 04:30:06 lpd)
+
+Completes the parsing of .{begin,end}transparency{group,mask}, except for
+the TransferFunction for masks. The specification is still subject to
+change. (ztrans.c [1.6]: 2000/08/30 15:03:36 lpd)
+
+*Really* finishes the transparency rendering stack operators (the previous
+version didn't even compile), except for TransferFunction. (ztrans.c [1.7]:
+2000/08/30 21:11:55 lpd)
+
+Implements another chunk of the PDF 1.4 transparency features, fixing some
+bugs in the previous code. (lib/gs_ll3.ps [1.4], ztrans.c [1.8]: 2000/09/10
+05:26:27 lpd)
+
+Checks that the TransferFunction of a soft mask is 1-in, 1-out; sets Matted
+correctly in the soft mask parameters passed to the graphics library.
+(ztrans.c [1.9]: 2000/09/11 02:10:28 lpd)
+
+Moves the Matte entry of soft mask images from the main structure to the
+mask structures, and changes Matted to has_Matte. (ztrans.c [1.10]:
+2000/09/11 04:08:13 lpd)
+
+Upgrades the proposed driver interface transparency extension from comments
+to macros, changing the name 'discard_transparency_level' to
+'discard_transparency_layer'. (ztrans.c [1.11]: 2000/09/11 20:13:31 lpd)
+
+*** empty log message *** (lib/gs_init.ps [1.22], zmatrix.c [1.2]:
+2000/09/14 19:46:05 alexcher)
+
+Undoes uncommented and in some cases inappropriate changes.
+(lib/gs_init.ps [1.23], zmatrix.c [1.3]: 2000/09/18 06:28:58 lpd)
+
+Updates the license notice to reflect the name change, and changes a few
+other internal references. (lib/gs_agl.ps [1.2], lib/gs_btokn.ps [1.3],
+lib/gs_ccfnt.ps [1.4], lib/gs_ce_e.ps [1.2], lib/gs_cff.ps [1.7],
+lib/gs_cidfn.ps [1.17], lib/gs_cmap.ps [1.6], lib/gs_cmdl.ps [1.2],
+lib/gs_css_e.ps [1.2], lib/gs_dbt_e.ps [1.2], lib/gs_diskf.ps [1.2],
+lib/gs_dpnxt.ps [1.2], lib/gs_dps.ps [1.4], lib/gs_dps1.ps [1.2],
+lib/gs_dps2.ps [1.2], lib/gs_epsf.ps [1.2], lib/gs_fform.ps [1.2],
+lib/gs_fonts.ps [1.9], lib/gs_frsd.ps [1.4], lib/gs_il1_e.ps [1.2],
+lib/gs_il2_e.ps [1.2], lib/gs_init.ps [1.24], lib/gs_kanji.ps [1.2],
+lib/gs_ksb_e.ps [1.2], lib/gs_l2img.ps [1.2], lib/gs_lev2.ps [1.6],
+lib/gs_lgo_e.ps [1.3], lib/gs_lgx_e.ps [1.2], lib/gs_ll3.ps [1.5],
+lib/gs_mex_e.ps [1.2], lib/gs_mgl_e.ps [1.3], lib/gs_mro_e.ps [1.2],
+lib/gs_pdf_e.ps [1.2], lib/gs_pdfwr.ps [1.6], lib/gs_pfile.ps [1.2],
+lib/gs_rdlin.ps [1.2], lib/gs_res.ps [1.12], lib/gs_setpd.ps [1.5],
+lib/gs_statd.ps [1.4], lib/gs_std_e.ps [1.2], lib/gs_sym_e.ps [1.2],
+lib/gs_trap.ps [1.3], lib/gs_ttf.ps [1.7], lib/gs_typ32.ps [1.2],
+lib/gs_typ42.ps [1.2], lib/gs_type1.ps [1.4], lib/gs_wan_e.ps [1.2],
+lib/gs_wl1_e.ps [1.2], lib/gs_wl2_e.ps [1.2], lib/gs_wl5_e.ps [1.2]:
+2000/09/19 18:29:11 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (bfont.h [1.3], btoken.h [1.4],
+ccfont.h [1.2], dpmainc.c [1.2], dstack.h [1.2], dwdll.cpp [1.2], dwdll.h
+[1.2], dwimg.cpp [1.2], dwimg.h [1.2], dwinst.cpp [1.2], dwinst.h [1.2],
+dwmain.cpp [1.2], dwmain.h [1.2], dwmainc.cpp [1.3], dwnodll.cpp [1.2],
+dwsetup.cpp [1.3], dwsetup.h [1.2], dwtext.cpp [1.2], dwtext.h [1.2],
+dwuninst.cpp [1.2], dwuninst.h [1.2], errors.h [1.2], estack.h [1.2],
+files.h [1.2]: 2000/09/19 19:00:09 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (ghost.h [1.2], gs.c [1.2]:
+2000/09/19 19:00:23 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (ialloc.c [1.2], ialloc.h [1.2],
+iastate.h [1.2], iastruct.h [1.2], ibnum.c [1.2], ibnum.h [1.2], iccfont.c
+[1.2], iccinit0.c [1.2], icfontab.c [1.2], ichar.h [1.3], ichar1.h [1.3],
+icharout.h [1.2], icid.h [1.2], icie.h [1.2], icolor.h [1.2], iconf.c
+[1.2], icontext.c [1.6], icontext.h [1.2], icremap.h [1.2], icsmap.h [1.2],
+icstate.h [1.4], iddict.h [1.2], iddstack.h [1.2], idebug.c [1.2], idebug.h
+[1.2], idict.c [1.2], idict.h [1.2], idictdef.h [1.2], idosave.h [1.2],
+idparam.c [1.3], idparam.h [1.3], idsdata.h [1.2], idstack.c [1.2],
+idstack.h [1.2], iesdata.h [1.2], iestack.h [1.2], ifcid.h [1.2], ifilter.h
+[1.3], ifilter2.h [1.2], ifont.h [1.4], ifont1.h [1.3], ifont2.h [1.2],
+ifont42.h [1.3], ifrpred.h [1.2], ifunc.h [1.3], ifwpred.h [1.2], igc.c
+[1.2]: 2000/09/19 19:00:41 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (igc.h [1.2], igcref.c [1.2],
+igcstr.c [1.3], igcstr.h [1.2], igstate.h [1.3], iht.h [1.2], iimage.h
+[1.2], iimage2.h [1.2], iinit.c [1.2], iinit.h [1.2], ilevel.h [1.2],
+ilocate.c [1.3], imain.c [1.2], imain.h [1.2], imainarg.c [1.4], imainarg.h
+[1.2], imemory.h [1.2], iminst.h [1.2], iname.c [1.3], iname.h [1.2],
+inamedef.h [1.2], inameidx.h [1.2], inames.h [1.2], inamestr.h [1.2],
+inobtokn.c [1.2], inouparm.c [1.2], interp.c [1.6], interp.h [1.2],
+iosdata.h [1.2], iostack.h [1.2], ipacked.h [1.2], iparam.c [1.5], iparam.h
+[1.2], iparray.h [1.2], ipcolor.h [1.2], ireclaim.c [1.2], iref.h [1.3],
+isave.c [1.3], isave.h [1.2], iscan.c [1.5], iscan.h [1.4], iscanbin.c
+[1.5], iscanbin.h [1.2], iscannum.c [1.2], iscannum.h [1.2], isdata.h
+[1.2], isstate.h [1.2], istack.c [1.2], istack.h [1.2], istkparm.h [1.2],
+istream.h [1.2], istruct.h [1.2], itoken.h [1.2], iutil.c [1.2], iutil.h
+[1.2], iutil2.c [1.2], iutil2.h [1.2], ivmem2.h [1.2]: 2000/09/19 19:00:44
+lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (ivmspace.h [1.2], main.h [1.2],
+oparc.h [1.2], opcheck.h [1.2], opdef.h [1.2], oper.h [1.2], opextern.h
+[1.2], ostack.h [1.2], sbhc.c [1.2], sbhc.h [1.2], sbwbs.c [1.2], sbwbs.h
+[1.2], sfilter1.c [1.5]: 2000/09/19 19:00:47 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (shcgen.c [1.2], shcgen.h [1.2],
+smtf.c [1.2], smtf.h [1.2], store.h [1.2], zarith.c [1.4], zarray.c [1.2],
+zbfont.c [1.6], zbseq.c [1.4], zcfont.c [1.2], zchar.c [1.3], zchar1.c
+[1.5], zchar2.c [1.2], zchar32.c [1.2], zchar42.c [1.2], zcharout.c [1.2],
+zcharx.c [1.3], zcid.c [1.3], zcie.c [1.4], zcolor.c [1.4]: 2000/09/19
+19:00:50 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (zcolor1.c [1.3], zcolor2.c [1.3],
+zcontext.c [1.6], zcontrol.c [1.3], zcrd.c [1.2], zcsdevn.c [1.3],
+zcsindex.c [1.3], zcspixel.c [1.2], zcssepr.c [1.5], zdevcal.c [1.2],
+zdevice.c [1.3], zdevice2.c [1.3], zdict.c [1.3], zdouble.c [1.2],
+zdpnext.c [1.2], zdps.c [1.4], zdps1.c [1.2], zfbcp.c [1.3], zfcid.c
+[1.10], zfcid0.c [1.4], zfcid1.c [1.2], zfcmap.c [1.8], zfdctd.c [1.3],
+zfdcte.c [1.3], zfdecode.c [1.3], zfile.c [1.5], zfileio.c [1.9], zfilter.c
+[1.4], zfilter2.c [1.3], zfilterx.c [1.2], zfmd5.c [1.2], zfont.c [1.2],
+zfont0.c [1.3], zfont1.c [1.8], zfont2.c [1.3], zfont32.c [1.2], zfont42.c
+[1.5], zfproc.c [1.4], zfrsd.c [1.4], zfunc.c [1.6], zfunc0.c [1.3],
+zfunc3.c [1.2], zfunc4.c [1.5], zfzlib.c [1.3], zgeneric.c [1.3], zgstate.c
+[1.2], zhsb.c [1.2], zht.c [1.2], zht1.c [1.2], zht2.c [1.2], zimage.c
+[1.5], zimage2.c [1.3], zimage3.c [1.3], ziodev.c [1.3], ziodev2.c [1.3],
+ziodevs.c [1.2], zmath.c [1.3], zmatrix.c [1.4], zmedia2.c [1.2], zmisc.c
+[1.2], zmisc1.c [1.3], zmisc2.c [1.3], zmisc3.c [1.2], zpacked.c [1.2],
+zpaint.c [1.2], zpath.c [1.2], zpath1.c [1.2], zpcolor.c [1.3], zrelbit.c
+[1.2], zrop.c [1.2], zshade.c [1.4], zstack.c [1.2], zstring.c [1.2],
+zsysvm.c [1.2], ztoken.c [1.6], ztrans.c [1.12], ztrap.c [1.2], ztype.c
+[1.3], zupath.c [1.2], zusparam.c [1.3], zvmem.c [1.2], zvmem2.c [1.2]:
+2000/09/19 19:00:53 lpd)
+
+Change to avoid multiply defined rect_param when NOPRIVATE is used. This
+module uses 4 element X/Y/width/Height, not a gs_rect so xywh_param is a
+better name. (zdpnext.c [1.3]: 2000/09/21 15:12:01 rayjj)
+
+Changes the default Windows installation directory from c:\Aladdin to c:\gs.
+(dwsetup.cpp [1.4]: 2000/09/22 05:32:17 lpd)
+
+Changes the default Windows Start Menu Folder from "Aladdin" to
+"Ghostscript". (dwsetup.cpp [1.5]: 2000/09/22 05:35:02 lpd)
+
+Documentation changes in preparation for 6.30 release. Replaced some contact
+information, updated version numbers. (lib/gs_init.ps [1.25]: 2000/10/04
+04:33:29 raph)
+
+</pre><h2><a name="6.30 Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - s_add_filter used min_out_size rather than min_in_size for the
+minimum buffer size, which could cause an endless loop when writing to the
+filter. (This only affected filters allocated by C code, not by the
+PostScript filter operator.) (stream.c [1.7], stream.h [1.6]: 2000/08/16
+01:26:22 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (sa85d.c [1.2], sa85d.h [1.2],
+sa85x.h [1.3], sbcp.c [1.3], sbcp.h [1.2], sbtx.h [1.2], scanchar.h [1.2],
+scantab.c [1.2], scf.h [1.2], scfd.c [1.2], scfe.c [1.2], scfetab.c [1.2],
+scfparam.c [1.2], scfx.h [1.2], scommon.h [1.2], sdcparam.c [1.2],
+sdcparam.h [1.2], sdct.h [1.2], sdctc.c [1.2], sdctd.c [1.2], sdcte.c
+[1.2], sddparam.c [1.2], sdeparam.c [1.2], seexec.c [1.3], sfilter.h [1.6],
+sfilter2.c [1.3], sfxboth.c [1.2], sfxfd.c [1.5]: 2000/09/19 19:00:47 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (sfxstdio.c [1.4], shc.c [1.2],
+shc.h [1.2], siinterp.c [1.2], siinterp.h [1.2], siscale.c [1.4], siscale.h
+[1.2], sisparam.h [1.2], sjpeg.h [1.2], sjpegc.c [1.2], sjpegd.c [1.2],
+sjpege.c [1.2], slzwc.c [1.2], slzwce.c [1.2], slzwd.c [1.2], slzwx.h
+[1.2], smd5.c [1.3], smd5.h [1.2], spdiff.c [1.3], spdiffx.h [1.2], spngp.c
+[1.2], spngpx.h [1.2], spprint.c [1.2], spprint.h [1.2], spsdf.c [1.4],
+spsdf.h [1.2], srdline.h [1.2], srld.c [1.2], srle.c [1.2], srlx.h [1.2],
+sstring.c [1.2], sstring.h [1.2], stat_.h [1.5], std.h [1.3], stdio_.h
+[1.2], stdpre.h [1.2], stream.c [1.8], stream.h [1.7], strimpl.h [1.2],
+string_.h [1.2], szlibc.c [1.2], szlibd.c [1.2], szlibe.c [1.2], szlibx.h
+[1.2], szlibxx.h [1.2]: 2000/09/19 19:00:50 lpd)
+
+</pre><h2><a name="6.30 Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Parameter lists didn't have proper GC descriptors; garbage
+collection could mangle keys and collection values in non-transient
+parameter lists (such as distiller parameters). (gscparam.c [1.5]:
+2000/08/19 03:01:30 lpd)
+ - gdev_vector_dopath could return 1, which value was then propagated
+to callers that interpreted it differently. (gdevvec.c [1.5],
+gdevvec.h [1.3]: 2000/08/20 00:21:42 lpd)
+ - An AIX compiler could get confused if the last elements of a
+structure were individual bytes. (gzpath.h [1.2]: 2000/08/24 19:43:48 lpd)
+ - If the OutputFile of a high-level device was ever set, any
+subsequent execution of setpagedevice would cause a rangecheck in
+.installpagedevice. (gdevvec.c [1.6]: 2000/08/31 02:04:50 lpd)
+ - Type 2 CharStrings didn't insert an explicit closepath at the end
+of each subpath. (This matters for charpath followed by stroke.)
+(gstype2.c [1.5]: 2000/08/31 02:16:45 lpd)
+ - Type 2 fonts should insert an explicit closepath only if the
+font's PaintType != 1. (gstype2.c [1.6]: 2000/08/31 03:21:45 lpd)
+ - The BeOS C compiler objected to some int/bool mismatches.
+(gp.h [1.4], gxfill.c [1.4], gxtext.h [1.2]: 2000/08/31 03:51:29 lpd)
+ - Because "-" as an OutputFile now references the %stdout IODevice,
+it no longer worked in configurations without a PostScript interpreter.
+Fixing this required factoring out the stdin/out/err IODevices and providing
+an implementation that didn't reference the PostScript interpreter.
+(gsiodevs.c [1.1], gslib.c [1.2]: 2000/09/07 06:14:45 lpd)
+ - Fixes a type error caused by a change in the TransferFunction
+member of gs_transparency_mask_params_t. (gstrans.c [1.7]: 2000/09/10
+18:20:09 lpd)
+ - Several places in the code for ImageType 3x (soft-masked) images
+didn't correctly handle the case where only one of the two masks was
+supplied (which is always the case for PDF). (gximag3x.c [1.4]: 2000/09/11
+02:12:19 lpd)
+ - The -Zv tracing messages for gs_begin_transparency_{group,mask}
+were incorrect. (gstrans.c [1.10]: 2000/09/12 20:35:05 lpd)
+ - Printing the program name and version didn't use fprintf, so it
+didn't work properly with the stdout redirection on Windows. (fix from
+Artifex) (gsmisc.c [1.7]: 2000/09/18 06:22:35 lpd)
+ - Undefined characters in CID-keyed (FMapType 9) composite fonts
+caused an infinite loop, because the parsing index was never advanced past
+the character. (gsfcmap.c [1.7]: 2000/09/21 02:44:44 lpd)
+ - CID-keyed (FMapType 9) composite fonts didn't return the correct
+parsed character code, possibly causing widthshow or cshow to produce
+incorrect output. (gsfcmap.c [1.8], gsfcmap.h [1.4]: 2000/09/21 03:02:03
+lpd)
+ - Works around ANSI C's unreasonable new aliasing restrictions.
+(gsnogc.c [1.5]: 2000/09/22 04:17:52 lpd)
+ - The 'head' table in embedded TrueType fonts had a length of 56; it
+should have a length of 54 and be followed by 2 padding bytes.
+(gdevpsft.c [1.4]: 2000/09/26 06:42:05 lpd)
+
+Initializes files for the 6.24 fileset. (gscdef.c [1.7]: 2000/08/09 16:54:02
+lpd)
+
+Adds the PDF "overprint mode" to the graphics state. THE ACTUAL
+FUNCTIONALITY IS NOT IMPLEMENTED YET. (gscsepr.c [1.4], gscsepr.h [1.3],
+gsstate.c [1.2], gxclpath.c [1.3], gxclpath.h [1.2], gxclrast.c [1.4],
+gxistate.h [1.2]: 2000/08/23 17:54:14 lpd)
+
+Starts to implement the PDF 1.4 transparency features. All API and operator
+additions are now implemented (at least as stubs) and documented, as is
+bookkeeping for the new scalar graphics state members (but not for the soft
+masks or the transparency group stack). (gsistate.c [1.2], gsstate.c [1.3],
+gstparam.h [1.1], gstrans.c [1.1], gstrans.h [1.1], gxclpath.c [1.4],
+gxclpath.h [1.3], gxclrast.c [1.5], gxistate.h [1.3], gzstate.h [1.2]:
+2000/08/23 21:46:31 lpd)
+
+Adds a new equality-testing virtual procedure for color spaces.
+(gscdevn.c [1.4], gscolor2.c [1.5], gscpixel.c [1.2], gscscie.c [1.2],
+gscsepr.c [1.5], gscspace.c [1.3], gscspace.h [1.3], gspcolor.c [1.3],
+gxcspace.h [1.3]: 2000/08/24 05:42:30 lpd)
+
+Changes the band list representation of mask images to allow
+BitsPerComponent > 1 (for soft masks). (gximage1.c [1.2]: 2000/08/24
+17:58:18 lpd)
+
+Adds Matte and has_Matte members to ImageType 1 images. These are only used
+with the new transparency features. (gsiparam.h [1.2], gximage1.c [1.3]:
+2000/08/24 19:20:12 lpd)
+
+Partly implements opacity and shape mask bookkeeping. gsave/grestore/etc.
+and banding don't do the right thing yet. (gstparam.h [1.2],
+gstrans.c [1.2], gstrans.h [1.2], gxcldev.h [1.2], gxclpath.c [1.5],
+gxclpath.h [1.4]: 2000/08/25 01:46:48 lpd)
+
+Changes remove_range_from_freelist to only scan relevant freelists, rather
+than all of them. On some files, the speedup is dramatic. (gsalloc.c [1.6]:
+2000/08/26 01:18:33 lpd)
+
+Completes an edit that accidentally left the repository in an inconsistent
+state. (gxclpath.c [1.6], gxclrast.c [1.6]: 2000/08/26 03:19:56 lpd)
+
+Implements some minor improvements to the freelist algorithms that can
+produce nearly a factor of 2 speedup in some allocation-intensive
+situations. (gsalloc.c [1.7], gxalloc.h [1.4]: 2000/08/26 03:21:34 lpd)
+
+Brings the (still mostly stubbed) transparency code to a more
+self-consistent state. (gsipar3x.h [1.1], gsiparam.h [1.3],
+gsstruct.h [1.4], gstparam.h [1.3], gstrans.c [1.3], gstrans.h [1.3],
+gxclpath.c [1.7], gxclpath.h [1.5], gxclrast.c [1.7], gximag3x.c [1.1],
+gximag3x.h [1.1], gximage1.c [1.4], gxistate.h [1.4]: 2000/08/30 01:34:40
+lpd)
+
+Finishes the code for parsing ImageType 103 (soft-mask) images.
+(gximag3x.c [1.2]: 2000/08/30 04:29:56 lpd)
+
+Completes the parsing of .{begin,end}transparency{group,mask}, except for
+the TransferFunction for masks. The specification is still subject to
+change. (gstparam.h [1.4], gstrans.c [1.4], gstrans.h [1.4]: 2000/08/30
+15:03:36 lpd)
+
+Adds documentation on proposed driver interface additions for managing the
+transparency rendering stack. (gstrans.c [1.5]: 2000/08/31 20:22:47 lpd)
+
+Adds color space type names for tracing/debugging. (gscspace.h [1.4]:
+2000/09/10 05:21:44 lpd)
+
+Changes the -Zv switch to trace alpha/transparency-related features.
+(gdevabuf.c [1.2]: 2000/09/10 05:23:10 lpd)
+
+Implements another chunk of the PDF 1.4 transparency features, fixing some
+bugs in the previous code. (gstparam.h [1.5], gstrans.c [1.6],
+gximag3x.c [1.3]: 2000/09/10 05:26:27 lpd)
+
+Moves the Matte entry of soft mask images from the main structure to the
+mask structures, and changes Matted to has_Matte. (gsipar3x.h [1.2],
+gximag3x.c [1.5], gximag3x.h [1.2]: 2000/09/11 04:08:13 lpd)
+
+Adds a default implementation of soft-masked images that simply ignores the
+mask. (gximag3x.c [1.6]: 2000/09/11 04:38:01 lpd)
+
+Upgrades the proposed driver interface transparency extension from comments
+to macros, changing the name 'discard_transparency_level' to
+'discard_transparency_layer'. (gstrans.c [1.8], gstrans.h [1.5]: 2000/09/11
+20:13:31 lpd)
+
+Finishes the (dummy) implementation of the transparency layer stack in the
+graphics library. (gsistate.c [1.3], gsstate.c [1.4], gstparam.h [1.6],
+gstrans.c [1.9], gxistate.h [1.5]: 2000/09/11 22:20:05 lpd)
+
+Makes the default string matching parameters public. (gsutil.c [1.3],
+gsutil.h [1.2]: 2000/09/12 02:02:52 lpd)
+
+*** empty log message *** (gsmisc.c [1.6]: 2000/09/15 03:01:51 alexcher)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (close_.h [1.2], ctype_.h [1.2],
+dirent_.h [1.2], dos_.h [1.2], errno_.h [1.2], fcntl_.h [1.3], gconf.c
+[1.2], gconf.h [1.2], gdebug.h [1.2], gdevabuf.c [1.3], gdevalph.c [1.2],
+gdevbbox.c [1.3], gdevbbox.h [1.2]: 2000/09/19 19:00:09 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevcmap.c [1.2], gdevcmap.h
+[1.2], gdevdbit.c [1.2], gdevddrw.c [1.2], gdevdflt.c [1.3], gdevdgbr.c
+[1.2], gdevdrop.c [1.3], gdevemap.c [1.2], gdevhit.c [1.2], gdevht.c [1.3],
+gdevht.h [1.2], gdevm1.c [1.2], gdevm16.c [1.2], gdevm2.c [1.2], gdevm24.c
+[1.2], gdevm32.c [1.2], gdevm4.c [1.2], gdevm8.c [1.2], gdevmem.c [1.2],
+gdevmem.h [1.3], gdevmpla.c [1.2], gdevmpla.h [1.2], gdevmr1.c [1.2],
+gdevmr2n.c [1.2], gdevmr8n.c [1.2], gdevmrop.h [1.3], gdevmrun.c [1.2],
+gdevmrun.h [1.2], gdevnfwd.c [1.3]: 2000/09/19 19:00:12 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevpipe.c [1.3], gdevplnx.c
+[1.2], gdevplnx.h [1.2], gdevppla.c [1.2], gdevppla.h [1.2], gdevprn.c
+[1.5], gdevprn.h [1.6], gdevprna.c [1.2], gdevprna.h [1.2], gdevpsf.h
+[1.7], gdevpsf1.c [1.5], gdevpsf2.c [1.7], gdevpsfm.c [1.3], gdevpsft.c
+[1.3], gdevpsfu.c [1.4], gdevpsfx.c [1.5], gdevrops.c [1.3]: 2000/09/19
+19:00:20 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gdevtrac.c [1.2], gdevvec.c
+[1.7], gdevvec.h [1.4], gp.h [1.5], gp_dosfe.c [1.2], gp_dosfs.c [1.2],
+gp_getnv.c [1.2], gp_msdos.c [1.2], gp_nsync.c [1.2], gp_psync.c [1.2],
+gp_strdl.c [1.2], gp_unifn.c [1.2], gp_unifs.c [1.3], gpcheck.h [1.2],
+gpgetenv.h [1.2], gpmisc.c [1.7], gpmisc.h [1.2], gpsync.h [1.2], gsalloc.c
+[1.8], gsalloc.h [1.2], gsalpha.c [1.2], gsalpha.h [1.2], gsalphac.c [1.2],
+gsalphac.h [1.2], gsargs.c [1.2], gsargs.h [1.3], gsbitmap.h [1.2],
+gsbitops.c [1.2], gsbitops.h [1.2], gsbittab.c [1.2], gsbittab.h [1.2]:
+2000/09/19 19:00:23 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gsccode.h [1.4], gsccolor.h
+[1.2], gscdef.c [1.8], gscdefs.h [1.2], gscdevn.c [1.5], gscdevn.h [1.3],
+gschar.c [1.3], gschar.h [1.3], gschar0.c [1.2], gscie.c [1.3], gscie.h
+[1.2], gsciemap.c [1.3], gscindex.h [1.2], gsclipsr.c [1.2], gsclipsr.h
+[1.2], gscolor.c [1.4], gscolor.h [1.3], gscolor1.c [1.3], gscolor1.h
+[1.2], gscolor2.c [1.6], gscolor2.h [1.3], gscolor3.c [1.4], gscolor3.h
+[1.2], gscompt.h [1.2], gscoord.c [1.5], gscoord.h [1.2], gscparam.c [1.6],
+gscpixel.c [1.3], gscpixel.h [1.2], gscpm.h [1.2], gscrd.c [1.2], gscrd.h
+[1.2], gscrdp.c [1.2], gscrdp.h [1.2], gscrypt1.c [1.2], gscrypt1.h [1.2],
+gscscie.c [1.3], gscsel.h [1.2], gscsepnm.h [1.2], gscsepr.c [1.6],
+gscsepr.h [1.4], gscspace.c [1.4], gscspace.h [1.5], gscssub.c [1.2],
+gscssub.h [1.2], gsdcolor.h [1.3], gsdevice.c [1.7], gsdevice.h [1.3],
+gsdevmem.c [1.2], gsdparam.c [1.4], gsdpnext.h [1.2], gsdps.c [1.2],
+gsdps.h [1.2], gsdps1.c [1.2], gsdsrc.c [1.2], gsdsrc.h [1.3], gserror.h
+[1.2], gserrors.h [1.2], gsexit.h [1.2], gsfcid.c [1.4], gsfcmap.c [1.6],
+gsfcmap.h [1.3], gsfemu.c [1.2], gsflip.c [1.2], gsflip.h [1.2], gsfname.c
+[1.2], gsfname.h [1.2], gsfont.c [1.2], gsfont.h [1.2], gsfont0.c [1.2],
+gsfunc.c [1.4], gsfunc.h [1.4], gsfunc0.c [1.3], gsfunc0.h [1.2], gsfunc3.c
+[1.4], gsfunc3.h [1.2], gsfunc4.c [1.3], gsfunc4.h [1.2], gsfuncv.c [1.2],
+gsfuncv.h [1.2]: 2000/09/19 19:00:26 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gsgc.h [1.2], gshsb.c [1.2],
+gshsb.h [1.2], gsht.c [1.2], gsht.h [1.2], gsht1.c [1.2], gsht1.h [1.2],
+gshtscr.c [1.3], gshtx.c [1.2], gshtx.h [1.2], gsimage.c [1.3], gsimage.h
+[1.2], gsimpath.c [1.2], gsinit.c [1.2], gsio.h [1.4], gsiodev.c [1.3],
+gsiodevs.c [1.2], gsipar3x.h [1.3], gsiparam.h [1.4], gsiparm2.h [1.2],
+gsiparm3.h [1.4], gsiparm4.h [1.2], gsistate.c [1.4], gsjconf.h [1.2],
+gslib.c [1.3], gslib.h [1.2], gsline.c [1.2], gsline.h [1.2], gslparam.h
+[1.2], gsmalloc.c [1.3], gsmalloc.h [1.2], gsmatrix.c [1.2], gsmatrix.h
+[1.2], gsmdebug.h [1.2], gsmemlok.c [1.3], gsmemlok.h [1.2], gsmemory.c
+[1.2], gsmemory.h [1.2], gsmemraw.h [1.2], gsmemret.c [1.2], gsmemret.h
+[1.2], gsmisc.c [1.8], gsnogc.c [1.4], gsnogc.h [1.2], gsnorop.c [1.2],
+gsnotify.c [1.2], gsnotify.h [1.2], gspaint.c [1.2], gspaint.h [1.2],
+gsparam.c [1.4], gsparam.h [1.7], gsparam2.c [1.2], gsparams.c [1.2],
+gsparams.h [1.2], gsparamx.c [1.3], gsparamx.h [1.3], gspath.c [1.2],
+gspath.h [1.2], gspath1.c [1.2], gspath2.h [1.2], gspcolor.c [1.4],
+gspcolor.h [1.2], gspenum.h [1.2], gsptype1.c [1.2], gsptype1.h [1.2]:
+2000/09/19 19:00:29 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gsptype2.c [1.3], gsptype2.h
+[1.2], gsrect.h [1.2], gsrefct.h [1.2], gsrop.c [1.2], gsrop.h [1.2],
+gsropc.c [1.2], gsropc.h [1.2], gsropt.h [1.3], gsroptab.c [1.2], gsshade.c
+[1.3], gsshade.h [1.3], gsstate.c [1.5], gsstate.h [1.2], gsstruct.h [1.5],
+gsstype.h [1.2], gstext.c [1.3], gstext.h [1.3], gstparam.h [1.7],
+gstrans.c [1.11], gstrans.h [1.6], gstrap.c [1.3], gstrap.h [1.3],
+gstype1.c [1.5], gstype1.h [1.2], gstype2.c [1.7], gstype42.c [1.7],
+gstypes.h [1.2], gsuid.h [1.2], gsutil.c [1.4], gsutil.h [1.3], gsxfont.h
+[1.2], gx.h [1.2], gxacpath.c [1.3], gxalloc.h [1.5], gxalpha.h [1.2],
+gxarith.h [1.2], gxband.h [1.2], gxbcache.c [1.2], gxbcache.h [1.2],
+gxbitfmt.h [1.2], gxbitmap.h [1.2], gxbitops.h [1.2], gxccache.c [1.2],
+gxccman.c [1.2], gxcdevn.h [1.2], gxchar.c [1.2], gxchar.h [1.2],
+gxchrout.c [1.2], gxchrout.h [1.2], gxcht.c [1.2], gxcid.h [1.3], gxcie.h
+[1.2], gxcindex.h [1.2], gxclbits.c [1.2], gxcldev.h [1.3], gxclfile.c
+[1.2], gxclimag.c [1.2], gxclio.h [1.2], gxclip.c [1.3], gxclip.h [1.2],
+gxclip2.c [1.3], gxclip2.h [1.2], gxclipm.c [1.3], gxclipm.h [1.2],
+gxclipsr.h [1.2], gxclist.c [1.3], gxclist.h [1.2], gxcllzw.c [1.2],
+gxclmem.c [1.2], gxclmem.h [1.2]: 2000/09/19 19:00:32 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gxclpage.c [1.2], gxclpage.h
+[1.2], gxclpath.c [1.8], gxclpath.h [1.6], gxclrast.c [1.8], gxclread.c
+[1.2], gxclrect.c [1.2], gxclutil.c [1.2], gxclzlib.c [1.2], gxcmap.c
+[1.3], gxcmap.h [1.2], gxcolor2.h [1.4], gxcomp.h [1.2], gxcoord.h [1.2],
+gxcpath.c [1.3], gxcpath.h [1.2], gxcspace.h [1.4], gxctable.c [1.3],
+gxctable.h [1.2], gxcvalue.h [1.2], gxdcconv.c [1.3], gxdcconv.h [1.2],
+gxdcolor.c [1.3], gxdcolor.h [1.3], gxdda.h [1.2], gxdevbuf.h [1.2],
+gxdevcli.h [1.3], gxdevice.h [1.4], gxdevmem.h [1.2], gxdevrop.h [1.2],
+gxdht.h [1.4], gxdhtres.h [1.2], gxdither.c [1.2], gxdither.h [1.2],
+gxfarith.h [1.3], gxfcache.h [1.2], gxfcid.h [1.6], gxfcmap.h [1.5],
+gxfill.c [1.5], gxfixed.h [1.2], gxfmap.h [1.3], gxfont.h [1.2], gxfont0.h
+[1.3], gxfont1.h [1.4], gxfont42.h [1.4], gxfrac.h [1.2], gxftype.h [1.2],
+gxfunc.h [1.3], gxgetbit.h [1.2], gxhint1.c [1.2], gxhint2.c [1.2],
+gxhint3.c [1.2], gxht.c [1.2], gxht.h [1.2], gxhtbit.c [1.3], gxhttile.h
+[1.2], gxhttype.h [1.2], gxi12bit.c [1.2], gxiclass.h [1.2], gxicolor.c
+[1.2], gxidata.c [1.4], gxifast.c [1.2], gximag3x.c [1.7]: 2000/09/19
+19:00:35 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gximag3x.h [1.3], gximage.c
+[1.2], gximage.h [1.2], gximage1.c [1.5], gximage2.c [1.2], gximage3.c
+[1.6], gximage3.h [1.4], gximage4.c [1.3], gximono.c [1.2], gxino12b.c
+[1.2], gxiodev.h [1.2], gxiparam.h [1.2], gxipixel.c [1.2], gxiscale.c
+[1.2], gxistate.h [1.6], gxline.h [1.2], gxlum.h [1.2], gxmatrix.h [1.4],
+gxmclip.c [1.2], gxmclip.h [1.2], gxobj.h [1.2], gxop1.h [1.2], gxp1fill.c
+[1.2], gxp1impl.h [1.2], gxpageq.c [1.2], gxpageq.h [1.2], gxpaint.c [1.2],
+gxpaint.h [1.2], gxpath.c [1.2], gxpath.h [1.2], gxpath2.c [1.2],
+gxpcache.h [1.2], gxpcmap.c [1.3], gxpcolor.h [1.2], gxpcopy.c [1.3],
+gxpdash.c [1.2], gxpflat.c [1.2], gxropc.h [1.2], gxrplane.h [1.2],
+gxsample.c [1.2], gxsample.h [1.2], gxshade.c [1.4], gxshade.h [1.3],
+gxshade1.c [1.5], gxshade4.c [1.3], gxshade4.h [1.2], gxshade6.c [1.3],
+gxstate.h [1.2], gxstdio.h [1.2], gxstroke.c [1.2], gxsync.c [1.2],
+gxsync.h [1.2], gxtext.h [1.3], gxtmap.h [1.2], gxttf.h [1.2], gxtype1.c
+[1.6], gxtype1.h [1.4], gxxfont.h [1.2], gzacpath.h [1.2], gzcpath.h [1.2],
+gzht.h [1.3], gzline.h [1.2], gzpath.h [1.3]: 2000/09/19 19:00:38 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gzstate.h [1.3]: 2000/09/19
+19:00:41 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (jerror_.h [1.2], malloc_.h [1.2],
+math_.h [1.2], memory_.h [1.2], pipe_.h [1.2]: 2000/09/19 19:00:47 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (time_.h [1.2], vmsmath.h [1.2],
+windows_.h [1.2]: 2000/09/19 19:00:51 lpd)
+
+Bring version numbers and dates up to date. Small bug fix in toolbin/pre to
+make it able to handle months with leading zeros. (gscdef.c [1.9]:
+2000/10/04 05:18:54 raph)
+
+</pre><h2><a name="6.30 ???Other???"></a>???Other???</h2><pre>
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gp_mswin.h [1.2]: 2000/09/19
+19:00:24 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gsdll.h [1.2], gsdll32w.lnk
+[1.2], gsdllos2.h [1.2], gsdllwin.h [1.2], gsjmorec.h [1.2]: 2000/09/19
+19:00:27 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (gspmdrv.h [1.2]: 2000/09/19
+19:00:31 lpd)
+
+Updates the license notices to reflect the name change, as well as some
+internal references to the program name. (iutilasm.asm [1.2]: 2000/09/19
+19:00:46 lpd)
+
+<hr>
+
+<h1><a name="Version6.23"></a>Version 6.23 (2000-08-07)</h1>
+
+<p>
+This fileset consists mostly of bug fixes.
+
+<p>
+All problems registered on SourceForge numbered 110922 or lower are closed,
+except for the following: 101549, 101814, 101905, 101955, 102146, 102735,
+104118, 105289, 105558, 106340, 106652, 109350, 110445, 110898, 110922.
+
+<p>
+The following projects are in a partially completed state in the PDF writer:
+
+<ul>
+
+<li>CID-keyed fonts (gdevpdf[eftw].c) -- barely started.
+
+</ul>
+
+<pre>
+
+<h2><a name="6.23_Incompatible_changes"></a>Incompatible changes</h2>
+
+(Drivers)
+ - With high-level drivers ([e]pswrite, pdfwrite, pxl*, cgm*),
+changing the OutputFile after writing one or more pages now causes an error.
+(Interpreter)
+ - By default, copydevice will only copy a device prototype.
+ - Some internal references to contexts in zcontext.c are changed
+from direct pointers to context indices.
+ - Renames internal types to add a _t: ctx_list, ctx_status,
+gs_context, gs_condition, gs_lock.
+(Library)
+ - By default, gs_copydevice[2] will only copy a device prototype.
+
+
+<h2><a name="6.23 Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Local GC in a multi-context system caused a crash. Also updates
+all the internal type names in zcontext.c by adding a _t suffix if
+necessary. (doc/News.htm [1.54]: 2000/07/10 23:56:55 lpd)
+ - With some high-level drivers, changing the OutputFile after
+opening the device could cause a crash. After the fix, doing this works
+properly if no pages have actually been written out, but causes a rangecheck
+error if any pages have been written. (This is required to maintain internal
+consistency.) (doc/News.htm [1.55]: 2000/07/12 14:02:03 lpd)
+ - The documented limit on the length of a file name was incorrect.
+(doc/Language.htm [1.9]: 2000/08/03 06:45:25 lpd)
+
+Increments the version number, in preparation for the next fileset.
+(doc/News.htm [1.52]: 2000/07/06 02:45:06 lpd)
+
+Adds a finish_copydevice device procedure, for cleaning up after copying the
+bits of a device prototype or instance. For safety, the default
+implementation only allows copying the prototype, not instances. This is a
+NON-BACKWARD-COMPATIBLE change; however, using copydevice on a device
+instance never worked reliably, so it should not have been used this way
+before. (doc/Drivers.htm [1.4], doc/News.htm [1.53]: 2000/07/06 04:13:24
+lpd)
+
+Updates the references to the Computer Modern Fontmap on CTAN.
+(doc/Fonts.htm [1.5], doc/New-user.htm [1.8]: 2000/07/09 23:29:25 lpd)
+
+Updates a couple of release procedures. (doc/Release.htm [1.15]: 2000/07/10
+19:32:59 lpd)
+
+Adds documentation and a script for preparing GNU releases from Aladdin
+releases. (doc/Release.htm [1.16]: 2000/07/17 17:10:57 lpd)
+
+Clarifies that device parameters set with -d or -s can be changed
+subsequently. (doc/Use.htm [1.8]: 2000/07/17 20:13:03 lpd)
+
+Adds a project for making Ghostscript work as a Netscape browser plug-in.
+(doc/Projects.htm [1.13]: 2000/07/19 22:50:18 lpd)
+
+Removes the SVG driver from the list of projects, since there is a group
+close to completing one (referenced from the Ghostscript home page on the
+Web). (doc/Projects.htm [1.14]: 2000/07/20 14:49:52 lpd)
+
+Directs users to the Ghostscript home page on the Web for information about
+third-party drivers. (doc/New-user.htm [1.9]: 2000/07/20 14:50:34 lpd)
+
+Adds a partially implemented driver that just produces a trace of its
+drawing calls. This driver also serves as a minimal example of how to
+implement the high-level driver operations. (doc/Drivers.htm [1.5]:
+2000/07/29 04:00:00 lpd)
+
+Updates dates and version #s for the 6.23 fileset. (doc/Bug-info.htm [1.4],
+doc/Changes.htm [1.15], doc/Drivers.htm [1.6], doc/Fonts.htm [1.6],
+doc/History5.htm [1.3], doc/Htmstyle.htm [1.4], doc/Install.htm [1.5],
+doc/Language.htm [1.10], doc/New-user.htm [1.10], doc/News.htm [1.56],
+doc/Projects.htm [1.15], doc/Ps2pdf.htm [1.15], doc/Release.htm [1.17],
+doc/Use.htm [1.9], man/ps2ps.1 [1.6]: 2000/08/07 17:48:09 lpd)
+
+</pre><h2><a name="6.23 Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - $(GLGEN)/md5.h wasn't deleted after compilation. (lib.mak [1.26]:
+2000/07/09 23:19:59 lpd)
+ - TrueType font loading now requires the Adobe glyph list, but this
+dependency was missing from the makefile. (int.mak [1.26]: 2000/07/19
+08:11:15 lpd)
+ - During compilation, GLSRCDIR was searched before GLGENDIR. (We're
+very surprised that this didn't cause detectable trouble before.)
+(lib.mak [1.27]: 2000/07/19 14:32:00 lpd)
+ - The dependency on gsparamx.$(OBJ) was incorrectly attached to
+pdfwrite.dev rather than psdf.dev. (devs.mak [1.30]: 2000/08/03 17:42:52
+lpd)
+ - 'pre' didn't work with dates in August or September (Tcl doesn't
+accept 08 and 09 as valid numbers). (toolbin/pre [1.5]: 2000/08/07 17:35:27
+lpd)
+
+Increments the version number, in preparation for the next fileset.
+(version.mak [1.17]: 2000/07/06 02:45:06 lpd)
+
+Adds some user-contributed comments about using the Canon BJ200 driver with
+the BJ300. (contrib.mak [1.18]: 2000/07/11 15:33:19 lpd)
+
+Updates the (user-contributed) all-architecture build script to work around
+a detail in the SGI IRIX C library header files. (all-arch.mak [1.4]:
+2000/07/15 19:23:45 lpd)
+
+Adds documentation and a script for preparing GNU releases from Aladdin
+releases. (toolbin/makegnu.tcl [1.1]: 2000/07/17 17:10:57 lpd)
+
+Adds a partially implemented driver that just produces a trace of its
+drawing calls. This driver also serves as a minimal example of how to
+implement the high-level driver operations. (lib.mak [1.28]: 2000/07/29
+04:00:00 lpd)
+
+Changes 'gsmake' to report line number rather than character position for
+errors and warnings. (toolbin/gsmake.tcl [1.3]: 2000/08/07 17:22:27 lpd)
+
+Updates dates and version #s for the 6.23 fileset. (version.mak [1.18]:
+2000/08/07 17:48:10 lpd)
+
+Adds some missing dependencies. (int.mak [1.27], lib.mak [1.29]: 2000/08/07
+17:52:22 lpd)
+
+</pre><h2><a name="6.23 Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - An invalid file name or pattern passed to filenameforall would
+(incorrectly) return an empty string rather than not returning any file
+names at all. (gp_vms.c [1.3]: 2000/07/09 21:09:51 lpd)
+ - Some DOS/Windows script files didn't use 'call', so they would
+terminate execution prematurely if called from another script file.
+(lib/ps2pdf.bat [1.5], lib/ps2pdf12.bat [1.4], lib/ps2pdf13.bat [1.4],
+lib/ps2pdfxx.bat [1.8]: 2000/07/24 15:12:21 lpd)
+
+</pre><h2><a name="6.23 Drivers"></a>Drivers</h2><pre>
+
+Implements finish_copydevice for X windows, to allow copying instances as
+well as the prototype. (gdevx.c [1.4], gdevx.h [1.3], gdevxini.c [1.7]:
+2000/07/06 05:29:46 lpd)
+
+Adds some user-contributed comments about using the Canon BJ200 driver with
+the BJ300. (gdevbj10.c [1.2]: 2000/07/11 15:33:19 lpd)
+
+</pre><h2><a name="6.23 PDF writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - M_2PI was predefined on some systems. (gdevpdfg.c [1.6]:
+2000/07/09 23:11:31 lpd)
+ - The word and character spacing values were not tracked correctly
+when mixing text and graphics, sometimes producing horizontally misplaced
+text. (gdevpdf.c [1.18], gdevpdfg.c [1.7], gdevpdfu.c [1.10],
+gdevpdfx.h [1.19]: 2000/07/11 14:33:54 lpd)
+ - 'show'ing an empty string could cause the next string to be
+positioned incorrectly. (gdevpdft.c [1.14]: 2000/07/27 14:18:11 lpd)
+
+Updates font embedding code to handle CIDFontType 2 fonts. NOT TESTED.
+(gdevpdfe.c [1.3]: 2000/07/27 04:18:13 lpd)
+
+Adds glyphs_used to FontDescriptors and pfd to std_fonts in the device
+structure. WORK IN PROGRESS. (gdevpdf.c [1.19], gdevpdff.c [1.7],
+gdevpdff.h [1.3], gdevpdfx.h [1.20]: 2000/07/27 04:19:24 lpd)
+
+</pre><h2><a name="6.23 Interpreter (PDF)"></a>Interpreter (PDF)</h2><pre>
+
+Fixes problems:
+ - If a badly-constructed PDF file referenced one of the 12 base
+alphabetic fonts explicitly as a TrueType font (e.g., /BaseFont
+/TimesNewRoman /Subtype /TrueType) without embedding it, the substituted
+Type 1 font had the wrong Encoding. (lib/pdf_font.ps [1.10]: 2000/07/10
+13:18:28 lpd)
+ - Piped input beginning with a % caused an ioerror. (bug introduced
+in 6.22) (lib/pdf_main.ps [1.10]: 2000/07/14 05:30:19 lpd)
+ - As a result of some recent changes to fix other problems, setting
+certain text state parameters (Tf, Ts, Tz) outside of text mode (BT/ET)
+caused an error. (lib/pdf_ops.ps [1.6]: 2000/07/19 15:57:54 lpd)
+ - Setting a singular text matrix (e.g., 0 0 0 0 <x> <y> Tm) caused
+an error. (lib/pdf_ops.ps [1.7]: 2000/08/04 16:08:05 lpd)
+
+</pre><h2><a name="6.23 Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Removes the '?' procedure, which was defined solely for the
+convenience of users who don't read the documentation and which interfered
+with the operation of some code produced by the Adobe PS5 Windows driver.
+(lib/gs_init.ps [1.18]: 2000/07/09 22:34:30 lpd)
+ - A constant 1 should have been 1L, causing a warning on systems
+where sizeof(long) > sizeof(int). (zarith.c [1.3]: 2000/07/09 23:10:58 lpd)
+ - The workaround for attempting to set a 4-element PageSize value in
+a page device sometimes caused an error. (bug introduced in 6.21)
+(lib/gs_setpd.ps [1.4]: 2000/07/10 12:48:54 lpd)
+ - Redefining setcolorspace could cause an infinite recursion.
+(lib/gs_lev2.ps [1.5]: 2000/07/10 13:35:24 lpd)
+ - Local GC in a multi-context system caused a crash. Also updates
+all the internal type names in zcontext.c by adding a _t suffix if
+necessary. (zcontext.c [1.4]: 2000/07/10 23:56:55 lpd)
+ - A garbage collection occurring within a save could cause a memory
+access error. (bug introduced in 6.22) (zcontext.c [1.5]: 2000/07/14
+05:28:56 lpd)
+ - Piped input beginning with a % caused an ioerror. (bug introduced
+in 6.22) (zfileio.c [1.8]: 2000/07/14 05:30:19 lpd)
+ - A garbage collection occurring while scanning a binary token
+sequence could cause a syntaxerror or corrupted data. (iscan.c [1.3]:
+2000/07/18 15:39:02 lpd)
+ - (correction) An interruption (including a callout for a
+procedure-based stream), not a garbage collection, while scanning a binary
+token sequence could cause a syntaxerror or corrupted data. (iscan.c [1.4]:
+2000/07/18 15:41:55 lpd)
+ - When loading a TrueType font, invalid glyph numbers in the 'post'
+table (which appear in some Adobe-created PDF files) caused an error instead
+of being ignored; a test was backwards, causing some embedded TrueType fonts
+in PDF files to produce a rangecheck error. (lib/gs_ttf.ps [1.6]: 2000/07/19
+08:12:41 lpd)
+ - When NOPROMPT was set, no flush or flushpage occurred at the end
+of a page. (fix from an anonymous user on SourceForge)
+(lib/gs_init.ps [1.19]: 2000/07/20 01:40:50 lpd)
+ - Type 1 or Type 2 fonts with invalid LanguageGroup values < 0
+caused an error. (Such fonts are invalid, but some real fonts have garbage
+LanguageGroup values, and Adobe software doesn't give an error.)
+(zfont1.c [1.6]: 2000/07/24 18:08:38 lpd)
+ - Errors while executing gs_init.ps and other PostScript
+initialization files were sometimes ignored, leading to mysterious error
+messages later. (imainarg.c [1.3]: 2000/08/03 06:43:17 lpd)
+ - Showing text with a singular matrix (scaling matrix x CTM) could
+leave extraneous values on the operand stack. (zchar1.c [1.4]: 2000/08/04
+16:09:30 lpd)
+
+Increments the version number, in preparation for the next fileset.
+(lib/gs_init.ps [1.15]: 2000/07/06 02:45:06 lpd)
+
+Redefines [gs_]copydevice in terms of a new gs_copydevice2/.copydevice2,
+which adds a Boolean keep_open argument that requests (but does not
+guarantee) that a copy of an open device remain open.
+(lib/gs_init.ps [1.16], zdevice.c [1.2]: 2000/07/06 03:26:13 lpd)
+
+Adds a finish_copydevice device procedure, for cleaning up after copying the
+bits of a device prototype or instance. For safety, the default
+implementation only allows copying the prototype, not instances. This is a
+NON-BACKWARD-COMPATIBLE change; however, using copydevice on a device
+instance never worked reliably, so it should not have been used this way
+before. (lib/gs_init.ps [1.17]: 2000/07/06 04:13:24 lpd)
+
+Adds the ability to load CIDFont resources from CFF OpenType font files.
+(lib/gs_cff.ps [1.6], lib/gs_cidfn.ps [1.16]: 2000/07/29 05:58:28 lpd)
+
+Ensures that errordict has at least one empty entry, for the sake of some
+astonishingly bad PostScript code that tests for this and has a bug in the
+case where it isn't true. (lib/gs_init.ps [1.20]: 2000/08/04 04:29:45 lpd)
+
+</pre><h2><a name="6.23 Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Some coordinate computations for Type 1 fonts could lose far too
+much precision if _fixed_shift was reduced. (gscoord.c [1.2],
+gxmatrix.h [1.2]: 2000/07/11 09:25:46 lpd)
+ - If the current color space was DeviceRGB, gs_currentgray returned
+the wrong value. (bug introduced in 6.22) (gscolor.c [1.3]: 2000/07/11
+14:00:09 lpd)
+ - With some high-level drivers, changing the OutputFile after
+opening the device could cause a crash. After the fix, doing this works
+properly if no pages have actually been written out, but causes a rangecheck
+error if any pages have been written. (This is required to maintain internal
+consistency.) (gdevvec.c [1.4]: 2000/07/12 14:02:04 lpd)
+ - A file had accidentally acquired an incorrect license notice.
+(gscoord.c [1.4]: 2000/07/13 02:02:09 lpd)
+ - Type 2 fonts that used the 'hflex' operator could produce
+distorted characters (e.g., slanted bottoms). (gstype2.c [1.4]: 2000/07/13
+02:09:21 lpd)
+ - The use of macros within procedure argument lists confused
+ansi2knr. (gximage3.c [1.5], gximage3.h [1.3]: 2000/07/19 14:30:45 lpd)
+ - Freeing a locking allocator could cause infinite recursion.
+(gsmemlok.c [1.2]: 2000/07/19 21:32:12 lpd)
+ - "Accurate curves" was a no-op for certain cases of horizontal or
+vertical tangents. (gxpcopy.c [1.2]: 2000/08/05 01:04:28 lpd)
+
+Increments the version number, in preparation for the next fileset.
+(gscdef.c [1.5]: 2000/07/06 02:45:06 lpd)
+
+Redefines [gs_]copydevice in terms of a new gs_copydevice2/.copydevice2,
+which adds a Boolean keep_open argument that requests (but does not
+guarantee) that a copy of an open device remain open. (gsdevice.c [1.5],
+gsdevice.h [1.2]: 2000/07/06 03:26:13 lpd)
+
+Adds a finish_copydevice device procedure, for cleaning up after copying the
+bits of a device prototype or instance. For safety, the default
+implementation only allows copying the prototype, not instances. This is a
+NON-BACKWARD-COMPATIBLE change; however, using copydevice on a device
+instance never worked reliably, so it should not have been used this way
+before. (gdevbbox.c [1.2], gdevdflt.c [1.2], gdevht.c [1.2],
+gdevmem.h [1.2], gdevnfwd.c [1.2], gdevprn.h [1.5], gdevrops.c [1.2],
+gsdevice.c [1.6], gxacpath.c [1.2], gxclip.c [1.2], gxclip2.c [1.2],
+gxclipm.c [1.2], gxclist.c [1.2], gxdevcli.h [1.2], gxdevice.h [1.3],
+gxpcmap.c [1.2]: 2000/07/06 04:13:24 lpd)
+
+Adds a little more tracing output for images. (gxidata.c [1.3]: 2000/07/09
+21:04:25 lpd)
+
+Adds _simple_final structure type definition macros. (gsstruct.h [1.3]:
+2000/07/10 15:43:30 lpd)
+
+Removes a structure member no longer needed after a recent fix.
+(gscoord.c [1.3], gxmatrix.h [1.3]: 2000/07/12 04:49:43 lpd)
+
+Adds the ability to write subsetted CIDFontType 2 (TrueType-based) fonts.
+(gdevpsf.h [1.6], gdevpsft.c [1.2], gdevpsfu.c [1.3], gxfcid.h [1.5]:
+2000/07/21 01:09:16 lpd)
+
+Adds a partially implemented driver that just produces a trace of its
+drawing calls. This driver also serves as a minimal example of how to
+implement the high-level driver operations. (gdevtrac.c [1.1]: 2000/07/29
+04:00:00 lpd)
+
+Improves the smoothness of ShadingType 4 - 7 gradient fills.
+(gxshade4.c [1.2], gxshade6.c [1.2]: 2000/08/03 20:47:48 lpd)
+
+Updates dates and version #s for the 6.23 fileset. (gscdef.c [1.6]:
+2000/08/07 17:48:10 lpd)
+
+<hr>
+
+<h1><a name="Version6.22"></a>Version 6.22 (2000-07-05)</h1>
+
+<p>
+This fileset consists mostly of bug fixes. It also further improves the PDF
+writer, which now handles ImageType 3 images and PatternType 2 (shading)
+patterns.
+
+<p>
+All problems registered on SourceForge numbered 108819 or lower are closed,
+except for the following: 101549, 101814, 101905, 101955, 102146, 102735,
+104118, 105289, 105558, 106340, 106652, 108639.
+
+<p>
+The following projects are in a partially completed state in the PDF writer:
+
+<ul>
+
+<li>CID-keyed fonts (gdevpdf[eftw].c) -- barely started.
+
+</ul>
+
+<pre>
+
+<h2><a name="6.22_Incompatible_changes"></a>Incompatible changes</h2>
+
+(Procedures)
+ - Versions now have odd numbers during development, even numbers
+when released.
+ - The TMPDIR environment variable, if set, now takes precedence
+over TEMP.
+ - On MS-DOS, MS Windows, and OS/2 platforms, the batch files that
+invoke Ghostscript now use a default name of gswin32 or gswin32c rather than
+simply gs.
+(Drivers)
+ - The PCL drivers now select a given paper size if the requested
+height is at least 0.1" greater than the height of the next smaller paper
+size, rather than if the requested height is at least as large as that of
+the given paper size.
+(Interpreter)
+ - user_names_p and system_names_p may now be NULL: clients must
+check this.
+ - scan_comment_proc and scan_dsc_proc are now deprecated, and will
+disappear in the near future.
+ - The values in psuserparams are now checking procedures rather
+than parameter values.
+ - Comments beginning with %! are treated as "DSC comments", like
+comments beginning with %%.
+(Library)
+ - The macro for declaring the fill_rectangle procedure of a shading
+is now upper-case. The fill_rectangle procedure is now a member of a procs
+structure; there is a new macro for calling it.
+ - The parameter list and return value for gs_currentgray have
+changed. This is very unfortunate, but it was unavoidable.
+
+
+<h2><a name="6.22 Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - The batch files for MS-DOS, MS Windows, and OS/2 referred to the
+executable by the name 'gs'. They now use environment variables GS
+(graphical) and GSC (console) for the executable names, defaulting to
+gswin32 and gswin32c respectively. (doc/News.htm [1.45], doc/Use.htm [1.6]:
+2000/05/20 20:53:04 lpd)
+ - The -dCompatibilityLevel= switch was incorrectly identified in one
+place as -dCompatibility=. (doc/Ps2pdf.htm [1.11]: 2000/05/22 21:29:45 lpd)
+ - [gs_]currentgray didn't return the correct value if the current
+color space was a DeviceN space using the alternate space.
+(doc/News.htm [1.49]: 2000/07/03 15:28:26 lpd)
+ - Fixes a couple of typos. (doc/Release.htm [1.12]: 2000/07/04
+19:19:38 lpd)
+ - The "smoke test" procedure for fileset releases didn't stress the
+banding code nearly as hard as intended. (doc/Release.htm [1.13]: 2000/07/05
+04:50:13 lpd)
+
+Adds predefined pdfwrite settings similar to the three standard settings in
+Adobe Acrobat Distiller 4, plus a "default" setting, with
+-dPDFSETTINGS=/settingname. (doc/Ps2pdf.htm [1.10]: 2000/04/29 02:29:20 lpd)
+
+Increments the version number to 6.23. From now on, we use odd numbers
+during development, even numbers for released filesets.
+(doc/Changes.htm [1.12], doc/History6.htm [1.7], doc/News.htm [1.40],
+doc/Release.htm [1.11]: 2000/04/29 16:49:43 lpd)
+
+Implements ImageType 3 images in the PDF writer. (doc/News.htm [1.41]:
+2000/04/30 06:21:58 lpd)
+
+Creates a procs structure for shadings, moving the fill_rectangle procedure
+into it, in anticipation of adding a get_params procedure.
+(doc/News.htm [1.42]: 2000/04/30 19:37:37 lpd)
+
+Implements PatternType 2 patterns and shfill in the PDF writer.
+(doc/News.htm [1.43]: 2000/05/02 07:14:58 lpd)
+
+Adds a reference to Karel Kulhavy's pdf2html program.
+(doc/New-user.htm [1.6]: 2000/05/04 21:16:44 lpd)
+
+Adds a small project to remove the limit on the length of the OutputFile
+parameter for printer drivers. (doc/Projects.htm [1.9]: 2000/05/06 00:32:08
+lpd)
+
+Documents the addition of TMPDIR for specifying the directory for temporary
+files. (doc/News.htm [1.44], doc/Use.htm [1.5]: 2000/05/19 17:59:28 lpd)
+
+Adds (more) user-contributed uniprint parameter files for the Epson Stylus
+Color 640. (doc/Devices.htm [1.8]: 2000/05/23 18:58:56 lpd)
+
+Adds implementation of the %font% IODevice to the list of projects.
+(doc/Projects.htm [1.10]: 2000/05/24 23:30:15 lpd)
+
+Documents the change in the paper size selection for PCL drivers.
+(doc/News.htm [1.46]: 2000/05/30 03:26:15 lpd)
+
+Adds glyph decaching notification to the list of projects.
+(doc/Projects.htm [1.11]: 2000/05/30 05:54:23 lpd)
+
+Documents that user_names_p and system_names_p may now be NULL.
+(doc/News.htm [1.47]: 2000/06/05 01:26:05 lpd)
+
+Adds the ability to write multi-strip monochrome TIFF files, controlled by a
+new MaxStripSize parameter for the monochrome TIFF drivers.
+(doc/Devices.htm [1.9]: 2000/06/05 05:41:55 lpd)
+
+Updates the open ICC color support project to reference Graeme Gill's icclib
+package. (doc/Projects.htm [1.12]: 2000/06/08 02:55:37 lpd)
+
+Adds an umbrella document for maintenance procedures, initially describing
+the procedure for uploading bug report test data to SourceForge.
+(doc/Maintain.htm [1.1], doc/Readme.htm [1.8]: 2000/06/13 20:27:26 lpd)
+
+Updates documentation to reflect the use of the GSC environment variable to
+set the name of the executable for ps2pdf. (doc/Ps2pdf.htm [1.12]:
+2000/06/21 17:10:41 lpd)
+
+Updates documentation on the ProcessColorModel and ColorConversionStrategy
+parameters. (doc/Ps2pdf.htm [1.13]: 2000/06/21 18:06:07 lpd)
+
+Adds user parameters ProcessComment and ProcessDSCComment. If not null,
+these procedures are called with the file and the comment line whenever the
+scanner detects a comment (or non-DSC comment) or DSC comment. NOTE: the
+interpreter is currently patched so that ProcessComment is never called.
+(doc/Language.htm [1.4], doc/News.htm [1.48]: 2000/06/27 00:53:38 lpd)
+
+Adds a reference to a user-maintained Czech translation of the Ghostscript
+'man' pages. (doc/Readme.htm [1.9]: 2000/06/27 14:03:29 lpd)
+
+Brings the language documentation (more) up to date.
+(doc/Language.htm [1.5]: 2000/06/29 16:00:48 lpd)
+
+Improves the documentation of copydevice regarding where it allocates the
+copy, and documents finddevice. (doc/Drivers.htm [1.2],
+doc/Language.htm [1.6]: 2000/06/30 00:09:15 lpd)
+
+Adds a findprotodevice "operator", to find a device prototype by name.
+(doc/Language.htm [1.7]: 2000/07/05 04:49:11 lpd)
+
+Changes the version numbering system back to sequential (not odd/even).
+Between numbered filesets, GS_PRODUCT will say "CVS PRE-RELEASE".
+(doc/History6.htm [1.8], doc/News.htm [1.50]: 2000/07/05 17:23:54 lpd)
+
+Updates documentation related to version numbering, reflecting the move back
+to sequential numbering. (doc/Maintain.htm [1.2], doc/Release.htm [1.14]:
+2000/07/05 18:27:50 lpd)
+
+Updates documentation dates for making a fileset. (doc/Changes.htm [1.13],
+doc/Devices.htm [1.10], doc/Drivers.htm [1.3], doc/History6.htm [1.9],
+doc/Language.htm [1.8], doc/New-user.htm [1.7], doc/News.htm [1.51],
+doc/Ps2pdf.htm [1.14], doc/Readme.htm [1.10], doc/Use.htm [1.7]: 2000/07/06
+00:01:39 lpd)
+
+</pre><h2><a name="6.22 Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - The rule for the recently-added gdevhl12 driver omitted the space
+before the colon. (contrib.mak [1.12]: 2000/05/02 01:42:12 lpd)
+ - Once again, corrects an incorrect dependency list.
+(lib.mak [1.19]: 2000/05/02 07:14:11 lpd)
+ - smd5.c didn't compile properly with "traditional C" compilers.
+(lib.mak [1.20]: 2000/05/19 06:08:01 lpd)
+ - Temporary files weren't created as private or exclusive.
+(lib.mak [1.21], os2.mak [1.6], watc.mak [1.4], watclib.mak [1.4],
+winlib.mak [1.3]: 2000/05/19 17:52:51 lpd)
+ - The definitions of user names weren't properly associated with
+local VM (they were stored in a static variable). (int.mak [1.22]:
+2000/05/26 02:27:58 lpd)
+ - 'make install' on Unix systems didn't install pdfopt.ps and
+pdfwrite.ps. (unixinst.mak [1.11]: 2000/05/30 23:07:34 lpd)
+ - The dependency list for the new Epson Stylus Photo driver was
+wrong, causing build problems if this driver was included.
+(contrib.mak [1.13]: 2000/06/01 20:25:39 lpd)
+ - The change to implement stripped TIFF files broke non-TIFF fax
+output formats (faxg* drivers). Also factors plain-fax writing from TIFF
+writing. (devs.mak [1.26]: 2000/06/06 06:37:37 lpd)
+ - Corrects a typo introduced by recent changes. (msvctail.mak [1.3]:
+2000/06/07 06:36:54 lpd)
+ - Rendering TrueType fonts didn't adjust the flatness to ensure
+accurate results. (lib.mak [1.23]: 2000/06/20 15:46:53 lpd)
+ - The makefile missed a dependency (CIDFontType 0 fonts require
+FontType 2 fonts). (int.mak [1.23]: 2000/06/27 17:23:13 lpd)
+ - The makefiles didn't include the requirement that gs_mro_e.ps be
+loaded before gs_mgl_e.ps. (devs.mak [1.28], int.mak [1.24]: 2000/06/27
+17:36:42 lpd)
+ - A dependency was missing. (lib.mak [1.24]: 2000/07/04 19:05:12
+lpd)
+ - Fixes a typo; reduces the number of false warnings for
+documentation date mismatches. (toolbin/pre [1.4]: 2000/07/04 19:19:17 lpd)
+ - Fixes a typo. (contrib.mak [1.16]: 2000/07/04 22:30:10 lpd)
+ - Adds a missing dependency. (devs.mak [1.29]: 2000/07/04 22:30:33
+lpd)
+ - Adds a missing dependency. (contrib.mak [1.17]: 2000/07/06
+00:00:13 lpd)
+
+Increments the version number to 6.23. From now on, we use odd numbers
+during development, even numbers for released filesets. (version.mak [1.15]:
+2000/04/29 16:49:43 lpd)
+
+Restructures the code for handling ImageType 3 images, for the benefit of
+the PDF writer. (lib.mak [1.18]: 2000/04/30 03:08:15 lpd)
+
+Implements ImageType 3 images in the PDF writer. (devs.mak [1.23]:
+2000/04/30 06:21:58 lpd)
+
+Implements PatternType 2 patterns and shfill in the PDF writer.
+(devs.mak [1.24]: 2000/05/02 07:14:58 lpd)
+
+Adds the first draft of a driver for the Practical Automation ATX-23, -24,
+and -38 label/ticket printers, developed under contract. This has a dual
+GPL/AFPL license. (devs.mak [1.25]: 2000/05/03 20:30:06 lpd)
+
+Works around the fact that Microsoft Visual C++ (only) doesn't define the O_
+flags for the `open' library call. (lib.mak [1.22]: 2000/05/31 20:34:43 lpd)
+
+Makes it possible to build on MSVC++ systems without specifying the paths
+for the tools, headers, or libraries. See msvc{32,lib}.mak for details.
+(msvc32.mak [1.4], msvccmd.mak [1.4], msvclib.mak [1.4], msvctail.mak [1.2],
+winint.mak [1.4]: 2000/06/05 02:46:07 lpd)
+
+Adds a user-contributed driver for SFF (the file format for CAPI fax
+devices). (contrib.mak [1.14]: 2000/06/06 06:38:31 lpd)
+
+Notes that the vgalib driver only suppotrs 16-color modes. (devs.mak [1.27]:
+2000/06/06 15:28:01 lpd)
+
+Removes an obsolete file. (toolbin/package.tcl [1.2]: 2000/06/06 18:05:32
+lpd)
+
+Documents the fact that the IJG JPEG library header files must be available
+when compiling, even if SHARE_JPEG=1. (dvx-gcc.mak [1.3], jpeg.mak [1.2],
+unix-gcc.mak [1.6], unixansi.mak [1.4], unixtrad.mak [1.4]: 2000/06/07
+13:32:44 lpd)
+
+Finishes implementing the Process[DSC]Comment callout. (int.mak [1.25]:
+2000/06/28 20:17:00 lpd)
+
+Removes some third-party drivers with incompatible licenses.
+(contrib.mak [1.15]: 2000/07/02 22:11:31 lpd)
+
+Finishes working around the fact that Microsoft C, in defiance of multiple
+standards, by default doesn't define the O_ flags for 'open' in fcntl.h (or
+anywhere else). (lib.mak [1.25]: 2000/07/05 00:48:21 lpd)
+
+Changes the version numbering system back to sequential (not odd/even).
+Between numbered filesets, GS_PRODUCT will say "CVS PRE-RELEASE".
+(version.mak [1.16]: 2000/07/05 17:23:54 lpd)
+
+</pre><h2><a name="6.22 Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Fixes a couple of minor Windows NT compatibility problems in
+script files. (lib/ps2pdf.bat [1.3], lib/ps2pdfxx.bat [1.5]: 2000/05/05
+03:21:03 lpd)
+ - Temporary files weren't created as private or exclusive.
+(gp_iwatc.c [1.3], gp_mswin.c [1.2], gp_os2.c [1.3]: 2000/05/19 17:52:51
+lpd)
+ - gsdll_init didn't propagate an error return from
+gs_main_init_with_args, causing clients to think Ghostscript was initialized
+properly when it wasn't. (gsdll.c [1.2]: 2000/05/20 14:39:42 lpd)
+ - The batch files for MS-DOS, MS Windows, and OS/2 referred to the
+executable by the name 'gs'. They now use environment variables GS
+(graphical) and GSC (console) for the executable names, defaulting to
+gswin32 and gswin32c respectively. (lib/bdftops.bat [1.2],
+lib/eps2eps.bat [1.3], lib/font2c.bat [1.2], lib/gsbj.bat [1.2],
+lib/gsdj.bat [1.2], lib/gsdj500.bat [1.2], lib/gslj.bat [1.2],
+lib/gslp.bat [1.2], lib/gsnd.bat [1.2], lib/gsndt.bat [1.2],
+lib/gssetgs.bat [1.1], lib/gst.bat [1.2], lib/gstt.bat [1.2],
+lib/lpgs.bat [1.2], lib/lpr2.bat [1.2], lib/pdf2ps.bat [1.3],
+lib/pdfopt.bat [1.2], lib/pftogsf.bat [1.2], lib/ps2ascii.bat [1.3],
+lib/ps2epsi.bat [1.3], lib/ps2pdfxx.bat [1.7], lib/ps2ps.bat [1.3]:
+2000/05/20 20:53:05 lpd)
+ - The ps2pdf.bat script didn't set the default PDF level, so it
+normally produced PDF 1.3 rather than 1.2, which was contrary to the
+documentation and different from the Unix ps2pdf script.
+(lib/ps2pdf.bat [1.4]: 2000/06/08 02:33:09 lpd)
+
+Adds a user-contributed program for displaying the differences between two
+AFM (font metric) files. This has a dual AFPL/GPL copyright.
+(lib/afmdiff.awk [1.1]: 2000/04/29 20:51:41 lpd)
+
+Removes an out-of-date e-mail address. (lib/ps2pdfxx.bat [1.4]: 2000/05/04
+16:40:08 lpd)
+
+Adds -dSAFER to all the format conversion scripts in which the input is
+executed as PostScript or PDF code. (lib/eps2eps [1.2],
+lib/eps2eps.bat [1.2], lib/pdf2dsc [1.2], lib/pdf2ps [1.3],
+lib/pdf2ps.bat [1.2], lib/ps2ascii [1.2], lib/ps2ascii.bat [1.2],
+lib/ps2epsi [1.3], lib/ps2epsi.bat [1.2], lib/ps2pdfwr [1.5],
+lib/ps2pdfxx.bat [1.6], lib/ps2ps [1.2], lib/ps2ps.bat [1.2]: 2000/05/19
+06:38:25 lpd)
+
+Adds -dSAFER to one more script. (lib/pdfopt [1.2]: 2000/05/30 05:28:22 lpd)
+
+Refactors some PDF-writing code for use in a PDF decompressor.
+(lib/pdfwrite.ps [1.2]: 2000/06/27 17:06:32 lpd)
+
+Adds a number of (user-maintained) command files for OS/2.
+(lib/bdftops.cmd [1.1], lib/eps2eps.cmd [1.1], lib/font2c.cmd [1.1],
+lib/pdf2ps.cmd [1.1], lib/pf2afm.cmd [1.1], lib/ps2ascii.cmd [1.1],
+lib/ps2epsi.cmd [1.1], lib/ps2pdf.cmd [1.1], lib/ps2pdf12.cmd [1.1],
+lib/ps2pdf13.cmd [1.1], lib/ps2ps.cmd [1.1]: 2000/07/05 16:21:13 lpd)
+
+</pre><h2><a name="6.22 Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - The "compressed data" command encoding was wrong in one place in
+the documentation, and the code used the incorrect encoding.
+(gdevatx.c [1.2]: 2000/05/06 00:31:25 lpd)
+ - If a file made no marks at all, ps2[e]ps produced bad output.
+(gdevps.c [1.8]: 2000/05/07 15:38:27 lpd)
+ - Returning an image compression parameter dictionary didn't close
+an enumeration, failing to free a bookkeeping structure. (gdevpsdp.c [1.5]:
+2000/05/11 16:13:16 lpd)
+ - The epswrite driver could produce output that used initclip, which
+is not allowed in EPS files. (gdevps.c [1.9]: 2000/05/20 06:36:30 lpd)
+ - The change to implement stripped TIFF files broke non-TIFF fax
+output formats (faxg* drivers). Also factors plain-fax writing from TIFF
+writing. (gdevfax.c [1.1], gdevfax.h [1.1], gdevtfax.c [1.3],
+gdevtfax.h [1.3]: 2000/06/06 06:37:37 lpd)
+ - In the X driver, resetting MaxBitmap didn't have the proper
+effect, and could cause a crash. (This is probably only a partial fix.)
+(gdevxini.c [1.4]: 2000/06/12 01:52:16 lpd)
+ - Finishes fixing the handling of MaxBitmap in the X driver.
+(gdevxini.c [1.5]: 2000/06/12 02:45:25 lpd)
+ - In the ATX drivers, the word count for compressed scan lines was
+written as 2 bytes rather than 1; the drivers wouldn't accept a page width
+greater than 2400 pixels. (gdevatx.c [1.4]: 2000/06/12 04:39:48 lpd)
+ - Works around a bug in the MSVC++ 5.0 compiler that treats (int <<
+unsigned) as unsigned rather than int. (gdevcd8.c [1.2], gdevcdj.c [1.2],
+gdevdj9.c [1.3]: 2000/06/20 14:21:34 lpd)
+ - Uncolored Patterns used with a gray color produced incorrect PDF
+output. (Bug introduced in 6.2x.) (gdevpsdu.c [1.5]: 2000/06/28 05:13:19
+lpd)
+ - Moves an assignment to eliminate a bogus warning from some picky
+compilers about a variable supposedly clobbered by longjmp.
+(gdevpng.c [1.2]: 2000/07/03 21:10:33 lpd)
+ - Two values were computed and not used. (gdevpx.c [1.3]: 2000/07/03
+21:30:41 lpd)
+ - [e]pswrite didn't guarantee a maximum line length of 255
+characters, and didn't mark binary data with %%BeginData:/%%EndData.
+(gdevps.c [1.10]: 2000/07/04 18:34:38 lpd)
+ - Fixes references to undeclared functions. (gdevdfax.c [1.2],
+gdevl256.c [1.2]: 2000/07/04 22:25:08 lpd)
+ - X Windows platform fonts were broken when using multiple device
+instances (windows). (gdevxxf.c [1.4]: 2000/07/05 18:20:41 lpd)
+
+Improves the test for whether compressing an image is worthwhile.
+(gdevpsdi.c [1.11]: 2000/04/30 01:26:41 lpd)
+
+When printing color values derived from 8-bit fields, rounds the output to 3
+decimal places for compactness with no loss of precision. (gdevpsdu.c [1.4]:
+2000/04/30 19:24:28 lpd)
+
+Adds the first draft of a driver for the Practical Automation ATX-23, -24,
+and -38 label/ticket printers, developed under contract. This has a dual
+GPL/AFPL license. (gdevatx.c [1.1]: 2000/05/03 20:30:06 lpd)
+
+Updates the ATX printer drivers to handle the unprintable margins.
+(gdevatx.c [1.3]: 2000/05/19 05:48:30 lpd)
+
+Adds (more) user-contributed uniprint parameter files for the Epson Stylus
+Color 640. (lib/st640ih.upp [1.1], lib/st640ihg.upp [1.1],
+lib/st640p.upp [1.1], lib/st640pg.upp [1.1], lib/st640pl.upp [1.1],
+lib/st640plg.upp [1.1]: 2000/05/23 18:58:56 lpd)
+
+Adds support for 11x17 paper in PCL printers; changes the paper size tests
+so that paper size N+1 is selected if the requested height is at least 0.1"
+greater than the height of paper size N. (gdevpcl.c [1.2], gdevpcl.h [1.2]:
+2000/05/30 03:24:17 lpd)
+
+Adds comments about H-P's inconsistent use of different names and size codes
+for the 11x17 paper size. (gdevpcl.c [1.3], gdevpcl.h [1.3]: 2000/05/30
+20:45:45 lpd)
+
+Adds the ability to write multi-strip monochrome TIFF files, controlled by a
+new MaxStripSize parameter for the monochrome TIFF drivers.
+(gdevtfax.c [1.2], gdevtfax.h [1.2], gdevtfnx.c [1.2], gdevtifs.c [1.2],
+gdevtifs.h [1.2]: 2000/06/05 05:41:55 lpd)
+
+Adds a user-contributed driver for SFF (the file format for CAPI fax
+devices). (gdevcfax.c [1.1]: 2000/06/06 06:38:31 lpd)
+
+Notes that the vgalib driver only suppotrs 16-color modes.
+(gdevvglb.c [1.2]: 2000/06/06 15:28:01 lpd)
+
+Adds some code contributed by Leon Bottou <leonb@research.att.com> that
+makes the X driver prefer TrueColor visuals. We aren't sure of the
+ramifications of this.... (gdevxini.c [1.6]: 2000/06/12 04:41:15 lpd)
+
+Updates the ATX driver(s) to enforce maximum page width and minimum page
+length. (gdevatx.c [1.5]: 2000/06/22 14:55:53 lpd)
+
+Removes some third-party drivers with incompatible licenses.
+(gdevcd8.c [1.3], gdevdj9.c [1.4], gdevhl12.c [1.2]: 2000/07/02 22:11:31
+lpd)
+
+Per user request, changes the license on the basic monochrome
+DeskJet/LaserJet drivers from AFPL to dual AFPL/GPL. (gdevdjet.c [1.5],
+gdevdljm.c [1.3], gdevdljm.h [1.3]: 2000/07/05 17:36:14 lpd)
+
+</pre><h2><a name="6.22 PDF writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - A "0 ||" was omitted, potentially causing some kinds of errors
+that never happen in practice to be overlooked. (gdevpdfi.c [1.17]:
+2000/05/02 01:55:10 lpd)
+ - Fixes minor syntactic incompatibilities with "traditional C"
+compilers. (gdevpdfg.c [1.5]: 2000/05/11 16:14:51 lpd)
+ - The PDF writer could still produce coordinates for paths that
+exceeded Acrobat Reader's user-coordinate limit of +/- 32K.
+(gdevpdfd.c [1.9]: 2000/05/23 21:05:00 lpd)
+ - In PDF 1.2 output, several synthesized Type 3 fonts could have the
+same name, producing errors and/or incorrect output. (bug introduced since
+6.01) (gdevpdf.c [1.17], gdevpdft.c [1.11], gdevpdfx.h [1.18]: 2000/05/24
+20:39:30 lpd)
+ - The FontDescriptor flags for non-embedded alphabetic fonts with
+non-Standard encodings incorrectly identified the font as a small-caps font.
+(gdevpdff.c [1.6]: 2000/05/30 23:04:23 lpd)
+ - Works around the fact that Acrobat Reader won't accept /MMType1
+fonts, but will accept MM Type 1 instances if they're tagged as /Type1
+rather than /MMType1. (gdevpdft.c [1.12], gdevpdfw.c [1.4]: 2000/06/12
+18:13:51 lpd)
+ - Embedded Type 1 (but not Type 2 / 1C) fonts were written without
+eexec encryption. We can't figure out how this happened, because the PDF
+spec requires eexec encryption and the correct code was commented out; we
+suppose this was a debugging or testing modification that got left in. (bug
+introduced since 6.01) (gdevpdfe.c [1.2]: 2000/06/12 18:15:20 lpd)
+ - Text in Type 3 synthesized fonts was often positioned incorrectly,
+usually too far to the left. (bug introduced since 6.01) (gdevpdft.c [1.13]:
+2000/06/13 16:34:42 lpd)
+ - Images that ended prematurely still (again?) weren't written
+correctly. (gdevpdfj.c [1.4]: 2000/06/27 06:32:03 lpd)
+
+Implements ImageType 3 images in the PDF writer. (gdevpdfb.c [1.1],
+gdevpdfg.h [1.6], gdevpdfi.c [1.16], gdevpdfj.c [1.3], gdevpdfx.h [1.16]:
+2000/04/30 06:21:58 lpd)
+
+Implements PatternType 2 patterns and shfill in the PDF writer.
+(gdevpdfc.c [1.11], gdevpdfg.h [1.7], gdevpdfo.c [1.3], gdevpdfo.h [1.3],
+gdevpdfv.c [1.1], gdevpdfx.h [1.17]: 2000/05/02 07:14:58 lpd)
+
+</pre><h2><a name="6.22 Interpreter (PDF)"></a>Interpreter (PDF)</h2><pre>
+
+Fixes problems:
+ - PatternType 2 (shaded) Patterns caused errors.
+(lib/pdf_draw.ps [1.14]: 2000/05/02 07:03:09 lpd)
+ - -q (-dQUIET) didn't suppress all warnings from the PDF
+interpreter. (lib/pdf_base.ps [1.8]: 2000/05/07 15:51:18 lpd)
+ - FunctionType 3 functions with indirect /Bounds or /Encode entries
+caused a typecheck error. (lib/pdf_draw.ps [1.15]: 2000/06/07 19:08:00 lpd)
+ - If the TR element of an ExtGState was an array of Functions (for
+setcolortransfer) rather a single Function (for settransfer), an error
+occurred. (fix from Artifex) (lib/pdf_draw.ps [1.16]: 2000/06/12 00:40:45
+lpd)
+ - The code for keeping the Install procedure from getting more and
+more deeply nested didn't actually work, and also caused pages with a
+non-zero MediaBox offset to be translated incorrectly.
+(lib/pdf_main.ps [1.8]: 2000/06/12 19:17:03 lpd)
+ - PDF files with embedded TrueType fonts didn't map characters to
+glyph indices correctly (i.e., using the same algorithm as Acrobat Reader).
+(lib/pdf_font.ps [1.8]: 2000/06/21 02:15:01 lpd)
+ - The built-in Identity CMaps had an incorrect entry count for
+begincodespacerange and begincidrange; these CMaps, and all Type 0 fonts,
+were constructed in a way that was incompatible with some old Adobe font
+loading software. (lib/pdf_font.ps [1.9]: 2000/06/28 01:36:30 lpd)
+ - If PDF interpretation was included in the build, the very first
+line of a non-PDF file wouldn't be processed (if applicable) as a comment.
+(lib/pdf_main.ps [1.9]: 2000/06/29 15:55:13 lpd)
+
+</pre><h2><a name="6.22 Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - localfork didn't properly initialize userdict in the new context.
+(lib/gs_dps.ps [1.2]: 2000/05/01 07:20:37 lpd)
+ - A null Pattern color caused an error. (zcolor2.c [1.2]: 2000/05/01
+15:15:06 lpd)
+ - Fixes minor syntactic incompatibilities with "traditional C"
+compilers. (zbfont.c [1.5], zfcid0.c [1.3]: 2000/05/11 16:14:51 lpd)
+ - The 'monitor' operator was broken (probably had never been
+tried!). (zcontext.c [1.2]: 2000/05/15 19:14:25 lpd)
+ - -dSTRICT caused an error, /undefined in SIZES.
+(lib/gs_statd.ps [1.3]: 2000/05/17 19:17:40 lpd)
+ - CFF CID fonts in which the FDSelect array occurred before the
+CharStrings caused an error. (lib/gs_cff.ps [1.5]: 2000/05/17 20:39:20 lpd)
+ - dict_matrix3_param didn't work correctly on platforms where the
+compiler aligned structures to a boundary larger than sizeof(float), causing
+incorrect output or arithmetic exceptions for CIE color spaces.
+(zcie.c [1.2]: 2000/05/18 19:02:25 lpd)
+ - Flushing or closing a procedure-based output stream still wasn't
+implemented correctly (it could cause an endless loop). (zfproc.c [1.3]:
+2000/05/19 19:35:01 lpd)
+ - 'monitor' left its operand on the stack. (zcontext.c [1.3]:
+2000/05/22 21:15:23 lpd)
+ - The definitions of user names weren't properly associated with
+local VM (they were stored in a static variable). (btoken.h [1.2],
+iref.h [1.2], iscanbin.c [1.3], zbseq.c [1.2], zdps.c [1.2]: 2000/05/26
+02:27:58 lpd)
+ - Invoking an image operator with an empty string data source caused
+an infinite loop. (zimage.c [1.4]: 2000/05/30 03:43:19 lpd)
+ - The fix for associating the user name array with local VM didn't
+create the user name table properly for new contexts with their own local
+VM. The user name array is now created lazily. (btoken.h [1.3],
+iscanbin.c [1.4], zbseq.c [1.3], zdps.c [1.3]: 2000/05/30 04:38:26 lpd)
+ - As a result of the fix removing the incorrect same-local-VM check
+in context_state_load, userparams wasn't updated properly when switching
+contexts. (icontext.c [1.3]: 2000/05/30 20:40:17 lpd)
+ - MAX_HALF_INTVAL was defined incorrectly, causing the mul operator
+to run slower than necessary when multiplying two small integers.
+(zarith.c [1.2]: 2000/06/04 17:00:29 lpd)
+ - Shadings with an array of Functions caused a rangecheck or
+typecheck error. (zshade.c [1.2]: 2000/06/04 18:26:17 lpd)
+ - If the new value of a device parameter was an array with some
+integers and some reals, and the first element was a real, a typecheck error
+would occur. (iparam.c [1.4]: 2000/06/19 22:22:51 lpd)
+ - PDF files with embedded TrueType fonts didn't map characters to
+glyph indices correctly (i.e., using the same algorithm as Acrobat Reader).
+(lib/gs_agl.ps [1.1], lib/gs_ttf.ps [1.5]: 2000/06/21 02:15:01 lpd)
+ - The dictionary used to hold Encodings wasn't large enough.
+(lib/gs_init.ps [1.10]: 2000/06/27 17:55:05 lpd)
+ - The change in parameter type checking required for the new
+Process[DSC]Comment user parameters broke type checking for system
+parameters. (lib/gs_lev2.ps [1.4]: 2000/06/27 17:56:04 lpd)
+ - Calling out to process a comment during scanning left an extra
+element on the operand stack if the comment appeared within { }.
+(ztoken.c [1.3]: 2000/06/28 00:47:05 lpd)
+ - In some cases, two successive DSC comments produced a syntaxerror.
+(ztoken.c [1.4]: 2000/06/28 05:14:17 lpd)
+ - The code for registering compiled fonts was sensitive to its
+position in the order of loading the initialization files (caused an error
+if loaded too early). (lib/gs_ccfnt.ps [1.3]: 2000/06/29 23:31:14 lpd)
+ - [gs_]currentgray didn't return the correct value if the current
+color space was a DeviceN space using the alternate space. (zcolor.c [1.3],
+zcolor1.c [1.2]: 2000/07/03 15:28:26 lpd)
+
+Adds predefined pdfwrite settings similar to the three standard settings in
+Adobe Acrobat Distiller 4, plus a "default" setting, with
+-dPDFSETTINGS=/settingname. (lib/gs_pdfwr.ps [1.4]: 2000/04/29 02:29:21 lpd)
+
+Increments the version number to 6.23. From now on, we use odd numbers
+during development, even numbers for released filesets.
+(lib/gs_init.ps [1.8]: 2000/04/29 16:49:43 lpd)
+
+Changes .buildfont1 to accept Type 1 fonts with LanguageGroup other than 0
+or 1. This is contrary to the spec, but we've seen a few fonts with other
+values. (zfont1.c [1.5]: 2000/05/06 08:19:37 lpd)
+
+Cleans up code and comments slightly. (lib/gs_dps.ps [1.3]: 2000/05/30
+20:35:56 lpd)
+
+Adds user parameters ProcessComment and ProcessDSCComment. If not null,
+these procedures are called with the file and the comment line whenever the
+scanner detects a comment (or non-DSC comment) or DSC comment. NOTE: the
+interpreter is currently patched so that ProcessComment is never called.
+(interp.c [1.4], iscan.c [1.2], iscan.h [1.2], lib/gs_init.ps [1.9],
+lib/gs_lev2.ps [1.3], ztoken.c [1.2], ztype.c [1.2]: 2000/06/27 00:53:38
+lpd)
+
+Finishes implementing the Process[DSC]Comment callout. (icontext.c [1.4],
+icstate.h [1.3], interp.c [1.5], iscan.h [1.3], itoken.h [1.1],
+lib/gs_init.ps [1.11], ztoken.c [1.5], zusparam.c [1.2]: 2000/06/28 20:17:00
+lpd)
+
+Changes the name of the unread operator to .unread, retaining unread as a
+synonym for backward compatibility. (lib/gs_init.ps [1.12], zfileio.c [1.7]:
+2000/06/29 15:58:24 lpd)
+
+Adds a findprotodevice "operator", to find a device prototype by name.
+(lib/gs_init.ps [1.13]: 2000/07/05 04:49:11 lpd)
+
+Changes the version numbering system back to sequential (not odd/even).
+Between numbered filesets, GS_PRODUCT will say "CVS PRE-RELEASE".
+(lib/gs_init.ps [1.14]: 2000/07/05 17:23:54 lpd)
+
+</pre><h2><a name="6.22 Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - file_limit wasn't initialized properly in some cases.
+(sfxfd.c [1.4], sfxstdio.c [1.3]: 2000/05/02 02:06:41 lpd)
+ - smd5.c didn't compile properly with "traditional C" compilers.
+(smd5.c [1.2]: 2000/05/19 06:08:01 lpd)
+ - The workaround for Microsoft C's omission of O_APPEND et al caused
+warnings or errors with other compilers. (stat_.h [1.3]: 2000/07/03 21:07:05
+lpd)
+
+Works around the fact that Microsoft Visual C++ (only) doesn't define the O_
+flags for the `open' library call. (stat_.h [1.2]: 2000/05/31 20:34:43 lpd)
+
+Finishes working around the fact that Microsoft C, in defiance of multiple
+standards, by default doesn't define the O_ flags for 'open' in fcntl.h (or
+anywhere else). (stat_.h [1.4]: 2000/07/05 00:48:21 lpd)
+
+</pre><h2><a name="6.22 Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - A null Pattern color caused an error. (gspcolor.c [1.2]:
+2000/05/01 15:15:07 lpd)
+ - A procedure name exceeded VMS's 31-character limit.
+(gsparam.h [1.6]: 2000/05/02 01:47:50 lpd)
+ - If the DataSource of a shading was a reusable stream, the stream
+wasn't reset before rendering the shading. (gxshade.c [1.2]: 2000/05/02
+07:05:10 lpd)
+ - shfill didn't go through the device fill_path procedure,
+preventing it from being written out as a high-level PostScript or PDF
+construct. (gscolor3.c [1.2]: 2000/05/02 07:06:23 lpd)
+ - Once again, corrects an incorrect dependency list.
+(gscolor3.c [1.3]: 2000/05/02 07:14:11 lpd)
+ - The code for adding elements to small-string free lists was wrong,
+possibly causing an endless loop. (gsnogc.c [1.3]: 2000/05/04 01:29:53 lpd)
+ - Fixes minor syntactic incompatibilities with "traditional C"
+compilers. (gsfunc4.c [1.2], gstype42.c [1.5]: 2000/05/11 16:14:51 lpd)
+ - CIEBasedDEF[G] color spaces computed incorrect results or caused
+invalid memory accesses, especially if DecodeDEF[G] is not the identity
+function. (This bug had probably been there since these color spaces were
+first implemented, unnoticed because DecodeDEF[G] is almost always the
+identity.) (gscie.c [1.2], gsciemap.c [1.2], gxctable.c [1.2]: 2000/05/15
+19:58:38 lpd)
+ - Temporary files weren't created as private or exclusive.
+(close_.h [1.1], gp_unifs.c [1.2], gpmisc.c [1.1], gpmisc.h [1.1]:
+2000/05/19 17:52:51 lpd)
+ - OutputFile values starting with a %d format string caused an
+error. (bug introduced in 5.85) (gsdevice.c [1.4]: 2000/05/20 06:58:11 lpd)
+ - In rare cases, an overflow could occur in the filling loop,
+producing distorted output. (Fix from Artifex Software.) (gxfill.c [1.3]:
+2000/05/23 05:46:52 lpd)
+ - When writing PDF or PostScript, stroked rectangles could sometimes
+be omitted from the output. (gdevvec.c [1.3]: 2000/05/24 18:48:14 lpd)
+ - In PDF output, the conversion of Type 1 to Type 2 CharStrings
+didn't adjust the X offset of the accent for 'seac', causing accents to be
+displaced to the right. (gdevpsfx.c [1.3]: 2000/05/24 23:20:43 lpd)
+ - The definitions of user names weren't properly associated with
+local VM (they were stored in a static variable). (gsalloc.c [1.3],
+gxalloc.h [1.2]: 2000/05/26 02:27:58 lpd)
+ - The change for local user names didn't update the structure
+descriptor for gs_ref_memory_t. (gsalloc.c [1.4], gxalloc.h [1.3]:
+2000/05/26 02:33:38 lpd)
+ - The fix for 'seac' when converting Type 1 to Type 2 CharStrings
+wasn't quite complete. (gdevpsfx.c [1.4]: 2000/05/26 20:48:37 lpd)
+ - If [eo]clip set a rectangular region, clippath would return the
+rounded clipping box, not the correct clipping path. (gxcpath.c [1.2]:
+2000/05/31 22:20:04 lpd)
+ - ShadingType 2 shadings could cause an invalid memory access.
+(gsfunc3.c [1.3]: 2000/06/04 18:25:33 lpd)
+ - Printer drivers that didn't implement print_page_copies didn't
+print multiple copies of the same page on separate files if the OutputFile
+name included %d, and some drivers (such as the TIFF drivers) produced
+invalid output. (gdevprn.c [1.4]: 2000/06/05 02:04:26 lpd)
+ - 32-bit sample values in shading data didn't work, because some
+CPUs execute (1 << 32) as (1 << 0). (gxshade.c [1.3]: 2000/06/07 19:07:17
+lpd)
+ - Type 1 fonts without eexec encryption still included the 4 eexec
+padding bytes. (bug probably introduced since 6.0) (gdevpsf1.c [1.4]:
+2000/06/12 17:38:48 lpd)
+ - Axial shadings with a non-orthogonal CTM could fail to fill the
+required region. (fix from Artifex) (gxshade1.c [1.4]: 2000/06/12 21:45:19
+lpd)
+ - When allocator debugging was enabled (-Z@), 'restore' didn't clear
+vacated space in inner chunks. (gsalloc.c [1.5]: 2000/06/13 07:04:18 lpd)
+ - the row buffers for images weren't allocated with a stable
+allocator, possibly causing data corruption or invalid accesses if a
+PostScript program invoked save/restore within the data-reading procedure
+for an image. (gsimage.c [1.2]: 2000/06/13 07:05:21 lpd)
+ - Rendering TrueType fonts didn't adjust the flatness to ensure
+accurate results. (gstype42.c [1.6], gxchrout.c [1.1], gxchrout.h [1.1],
+gxtype1.c [1.5]: 2000/06/20 15:46:53 lpd)
+ - Calling get_params with a static (read-only) device prototype
+could cause a memory access error. (gsdparam.c [1.3]: 2000/06/22 14:05:49
+lpd)
+ - [gs_]currentgray didn't return the correct value if the current
+color space was a DeviceN space using the alternate space. (gscolor.c [1.2],
+gscolor.h [1.2], gscolor1.c [1.2]: 2000/07/03 15:28:26 lpd)
+ - Some picky compilers complained about "integer constant is
+unsigned in ANSI C, signed with -traditional". (md5.c [1.2]: 2000/07/03
+21:55:18 lpd)
+ - If TMPDIR wasn't defined, TEMP would be ignored. (bug introduced
+in 6.23) (gpmisc.c [1.4]: 2000/07/04 19:54:00 lpd)
+ - Watcom C requires the non-standard O_BINARY mode flag when opening
+(with open) a file that will later be opened in binary mode with fdopen.
+(gpmisc.c [1.6]: 2000/07/05 17:08:27 lpd)
+
+Restructures the code for handling ImageType 3 images, for the benefit of
+the PDF writer. (gximage3.c [1.3], gximage3.h [1.1]: 2000/04/30 03:08:15
+lpd)
+
+Implements ImageType 3 images in the PDF writer. (gximage3.c [1.4],
+gximage3.h [1.2]: 2000/04/30 06:21:58 lpd)
+
+Creates a procs structure for shadings, moving the fill_rectangle procedure
+into it, in anticipation of adding a get_params procedure. (gsshade.c [1.2],
+gsshade.h [1.2], gxshade.h [1.2]: 2000/04/30 19:37:37 lpd)
+
+Implements PatternType 2 patterns and shfill in the PDF writer.
+(gsptype2.c [1.2]: 2000/05/02 07:14:58 lpd)
+
+Changes gdev_prn_file_is_new from a macro to a procedure. (gdevprn.c [1.3],
+gdevprn.h [1.4]: 2000/05/20 20:25:48 lpd)
+
+Works around the fact that Microsoft Visual C++ defines S_IREAD and S_IWRITE
+but not their newer equivalents S_IRUSR and S_IWUSR. (gpmisc.c [1.2]:
+2000/05/24 18:49:54 lpd)
+
+Changes some assignments to work around over-zealous compiler warnings.
+(gxtype1.c [1.4]: 2000/05/24 23:52:58 lpd)
+
+Works around the fact that Microsoft Visual C++ (only) doesn't define the O_
+flags for the `open' library call. (gpmisc.c [1.3]: 2000/05/31 20:34:43 lpd)
+
+Improves some comments in A_fill_stripe. (gxshade1.c [1.3]: 2000/06/04
+20:58:23 lpd)
+
+Finishes working around the fact that Microsoft C, in defiance of multiple
+standards, by default doesn't define the O_ flags for 'open' in fcntl.h (or
+anywhere else). (fcntl_.h [1.1], gpmisc.c [1.5]: 2000/07/05 00:48:21 lpd)
+
+Adds O_BINARY to the Microsoft compatibility fcntl.h patch. (fcntl_.h [1.2]:
+2000/07/05 17:21:43 lpd)
+
+Changes the version numbering system back to sequential (not odd/even).
+Between numbered filesets, GS_PRODUCT will say "CVS PRE-RELEASE".
+(gscdef.c [1.3]: 2000/07/05 17:23:54 lpd)
+
+Updates GS_PRODUCT for making a fileset. (gscdef.c [1.4]: 2000/07/06
+00:01:03 lpd)
+
+<hr>
+
+<h1><a name="Version6.21"></a>Version 6.21 (2000-04-28)</h1>
+
+<p>
+This fileset includes more PDF writer enhancements: conversion of embedded
+Type 1 fonts to Type 1C (smaller), handling of more color spaces for images,
+ImageType 4 images, compression of mask images, support for (tiled) Pattern
+colors, more graphics state distiller parameters, recording of graphics
+state functions in the output. It also greatly improves the space usage and
+loading time for CMaps.
+
+<p>
+All problems registered on SourceForge numbered 104890 or lower are closed,
+except for the following: 101549, 101814, 101905, 101955, 102146, 102735,
+103528, 104118, 104375.
+
+<p>
+The following projects are in a partially completed state in the PDF writer:
+
+<ul>
+
+<li>CID-keyed fonts (gdevpdf[eftw].c) -- barely started.
+
+<li>ImageType 3 images (gdevpdf[ij].c) -- started.
+
+</ul>
+
+<pre>
+
+<h2><a name="6.21_Incompatible_changes"></a>Incompatible changes</h2>
+
+(Drivers)
+ - The downsampling filters now require WidthIn and HeightIn,
+replacing Columns.
+ - The gp_ procedures for managing screen swapping between console
+and graphics are removed.
+ - Any driver that processes the pdfmark pseudo-parameter must now
+also return null for the "value" of the pdfmark parameter when (and only
+when) specifically requested.
+(PDF writer)
+ - The last argument of pdf_alloc_font has changed.
+ - pdf_set_color is renamed pdf_set_pure_color.
+ - When producing PDF 1.3 output, the base 14 fonts are now
+candidates for embedding just like any other fonts.
+(Interpreter)
+ - The .fontproperties procedure in gs_fonts.ps now takes an
+additional argument.
+ - The interpreter must no longer reference stdin/out/err directly.
+(Library)
+ - The internal representation of CMaps is changed completely, and
+has several new required members.
+ - gs_cmap is renamed gs_cmap_t; gx_code_map is renamed
+gx_code_map_t.
+ - Clients creating CMaps must call gs_cmap_init to initialize them.
+ - The library must no longer reference stdin/out/err directly.
+
+
+<h2><a name="6.21 Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - The PDF writer could get an ioerror when downsampling images whose
+size wasn't an exact multiple of the downsampling factor.
+(doc/News.htm [1.31]: 2000/04/13 16:44:59 lpd)
+ - When processing a PDF file, the font substitution heuristic based
+on the FontName sometimes overrode the Flags information in the
+FontDescriptor. (doc/News.htm [1.34]: 2000/04/20 06:36:02 lpd)
+ - When pdfwrite was producing PDF 1.3 output, the base 14 fonts were
+never embedded, rather than being handled like all other fonts.
+(doc/News.htm [1.37]: 2000/04/20 23:49:40 lpd)
+ - The URL for the Arphic free Chinese fonts had become incorrect.
+(doc/Fonts.htm [1.3]: 2000/04/27 13:44:52 lpd)
+ - Fixes a few typos, and adds GS_FONTPATH to the list of environment
+variables to be unset for a pristine test run. (doc/Release.htm [1.10]:
+2000/04/28 22:08:41 lpd)
+
+Adds projects related to SVG and to pswrite image compression.
+(doc/Projects.htm [1.4]: 2000/04/07 18:39:12 lpd)
+
+Makes the ps2pdf scripts replace a .eps extension with .pdf, as they do with
+.ps. (doc/Ps2pdf.htm [1.7], man/ps2pdf.1 [1.5], man/ps2pdfwr.1 [1.2]:
+2000/04/07 19:28:14 lpd)
+
+Completely redesigns the representation of CMaps, to reduce space
+requirements and make comparing them more reasonable, changing gs_cmap to
+gs_cmap_t and gx_code_map to gx_code_map_t. (****** NOTE ****** The
+PostScript code currently only handles a few well-behaved CMap structures.)
+(doc/News.htm [1.27]: 2000/04/08 03:54:38 lpd)
+
+Documents the need to set SYNC=nosync on NextStep / OpenStep systems.
+(doc/Make.htm [1.10]: 2000/04/10 04:45:37 lpd)
+
+Overhauls font embedding in the PDF writer: splits off the code into a new
+file (gdevpdfe.c), writes embedded Type 1 fonts as Type 1C (CFF Type 2), and
+adds a little bit of code for future support of Type 0 and CID-keyed fonts.
+(doc/News.htm [1.28]: 2000/04/10 07:48:37 lpd)
+
+Documents the fact that building on NeXTSTEP 3.3 systems requires removing
+-Wmissing-declarations from GCFLAGS. (doc/Make.htm [1.11]: 2000/04/11
+14:06:54 lpd)
+
+Enhances pdf2ps to allow defaulting the output file name.
+(man/pdf2ps.1 [1.2]: 2000/04/11 14:23:24 lpd)
+
+Factors out code for writing functions and for adding filter-related entries
+to a stream dictionary; implements the DefaultRenderingIntent distiller
+parameter. (doc/Ps2pdf.htm [1.8]: 2000/04/11 16:06:57 lpd)
+
+Implements additional distiller parameters: PreserveHalftoneInfo,
+PreserveOverprintSetting, TransferFunctionInfo (except for Apply vs.
+Remove), UCRandBGInfo. Splits off graphics state management into separate
+files. Implements the remaining graphics state parameters (halftone,
+transfer function, black generation, undercolor removal, halftone phase,
+smoothness, overprint, stroke adjustment) ****** EXCEPT FOR IMAGES ******.
+In anticipation of handling more general colors, renames pdf_set_color as
+pdf_set_pure_color, and adds pdf_set_drawing_color. (doc/News.htm [1.29]:
+2000/04/11 18:31:32 lpd)
+
+Updates documentation to match recent changes in the pdfwrite driver.
+(doc/Ps2pdf.htm [1.9]: 2000/04/11 22:56:17 lpd)
+
+Makes the second argument of the pfbtopfa script optional, so 'pfbtopfa
+dir/x.pfb' is equivalent to 'pfbtopfa dir/x.pfb x.pfa'.
+(man/pfbtopfa.1 [1.2]: 2000/04/12 17:41:41 lpd)
+
+In pdfwrite, rewrites the image writing code to use Cos objects rather than
+direct printing, and splits off the creation of image dictionaries into a
+new file; adds support for tiling with uncolored Patterns; implements
+converting ImageType 4 images to their PDF 1.3 counterpart; starts to do the
+same for ImageType 3. This code is "in progress" and likely to have problems
+for a while. (doc/News.htm [1.30]: 2000/04/12 18:44:35 lpd)
+
+Implements pdfwrite compression for mask images, using the same parameters
+as for monochrome images. (doc/News.htm [1.32]: 2000/04/13 18:40:23 lpd)
+
+Adds user-contributed uniprint parameter files for the Canon BJC-8200,
+including an addition for the Red Hat printer data base.
+(doc/Devices.htm [1.4]: 2000/04/14 03:59:57 lpd)
+
+Slightly updates the user-contributed documentation on the new BJC-8200
+uniprint parameters. (doc/Devices.htm [1.5]: 2000/04/15 00:20:54 lpd)
+
+Completes code for reading and writing CMaps. (doc/News.htm [1.33]:
+2000/04/16 03:05:29 lpd)
+
+Clarifies some details of posting releases on SourceForge.
+(doc/Release.htm [1.9]: 2000/04/17 22:59:24 lpd)
+
+Converts the ps2epsi documentation to HTML. (doc/Ps2epsi.htm [1.1],
+doc/Readme.htm [1.6], doc/ps2epsi.txt [1.2]: 2000/04/18 17:59:13 lpd)
+
+Adds a couple of graphics library optimization projects.
+(doc/Projects.htm [1.5]: 2000/04/19 04:05:11 lpd)
+
+Adds a project for creating an OutputDevice resource instance for each
+device. (doc/Projects.htm [1.6]: 2000/04/19 21:37:47 lpd)
+
+Checks in the accumulated change log. (doc/Changes.htm [1.10]: 2000/04/20
+07:24:22 lpd)
+
+Removes the gp_ procedures for managing screen swapping between console and
+graphics, which haven't been used for a long time and are no longer useful.
+(doc/News.htm [1.35]: 2000/04/20 22:47:35 lpd)
+
+Removes all remaining direct references to stdin/out/err from the library,
+interpreter, and non-contributed drivers; moves the ersatz definitions of
+stdin/out/err to a new header file. (doc/News.htm [1.36]: 2000/04/20
+23:30:22 lpd)
+
+Reduces the startup time for displaying PDF files, by skipping the creation
+of pdfmarks for annotations and outlines when the output device doesn't
+process pdfmarks. (doc/News.htm [1.38]: 2000/04/21 16:58:28 lpd)
+
+Notes that even if SHARE_JPEG=1, the IJG library sources are required.
+(doc/Make.htm [1.12]: 2000/04/27 07:39:05 lpd)
+
+Documents the new -dPrinted[=true/false] switch for PDF files.
+(doc/Use.htm [1.3]: 2000/04/27 08:17:05 lpd)
+
+Adds a MD5Encode filter, which computes the 16-byte MD5 digest of the input.
+No output is produced until the filter is closed. (doc/Language.htm [1.2]:
+2000/04/27 14:39:57 lpd)
+
+Updates the description of the project to produce higher-level PCL output.
+(doc/Projects.htm [1.7]: 2000/04/28 10:42:02 lpd)
+
+Adds a sample file containing a wide variety of PDF annotations; updates
+documentation for this and some other overlooked files.
+(doc/Psfiles.htm [1.4]: 2000/04/28 10:51:02 lpd)
+
+Notes that the uniprint dnj750c.upp parameters are also good for the 450C.
+(doc/Devices.htm [1.6]: 2000/04/28 14:27:02 lpd)
+
+Updates release dates. (man/pdf2ps.1 [1.3], man/ps2ps.1 [1.5]: 2000/04/28
+18:29:32 lpd)
+
+Updates version numbers and dates for the 6.21 fileset.
+(doc/Bug-form.htm [1.6], doc/Devices.htm [1.7], doc/Fonts.htm [1.4],
+doc/Language.htm [1.3], doc/Make.htm [1.13], doc/Projects.htm [1.8],
+doc/Ps2epsi.htm [1.2], doc/Psfiles.htm [1.5], doc/Readme.htm [1.7],
+doc/Use.htm [1.4]: 2000/04/28 22:06:25 lpd)
+
+Updates the news for the 6.21 fileset. (doc/News.htm [1.39]: 2000/04/28
+22:18:16 lpd)
+
+</pre><h2><a name="6.21 Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - Some makefile macros were used before being defined.
+(devs.mak [1.9], lib.mak [1.9]: 2000/04/07 16:02:03 lpd)
+ - `make install-data' didn't install lib/gs_frsd.ps or
+lib/pdfopt.ps. (unixinst.mak [1.7]: 2000/04/07 19:17:48 lpd)
+ - gsmake would get into a loop if the makefile was not a symbolic
+link; `gsmake check' didn't accept a makefile name on the command line.
+(toolbin/gsmake.tcl [1.2]: 2000/04/07 19:37:21 lpd)
+ - `makemaster' referred to an undefined variable. (How could it ever
+have worked?) (toolbin/makeset.tcl [1.3]: 2000/04/07 19:39:27 lpd)
+ - A dependency wasn't updated when moving the gdevpsf* rules from
+devs.mak to lib.mak. (lib.mak [1.10]: 2000/04/07 19:40:25 lpd)
+ - The dependencies in the makefile weren't updated for the pdfwrite
+font embedding overhaul. (devs.mak [1.11]: 2000/04/10 18:57:33 lpd)
+ - Once again, the dependencies hadn't been updated. (int.mak [1.17]:
+2000/04/11 15:59:42 lpd)
+ - Setting pdfwrite parameters for a DCTEncode filter could cause a
+crash (memory fault). (devs.mak [1.16]: 2000/04/13 01:53:07 lpd)
+ - `make install' didn't install all the documentation files.
+(unixinst.mak [1.9]: 2000/04/14 04:06:13 lpd)
+ - The Color LaserJet 5 drivers were incorrectly identified as
+"supported" rather than "contributed". (contrib.mak [1.7], devs.mak [1.17]:
+2000/04/20 17:12:54 lpd)
+ - PDF images with a bitmap Mask caused errors or produced incorrect
+output. (int.mak [1.20]: 2000/04/24 00:59:04 lpd)
+
+Completely redesigns the representation of CMaps, to reduce space
+requirements and make comparing them more reasonable, changing gs_cmap to
+gs_cmap_t and gx_code_map to gx_code_map_t. (****** NOTE ****** The
+PostScript code currently only handles a few well-behaved CMap structures.)
+(int.mak [1.16]: 2000/04/08 03:54:38 lpd)
+
+Updates version #s to 6.21. (We should have done this earlier.)
+(version.mak [1.12]: 2000/04/10 04:46:36 lpd)
+
+Overhauls font embedding in the PDF writer: splits off the code into a new
+file (gdevpdfe.c), writes embedded Type 1 fonts as Type 1C (CFF Type 2), and
+adds a little bit of code for future support of Type 0 and CID-keyed fonts.
+(devs.mak [1.10]: 2000/04/10 07:48:37 lpd)
+
+Adds Function-based tint_transform procedures for Separation and DeviceN
+color spaces. (lib.mak [1.11]: 2000/04/10 19:02:19 lpd)
+
+Factors out code for writing functions and for adding filter-related entries
+to a stream dictionary; implements the DefaultRenderingIntent distiller
+parameter. (devs.mak [1.12]: 2000/04/11 16:06:57 lpd)
+
+Implements additional distiller parameters: PreserveHalftoneInfo,
+PreserveOverprintSetting, TransferFunctionInfo (except for Apply vs.
+Remove), UCRandBGInfo. Splits off graphics state management into separate
+files. Implements the remaining graphics state parameters (halftone,
+transfer function, black generation, undercolor removal, halftone phase,
+smoothness, overprint, stroke adjustment) ****** EXCEPT FOR IMAGES ******.
+In anticipation of handling more general colors, renames pdf_set_color as
+pdf_set_pure_color, and adds pdf_set_drawing_color. (devs.mak [1.13]:
+2000/04/11 18:31:32 lpd)
+
+Splits off creation and writing of color spaces, and writing color values,
+into a separate file. Adds support for (Function-based) Separation and
+DeviceN color spaces, general Pattern color spaces, and procedure-based
+Indexed color spaces. Adds some code to support Pattern colors, but stubs it
+out because it depends on changes in the image writing code that haven't
+been integrated yet. In fact, most of the new code isn't called yet, either.
+(devs.mak [1.14]: 2000/04/11 19:10:13 lpd)
+
+In pdfwrite, rewrites the image writing code to use Cos objects rather than
+direct printing, and splits off the creation of image dictionaries into a
+new file; adds support for tiling with uncolored Patterns; implements
+converting ImageType 4 images to their PDF 1.3 counterpart; starts to do the
+same for ImageType 3. This code is "in progress" and likely to have problems
+for a while. (devs.mak [1.15]: 2000/04/12 18:44:35 lpd)
+
+Adds user-contributed uniprint parameter files for the Canon BJC-8200,
+including an addition for the Red Hat printer data base.
+(unixinst.mak [1.8]: 2000/04/14 03:59:57 lpd)
+
+Adds code to write out CMaps, similar to the code for writing fonts, for
+eventual embedding in PDF output. (int.mak [1.18], lib.mak [1.12]:
+2000/04/14 07:17:24 lpd)
+
+Completes code for reading and writing CMaps. (int.mak [1.19],
+lib.mak [1.13]: 2000/04/16 03:05:29 lpd)
+
+Adds a user-contributed driver for the Epson Stylus (Color) Photo printers.
+(contrib.mak [1.6]: 2000/04/18 06:34:26 lpd)
+
+Converts the ps2epsi documentation to HTML. (unixinst.mak [1.10]: 2000/04/18
+17:59:13 lpd)
+
+Checks in the accumulated change log. (version.mak [1.13]: 2000/04/20
+07:24:22 lpd)
+
+Converts the bmp* and bmpa* devices to -dev2, to make them const.
+(devs.mak [1.18]: 2000/04/20 17:19:21 lpd)
+
+Removes the gp_ procedures for managing screen swapping between console and
+graphics, which haven't been used for a long time and are no longer useful.
+(dvx-tail.mak [1.2], lib.mak [1.14], openvms.mak [1.3], openvms.mmk [1.4],
+os2.mak [1.5], unix-aux.mak [1.2], watc.mak [1.3], watclib.mak [1.3],
+winlib.mak [1.2]: 2000/04/20 22:47:35 lpd)
+
+Removes all remaining direct references to stdin/out/err from the library,
+interpreter, and non-contributed drivers; moves the ersatz definitions of
+stdin/out/err to a new header file. (lib.mak [1.15], unix-gcc.mak [1.5]:
+2000/04/20 23:30:22 lpd)
+
+Adds compression for pdfwrite Patterns. (devs.mak [1.19]: 2000/04/24
+06:13:02 lpd)
+
+Adds a MD5Encode filter, which computes the 16-byte MD5 digest of the input.
+No output is produced until the filter is closed. (devs.mak [1.20],
+int.mak [1.21], lib.mak [1.16]: 2000/04/27 14:39:57 lpd)
+
+Adds a user-contributed driver for the H-P 970Cxi inkjet printer.
+(contrib.mak [1.8]: 2000/04/27 14:55:56 lpd)
+
+Factors the H-P monochrome laser and inkjet drivers into a generic driver
+and printer-specific clients. (devs.mak [1.21]: 2000/04/27 20:16:33 lpd)
+
+Adds a user-contributed driver for the Brother HL-1250 laser printer. This
+has a dual AFPL/GPL license, and a non-Aladdin copyright.
+(contrib.mak [1.9]: 2000/04/27 20:18:39 lpd)
+
+Once again, updates some dependency lists that had become inconsistent with
+the code. (contrib.mak [1.10], devs.mak [1.22], lib.mak [1.17]: 2000/04/27
+21:36:19 lpd)
+
+Yet again, updates an out-of-date dependency list. (contrib.mak [1.11]:
+2000/04/28 18:28:42 lpd)
+
+Changes the check for documentation files having the correct embedded date.
+(toolbin/pre [1.3]: 2000/04/28 18:29:14 lpd)
+
+Updates version numbers and dates for the 6.21 fileset. (version.mak [1.14]:
+2000/04/28 22:06:26 lpd)
+
+</pre><h2><a name="6.21 Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - The e-mail address for reporting problems was out of date.
+(lib/ps2epsi.ps [1.2]: 2000/04/10 02:27:21 lpd)
+ - If a font didn't have a FontName (which is the case for bitmap
+fonts produced by recent versions of dvips), ps2epsi caused an error.
+(lib/ps2epsi.ps [1.3]: 2000/04/11 16:32:51 lpd)
+ - Backs out contributed changes of 2000-03-05 because of bugs.
+(ansi2knr.c [1.3]: 2000/04/13 03:41:48 lpd)
+ - ps2epsi removed all ^M characters in the input, possibly
+corrupting binary data. (lib/ps2epsi [1.2]: 2000/04/27 01:44:04 lpd)
+
+Makes the ps2pdf scripts replace a .eps extension with .pdf, as they do with
+.ps. (lib/ps2pdfwr [1.2], lib/ps2pdfxx.bat [1.2]: 2000/04/07 19:28:14 lpd)
+
+Enhances pdf2ps to allow defaulting the output file name. (lib/pdf2ps [1.2]:
+2000/04/11 14:23:24 lpd)
+
+Makes the second argument of the pfbtopfa script optional, so 'pfbtopfa
+dir/x.pfb' is equivalent to 'pfbtopfa dir/x.pfb x.pfa'. (lib/pfbtopfa [1.2]:
+2000/04/12 17:41:41 lpd)
+
+Adds user-contributed uniprint parameter files for the Canon BJC-8200,
+including an addition for the Red Hat printer data base. (lib/bj8.rpd [1.1]:
+2000/04/14 03:59:57 lpd)
+
+Increases the VMThreshold when converting PostScript to PDF, to reduce
+garbage collection overhead. (lib/ps2pdfwr [1.3]: 2000/04/17 19:06:58 lpd)
+
+Moves the optimization prologue for ps2pdf from the command line to a
+procedure, to avoid shell length limits. (lib/ps2pdfwr [1.4],
+lib/ps2pdfxx.bat [1.3]: 2000/04/18 16:40:14 lpd)
+
+Removes the gp_ procedures for managing screen swapping between console and
+graphics, which haven't been used for a long time and are no longer useful.
+(bench.c [1.2], gp_dosfb.c [1.2], gp_iwatc.c [1.2], gp_nofb.c [1.2]:
+2000/04/20 22:47:35 lpd)
+
+Checks in a file overlooked in the elimination of the gp_ console
+procedures. (gp_os2.c [1.2]: 2000/04/20 23:27:21 lpd)
+
+</pre><h2><a name="6.21 Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - The pdfwrite driver sometimes compressed images in an Indexed
+color space with the DCTEncode filter, producing garbage. (gdevpsdi.c [1.4]:
+2000/04/12 19:25:56 lpd)
+ - Setting pdfwrite parameters for a DCTEncode filter could cause a
+crash (memory fault). (gdevpsdf.h [1.7], gdevpsdi.c [1.5], gdevpsdp.c [1.4],
+gdevpsdu.c [1.2]: 2000/04/13 01:53:07 lpd)
+ - Compressing with DCTEncode tried to add the compression filter
+twice. (gdevpsdi.c [1.6]: 2000/04/13 04:52:38 lpd)
+ - The PDF writer could get an ioerror when downsampling images whose
+size wasn't an exact multiple of the downsampling factor. (gdevpsdi.c [1.7],
+gdevpsds.c [1.2], gdevpsds.h [1.2]: 2000/04/13 16:44:59 lpd)
+ - Downsampled mask images could cause a memory access error.
+(gdevpsdi.c [1.9]: 2000/04/18 16:37:04 lpd)
+ - PDF Patterns weren't written correctly if the ProcessColorModel
+wasn't Device RGB. (gdevpsdu.c [1.3]: 2000/04/24 05:40:30 lpd)
+ - The [e]pswrite driver produced incorrect output for color images
+with multiple data sources. (gdevps.c [1.5]: 2000/04/25 19:35:07 lpd)
+
+Implements pdfwrite compression for mask images, using the same parameters
+as for monochrome images. (gdevpsdi.c [1.8]: 2000/04/13 18:40:23 lpd)
+
+Adds user-contributed uniprint parameter files for the Canon BJC-8200,
+including an addition for the Red Hat printer data base.
+(lib/bj8gc12f.upp [1.1], lib/bj8hg12f.upp [1.1], lib/bj8oh06n.upp [1.1],
+lib/bj8pa06n.upp [1.1], lib/bj8pp12f.upp [1.1], lib/bj8ts06n.upp [1.1]:
+2000/04/14 03:59:57 lpd)
+
+Adds a user-contributed driver for the Epson Stylus (Color) Photo printers.
+(gdevphex.c [1.1]: 2000/04/18 06:34:26 lpd)
+
+Converts the bmp* and bmpa* devices to -dev2, to make them const.
+(gdevbmp.c [1.2], gdevbmpa.c [1.2]: 2000/04/20 17:19:21 lpd)
+
+Documents the astounding fact that the Xt implementation actually writes
+into the XtResource tables. (gdevxres.c [1.2]: 2000/04/20 19:59:28 lpd)
+
+Removes all remaining direct references to stdin/out/err from the library,
+interpreter, and non-contributed drivers; moves the ersatz definitions of
+stdin/out/err to a new header file. (gdevxxf.c [1.3]: 2000/04/20 23:30:22
+lpd)
+
+When writing PDF output, reduces the size of compressed images in Indexed
+color spaces by not using a Predictor for them. (gdevpsdi.c [1.10]:
+2000/04/21 06:46:08 lpd)
+
+Adds an internal filter for converting images to Indexed form if possible.
+(gdevpsds.c [1.3], gdevpsds.h [1.3]: 2000/04/21 19:26:37 lpd)
+
+Cleans up code by replacing macros with procedures or variables.
+(gdevps.c [1.6]: 2000/04/25 20:35:46 lpd)
+
+Makes the [e]pswrite and pdfwrite drivers merge adjacent horizontal or
+vertical line segments going in the same direction. This makes a big
+difference for PostScript files produced by certain applications.
+(gdevps.c [1.7]: 2000/04/25 22:39:54 lpd)
+
+Adds a user-contributed driver for the H-P 970Cxi inkjet printer.
+(gdevdj9.c [1.1]: 2000/04/27 14:55:56 lpd)
+
+Factors the H-P monochrome laser and inkjet drivers into a generic driver
+and printer-specific clients. (gdevdjet.c [1.3], gdevdljm.c [1.1],
+gdevdljm.h [1.1]: 2000/04/27 20:16:33 lpd)
+
+Adds a user-contributed driver for the Brother HL-1250 laser printer. This
+has a dual AFPL/GPL license, and a non-Aladdin copyright. (gdevhl12.c [1.1]:
+2000/04/27 20:18:39 lpd)
+
+Once again, updates some dependency lists that had become inconsistent with
+the code. (gdevdj9.c [1.2]: 2000/04/27 21:36:19 lpd)
+
+Makes the printers in gdevdjet.c that support setting the number of copies
+use this feature when multiple copies are requested. (gdevdjet.c [1.4],
+gdevdljm.c [1.2], gdevdljm.h [1.2]: 2000/04/28 13:37:47 lpd)
+
+</pre><h2><a name="6.21 PDF writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - The Cos objects of resources not shared between pages weren't
+freed at the end of each page. (gdevpdf.c [1.9]: 2000/04/10 04:17:56 lpd)
+ - gdevpdfe.c was omitted from the check-in for the overhaul of
+pdfwrite font embedding. (gdevpdfe.c [1.1]: 2000/04/10 16:01:29 lpd)
+ - pdfwrite output could contain commands to set the line width to a
+negative value, which PostScript allows but PDF doesn't. (gdevpdfd.c [1.6]:
+2000/04/12 19:51:14 lpd)
+ - The changes for the new color handling code caused stroked
+graphics not to output the line width. (new bug since 6.20)
+(gdevpdfd.c [1.7]: 2000/04/13 03:47:21 lpd)
+ - Pattern resources were written with incorrectly scaled XStep and
+YStep, and without a Type entry. (gdevpdfc.c [1.3], gdevpdfi.c [1.10]:
+2000/04/13 04:12:33 lpd)
+ - The PDF writer could get an ioerror when downsampling images whose
+size wasn't an exact multiple of the downsampling factor.
+(gdevpdfi.c [1.11]: 2000/04/13 16:44:59 lpd)
+ - Bitmapped characters weren't written properly on the output file
+(new bug since 6.20). (gdevpdfg.h [1.4], gdevpdfi.c [1.12],
+gdevpdfj.c [1.2]: 2000/04/13 17:24:54 lpd)
+ - gxdcolor.h was required for gxpcolor.h, but wasn't included.
+(gdevpdfc.c [1.4]: 2000/04/18 17:42:55 lpd)
+ - A table of constant strings wasn't declared as const.
+(gdevpdfp.c [1.7]: 2000/04/20 17:37:31 lpd)
+ - When pdfwrite was producing PDF 1.3 output, the base 14 fonts were
+never embedded, rather than being handled like all other fonts.
+(gdevpdff.c [1.4]: 2000/04/20 23:49:40 lpd)
+ - Indexed color spaces used in in-line images were being written
+incorrectly. Also optimizes Indexed images by converting RGB palettes to
+Gray if all the entries are actually gray. (gdevpdfc.c [1.5]: 2000/04/21
+15:29:20 lpd)
+ - The recent optimization for using the ' command in PDF output lost
+track of the leading value between blocks of text, causing lines in later
+blocks to overprint each other. (gdevpdfu.c [1.9]: 2000/04/21 22:29:05 lpd)
+ - Backs out the change that allowed embedding of the base 14 fonts,
+because it produces invalid output. (gdevpdff.c [1.5]: 2000/04/22 00:13:11
+lpd)
+ - Colored Patterns requiring masking weren't written properly.
+(gdevpdfc.c [1.6]: 2000/04/24 00:09:37 lpd)
+ - Patterns were written upside-down. (gdevpdfc.c [1.7]: 2000/04/24
+01:11:36 lpd)
+ - PDF Patterns weren't written correctly if the ProcessColorModel
+wasn't Device RGB. (gdevpdf.c [1.15], gdevpdfc.c [1.8], gdevpdfg.h [1.5],
+gdevpdfi.c [1.13], gdevpdfx.h [1.15]: 2000/04/24 05:40:30 lpd)
+ - The color space for images wasn't always written in the correct
+form (an object reference for image XObjects, a resource name for in-line
+images). (gdevpdfi.c [1.14]: 2000/04/28 12:07:37 lpd)
+ - Patterns were sometimes written with a duplicate Type element.
+(gdevpdfc.c [1.10]: 2000/04/28 12:23:54 lpd)
+ - Patterns were sometimes written twice, with an empty definition
+the second time. (gdevpdfi.c [1.15]: 2000/04/28 12:24:42 lpd)
+
+Overhauls font embedding in the PDF writer: splits off the code into a new
+file (gdevpdfe.c), writes embedded Type 1 fonts as Type 1C (CFF Type 2), and
+adds a little bit of code for future support of Type 0 and CID-keyed fonts.
+(gdevpdff.c [1.3], gdevpdff.h [1.2], gdevpdft.c [1.6], gdevpdfw.c [1.3]:
+2000/04/10 07:48:37 lpd)
+
+Factors out code for writing functions and for adding filter-related entries
+to a stream dictionary; implements the DefaultRenderingIntent distiller
+parameter. (gdevpdf.c [1.10], gdevpdfu.c [1.6], gdevpdfx.h [1.8]: 2000/04/11
+16:06:57 lpd)
+
+Adds ExtGState resources. These should be written and freed at the end of
+each page, but they aren't yet. (gdevpdfx.h [1.9]: 2000/04/11 16:38:14 lpd)
+
+Implements additional distiller parameters: PreserveHalftoneInfo,
+PreserveOverprintSetting, TransferFunctionInfo (except for Apply vs.
+Remove), UCRandBGInfo. Splits off graphics state management into separate
+files. Implements the remaining graphics state parameters (halftone,
+transfer function, black generation, undercolor removal, halftone phase,
+smoothness, overprint, stroke adjustment) ****** EXCEPT FOR IMAGES ******.
+In anticipation of handling more general colors, renames pdf_set_color as
+pdf_set_pure_color, and adds pdf_set_drawing_color. (gdevpdf.c [1.11],
+gdevpdfd.c [1.4], gdevpdfg.c [1.1], gdevpdfg.h [1.1], gdevpdfi.c [1.8],
+gdevpdft.c [1.7], gdevpdfu.c [1.7], gdevpdfx.h [1.10]: 2000/04/11 18:31:32
+lpd)
+
+Splits off creation and writing of color spaces, and writing color values,
+into a separate file. Adds support for (Function-based) Separation and
+DeviceN color spaces, general Pattern color spaces, and procedure-based
+Indexed color spaces. Adds some code to support Pattern colors, but stubs it
+out because it depends on changes in the image writing code that haven't
+been integrated yet. In fact, most of the new code isn't called yet, either.
+(gdevpdf.c [1.12], gdevpdfc.c [1.1], gdevpdfd.c [1.5], gdevpdfg.c [1.2],
+gdevpdfg.h [1.2], gdevpdft.c [1.8], gdevpdfx.h [1.11]: 2000/04/11 19:10:13
+lpd)
+
+Integrates a couple of minor overlooked changes in the text-writing code.
+(gdevpdf.c [1.13], gdevpdft.c [1.9], gdevpdfx.h [1.12]: 2000/04/11 19:20:56
+lpd)
+
+In pdfwrite, rewrites the image writing code to use Cos objects rather than
+direct printing, and splits off the creation of image dictionaries into a
+new file; adds support for tiling with uncolored Patterns; implements
+converting ImageType 4 images to their PDF 1.3 counterpart; starts to do the
+same for ImageType 3. This code is "in progress" and likely to have problems
+for a while. (gdevpdf.c [1.14], gdevpdfc.c [1.2], gdevpdfg.c [1.3],
+gdevpdfg.h [1.3], gdevpdfi.c [1.9], gdevpdfj.c [1.1], gdevpdfx.h [1.13]:
+2000/04/12 18:44:35 lpd)
+
+Tweaks the PDF writer to use the ' command for positioning text when
+possible (small optimization only). (gdevpdfg.c [1.4], gdevpdft.c [1.10],
+gdevpdfu.c [1.8], gdevpdfx.h [1.14]: 2000/04/18 16:08:16 lpd)
+
+Reduces the startup time for displaying PDF files, by skipping the creation
+of pdfmarks for annotations and outlines when the output device doesn't
+process pdfmarks. (gdevpdfp.c [1.8]: 2000/04/21 16:58:28 lpd)
+
+Adds compression for pdfwrite Patterns. (gdevpdfc.c [1.9]: 2000/04/24
+06:13:02 lpd)
+
+Makes the [e]pswrite and pdfwrite drivers merge adjacent horizontal or
+vertical line segments going in the same direction. This makes a big
+difference for PostScript files produced by certain applications.
+(gdevpdf.c [1.16], gdevpdfd.c [1.8]: 2000/04/25 22:39:54 lpd)
+
+Updates the list of remaining pdfwrite tasks. (gdevpdfp.c [1.9]: 2000/04/27
+21:36:52 lpd)
+
+</pre><h2><a name="6.21 Interpreter (PDF)"></a>Interpreter (PDF)</h2><pre>
+
+Fixes problems:
+ - Embedded subset CFF fonts in PDF files were defined using the name
+in the font data rather than the font name in the PDF resource object. (bug
+#102901) (lib/pdf_ops.ps [1.5]: 2000/04/11 05:33:13 lpd)
+ - When processing a PDF file, the font substitution heuristic based
+on the FontName sometimes overrode the Flags information in the
+FontDescriptor. (lib/pdf_font.ps [1.6]: 2000/04/20 06:36:02 lpd)
+ - PDF images with a bitmap Mask caused errors or produced incorrect
+output. (lib/pdf_draw.ps [1.10]: 2000/04/24 00:59:04 lpd)
+ - Masked images weren't drawn properly, because the two data sources
+could reference the same file. (lib/pdf_draw.ps [1.11]: 2000/04/24 05:39:45
+lpd)
+ - *Really* fixes the problem of data source aliasing for masked
+images. (lib/pdf_draw.ps [1.12]: 2000/04/24 05:53:43 lpd)
+ - If a font specified Subtype = /TrueType but the actual font used
+was not a TrueType font, any Encoding in the Font object should be ignored.
+(This is a hack required by the PDF specification.) (lib/pdf_font.ps [1.7]:
+2000/04/24 06:37:18 lpd)
+ - Colored annotation borders caused an error; 0-width borders were
+drawn even though they shouldn't be; Link and Stamp annotations weren't
+drawn at all. Also adds a new -dPrinted[=true/false] switch to choose
+whether to produce "screen" or "printer" output. (code from Artifex)
+(lib/pdf_draw.ps [1.13], lib/pdf_main.ps [1.7]: 2000/04/27 08:16:40 lpd)
+
+Makes undefined XObject resources for the Do operator produce a warning
+rather than an error, to parallel Acrobat Reader. (lib/pdf_draw.ps [1.9]:
+2000/04/16 07:48:23 lpd)
+
+Tweaks up the performance of the PDF interpreter loop slightly.
+(lib/pdf_base.ps [1.7]: 2000/04/18 05:45:49 lpd)
+
+Reduces the startup time for displaying PDF files, by skipping the creation
+of pdfmarks for annotations and outlines when the output device doesn't
+process pdfmarks. (lib/pdf_main.ps [1.6]: 2000/04/21 16:58:28 lpd)
+
+</pre><h2><a name="6.21 Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Fixes some signed/unsigned char * mismatches. (zfrsd.c [1.3]:
+2000/04/07 15:27:14 lpd)
+ - Automatic loading of fonts from resource files didn't work
+(usually caused an unmatchedmark or typecheck error).
+(lib/gs_fonts.ps [1.5], lib/gs_res.ps [1.9]: 2000/04/08 03:45:41 lpd)
+ - A -> should have been a . (only shows up on 64-bit systems).
+(zfunc4.c [1.3]: 2000/04/09 20:04:00 lpd)
+ - the most recent 'fixes' for loading font resources caused all
+built-in fonts to be returned as null. (lib/gs_res.ps [1.10]: 2000/04/09
+22:51:01 lpd)
+ - /Category defineresource didn't make the category definition
+dictionary read-only. (lib/gs_res.ps [1.11]: 2000/04/10 18:29:04 lpd)
+ - Attempting to build an invalid FunctionType 4 function could cause
+a memory access error. (zfunc4.c [1.4]: 2000/04/10 19:38:53 lpd)
+ - Embedded subset CFF fonts in PDF files were defined using the name
+in the font data rather than the font name in the PDF resource object. (bug
+#102901) (lib/gs_cff.ps [1.4]: 2000/04/11 05:33:13 lpd)
+ - CMaps with more than one code space range weren't converted to the
+internal form correctly; begincidchar and beginnotdefchar caused errors.
+(lib/gs_cmap.ps [1.3], zfcmap.c [1.6]: 2000/04/14 07:53:10 lpd)
+ - flushfile and closefile didn't properly flush streams whose final
+target was a procedure, and closefile didn't actually close them. (This is a
+very old bug.) (zfproc.c [1.2]: 2000/04/18 05:50:15 lpd)
+ - CIDFontType 0 CIDFonts in which some FDArray element had no Subrs
+caused an error. (lib/gs_cidfn.ps [1.14]: 2000/04/18 05:58:08 lpd)
+ - Attempting to set a PageSize with 4 elements actually set the
+PageSize (to the first 2 elements), rather than ignoring the attempt. (This
+is just a patch to prevent some PageMaker files from being thrown off by the
+4-element PageSizes in Input Attributes.) (lib/gs_setpd.ps [1.2]: 2000/04/19
+06:01:19 lpd)
+ - When choosing a substituted font, 'Serif' had priority over
+'Sans', so unknown fonts with 'SansSerif' in their name would have a serif
+font substituted. (lib/gs_fonts.ps [1.6]: 2000/04/19 13:48:48 lpd)
+ - The fix to make setpagedevice ignore 4-element PageSizes in
+InputAttributes was broken. (It's impossible that it could ever have worked,
+despite the fact that we tested it.) (lib/gs_setpd.ps [1.3]: 2000/04/20
+06:24:39 lpd)
+ - When processing a PDF file, the font substitution heuristic based
+on the FontName sometimes overrode the Flags information in the
+FontDescriptor. (lib/gs_fonts.ps [1.7]: 2000/04/20 06:36:02 lpd)
+ - Showing a string in a Type 1 font with a singular combined matrix
+(e.g., after 0 scalefont setfont) caused an error instead of doing nothing.
+(zchar1.c [1.3]: 2000/04/22 00:34:46 lpd)
+ - Images with multiple file DataSources where two or more of the
+files were the same caused a crash. (zimage.c [1.3]: 2000/04/24 00:07:41
+lpd)
+ - .reusablestreamdecode wasn't defined for use in LanguageLevel 2.
+(The ReusableStreamDecode filter itself was properly defined.)
+(lib/gs_frsd.ps [1.3]: 2000/04/24 00:45:38 lpd)
+ - Loading an unknown font gave a spurious "non-string font name"
+message; unknown fonts with names containing style strings like Bold or
+Italic caused an error. (bug introduced since 6.20) (lib/gs_fonts.ps [1.8]:
+2000/04/28 22:03:58 lpd)
+
+Adds a workaround for misnamed glyphs in some Microsoft TrueType font 'post'
+tables. (lib/gs_mgl_e.ps [1.2], lib/gs_ttf.ps [1.4]: 2000/04/08 01:53:16
+lpd)
+
+Completely redesigns the representation of CMaps, to reduce space
+requirements and make comparing them more reasonable, changing gs_cmap to
+gs_cmap_t and gx_code_map to gx_code_map_t. (****** NOTE ****** The
+PostScript code currently only handles a few well-behaved CMap structures.)
+(lib/gs_cmap.ps [1.2], zfcmap.c [1.4], zfont0.c [1.2]: 2000/04/08 03:54:38
+lpd)
+
+Updates version #s to 6.21. (We should have done this earlier.)
+(lib/gs_init.ps [1.7]: 2000/04/10 04:46:36 lpd)
+
+Makes Separation and DeviceN color spaces detect that their tint transform
+procedure is a Function, and call it rather than using its cached values.
+(zcsdevn.c [1.2], zcssepr.c [1.3]: 2000/04/10 19:39:44 lpd)
+
+Adds code to write out CMaps, similar to the code for writing fonts, for
+eventual embedding in PDF output. (zfcmap.c [1.5]: 2000/04/14 07:17:24 lpd)
+
+Completes code for reading and writing CMaps. (lib/gs_cmap.ps [1.4],
+zfcmap.c [1.7]: 2000/04/16 03:05:29 lpd)
+
+Works around a bug in the AdobePS5 Windows driver, which emits CMaps lacking
+the required CMapName entry. (lib/gs_cidfn.ps [1.15], lib/gs_cmap.ps [1.5]:
+2000/04/18 07:18:42 lpd)
+
+Moves the optimization prologue for ps2pdf from the command line to a
+procedure, to avoid shell length limits. (lib/gs_pdfwr.ps [1.3]: 2000/04/18
+16:40:14 lpd)
+
+Removes all remaining direct references to stdin/out/err from the library,
+interpreter, and non-contributed drivers; moves the ersatz definitions of
+stdin/out/err to a new header file. (imainarg.c [1.2]: 2000/04/20 23:30:22
+lpd)
+
+Speeds up Type 1 font loading slightly by removing a conversion from binary
+to hex and back again. (zmisc1.c [1.2]: 2000/04/22 16:03:18 lpd)
+
+Adds a MD5Encode filter, which computes the 16-byte MD5 digest of the input.
+No output is produced until the filter is closed. (zfmd5.c [1.1]: 2000/04/27
+14:39:57 lpd)
+
+Adds a sample file containing a wide variety of PDF annotations; updates
+documentation for this and some other overlooked files.
+(examples/annots.pdf [1.1]: 2000/04/28 10:51:02 lpd)
+
+</pre><h2><a name="6.21 Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - FILE_IMPLEMENTATION=both was broken (by the introduction of
+sread_subfile). (sfxfd.c [1.3]: 2000/04/10 02:41:48 lpd)
+ - flushfile and closefile didn't properly flush streams whose final
+target was a procedure, and closefile didn't actually close them. (This is a
+very old bug.) (stream.c [1.6]: 2000/04/18 05:50:15 lpd)
+ - The PixelDifference filters (Predictor = 2) weren't implemented
+for Colors > 4 and BitsPerComponent != 8, and they dropped trailing bytes if
+the length of the data wasn't an exact multiple of the pixel size.
+(spdiff.c [1.2]: 2000/04/22 03:55:22 lpd)
+
+Enhances the ASCII85Encode filter to avoid %! at the beginning of a line of
+output, in addition to avoiding %% which it did already. (sa85x.h [1.2],
+sfilter2.c [1.2]: 2000/04/08 01:30:36 lpd)
+
+Removes all remaining direct references to stdin/out/err from the library,
+interpreter, and non-contributed drivers; moves the ersatz definitions of
+stdin/out/err to a new header file. (std.h [1.2]: 2000/04/20 23:30:22 lpd)
+
+Speeds up Type 1 font loading slightly by removing a conversion from binary
+to hex and back again. (seexec.c [1.2], sfilter.h [1.5]: 2000/04/22 16:03:18
+lpd)
+
+Adds a MD5Encode filter, which computes the 16-byte MD5 digest of the input.
+No output is produced until the filter is closed. (smd5.c [1.1],
+smd5.h [1.1]: 2000/04/27 14:39:57 lpd)
+
+</pre><h2><a name="6.21 Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Fixes some signed/unsigned char * mismatches. (gdevpsf2.c [1.5]:
+2000/04/07 15:27:14 lpd)
+ - Writing a Type 2 CFF with multiply-encoded glyphs produced an
+incorrect Encoding. Also, when producing output for PDF 1.2 files, no longer
+emits certain opcodes that cause an (unjustified) error in Acrobat Reader 3
+for GNU/Linux. (gdevpsf.h [1.3], gdevpsf2.c [1.6]: 2000/04/10 07:42:31 lpd)
+ - gsmisc.c didn't compile in DEBUG mode on systems with a
+non-standard prototype for the sqrt function. (gsmisc.c [1.3]: 2000/04/10
+16:00:31 lpd)
+ - One picky compiler complained about (1L << 31). (gsmisc.c [1.4]:
+2000/04/10 17:21:41 lpd)
+ - putdeviceparams allowed a PageSize or .MediaSize value with the
+wrong number of elements to take effect. (gsdparam.c [1.2]: 2000/04/19
+05:59:05 lpd)
+ - The elimination of stdin/out/err also eliminated some #defines
+that are needed for error printout. (gsio.h [1.3]: 2000/04/21 06:39:17 lpd)
+ - The structure descriptor for ImageType 3 images was public rather
+than private. (gsiparm3.h [1.3], gximage3.c [1.2]: 2000/04/22 07:02:18 lpd)
+ - The "point matching" feature of TrueType composite glyphs wasn't
+implemented, causing some composite (accented) characters to have their
+accents misplaced. (gstype42.c [1.4]: 2000/04/25 07:22:50 lpd)
+
+Completely redesigns the representation of CMaps, to reduce space
+requirements and make comparing them more reasonable, changing gs_cmap to
+gs_cmap_t and gx_code_map to gx_code_map_t. (****** NOTE ****** The
+PostScript code currently only handles a few well-behaved CMap structures.)
+(gsfcmap.c [1.4], gsfcmap.h [1.2], gxfcmap.h [1.3], gxfont0.h [1.2]:
+2000/04/08 03:54:38 lpd)
+
+Adds Function-based tint_transform procedures for Separation and DeviceN
+color spaces. (gscdevn.c [1.3], gscdevn.h [1.2], gscsepr.c [1.3],
+gscsepr.h [1.2]: 2000/04/10 19:02:19 lpd)
+
+Adds code to write out CMaps, similar to the code for writing fonts, for
+eventual embedding in PDF output. (gdevpsf.h [1.4], gdevpsfm.c [1.1]:
+2000/04/14 07:17:24 lpd)
+
+Completes code for reading and writing CMaps. (gdevpsf.h [1.5],
+gdevpsfm.c [1.2], gsccode.h [1.3], gsfcid.c [1.3], gsfcmap.c [1.5],
+gxcid.h [1.2], gxfcmap.h [1.4]: 2000/04/16 03:05:29 lpd)
+
+Removes the gp_ procedures for managing screen swapping between console and
+graphics, which haven't been used for a long time and are no longer useful.
+(gp.h [1.3]: 2000/04/20 22:47:35 lpd)
+
+Removes all remaining direct references to stdin/out/err from the library,
+interpreter, and non-contributed drivers; moves the ersatz definitions of
+stdin/out/err to a new header file. (gsdevice.c [1.3], gsio.h [1.2],
+gsmisc.c [1.5], gxdevice.h [1.2]: 2000/04/20 23:30:22 lpd)
+
+Adds an essential new file overlooked in the removal of references to
+stdin/out/err. (gxstdio.h [1.1]: 2000/04/20 23:50:20 lpd)
+
+Makes the [e]pswrite and pdfwrite drivers merge adjacent horizontal or
+vertical line segments going in the same direction. This makes a big
+difference for PostScript files produced by certain applications.
+(gdevvec.c [1.2], gdevvec.h [1.2]: 2000/04/25 22:39:54 lpd)
+
+Adds template macros for printer devices that implement print_page_copies
+rather than print_page. (gdevprn.c [1.2], gdevprn.h [1.3]: 2000/04/28
+13:36:16 lpd)
+
+<hr>
+
+<h1><a name="Version6.20"></a>Version 6.20 (2000-04-06)</h1>
+
+<p>
+This fileset includes the first steps towards bringing the pdfwrite driver
+closer to matching Acrobat Distiller 4. Highlights:
+
+<ul>
+
+<li> Reimplementation of CIDFontType 0 support in C rather than PostScript;
+
+<li> Parsing (but not functional implementation) of nearly all the Acrobat
+Distiller 4 parameters;
+
+<li> Implementation of AutoRotatePages and DCTEncode filtering in the PDF
+writer;
+
+<li> A PDF linearizer ("optimizer").
+
+</ul>
+
+<p>
+All problems registered on SourceForge numbered 103963 or lower are closed,
+except for the following: 101549, 101814, 101829, 101905, 101955, 102046,
+102047, 102132, 102146, 102735, 102901, 103016, 103528, 103963.
+
+<pre>
+
+<h2><a name="6.20_Incompatible_changes"></a>Incompatible changes</h2>
+
+(Procedures)
+ - The default value of FPU_TYPE in all Windows and OS/2 makefiles
+is now 387 rather than 0.
+ - The process for reporting problems has changed significantly.
+(PDF writer)
+ - The Cos procedures no longer take the device as an argument,
+except for object-creating procedures, which now take the device rather
+than an allocator.
+ - The is_object member of Cos values is replaced by value_type.
+Clients must use COS_VALUE_IS_OBJECT() to test whether a value is an object
+reference.
+ - The Cos procedures that take C strings no longer copy the string.
+ - The argument of cos_write_object is no longer const.
+(Drivers)
+ - The default BufferSpace for printer drivers is now 4 Mb.
+ - Device halftone order implementations must now provide a new
+bit_index procedure.
+ - The image argument for psdf_setup_image_filters is changed from
+gs_image_t to gs_pixel_image_t.
+ - The font-related psdf_ procedures are renamed psf_.
+(Streams)
+ - The interface to the [T]BCP filters is now in a separate file,
+sbcp.h.
+(PDF interpreter)
+ - The internal beginpage procedure is renamed dictbeginpage, and
+now takes a dictionary argument.
+(Interpreter)
+ - The argument list for the internal build_gs_TrueType_font
+procedure has changed.
+ - The zcharstring_glyph_outline procedure is renamed
+zchar1_glyph_outline.
+ - The Instances dictionary of resources is renamed .Instances.
+(Library)
+ - ImageType 4 images now give an error if a MaskColor value is out
+of the range of possible sample values.
+ - The definition of gs_param_key_t, the key type returned by
+parameter list enumeration, is changed.
+ - Implementors of parameter lists must now call gs_param_list_init
+to initialize the common members.
+ - st_indexed_map is now private. Clients allocating instances of
+this structure must now call alloc_indexed_map.
+ - Setting a transfer map as the identity mapping now requires
+calling gx_set_identity_transfer.
+ - gs_cid_system_info is renamed gs_cid_system_info_t.
+ - The get_outline procedure of a Type 42 or Type 11 (CIDFontType 0)
+font now returns 1 if the string was newly allocated and can be freed by the
+client.
+ - The procs member of gs_type1_data is now an in-line structure
+rather than a pointer to a const structure.
+
+
+<h2><a name="6.20 Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - If log2_transfer_map_size > 8, identity transfer functions
+returned garbage. The fix requires that if a client wants to set a transfer
+function to the identity mapping, it must call gx_set_identity_transfer
+rather than simply setting the procedure to gs_identity_transfer.
+(doc/News.htm [1.13]: 2000/03/19 17:14:47 lpd)
+ - In PDF files, the page CropBox was not being used to clip the
+output. (doc/News.htm [1.18]: 2000/03/21 23:08:32 lpd)
+ - Fixes several problems in resourceforall and resource loading: the
+operands of resourceforall were restored even in the case of an error in the
+client's procedure; the name Instances had special meaning for some Adobe
+code; resourceforall caused an invalidaccess error if an operand was in
+local VM but the current VM was global; loading a resource from a file could
+cause a typecheck error if the file left values on the operand stack.
+(doc/News.htm [1.25]: 2000/04/04 22:26:02 lpd)
+ - The location of the lists of supported and unsupported drivers was
+incorrect. (doc/Bug-info.htm [1.2]: 2000/04/07 03:01:52 lpd)
+
+Undoes an accidental RCS ID substitution in what was supposed to be literal
+text. (doc/Htmstyle.htm [1.2]: 2000/03/18 22:29:03 lpd)
+
+Increments the version number to 6.20, in anticipation of the next release.
+(We do this at the beginning of the development for a release, not the end.)
+(doc/History6.htm [1.4], doc/News.htm [1.6]: 2000/03/19 00:27:22 lpd)
+
+Splits out the [T]BCP filter interface into a separate file.
+(doc/News.htm [1.7]: 2000/03/19 02:40:18 lpd)
+
+Documents the fact that ImageType 4 images now cause an error for
+out-of-range MaskColor values. (doc/News.htm [1.8]: 2000/03/19 04:32:09 lpd)
+
+Updates the change log with recent changes. (doc/Changes.htm [1.4]:
+2000/03/19 05:39:58 lpd)
+
+Adds a new document listing projects with which we are seeking help. Also
+makes the description of Changes.htm and News.htm more accurate.
+(doc/New-user.htm [1.2], doc/Projects.htm [1.1], doc/Readme.htm [1.3]:
+2000/03/19 06:07:15 lpd)
+
+Changes the default value of BufferSpace to 4 Mb. In desktop applications,
+this is a reasonable value that can substantially improve performance
+(especially for color printers); embedded applications will want to set
+BufferSpace themselves in any case. (doc/News.htm [1.9]: 2000/03/19 06:51:13
+lpd)
+
+Changes the key type returned by parameter list enumeration to include a
+persistence flag, makes C parameter lists support non-persistent keys, and
+upgrades GC descriptors so that parameter lists can be used non-transiently;
+updates implementors of parameter lists to call gs_param_list_init to
+initialize the common members, which is now required. (doc/News.htm [1.10]:
+2000/03/19 15:16:11 lpd)
+
+Documents the fact that drivers that device halftone order implementations
+must now provide the new bit_index procedure. (This should have been
+documented when bit_index was introduced!) (doc/News.htm [1.11]: 2000/03/19
+15:47:47 lpd)
+
+Makes st_indexed_map private. Clients must now use the constructor procedure
+alloc_indexed_map rather than allocating instances directly.
+(doc/News.htm [1.12]: 2000/03/19 16:37:28 lpd)
+
+Update the date and change log for the latest batches of checked-in changes.
+(doc/Changes.htm [1.5]: 2000/03/19 17:29:57 lpd)
+
+Adds a PDF linearizer ("optimizer"). This is a separate utility (not
+integrated with the pdfwrite driver), written in PostScript.
+(doc/Psfiles.htm [1.2]: 2000/03/20 04:31:22 lpd)
+
+Adds parsing for the remaining Acrobat Distiller 4 parameters. Implements
+the LockDistillerParams, xxxDownsampleThreshold, xxxImageDict, and
+xxxACSImageDict distiller parameters. Implements DCTEncode as an
+xxxImageFilter option (it used to cause a crash). Makes the
+AutoFilterxxxImages distiller parameters select JPEG encoding (with ACSDict)
+if the image has 8 bits per component and is not Indexed, and LZW/Flate
+otherwise: this still isn't right, but it's closer. Implementation changes:
+Changes the implementation of distiller parameter dictionaries from stream
+states to parameter lists; changes the test for masks in
+psdf_setup_image_filters, and changes the image argument from gs_image_t to
+gs_pixel_image_t. (doc/News.htm [1.14]: 2000/03/20 05:40:04 lpd)
+
+Moves font-writing support into a new module (gdevpsf*), changing the source
+file names. Adds the ability to write CFF fonts, with either Type 1 or Type
+2 CharStrings; unfortunately, Acrobat Reader appears not to accept CFF fonts
+with Type 1 CharStrings. Adds the ability to convert Type 1 CharStrings to
+Type 2, including optimizing sequences of Type 1 operators into a single
+Type 2 operator. Implements writing CIDFontType 0 CFF fonts (CIDFonts) [NOT
+TESTED]. Starts (just barely) to remove more unneeded information from
+embedded TrueType fonts. (doc/News.htm [1.15]: 2000/03/20 07:02:12 lpd)
+
+Updates the consolidated change log with today's changes.
+(doc/Changes.htm [1.6]: 2000/03/20 07:18:38 lpd)
+
+Starts to move support for CIDFontType 0 and 2 into C code, needed by the
+PDF writer for handling CID-keyed fonts. Implements GlyphDirectory for
+CIDFonts. Makes GDBytes and CIDMapOffset optional for CIDFontType 0 fonts
+that have a GlyphDirectory (not documented in the PLRM, but clearly
+correct). Implements Adobe 3011 features: integer and dictionary CIDMaps,
+and the MetricsCount entry, in CIDFontType 2 fonts (but only in the C code,
+which isn't hooked in yet, not in the PostScript code in gs_cidfn.ps.)
+(doc/News.htm [1.16]: 2000/03/20 19:53:06 lpd)
+
+Notes that the argument list for the internal build_gs_TrueType_font
+procedure has changed, as part of the CIDFont migration to C code.
+(doc/News.htm [1.17]: 2000/03/20 20:04:20 lpd)
+
+Adds invocation scripts and documentation for the PDF "optimizer".
+(man/pdfopt.1 [1.1]: 2000/03/21 17:01:33 lpd)
+
+Updates information about reporting problems when using Ghostview or GSview.
+(doc/Bug-form.htm [1.3], doc/New-user.htm [1.3]: 2000/03/22 22:13:49 lpd)
+
+Checks in the latest consolidated change log. (doc/Changes.htm [1.7]:
+2000/03/24 05:04:55 lpd)
+
+Substantially enhances the Cos object machinery. Interface: Adds a few more
+procedures, including a procedure to create a stream that writes directly
+into a Cos stream object, procedures for putting more kinds of values into
+arrays and dictionaries, and a param_list interface. Changes Cos objects to
+store a reference to the PDF device, and removes the device argument from
+all Cos procedures other than object creation. Replaces the Boolean
+is_object member of Cos values by a value_type enum: clients must now use
+COS_VALUE_IS_OBJECT() to test whether a value is an object reference. To
+reduce allocator overhead, makes the Cos procedures that take C strings no
+longer copy the string. Records whether each Cos object has been written
+into the output, so that in the future (but not in this batch of changes)
+resource definitions can be copied at the end of each page. Implementation:
+Moves more of the implementation of Cos objects to the .c file.
+(doc/News.htm [1.19]: 2000/03/24 06:12:52 lpd)
+
+Adds parsing for the remaining Acrobat Distiller 4 parameters, although most
+of them don't have any effect yet; brings documentation up to date.
+(doc/Ps2pdf.htm [1.3]: 2000/03/28 07:36:58 lpd)
+
+Implements LockDistillerParams; completes the StartPage/EndPage fix checked
+in just before. (doc/Ps2pdf.htm [1.4]: 2000/03/28 07:52:06 lpd)
+
+Changes the default value of FPU_TYPE in all Windows and OS/2 makefiles from
+0 to 387, since all current desktop CPUs include floating point hardware.
+(doc/News.htm [1.20]: 2000/03/28 17:03:48 lpd)
+
+Changes the get_outline / glyph_data procedure for getting encoded font
+outline data to return an indication of whether the outline data were just
+allocated and can be freed by the client. (This is a possibly
+non-backward-compatible change.) (doc/News.htm [1.21]: 2000/03/28 18:47:02
+lpd)
+
+Adds a note about bogus "ANSI aliasing" warnings from the DEC C compiler.
+(doc/Make.htm [1.8]: 2000/03/29 19:29:08 lpd)
+
+Changes the procs structure of gs_type1_data to an in-line structure rather
+than a pointer to a const structure. (Needed for moving CIDFontType 0
+support into C.) (doc/News.htm [1.22]: 2000/03/29 22:10:31 lpd)
+
+Updates the change log with recent changes. (doc/Changes.htm [1.8]:
+2000/03/30 07:59:39 lpd)
+
+Creates a real list of projects on which help would be appreciated.
+(doc/Projects.htm [1.2]: 2000/04/01 00:43:11 lpd)
+
+Finishes implementing the ability to write CIDFontType 0 CFFs. This involved
+a surprising number of changes in other font-related files.
+(doc/News.htm [1.23]: 2000/04/02 07:38:46 lpd)
+
+Updates the documentation on preparing releases to reflect the addition of
+the toolbin directory. (doc/Release.htm [1.7]: 2000/04/02 18:56:58 lpd)
+
+Implements the AutoRotatePages distiller parameter. (doc/Ps2pdf.htm [1.5]:
+2000/04/03 02:54:41 lpd)
+
+Updates the problem reporting procedure to use SourceForge; separates the
+description of the procedure from the reporting form.
+(doc/Bug-form.htm [1.4], doc/Bug-info.htm [1.1], doc/New-user.htm [1.4],
+doc/News.htm [1.24], doc/Readme.htm [1.4]: 2000/04/04 04:14:02 lpd)
+
+Updates release dates and version numbers. (doc/Bug-form.htm [1.5],
+doc/Bug-info.htm [1.3], doc/Htmstyle.htm [1.3], doc/Make.htm [1.9],
+doc/New-user.htm [1.5], doc/Projects.htm [1.3], doc/Ps2pdf.htm [1.6],
+doc/Psfiles.htm [1.3], doc/Readme.htm [1.5], man/ps2pdf.1 [1.4],
+man/ps2ps.1 [1.4]: 2000/04/07 05:21:45 lpd)
+
+Removes redundant material, and the www.aladdin.com distribution point, from
+the release procedure documentation. (doc/Release.htm [1.8]: 2000/04/07
+05:24:29 lpd)
+
+</pre><h2><a name="6.20 Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - pdfread.dev incorrectly depended on dpsnext_. (int.mak [1.4]:
+2000/03/19 02:00:09 lpd)
+ - The referenced libpng version hadn't been updated to 1.0.5.
+(openvms.mmk [1.3]: 2000/03/20 16:38:46 lpd)
+ - The MSVC++ 6 compiler no longer recognizes the /FPi87 switch.
+(msvccmd.mak [1.2]: 2000/03/31 05:06:53 lpd)
+ - MSVC versions before 5, not before 6, recognize /FPi87.
+(msvccmd.mak [1.3]: 2000/03/31 05:50:33 lpd)
+ - Removes some occurrences of $,I,d,: that shouldn't be substituted.
+(toolbin/pre [1.2]: 2000/04/07 05:20:35 lpd)
+
+Increments the version number to 6.20, in anticipation of the next release.
+(We do this at the beginning of the development for a release, not the end.)
+(version.mak [1.6]: 2000/03/19 00:27:22 lpd)
+
+Adds a pseudo-encoding for the CFF StandardStrings that represent
+characters. (devs.mak [1.3], int.mak [1.3], unixinst.mak [1.5]: 2000/03/19
+00:38:50 lpd)
+
+Updates makefiles with dependencies for recent changes. (int.mak [1.5],
+lib.mak [1.3]: 2000/03/19 05:37:38 lpd)
+
+Adds dependencies for the new implementation of FunctionType 4 functions.
+(int.mak [1.6]: 2000/03/19 07:03:53 lpd)
+
+Splits off "vanilla" Functions into separate files, in anticipation of
+removing them (they were only used to implement PostScript Calculator
+Functions). (lib.mak [1.4]: 2000/03/19 07:33:08 lpd)
+
+Update the date and change log for the latest batches of checked-in changes.
+(version.mak [1.7]: 2000/03/19 17:29:57 lpd)
+
+Moves font-writing support into a new module (gdevpsf*), changing the source
+file names. Adds the ability to write CFF fonts, with either Type 1 or Type
+2 CharStrings; unfortunately, Acrobat Reader appears not to accept CFF fonts
+with Type 1 CharStrings. Adds the ability to convert Type 1 CharStrings to
+Type 2, including optimizing sequences of Type 1 operators into a single
+Type 2 operator. Implements writing CIDFontType 0 CFF fonts (CIDFonts) [NOT
+TESTED]. Starts (just barely) to remove more unneeded information from
+embedded TrueType fonts. (devs.mak [1.4], lib.mak [1.5]: 2000/03/20 07:02:12
+lpd)
+
+Updates dependencies to reflect today's batches of checked-in changes.
+(devs.mak [1.5], int.mak [1.7], lib.mak [1.6]: 2000/03/20 07:16:35 lpd)
+
+Updates the makefile for the renaming of gdevpsdf.c => gdevpsdu.c.
+(devs.mak [1.6]: 2000/03/20 19:30:35 lpd)
+
+Starts to move support for CIDFontType 0 and 2 into C code, needed by the
+PDF writer for handling CID-keyed fonts. Implements GlyphDirectory for
+CIDFonts. Makes GDBytes and CIDMapOffset optional for CIDFontType 0 fonts
+that have a GlyphDirectory (not documented in the PLRM, but clearly
+correct). Implements Adobe 3011 features: integer and dictionary CIDMaps,
+and the MetricsCount entry, in CIDFontType 2 fonts (but only in the C code,
+which isn't hooked in yet, not in the PostScript code in gs_cidfn.ps.)
+(int.mak [1.8], lib.mak [1.7]: 2000/03/20 19:53:06 lpd)
+
+Extends the C support for CIDFontType 0 fonts to include those with FontType
+2 subfonts in the FDArray (an Adobe 3011 addition, specifically for CFF
+fonts). (int.mak [1.9]: 2000/03/21 07:43:42 lpd)
+
+Adds invocation scripts and documentation for the PDF "optimizer".
+(unixinst.mak [1.6]: 2000/03/21 17:01:33 lpd)
+
+Splits off the ReusableStreamDecode filter as a separate module, since
+CIDFontType 0 fonts will use it even in LanguageLevels below 3.
+(int.mak [1.10]: 2000/03/21 21:34:57 lpd)
+
+Makes file streams remember the file name, needed for efficiently
+implementing reusable streams. (int.mak [1.11]: 2000/03/23 02:13:40 lpd)
+
+Checks in the latest consolidated change log. (version.mak [1.8]: 2000/03/24
+05:04:55 lpd)
+
+Changes the implementation of incrementally loaded CIDFontType 0 fonts to
+use a ReusableStreamDecode filter, in anticipation of moving the BuildGlyph
+procedure for these fonts from PostScript to C. (int.mak [1.12],
+version.mak [1.9]: 2000/03/27 16:36:24 lpd)
+
+Changes the default value of FPU_TYPE in all Windows and OS/2 makefiles from
+0 to 387, since all current desktop CPUs include floating point hardware.
+(msvc32.mak [1.3], msvclib.mak [1.3], os2.mak [1.4], watcw32.mak [1.3]:
+2000/03/28 17:03:48 lpd)
+
+Updates the change log with recent changes. (version.mak [1.10]: 2000/03/30
+07:59:39 lpd)
+
+Cleans up some dependencies missed at the last checkin. (devs.mak [1.7],
+int.mak [1.13]: 2000/03/31 05:03:30 lpd)
+
+Finishes implementing the ability to write CIDFontType 0 CFFs. This involved
+a surprising number of changes in other font-related files. (int.mak [1.14]:
+2000/04/02 07:38:46 lpd)
+
+Adds a variety of tools used to build and distribute Ghostscript releases.
+The only documentation is comments in the files themselves, and there isn't
+much of it. All aspects of these tools are subject to change without notice.
+(toolbin/3way.tcl [1.1], toolbin/cvs2hist.py [1.1],
+toolbin/errlist.tcl [1.1], toolbin/gsmake.tcl [1.1],
+toolbin/headers.tcl [1.1], toolbin/leaks.tcl [1.1],
+toolbin/makeset.tcl [1.1], toolbin/package.tcl [1.1], toolbin/pre [1.1],
+toolbin/pre.chk [1.1], toolbin/precheck.tcl [1.1], toolbin/smoke.ps [1.1],
+toolbin/suite.tcl [1.1], toolbin/tmake.tcl [1.1]: 2000/04/02 18:44:27 lpd)
+
+Moves gsindent from src to toolbin. (toolbin/gsindent [1.1]: 2000/04/02
+18:56:25 lpd)
+
+Adds an #include required by the Watcom compiler. (devs.mak [1.8]:
+2000/04/05 19:51:54 lpd)
+
+Adds a missing dependency. (lib.mak [1.8]: 2000/04/07 03:00:56 lpd)
+
+Updates a few dependencies for the release. (int.mak [1.15]: 2000/04/07
+05:23:12 lpd)
+
+Updates the build date for the release. (version.mak [1.11]: 2000/04/07
+05:25:18 lpd)
+
+Adds .cvsignore files, to prevent bogus warnings on cvs update.
+(.cvsignore [1.1], src/.cvsignore [1.1]: 2000/04/05 19:46:04 lpd)
+
+</pre><h2><a name="6.20 Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - A couple of places in the Windows code didn't correctly handle
+Ghostscript version 6.64, 7 April 2001
+21:45:03 lpd)
+ - Replaces a final exit() with a return, to avoid a compiler
+warning. (genconf.c [1.2]: 2000/04/05 19:53:27 lpd)
+
+Makes geninit remove whitespace adjacent to hex and base-85 string literals.
+(geninit.c [1.2]: 2000/03/18 22:51:24 lpd)
+
+Adds a PDF linearizer ("optimizer"). This is a separate utility (not
+integrated with the pdfwrite driver), written in PostScript.
+(lib/pdfopt.ps [1.1], lib/pdfwrite.ps [1.1]: 2000/03/20 04:31:22 lpd)
+
+Replaces the O(N^2) sorting algorithm for printing unencoded characters with
+a O(N log N) algorithm, which makes printing Unicode and Chinese/Japanese
+fonts practical. (lib/prfont.ps [1.2]: 2000/03/21 06:39:49 lpd)
+
+Adds invocation scripts and documentation for the PDF "optimizer".
+(lib/pdfopt [1.1], lib/pdfopt.bat [1.1], lib/pdfopt.ps [1.2]: 2000/03/21
+17:01:33 lpd)
+
+Splits off the ReusableStreamDecode filter as a separate module, since
+CIDFontType 0 fonts will use it even in LanguageLevels below 3.
+(zfreuse.c [1.2]: 2000/03/21 21:34:57 lpd)
+
+Adds a variety of tools used to build and distribute Ghostscript releases.
+The only documentation is comments in the files themselves, and there isn't
+much of it. All aspects of these tools are subject to change without notice.
+(gsindent [1.2]: 2000/04/02 18:44:27 lpd)
+
+</pre><h2><a name="6.20 Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - The color_info member of the Windows and OS/2 printer devices (and
+other devices using PC-style palettes) wasn't initialized properly, causing
+improper behavior. (gdevos2p.c [1.2], gdevpccm.h [1.2], gdevwpr2.c [1.3]:
+2000/03/20 21:05:11 lpd)
+ - Fixes a bug in the mswinpr2 driver in the handling of
+BitsPerPixel. (gdevwpr2.c [1.4]: 2000/03/22 17:08:33 lpd)
+ - In PCL XL output (pxl* drivers), if a PostScript image didn't
+provide enough source data, the remainder of the output image was
+erroneously filled with pixel value 0 (typically black or the foreground
+color). (gdevpx.c [1.2]: 2000/03/22 20:55:21 lpd)
+ - In the output of the pswrite driver (pdf2ps, ps2ps), the showpage
+for each page occurred before, not after, the restore that ended the page
+contents. This contradicted Adobe's documentation, and made utilities like
+N-up printing not work properly. (gdevps.c [1.4]: 2000/03/28 00:52:46 lpd)
+ - The PCL XL 2.0 value for sRGB color space was wrong, and the
+attribute for writing mode was missing. (gdevpxat.h [1.2], gdevpxen.h [1.2]:
+2000/03/29 18:19:44 lpd)
+ - When printing on monochrome LaserJet/DeskJet printers, the driver
+didn't set the number of copies to 1; on the LJ 4si, this sometimes caused
+double printing. (gdevdjet.c [1.2]: 2000/04/03 14:36:12 lpd)
+ - Updates clients for the change in the last argument of
+cff_string_index from uint * to int *. (gdevpsf2.c [1.4]: 2000/04/05
+19:55:29 lpd)
+
+Adds parsing for the remaining Acrobat Distiller 4 parameters. Implements
+the LockDistillerParams, xxxDownsampleThreshold, xxxImageDict, and
+xxxACSImageDict distiller parameters. Implements DCTEncode as an
+xxxImageFilter option (it used to cause a crash). Makes the
+AutoFilterxxxImages distiller parameters select JPEG encoding (with ACSDict)
+if the image has 8 bits per component and is not Indexed, and LZW/Flate
+otherwise: this still isn't right, but it's closer. Implementation changes:
+Changes the implementation of distiller parameter dictionaries from stream
+states to parameter lists; changes the test for masks in
+psdf_setup_image_filters, and changes the image argument from gs_image_t to
+gs_pixel_image_t. (gdevpsdf.h [1.4], gdevpsdi.c [1.3], gdevpsdp.c [1.3]:
+2000/03/20 05:40:04 lpd)
+
+Moves font-writing support into a new module (gdevpsf*), changing the source
+file names. Adds the ability to write CFF fonts, with either Type 1 or Type
+2 CharStrings; unfortunately, Acrobat Reader appears not to accept CFF fonts
+with Type 1 CharStrings. Adds the ability to convert Type 1 CharStrings to
+Type 2, including optimizing sequences of Type 1 operators into a single
+Type 2 operator. Implements writing CIDFontType 0 CFF fonts (CIDFonts) [NOT
+TESTED]. Starts (just barely) to remove more unneeded information from
+embedded TrueType fonts. (gdevpsd1.c [1.2], gdevpsdf.c [1.3],
+gdevpsdf.h [1.5], gdevpsdt.c [1.2], gdevpsf.h [1.1], gdevpsf1.c [1.1],
+gdevpsf2.c [1.1], gdevpsft.c [1.1], gdevpsfu.c [1.1], gdevpsfx.c [1.1]:
+2000/03/20 07:02:12 lpd)
+
+Renames an inappropriately named file. (gdevpsdf.c [1.4], gdevpsdf.h [1.6],
+gdevpsdu.c [1.1]: 2000/03/20 19:03:43 lpd)
+
+Extends the C support for CIDFontType 0 fonts to include those with FontType
+2 subfonts in the FDArray (an Adobe 3011 addition, specifically for CFF
+fonts). (gdevpsf.h [1.2]: 2000/03/21 07:43:42 lpd)
+
+Changes the procs structure of gs_type1_data to an in-line structure rather
+than a pointer to a const structure. (Needed for moving CIDFontType 0
+support into C.) (gdevpsf1.c [1.2], gdevpsf2.c [1.2], gdevpsfx.c [1.2]:
+2000/03/29 22:10:31 lpd)
+
+Finishes implementing the ability to write CIDFontType 0 CFFs. This involved
+a surprising number of changes in other font-related files.
+(gdevpsf2.c [1.3], gdevpsfu.c [1.2]: 2000/04/02 07:38:45 lpd)
+
+Slightly simplifies the output of the psmono and psgray drivers.
+(gdevpsim.c [1.2]: 2000/04/02 19:57:37 lpd)
+
+Adds an #include required by the Watcom compiler. (gdevpsf1.c [1.3]:
+2000/04/05 19:51:54 lpd)
+
+</pre><h2><a name="6.20 PDF writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - The pointer enumeration procedure for pdf_image_enum was wrong,
+possibly producing a mangled pointer and a memory access error if a garbage
+collection occured while writing an image in a PDF file. (gdevpdfi.c [1.5]:
+2000/03/20 05:54:13 lpd)
+ - The computation for testing whether a tiled pattern could be
+represented in line, and whether it exceeded Acrobat Reader's size limit,
+was wrong, causing some patterns not to be represented as Patterns.
+(gdevpdfi.c [1.6]: 2000/03/20 05:58:15 lpd)
+ - When ProcessColorModel=/DeviceCMYK, if the first object on a page
+or after changing the clipping path was white, the PDF writer would write it
+as black. (gdevpdfu.c [1.3]: 2000/03/21 18:36:36 lpd)
+ - If a page ended with an incomplete outline tree, an invalid memory
+access occurred. (gdevpdf.c [1.3], gdevpdfm.c [1.2]: 2000/03/24 05:09:56
+lpd)
+ - The SP pdfmark didn't check that its argument was a graphics
+stream. (gdevpdfm.c [1.4]: 2000/03/24 06:18:39 lpd)
+ - The name of the EndPage Distiller parameter collided with the
+EndPage page device parameter. (gdevpdfp.c [1.4]: 2000/03/28 07:45:25 lpd)
+ - If two embedded fonts had the same base font, the PDF file could
+wind up with an invalid entry in the xref table. (gdevpdft.c [1.4]:
+2000/04/01 01:18:32 lpd)
+
+Adds parsing for the remaining Acrobat Distiller 4 parameters. Implements
+the LockDistillerParams, xxxDownsampleThreshold, xxxImageDict, and
+xxxACSImageDict distiller parameters. Implements DCTEncode as an
+xxxImageFilter option (it used to cause a crash). Makes the
+AutoFilterxxxImages distiller parameters select JPEG encoding (with ACSDict)
+if the image has 8 bits per component and is not Indexed, and LZW/Flate
+otherwise: this still isn't right, but it's closer. Implementation changes:
+Changes the implementation of distiller parameter dictionaries from stream
+states to parameter lists; changes the test for masks in
+psdf_setup_image_filters, and changes the image argument from gs_image_t to
+gs_pixel_image_t. (gdevpdfi.c [1.4]: 2000/03/20 05:40:04 lpd)
+
+Moves font-writing support into a new module (gdevpsf*), changing the source
+file names. Adds the ability to write CFF fonts, with either Type 1 or Type
+2 CharStrings; unfortunately, Acrobat Reader appears not to accept CFF fonts
+with Type 1 CharStrings. Adds the ability to convert Type 1 CharStrings to
+Type 2, including optimizing sequences of Type 1 operators into a single
+Type 2 operator. Implements writing CIDFontType 0 CFF fonts (CIDFonts) [NOT
+TESTED]. Starts (just barely) to remove more unneeded information from
+embedded TrueType fonts. (gdevpdff.c [1.2], gdevpdfw.c [1.2]: 2000/03/20
+07:02:12 lpd)
+
+Substantially enhances the Cos object machinery. Interface: Adds a few more
+procedures, including a procedure to create a stream that writes directly
+into a Cos stream object, procedures for putting more kinds of values into
+arrays and dictionaries, and a param_list interface. Changes Cos objects to
+store a reference to the PDF device, and removes the device argument from
+all Cos procedures other than object creation. Replaces the Boolean
+is_object member of Cos values by a value_type enum: clients must now use
+COS_VALUE_IS_OBJECT() to test whether a value is an object reference. To
+reduce allocator overhead, makes the Cos procedures that take C strings no
+longer copy the string. Records whether each Cos object has been written
+into the output, so that in the future (but not in this batch of changes)
+resource definitions can be copied at the end of each page. Implementation:
+Moves more of the implementation of Cos objects to the .c file.
+(gdevpdf.c [1.4], gdevpdfi.c [1.7], gdevpdfm.c [1.3], gdevpdfo.c [1.2],
+gdevpdfo.h [1.2], gdevpdfr.c [1.2], gdevpdfu.c [1.4], gdevpdfx.h [1.3]:
+2000/03/24 06:12:52 lpd)
+
+Changes a few initializations to suppress warnings from one picky compiler
+that doesn't like ptr = buf - 1 where buf is an array. (gdevpdfr.c [1.3]:
+2000/03/28 02:01:34 lpd)
+
+Adds parsing for the remaining Acrobat Distiller 4 parameters, although most
+of them don't have any effect yet; brings documentation up to date.
+(gdevpdf.c [1.5], gdevpdfp.c [1.3], gdevpdfx.h [1.4]: 2000/03/28 07:36:58
+lpd)
+
+Implements LockDistillerParams; completes the StartPage/EndPage fix checked
+in just before. (gdevpdf.c [1.6], gdevpdfp.c [1.5], gdevpdfx.h [1.5]:
+2000/03/28 07:52:06 lpd)
+
+Changes the initial values of the "job control" parameters to match Acrobat
+Distiller 4. (gdevpdf.c [1.7], gdevpdfp.c [1.6], gdevpdfx.h [1.6]:
+2000/03/28 07:57:14 lpd)
+
+Implements the AutoRotatePages distiller parameter. (gdevpdf.c [1.8],
+gdevpdft.c [1.5], gdevpdfu.c [1.5], gdevpdfx.h [1.7]: 2000/04/03 02:54:41
+lpd)
+
+</pre><h2><a name="6.20 Interpreter (PDF)"></a>Interpreter (PDF)</h2><pre>
+
+Fixes problems:
+ - Reading embedded compressed CIDFonts wasn't implemented.
+(lib/pdf_font.ps [1.3]: 2000/03/19 01:28:59 lpd)
+ - PDF images with DeviceN color spaces caused an error.
+(lib/pdf_draw.ps [1.2]: 2000/03/19 01:44:53 lpd)
+ - PDF images with a Mask ignored the mask. (lib/pdf_draw.ps [1.3]:
+2000/03/19 01:46:27 lpd)
+ - the PDF interpreter hadn't been updated for the move to
+library-based FunctionType 4 Functions, and still tried to bind the names
+true and false to the no longer existing operators .true and .false.
+(lib/pdf_draw.ps [1.5]: 2000/03/19 07:37:03 lpd)
+ - FunctionType 2 and 3 functions didn't work.
+(lib/pdf_draw.ps [1.6]: 2000/03/19 15:23:10 lpd)
+ - In PDF files, the page CropBox was not being used to clip the
+output. (lib/pdf_main.ps [1.4], lib/pdf_ops.ps [1.3]: 2000/03/21 23:08:32
+lpd)
+ - The "fix" for FunctionTypes 2 and 3 in PDF files had made things
+worse, because the code didn't distinguish between resolving to a PostScript
+function (for shadings) and resolving to a PostScript procedure (for
+halftones, BG/UCR, alternate color space mapping, etc.)
+(lib/pdf_draw.ps [1.7]: 2000/03/23 18:31:46 lpd)
+ - Text with a Pattern color scaled the pattern according to the text
+matrix, not the default matrix of the marking context.
+(lib/pdf_base.ps [1.6], lib/pdf_main.ps [1.5], lib/pdf_ops.ps [1.4]:
+2000/03/30 18:01:58 lpd)
+ - Resolving a Shading didn't create a reusable stream for the
+shading data; since the data was then read at unpredictable times, the
+shading or other constructs in the PDF file could read incorrect data.
+(lib/pdf_draw.ps [1.8]: 2000/04/03 06:01:25 lpd)
+
+Adds a lforall procedure for the PDF linearizer. (lib/pdf_base.ps [1.3]:
+2000/03/19 01:50:05 lpd)
+
+Changes the PDF interpreter so that following an object reference doesn't
+store the result back into the referring slot, and so that # # R always
+creates an indirect object. This is necessary for the PDF linearizer. It
+shouldn't have any visible effect (other than a possible small performance
+cost). (lib/pdf_base.ps [1.4], lib/pdf_draw.ps [1.4]: 2000/03/19 01:53:58
+lpd)
+
+Refactors some code to make it usable by the PDF linearizer.
+(lib/pdf_main.ps [1.3]: 2000/03/19 17:26:42 lpd)
+
+Speeds up loading embedded Type 1 fonts a little. (lib/pdf_base.ps [1.5],
+lib/pdf_font.ps [1.4]: 2000/03/24 07:42:16 lpd)
+
+Speeds up reading embedded Type 1 fonts a little more.
+(lib/pdf_font.ps [1.5]: 2000/03/24 16:28:26 lpd)
+
+</pre><h2><a name="6.20 Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Font substitution was broken. (lib/gs_fonts.ps [1.3]: 2000/03/19
+00:22:05 lpd)
+ - The CFF reader gave an error if a font included any Subrs (it's
+very surprising that this hasn't surfaced before, but apparently Acrobat
+Distiller always produces CFF fonts with no Subrs); the CFF reader didn't
+default lenIV to -1 for Type 1 CharStrings; the CFF reader wasn't able to
+read CIDFonts. (lib/gs_cff.ps [1.3], lib/gs_cidfn.ps [1.4]: 2000/03/19
+00:45:40 lpd)
+ - EXTEND_NAMES had stopped working, because not all places that
+needed the index of a name ref used name_index rather than r_size
+(ilocate.c), and because the high_index value in the name sub-table was set
+incorrectly (iname.c). (ilocate.c [1.2], iname.c [1.2]: 2000/03/19 01:33:23
+lpd)
+ - The attribute check for Functions being executed was incorrect
+(always succeeded). (zfunc.c [1.2]: 2000/03/19 02:12:37 lpd)
+ - s_add_filter didn't ensure enough buffering. This entailed moving
+the NullEncode/Decode filters to stream.[hc]. (sfilter1.c [1.2]: 2000/03/19
+03:15:02 lpd)
+ - The parameters of SubFileDecode filters weren't initialized fully
+(required by a change in this version). (zfilter.c [1.3]: 2000/03/19
+04:03:45 lpd)
+ - The AutoPositionEPSFiles Distiller parameter was misspelled
+AutoPositionEPSFile. (lib/gs_pdfwr.ps [1.2]: 2000/03/19 05:03:31 lpd)
+ - Enumerating the elements of a dictionary-based parameter list
+returned garbage for the keys. (iparam.c [1.2]: 2000/03/19 15:13:13 lpd)
+ - .buildfont0 should not check CIDSystemInfo compatibility. The
+PLRM3 says PostScript interpreters do not make this check, even though the
+PLRM2 says compatibility is required (!). (zfcmap.c [1.2]: 2000/03/19
+16:53:50 lpd)
+ - If log2_transfer_map_size > 8, identity transfer functions
+returned garbage. The fix requires that if a client wants to set a transfer
+function to the identity mapping, it must call gx_set_identity_transfer
+rather than simply setting the procedure to gs_identity_transfer.
+(zcolor.c [1.2]: 2000/03/19 17:14:47 lpd)
+ - Separation color spaces didn't store the separation name.
+(zcssepr.c [1.2]: 2000/03/19 17:21:36 lpd)
+ - The addition of the dummy cid_Setup procedure in gs 6.01 was
+accidentally commented out. (lib/gs_cidfn.ps [1.5]: 2000/03/21 00:11:55 lpd)
+ - The test for whether an CIDFontType 2 outline string was large
+enough to include prefixed metrics was backwards, which would have caused
+problems with any font that used MetricsCount. (zfcid.c [1.3]: 2000/03/21
+00:43:17 lpd)
+ - A couple of places in the Windows code didn't correctly handle
+Ghostscript version numbers of the form #.0#. (dwsetup.cpp [1.2]: 2000/03/22
+21:45:03 lpd)
+ - In some cases, re-registering an existing font or CIDFont with
+definefont would cause an invalidfont error. (zbfont.c [1.4],
+zfont42.c [1.3]: 2000/03/28 18:20:39 lpd)
+ - Re-registering a CIDFont with definefont, or defining a CIDFont
+with definefont instead of /CIDFont defineresource, caused an invalidfont
+error or a crash. (lib/gs_cidfn.ps [1.9], lib/gs_fonts.ps [1.4]: 2000/03/28
+18:21:50 lpd)
+ - The new C BuildGlyph code for CIDFontType 0 fonts didn't handle
+GlyphDirectory or Type 2 CharStrings correctly. (lib/gs_cidfn.ps [1.12],
+zfcid.c [1.8]: 2000/03/31 23:21:57 lpd)
+ - The internaldict "operator" was allocated in local VM, preventing
+it from being bound into procedures allocated in global VM.
+(lib/gs_init.ps [1.6]: 2000/04/04 22:16:02 lpd)
+ - If there was a CIDInit ProcSet defined in the filesystem, the code
+for initializing the built-in CIDInit ProcSet became confused.
+(lib/gs_cidfn.ps [1.13]: 2000/04/04 22:17:33 lpd)
+ - Fixes several problems in resourceforall and resource loading: the
+operands of resourceforall were restored even in the case of an error in the
+client's procedure; the name Instances had special meaning for some Adobe
+code; resourceforall caused an invalidaccess error if an operand was in
+local VM but the current VM was global; loading a resource from a file could
+cause a typecheck error if the file left values on the operand stack.
+(interp.c [1.3], lib/gs_ccfnt.ps [1.2], lib/gs_res.ps [1.3]: 2000/04/04
+22:26:02 lpd)
+ - resourceforall didn't enumerate external (loadable) instances, and
+would enumerate an instance twice if it had both a local and a global
+definition. (lib/gs_res.ps [1.4]: 2000/04/05 21:07:02 lpd)
+ - The implementation of resourcestatus wasn't compatible with some
+badly written code in an Adobe font downloader that assumes that the
+implementation of resourcestatus in Generic and Font is the same.
+(lib/gs_res.ps [1.5]: 2000/04/05 21:20:07 lpd)
+ - The just-checked-in fixed for resourceforall didn't work properly
+for the IdiomSet category. (They probably failed for other categories that
+had no instances, but we didn't check this.) (lib/gs_res.ps [1.6]:
+2000/04/05 21:51:43 lpd)
+ - Some Adobe font downloading code assumed that loading a resource
+file would never leave extra values on the stack; our implementation didn't
+ensure this (by popping them if needed). (lib/gs_res.ps [1.8]: 2000/04/06
+04:50:28 lpd)
+ - If an alphabetic font defined and used a .notdef character,
+pdfwrite always converted it to a bitmap. (lib/gs_lgo_e.ps [1.2]: 2000/04/07
+02:48:23 lpd)
+
+Provides a gs_atan2_degrees procedure to parallel sin and cos.
+(zmath.c [1.2]: 2000/03/18 23:10:39 lpd)
+
+Speeds up string garbage collection by scanning unmodified string regions
+faster. (igcstr.c [1.2]: 2000/03/18 23:29:32 lpd)
+
+Adds the ImagemaskTrapping parameter to the trapping state.
+(lib/gs_trap.ps [1.2]: 2000/03/18 23:35:53 lpd)
+
+Increments the version number to 6.20, in anticipation of the next release.
+(We do this at the beginning of the development for a release, not the end.)
+(lib/gs_init.ps [1.4]: 2000/03/19 00:27:22 lpd)
+
+Adds a pseudo-encoding for the CFF StandardStrings that represent
+characters. (lib/gs_cff.ps [1.2], lib/gs_css_e.ps [1.1]: 2000/03/19 00:38:50
+lpd)
+
+Refactors the code for getting Type 1/2/4 font parameters so it can be used
+for FDArray entries of CIDFontType 0 fonts. (ifont1.h [1.2], zfont1.c [1.2]:
+2000/03/19 02:07:45 lpd)
+
+Speeds up Function evaluation slightly, by preallocating space for a
+reasonable number of operands and results on the C stack rather than always
+allocating it on the heap. (zfunc.c [1.3]: 2000/03/19 02:16:58 lpd)
+
+Adds a public procedure for determining whether a PostScript object is a
+Function, and if so, returning the pointer to the gs_function_t structure.
+(ifunc.h [1.2], zfunc.c [1.4]: 2000/03/19 02:22:01 lpd)
+
+Splits out the [T]BCP filter interface into a separate file. (zfbcp.c [1.2]:
+2000/03/19 02:40:18 lpd)
+
+Adds a skip_count parameter to the SubFileDecode filter, giving the number
+of initial bytes or records to skip over. (Needed for printing FunctionType
+4 functions, possibly useful for other things.) (sfilter1.c [1.3]:
+2000/03/19 03:20:18 lpd)
+
+Replaces the implementation of FunctionType 4 functions at the PostScript
+language level with one that uses the new library-based facilities.
+(zdevice2.c [1.2], zfunc4.c [1.2]: 2000/03/19 06:56:23 lpd)
+
+Changes the key type returned by parameter list enumeration to include a
+persistence flag, makes C parameter lists support non-persistent keys, and
+upgrades GC descriptors so that parameter lists can be used non-transiently;
+updates implementors of parameter lists to call gs_param_list_init to
+initialize the common members, which is now required. (iparam.c [1.3]:
+2000/03/19 15:16:11 lpd)
+
+Makes Separation and DeviceN color spaces convert their tint transform
+function to a FunctionType 4 Function if possible, for better accuracy and
+to allow writing in PDF files. (lib/gs_lev2.ps [1.2], lib/gs_ll3.ps [1.2]:
+2000/03/19 15:28:34 lpd)
+
+Makes st_indexed_map private. Clients must now use the constructor procedure
+alloc_indexed_map rather than allocating instances directly.
+(zcsindex.c [1.2]: 2000/03/19 16:37:28 lpd)
+
+Refactors the code for building fonts so it can be used for FDArray entries
+of CIDFontType 0 fonts. (bfont.h [1.2], zbfont.c [1.2]: 2000/03/19 16:45:47
+lpd)
+
+Adds a .fileposition operator that will read the position even of
+non-positionable streams, needed for the PDF linearizer. (zfileio.c [1.3]:
+2000/03/20 04:30:49 lpd)
+
+Starts to move support for CIDFontType 0 and 2 into C code, needed by the
+PDF writer for handling CID-keyed fonts. Implements GlyphDirectory for
+CIDFonts. Makes GDBytes and CIDMapOffset optional for CIDFontType 0 fonts
+that have a GlyphDirectory (not documented in the PLRM, but clearly
+correct). Implements Adobe 3011 features: integer and dictionary CIDMaps,
+and the MetricsCount entry, in CIDFontType 2 fonts (but only in the C code,
+which isn't hooked in yet, not in the PostScript code in gs_cidfn.ps.)
+(icid.h [1.1], ifont.h [1.2], ifont42.h [1.1], zcid.c [1.2], zfcid.c [1.1],
+zfcmap.c [1.3], zfont42.c [1.2]: 2000/03/20 19:53:06 lpd)
+
+Hooks the new CIDMap code into the BuildGlyph procedure for CIDFontType 2
+fonts. (Contrary to a previous log comment, MetricsCount is already hooked
+in.) Support for CIDFontType 2 fonts is now implemented entirely in C, as
+for Type 42 fonts. (lib/gs_cidfn.ps [1.6], zfcid.c [1.2]: 2000/03/21
+00:32:15 lpd)
+
+Extends the C support for CIDFontType 0 fonts to include those with FontType
+2 subfonts in the FDArray (an Adobe 3011 addition, specifically for CFF
+fonts). (ifont2.h [1.1], zfcid.c [1.4], zfont2.c [1.2]: 2000/03/21 07:43:42
+lpd)
+
+Changes Subr loading for CIDFontType 0 fonts from lazy to immediate, so that
+C code can be guaranteed access to the Subrs. (In every CIDFontType 0 font
+that we have seen, SubrCount is 5, so this has no significant time or space
+cost.) Also adds support for FDBytes > 1 in GlyphDirectory definitions.
+(lib/gs_cidfn.ps [1.7]: 2000/03/21 20:06:44 lpd)
+
+Splits off the ReusableStreamDecode filter as a separate module, since
+CIDFontType 0 fonts will use it even in LanguageLevels below 3.
+(lib/gs_frsd.ps [1.1], lib/gs_ll3.ps [1.3], zfrsd.c [1.1]: 2000/03/21
+21:34:57 lpd)
+
+Makes file streams remember the file name, needed for efficiently
+implementing reusable streams. (zfile.c [1.3], zfileio.c [1.4]: 2000/03/23
+02:13:40 lpd)
+
+Changes the new .filename operator to return true/false rather than causing
+an error; redefines findlibfile in terms of a simpler .libfile operator +
+.filename. (lib/gs_init.ps [1.5], zfile.c [1.4], zfileio.c [1.5]: 2000/03/23
+18:47:17 lpd)
+
+Finishes implementing the file case of ReusableStreamDecode. This required
+adding the ability to restrict file-reading streams to a subfile.
+(lib/gs_frsd.ps [1.2], sfilter1.c [1.4], zfileio.c [1.6], zfrsd.c [1.2]:
+2000/03/24 03:59:42 lpd)
+
+Changes the implementation of incrementally loaded CIDFontType 0 fonts to
+use a ReusableStreamDecode filter, in anticipation of moving the BuildGlyph
+procedure for these fonts from PostScript to C. (lib/gs_cidfn.ps [1.8],
+zbfont.c [1.3], zfcid.c [1.5]: 2000/03/27 16:36:24 lpd)
+
+Changes the get_outline / glyph_data procedure for getting encoded font
+outline data to return an indication of whether the outline data were just
+allocated and can be freed by the client. (This is a possibly
+non-backward-compatible change.) (zfcid.c [1.6]: 2000/03/28 18:47:02 lpd)
+
+Changes the procs structure of gs_type1_data to an in-line structure rather
+than a pointer to a const structure. (Needed for moving CIDFontType 0
+support into C.) (zfont1.c [1.3]: 2000/03/29 22:10:31 lpd)
+
+Finishes moving support for CIDFontType 0 fonts from PostScript to C.
+(ifont.h [1.3], ifont42.h [1.2], lib/gs_cidfn.ps [1.10], zfcid.c [1.7],
+zfont42.c [1.4]: 2000/03/31 04:55:18 lpd)
+
+Allows dictionaries as the value of CIDMap resources. (Also removes an
+unrelated obsolete comment.) (lib/gs_cidfn.ps [1.11]: 2000/03/31 05:11:30
+lpd)
+
+Finishes implementing the ability to write CIDFontType 0 CFFs. This involved
+a surprising number of changes in other font-related files. (ichar1.h [1.2],
+ifcid.h [1.1], zchar1.c [1.2], zfcid.c [1.9], zfcid0.c [1.1],
+zfcid1.c [1.1], zfont1.c [1.4]: 2000/04/02 07:38:46 lpd)
+
+Makes the .writefont9 operator (used only for testing) available in both
+DEBUG and PROFILE configurations. (zfcid0.c [1.2]: 2000/04/03 02:37:55 lpd)
+
+Extends .forceput to handle arrays as well as dictionaries, required to fix
+a bug with internaldict. (zdict.c [1.2], zgeneric.c [1.2]: 2000/04/04
+22:13:23 lpd)
+
+Works around an Adobe code assumption that the default FindResource
+procedure does *not* call the ResourceStatus procedure if the requested
+instance is already defined in VM. (lib/gs_res.ps [1.7]: 2000/04/05 23:31:54
+lpd)
+
+Implements the framework for superexec (but none of the actual access check
+bypasses). (icontext.c [1.2], icstate.h [1.2], zcontrol.c [1.2]: 2000/04/06
+04:40:06 lpd)
+
+Extends the undocumented CCRun procedure to take an additional argument, a
+Private dictionary, required by some Adobe font downloading code.
+(lib/gs_type1.ps [1.3]: 2000/04/06 05:25:10 lpd)
+
+</pre><h2><a name="6.20 Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - s_add_filter didn't ensure enough buffering. This entailed moving
+the NullEncode/Decode filters to stream.[hc]. (sfilter.h [1.3],
+stream.c [1.3], stream.h [1.3]: 2000/03/19 03:15:02 lpd)
+ - When FPU_TYPE <= 0, the image interpolation code lost too much
+accuracy, producing color streaks in the output. (Fix by DanCoby.)
+(siscale.c [1.2]: 2000/03/29 20:34:45 lpd)
+ - Fixes a couple of typos in the recently checked-in image
+interpolation fix. (siscale.c [1.3]: 2000/03/30 06:55:26 lpd)
+
+Splits out the [T]BCP filter interface into a separate file. (sbcp.c [1.2],
+sbcp.h [1.1], sfilter.h [1.2]: 2000/03/19 02:40:18 lpd)
+
+Adds a skip_count parameter to the SubFileDecode filter, giving the number
+of initial bytes or records to skip over. (Needed for printing FunctionType
+4 functions, possibly useful for other things.) (sfilter.h [1.4]: 2000/03/19
+03:20:18 lpd)
+
+Changes the key type returned by parameter list enumeration to include a
+persistence flag, makes C parameter lists support non-persistent keys, and
+upgrades GC descriptors so that parameter lists can be used non-transiently;
+updates implementors of parameter lists to call gs_param_list_init to
+initialize the common members, which is now required. (spsdf.c [1.2]:
+2000/03/19 15:16:11 lpd)
+
+Makes file streams remember the file name, needed for efficiently
+implementing reusable streams. (stream.c [1.4], stream.h [1.4]: 2000/03/23
+02:13:40 lpd)
+
+Finishes implementing the file case of ReusableStreamDecode. This required
+adding the ability to restrict file-reading streams to a subfile.
+(sfxfd.c [1.2], sfxstdio.c [1.2], stream.c [1.5], stream.h [1.5]: 2000/03/24
+03:59:42 lpd)
+
+Changes a few initializations to suppress warnings from one picky compiler
+that doesn't like ptr = buf - 1 where buf is an array. (spsdf.c [1.3]:
+2000/03/28 02:01:34 lpd)
+
+</pre><h2><a name="6.20 Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Two comments in the file were incorrect. (gsiparm3.h [1.2]:
+2000/03/19 02:46:11 lpd)
+ - param_coerce_typed, which works with any parameter list
+implementation, was incorrectly described as associated with the default
+implementation. (gsparam.h [1.2]: 2000/03/19 03:37:08 lpd)
+ - TrueType fonts didn't use vhea/vmtx if WMode = 1. Also makes
+gs_font_type42 subclassable, for implementing CIDFontType 2 fonts, and makes
+its procedure for getting a glyph's side bearing and width virtual, required
+to support MetricsCount in CIDFontType 2 fonts. (gstype42.c [1.3],
+gxfont42.h [1.2]: 2000/03/19 03:58:51 lpd)
+ - ImageType 4 images didn't give an error for out-of-range MaskColor
+values. The file also had an unnecessary #include. (gximage4.c [1.2]:
+2000/03/19 04:10:09 lpd)
+ - If log2_transfer_map_size > 8, identity transfer functions
+returned garbage. The fix requires that if a client wants to set a transfer
+function to the identity mapping, it must call gx_set_identity_transfer
+rather than simply setting the procedure to gs_identity_transfer.
+(gxclrast.c [1.3], gxcmap.c [1.2], gxfmap.h [1.2]: 2000/03/19 17:14:47 lpd)
+ - Fixes a warning about aliasing produced by one extremely picky
+compiler. (gsnogc.c [1.2]: 2000/03/22 21:39:32 lpd)
+ - Filling or clipping with ridiculously large (out-of-bounds)
+coordinates could cause an internal overflow that produced incorrect
+results. (This is probably not the last such bug.) (gxfill.c [1.2]:
+2000/03/30 07:03:59 lpd)
+
+Provides a gs_atan2_degrees procedure to parallel sin and cos.
+(gsmisc.c [1.2], gxfarith.h [1.2]: 2000/03/18 23:10:39 lpd)
+
+Improves the 8x8 bitmap "flipping" procedure to take advantage of 32-bit
+ints. (gsutil.c [1.2]: 2000/03/18 23:16:16 lpd)
+
+Adds a public procedure for restricting a color to its legal range.
+(gscspace.c [1.2], gscspace.h [1.2], gxcspace.h [1.2]: 2000/03/18 23:19:17
+lpd)
+
+Adds the new ImagemaskTrapping parameter to the trapping state.
+(gstrap.c [1.2], gstrap.h [1.2]: 2000/03/18 23:26:17 lpd)
+
+Increments the version number to 6.20, in anticipation of the next release.
+(We do this at the beginning of the development for a release, not the end.)
+(gscdef.c [1.2]: 2000/03/19 00:27:22 lpd)
+
+Adds a pseudo-encoding for the CFF StandardStrings that represent
+characters. (gsccode.h [1.2]: 2000/03/19 00:38:50 lpd)
+
+Adds a bit_index procedure to the implementation of device halftones,
+required for writing halftones in PDF files. (The only implementors are
+internal ones.) (gxdht.h [1.2], gxhtbit.c [1.2]: 2000/03/19 05:10:55 lpd)
+
+Adds a public procedure for getting a palette entry of an Indexed color
+space, used when writing Indexed color spaces in PDF files.
+(gscindex.h [1.1], gscolor2.c [1.2], gscolor2.h [1.2]: 2000/03/19 05:20:28
+lpd)
+
+Reimplements "PostScript calculator" (FunctionType 4) functions entirely in
+C, to allow them to be written out in PDF files. (gsfunc4.c [1.1],
+gsfunc4.h [1.1], gsstruct.h [1.2]: 2000/03/19 05:25:53 lpd)
+
+Moves gx_device_color_equal to the public API, for detecting redundant color
+setting when writing PDF files. (gsdcolor.h [1.2], gxdcolor.c [1.2],
+gxdcolor.h [1.2]: 2000/03/19 06:46:08 lpd)
+
+Changes the default value of BufferSpace to 4 Mb. In desktop applications,
+this is a reasonable value that can substantially improve performance
+(especially for color printers); embedded applications will want to set
+BufferSpace themselves in any case. (gdevprn.h [1.2]: 2000/03/19 06:51:13
+lpd)
+
+Adds virtual procedures for Functions to write their parameters to a
+parameter list, and to access their data source and subfunctions. This is
+needed for writing Functions in PDF files. This change is also a
+prerequisite for the C implemention of FunctionType 4 functions, even though
+it appears later in the change log. (gsdsrc.h [1.2], gsfunc.c [1.2],
+gsfunc.h [1.2], gsfunc0.c [1.2], gsfunc3.c [1.2], gsparam.c [1.2],
+gsparam.h [1.3], gxfunc.h [1.2]: 2000/03/19 07:24:53 lpd)
+
+Splits off "vanilla" Functions into separate files, in anticipation of
+removing them (they were only used to implement PostScript Calculator
+Functions). (gsfunc.c [1.3], gsfunc.h [1.3], gsfuncv.c [1.1],
+gsfuncv.h [1.1]: 2000/03/19 07:33:08 lpd)
+
+Adds a procedure for allocating a C parameter list. (gscparam.c [1.2],
+gsparam.h [1.4]: 2000/03/19 15:00:05 lpd)
+
+Undoes a premature change that depends on an update not yet checked in.
+(gscparam.c [1.3]: 2000/03/19 15:07:59 lpd)
+
+Changes the key type returned by parameter list enumeration to include a
+persistence flag, makes C parameter lists support non-persistent keys, and
+upgrades GC descriptors so that parameter lists can be used non-transiently;
+updates implementors of parameter lists to call gs_param_list_init to
+initialize the common members, which is now required. (gscparam.c [1.4],
+gsparam.c [1.3], gsparam.h [1.5]: 2000/03/19 15:16:11 lpd)
+
+Adds a procedure for copying one parameter list to another.
+(gsparamx.c [1.2], gsparamx.h [1.2]: 2000/03/19 15:35:31 lpd)
+
+Records the CTM used for sampling HalftoneType 1 spot functions. This is
+needed for recognizing the standard spot functions when producing PDF
+output. Also factors the code for initializing spot functions for the
+benefit of the PDF writer. (gshtscr.c [1.2], gxdht.h [1.3], gzht.h [1.2]:
+2000/03/19 15:43:36 lpd)
+
+Adds a proc_data member to the map for Separation and Indexed color spaces.
+(gscolor2.c [1.3], gxcolor2.h [1.2]: 2000/03/19 16:23:46 lpd)
+
+Makes st_indexed_map private. Clients must now use the constructor procedure
+alloc_indexed_map rather than allocating instances directly.
+(gscolor2.c [1.4], gscsepr.c [1.2], gxclrast.c [1.2], gxcolor2.h [1.3]:
+2000/03/19 16:37:28 lpd)
+
+Adds procedures for building and accessing DeviceN color spaces.
+(gscdevn.c [1.2], gscdevn.h [1.1]: 2000/03/19 17:02:37 lpd)
+
+Exports the 'blend' operators of the Type 1 interpreter, for use by the Type
+1 / Type 2 font writer. (gstype1.c [1.3], gxtype1.c [1.2], gxtype1.h [1.3]:
+2000/03/19 18:46:44 lpd)
+
+Starts to move support for CIDFontType 0 and 2 fonts into C code. (These
+header files are the ones needed to compile the new gdevpsf* files; they
+don't interact with any existing code.) (gxcid.h [1.1], gxfcid.h [1.1]:
+2000/03/20 06:40:22 lpd)
+
+Moves font-writing support into a new module (gdevpsf*), changing the source
+file names. Adds the ability to write CFF fonts, with either Type 1 or Type
+2 CharStrings; unfortunately, Acrobat Reader appears not to accept CFF fonts
+with Type 1 CharStrings. Adds the ability to convert Type 1 CharStrings to
+Type 2, including optimizing sequences of Type 1 operators into a single
+Type 2 operator. Implements writing CIDFontType 0 CFF fonts (CIDFonts) [NOT
+TESTED]. Starts (just barely) to remove more unneeded information from
+embedded TrueType fonts. (gxttf.h [1.1]: 2000/03/20 07:02:12 lpd)
+
+Starts to move support for CIDFontType 0 and 2 into C code, needed by the
+PDF writer for handling CID-keyed fonts. Implements GlyphDirectory for
+CIDFonts. Makes GDBytes and CIDMapOffset optional for CIDFontType 0 fonts
+that have a GlyphDirectory (not documented in the PLRM, but clearly
+correct). Implements Adobe 3011 features: integer and dictionary CIDMaps,
+and the MetricsCount entry, in CIDFontType 2 fonts (but only in the C code,
+which isn't hooked in yet, not in the PostScript code in gs_cidfn.ps.)
+(gsfcid.c [1.1], gsfcmap.c [1.3], gxfcmap.h [1.2], gxfont1.h [1.2]:
+2000/03/20 19:53:06 lpd)
+
+Changes a few initializations to suppress warnings from one picky compiler
+that doesn't like ptr = buf - 1 where buf is an array. (gxclpath.c [1.2]:
+2000/03/28 02:01:34 lpd)
+
+Changes the get_outline / glyph_data procedure for getting encoded font
+outline data to return an indication of whether the outline data were just
+allocated and can be freed by the client. (This is a possibly
+non-backward-compatible change.) (gxfcid.h [1.2], gxfont42.h [1.3]:
+2000/03/28 18:47:02 lpd)
+
+Changes the procs structure of gs_type1_data to an in-line structure rather
+than a pointer to a const structure. (Needed for moving CIDFontType 0
+support into C.) (gstype1.c [1.4], gstype2.c [1.3], gxfont1.h [1.3],
+gxtype1.c [1.3]: 2000/03/29 22:10:31 lpd)
+
+Finishes moving support for CIDFontType 0 fonts from PostScript to C.
+(gxfcid.h [1.3]: 2000/03/31 04:55:18 lpd)
+
+Finishes implementing the ability to write CIDFontType 0 CFFs. This involved
+a surprising number of changes in other font-related files. (gsfcid.c [1.2],
+gxfcid.h [1.4]: 2000/04/02 07:38:46 lpd)
+
+<hr>
+
+<h1><a name="Version6.01"></a>Version 6.01 (2000-03-17)</h1>
+
+This is a bug-fix release for 6.0.
+
+This release fixes the following reported bugs: #101555, #101813, #101816,
+#101818, #101827, #101830, #101871, #101853, #101906, #101949, #101950,
+#102003, #102004, #102038, #102081, #102936.
+
+<h2><a name="6.01_Incompatible_changes"></a>Incompatible changes</h2>
+
+(Platforms)
+ - OpenVMS using VAX C is no longer supported. (OpenVMS with DEC C
+and gcc are still supported.)
+(Drivers)
+ - The third argument of psdf_set_color is changed from const char *
+to const psdf_set_color_commands_t *.
+(Interpreter)
+ - The non-standard feature of writing dictionaries in binary object
+output is now disabled by default, but can now be enabled dynamically.
+(Library)
+ - The definition of TRANSPARENCY_PER_H_P is moved from gdevmrop.h to
+gsropt.h.
+ - The handling of the source opaque, texture transparent case of
+RasterOp when TRANSPARENCY_PER_H_P is defined is changed slightly.
+
+
+<h2><a name="6.01 Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Fixes a typo. (man/ps2pdf.1 [1.2]: 2000/03/10 03:11:06 lpd)
+ - When converting PostScript to PDF, selecting /Bicubic as an image
+DownsampleType caused an error instead of defaulting to /Average.
+(doc/Ps2pdf.htm [1.2]: 2000/03/10 04:16:09 lpd)
+ - The gs###src.zip and gs###lib.zip files weren't mentioned as being
+included in distributions; News.htm and Changes.htm weren't mentioned at
+all. (doc/Release.htm [1.5]: 2000/03/15 07:23:52 lpd)
+ - Fixes a problem producing too much black in the output; also adds
+support for 5 new printers (H-P Color DeskJet 690, H-P DesignJet 750, and
+Epson Stylus Color 200). Note that this is user-contributed code.
+(doc/Devices.htm [1.2]: 2000/03/16 02:01:36 lpd)
+
+In ansi2knr, adds user-contributed support for concatenated string literals
+and character constants, and fixes for a couple of minor bugs.
+(man/ansi2knr.1 [1.2]: 2000/03/10 03:16:17 lpd)
+
+Removes an inappropriate copying notice. (doc/Hershey.htm [1.2]: 2000/03/10
+07:03:57 lpd)
+
+Clarifies when xdpyinfo and xwininfo are needed. Adds privacy options for
+problem reports. (doc/Bug-form.htm [1.2]: 2000/03/10 07:06:08 lpd)
+
+Adds a new eps2eps utility analogous to ps2ps. (man/eps2eps.1 [1.1],
+man/ps2ps.1 [1.2]: 2000/03/10 07:51:55 lpd)
+
+Updates the documentation on making RPMs, which is no longer supported.
+(doc/Install.htm [1.2], doc/Make.htm [1.2]: 2000/03/10 07:58:00 lpd)
+
+Adds a recommendation to use gcc on SGI platforms. (doc/Make.htm [1.3]:
+2000/03/10 07:59:53 lpd)
+
+Updates documentation regarding Unix systems that do/don't use libpthread.
+(doc/Make.htm [1.4]: 2000/03/10 08:01:35 lpd)
+
+Removes support for VAX C, which DEC stopped supporting 9 (!) years ago.
+(doc/Make.htm [1.5], doc/Use.htm [1.2]: 2000/03/10 08:02:59 lpd)
+
+Updates the documentation for building Aladdin releases to reflect revised
+procedures for the Windows executable, and a few other minor changes.
+(doc/Release.htm [1.2]: 2000/03/10 15:55:39 lpd)
+
+Adds the ability to compile on OS/2 with XFree86. (doc/Install.htm [1.3],
+doc/Make.htm [1.6]: 2000/03/10 19:50:49 lpd)
+
+Moves all history for versions 5.n into History5.htm; creates History6.htm
+for versions 6.n; redefines News.htm as containing only news for the current
+release; adds (a link to) Changes.htm for the mechanically generated change
+log. (doc/History5.htm [1.2], doc/History6.htm [1.1], doc/News.htm [1.2],
+doc/README [1.2], doc/Readme.htm [1.2]: 2000/03/14 06:14:43 lpd)
+
+Partially updates the release procedure documentation to reflect the use of
+SourceForge and CVS. (doc/Release.htm [1.3]: 2000/03/14 06:39:23 lpd)
+
+Adds a change log generated mechanically from the CVS logs. Future releases
+may omit this file (doc/Changes.htm) from their change log.
+(doc/Changes.htm [1.1], doc/News.htm [1.3]: 2000/03/14 06:48:44 lpd)
+
+Revises the release procedures to reflect use of SourceForge, and to
+separate out the procedures for building Windows executables.
+(doc/Release.htm [1.4]: 2000/03/15 02:24:58 lpd)
+
+Adds information on uninstalling Ghostscript on Windows.
+(doc/Install.htm [1.4]: 2000/03/15 07:29:53 lpd)
+
+Adds the ability to set the ProcessColorModel of the pdfwrite device to
+/DeviceGray, /DeviceRGB, or /DeviceCMYK. This affects the color space used
+for fill, stroke, text, and imagemask, and for images that (for whatever
+reason) can't be written in their specified color space. Note that this is a
+short-term fix: pdfwrite should output colors in the color space in which
+they were specified. However, a proper fix will require more significant
+architectural changes. (doc/News.htm [1.4]: 2000/03/16 01:21:23 lpd)
+
+Adds a reference to a third-party Fontmap for the Computer Modern fonts.
+(doc/Fonts.htm [1.2]: 2000/03/16 04:05:07 lpd)
+
+Adds documentation and a makefile entry for Matthew Gelhaus' cdj880 driver.
+The code will eventually be included in gdevcd8.c, but it is not yet mature
+enough. (doc/Devices.htm [1.3]: 2000/03/16 08:09:42 lpd)
+
+Updates the version number reference in the troff header.
+(man/ps2pdf.1 [1.3], man/ps2ps.1 [1.3]: 2000/03/17 00:47:08 lpd)
+
+Removes the attempted documentation on building Windows executable
+distributions: it was never correct, and Aladdin will no longer be creating
+such distributions. Also reorganizes the document slightly and brings the
+rest of it fully into line with reality. (doc/Release.htm [1.6]: 2000/03/17
+04:40:47 lpd)
+
+Adds information on building with the Intel C/C++ optimizing compiler
+(requires the Microsoft Visual C++ environment), and fixes a typo in the
+link to ftp.cdrom.com. (doc/Make.htm [1.7]: 2000/03/17 17:42:59 lpd)
+
+Checks in the first wrap-up for the 6.01 release. (doc/Changes.htm [1.2],
+doc/History6.htm [1.2], doc/News.htm [1.5]: 2000/03/18 04:13:40 lpd)
+
+</pre><h2><a name="6.01 Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - The terminating $ on the $Id: line in gsmalloc.c was missing, and
+dwuninst.rc lacked a $Id: line. (dwuninst.rc [1.2]: 2000/03/10 03:44:33 lpd)
+ - The %ram% IODevice was defined, but should not be (it represents a
+RAM-based file system, which Ghostscript does not provide). Fix: The type of
+the %null% IODevice was /FileSystem rather than /Special. (int.mak [1.2]:
+2000/03/10 07:02:07 lpd)
+ - The dependency list for coslwxl omitted a $(DD).
+(contrib.mak [1.2]: 2000/03/10 07:30:54 lpd)
+ - The makefile still referred to a long-gone driver for the DEC
+LA70. (contrib.mak [1.3]: 2000/03/10 07:32:43 lpd)
+ - The Unix install process tried to make links without deleting them
+first. (unixinst.mak [1.2]: 2000/03/10 07:49:21 lpd)
+ - The Watcom compiler switches didn't force enums to occupy a full
+int, leading to execution errors because the code casts (enum *) pointers to
+(int *). (wccommon.mak [1.2]: 2000/03/10 08:15:31 lpd)
+ - The Windows zip archive didn't include font metrics files. (This
+change only fixes the build procedure: it doesn't actually update the
+currently released zip archive.) (winint.mak [1.2]: 2000/03/10 08:17:06 lpd)
+ - the "all architectures" build and test script hadn't been updated
+to use different STDLIBS values depending on where the platform provides the
+pthreads library. (all-arch.mak [1.2]: 2000/03/10 15:40:43 lpd)
+ - The documentation for building with pthreads on FreeBSD hadn't
+been updated. (unix-gcc.mak [1.2], unixansi.mak [1.2], unixtrad.mak [1.2]:
+2000/03/10 15:44:01 lpd)
+ - gsmalloc.c didn't include the prototype for gs_exit(), which it
+calls. (lib.mak [1.2]: 2000/03/10 15:53:08 lpd)
+
+Because of rampant confusion, disagreement, and lack of standardization,
+removes the RPM-related spec and patch files. (gs-fonts.rps [1.2],
+gs.rps [1.2], rpm-conf.dif [1.2]: 2000/03/10 03:22:04 lpd)
+
+Increases the stack size for the PC platforms, since a user had reported
+that the OS/2 stack size was too small. (dw32c.def [1.2],
+dwmain32.def [1.2], gsos2.def [1.2]: 2000/03/10 03:33:21 lpd)
+
+Updates the Brother HL7xx drivers with a new user-contributed version, plus
+a couple of minor fixes. (contrib.mak [1.4]: 2000/03/10 07:33:44 lpd)
+
+Adds a new eps2eps utility analogous to ps2ps. (unixinst.mak [1.3]:
+2000/03/10 07:51:55 lpd)
+
+Removes support for VAX C, which DEC stopped supporting 9 (!) years ago.
+(openvms.mak [1.2], openvms.mmk [1.2]: 2000/03/10 08:02:59 lpd)
+
+Updates all makefiles to the current libpng version, 1.0.5.
+(bcwin32.mak [1.2], dvx-gcc.mak [1.2], msvc32.mak [1.2], msvclib.mak [1.2],
+os2.mak [1.2], ugcclib.mak [1.2], unix-gcc.mak [1.3], unixansi.mak [1.3],
+unixtrad.mak [1.3], watc.mak [1.2], watclib.mak [1.2], watcw32.mak [1.2]:
+2000/03/10 15:48:58 lpd)
+
+Updates the version # to 6.01, and the version date. (version.mak [1.2]:
+2000/03/10 17:18:29 lpd)
+
+Adds the ability to compile on OS/2 with XFree86. (os2.mak [1.3]: 2000/03/10
+19:50:49 lpd)
+
+Moves all history for versions 5.n into History5.htm; creates History6.htm
+for versions 6.n; redefines News.htm as containing only news for the current
+release; adds (a link to) Changes.htm for the mechanically generated change
+log. (unixinst.mak [1.4], version.mak [1.3]: 2000/03/14 06:14:44 lpd)
+
+Adds entries for ibm-rs6000-aix-4.3, sgi-mips-irix6.5-64bit, and
+sun-sparc-solaris-64bit. (all-arch.mak [1.3]: 2000/03/15 18:38:29 lpd)
+
+Adds the ability to set the ProcessColorModel of the pdfwrite device to
+/DeviceGray, /DeviceRGB, or /DeviceCMYK. This affects the color space used
+for fill, stroke, text, and imagemask, and for images that (for whatever
+reason) can't be written in their specified color space. Note that this is a
+short-term fix: pdfwrite should output colors in the color space in which
+they were specified. However, a proper fix will require more significant
+architectural changes. (version.mak [1.4]: 2000/03/16 01:21:24 lpd)
+
+Adds documentation and a makefile entry for Matthew Gelhaus' cdj880 driver.
+The code will eventually be included in gdevcd8.c, but it is not yet mature
+enough. (contrib.mak [1.5]: 2000/03/16 08:09:42 lpd)
+
+Adds a missing dependency of gdevpdft.o on gxfont42.h. (devs.mak [1.2]:
+2000/03/17 02:59:26 lpd)
+
+Adds a disclaimer of responsibility for the makefile section for creating
+distribution archives, which Aladdin is no longer maintaining.
+(winint.mak [1.3]: 2000/03/17 03:01:58 lpd)
+
+Checks in the first wrap-up for the 6.01 release. (unix-gcc.mak [1.4],
+version.mak [1.5]: 2000/03/18 04:13:40 lpd)
+
+</pre><h2><a name="6.01 Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - The loader for the stochastic halftone incorrectly assumed that
+the resource file left the resource on the stack, causing a stackunderflow
+error. (lib/stocht.ps [1.2]: 2000/03/10 03:34:44 lpd)
+ - The ps2pdf*.bat scripts didn't set PS2PDFSW to the empty string if
+there were no arguments, causing the same file to be processed again.
+(lib/ps2pdf12.bat [1.2], lib/ps2pdf13.bat [1.2]: 2000/03/10 07:40:00 lpd)
+ - Fixes a typo in the fix for putting stdout in binary mode.
+(gp_ntfs.c [1.3]: 2000/03/18 01:15:16 lpd)
+ - For printer devices, a non-null definition for OutputFile was
+required even on platforms that had a default printer (as implemented by
+gp_open_printer for that platform). (gp_os9.c [1.2], gp_unix.c [1.2],
+gp_vms.c [1.2]: 2000/03/18 01:45:16 lpd)
+
+In ansi2knr, adds user-contributed support for concatenated string literals
+and character constants, and fixes for a couple of minor bugs.
+(ansi2knr.c [1.2]: 2000/03/10 03:16:17 lpd)
+
+Updates the pf2afm.ps utility with a revised version from its authors.
+(lib/pf2afm.ps [1.2]: 2000/03/10 03:35:37 lpd)
+
+Adds a new eps2eps utility analogous to ps2ps. (lib/eps2eps [1.1],
+lib/eps2eps.bat [1.1]: 2000/03/10 07:51:55 lpd)
+
+Removes a temporary file that was included in the fileset by mistake.
+(lib/history [1.2]: 2000/03/10 08:18:36 lpd)
+
+Changes the ps2pdf MS Windows / MS-DOS scripts to use temporary files to
+avoid the absurdly low limits on the length of a command line and the total
+size of environment variable definitions. (lib/ps2pdf.bat [1.2],
+lib/ps2pdf12.bat [1.3], lib/ps2pdf13.bat [1.3], lib/ps2pdfwr.bat [1.2],
+lib/ps2pdfxx.bat [1.1]: 2000/03/14 20:20:20 lpd)
+
+On Windows, puts stdout into binary mode as well as stdin, to allow piping
+printer output through stdout (not a good idea, but it should be supported
+as well as on other platforms). (gp_ntfs.c [1.2]: 2000/03/17 06:22:59 lpd)
+
+</pre><h2><a name="6.01 Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - When converting PostScript to PDF, selecting /Bicubic as an image
+DownsampleType caused an error instead of defaulting to /Average.
+(gdevpsdf.h [1.2], gdevpsdi.c [1.2], gdevpsdp.c [1.2]: 2000/03/10 04:16:09
+lpd)
+ - The mswinpr2 driver didn't handle setting BitsPerPixel to the same
+value when the device was already open, possibly causing an error on restore
+or grestore. (gdevwpr2.c [1.2]: 2000/03/10 04:26:07 lpd)
+ - When operating in buffered mode (MaxBitmap > 0), the X driver
+sometimes failed to copy all of the updated area to the screen.
+(gdevx.c [1.2], gdevx.h [1.2], gdevxini.c [1.2], gdevxxf.c [1.2]: 2000/03/10
+06:56:27 lpd)
+ - The [e]pswrite driver produced invalid output if the input file
+didn't end with a showpage. Also cleans up some formatting and removes a
+redundant test. (gdevps.c [1.2]: 2000/03/10 07:44:27 lpd)
+ - Fixes a problem producing too much black in the output; also adds
+support for 5 new printers (H-P Color DeskJet 690, H-P DesignJet 750, and
+Epson Stylus Color 200). Note that this is user-contributed code.
+(gdevupd.c [1.2], lib/bjc610a0.upp [1.2], lib/bjc610a1.upp [1.2],
+lib/bjc610a2.upp [1.2], lib/bjc610a3.upp [1.2], lib/bjc610a4.upp [1.2],
+lib/bjc610a5.upp [1.2], lib/bjc610a6.upp [1.2], lib/bjc610a7.upp [1.2],
+lib/bjc610a8.upp [1.2], lib/bjc610b1.upp [1.2], lib/bjc610b2.upp [1.2],
+lib/bjc610b3.upp [1.2], lib/bjc610b4.upp [1.2], lib/bjc610b6.upp [1.2],
+lib/bjc610b7.upp [1.2], lib/bjc610b8.upp [1.2], lib/cdj550.upp [1.2],
+lib/cdj690.upp [1.1], lib/cdj690ec.upp [1.1], lib/dnj750c.upp [1.1],
+lib/dnj750m.upp [1.1], lib/ras32.upp [1.2], lib/stc.upp [1.2],
+lib/stc1520h.upp [1.2], lib/stc2.upp [1.2], lib/stc200_h.upp [1.1],
+lib/stc2_h.upp [1.2], lib/stc2s_h.upp [1.2], lib/stc500p.upp [1.2],
+lib/stc500ph.upp [1.2], lib/stc600ih.upp [1.2], lib/stc600p.upp [1.2],
+lib/stc600pl.upp [1.2], lib/stc800ih.upp [1.2], lib/stc800p.upp [1.2],
+lib/stc800pl.upp [1.2], lib/stc_h.upp [1.2], lib/stc_l.upp [1.2],
+lib/stcany.upp [1.2]: 2000/03/16 02:01:36 lpd)
+ - The X driver's algorithm for deciding when to update the screen
+was changed several times between 5.50 and 6.0, and one of the more recent
+changes caused it to copy many more pixels to the screen than necessary if
+the file was making marks on the page in widely separated places.
+(gdevx.c [1.3]: 2000/03/17 07:35:43 lpd)
+ - In the X driver, the full-page buffer controlled by -dMaxBitmap=
+wasn't allocated with a stable allocator, possibly leading to memory access
+errors if save/restore were used. (gdevxini.c [1.3]: 2000/03/18 04:11:59
+lpd)
+
+Updates the Brother HL7xx drivers with a new user-contributed version, plus
+a couple of minor fixes. (gdevhl7x.c [1.2]: 2000/03/10 07:33:44 lpd)
+
+Enhances the [e]pswrite driver to handle Indexed color spaces over Device
+color spaces, only with the standard Decode. (gdevps.c [1.3]: 2000/03/10
+07:45:50 lpd)
+
+Adds the ability to set the ProcessColorModel of the pdfwrite device to
+/DeviceGray, /DeviceRGB, or /DeviceCMYK. This affects the color space used
+for fill, stroke, text, and imagemask, and for images that (for whatever
+reason) can't be written in their specified color space. Note that this is a
+short-term fix: pdfwrite should output colors in the color space in which
+they were specified. However, a proper fix will require more significant
+architectural changes. (gdevpsdf.c [1.2], gdevpsdf.h [1.3]: 2000/03/16
+01:21:24 lpd)
+
+Adds two more user-contributed 'uniprint' printer parameter sets: Epson
+Stylus Color 640, and a generic Epson Stylus Color in high resolution mode
+(720x720 dpi). (lib/stc640p.upp [1.1], lib/stcany_h.upp [1.1]: 2000/03/16
+02:03:40 lpd)
+
+</pre><h2><a name="6.01 PDF writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - In-line images emitted an extra 'q' (gsave), causing the CTM to
+become incorrect, entries to pile up on the dictionary stack, and an
+invalidrestore error to occur at the end of the page. (gdevpdfi.c [1.2]:
+2000/03/10 03:47:37 lpd)
+ - The change in 5.99 to work around Acrobat Reader's 32K limit on
+user space coordinates caused all 0-width rectangles to disappear, which had
+major effects on some files. (gdevpdfd.c [1.2]: 2000/03/10 03:48:10 lpd)
+ - Incrementally downloaded TrueType fonts produced truncated Widths
+tables in the output. We have patched this with a ******HACK****** that
+causes such fonts to be converted to bitmaps: the correct fix (to delay
+determining the range of valid characters until the font is written) is too
+large a change to make in a bug fix release. (gdevpdft.c [1.2]: 2000/03/10
+03:48:48 lpd)
+
+Adds the ability to set the ProcessColorModel of the pdfwrite device to
+/DeviceGray, /DeviceRGB, or /DeviceCMYK. This affects the color space used
+for fill, stroke, text, and imagemask, and for images that (for whatever
+reason) can't be written in their specified color space. Note that this is a
+short-term fix: pdfwrite should output colors in the color space in which
+they were specified. However, a proper fix will require more significant
+architectural changes. (gdevpdf.c [1.2], gdevpdfd.c [1.3], gdevpdfi.c [1.3],
+gdevpdfp.c [1.2], gdevpdft.c [1.3], gdevpdfu.c [1.2], gdevpdfx.h [1.2]:
+2000/03/16 01:21:24 lpd)
+
+</pre><h2><a name="6.01 Interpreter (PDF)"></a>Interpreter (PDF)</h2><pre>
+
+Fixes problems:
+ - When interpreting a PDF file, the Install page device procedure
+got more and more deeply nested after every page, eventually causing an
+execstackoverflow. (lib/pdf_main.ps [1.2]: 2000/03/10 03:56:11 lpd)
+ - When interpreting a PDF file, text drawing operators didn't reset
+the text position, so strings could get displayed on top of each other. (bug
+introduced by a fix in 5.98) (lib/pdf_ops.ps [1.2]: 2000/03/10 03:57:03 lpd)
+ - When interpreting a PDF file, substituted small-cap fonts were
+created with incorrect scaling. (lib/pdf_font.ps [1.2]: 2000/03/10 03:57:50
+lpd)
+
+Cleans up some formatting. (lib/pdf_base.ps [1.2]: 2000/03/10 03:58:14 lpd)
+
+</pre><h2><a name="6.01 Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - There were extraneous 'def' commands that caused definitions to be
+made in the wrong dictionary. (lib/gs_ttf.ps [1.2]: 2000/03/10 03:31:39 lpd)
+ - If an error occurred while loading a font, it wouldn't produce an
+error message. (This is a 'fix' of a 'fix' of a 'fix': it might well break
+something else.) (lib/gs_type1.ps [1.2]: 2000/03/10 03:37:14 lpd)
+ - When reading the strings of a binary object sequence, having to
+get more data from a procedure-based stream sometimes caused a syntaxerror.
+Fix: If the reserved (0) field in binary objects or binary object sequences
+was not 0, no syntaxerror occurred. (iscanbin.c [1.2]: 2000/03/10 03:38:50
+lpd)
+ - The code for handling execstackoverflow errors didn't cut back the
+stack correctly, possibly causing invalid memory accesses if an incorrect
+attempt was made to run a cleanup procedure. (interp.c [1.2]: 2000/03/10
+04:04:38 lpd)
+ - Writing of dictionaries in binary object output, a non-standard
+extension, was enabled by default, and also had to be enabled at startup
+time if it was ever going to be used. Fix: Binary error messages caused an
+error if the command wasn't of a type that printobject could handle. We now
+do what the Adobe implementations appear to do in this case, namely, convert
+the object with cvs. (lib/gs_btokn.ps [1.2]: 2000/03/10 04:27:31 lpd)
+ - CloseSource and CloseTarget were effectively ignored for Flate and
+LZW filters with a Predictor, and for the DCT filters. (ifilter.h [1.2],
+zfdctd.c [1.2], zfdcte.c [1.2], zfdecode.c [1.2], zfilter.c [1.2],
+zfilter2.c [1.2]: 2000/03/10 04:32:51 lpd)
+ - findlibfile didn't handle %iodevice% prefixes correctly.
+(zfile.c [1.2]: 2000/03/10 04:35:08 lpd)
+ - fileposition didn't give an error for filters or non-seekable
+streams. (zfileio.c [1.2]: 2000/03/10 04:35:53 lpd)
+ - Images with input from a file or filter demanded 1 byte of data
+too many, sometimes causing the last line of the image to be dropped. (bug
+probably introduced in 6.0) (zimage.c [1.2]: 2000/03/10 04:37:02 lpd)
+ - The check for a show within a cshow procedure for a CID font was
+wrong. Fix: Character widths in CIDFontType 0 fonts were ignored (!). Adds a
+.glyphwidth operator to support correct handling of character widths for CID
+fonts. Adds a glyphwidth procedure to the library, like glyphshow and
+glyphpath, in order to support correct handling of widths for CID fonts.
+(ichar.h [1.2], lib/gs_cidfn.ps [1.2], zchar.c [1.2], zcharx.c [1.2]:
+2000/03/10 04:41:47 lpd)
+ - resourcestatus for fonts was broken. (lib/gs_res.ps [1.2]:
+2000/03/10 04:54:15 lpd)
+ - Fixes incorrect documentation of several procedures.
+(lib/gs_fonts.ps [1.2]: 2000/03/10 07:00:28 lpd)
+ - The %ram% IODevice was defined, but should not be (it represents a
+RAM-based file system, which Ghostscript does not provide). Fix: The type of
+the %null% IODevice was /FileSystem rather than /Special. (ziodev2.c [1.2]:
+2000/03/10 07:02:07 lpd)
+ - Directly-loaded TrueType fonts (including embedded TrueType fonts
+in PDF files) could get confused with each other in the cache, because their
+XUIDs were based on the font checksum field, which some fonts don't have set
+correctly. (lib/gs_ttf.ps [1.3]: 2000/03/16 07:38:07 lpd)
+
+Adds a new example file, a 3-D synthetic image. (examples/doretree.ps [1.1]:
+2000/03/10 04:00:45 lpd)
+
+Adds implementations of the devforall, devstatus, and diskonline
+compatibility operators. (lib/gs_statd.ps [1.2]: 2000/03/10 04:01:55 lpd)
+
+Some Adobe CIDFonts include a line /Setup /cid_Setup load def that
+apparently is intended only to prevent the fonts from being loaded by a
+standard PostScript interpreter (as opposed to ATM or a special font
+loader), since cid_Setup is not defined anywhere and Setup is never
+referenced; this change adds a dummy definition of cid_Setup to work around
+this. (lib/gs_cidfn.ps [1.3]: 2000/03/10 04:53:25 lpd)
+
+Updates the version # to 6.01, and the version date. (lib/gs_init.ps [1.2]:
+2000/03/10 17:18:29 lpd)
+
+Changes the default undercolor removal and black generation functions back
+from f(k) = k to f(k) = 0. This fixes some, but not all, of the reported
+problems with color inkjet output in 6.0. (lib/gs_init.ps [1.3]: 2000/03/10
+18:47:31 lpd)
+
+On Windows, puts stdout into binary mode as well as stdin, to allow piping
+printer output through stdout (not a good idea, but it should be supported
+as well as on other platforms). (dwmainc.cpp [1.2]: 2000/03/17 06:22:59 lpd)
+
+</pre><h2><a name="6.01 Streams"></a>Streams</h2><pre>
+
+Changes the sbuf_min_left macro to a procedure for readability and in
+preparation for later revision. (stream.c [1.2], stream.h [1.2]: 2000/03/10
+03:40:13 lpd)
+
+</pre><h2><a name="6.01 Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - (%os%) currentdevparams didn't return (fixed) values for
+InitializeAction, Mounted, Removable, Searchable, SearchOrder, and
+Writeable, or (meaningful) values for BlockSize, Free, and LogicalSize.
+Currently, the latter values are dummies. (gsiodev.c [1.2]: 2000/03/10
+03:43:06 lpd)
+ - The terminating $ on the $Id: line in gsmalloc.c was missing, and
+dwuninst.rc lacked a $Id: line. (gsmalloc.c [1.2]: 2000/03/10 03:44:33 lpd)
+ - RasterOps with source transparency = 0, texture transparency = 1
+didn't match the (very peculiar) H-P specification even if
+TRANSPARENCY_PER_H_P was defined. (gdevdrop.c [1.2], gdevmrop.h [1.2],
+gsropt.h [1.2]: 2000/03/10 04:06:15 lpd)
+ - The prototype for gs_exit() was not included even though gs_exit()
+was called. Fix: A cast discarded const unnecessarily. (gsalloc.c [1.2]:
+2000/03/10 04:08:23 lpd)
+ - The type of the %pipe% IODevice was /FileSystem, whereas it should
+be /Special. (gdevpipe.c [1.2]: 2000/03/10 04:13:57 lpd)
+ - An incorrectly formatted procedure couldn't be converted correctly
+by ansi2knr. (gxidata.c [1.2]: 2000/03/10 04:30:58 lpd)
+ - The check for a show within a cshow procedure for a CID font was
+wrong. Fix: Character widths in CIDFontType 0 fonts were ignored (!). Adds a
+.glyphwidth operator to support correct handling of character widths for CID
+fonts. Adds a glyphwidth procedure to the library, like glyphshow and
+glyphpath, in order to support correct handling of widths for CID fonts.
+(gschar.c [1.2], gschar.h [1.2], gstext.c [1.2], gstext.h [1.2]: 2000/03/10
+04:41:47 lpd)
+ - The description of the value returned by code_map_decode_next in
+*pchr was incorrect. (documentation bug only) (gsfcmap.c [1.2]: 2000/03/10
+07:03:09 lpd)
+ - Fixes a problem producing too much black in the output; also adds
+support for 5 new printers (H-P Color DeskJet 690, H-P DesignJet 750, and
+Epson Stylus Color 200). Note that this is user-contributed code.
+(gsargs.h [1.2]: 2000/03/16 02:01:36 lpd)
+ - The code for Axial shadings incorrectly assumed that if the
+shading axis was horizontal or vertical in user space, it was also
+horizontal or vertical in device space: this caused incorrect results when
+the CTM wasn't orthogonal. (gxshade1.c [1.2]: 2000/03/17 08:17:55 lpd)
+ - For printer devices, a non-null definition for OutputFile was
+required even on platforms that had a default printer (as implemented by
+gp_open_printer for that platform). (gp.h [1.2], gsdevice.c [1.2]:
+2000/03/18 01:45:16 lpd)
+
+Clears the glyf and loca offsets in TrueType fonts that lack these tables,
+so that clients who care can tell whether the font is being downloaded
+incrementally. (gstype42.c [1.2]: 2000/03/10 03:45:29 lpd)
+
+Changes a few macro definitions to work around over-zealous compiler
+warnings. (gstype1.c [1.2], gstype2.c [1.2], gxtype1.h [1.2]: 2000/03/10
+04:29:37 lpd)
+
+Changes the default undercolor removal and black generation functions back
+from f(k) = k to f(k) = 0. This fixes some, but not all, of the reported
+problems with color inkjet output in 6.0. (gxdcconv.c [1.2]: 2000/03/10
+18:47:31 lpd)
+
+<hr>
+
+<h1><a name="Version6.0"></a>Version 6.0 (2000-02-03)</h1>
+
+This is the first public release since 5.50. See <a href="Current.htm">the
+release summary</a> for information about new capabilities and known
+problems.
+
+<h2><a name="6.0_Documentation"></a>Documentation</h2>
+
+Documents the fact that the plane_depths of a gx_image_enum structure may
+vary, and that planes_wanted procedure of a gx_image_enum must return false
+if the depths *or* widths can change. (gxiparam.h)
+
+Documents the fact that a wanted plane's wanted status, width, or depth can
+only be changed by a call of plane_data that provides data for that plane.
+(gxiparam.h)
+
+Documents the change in the handling of the pthreads library.
+(doc/Make.htm)
+
+Documents the fact that setting parameters for the DCTEncode filter in
+ps2pdf causes a crash. (doc/Ps2pdf.htm)
+
+Documents another bug in the MIPSpro 7.x / IRIX 6.5.x compilers, with
+isave.c. (doc/Make.htm)
+
+Corrects Russell Lang's e-mail address. (doc/New-user.htm)
+
+Documents the new image operator test file and the pdfeof file.
+(doc/Psfiles.htm)
+
+Documents the 'w' argument for image_render procedures. (gxiclass.h)
+
+Adds a little more checking to the release process. (doc/Release.htm)
+
+Documents the return values from the font build_char procedure. (gxfont.h)
+
+Documents the fact that the free 'zip' program is needed to build the
+self-extracting Windows executable, as well as WinZipSE. (doc/Make.htm,
+msvc32.mak, winint.mak)
+
+Adds references to several new free fonts. (doc/Fonts.htm)
+
+Documents an important invariant for streams. (stream.h)
+
+Adds a reference for user-supported Watcom / GNU make makefiles.
+(doc/Make.htm, doc/New-user.htm)
+
+Documents the dependence of gs_ttf.ps on some of the gs_*_e.ps files.
+(lib/gs_ttf.ps)
+
+Documents how to make self-extracting Windows executables.
+(doc/Release.htm)
+
+Adds a number of new user-contributed man pages. (unixinst.mak, man/gslp.1,
+man/wftopfa.1, man/printafm.1, man/pfbtopfa.1, man/font2c.1, man/dvipdf.1,
+man/ps2pdfwr.1, man/gsnd.1, man/pf2afm.1, man/ps2pdf.1)
+
+<h2><a name="6.0_Procedures"></a>Procedures</h2>
+
+Fixes problems:
+ - Building on BSDI didn't work. The simplest way to fix this was to
+change the linking of the pthreads library on Unix platforms to be included
+in STDLIBS rather than the "sync" implementation. (fix contributed by a
+user) (lib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak)
+ - Once again, some runtime files weren't installed. (unixinst.mak)
+ - Building the self-extracting executable didn't work. (winint.mak)
+
+Updates the user-contributed all-architectures makefile. (all-arch.mak)
+
+<h2><a name="6.0_Utilities"></a>Utilities</h2>
+
+Fixes problems:
+ - A needed #include was missing. (geninit.c)
+ - There were signed/unsigned char mismatches. (genht.c, geninit.c)
+ - The MacOS compiler imposes a 32K limit on the size of a stack
+frame: we changed the code to use malloc/free. (geninit.c)
+
+Removes an unnecessary variable. (echogs.c)
+
+Adds a file that attempts to test the image operators exhaustively.
+(lib/image-qa.ps, unixinst.mak)
+
+Enhances the prfont.ps utility to print CIDFonts. (lib/prfont.ps)
+
+Adds a utility file that patches the PDF interpreter to allow garbage after
+the %%EOF (or the %%EOF to be missing completely). (lib/pdfeof.ps)
+
+<h2><a name="6.0_Drivers"></a>Drivers</h2>
+
+Fixes problems:
+ - The X driver compared too many bits of color value, leading to
+unnecessary halftoning. (bug introduced by a fix in 5.99) (gdevxcmp.c)
+ - Output from the pswrite driver got a dictfull error on Level 1
+printers. (gdevps.c)
+ - Anti-aliasing had stopped working on MS Windows and OS/2. (bug
+probably introduced in 5.65) (gdevmswn.c, gdevpm.c)
+
+<h2><a name="6.0_Platforms"></a>Platforms</h2>
+
+Adds a conditional definition of PTHREAD_CREATE_DETACHED for old versions of
+the pthreads library. (gp_psync.c)
+
+Updates the Microsoft Visual C++ library makefile for VC++ 6. (msvclib.mak)
+
+Updates some copyright dates. (winint.mak, dwsetup.rc)
+
+<h2><a name="6.0_Fonts"></a>Fonts</h2>
+
+Updates the URW fonts to include the expanded Adobe character set, including
+many Eastern European accented characters. (doc/New-user.htm)
+
+Removes a 'readonly' that inconvenienced the authors of ttf2pf.
+(lib/gs_ttf.ps)
+
+<h2><a name="6.0_PDF_writer"></a>PDF writer</h2>
+
+Fixes problems:
+ - The Dest key was deleted from GoTo and GoToR link annotation
+pdfmarks. (gdevpdfm.c)
+ - {name} references were substituted even in stream data for the
+/PUT pdfmark. (gdevpdfm.c)
+ - The revision number was sometimes printed incorrectly if its
+fraction part was zero. (gdevpdf.c)
+ - Embedded Multiple Master font instances weren't identified as
+MMType1 rather than Type1. (gdevpdff.h, gdevpdff.c, gdevpdft.c, gdevpdfw.c)
+ - The test against MaxSubsetPct was incorrect when the percentages
+were equal. (gdevpdfw.c)
+ - Font registrations weren't removed when the device was closed.
+(gdevpdff.h, gdevpdfx.h, gdevpdff.c, gdevpdfw.c)
+ - Multiple /OBJ pdfmarks with the same name caused an error. For
+Distiller compatibility, we now allow this if the type is the same, even
+though the pdfmark specification doesn't say anything about this being
+legal. (gdevpdfm.c)
+
+Removes an unnecessary variable. (gdevpdff.c, gdevpdfr.c)
+
+Disables embedding Multiple Master font instances, since Acrobat Reader
+doesn't accept what appear to be correct output and we don't have time
+before the release to track down the problem. (gdevpdft.c)
+
+<h2><a name="6.0_Interpreter_PDF"></a>Interpreter (PDF)</h2>
+
+Factors some code to allow patching the PDF reader to allow garbage after
+the %%EOF (or the %%EOF to be missing completely). (lib/pdf_main.ps)
+
+<h2><a name="6.0_Interpreter"></a>Interpreter</h2>
+
+Fixes problems:
+ - Type 1 fonts with non-standard OtherSubrs had stopped working.
+(bug introduced since 5.60) (zchar1.c)
+ - usecmap didn't work. (lib/gs_cmap.ps)
+ - The glyph_info procedure for Type 1 fonts didn't take Metrics[2]
+or CDevProc into account. (zchar1.c, zfont1.c)
+ - The multiple-data-source case of images was broken. (bug
+introduced in 5.99) (zimage.c)
+ - If a page device Install procedure caused an error, things could
+be left in an inconsistent state. (lib/gs_setpd.ps)
+ - Using a DeviceN color space could access uninitialized data in a
+color value. (zcsdevn.c)
+ - DeviceN images with procedure data sources were broken.
+(zimage.c)
+ - Images with a procedure data source could terminate prematurely if
+their processing was interrupted. (zimage.c)
+ - The garbage collector only marked half the name table sub-tables,
+and attempted to mark an equal number of invalid pointers, leading to
+invalid accesses or memory corruption. (iname.c)
+
+Removes an unused variable. (zmisc.c)
+
+<h2><a name="6.0_Streams"></a>Streams</h2>
+
+Fixes problems:
+ - sgets didn't reset the cursor pointers, so sgets into a client
+buffer followed by sseek (for some kinds of streams, including files) could
+get confused. (stream.c)
+
+<h2><a name="6.0_Library"></a>Library</h2>
+
+Fixes problems:
+ - A 'const' qualifier was omitted, leading to a type mismatch.
+(gxclrast.c)
+ - The revision number was sometimes printed incorrectly if its
+fraction part was zero. (gsmisc.c)
+ - gs_image_next returned the wrong value in *pused if it incremented
+the plane number. (bug introduced in 5.99) (gsimage.c)
+ - Only the last of the data_x and raster values in the local
+'planes' array in gs_image_next_planes were initialized. (bug introduced in
+5.99) (gsimage.c)
+ - The multiple-data-source case of images was broken. (bug
+introduced in 5.99) (gsimage.h, gsimage.c)
+ - ImageType 3 images with unequal scaling for the mask and data
+didn't work. (We thought they once did, but it appears they never have.)
+(gximage3.c)
+ - Images with 12-bit samples treated a Decode entry of [1 0] the
+same as [0 1]. (Other, general Decode entries worked correctly.)
+(gxipixel.c)
+ - ImageType 3 images didn't work if processing was ever interrupted
+for remapping a color. (gximage3.c)
+ - Images in DeviceN color spaces with 12-bit samples didn't work.
+(gxi12bit.c, gxidata.c)
+ - Images in DeviceN color spaces could fail to render properly
+because the interruption of rendering left a half-built entry in an internal
+cache. (gxi12bit.c, gxicolor.c)
+ - Images with non-idempotent RasterOps in 1-component DeviceN color
+spaces didn't render properly, because the same pixel was rendered multiple
+times after a color remapping interruption. (gximono.c)
+ - The fast case of masked images caused a crash if invoked without
+an imager state. (gximono.c)
+ - Flushing buffered image data could cause coordinate bookkeeping
+to get out of sync. (gxidata.c)
+ - ImageType 3, InterleaveType 2 images sometimes failed to render
+the last row. (gximage3.c)
+ - The fix in 5.88 for resizing large objects had a bug itself.
+(gsalloc.c)
+ - Whan banding, if a client supplied more data than necessary for an
+image, the client was told (incorrectly) that all of the data was used.
+(fix from Artifex) (gxclimag.c)
+ - Null patterns caused a crash. (bug probably introduced by changes
+to support PatternType 2) (gspcolor.c)
+ - On hand-initialized memory devices where line_ptrs[0] != base,
+monobit RasterOps could cause invalid or stray memory accesses. (gdevmr1.c)
+
+Removes an unnecessary variable. (gdevppla.c, gsfont.c)
+
+Adds the ability to call a specified procedure when unregistering
+notification, needed for removing PDF font registrations. (gsnotify.h,
+gsnotify.c)
+
+Updates the copyright year. (gscdef.c)
+
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 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>
diff --git a/Master/xemtex/doc/ghostscript/History7.htm b/Master/xemtex/doc/ghostscript/History7.htm
new file mode 100644
index 00000000000..7e71a4f3b3f
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History7.htm
@@ -0,0 +1,5109 @@
+<!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 7.n</title>
+<!-- $Id: History7.htm,v 1.5.2.17.2.8 2003/05/17 15:00:53 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] ================================================== -->
+
+<table width="100%" border="0">
+<tr><th align="center" bgcolor="#CCCC00"><font size=6>History of Ghostscript versions 7.xx</font>
+</table>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version7.07">Version 7.07 (2003-05-17)</a>
+<ul>
+<li><a href="#7.07_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.07-Documentation">Documentation</a>,
+ <a href="#7.07-Procedures">Procedures</a>,
+ <a href="#7.07-Utilities">Utilities</a>,
+ <a href="#7.07-Drivers">Drivers</a>,
+ <a href="#7.07-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.07-Interpreter">Interpreter</a>,
+ <a href="#7.07-Library">Library</a>,
+ <a href="#7.07-Other">Other</a>
+</ul>
+<li><a href="#Version7.06">Version 7.06 (2003-04-01)</a>
+<ul>
+<li><a href="#7.06_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.06-Documentation">Documentation</a>,
+ <a href="#7.06-Procedures">Procedures</a>,
+ <a href="#7.06-Utilities">Utilities</a>,
+ <a href="#7.06-Drivers">Drivers</a>,
+ <a href="#7.06-PDF_writer">PDF writer</a>,
+ <a href="#7.06-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.06-Interpreter">Interpreter</a>,
+ <a href="#7.06-Streams">Streams</a>,
+ <a href="#7.06-Library">Library</a>,
+ <a href="#7.06-Other">Other</a>
+</ul>
+<li><a href="#Version7.05">Version 7.05 (2002-04-22)</a>
+<ul>
+<li><a href="#7.05_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.05-Documentation">Documentation</a>,
+ <a href="#7.05-Procedures">Procedures</a>,
+ <a href="#7.05-Utilities">Utilities</a>,
+ <a href="#7.05-Drivers">Drivers</a>,
+ <a href="#7.05-PDF_writer">PDF writer</a>,
+ <a href="#7.05-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.05-Interpreter">Interpreter</a>,
+ <a href="#7.05-Streams">Streams</a>,
+ <a href="#7.05-Library">Library</a>,
+ <a href="#7.05-Other">Other</a>
+</ul>
+<li><a href="#Version7.04">Version 7.04 (2002-01-30)</a>
+<ul>
+<li><a href="#7.04_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.04-Documentation">Documentation</a>,
+ <a href="#7.04-Procedures">Procedures</a>,
+ <a href="#7.04-Utilities">Utilities</a>,
+ <a href="#7.04-Drivers">Drivers</a>,
+ <a href="#7.04-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.04-Interpreter">Interpreter</a>,
+ <a href="#7.04-Library">Library</a>,
+ <a href="#7.04-Other">Other</a>
+</ul>
+<li><a href="#Version7.03">Version 7.03 (2001-10-20)</a>
+<ul>
+<li><a href="#7.03_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.03-Documentation">Documentation</a>,
+ <a href="#7.03-Procedures">Procedures</a>,
+ <a href="#7.03-Utilities">Utilities</a>,
+ <a href="#7.03-Drivers">Drivers</a>,
+ <a href="#7.03-PDF_writer">PDF writer</a>,
+ <a href="#7.03-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.03-Interpreter">Interpreter</a>,
+ <a href="#7.03-Streams">Streams</a>,
+ <a href="#7.03-Library">Library</a>,
+ <a href="#7.03-Other">Other</a>
+</ul>
+<li><a href="#Version7.02">Version 7.02 (2001-09-22)</a>
+<ul>
+<li><a href="#7.02_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.02-Documentation">Documentation</a>,
+ <a href="#7.02-Procedures">Procedures</a>,
+ <a href="#7.02-Utilities">Utilities</a>,
+ <a href="#7.02-Drivers">Drivers</a>,
+ <a href="#7.02-PDF_writer">PDF writer</a>,
+ <a href="#7.02-PDF_Interpreter">PDF Interpreter</a>,
+ <a href="#7.02-Interpreter">Interpreter</a>,
+ <a href="#7.02-Streams">Streams</a>,
+ <a href="#7.02-Library">Library</a>,
+ <a href="#7.02-Other">Other</a>
+</ul>
+<li><a href="#Version7.00">Version 7.00 (2001-04-08)</a>
+<ul>
+<li><a href="#7.00_Incompatible_changes">Incompatible changes</a>,
+ <a href="#7.00-Documentation">Documentation</a>,
+ <a href="#7.00-Procedures">Procedures</a>,
+ <a href="#7.00-Utilities">Utilities</a>,
+ <a href="#7.00-PDF_writer">PDF writer</a>,
+ <a href="#7.00-Interpreter">Interpreter</a>,
+ <a href="#7.00-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 7.xx.
+For earlier versions, see the the history documents:
+
+<blockquote>
+<a href="History6.htm">History of Ghostscript versions 6.n</a><br>
+<a href="History5.htm">History of Ghostscript versions 5.n</a><br>
+<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,
+PDF writer (included under Drivers through fileset 5.88), 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>
+
+<h1><a name="Version7.07"></a>Version 7.07 (2003-05-17)</h1>
+
+<p>This is the third release of the stable 7.0x series under the GNU
+GPL. It includes an important security update; upgrading is strongly
+recommended.</p>
+
+<h3><a name="7.07_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version. Users of the 6.5x versions of GNU
+Ghostscript will want to check the History for a complete list of changes since that version.
+
+<pre>
+
+
+
+<h2><a name="7.07-Documentation"></a>Documentation</h2><pre>
+
+Increment the version number after release. (doc/News.htm [1.90.2.18.2.6]:
+2003/04/08 11:05:47 giles)
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (doc/Readme.htm [1.31.2.16.2.5]: 2003/04/12 14:02:38
+giles)
+
+Update the version and data for the 7.07 release.
+(doc/API.htm [1.11.2.13.2.6], doc/C-style.htm [1.21.2.11.2.5],
+doc/DLL.htm [1.15.2.11.2.5], doc/Develop.htm [1.47.2.18.2.6],
+doc/Devices.htm [1.34.2.15.2.6], doc/Drivers.htm [1.21.2.11.2.5],
+doc/Fonts.htm [1.22.2.13.2.6], doc/Helpers.htm [1.17.2.11.2.5],
+doc/History1.htm [1.13.2.11.2.5], doc/History2.htm [1.13.2.11.2.6],
+doc/History3.htm [1.13.2.11.2.6], doc/History4.htm [1.13.2.11.2.6],
+doc/History5.htm [1.15.2.11.2.6], doc/History6.htm [1.30.2.11.2.6],
+doc/History7.htm [1.5.2.17.2.7], doc/Htmstyle.htm [1.18.2.11.2.5],
+doc/Install.htm [1.26.2.13.2.6], doc/Issues.htm [1.15.2.13.2.5],
+doc/Language.htm [1.34.2.16.2.5], doc/Lib.htm [1.14.2.11.2.5],
+doc/Maintain.htm [1.23.2.12.2.6], doc/Make.htm [1.36.2.19.2.6],
+doc/New-user.htm [1.30.2.14.2.6], doc/News.htm [1.90.2.18.2.7],
+doc/Projects.htm [1.33.2.11.2.6], doc/Ps-style.htm [1.13.2.11.2.5],
+doc/Ps2epsi.htm [1.15.2.12.2.6], doc/Ps2pdf.htm [1.32.2.11.2.5],
+doc/Psfiles.htm [1.22.2.12.2.5], doc/Readme.htm [1.31.2.16.2.6],
+doc/Release.htm [1.40.2.23.2.6], doc/Source.htm [1.13.2.11.2.5],
+doc/Unix-lpr.htm [1.13.2.11.2.5], doc/Use.htm [1.33.2.22.2.6],
+doc/Xfonts.htm [1.13.2.11.2.5], doc/gs-vms.hlp [1.12.2.10.2.5],
+man/dvipdf.1 [1.10.2.9.2.5], man/font2c.1 [1.10.2.9.2.5],
+man/gs.1 [1.10.2.10.2.5], man/gslp.1 [1.10.2.9.2.5],
+man/gsnd.1 [1.10.2.9.2.5], man/pdf2dsc.1 [1.10.2.9.2.5],
+man/pdf2ps.1 [1.12.2.9.2.5], man/pdfopt.1 [1.10.2.9.2.5],
+man/pf2afm.1 [1.10.2.9.2.5], man/pfbtopfa.1 [1.11.2.9.2.5],
+man/printafm.1 [1.10.2.9.2.5], man/ps2ascii.1 [1.10.2.9.2.5],
+man/ps2epsi.1 [1.10.2.10.2.5], man/ps2pdf.1 [1.14.2.11.2.5],
+man/ps2pdfwr.1 [1.13.2.10.2.5], man/ps2ps.1 [1.17.2.9.2.5],
+man/wftopfa.1 [1.10.2.9.2.5]: 2003/05/17 14:38:59 giles)
+
+Update the release notes. (doc/News.htm [1.90.2.18.2.8]: 2003/05/17 14:44:22
+giles)
+
+</pre><h2><a name="7.07-Procedures"></a>Procedures</h2><pre>
+
+Increment the version number after release. (version.mak [1.36.2.9.2.5]:
+2003/04/08 11:05:47 giles)
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (toolbin/3way.tcl [1.3.6.1.2.1],
+toolbin/cvs2hist.py [1.9.2.2.2.1], toolbin/errlist.tcl [1.3.6.1.2.1],
+toolbin/gsindent [1.3.6.1.2.1], toolbin/gsmake.tcl [1.5.6.1.2.1],
+toolbin/gssubst [1.1.4.1.2.1], toolbin/headers.tcl [1.3.6.1.2.1],
+toolbin/leaks.tcl [1.3.6.1.2.1], toolbin/makegnu.tcl [1.3.6.1.2.1],
+toolbin/makeset.tcl [1.10.2.3.2.1], toolbin/many2pdf.tcl [1.1.4.1.2.1],
+toolbin/pdfinflt.ps [1.1.2.1.2.1], toolbin/pre [1.11.2.3.2.1],
+toolbin/precheck.tcl [1.3.6.1.2.1], toolbin/suite.tcl [1.3.6.1.2.1],
+toolbin/tmake.tcl [1.3.6.1.2.1]: 2003/04/12 14:02:39 giles)
+
+Add the bbox device to the default macos shlib build. Bug 686811.
+(macos-mcp.mak [1.3.2.8.2.2]: 2003/04/27 23:50:11 giles)
+
+Add the display device to the default macos shlib build.
+(macos-mcp.mak [1.3.2.8.2.3]: 2003/04/27 23:52:55 giles)
+
+Log message: For the pngalpha device, set the default background color to
+white in the bKGD chunk. Add an option -dBackgroundColor=16#RRGGBB to
+explicitly set the background color. This is needed by a common web browser
+that doesn't correctly support PNG with alpha transparency. DETAILS:
+Programs that don't fully support alpha transparency let libpng convert an
+RGBA image to RGB. The background color used is either provided by the
+program, or in the bKGD chunk, or it falls back to gray. MSIE was defaulting
+to a gray background which is not commonly used on web pages. By writing a
+white bKGD chunk, PNG files will display correctly against a white
+background in MSIE. If a solid color for a web page background is used with
+&lt;body bgcolor="#CCCC00"&gt;, then PNG images appearing on that page would
+need to be created with -dBackgroundColor=16#CCCC00. For textured background
+there is no hope. Microsoft needs to fix Internet Explorer.
+(libpng.mak [1.10.2.3.2.2]: 2003/05/15 10:05:29 ghostgum)
+
+Update the version and data for the 7.07 release.
+(version.mak [1.36.2.9.2.6]: 2003/05/17 14:39:00 giles)
+
+</pre><h2><a name="7.07-Utilities"></a>Utilities</h2><pre>
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (lib/Fontmap.ATB [1.2.6.1.2.1],
+lib/Fontmap.ATM [1.2.6.1.2.1], lib/Fontmap.GS [1.2.6.1.2.1],
+lib/Fontmap.OS2 [1.2.6.1.2.1], lib/Fontmap.SGI [1.2.6.1.2.1],
+lib/Fontmap.Sol [1.2.6.1.2.1], lib/Fontmap.Ult [1.2.6.1.2.1],
+lib/addxchar.ps [1.2.6.1.2.1], lib/align.ps [1.2.6.1.2.1],
+lib/bdftops.ps [1.3.2.2.2.1], lib/caption.ps [1.2.6.1.2.1],
+lib/cid2code.ps [1.3.4.1.2.1], lib/docie.ps [1.2.6.1.2.1],
+lib/errpage.ps [1.2.6.1.2.1], lib/font2c.ps [1.3.2.1.2.1],
+lib/font2pcl.ps [1.2.6.2.2.1], lib/gslp.ps [1.2.6.2.2.1],
+lib/gsnup.ps [1.2.6.1.2.1], lib/image-qa.ps [1.3.2.1.2.1],
+lib/impath.ps [1.3.4.1.2.1], lib/jispaper.ps [1.2.6.1.2.1],
+lib/lines.ps [1.2.6.1.2.1], lib/markhint.ps [1.2.6.1.2.1],
+lib/markpath.ps [1.2.6.1.2.1], lib/packfile.ps [1.2.6.2.2.1],
+lib/pcharstr.ps [1.2.6.1.2.1], lib/pdf2dsc.ps [1.3.4.2.2.1],
+lib/pdfopt.ps [1.10.2.2.2.1], lib/pdfwrite.ps [1.7.2.1.2.1],
+lib/pfbtopfa.ps [1.2.6.1.2.1], lib/ppath.ps [1.2.6.1.2.1],
+lib/pphs.ps [1.3.2.1.2.1], lib/ps2ai.ps [1.2.6.1.2.1],
+lib/ps2ascii.ps [1.3.2.2.2.1], lib/ps2epsi.ps [1.5.2.3.2.1],
+lib/rollconv.ps [1.1.8.1], lib/showchar.ps [1.2.6.1.2.1],
+lib/stcinfo.ps [1.2.6.1.2.1], lib/stcolor.ps [1.2.6.1.2.1],
+lib/stocht.ps [1.3.6.1.2.1], lib/traceimg.ps [1.2.6.2.2.1],
+lib/traceop.ps [1.2.6.1.2.1], lib/type1enc.ps [1.2.6.1.2.1],
+lib/type1ops.ps [1.2.6.1.2.1], lib/uninfo.ps [1.2.6.1.2.1],
+lib/unprot.ps [1.2.6.1.2.1], lib/viewcmyk.ps [1.2.6.2.2.1],
+lib/viewgif.ps [1.2.6.1.2.1], lib/viewjpeg.ps [1.1.6.2.2.1],
+lib/viewmiff.ps [1.2.6.1.2.1], lib/viewpbm.ps [1.2.6.2.2.1],
+lib/viewpcx.ps [1.2.6.2.2.1], lib/viewps2a.ps [1.2.6.1.2.1],
+lib/wftopfa.ps [1.2.6.1.2.1], lib/winmaps.ps [1.2.6.1.2.1],
+lib/wrfont.ps [1.2.6.1.2.1], lib/zeroline.ps [1.2.6.1.2.1]: 2003/04/12
+14:02:38 giles)
+
+Avoid calling a null pgsdll_callback, as can happen with the new client api
+and CHECK_INTERRUPTS. This fix affects primarily MacOS; similar protections
+are already in place for other platforms, although the global was not
+explicitly initialized to null. Also return EOFC in the mac stdio stream
+process if no callback is defined. Closes bug 686768. Also backports some
+code cleanup from HEAD. (gp_mac.c [1.1.4.3.2.2], gp_macio.c [1.2.4.5.2.3]:
+2003/04/12 16:37:26 giles)
+
+Add a missing variable declaration for VMS. Patch from Forrest Cahoon and
+Jouk Jansen. (gp_vms.c [1.7.2.3.2.2]: 2003/04/14 13:58:04 giles)
+
+</pre><h2><a name="7.07-Drivers"></a>Drivers</h2><pre>
+
+Avoid calling a null pgsdll_callback, as can happen with the new client api
+and CHECK_INTERRUPTS. This fix affects primarily MacOS; similar protections
+are already in place for other platforms, although the global was not
+explicitly initialized to null. Also return EOFC in the mac stdio stream
+process if no callback is defined. Closes bug 686768. Also backports some
+code cleanup from HEAD. (gdevmac.c [1.1.4.3.2.2]: 2003/04/12 16:37:26 giles)
+
+In the display device, store the line pointers separately from the bits, so
+that the bits can be placed in special memory (e.g. allocated in video
+memory). Fixes Bug 686780 display_memalloc() asks for too much memory. If
+reopening the display device fails after setting the callback, display an
+error message. Allocate the large display bitmap using a low level allocator
+to avoid exceeding the memory limit of the previously used device stable
+memory allocator. Fixes bugs 686836 "-r doesn't work" and duplicate 686838
+"Ghostscript doesn't do anything". DETAILS: The display memory device and
+the raster including line pointers was allocated using the stable allocator
+of the display device. This had a limit of 1Mbyte, which was exceeded when
+the resolution was greater then 114dpi. This would cause subsequent
+allocations to fail, but it appears that nothing else tried to use this
+allocator after the display device. The display device was changed to
+allocate the line pointers separately to allow the raster to be allocated in
+special memory, e.g. video memory or shared memory. This caused the
+subsequent allocation of the line pointers to fail when resolution exceeded
+114dpi. The modified code now allocates the raster with
+gs_alloc_byte_array_immovable, which allocates directly from the C heap, not
+subject to any memory limit apart from the overall -K limit if specified,
+and is not subject to garbage collection. The normal allocator now has
+sufficient memory to allocate the line pointers without problem. The raster
+pointer is removed from the pointers that are enumerated during garbage
+collection. (gdevdsp.c [1.5.2.5.2.3]: 2003/05/01 10:06:26 ghostgum)
+
+Log message: For the pngalpha device, set the default background color to
+white in the bKGD chunk. Add an option -dBackgroundColor=16#RRGGBB to
+explicitly set the background color. This is needed by a common web browser
+that doesn't correctly support PNG with alpha transparency. DETAILS:
+Programs that don't fully support alpha transparency let libpng convert an
+RGBA image to RGB. The background color used is either provided by the
+program, or in the bKGD chunk, or it falls back to gray. MSIE was defaulting
+to a gray background which is not commonly used on web pages. By writing a
+white bKGD chunk, PNG files will display correctly against a white
+background in MSIE. If a solid color for a web page background is used with
+&lt;body bgcolor="#CCCC00"&gt;, then PNG images appearing on that page would
+need to be created with -dBackgroundColor=16#CCCC00. For textured background
+there is no hope. Microsoft needs to fix Internet Explorer.
+(gdevpng.c [1.4.2.1.2.3]: 2003/05/15 10:05:29 ghostgum)
+
+</pre><h2><a name="7.07-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (lib/pdf_base.ps [1.14.2.1.2.1],
+lib/pdf_draw.ps [1.36.2.2.2.1], lib/pdf_font.ps [1.23.2.6.2.1],
+lib/pdf_main.ps [1.35.2.7.2.3], lib/pdf_ops.ps [1.17.2.2.2.1]: 2003/04/12
+14:02:39 giles)
+
+</pre><h2><a name="7.07-Interpreter"></a>Interpreter</h2><pre>
+
+Increment the version number after release. (lib/gs_init.ps [1.40.2.12.2.2]:
+2003/04/08 11:05:47 giles)
+
+Apply standard FSF license banner to files missed the 7.06 release. Patch
+from Brett Smith. (examples/waterfal.ps [1.3.2.1.2.1],
+lib/gs_agl.ps [1.2.6.1.2.1], lib/gs_btokn.ps [1.5.2.1.2.1],
+lib/gs_ccfnt.ps [1.5.2.1.2.1], lib/gs_ce_e.ps [1.2.6.1.2.1],
+lib/gs_cff.ps [1.10.2.1.2.1], lib/gs_cidcm.ps [1.5.2.2.2.1],
+lib/gs_cidfn.ps [1.18.4.5.2.1], lib/gs_cmap.ps [1.11.2.4.2.1],
+lib/gs_cmdl.ps [1.2.6.1.2.1], lib/gs_css_e.ps [1.2.6.1.2.1],
+lib/gs_dbt_e.ps [1.2.6.1.2.1], lib/gs_diskf.ps [1.2.6.1.2.1],
+lib/gs_dpnxt.ps [1.2.6.1.2.1], lib/gs_dps.ps [1.4.6.1.2.1],
+lib/gs_dps1.ps [1.2.6.1.2.1], lib/gs_dps2.ps [1.3.4.1.2.1],
+lib/gs_dscp.ps [1.4.2.1.2.1], lib/gs_epsf.ps [1.2.6.11.2.3],
+lib/gs_fform.ps [1.2.6.1.2.1], lib/gs_fonts.ps [1.13.2.3.2.1],
+lib/gs_frsd.ps [1.4.6.1.2.1], lib/gs_icc.ps [1.2.2.1.2.1],
+lib/gs_il1_e.ps [1.2.6.1.2.1], lib/gs_il2_e.ps [1.2.6.1.2.1],
+lib/gs_init.ps [1.40.2.12.2.3], lib/gs_kanji.ps [1.2.6.1.2.1],
+lib/gs_ksb_e.ps [1.2.6.1.2.1], lib/gs_l2img.ps [1.2.6.1.2.1],
+lib/gs_lev2.ps [1.7.2.4.2.3], lib/gs_lgo_e.ps [1.3.6.1.2.1],
+lib/gs_lgx_e.ps [1.2.6.1.2.1], lib/gs_ll3.ps [1.10.2.2.2.1],
+lib/gs_mex_e.ps [1.2.6.1.2.1], lib/gs_mgl_e.ps [1.3.6.1.2.1],
+lib/gs_mro_e.ps [1.2.6.1.2.1], lib/gs_pdf_e.ps [1.2.6.1.2.1],
+lib/gs_pdfwr.ps [1.11.2.1.2.1], lib/gs_pfile.ps [1.2.6.1.2.1],
+lib/gs_rdlin.ps [1.2.6.1.2.1], lib/gs_res.ps [1.16.2.2.2.1],
+lib/gs_setpd.ps [1.8.2.2.2.2], lib/gs_statd.ps [1.5.2.2.2.1],
+lib/gs_std_e.ps [1.2.6.1.2.1], lib/gs_sym_e.ps [1.2.6.1.2.1],
+lib/gs_trap.ps [1.3.6.2.2.1], lib/gs_ttf.ps [1.9.2.4.2.1],
+lib/gs_typ32.ps [1.3.2.2.2.1], lib/gs_typ42.ps [1.2.6.1.2.1],
+lib/gs_type1.ps [1.5.2.1.2.1], lib/gs_wan_e.ps [1.2.6.1.2.1],
+lib/gs_wl1_e.ps [1.2.6.1.2.1], lib/gs_wl2_e.ps [1.2.6.1.2.1],
+lib/gs_wl5_e.ps [1.2.6.1.2.1]: 2003/04/12 14:02:38 giles)
+
+Sort the list of devices in the output of 'gs -h' so they're easier to read.
+List the default device separately as it's no longer first. Based on a patch
+from Nelson Beebe. Closes bug 416746. Also correct a warning in argproc().
+(imainarg.c [1.13.2.3.2.2]: 2003/04/12 16:43:14 giles)
+
+In the display device, store the line pointers separately from the bits, so
+that the bits can be placed in special memory (e.g. allocated in video
+memory). Fixes Bug 686780 display_memalloc() asks for too much memory. If
+reopening the display device fails after setting the callback, display an
+error message. Allocate the large display bitmap using a low level allocator
+to avoid exceeding the memory limit of the previously used device stable
+memory allocator. Fixes bugs 686836 "-r doesn't work" and duplicate 686838
+"Ghostscript doesn't do anything". DETAILS: The display memory device and
+the raster including line pointers was allocated using the stable allocator
+of the display device. This had a limit of 1Mbyte, which was exceeded when
+the resolution was greater then 114dpi. This would cause subsequent
+allocations to fail, but it appears that nothing else tried to use this
+allocator after the display device. The display device was changed to
+allocate the line pointers separately to allow the raster to be allocated in
+special memory, e.g. video memory or shared memory. This caused the
+subsequent allocation of the line pointers to fail when resolution exceeded
+114dpi. The modified code now allocates the raster with
+gs_alloc_byte_array_immovable, which allocates directly from the C heap, not
+subject to any memory limit apart from the overall -K limit if specified,
+and is not subject to garbage collection. The normal allocator now has
+sufficient memory to allocate the line pointers without problem. The raster
+pointer is removed from the pointers that are enumerated during garbage
+collection. (idisp.c [1.2.2.2.2.2]: 2003/05/01 10:06:26 ghostgum)
+
+Security fixes. Add detection of %pipe% device when in SAFER mode. Also fix
+detection of 'renamefile' to prevent rename from a file that is not on the
+PermitFileControl list. (zfile.c [1.11.2.4.2.2]: 2003/05/17 14:28:33 ray)
+
+</pre><h2><a name="7.07-Library"></a>Library</h2><pre>
+
+Increment the version number after release. (gscdef.c [1.15.2.4.2.3]:
+2003/04/08 11:05:47 giles)
+
+Update the version and data for the 7.07 release. (gscdef.c [1.15.2.4.2.4]:
+2003/05/17 14:39:00 giles)
+
+</pre><h2><a name="7.07-Other"></a>Other</h2><pre>
+
+Test the optimization compiler flag '-O2' before using it since some vendor
+compilers have different syntax. (Makefile.in [1.1.4.13.2.3],
+configure.ac [1.4.4.12.2.2]: 2003/04/16 13:59:56 giles)
+
+Include the bbox device in the default autoconf build.
+(Makefile.in [1.1.4.13.2.4]: 2003/04/29 18:33:31 giles)
+
+<hr>
+
+<h1><a name="Version7.06"></a>Version 7.06 (2003-04-01)</h1>
+
+<p>This is the second release of the stable 7.0x series under the GNU
+GPL, following one year after the release of 7.00. It includes a number
+of small bug fixes and documentation cleanup to comply with the GNU
+coding guidelines.
+
+<p>Also new in this release is the 'pngalpha' device which produces png output
+with a transparent background (page) color so they can be composited against a
+separate background. The transparency is based only on what parts of the page
+have been drawn and does not support PDF 1.4 trasparent painting.</p>
+
+<h3><a name="7.06_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version. Users of the 6.5x versions of GNU
+Ghostscript will want to check the History for a complete list of changes since that version.
+Authors of drivers with potential security implications are also encouraged to review
+the security changes introduced with 6.53/7.04.
+
+<p>
+Additionally, the scripts which create the project file for bulding
+ghostscript on MacOS have been updated for Metrowerks CodeWarrior 7.2 and 8.3.
+Edit the LIBS entries in macgenmcpxml.sh to recover the settings for
+CW6.
+
+<h2><a name="7.06-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Add the option -dUseCropBox to set the page size from the CropBox
+rather than the MediaBox. This is appropriate when using ghostscript to view
+PDF files or convert to bitmaps. It probably isn't appropriate for printing.
+Fixes SourceForge bugs #522486, "Wromg size EPS generated from PDF" and
+#538267 "Problems with Media Box in PDF and PS interpreter".
+(doc/Use.htm [1.33.2.13]: 2002/06/28 10:59:01 ghostgum)
+ - When ghostscript is given a PDF file on standard input, copy it to
+a temporary file before processing. Prior to version 7, ghostscript could
+read PDF from standard input redirected from a file, but not from a pipe.
+Standard input was changed in version 7 to use callouts, which prevented PDF
+reading from standard input. Fixes SourceForge bug #583413, /ioerror with gs
+- &lt; file.pdf vers 7.xx (doc/Use.htm [1.33.2.15]: 2002/09/14 12:05:58
+ghostgum)
+ - Fix: Mentions the autoconf build method in the installation
+documentation. Inspired by a user report of having looked there first rather
+than at Make.htm; an understandible choice based on GNU/Linux packaging
+conventions. Also removes a reference to using the Acrobat Reader fonts.
+(doc/Install.htm [1.26.2.9]: 2002/09/16 21:41:40 giles)
+ - Fix a broken documentation link. (doc/Use.htm [1.33.2.17]:
+2002/09/16 22:50:31 giles)
+ - Keep pagedevice and device views of .LockSafetyParams correct even
+after a 'restore' is used to unlock. The dictionary fed to the setpagedevice
+operator is allocated in the same VM space as currentpagedevice to avoid
+invalidaccess problems. Fixed SF #580029 and does not revert to the
+incorrect behaviour of bug #516379. (doc/Language.htm [1.34.2.12]:
+2002/09/19 17:05:05 ray)
+ - adds missing files to the developer documentation.
+(doc/Develop.htm [1.47.2.16]: 2002/10/10 13:22:31 giles)
+ - release number must be updated in lib/gs_init.ps as well.
+(doc/Release.htm [1.40.2.19]: 2002/10/10 13:25:25 giles)
+
+Update the url for the zlib website and source. Fixes SF Bug #550585.
+(doc/Make.htm [1.36.2.13], doc/New-user.htm [1.30.2.9]: 2002/05/09 17:04:50
+giles)
+
+Prefer {} to () for manditory alteration groups in commandline arguments.
+Patch from Eric S. Raymond. (man/de/ps2pdf.1 [1.1.4.1],
+man/ps2pdf.1 [1.14.2.8], man/ps2pdfwr.1 [1.13.2.8]: 2002/08/08 12:27:21
+giles)
+
+Add missing "Summary of environment variables" header to Use.htm.
+(doc/Use.htm [1.33.2.14]: 2002/08/09 11:00:04 ghostgum)
+
+Delete all temporary files when the interpreter closes.
+(doc/Language.htm [1.34.2.11]: 2002/09/05 12:21:45 ghostgum)
+
+Add command line options -dEPS, -dEPSCrop and -dEPSFitPage for handling
+Encapsulated PostScript files. (doc/Use.htm [1.33.2.16]: 2002/09/14 12:17:25
+ghostgum)
+
+Removes mention of the gdevcd8.c drivers from the documentation. All of
+these printers are supported by the gimp-print and/or hpijs projects. The
+(GPL) third party drivers for them were never added to the 7.0x series.
+Closes SourceForge bug #557177. (doc/Devices.htm [1.34.2.12]: 2002/09/22
+23:02:38 giles)
+
+Add documentation to the .setsafe operator that was added to .locksafe
+operator that says that .setsafe uses setpagedevice, thus it will erase the
+page. Related to SourceForge bug #580029. (doc/Language.htm [1.34.2.13]:
+2002/09/23 06:19:58 ray)
+
+Remove excessive trademark symbols to improve compliance with the GNU coding
+guidelines. (man/de/ps2pdf.1 [1.1.4.2], man/ps2pdf.1 [1.14.2.9]: 2002/09/23
+14:53:40 giles)
+
+Attempt to update version info on the german manpages and port Thomas
+Hoffmann's fixes from HEAD. (man/de/ansi2knr.1 [1.1.4.1],
+man/de/dvipdf.1 [1.1.4.1], man/de/font2c.1 [1.1.4.1],
+man/de/gsnd.1 [1.2.4.1], man/de/pdf2dsc.1 [1.1.4.1],
+man/de/pdf2ps.1 [1.2.4.1], man/de/pdfopt.1 [1.1.4.1],
+man/de/printafm.1 [1.1.4.1], man/de/ps2ascii.1 [1.1.4.1],
+man/de/ps2pdf.1 [1.1.4.3], man/de/ps2ps.1 [1.2.4.1],
+man/de/wftopfa.1 [1.1.4.1]: 2002/09/23 15:57:35 giles)
+
+Improve compliance with GNU coding standards by removing references to
+other software. (doc/API.htm [1.11.2.11], doc/C-style.htm [1.21.2.9],
+doc/Current.htm [1.13.2.9], doc/DLL.htm [1.15.2.9], doc/Develop.htm
+[1.47.2.14], doc/Devices.htm [1.34.2.13], doc/Drivers.htm [1.21.2.9],
+doc/Fonts.htm [1.22.2.10], doc/Helpers.htm [1.17.2.9], doc/Hershey.htm
+[1.3.4.1], doc/History1.htm [1.13.2.9], doc/History2.htm [1.13.2.9],
+doc/History3.htm [1.13.2.9], doc/History4.htm [1.13.2.9], doc/History5.htm
+[1.15.2.9], doc/History6.htm [1.30.2.9], doc/History7.htm [1.5.2.13],
+doc/Htmstyle.htm [1.18.2.9], doc/Humor.htm [1.3.2.2], doc/Install.htm
+[1.26.2.10], doc/Issues.htm [1.15.2.10], doc/Language.htm [1.34.2.14],
+doc/Lib.htm [1.14.2.9], doc/Maintain.htm [1.23.2.9], doc/Make.htm
+[1.36.2.14], doc/New-user.htm [1.30.2.10], doc/News.htm [1.90.2.15],
+doc/Projects.htm [1.33.2.9], doc/Ps-style.htm [1.13.2.9], doc/Ps2epsi.htm
+[1.15.2.10], doc/Ps2pdf.htm [1.32.2.9], doc/Psfiles.htm [1.22.2.10],
+doc/Readme.htm [1.31.2.11], doc/Release.htm [1.40.2.16], doc/Source.htm
+[1.13.2.9], doc/Unix-lpr.htm [1.13.2.9], doc/Use.htm [1.33.2.18],
+doc/Xfonts.htm [1.13.2.9]: 2002/09/23 16:26:21 giles)
+
+Additional german manpage cleanup thanks to the Jens Harting.
+(man/de/ansi2knr.1 [1.1.4.2], man/de/dvipdf.1 [1.1.4.2],
+man/de/font2c.1 [1.1.4.2], man/de/gsnd.1 [1.2.4.2],
+man/de/pdf2dsc.1 [1.1.4.2], man/de/pdf2ps.1 [1.2.4.2],
+man/de/pdfopt.1 [1.1.4.2], man/de/ps2ascii.1 [1.1.4.2],
+man/de/ps2pdf.1 [1.1.4.4], man/de/ps2ps.1 [1.2.4.2]: 2002/09/23 17:24:44
+giles)
+
+Improve compliance with the GNU coding guidelines on references to other
+software. (doc/Readme.htm [1.31.2.12]: 2002/09/25 14:58:34 giles)
+
+Further improvement of compliance with the GNU coding guidelines on
+references to other software. (doc/Make.htm [1.36.2.15], doc/New-user.htm
+[1.30.2.11]: 2002/09/25 18:13:29 giles)
+
+Further improvement of compliance with the GNU coding guidelines on
+references to other software. (doc/gs-vms.hlp [1.12.2.8]: 2002/10/07
+22:18:20 giles)
+
+Remove Tester.htm. It's (probably) out of date. (doc/Readme.htm
+[1.31.2.13]: 2002/10/07 22:19:40 giles)
+
+Last round of refinement for compliance with GNU coding
+standards. (doc/Fonts.htm [1.22.2.11], doc/Install.htm [1.26.2.11],
+doc/Issues.htm [1.15.2.11], doc/Maintain.htm [1.23.2.10], doc/Make.htm
+[1.36.2.16], doc/New-user.htm [1.30.2.12], doc/Readme.htm [1.31.2.14],
+doc/Release.htm [1.40.2.17]: 2002/10/08 08:24:34 giles)
+
+Remove remaining elements of support for K&amp;R (pre-ansi) C. We no longer
+support building ghostscript tt way, but the remaining dead code causes
+confusion for some users. Closes Sourceforge bug #618048.
+(doc/Develop.htm [1.47.2.15], doc/Make.htm [1.36.2.17],
+doc/Release.htm [1.40.2.18]: 2002/10/10 00:28:26 giles)
+
+Update version number and date for release. (doc/API.htm [1.11.2.12],
+doc/C-style.htm [1.21.2.10], doc/Current.htm [1.13.2.10],
+doc/DLL.htm [1.15.2.10], doc/Develop.htm [1.47.2.17],
+doc/Devices.htm [1.34.2.14], doc/Drivers.htm [1.21.2.10],
+doc/Fonts.htm [1.22.2.12], doc/Helpers.htm [1.17.2.10],
+doc/History1.htm [1.13.2.10], doc/History2.htm [1.13.2.10],
+doc/History3.htm [1.13.2.10], doc/History4.htm [1.13.2.10],
+doc/History5.htm [1.15.2.10], doc/History6.htm [1.30.2.10],
+doc/History7.htm [1.5.2.14], doc/Htmstyle.htm [1.18.2.10],
+doc/Install.htm [1.26.2.12], doc/Issues.htm [1.15.2.12],
+doc/Language.htm [1.34.2.15], doc/Lib.htm [1.14.2.10],
+doc/Maintain.htm [1.23.2.11], doc/Make.htm [1.36.2.18],
+doc/New-user.htm [1.30.2.13], doc/News.htm [1.90.2.16],
+doc/Projects.htm [1.33.2.10], doc/Ps-style.htm [1.13.2.10],
+doc/Ps2epsi.htm [1.15.2.11], doc/Ps2pdf.htm [1.32.2.10],
+doc/Psfiles.htm [1.22.2.11], doc/Readme.htm [1.31.2.15],
+doc/Release.htm [1.40.2.20], doc/Source.htm [1.13.2.10],
+doc/Unix-lpr.htm [1.13.2.10], doc/Use.htm [1.33.2.19],
+doc/Xfonts.htm [1.13.2.10], doc/gs-vms.hlp [1.12.2.9]: 2002/10/10 13:36:49
+giles)
+
+Update version number and date for release. (man/dvipdf.1 [1.10.2.8],
+man/font2c.1 [1.10.2.8], man/gs.1 [1.10.2.9], man/gslp.1 [1.10.2.8],
+man/gsnd.1 [1.10.2.8], man/pdf2dsc.1 [1.10.2.8], man/pdf2ps.1 [1.12.2.8],
+man/pdfopt.1 [1.10.2.8], man/pf2afm.1 [1.10.2.8], man/pfbtopfa.1 [1.11.2.8],
+man/printafm.1 [1.10.2.8], man/ps2ascii.1 [1.10.2.8],
+man/ps2epsi.1 [1.10.2.9], man/ps2pdf.1 [1.14.2.10],
+man/ps2pdfwr.1 [1.13.2.9], man/ps2ps.1 [1.17.2.8], man/wftopfa.1 [1.10.2.8]:
+2002/10/10 13:37:00 giles)
+
+Improvements to processing of EPS files. (doc/Use.htm [1.33.2.20]:
+2002/10/31 11:12:12 ghostgum)
+
+Correct the documented paper sizes in Use.htm to match gs_statd.ps after fix
+for SF bug # 536877. Change cm units to the more common mm.
+(doc/Use.htm [1.33.2.21]: 2002/11/04 22:55:35 ghostgum)
+
+Add working 'distclean' and 'maintainer-clean' targets to the autoconf
+makefile. Backport from HEAD. (doc/Release.htm [1.40.2.22]: 2002/12/02
+00:10:23 giles)
+
+Update release date for second candidate. (doc/API.htm [1.11.2.13],
+doc/C-style.htm [1.21.2.11], doc/DLL.htm [1.15.2.11],
+doc/Develop.htm [1.47.2.18], doc/Devices.htm [1.34.2.15],
+doc/Drivers.htm [1.21.2.11], doc/Fonts.htm [1.22.2.13],
+doc/Helpers.htm [1.17.2.11], doc/History1.htm [1.13.2.11],
+doc/History2.htm [1.13.2.11], doc/History3.htm [1.13.2.11],
+doc/History4.htm [1.13.2.11], doc/History5.htm [1.15.2.11],
+doc/History6.htm [1.30.2.11], doc/History7.htm [1.5.2.16],
+doc/Htmstyle.htm [1.18.2.11], doc/Install.htm [1.26.2.13],
+doc/Issues.htm [1.15.2.13], doc/Language.htm [1.34.2.16],
+doc/Lib.htm [1.14.2.11], doc/Maintain.htm [1.23.2.12],
+doc/Make.htm [1.36.2.19], doc/New-user.htm [1.30.2.14],
+doc/News.htm [1.90.2.18], doc/Projects.htm [1.33.2.11],
+doc/Ps-style.htm [1.13.2.11], doc/Ps2epsi.htm [1.15.2.12],
+doc/Ps2pdf.htm [1.32.2.11], doc/Psfiles.htm [1.22.2.12],
+doc/Readme.htm [1.31.2.16], doc/Release.htm [1.40.2.23],
+doc/Source.htm [1.13.2.11], doc/Unix-lpr.htm [1.13.2.11],
+doc/Use.htm [1.33.2.22], doc/Xfonts.htm [1.13.2.11],
+doc/gs-vms.hlp [1.12.2.10]: 2002/12/02 01:54:36 giles)
+
+Update release date for second candidate. (man/dvipdf.1 [1.10.2.9],
+man/font2c.1 [1.10.2.9], man/gs.1 [1.10.2.10], man/gslp.1 [1.10.2.9],
+man/gsnd.1 [1.10.2.9], man/pdf2dsc.1 [1.10.2.9], man/pdf2ps.1 [1.12.2.9],
+man/pdfopt.1 [1.10.2.9], man/pf2afm.1 [1.10.2.9], man/pfbtopfa.1 [1.11.2.9],
+man/printafm.1 [1.10.2.9], man/ps2ascii.1 [1.10.2.9],
+man/ps2epsi.1 [1.10.2.10], man/ps2pdf.1 [1.14.2.11],
+man/ps2pdfwr.1 [1.13.2.10], man/ps2ps.1 [1.17.2.9],
+man/wftopfa.1 [1.10.2.9]: 2002/12/02 01:54:43 giles)
+
+Change documentation and changelogs to better comply with GNU coding
+guidelines. Patch from Brett Smith. (doc/API.htm [1.11.2.13.2.1],
+doc/Changes.htm [1.28.2.8.2.1], doc/Develop.htm [1.47.2.18.2.1],
+doc/Devices.htm [1.34.2.15.2.1], doc/Fonts.htm [1.22.2.13.2.1],
+doc/History2.htm [1.13.2.11.2.1], doc/History3.htm [1.13.2.11.2.1],
+doc/History4.htm [1.13.2.11.2.1], doc/History5.htm [1.15.2.11.2.1],
+doc/History6.htm [1.30.2.11.2.1], doc/History7.htm [1.5.2.17.2.1],
+doc/Install.htm [1.26.2.13.2.1], doc/Maintain.htm [1.23.2.12.2.1],
+doc/Make.htm [1.36.2.19.2.1], doc/New-user.htm [1.30.2.14.2.1],
+doc/Projects.htm [1.33.2.11.2.1], doc/Ps2epsi.htm [1.15.2.12.2.1],
+doc/Release.htm [1.40.2.23.2.1], doc/Use.htm [1.33.2.22.2.1]: 2003/01/17
+00:58:51 giles)
+
+Update release date for final 7.06 release. (doc/API.htm [1.11.2.13.2.2],
+doc/C-style.htm [1.21.2.11.2.1], doc/DLL.htm [1.15.2.11.2.1],
+doc/Develop.htm [1.47.2.18.2.2], doc/Devices.htm [1.34.2.15.2.2],
+doc/Drivers.htm [1.21.2.11.2.1], doc/Fonts.htm [1.22.2.13.2.2],
+doc/Helpers.htm [1.17.2.11.2.1], doc/History1.htm [1.13.2.11.2.1],
+doc/History2.htm [1.13.2.11.2.2], doc/History3.htm [1.13.2.11.2.2],
+doc/History4.htm [1.13.2.11.2.2], doc/History5.htm [1.15.2.11.2.2],
+doc/History6.htm [1.30.2.11.2.2], doc/History7.htm [1.5.2.17.2.2],
+doc/Htmstyle.htm [1.18.2.11.2.1], doc/Install.htm [1.26.2.13.2.2],
+doc/Issues.htm [1.15.2.13.2.1], doc/Language.htm [1.34.2.16.2.1],
+doc/Lib.htm [1.14.2.11.2.1], doc/Maintain.htm [1.23.2.12.2.2],
+doc/Make.htm [1.36.2.19.2.2], doc/New-user.htm [1.30.2.14.2.2],
+doc/News.htm [1.90.2.18.2.1], doc/Projects.htm [1.33.2.11.2.2],
+doc/Ps-style.htm [1.13.2.11.2.1], doc/Ps2epsi.htm [1.15.2.12.2.2],
+doc/Ps2pdf.htm [1.32.2.11.2.1], doc/Psfiles.htm [1.22.2.12.2.1],
+doc/Readme.htm [1.31.2.16.2.1], doc/Release.htm [1.40.2.23.2.2],
+doc/Source.htm [1.13.2.11.2.1], doc/Unix-lpr.htm [1.13.2.11.2.1],
+doc/Use.htm [1.33.2.22.2.2], doc/Xfonts.htm [1.13.2.11.2.1],
+doc/gs-vms.hlp [1.12.2.10.2.1], man/dvipdf.1 [1.10.2.9.2.1],
+man/font2c.1 [1.10.2.9.2.1], man/gs.1 [1.10.2.10.2.1],
+man/gslp.1 [1.10.2.9.2.1], man/gsnd.1 [1.10.2.9.2.1],
+man/pdf2dsc.1 [1.10.2.9.2.1], man/pdf2ps.1 [1.12.2.9.2.1],
+man/pdfopt.1 [1.10.2.9.2.1], man/pf2afm.1 [1.10.2.9.2.1],
+man/pfbtopfa.1 [1.11.2.9.2.1], man/printafm.1 [1.10.2.9.2.1],
+man/ps2ascii.1 [1.10.2.9.2.1], man/ps2epsi.1 [1.10.2.10.2.1],
+man/ps2pdf.1 [1.14.2.11.2.1], man/ps2pdfwr.1 [1.13.2.10.2.1],
+man/ps2ps.1 [1.17.2.9.2.1], man/wftopfa.1 [1.10.2.9.2.1]: 2003/02/09
+16:20:03 giles)
+
+Correct a typo in the release date. (doc/API.htm [1.11.2.13.2.3],
+doc/C-style.htm [1.21.2.11.2.2], doc/DLL.htm [1.15.2.11.2.2],
+doc/Develop.htm [1.47.2.18.2.3], doc/Devices.htm [1.34.2.15.2.3],
+doc/Drivers.htm [1.21.2.11.2.2], doc/Fonts.htm [1.22.2.13.2.3],
+doc/Helpers.htm [1.17.2.11.2.2], doc/History1.htm [1.13.2.11.2.2],
+doc/History2.htm [1.13.2.11.2.3], doc/History3.htm [1.13.2.11.2.3],
+doc/History4.htm [1.13.2.11.2.3], doc/History5.htm [1.15.2.11.2.3],
+doc/History6.htm [1.30.2.11.2.3], doc/History7.htm [1.5.2.17.2.3],
+doc/Htmstyle.htm [1.18.2.11.2.2], doc/Install.htm [1.26.2.13.2.3],
+doc/Issues.htm [1.15.2.13.2.2], doc/Language.htm [1.34.2.16.2.2],
+doc/Lib.htm [1.14.2.11.2.2], doc/Maintain.htm [1.23.2.12.2.3],
+doc/Make.htm [1.36.2.19.2.3], doc/New-user.htm [1.30.2.14.2.3],
+doc/News.htm [1.90.2.18.2.2], doc/Projects.htm [1.33.2.11.2.3],
+doc/Ps-style.htm [1.13.2.11.2.2], doc/Ps2epsi.htm [1.15.2.12.2.3],
+doc/Ps2pdf.htm [1.32.2.11.2.2], doc/Psfiles.htm [1.22.2.12.2.2],
+doc/Readme.htm [1.31.2.16.2.2], doc/Release.htm [1.40.2.23.2.3],
+doc/Source.htm [1.13.2.11.2.2], doc/Unix-lpr.htm [1.13.2.11.2.2],
+doc/Use.htm [1.33.2.22.2.3], doc/Xfonts.htm [1.13.2.11.2.2],
+doc/gs-vms.hlp [1.12.2.10.2.2], man/dvipdf.1 [1.10.2.9.2.2],
+man/font2c.1 [1.10.2.9.2.2], man/gs.1 [1.10.2.10.2.2],
+man/gslp.1 [1.10.2.9.2.2], man/gsnd.1 [1.10.2.9.2.2],
+man/pdf2dsc.1 [1.10.2.9.2.2], man/pdf2ps.1 [1.12.2.9.2.2],
+man/pdfopt.1 [1.10.2.9.2.2], man/pf2afm.1 [1.10.2.9.2.2],
+man/pfbtopfa.1 [1.11.2.9.2.2], man/printafm.1 [1.10.2.9.2.2],
+man/ps2ascii.1 [1.10.2.9.2.2], man/ps2epsi.1 [1.10.2.10.2.2],
+man/ps2pdf.1 [1.14.2.11.2.2], man/ps2pdfwr.1 [1.13.2.10.2.2],
+man/ps2ps.1 [1.17.2.9.2.2], man/wftopfa.1 [1.10.2.9.2.2]: 2003/02/09
+17:07:08 giles)
+
+Update changelog and release date. (doc/News.htm [1.90.2.18.2.3]: 2003/03/31
+13:56:42 giles)
+
+Propagate new release date to all documentation.
+(doc/API.htm [1.11.2.13.2.4], doc/C-style.htm [1.21.2.11.2.3],
+doc/DLL.htm [1.15.2.11.2.3], doc/Develop.htm [1.47.2.18.2.4],
+doc/Devices.htm [1.34.2.15.2.4], doc/Drivers.htm [1.21.2.11.2.3],
+doc/Fonts.htm [1.22.2.13.2.4], doc/Helpers.htm [1.17.2.11.2.3],
+doc/History1.htm [1.13.2.11.2.3], doc/History2.htm [1.13.2.11.2.4],
+doc/History3.htm [1.13.2.11.2.4], doc/History4.htm [1.13.2.11.2.4],
+doc/History5.htm [1.15.2.11.2.4], doc/History6.htm [1.30.2.11.2.4],
+doc/History7.htm [1.5.2.17.2.4], doc/Htmstyle.htm [1.18.2.11.2.3],
+doc/Install.htm [1.26.2.13.2.4], doc/Issues.htm [1.15.2.13.2.3],
+doc/Language.htm [1.34.2.16.2.3], doc/Lib.htm [1.14.2.11.2.3],
+doc/Maintain.htm [1.23.2.12.2.4], doc/Make.htm [1.36.2.19.2.4],
+doc/New-user.htm [1.30.2.14.2.4], doc/News.htm [1.90.2.18.2.4],
+doc/Projects.htm [1.33.2.11.2.4], doc/Ps-style.htm [1.13.2.11.2.3],
+doc/Ps2epsi.htm [1.15.2.12.2.4], doc/Ps2pdf.htm [1.32.2.11.2.3],
+doc/Psfiles.htm [1.22.2.12.2.3], doc/Readme.htm [1.31.2.16.2.3],
+doc/Release.htm [1.40.2.23.2.4], doc/Source.htm [1.13.2.11.2.3],
+doc/Unix-lpr.htm [1.13.2.11.2.3], doc/Use.htm [1.33.2.22.2.4],
+doc/Xfonts.htm [1.13.2.11.2.3], doc/gs-vms.hlp [1.12.2.10.2.3],
+man/dvipdf.1 [1.10.2.9.2.3], man/font2c.1 [1.10.2.9.2.3],
+man/gs.1 [1.10.2.10.2.3], man/gslp.1 [1.10.2.9.2.3],
+man/gsnd.1 [1.10.2.9.2.3], man/pdf2dsc.1 [1.10.2.9.2.3],
+man/pdf2ps.1 [1.12.2.9.2.3], man/pdfopt.1 [1.10.2.9.2.3],
+man/pf2afm.1 [1.10.2.9.2.3], man/pfbtopfa.1 [1.11.2.9.2.3],
+man/printafm.1 [1.10.2.9.2.3], man/ps2ascii.1 [1.10.2.9.2.3],
+man/ps2epsi.1 [1.10.2.10.2.3], man/ps2pdf.1 [1.14.2.11.2.3],
+man/ps2pdfwr.1 [1.13.2.10.2.3], man/ps2ps.1 [1.17.2.9.2.3],
+man/wftopfa.1 [1.10.2.9.2.3]: 2003/03/31 14:00:26 giles)
+
+</pre><h2><a name="7.06-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - .pushpdf14devicefilter was defined in zdfilter.c, but depended on
+the optional pdf module's transparency features. Moves the definition of
+this routine to the conditionally included ztrans.c. Fix by L. Peter
+Deutsch, resolves SourceForge Bug 565019. (int.mak [1.50.2.4]: 2002/06/14
+09:53:12 giles)
+ - As a result of a recent fix, an opdef table had more than 16
+entries, causing initialization to abort. backporting a fix by L. Peter
+Deutsch from HEAD. (int.mak [1.50.2.5]: 2002/06/14 15:26:00 giles)
+ - When building an archive of the graphics library or interpreter,
+add only the object files, not the .dev and interpreter files. Fixes
+SourceForge bug # 538311 - files missing from library archive.
+(gs.mak [1.5.2.4], ugcclib.mak [1.13.2.6], unixlink.mak [1.3.4.2]:
+2002/06/22 03:34:43 ghostgum)
+ - Provide an implementation of popen for Windows, to avoid the
+broken implementation in MSVC++ 5 and 6. This allows pswrite to output to a
+pipe on Windows. Fixes SourceForge bug #482038, pswrite does not write to
+pipe. (winlib.mak [1.12.2.3]: 2002/09/05 10:19:00 ghostgum)
+ - provide a meaningful error message when an immediately evaluated
+name can not be found. Fixes SourceForge bug #543185, Confusing diagnostics
+for //undefined. (int.mak [1.50.2.6]: 2002/09/14 11:59:15 ghostgum)
+
+Update the url for the zlib website and source. Fixes SF Bug #550585.
+(zlib.mak [1.3.2.2]: 2002/05/09 17:04:50 giles)
+
+Add a 32 bit/pixel CMYK driver named pam using the Portable Arbitrary Map
+file format, one of the netpbm family. This driver has problems with
+anti-aliasing that will be fixed in a later patch. (devs.mak [1.47.2.7]:
+2002/06/22 03:44:00 ghostgum)
+
+Remove spurious build of the gtk client along with the macos framework.
+Backport the 'framework_install' target from HEAD. (macos-fw.mak [1.1.2.3]:
+2002/08/07 13:05:17 giles)
+
+Add command line options -dEPS, -dEPSCrop and -dEPSFitPage for handling
+Encapsulated PostScript files. (bcwin32.mak [1.12.2.6],
+msvc32.mak [1.20.2.8]: 2002/09/14 12:17:26 ghostgum)
+
+Remove some interpreter references from the graphics library. Partial fix
+for SourceForge bug #542848, "library #includes interpreter headers".
+(lib.mak [1.53.2.5], msvclib.mak [1.16.2.4], msvctail.mak [1.6.2.2],
+pcwin.mak [1.2.6.2]: 2002/09/14 12:25:55 ghostgum)
+
+Prune the dead 'begin' makefile target. This was supposedly removed in
+release 5.20. (gs.mak [1.5.2.5]: 2002/10/09 22:07:08 giles)
+
+Remove remaining elements of support for K&amp;R (pre-ansi) C. We no longer
+support building ghostscript tt way, but the remaining dead code causes
+confusion for some users. Closes Sourceforge bug #618048.
+(dvx-gcc.mak [1.12.2.6], dvx-tail.mak [1.5.2.2], gs.mak [1.5.2.6],
+macos-mcp.mak [1.3.2.5], macosx.mak [1.3.2.7], openvms.mak [1.16.2.6],
+openvms.mmk [1.12.2.3], os2.mak [1.19.2.6], ugcclib.mak [1.13.2.7],
+unix-aux.mak [1.5.2.3], unix-gcc.mak [1.23.2.10], unixansi.mak [1.16.2.9],
+wccommon.mak [1.3.6.2], winlib.mak [1.12.2.4]: 2002/10/10 00:24:01 giles)
+
+Set USE_ASM to zero explicitly. (unix-gcc.mak [1.23.2.11],
+unixansi.mak [1.16.2.10]: 2002/10/10 12:47:49 giles)
+
+Update libpng version number to latest release. (all-arch.mak [1.9.2.4],
+bcwin32.mak [1.12.2.7], dvx-gcc.mak [1.12.2.7], macos-mcp.mak [1.3.2.6],
+macosx.mak [1.3.2.8], msvc32.mak [1.20.2.9], msvclib.mak [1.16.2.5],
+openvms.mak [1.16.2.7], os2.mak [1.19.2.7], ugcclib.mak [1.13.2.8],
+unix-gcc.mak [1.23.2.12], unixansi.mak [1.16.2.11], watc.mak [1.16.2.4],
+watclib.mak [1.13.2.5], watcw32.mak [1.13.2.5]: 2002/10/10 13:35:51 giles)
+
+Update version number and date for release. (version.mak [1.36.2.8]:
+2002/10/10 13:37:03 giles)
+
+Module gslib removed from the library archive. Further fix for [ 538311 ]
+files missing from library archive. (ugcclib.mak [1.13.2.9]: 2002/11/02
+04:31:13 ghostgum)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(macos-mcp.mak [1.3.2.7], macosx.mak [1.3.2.9]: 2002/12/01 23:29:37 giles)
+
+Update libpng version makefile variables to 10205. These were accidentally
+reverted in the last commit. (macos-mcp.mak [1.3.2.8],
+macosx.mak [1.3.2.10]: 2002/12/01 23:32:56 giles)
+
+Add working 'distclean' and 'maintainer-clean' targets to the autoconf
+makefile. Backport from HEAD. (gs.mak [1.5.2.7]: 2002/12/02 00:10:24 giles)
+
+Update release date for second candidate. (version.mak [1.36.2.9]:
+2002/12/02 01:55:46 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (all-arch.mak [1.9.2.4.2.1], bcwin32.mak [1.12.2.7.2.1],
+cfonts.mak [1.2.6.1.2.1], contrib.mak [1.24.2.1.2.1],
+devs.mak [1.47.2.7.2.1], dvx-gcc.mak [1.12.2.7.2.1],
+dvx-head.mak [1.2.6.1.2.1], dvx-tail.mak [1.5.2.2.2.1],
+dwmain.rc [1.2.6.2.2.1], dwsetup.rc [1.5.2.4.2.1],
+dwuninst.rc [1.3.6.2.2.1], gs.mak [1.5.2.7.2.1], gs16spl.rc [1.2.6.2.2.1],
+gsdll2.rc [1.2.6.1.2.1], gsdll32.rc [1.2.6.2.2.1]: 2003/01/17 00:49:00
+giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (gsos2.rc [1.2.6.1.2.1], gspmdrv.rc [1.2.6.1.2.1],
+gswin.rc [1.2.6.2.2.1], icclib.mak [1.3.2.2.2.1], ijs.mak [1.2.2.2.2.1],
+int.mak [1.50.2.6.2.1], jpeg.mak [1.4.2.1.2.1], lib.mak [1.53.2.5.2.1],
+libpng.mak [1.10.2.3.2.1], macos-fw.mak [1.1.2.3.2.1],
+macos-mcp.mak [1.3.2.8.2.1], macosx.mak [1.3.2.10.2.1],
+msvc32.mak [1.20.2.9.2.1], msvccmd.mak [1.6.2.1.2.1],
+msvclib.mak [1.16.2.5.2.1], msvctail.mak [1.6.2.2.2.1],
+openvms.mak [1.16.2.7.2.1], openvms.mmk [1.12.2.3.2.1],
+os2.mak [1.19.2.7.2.1], pcwin.mak [1.2.6.2.2.1], ugcclib.mak [1.13.2.9.2.1],
+unix-aux.mak [1.5.2.3.2.1], unix-dll.mak [1.6.2.2.2.1],
+unix-end.mak [1.2.6.1.2.1], unix-gcc.mak [1.23.2.12.2.1],
+unixansi.mak [1.16.2.11.2.1], unixhead.mak [1.2.6.1.2.1],
+unixinst.mak [1.20.2.9.2.1], unixlink.mak [1.3.4.2.2.1],
+version.mak [1.36.2.9.2.1], watclib.mak [1.13.2.5.2.1],
+watcw32.mak [1.13.2.5.2.1], wccommon.mak [1.3.6.2.2.1],
+wctail.mak [1.3.2.2.2.1], winint.mak [1.8.2.5.2.1],
+winlib.mak [1.12.2.4.2.1], winplat.mak [1.2.6.1.2.1],
+wmin.mak [1.2.6.1.2.1]: 2003/01/17 00:49:03 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (zlib.mak [1.3.2.2.2.1]: 2003/01/17 00:49:06 giles)
+
+Makefile banner lines should be comments. (gs.mak [1.5.2.7.2.2]: 2003/01/28
+12:02:09 ghostgum)
+
+Update release date for final 7.06 release. (version.mak [1.36.2.9.2.2]:
+2003/02/09 16:20:05 giles)
+
+Add pngalpha device that uses RGBA, with the alpha channel providing pixel
+coverage. Used for generating PNG images with a transparent background.
+(bcwin32.mak [1.12.2.7.2.2], devs.mak [1.47.2.7.2.2],
+macosx.mak [1.3.2.10.2.2], msvc32.mak [1.20.2.9.2.2],
+openvms.mak [1.16.2.7.2.2], os2.mak [1.19.2.7.2.2],
+unix-gcc.mak [1.23.2.12.2.2], unixansi.mak [1.16.2.11.2.2],
+watcw32.mak [1.13.2.5.2.2]: 2003/03/11 11:59:10 ghostgum)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(gp_mac.c [1.1.4.3], gp_macio.c [1.2.4.4], macgenmcpxml.sh [1.1.4.4]:
+2002/12/01 23:29:37 giles)
+Update changelog and release date. (version.mak [1.36.2.9.2.3]: 2003/03/31
+13:56:42 giles)
+
+Correct the copyright date and avoid putting NT security attributes into the
+Windows distribution archive. (winint.mak [1.8.2.5.2.2]: 2003/04/01 09:30:59
+ghostgum)
+
+</pre><h2><a name="7.06-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Reinstate ps2epsi.bat and ps2epsi.cmd. Correctly embed the
+original EPS file in the output of ps2epsi on Windows and OS/2.
+(lib/ps2epsi.bat [1.6.2.2], lib/ps2epsi.cmd [1.3.2.2]: 2002/04/26 00:24:45
+ghostgum)
+ - Temporary files weren't being put in the proper location under
+MacOS X/Carbon. Updates the the proper prameter block type for the Carbon
+interface so this works properly on both OS 9/X. Patch from Erik Strik.
+(gp_macio.c [1.2.4.3]: 2002/06/13 15:40:59 giles)
+ - Provide an implementation of popen for Windows, to avoid the
+broken implementation in MSVC++ 5 and 6. This allows pswrite to output to a
+pipe on Windows. Fixes SourceForge bug #482038, pswrite does not write to
+pipe. (gp_mswin.c [1.7.2.2]: 2002/09/05 10:19:00 ghostgum)
+
+Remove the DOS and OS/2 versions of the ps2epsi code. They have been broken
+for some time. (lib/ps2epsi.bat [1.6.2.1], lib/ps2epsi.cmd [1.3.2.1]:
+2002/04/22 20:38:01 giles)
+
+Changes to the gtk+ client to request a suitable window size based on the
+screen and image sizes, to reduce unnecessary redraws and erase the window
+area outside the image. (dxmain.c [1.7.2.2]: 2002/04/26 05:03:20 ghostgum)
+
+Update project file generation script to support Metrowerks CodeWarrior 7.
+(macgenmcpxml.sh [1.1.4.3]: 2002/09/04 09:02:38 giles)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(gp_mac.c [1.1.4.3], gp_macio.c [1.2.4.4], macgenmcpxml.sh [1.1.4.4]:
+2002/12/01 23:29:37 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (bench.c [1.4.4.1.2.1], dxmain.c [1.7.2.2.2.1],
+dxmainc.c [1.4.2.2.2.1], echogs.c [1.3.2.1.2.1], genarch.c [1.2.6.1.2.1],
+genconf.c [1.4.4.1.2.1], gendev.c [1.2.6.1.2.1], genht.c [1.2.6.1.2.1],
+geninit.c [1.3.6.1.2.1], gp_dvx.c [1.4.2.1.2.1], gp_iwatc.c [1.6.2.2.2.1],
+gp_mac.c [1.1.4.3.2.1], gp_macio.c [1.2.4.5.2.1], gp_mktmp.c [1.2.6.1.2.1],
+gp_msdll.c [1.1.2.1.2.1], gp_mshdl.c [1.2.6.1.2.1], gp_msio.c [1.3.4.1.2.1],
+gp_mslib.c [1.3.2.1.2.1], gp_mspol.c [1.1.2.1.2.1],
+gp_msprn.c [1.1.2.1.2.1], gp_mswin.c [1.7.2.3.2.1], gp_ntfs.c [1.5.2.4.2.1],
+gp_os2.c [1.10.2.3.2.1], gp_os9.c [1.4.2.1.2.1], gp_stdia.c [1.3.2.1.2.1],
+gp_stdin.c [1.2.2.1.2.1], gp_sysv.c [1.2.6.1.2.1], gp_unix.c [1.5.2.1.2.1],
+gp_vms.c [1.7.2.3.2.1], gp_wgetv.c [1.4.2.2.2.1], gp_win32.c [1.2.6.1.2.1],
+gp_wsync.c [1.2.6.1.2.1], gs16spl.c [1.2.6.1.2.1], gsdll.c [1.6.2.1.2.1],
+gserver.c [1.2.6.1.2.1]: 2003/01/17 00:49:00 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (gspmdrv.c [1.2.6.1.2.1], scfdgen.c [1.2.6.1.2.1],
+zdosio.c [1.2.6.1.2.1]: 2003/01/17 00:49:03 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (ziodevs.c [1.5.2.1.2.1], ziodevsc.c [1.3.2.1.2.1]: 2003/01/17
+00:49:06 giles)
+
+Correct an incorrectly applied patch to the macos implementation of
+gp_pathstring_not_bare(). (gp_macio.c [1.2.4.5.2.2]: 2003/04/01 12:21:50
+giles)
+
+</pre><h2><a name="7.06-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - Correct the display device color mapping functions that were
+wrong. Change 4-bit mapping functions to standard VGA. Correct 16-bit native
+RGB and 32-bit xRGB mapping functions. Add RGB to color mapping functions
+for CMYK formats, needed by anti-aliasing. (gdevdsp.c [1.5.2.5]: 2002/06/22
+03:10:10 ghostgum)
+ - When compiled for A4 default page size, the initial page size is
+now 595x842pts. The initial printer page size in tenths of an inch now uses
+floating point. This may cause problems with old compilers that do not allow
+floating point calculations in initializers for integers. Add some casts to
+suppress warnings with the MS compiler. Fixes SourceForge bug #535997,
+"ps2pdf produces incorrect A4 page size". (gdevbmpc.c [1.2.6.2]: 2002/07/18
+11:11:40 ghostgum)
+
+To improve clarity, use hexadecimal for -dDisplayFormat=16#XXXXXX in the
+display device example code. (gdevdsp.c [1.5.2.4]: 2002/06/19 11:36:36
+ghostgum)
+
+Add a 32 bit/pixel CMYK driver named pam using the Portable Arbitrary Map
+file format, one of the netpbm family. This driver has problems with
+anti-aliasing that will be fixed in a later patch. (gdevpbm.c [1.3.6.2]:
+2002/06/22 03:44:00 ghostgum)
+
+Remove some interpreter references from the graphics library. Partial fix
+for SourceForge bug #542848, "library #includes interpreter headers".
+(gdevmswn.c [1.4.2.2]: 2002/09/14 12:25:55 ghostgum)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(gdevmac.h [1.1.4.3]: 2002/12/01 23:29:37 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (gdev3852.c [1.3.2.1.2.1], gdev3b1.c [1.2.6.1.2.1],
+gdev4081.c [1.3.2.1.2.1], gdev8510.c [1.3.2.1.2.1],
+gdev8bcm.c [1.2.6.1.2.1], gdev8bcm.h [1.2.6.1.2.1],
+gdevadmp.c [1.3.2.1.2.1], gdevatx.c [1.6.8.1], gdevbit.c [1.2.6.1.2.1],
+gdevbj10.c [1.4.2.1.2.1], gdevbjc.h [1.2.6.1.2.1], gdevbjcl.c [1.2.6.1.2.1],
+gdevbjcl.h [1.2.6.1.2.1], gdevbmp.c [1.4.2.1.2.1], gdevbmp.h [1.2.6.1.2.1],
+gdevbmpa.c [1.3.6.1.2.1], gdevbmpc.c [1.2.6.2.2.1], gdevccr.c [1.2.6.1.2.1],
+gdevcdj.c [1.5.2.1.2.1], gdevcfax.c [1.3.6.1.2.1], gdevcgm.c [1.2.6.2.2.1],
+gdevcgml.c [1.2.6.1.2.1], gdevcgml.h [1.2.6.1.2.1],
+gdevcgmx.h [1.2.6.1.2.1], gdevcif.c [1.3.2.1.2.1], gdevclj.c [1.2.6.1.2.1],
+gdevcljc.c [1.4.2.1.2.1], gdevcp50.c [1.3.2.1.2.1],
+gdevcslw.c [1.2.6.1.2.1], gdevdcrd.c [1.2.6.1.2.1],
+gdevdcrd.h [1.2.6.1.2.1], gdevdfax.c [1.4.2.1.2.1], gdevdjet.c [1.6.8.1],
+gdevdjtc.c [1.3.2.1.2.1], gdevdljm.c [1.4.8.1], gdevdljm.h [1.4.8.1],
+gdevdm24.c [1.3.2.1.2.1], gdevdsp.c [1.5.2.5.2.1],
+gdevegaa.asm [1.2.6.1.2.1], gdevepsc.c [1.3.2.1.2.1],
+gdevepsn.c [1.3.2.1.2.1], gdevescp.c [1.3.2.1.2.1],
+gdevevga.c [1.2.6.1.2.1], gdevfax.c [1.2.6.1.2.1], gdevfax.h [1.2.6.1.2.1],
+gdevherc.c [1.2.6.1.2.1], gdevhl7x.c [1.5.2.1.2.1], gdevijs.c [1.1.2.3.2.1],
+gdevimgn.c [1.4.2.1.2.1], gdevjpeg.c [1.3.2.1.2.1],
+gdevl256.c [1.3.6.1.2.1], gdevl31s.c [1.2.6.1.2.1],
+gdevlbp8.c [1.3.2.1.2.1], gdevlj56.c [1.3.2.1.2.1],
+gdevlp8k.c [1.2.6.1.2.1], gdevlxm.c [1.2.6.1.2.1], gdevmac.c [1.1.4.3.2.1],
+gdevmac.h [1.1.4.3.2.1], gdevmacpictop.h [1.1.4.2.2.1],
+gdevmacttf.h [1.1.4.2.2.1], gdevmacxf.c [1.1.4.2.2.1],
+gdevmeds.c [1.2.6.1.2.1], gdevmeds.h [1.2.6.1.2.1], gdevmgr.c [1.2.6.1.2.1],
+gdevmgr.h [1.2.6.1.2.1], gdevmiff.c [1.3.2.1.2.1], gdevmswn.c [1.4.2.2.2.1],
+gdevmswn.h [1.2.6.1.2.1], gdevmsxf.c [1.2.6.1.2.1],
+gdevn533.c [1.3.2.1.2.1], gdevo182.c [1.3.2.1.2.1],
+gdevokii.c [1.3.2.1.2.1], gdevos2p.c [1.4.2.1.2.1], gdevp14.h [1.1.2.1.2.1],
+gdevp2up.c [1.2.6.1.2.1], gdevpbm.c [1.3.6.2.2.1], gdevpccm.c [1.2.6.1.2.1],
+gdevpccm.h [1.3.6.1.2.1], gdevpcfb.c [1.2.6.1.2.1],
+gdevpcfb.h [1.2.6.1.2.1], gdevpcl.c [1.5.2.1.2.1], gdevpcl.h [1.5.2.1.2.1],
+gdevpcx.c [1.2.6.1.2.1], gdevpe.c [1.2.6.1.2.1], gdevphex.c [1.2.6.2.2.1],
+gdevpjet.c [1.3.2.1.2.1], gdevpm.c [1.4.2.1.2.1], gdevpm.h [1.2.6.1.2.1],
+gdevpng.c [1.4.2.1.2.1], gdevpnga.c [1.4.2.1.2.1], gdevps.c [1.19.2.2.2.1],
+gdevpsdf.h [1.9.4.1.2.1], gdevpsdi.c [1.15.2.1.2.1],
+gdevpsdp.c [1.8.6.1.2.1], gdevpsds.c [1.4.6.1.2.1],
+gdevpsds.h [1.4.6.1.2.1], gdevpsdu.c [1.10.2.1.2.1],
+gdevpsim.c [1.6.2.1.2.1], gdevpsu.c [1.7.2.2.2.1], gdevpsu.h [1.4.2.1.2.1],
+gdevpx.c [1.6.2.1.2.1], gdevpxat.h [1.3.6.1.2.1], gdevpxen.h [1.3.6.1.2.1],
+gdevpxop.h [1.2.6.1.2.1], gdevpxut.c [1.2.6.1.2.1],
+gdevpxut.h [1.2.6.1.2.1], gdevs3ga.c [1.2.6.1.2.1], gdevsco.c [1.3.6.1.2.1],
+gdevsj48.c [1.2.6.1.2.1], gdevsnfb.c [1.3.2.1.2.1],
+gdevsppr.c [1.5.2.1.2.1], gdevstc.c [1.2.6.1.2.1], gdevstc.h [1.2.6.1.2.1],
+gdevstc1.c [1.2.6.1.2.1], gdevstc2.c [1.2.6.1.2.1],
+gdevstc3.c [1.2.6.1.2.1], gdevstc4.c [1.2.6.1.2.1], gdevsun.c [1.2.6.1.2.1],
+gdevsunr.c [1.4.2.1.2.1], gdevsvga.c [1.2.6.1.2.1],
+gdevsvga.h [1.2.6.1.2.1], gdevtfax.c [1.4.6.1.2.1],
+gdevtfax.h [1.4.6.1.2.1], gdevtfnx.c [1.5.2.1.2.1],
+gdevtifs.c [1.4.2.1.2.1], gdevtifs.h [1.3.6.1.2.1],
+gdevtknk.c [1.3.2.1.2.1], gdevupd.c [1.5.2.1.2.1], gdevvglb.c [1.3.6.1.2.1],
+gdevwddb.c [1.3.2.1.2.1], gdevwdib.c [1.3.2.1.2.1],
+gdevwpr2.c [1.9.2.1.2.1], gdevwprn.c [1.3.2.1.2.1], gdevx.c [1.8.2.3.2.1],
+gdevx.h [1.4.6.1.2.1], gdevxalt.c [1.2.6.2.2.1], gdevxcmp.c [1.2.6.2.2.1],
+gdevxcmp.h [1.2.6.1.2.1], gdevxini.c [1.10.4.1.2.1],
+gdevxres.c [1.3.6.1.2.1], gdevxxf.c [1.5.6.1.2.1]: 2003/01/17 00:49:00
+giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (gdevpdf.c [1.38.2.3.2.1], gdevpdfb.c [1.6.2.1.2.1],
+gdevpdfc.c [1.17.2.1.2.1], gdevpdfd.c [1.16.2.1.2.1],
+gdevpdfg.c [1.14.2.1.2.1], gdevpdfg.h [1.9.6.1.2.1],
+gdevpdfi.c [1.24.2.1.2.1], gdevpdfj.c [1.7.2.1.2.1],
+gdevpdfm.c [1.14.2.1.2.1], gdevpdfo.c [1.9.2.1.2.1],
+gdevpdfo.h [1.6.4.1.2.1], gdevpdfp.c [1.19.2.1.2.1],
+gdevpdfr.c [1.4.6.1.2.1], gdevpdfu.c [1.16.2.1.2.1],
+gdevpdfv.c [1.10.2.1.2.1], gdevpdfx.h [1.34.2.1.2.1]: 2003/01/17 00:49:01
+giles)
+
+</pre><h2><a name="7.06-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - (pdfwrite) Completely replacing the Rotation computation logics.
+Source Forge bug "[ 475147 ] GS 7.03 produces everthing upsidedown"
+(gdevpdf.c [1.38.2.2]: 2002/06/28 10:44:18 igor)
+
+</pre><h2><a name="7.06-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - Add the option -dUseCropBox to set the page size from the CropBox
+rather than the MediaBox. This is appropriate when using ghostscript to view
+PDF files or convert to bitmaps. It probably isn't appropriate for printing.
+Fixes SourceForge bugs #522486, "Wromg size EPS generated from PDF" and
+#538267 "Problems with Media Box in PDF and PS interpreter".
+(lib/pdf_main.ps [1.35.2.3]: 2002/06/28 10:59:02 ghostgum)
+ - When drawing PDF annotation links which are missing a /Border,
+assume the default /Border [0 0 1]. Previously ghostscript assumed that
+links without a /Border should not be drawn, which is contrary to the PDF
+specification. (lib/pdf_draw.ps [1.36.2.2]: 2002/06/28 23:12:21 ghostgum)
+ - If a PDF annotation specified other than the default color with
+/C, pass this into the pdfmark logic as /Color. (lib/pdf_main.ps [1.35.2.4]:
+2002/06/28 23:13:06 ghostgum)
+ - When using -dUseCropBox, use an inherited CropBox. The previous
+fix would only use a CropBox on the page being displayed.
+(lib/pdf_main.ps [1.35.2.5]: 2002/07/18 10:45:42 ghostgum)
+ - When ghostscript is given a PDF file on standard input, copy it to
+a temporary file before processing. Prior to version 7, ghostscript could
+read PDF from standard input redirected from a file, but not from a pipe.
+Standard input was changed in version 7 to use callouts, which prevented PDF
+reading from standard input. Fixes SourceForge bug #583413, /ioerror with gs
+- &lt; file.pdf vers 7.xx (lib/pdf_main.ps [1.35.2.6]: 2002/09/14 12:05:58
+ghostgum)
+
+Move code from pdfshowpage to pdfshowpage_finish for the benefit of GSview
+which calls pdfshowpage_init and pdfshowpage_finish, but not
+pdfshowpage_setpage. (lib/pdf_main.ps [1.35.2.7]: 2002/11/05 20:58:19
+ghostgum)
+
+Makes the PDF interpreter run files under a level of 'save'. This improves
+memory utilization significantly, although we don't understand why. Patch
+originally applied as revision 1.45 by lpd. (lib/pdf_main.ps [1.35.2.7.2.1]:
+2003/01/28 11:08:36 ghostgum)
+
+Treat files starting with %Pxxx as PostScript, not PDF. Process empty files
+without error. Fixes SourceForge bug #663150, Some PS files half-recognized
+as PDF files DETAILS: Changes for the 8.00 release to allow reading of PDF
+files from stdin caused files starting with %Pxxx to be half recognised as
+PDF files. This patch simplifies the PDF recognition code and makes it treat
+only files starting with "%PDF-" as PDF. Testing of this code found that
+zero length input files caused a PostScript error. This was an existing
+error which is fixed by the gs_epsf.ps patch and last line of the
+pdf_main.ps patch. (lib/pdf_main.ps [1.35.2.7.2.2]: 2003/01/28 11:54:11
+ghostgum)
+
+</pre><h2><a name="7.06-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - .pushpdf14devicefilter was defined in zdfilter.c, but depended on
+the optional pdf module's transparency features. Moves the definition of
+this routine to the conditionally included ztrans.c. Fix by L. Peter
+Deutsch, resolves SourceForge Bug 565019. (zdfilter.c [1.2.2.2],
+ztrans.c [1.13.2.2]: 2002/06/14 09:53:12 giles)
+ - As a result of a recent fix, an opdef table had more than 16
+entries, causing initialization to abort. backporting a fix by L. Peter
+Deutsch from HEAD. (ztrans.c [1.13.2.3]: 2002/06/14 15:26:00 giles)
+ - Correct the display device color mapping functions that were
+wrong. Change 4-bit mapping functions to standard VGA. Correct 16-bit native
+RGB and 32-bit xRGB mapping functions. Add RGB to color mapping functions
+for CMYK formats, needed by anti-aliasing. (dpmain.c [1.5.2.2],
+dwimg.c [1.3.2.2]: 2002/06/22 03:10:10 ghostgum)
+ - correct the ISO paper sizes in gs_statd.ps to match those in the
+Adobe PPD specification, technical note 5003. Fixes SourceForge bug #536877,
+"Paper sizes wrong in gs_statd.ps". (lib/gs_statd.ps [1.5.2.2]: 2002/07/18
+10:43:42 ghostgum)
+ - process comment lines when they straddle a buffer boundary, so
+that all DSC comments can be processed by the PDF writer. Fixes SourceForge
+bug #432040, DSC ignored when reading stdin. (iscan.c [1.5.6.2]: 2002/09/05
+08:30:38 ghostgum)
+ - copy comment lines inside a procedure which require a scanner
+refill to the operand stack, not the execution stack. Fixes SourceForge bug
+#605240, 070-01.ps fails in .parse_dsc_comments. (iscan.c [1.5.6.3]:
+2002/09/06 20:54:10 ghostgum)
+ - provide a meaningful error message when an immediately evaluated
+name can not be found. Fixes SourceForge bug #543185, Confusing diagnostics
+for //undefined. (interp.c [1.8.2.2], ziodev.c [1.6.2.2]: 2002/09/14
+11:59:15 ghostgum)
+ - Keep pagedevice and device views of .LockSafetyParams correct even
+after a 'restore' is used to unlock. The dictionary fed to the setpagedevice
+operator is allocated in the same VM space as currentpagedevice to avoid
+invalidaccess problems. Fixed SF #580029 and does not revert to the
+incorrect behaviour of bug #516379. (lib/gs_init.ps [1.40.2.11]: 2002/09/19
+17:05:05 ray)
+ - Fix : Overlapping format 4 CMap ranges, while arguably buggy, are
+commonly found in quite a few popular CJK TrueType fonts. Patch from Anthony
+Fok Tung-Ling. (lib/gs_ttf.ps [1.9.2.3]: 2002/09/20 15:35:22 igor)
+ - The constraint for FontBBox to be non-zero was not conforming and
+now is removed. (bfont.h [1.3.6.2], zbfont.c [1.7.4.2], zfcid0.c [1.7.2.3],
+zfcid1.c [1.4.4.2]: 2002/09/21 08:36:49 igor)
+ - Fix : Unwinding the patch from Anthony Fok Tung-Ling, because it
+caused regression with comparefiles/fonts.pdf . (lib/gs_ttf.ps [1.9.2.4]:
+2002/09/22 12:43:55 igor)
+ - Provide a meaningful error message when an immediately evaluated
+name in a procedure can not be found. Additional fix for SourceForge bug
+#543185, Confusing diagnostics for //undefined. (iscan.c [1.5.6.4],
+ziodev.c [1.6.2.3]: 2002/11/01 23:50:42 ghostgum)
+ - Redefine .runstdin with one bound to EPSF 'run' operator so that
+EPS files are handled correctly from %stdin. Code for skipping DOS EPS
+header now uses the EPS encapsulating run, instead of directly calling
+.runexec. (lib/gs_epsf.ps [1.2.6.5]: 2002/11/01 23:53:32 ghostgum)
+ - When processing an EPS file, remove any left over items on the
+operand and dictionary stacks. (lib/gs_epsf.ps [1.2.6.7]: 2002/11/12
+20:32:59 ghostgum)
+ - Fix the remaining security patch problems so that local/global
+state is correctly handled, both for the pagedevice as well as the
+PermitFile... userparam dictionary entries. Fixes bug #647685. Patch from
+Ray Johnston. (lib/gs_epsf.ps [1.2.6.11.2.2],
+lib/gs_init.ps [1.40.2.12.2.1], lib/gs_lev2.ps [1.7.2.4.2.2],
+lib/gs_setpd.ps [1.8.2.2.2.1]: 2003/03/31 13:02:22 giles)
+
+Delete all temporary files when the interpreter closes. (imain.c [1.19.2.2]:
+2002/09/05 10:26:09 ghostgum)
+
+Add command line options -dEPS, -dEPSCrop and -dEPSFitPage for handling
+Encapsulated PostScript files. (lib/gs_epsf.ps [1.2.6.2],
+lib/gs_init.ps [1.40.2.10]: 2002/09/14 12:17:26 ghostgum)
+
+Remove a debug message from previous EPS commit. (lib/gs_epsf.ps [1.2.6.3]:
+2002/09/14 12:45:02 ghostgum)
+
+Update version number and date for release. (lib/gs_init.ps [1.40.2.12]:
+2002/10/10 13:36:56 giles)
+
+Improvements to processing of EPS files. (lib/gs_epsf.ps [1.2.6.4]:
+2002/10/31 11:12:13 ghostgum)
+
+Correct -dEPSFitPage when the device has non-zero margins.
+(lib/gs_epsf.ps [1.2.6.6]: 2002/11/07 07:16:34 ghostgum)
+
+Correct the display device color mapping intended for the Macintosh.
+(gdevdsp.h [1.1.2.3]: 2002/11/13 07:19:56 ghostgum)
+
+Make sure resource use of .forcedef works with -dDELAYBIND. Patch by Alex
+Cherepanov. (lib/gs_res.ps [1.16.2.2]: 2002/11/18 20:31:52 ghostgum)
+
+Prevent access to .forceput. (lib/gs_epsf.ps [1.2.6.8]: 2002/11/20 06:44:59
+ghostgum)
+
+When processing multiple EPS files, call showpage if necessary for
+subsequent files. (lib/gs_epsf.ps [1.2.6.9]: 2002/11/20 06:46:35 ghostgum)
+
+When processing EPS files, empty the path after checking the page size.
+(lib/gs_epsf.ps [1.2.6.10]: 2002/11/21 09:59:46 ghostgum)
+
+Backport debug and unitialized variable fixes from HEAD. After a patch from
+Alexei A. Podtelezhnikov. (icontext.c [1.6.6.3], interp.c [1.8.2.3],
+iscan.c [1.5.6.5], ziodev.c [1.6.2.4]: 2002/12/01 15:10:20 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (bfont.h [1.3.6.2.2.1], btoken.h [1.4.6.1.2.1],
+ccfont.h [1.2.6.1.2.1], dpmain.c [1.5.2.2.2.1], dscparse.c [1.7.2.1.2.1],
+dscparse.h [1.6.2.2.2.1], dstack.h [1.3.4.1.2.1], dwdll.c [1.2.2.1.2.1],
+dwdll.h [1.3.2.1.2.1], dwimg.c [1.3.2.2.2.1], dwimg.h [1.4.2.2.2.1],
+dwinst.cpp [1.2.6.2.2.1], dwinst.h [1.2.6.3.2.1], dwmain.c [1.6.2.2.2.1],
+dwmain.h [1.3.2.2.2.1], dwmainc.c [1.8.2.2.2.1], dwnodll.c [1.1.2.2.2.1],
+dwreg.c [1.1.2.2.2.1], dwreg.h [1.1.2.2.2.1], dwsetup.cpp [1.5.6.2.2.1],
+dwsetup.h [1.2.6.2.2.1], dwtext.c [1.5.2.1.2.1], dwtext.h [1.4.2.2.2.1],
+dwuninst.cpp [1.2.6.2.2.1], dwuninst.h [1.2.6.2.2.1],
+errors.h [1.4.2.1.2.1], estack.h [1.2.6.1.2.1], files.h [1.4.2.1.2.1],
+gdevdsp.h [1.1.2.3.2.1], gdevdsp2.h [1.2.2.2.2.1], ghost.h [1.2.6.1.2.1],
+gs.c [1.6.2.1.2.1]: 2003/01/17 00:49:00 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (ialloc.c [1.2.6.1.2.1], ialloc.h [1.2.6.1.2.1],
+iapi.c [1.1.2.2.2.1], iapi.h [1.2.2.1.2.1], iastate.h [1.2.6.1.2.1],
+iastruct.h [1.2.6.1.2.1], ibnum.c [1.2.6.1.2.1], ibnum.h [1.2.6.1.2.1],
+iccfont.c [1.2.6.2.2.1], iccinit0.c [1.2.6.1.2.1], icfontab.c [1.2.6.1.2.1],
+ichar.h [1.3.6.1.2.1], ichar1.h [1.3.6.1.2.1], icharout.h [1.3.4.1.2.1],
+icid.h [1.2.6.1.2.1], icie.h [1.3.2.1.2.1], icolor.h [1.2.6.1.2.1],
+iconf.c [1.3.2.1.2.1], iconf.h [1.1.6.1.2.1], icontext.c [1.6.6.3.2.1],
+icontext.h [1.2.6.1.2.1], icremap.h [1.2.6.1.2.1], icsmap.h [1.2.6.1.2.1],
+icstate.h [1.4.6.2.2.1], iddict.h [1.2.6.1.2.1], iddstack.h [1.2.6.1.2.1],
+idebug.c [1.4.2.1.2.1], idebug.h [1.2.6.1.2.1], idict.c [1.4.4.1.2.1],
+idict.h [1.2.6.1.2.1], idictdef.h [1.2.6.1.2.1], idisp.c [1.2.2.2.2.1],
+idisp.h [1.1.2.1.2.1], idosave.h [1.2.6.1.2.1], idparam.c [1.3.6.1.2.1],
+idparam.h [1.3.6.1.2.1], idsdata.h [1.2.6.1.2.1], idstack.c [1.2.6.1.2.1],
+idstack.h [1.2.6.1.2.1], iesdata.h [1.2.6.1.2.1], iestack.h [1.2.6.1.2.1],
+ifcid.h [1.2.6.1.2.1], ifilter.h [1.3.6.1.2.1], ifilter2.h [1.2.6.1.2.1],
+ifont.h [1.6.4.1.2.1], ifont1.h [1.3.6.1.2.1], ifont2.h [1.2.6.1.2.1],
+ifont42.h [1.3.6.1.2.1], ifrpred.h [1.2.6.1.2.1], ifunc.h [1.3.6.3.2.1],
+ifwpred.h [1.2.6.1.2.1], igc.c [1.5.2.1.2.1], igc.h [1.2.6.1.2.1],
+igcref.c [1.3.2.1.2.1], igcstr.c [1.3.6.1.2.1], igcstr.h [1.2.6.1.2.1],
+igstate.h [1.3.6.1.2.1], iht.h [1.2.6.1.2.1], iimage.h [1.2.6.1.2.1],
+iimage2.h [1.2.6.1.2.1], iinit.c [1.3.4.1.2.1], iinit.h [1.2.6.1.2.1],
+ilevel.h [1.2.6.1.2.1], ilocate.c [1.4.2.1.2.1], imain.c [1.19.2.2.2.1],
+imain.h [1.3.2.1.2.1], imainarg.c [1.13.2.3.2.1], imainarg.h [1.3.2.1.2.1],
+imemory.h [1.2.6.1.2.1], iminst.h [1.5.2.1.2.1], iname.c [1.3.6.1.2.1],
+iname.h [1.2.6.1.2.1], inamedef.h [1.2.6.1.2.1], inameidx.h [1.2.6.1.2.1],
+inames.h [1.2.6.1.2.1], inamestr.h [1.2.6.1.2.1], inobtokn.c [1.2.6.1.2.1],
+inouparm.c [1.2.6.1.2.1], interp.c [1.8.2.3.2.1], interp.h [1.2.6.1.2.1],
+iosdata.h [1.2.6.1.2.1], iostack.h [1.2.6.1.2.1], ipacked.h [1.2.6.1.2.1],
+iparam.c [1.5.6.1.2.1], iparam.h [1.2.6.1.2.1], iparray.h [1.2.6.1.2.1],
+ipcolor.h [1.2.6.1.2.1], ireclaim.c [1.3.2.1.2.1], iref.h [1.5.4.1.2.1],
+isave.c [1.3.6.1.2.1], isave.h [1.2.6.1.2.1], iscan.c [1.5.6.5.2.1],
+iscan.h [1.4.6.1.2.1], iscanbin.c [1.5.6.1.2.1], iscanbin.h [1.2.6.1.2.1],
+iscannum.c [1.3.2.1.2.1], iscannum.h [1.2.6.1.2.1], isdata.h [1.2.6.1.2.1],
+isstate.h [1.2.6.1.2.1], istack.c [1.2.6.1.2.1], istack.h [1.2.6.1.2.1],
+isstate.h [1.2.6.1.2.1], istack.c [1.2.6.1.2.1], istack.h [1.2.6.1.2.1],
+istkparm.h [1.2.6.1.2.1], istream.h [1.2.6.1.2.1], istruct.h [1.2.6.1.2.1],
+itoken.h [1.2.6.1.2.1], iutil.c [1.3.2.1.2.1], iutil.h [1.2.6.1.2.1],
+iutil2.c [1.2.6.2.2.1], iutil2.h [1.2.6.2.2.1], ivmem2.h [1.2.6.1.2.1],
+ivmspace.h [1.2.6.1.2.1], main.h [1.3.2.1.2.1], oparc.h [1.2.6.1.2.1],
+opcheck.h [1.2.6.1.2.1], opdef.h [1.3.2.1.2.1], oper.h [1.2.6.1.2.1],
+opextern.h [1.2.6.1.2.1], ostack.h [1.2.6.1.2.1], sbhc.c [1.3.4.1.2.1],
+sbhc.h [1.2.6.1.2.1], sbwbs.c [1.2.6.1.2.1], sbwbs.h [1.2.6.1.2.1],
+sfilter1.c [1.6.4.1.2.1], shcgen.c [1.2.6.1.2.1], shcgen.h [1.2.6.1.2.1],
+smtf.c [1.2.6.1.2.1], smtf.h [1.2.6.1.2.1], store.h [1.2.6.1.2.1],
+zarith.c [1.4.6.1.2.1], zarray.c [1.2.6.1.2.1], zbfont.c [1.7.4.2.2.1],
+zbseq.c [1.4.6.1.2.1], zcfont.c [1.2.6.2.2.1], zchar.c [1.4.2.2.2.1],
+zchar1.c [1.7.2.2.2.1], zchar2.c [1.2.6.1.2.1], zchar32.c [1.2.6.1.2.1],
+zchar42.c [1.3.4.2.2.1], zcharout.c [1.4.4.2.2.1], zcharx.c [1.3.6.1.2.1],
+zcid.c [1.3.6.1.2.1], zcie.c [1.5.2.1.2.1], zcolor.c [1.4.6.1.2.1],
+zcolor1.c [1.3.6.1.2.1], zcolor2.c [1.4.2.1.2.1], zcontext.c [1.7.2.1.2.1],
+zcontrol.c [1.3.6.2.2.1], zcrd.c [1.2.6.1.2.1], zcsdevn.c [1.5.2.2.2.1],
+zcsindex.c [1.3.6.1.2.1], zcspixel.c [1.2.6.1.2.1], zcssepr.c [1.8.2.1.2.1],
+zdevcal.c [1.3.6.1.2.1], zdevice.c [1.3.6.2.2.1], zdevice2.c [1.4.2.2.2.1],
+zdfilter.c [1.2.2.2.2.1], zdict.c [1.3.6.1.2.1], zdouble.c [1.2.6.1.2.1],
+zdpnext.c [1.3.6.1.2.1], zdps.c [1.4.6.1.2.1], zdps1.c [1.3.4.1.2.1],
+zdscpars.c [1.12.2.1.2.1], zfarc4.c [1.2.2.1.2.1], zfbcp.c [1.3.6.1.2.1],
+zfcid.c [1.11.4.1.2.1], zfcid0.c [1.7.2.3.2.1], zfcid1.c [1.4.4.2.2.1],
+zfcmap.c [1.9.2.1.2.1], zfdctd.c [1.6.2.1.2.1], zfdcte.c [1.5.2.1.2.1],
+zfdecode.c [1.3.6.1.2.1], zfile.c [1.11.2.4.2.1], zfileio.c [1.12.2.1.2.1],
+zfilter.c [1.5.2.1.2.1], zfilter2.c [1.3.6.1.2.1], zfilterx.c [1.2.6.1.2.1],
+zfmd5.c [1.2.6.1.2.1], zfont.c [1.3.4.1.2.1], zfont0.c [1.3.6.1.2.1],
+zfont1.c [1.9.4.1.2.1], zfont2.c [1.4.2.1.2.1], zfont32.c [1.2.6.1.2.1],
+zfont42.c [1.5.6.1.2.1], zfproc.c [1.9.2.1.2.1], zfrsd.c [1.4.6.1.2.1],
+zfunc.c [1.6.6.3.2.1], zfunc0.c [1.3.6.2.2.1], zfunc3.c [1.2.6.2.2.1],
+zfunc4.c [1.7.4.2.2.1], zfzlib.c [1.3.6.1.2.1], zgeneric.c [1.3.6.1.2.1],
+zgstate.c [1.2.6.1.2.1], zhsb.c [1.2.6.1.2.1], zht.c [1.2.6.1.2.1],
+zht1.c [1.2.6.1.2.1], zht2.c [1.2.6.1.2.1], zicc.c [1.2.2.2.2.1],
+zimage.c [1.5.6.1.2.1], zimage2.c [1.4.2.1.2.1], zimage3.c [1.3.6.1.2.1],
+ziodev.c [1.6.2.4.2.1], ziodev2.c [1.3.6.1.2.1], zmath.c [1.3.6.1.2.1],
+zmatrix.c [1.4.6.1.2.1], zmedia2.c [1.3.2.1.2.1], zmisc.c [1.2.6.1.2.1],
+zmisc1.c [1.3.6.1.2.1], zmisc2.c [1.3.6.1.2.1], zmisc3.c [1.2.6.1.2.1],
+zpacked.c [1.2.6.1.2.1], zpaint.c [1.2.6.1.2.1], zpath.c [1.2.6.1.2.1],
+zpath1.c [1.2.6.1.2.1], zpcolor.c [1.3.6.1.2.1], zrelbit.c [1.2.6.1.2.1],
+zrop.c [1.2.6.1.2.1], zshade.c [1.4.6.2.2.1], zstack.c [1.2.6.1.2.1],
+zstring.c [1.2.6.1.2.1], zsysvm.c [1.2.6.1.2.1], ztoken.c [1.6.6.1.2.1],
+ztrans.c [1.13.2.3.2.1], ztrap.c [1.2.6.1.2.1], ztype.c [1.3.6.1.2.1],
+zupath.c [1.2.6.1.2.1], zusparam.c [1.3.6.2.2.1], zvmem.c [1.3.2.2.2.1],
+zvmem2.c [1.3.2.1.2.1]: 2003/01/17 00:49:04 giles)
+
+Update DSC parser to current Ghostgum Software version. Fixes SourceForge
+bug #657289, SEGV on Alpha in DSC parser. DETAILS: A %%Page line with
+mismatched parentheses around the page label was ignored, but parser state
+was updated to scanning pages, not setup section. This resulted in access to
+dsc-&gt;page[-1] which is invalid and caused a SEGV on Alpha. The updated
+code now checks that dsc-&gt;page_count is non-zero before accessing dsc-
+&gt;page[dsc-&gt;page_count-1]. It also makes a second attempt at finding
+the page ordinal at the end of a line like: %%Page: (label with closing
+parentheses 1 Other parser updates include support for DCS2 files (which is
+not quite compliant with DSC), removing a few compiler warnings,
+%%HiResBoundingBox, %%CropBox, %%PageCropBox, and being more resilient to
+incorrect DSC. (dscparse.c [1.7.2.1.2.2], dscparse.h [1.6.2.2.2.2]:
+2003/01/28 11:44:44 ghostgum)
+
+Treat files starting with %Pxxx as PostScript, not PDF. Process empty files
+without error. Fixes SourceForge bug #663150, Some PS files half-recognized
+as PDF files DETAILS: Changes for the 8.00 release to allow reading of PDF
+files from stdin caused files starting with %Pxxx to be half recognised as
+PDF files. This patch simplifies the PDF recognition code and makes it treat
+only files starting with "%PDF-" as PDF. Testing of this code found that
+zero length input files caused a PostScript error. This was an existing
+error which is fixed by the gs_epsf.ps patch and last line of the
+pdf_main.ps patch. (lib/gs_epsf.ps [1.2.6.11.2.1]: 2003/01/28 11:54:11
+ghostgum)
+
+</pre><h2><a name="7.06-Streams"></a>Streams</h2><pre>
+
+Remove some interpreter references from the graphics library. Partial fix
+for SourceForge bug #542848, "library #includes interpreter headers".
+(sarc4.c [1.5.2.2]: 2002/09/14 12:25:55 ghostgum)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(stat_.h [1.6.2.2], stdpre.h [1.4.2.2]: 2002/12/01 23:29:37 giles)
+
+</pre><h2><a name="7.06-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - When drawing with anti-aliasing on devices with less than
+8-bit/pixel, extract the correct existing pixel value.
+(gdevdbit.c [1.2.6.2]: 2002/06/22 03:09:05 ghostgum)
+ - (pdfwrite) Enforce writing FontBBox into CFF. Source Forge bug "[
+578899 ] Missing /FontBBox when converting to ps?" (gdevpsf.h [1.10.2.2],
+gdevpsf2.c [1.15.2.2]: 2002/07/16 13:33:49 igor)
+ - When compiled for A4 default page size, the initial page size is
+now 595x842pts. The initial printer page size in tenths of an inch now uses
+floating point. This may cause problems with old compilers that do not allow
+floating point calculations in initializers for integers. Add some casts to
+suppress warnings with the MS compiler. Fixes SourceForge bug #535997,
+"ps2pdf produces incorrect A4 page size". (gdevprn.h [1.6.6.2],
+gxdevice.h [1.4.6.3]: 2002/07/18 11:11:40 ghostgum)
+ - Provide an implementation of popen for Windows, to avoid the
+broken implementation in MSVC++ 5 and 6. This allows pswrite to output to a
+pipe on Windows. Fixes SourceForge bug #482038, pswrite does not write to
+pipe. (pipe_.h [1.2.6.2]: 2002/09/05 10:19:00 ghostgum)
+ - Propagate error codes from gs_distance_transform_inverse. Patch
+from Forrest Cahoon, improved. (gxstroke.c [1.2.6.2]: 2002/10/31 09:02:54
+igor)
+
+Remove some interpreter references from the graphics library. Partial fix
+for SourceForge bug #542848, "library #includes interpreter headers".
+(gsargs.c [1.4.2.2]: 2002/09/14 12:25:55 ghostgum)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (ctype_.h [1.2.6.1.2.1], dirent_.h [1.2.6.1.2.1],
+dos_.h [1.2.6.1.2.1], errno_.h [1.2.6.1.2.1], fcntl_.h [1.3.6.1.2.1],
+gconf.c [1.2.6.1.2.1], gconf.h [1.2.6.1.2.1], gdebug.h [1.3.2.1.2.1],
+gdevabuf.c [1.3.6.1.2.1], gdevbbox.c [1.4.2.1.2.1],
+gdevbbox.h [1.2.6.1.2.1], gdevcmap.c [1.2.6.1.2.1],
+gdevcmap.h [1.2.6.1.2.1], gdevdbit.c [1.2.6.2.2.1],
+gdevddrw.c [1.2.6.1.2.1], gdevdflt.c [1.3.6.1.2.1],
+gdevdgbr.c [1.2.6.1.2.1], gdevdrop.c [1.3.6.1.2.1],
+gdevemap.c [1.2.6.1.2.1], gdevhit.c [1.2.6.1.2.1], gdevm1.c [1.2.6.1.2.1],
+gdevm16.c [1.2.6.1.2.1], gdevm2.c [1.2.6.1.2.1], gdevm24.c [1.2.6.1.2.1],
+gdevm32.c [1.2.6.1.2.1], gdevm4.c [1.2.6.1.2.1], gdevm8.c [1.2.6.1.2.1],
+gdevmem.c [1.2.6.1.2.1], gdevmem.h [1.3.6.1.2.1], gdevmpla.c [1.2.6.1.2.1],
+gdevmpla.h [1.2.6.1.2.1], gdevmr1.c [1.2.6.1.2.1], gdevmr2n.c [1.2.6.1.2.1],
+gdevmr8n.c [1.2.6.1.2.1], gdevmrop.h [1.3.6.1.2.1],
+gdevmrun.c [1.2.6.1.2.1], gdevmrun.h [1.2.6.1.2.1],
+gdevnfwd.c [1.3.6.1.2.1], gdevp14.c [1.4.2.3.2.1], gdevpipe.c [1.4.4.1.2.1],
+gdevplnx.c [1.2.6.1.2.1], gdevplnx.h [1.2.6.1.2.1],
+gdevppla.c [1.2.6.1.2.1], gdevppla.h [1.2.6.1.2.1], gdevprn.c [1.5.6.2.2.1],
+gdevprn.h [1.6.6.2.2.1], gdevprna.c [1.2.6.1.2.1], gdevprna.h [1.2.6.1.2.1],
+gdevpsf.h [1.10.2.2.2.1], gdevpsf1.c [1.9.2.1.2.1],
+gdevpsf2.c [1.15.2.2.2.1], gdevpsfm.c [1.5.2.2.2.1],
+gdevpsft.c [1.8.2.1.2.1], gdevpsfu.c [1.7.2.1.2.1],
+gdevpsfx.c [1.9.2.1.2.1], gdevrops.c [1.3.6.1.2.1],
+gdevtrac.c [1.2.6.1.2.1], gdevvec.c [1.12.2.2.2.1], gdevvec.h [1.7.2.1.2.1],
+gp.h [1.8.2.3.2.1], gp_dosfe.c [1.2.6.2.2.1], gp_dosfs.c [1.2.6.3.2.1],
+gp_getnv.c [1.2.6.1.2.1], gp_msdos.c [1.2.6.1.2.1],
+gp_nsync.c [1.2.6.1.2.1], gp_psync.c [1.2.6.1.2.1],
+gp_strdl.c [1.2.6.1.2.1], gp_unifn.c [1.2.6.3.2.1],
+gp_unifs.c [1.6.2.2.2.1], gpcheck.h [1.2.6.1.2.1], gpgetenv.h [1.2.6.1.2.1],
+gpmisc.c [1.9.4.1.2.1], gpmisc.h [1.2.6.1.2.1], gpsync.h [1.2.6.1.2.1],
+gsalloc.c [1.11.2.2.2.1], gsalloc.h [1.2.6.1.2.1], gsalpha.c [1.2.6.1.2.1],
+gsalpha.h [1.2.6.1.2.1], gsalphac.c [1.2.6.1.2.1], gsalphac.h [1.2.6.1.2.1],
+gsargs.c [1.4.2.2.2.1], gsargs.h [1.4.2.1.2.1], gsbitcom.c [1.1.4.1.2.1],
+gsbitmap.h [1.2.6.1.2.1], gsbitops.c [1.3.4.1.2.1],
+gsbitops.h [1.2.6.1.2.1], gsbittab.c [1.2.6.1.2.1],
+gsbittab.h [1.2.6.1.2.1], gsccode.h [1.4.6.1.2.1], gsccolor.h [1.2.6.1.2.1],
+gscdef.c [1.15.2.4.2.1], gscdefs.h [1.2.6.1.2.1], gscdevn.c [1.6.2.1.2.1],
+gscdevn.h [1.3.6.1.2.1], gschar.c [1.3.6.1.2.1], gschar.h [1.3.6.1.2.1],
+gschar0.c [1.3.4.3.2.1], gscie.c [1.4.2.1.2.1], gscie.h [1.3.2.1.2.1],
+gsciemap.c [1.6.2.1.2.1], gscindex.h [1.2.6.1.2.1],
+gsclipsr.c [1.2.6.1.2.1], gsclipsr.h [1.2.6.1.2.1], gscolor.c [1.5.2.1.2.1],
+gscolor.h [1.3.6.1.2.1], gscolor1.c [1.4.2.1.2.1], gscolor1.h [1.2.6.1.2.1],
+gscolor2.c [1.6.6.1.2.1], gscolor2.h [1.3.6.1.2.1],
+gscolor3.c [1.4.6.1.2.1], gscolor3.h [1.2.6.1.2.1], gscompt.h [1.2.6.1.2.1],
+gscoord.c [1.5.6.1.2.1], gscoord.h [1.2.6.1.2.1], gscparam.c [1.7.2.1.2.1],
+gscpixel.c [1.3.6.1.2.1], gscpixel.h [1.2.6.1.2.1], gscpm.h [1.2.6.1.2.1],
+gscrd.c [1.2.6.1.2.1], gscrd.h [1.2.6.1.2.1], gscrdp.c [1.2.6.1.2.1],
+gscrdp.h [1.2.6.1.2.1], gscrypt1.c [1.2.6.1.2.1], gscrypt1.h [1.2.6.1.2.1],
+gscscie.c [1.4.2.1.2.1], gscsel.h [1.2.6.1.2.1], gscsepr.c [1.12.2.2.2.1],
+gscsepr.h [1.4.6.1.2.1], gscspace.c [1.4.6.1.2.1], gscspace.h [1.8.2.1.2.1],
+gscssub.c [1.3.2.1.2.1], gscssub.h [1.2.6.1.2.1], gsdcolor.h [1.3.6.1.2.1],
+gsdevice.c [1.11.2.1.2.1], gsdevice.h [1.3.6.1.2.1],
+gsdevmem.c [1.2.6.1.2.1], gsdfilt.c [1.3.2.1.2.1], gsdfilt.h [1.2.2.2.2.1],
+gsdparam.c [1.4.6.2.2.1], gsdpnext.h [1.2.6.1.2.1], gsdps.c [1.2.6.1.2.1],
+gsdps.h [1.2.6.1.2.1], gsdps1.c [1.2.6.1.2.1], gsdsrc.c [1.2.6.1.2.1],
+gsdsrc.h [1.3.6.1.2.1], gserror.h [1.2.6.1.2.1], gserrors.h [1.2.6.2.2.1],
+gsexit.h [1.4.2.1.2.1], gsfcid.c [1.5.4.1.2.1], gsfcmap.c [1.14.2.2.2.1],
+gsfcmap.h [1.4.6.1.2.1], gsfemu.c [1.2.6.1.2.1], gsflip.c [1.2.6.1.2.1],
+gsflip.h [1.2.6.1.2.1], gsfname.c [1.2.6.1.2.1], gsfname.h [1.2.6.1.2.1],
+gsfont.c [1.4.4.1.2.1], gsfont.h [1.2.6.1.2.1], gsfont0.c [1.2.6.1.2.1],
+gsfunc.c [1.4.6.1.2.1], gsfunc.h [1.4.6.1.2.1], gsfunc0.c [1.5.4.1.2.1],
+gsfunc0.h [1.2.6.1.2.1], gsfunc3.c [1.4.6.1.2.1], gsfunc3.h [1.2.6.1.2.1],
+gsfunc4.c [1.7.2.1.2.1], gsfunc4.h [1.2.6.1.2.1], gsgc.h [1.3.2.1.2.1],
+gshsb.c [1.2.6.1.2.1], gshsb.h [1.2.6.1.2.1], gsht.c [1.2.6.1.2.1],
+gsht.h [1.2.6.1.2.1], gsht1.c [1.3.2.1.2.1], gsht1.h [1.2.6.1.2.1],
+gshtscr.c [1.6.2.1.2.1], gshtx.c [1.2.6.1.2.1], gshtx.h [1.2.6.1.2.1],
+gsicc.c [1.5.2.1.2.1], gsicc.h [1.3.2.1.2.1], gsimage.c [1.4.2.1.2.1],
+gsimage.h [1.2.6.1.2.1], gsimpath.c [1.2.6.1.2.1], gsinit.c [1.3.2.1.2.1],
+gsio.h [1.5.2.1.2.1], gsiodev.c [1.5.2.1.2.1], gsiodevs.c [1.2.6.1.2.1],
+gsipar3x.h [1.3.6.1.2.1], gsiparam.h [1.4.6.1.2.1],
+gsiparm2.h [1.2.6.1.2.1], gsiparm3.h [1.4.6.1.2.1],
+gsiparm4.h [1.2.6.1.2.1], gsistate.c [1.4.6.1.2.1], gsjconf.h [1.2.6.1.2.1],
+gslib.c [1.5.2.1.2.1], gslib.h [1.2.6.1.2.1], gsline.c [1.2.6.1.2.1]:
+2003/01/17 00:49:00 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (gsline.h [1.2.6.1.2.1], gslparam.h [1.2.6.1.2.1],
+gsmalloc.c [1.3.6.1.2.1], gsmalloc.h [1.2.6.1.2.1],
+gsmatrix.c [1.2.6.1.2.1], gsmatrix.h [1.2.6.1.2.1],
+gsmdebug.h [1.3.2.1.2.1], gsmemlok.c [1.3.6.1.2.1],
+gsmemlok.h [1.2.6.1.2.1], gsmemory.c [1.4.2.1.2.1],
+gsmemory.h [1.3.2.1.2.1], gsmemraw.h [1.2.6.1.2.1],
+gsmemret.c [1.2.6.1.2.1], gsmemret.h [1.2.6.1.2.1], gsmisc.c [1.12.2.1.2.1],
+gsnogc.c [1.7.2.1.2.1], gsnogc.h [1.2.6.1.2.1], gsnorop.c [1.2.6.1.2.1],
+gsnotify.c [1.2.6.1.2.1], gsnotify.h [1.2.6.1.2.1], gspaint.c [1.2.6.1.2.1],
+gspaint.h [1.2.6.1.2.1], gsparam.c [1.4.6.1.2.1], gsparam.h [1.8.4.1.2.1],
+gsparam2.c [1.2.6.1.2.1], gsparams.c [1.2.6.1.2.1],
+gsparams.h [1.2.6.1.2.1], gsparamx.c [1.4.2.1.2.1],
+gsparamx.h [1.3.6.1.2.1], gspath.c [1.2.6.1.2.1], gspath.h [1.2.6.1.2.1],
+gspath1.c [1.3.4.1.2.1], gspath2.h [1.2.6.1.2.1], gspcolor.c [1.4.6.1.2.1],
+gspcolor.h [1.2.6.1.2.1], gspenum.h [1.2.6.1.2.1], gsptype1.c [1.3.2.1.2.1],
+gsptype1.h [1.2.6.1.2.1], gsptype2.c [1.5.2.1.2.1],
+gsptype2.h [1.4.2.1.2.1], gsrect.h [1.2.6.1.2.1], gsrefct.h [1.2.6.1.2.1],
+gsrop.c [1.2.6.1.2.1], gsrop.h [1.2.6.1.2.1], gsropc.c [1.2.6.1.2.1],
+gsropc.h [1.2.6.1.2.1], gsropt.h [1.4.2.1.2.1], gsroptab.c [1.2.6.1.2.1],
+gsshade.c [1.4.2.1.2.1], gsshade.h [1.3.6.1.2.1], gsstate.c [1.11.2.1.2.1],
+gsstate.h [1.2.6.1.2.1], gsstruct.h [1.8.2.1.2.1], gsstype.h [1.2.6.1.2.1],
+gstext.c [1.6.2.2.2.1], gstext.h [1.3.6.1.2.1], gstparam.h [1.7.6.1.2.1],
+gstrans.c [1.13.2.1.2.1], gstrans.h [1.6.6.1.2.1], gstrap.c [1.3.6.1.2.1],
+gstrap.h [1.3.6.1.2.1], gstype1.c [1.6.4.1.2.1], gstype1.h [1.2.6.1.2.1],
+gstype2.c [1.10.2.3.2.1], gstype42.c [1.12.2.2.2.1],
+gstypes.h [1.3.2.1.2.1], gsuid.h [1.2.6.1.2.1], gsutil.c [1.4.6.2.2.1],
+gsutil.h [1.3.6.2.2.1], gsxfont.h [1.2.6.1.2.1], gx.h [1.2.6.1.2.1],
+gxacpath.c [1.3.6.1.2.1], gxalloc.h [1.6.2.1.2.1], gxalpha.h [1.2.6.1.2.1],
+gxarith.h [1.2.6.1.2.1], gxband.h [1.2.6.1.2.1], gxbcache.c [1.2.6.1.2.1],
+gxbcache.h [1.2.6.1.2.1], gxbitfmt.h [1.2.6.1.2.1],
+gxbitmap.h [1.2.6.1.2.1], gxbitops.h [1.2.6.1.2.1], gxblend.c [1.2.2.1.2.1],
+gxblend.h [1.1.2.1.2.1], gxccache.c [1.5.2.1.2.1], gxccman.c [1.2.6.1.2.1],
+gxcdevn.h [1.2.6.1.2.1], gxchar.c [1.5.2.5.2.1], gxchar.h [1.2.6.2.2.1],
+gxchrout.c [1.2.6.1.2.1], gxchrout.h [1.2.6.1.2.1], gxcht.c [1.3.2.1.2.1],
+gxcid.h [1.3.6.1.2.1], gxcie.h [1.3.2.1.2.1], gxcindex.h [1.2.6.1.2.1],
+gxclbits.c [1.4.4.1.2.1], gxcldev.h [1.4.4.1.2.1], gxclfile.c [1.3.2.1.2.1],
+gxclimag.c [1.3.2.1.2.1], gxclio.h [1.2.6.1.2.1], gxclip.c [1.4.2.1.2.1],
+gxclip.h [1.2.6.1.2.1], gxclip2.c [1.3.6.1.2.1], gxclip2.h [1.2.6.1.2.1],
+gxclipm.c [1.3.6.1.2.1], gxclipm.h [1.2.6.1.2.1], gxclipsr.h [1.2.6.1.2.1],
+gxclist.c [1.3.6.1.2.1], gxclist.h [1.2.6.1.2.1], gxcllzw.c [1.2.6.1.2.1],
+gxclmem.c [1.2.6.1.2.1], gxclmem.h [1.2.6.1.2.1], gxclpage.c [1.2.6.1.2.1],
+gxclpage.h [1.2.6.1.2.1], gxclpath.c [1.9.2.1.2.1],
+gxclpath.h [1.6.6.1.2.1], gxclrast.c [1.9.2.1.2.1],
+gxclread.c [1.3.4.1.2.1], gxclrect.c [1.2.6.1.2.1],
+gxclutil.c [1.5.2.1.2.1], gxclzlib.c [1.2.6.1.2.1], gxcmap.c [1.3.6.1.2.1],
+gxcmap.h [1.2.6.1.2.1], gxcolor2.h [1.4.6.1.2.1], gxcomp.h [1.2.6.1.2.1],
+gxcoord.h [1.2.6.1.2.1], gxcpath.c [1.3.6.1.2.1], gxcpath.h [1.2.6.1.2.1],
+gxcspace.h [1.4.6.1.2.1], gxctable.c [1.3.6.1.2.1],
+gxctable.h [1.2.6.1.2.1], gxcvalue.h [1.2.6.1.2.1],
+gxdcconv.c [1.3.6.1.2.1], gxdcconv.h [1.2.6.1.2.1],
+gxdcolor.c [1.3.6.1.2.1], gxdcolor.h [1.3.6.1.2.1], gxdda.h [1.2.6.1.2.1],
+gxdevbuf.h [1.2.6.1.2.1], gxdevcli.h [1.5.2.2.2.1],
+gxdevice.h [1.4.6.3.2.1], gxdevmem.h [1.2.6.1.2.1],
+gxdevrop.h [1.2.6.1.2.1], gxdht.h [1.4.6.1.2.1], gxdhtres.h [1.2.6.1.2.1],
+gxdither.h [1.2.6.1.2.1], gxfarith.h [1.3.6.1.2.1],
+gxfcache.h [1.2.6.1.2.1], gxfcid.h [1.6.6.1.2.1], gxfcmap.h [1.8.2.1.2.1],
+gxfill.c [1.8.2.1.2.1], gxfixed.h [1.3.4.1.2.1], gxfmap.h [1.3.6.1.2.1],
+gxfont.h [1.3.4.1.2.1], gxfont0.h [1.3.6.1.2.1], gxfont1.h [1.5.4.1.2.1],
+gxfont42.h [1.4.6.1.2.1], gxfrac.h [1.3.4.1.2.1], gxftype.h [1.2.6.1.2.1],
+gxfunc.h [1.3.6.1.2.1], gxgetbit.h [1.2.6.1.2.1], gxhint1.c [1.2.6.1.2.1],
+gxhint2.c [1.2.6.1.2.1], gxhint3.c [1.3.2.1.2.1], gxht.c [1.2.6.2.2.1],
+gxht.h [1.2.6.1.2.1], gxhtbit.c [1.3.6.1.2.1], gxhttile.h [1.2.6.1.2.1],
+gxhttype.h [1.2.6.1.2.1], gxi12bit.c [1.2.6.1.2.1],
+gxiclass.h [1.2.6.1.2.1], gxicolor.c [1.3.2.1.2.1], gxidata.c [1.4.6.1.2.1],
+gxifast.c [1.4.2.1.2.1], gximag3x.c [1.7.6.1.2.1], gximag3x.h [1.3.6.1.2.1],
+gximage.c [1.2.6.1.2.1], gximage.h [1.2.6.1.2.1], gximage1.c [1.5.6.1.2.1],
+gximage2.c [1.2.6.1.2.1], gximage3.c [1.6.6.1.2.1],
+gximage3.h [1.4.6.1.2.1], gximage4.c [1.3.6.1.2.1], gximono.c [1.2.6.1.2.1],
+gxino12b.c [1.2.6.1.2.1], gxiodev.h [1.2.6.1.2.1], gxiparam.h [1.2.6.1.2.1],
+gxipixel.c [1.2.6.1.2.1], gxiscale.c [1.2.6.2.2.1],
+gxistate.h [1.6.6.1.2.1], gxline.h [1.2.6.1.2.1], gxlum.h [1.2.6.1.2.1],
+gxmatrix.h [1.4.6.1.2.1], gxmclip.c [1.2.6.1.2.1], gxmclip.h [1.2.6.1.2.1],
+gxobj.h [1.2.6.1.2.1], gxop1.h [1.2.6.1.2.1], gxp1fill.c [1.2.6.1.2.1],
+gxp1impl.h [1.2.6.1.2.1], gxpageq.c [1.2.6.1.2.1], gxpageq.h [1.2.6.1.2.1],
+gxpaint.c [1.2.6.1.2.1], gxpaint.h [1.2.6.1.2.1], gxpath.c [1.2.6.1.2.1],
+gxpath.h [1.2.6.1.2.1], gxpath2.c [1.2.6.1.2.1], gxpcache.h [1.2.6.1.2.1],
+gxpcmap.c [1.3.6.1.2.1], gxpcolor.h [1.2.6.1.2.1], gxpcopy.c [1.3.6.1.2.1],
+gxpdash.c [1.2.6.1.2.1], gxpflat.c [1.2.6.1.2.1], gxropc.h [1.2.6.1.2.1],
+gxrplane.h [1.2.6.1.2.1], gxsample.c [1.2.6.1.2.1],
+gxsample.h [1.2.6.1.2.1], gxshade.c [1.6.2.1.2.1], gxshade.h [1.4.2.1.2.1],
+gxshade1.c [1.9.2.1.2.1], gxshade4.c [1.6.2.1.2.1],
+gxshade4.h [1.2.6.1.2.1], gxshade6.c [1.3.6.1.2.1], gxstate.h [1.2.6.1.2.1],
+gxstdio.h [1.2.6.1.2.1], gxstroke.c [1.2.6.2.2.1], gxsync.c [1.2.6.1.2.1],
+gxsync.h [1.2.6.1.2.1], gxtext.h [1.7.2.1.2.1], gxtmap.h [1.2.6.1.2.1],
+gxttf.h [1.2.6.1.2.1], gxtype1.c [1.8.4.1.2.1], gxtype1.h [1.5.4.1.2.1],
+gxxfont.h [1.2.6.1.2.1], gzacpath.h [1.2.6.1.2.1], gzcpath.h [1.2.6.1.2.1],
+gzht.h [1.4.4.1.2.1], gzline.h [1.2.6.1.2.1], gzpath.h [1.3.6.1.2.1],
+gzstate.h [1.5.2.1.2.1], jerror_.h [1.2.6.2.2.1], malloc_.h [1.2.6.1.2.1],
+math_.h [1.2.6.1.2.1], md5.c [1.2.8.1], md5.h [1.1.8.1],
+memory_.h [1.2.6.1.2.1], pipe_.h [1.2.6.2.2.1], time_.h [1.3.2.2.2.1],
+unistd_.h [1.4.2.1.2.1], vmsmath.h [1.2.6.1.2.1], windows_.h [1.2.6.1.2.1]:
+2003/01/17 00:49:03 giles)
+
+Update release date for final 7.06 release. (gscdef.c [1.15.2.4.2.2]:
+2003/02/09 16:20:05 giles)
+
+Add pngalpha device that uses RGBA, with the alpha channel providing pixel
+coverage. Used for generating PNG images with a transparent background.
+(gdevprn.h [1.6.6.2.2.2]: 2003/03/11 11:59:10 ghostgum)
+
+</pre><h2><a name="7.06-Other"></a>Other</h2><pre>
+
+Add a configure option to enable COMPILE_INITS. After a patch from Michael
+Sweet. (Makefile.in [1.1.4.8], configure.ac [1.4.4.10]: 2002/05/03 03:40:11
+giles)
+
+Add a configure option for setting the name of the ghostscript executable.
+From a patch by Michael Sweet. (Makefile.in [1.1.4.9],
+configure.ac [1.4.4.11]: 2002/05/03 07:26:21 giles)
+
+Add a .cvsignore. (ijs/.cvsignore [1.1.2.1]: 2002/09/29 17:53:27 giles)
+
+Remove remaining elements of support for K&amp;R (pre-ansi) C. We no longer
+support building ghostscript tt way, but the remaining dead code causes
+confusion for some users. Closes Sourceforge bug #618048.
+(Makefile.in [1.1.4.10]: 2002/10/10 00:24:01 giles)
+
+Set USE_ASM to zero explicitly. (Makefile.in [1.1.4.11]: 2002/10/10 12:47:49
+giles)
+
+Backport debug and unitialized variable fixes from HEAD. After a patch from
+Alexei A. Podtelezhnikov. (gdevp14.c [1.4.2.2], gsalloc.c [1.11.2.2],
+gxht.c [1.2.6.2]: 2002/12/01 15:10:20 giles)
+
+Backport additional cast and initialization fixes. (gdevp14.c [1.4.2.3]:
+2002/12/01 18:02:41 giles)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(time_.h [1.3.2.2]: 2002/12/01 23:29:37 giles)
+
+Backport MacOS build updates for Metrowerks CW8 from HEAD.
+(macsystypes.h [1.1.4.3]: 2002/12/01 23:29:37 giles)
+
+Add working 'distclean' and 'maintainer-clean' targets to the autoconf
+makefile. Backport from HEAD. (Makefile.in [1.1.4.12]: 2002/12/02 00:10:24
+giles)
+
+Update release date for second candidate. Also adds a dummy 'check' target
+to the autoconf makefile for standards compliance. (Makefile.in [1.1.4.13]:
+2002/12/02 01:55:46 giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (Makefile.in [1.1.4.13.2.1], gp_mac.h [1.1.4.2.2.1],
+gp_mswin.h [1.4.2.1.2.1], gsdll.h [1.3.2.2.2.1], gsdllos2.h [1.2.6.1.2.1],
+gsdllwin.h [1.3.2.1.2.1], gsjmorec.h [1.3.4.1.2.1]: 2003/01/17 00:49:00
+giles)
+
+Apply standard GNU license banner at the request of RMS. Patch from Brett
+Smith. (gspmdrv.h [1.2.6.1.2.1], iutilasm.asm [1.2.6.1.2.1],
+macsystypes.h [1.1.4.3.2.1], vms_x_fix.h [1.1.2.2.2.1]: 2003/01/17 00:49:03
+giles)
+
+Define the RM macro for the benifit of the 'clean' targets in the autoconf
+build. (Makefile.in [1.1.4.13.2.2]: 2003/02/09 17:20:51 giles)
+
+<hr>
+
+<h1><a name="Version7.05"></a>Version 7.05 (2002-04-22)</h1>
+
+<p>This is the first release of the stable 7.0x series under the GNU
+GPL, following one year after the release of 7.00. The license change in
+the major reason for this release, and we hope the community of
+Free Software users will enjoy the much improved features of the new
+stable branch.
+
+<p>Another major change over the 7.04 release is a improved asian
+language support from the gs-cjk team. This is a new version of the
+work released with 6.53.
+
+<p>And of course there are the usual bug fixes and minor improvements.
+
+<p>At the time of release, the following bugs were open against all
+ghostscript versions:
+
+219798,
+405342,
+406979,
+407342,
+414947,
+414985,
+415142,
+418241,
+423838,
+427193,
+427347,
+428891,
+428973,
+432040,
+434277,
+437285,
+446344,
+446672,
+448199,
+453969,
+458261,
+458500,
+458775,
+458780,
+459647,
+462221,
+465720,
+465936,
+468762,
+474745,
+475147,
+477644,
+482038,
+483629,
+484752,
+484753,
+485510,
+487953,
+493348,
+495319,
+498595,
+503794,
+505429,
+506375,
+508081,
+508675,
+509646,
+510808,
+511232,
+513905,
+514616,
+514616,
+515475,
+516653,
+517349,
+520686,
+521354,
+521664,
+521916,
+522486,
+524292,
+525508,
+526099,
+526491,
+528647,
+529103,
+529578,
+530011,
+530588,
+533467,
+534637,
+535366,
+535752,
+535836,
+535997,
+536877,
+538033,
+538042,
+538055,
+538267,
+538311,
+538428,
+539239,
+539327,
+539359,
+542535,
+542625,
+542664,
+542786,
+542848,
+543185,
+544247,
+544365,
+544774,
+544996,
+545003,
+545177,
+545478,
+546823,
+547102,
+547111.
+
+<h3><a name="7.05_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version. Users of the 6.5x versions of GNU
+Ghostscript will want to check the History for a complete list of changes since that version.
+Authors of drivers with potential security implications are also encouraged to review
+the security changes introduced with 6.53/7.04.
+
+<pre>
+
+
+
+<h2><a name="7.05-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - corrects a typo in the new Id: line (doc/index.html [1.2.4.2]:
+2002/04/10 09:45:40 giles)
+ - the url for the guide to international paper sizes has changed.
+Thanks to Nelson Beebe for finding th e update. (doc/Use.htm [1.33.2.7]:
+2002/04/14 01:10:01 giles)
+ - Fix typo in cvs2hist invocation example
+(doc/Release.htm [1.40.2.12]: 2002/04/17 01:42:58 giles)
+
+Documents the work-around of using '#' instead of '=' to separate command
+line options from their arguments. The was previously listed only as a quirk
+of the Wacom build on MS-DOS, but is also needed on win32 because the
+command shell treats '=' as whitespace in passing arguments to batch files
+(like ps2pdf.bat). Closes SourceForge bug #483066. Also documents that
+MS-DOS is no longer a supported operating system. (doc/Use.htm [1.33.2.4]:
+2002/02/01 19:43:02 giles)
+
+Improves branch handling in cvs2hist, raph's patch from HEAD. Also documents
+the new options. (doc/Release.htm [1.40.2.4]: 2002/02/06 23:31:10 giles)
+
+Removes mention of SourceForge Bug #223005, which was closed before the 7.00
+release. (doc/Issues.htm [1.15.2.3]: 2002/02/21 20:33:08 giles)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(doc/API.htm [1.11.2.4],
+doc/Bug-form.htm [1.23.2.3], doc/Bug-info.htm [1.20.2.3],
+doc/C-style.htm [1.21.2.3], doc/Commprod.htm [1.15.2.3],
+doc/Current.htm [1.13.2.3], doc/DLL.htm [1.15.2.3],
+doc/Develop.htm [1.47.2.4], doc/Devices.htm [1.34.2.5],
+doc/Drivers.htm [1.21.2.3], doc/Fonts.htm [1.22.2.3],
+doc/Helpers.htm [1.17.2.3], doc/History1.htm [1.13.2.3],
+doc/History2.htm [1.13.2.3], doc/History3.htm [1.13.2.3],
+doc/History4.htm [1.13.2.3], doc/History5.htm [1.15.2.3],
+doc/History6.htm [1.30.2.3], doc/History7.htm [1.5.2.4],
+doc/Htmstyle.htm [1.18.2.3], doc/Humor.htm [1.3.2.1],
+doc/Install.htm [1.26.2.3], doc/Issues.htm [1.15.2.4],
+doc/Language.htm [1.34.2.5], doc/Lib.htm [1.14.2.3],
+doc/Maintain.htm [1.23.2.3], doc/Make.htm [1.36.2.6],
+doc/New-user.htm [1.30.2.3], doc/News.htm [1.90.2.5],
+doc/Projects.htm [1.33.2.3], doc/Ps-style.htm [1.13.2.3],
+doc/Ps2epsi.htm [1.15.2.3], doc/Ps2pdf.htm [1.32.2.3],
+doc/Psfiles.htm [1.22.2.3], doc/Readme.htm [1.31.2.3],
+doc/Release.htm [1.40.2.5], doc/Source.htm [1.13.2.3],
+doc/Tester.htm [1.14.2.3], doc/Unix-lpr.htm [1.13.2.3],
+doc/Use.htm [1.33.2.5], doc/Xfonts.htm [1.13.2.3]: 2002/02/22 19:45:53 ray)
+
+Removes auto-generated plain text versions of html documentation from cvs
+and makes their creation an explicit part of the release process.
+(doc/Release.htm [1.40.2.6]: 2002/02/25 21:43:20 giles)
+
+Add example code to doc/API.htm showing how to call the Ghostscript DLL as a
+PostScript to PDF convertor. (doc/API.htm [1.11.2.5]: 2002/03/12 07:15:16
+ghostgum)
+
+Update msvc32.mak and documentation to support compilation with Microsoft
+Visual Studio .NET. This requires MSVC_VERSION=7. (doc/Make.htm [1.36.2.7]:
+2002/03/12 07:21:30 ghostgum)
+
+Documents how to build a Windows self-extracting archive for a ghostscript
+distribution (doc/Release.htm [1.40.2.7]: 2002/03/12 07:25:12 ghostgum)
+
+gs-cjk project : add new documents CJK.htm and CJKTTCID.htm, add references
+to Fonts.htm, Readme.htm, Use.htm add targets to unixinst.mak. Fix by Suzuki
+Toshiya and Taiji Yamada. (doc/Fonts.htm [1.22.2.4],
+doc/Readme.htm [1.31.2.4], doc/Use.htm [1.33.2.6]: 2002/04/02 14:26:38
+mpsuzuki)
+
+gs-cjk project : add CIDFnmap samples add references to Develop.htm add
+targets to unixinst.mak (doc/Develop.htm [1.47.2.5]: 2002/04/02 14:47:42
+mpsuzuki)
+
+add a missing Id: line (doc/index.html [1.2.4.1]: 2002/04/10 09:19:35 giles)
+
+add new files to the Developer documentation (doc/Develop.htm [1.47.2.6]:
+2002/04/10 09:44:24 giles)
+
+mark this as a GNU version and bump the release number
+(doc/News.htm [1.90.2.6]: 2002/04/15 05:47:56 giles)
+
+Update version and date for the 7.05rc1. (doc/API.htm [1.11.2.6],
+doc/Bug-form.htm [1.23.2.4], doc/Bug-info.htm [1.20.2.4],
+doc/C-style.htm [1.21.2.4], doc/Commprod.htm [1.15.2.4],
+doc/Current.htm [1.13.2.4], doc/DLL.htm [1.15.2.4],
+doc/Develop.htm [1.47.2.7], doc/Devices.htm [1.34.2.6],
+doc/Drivers.htm [1.21.2.4], doc/Fonts.htm [1.22.2.5],
+doc/Helpers.htm [1.17.2.4], doc/History1.htm [1.13.2.4],
+doc/History2.htm [1.13.2.4], doc/History3.htm [1.13.2.4],
+doc/History4.htm [1.13.2.4], doc/History5.htm [1.15.2.4],
+doc/History6.htm [1.30.2.4], doc/History7.htm [1.5.2.5],
+doc/Htmstyle.htm [1.18.2.4], doc/Install.htm [1.26.2.4],
+doc/Issues.htm [1.15.2.5], doc/Language.htm [1.34.2.6],
+doc/Lib.htm [1.14.2.4], doc/Maintain.htm [1.23.2.4],
+doc/Make.htm [1.36.2.8], doc/New-user.htm [1.30.2.4],
+doc/News.htm [1.90.2.7], doc/Projects.htm [1.33.2.4],
+doc/Ps-style.htm [1.13.2.4], doc/Ps2epsi.htm [1.15.2.4],
+doc/Ps2pdf.htm [1.32.2.4], doc/Psfiles.htm [1.22.2.4],
+doc/Readme.htm [1.31.2.5], doc/Release.htm [1.40.2.8],
+doc/Source.htm [1.13.2.4], doc/Tester.htm [1.14.2.4],
+doc/Unix-lpr.htm [1.13.2.4], doc/Use.htm [1.33.2.8],
+doc/Xfonts.htm [1.13.2.4], doc/gs-vms.hlp [1.12.2.3],
+man/dvipdf.1 [1.10.2.3], man/font2c.1 [1.10.2.3], man/gs.1 [1.10.2.3],
+man/gslp.1 [1.10.2.3], man/gsnd.1 [1.10.2.3], man/pdf2dsc.1 [1.10.2.3],
+man/pdf2ps.1 [1.12.2.3], man/pdfopt.1 [1.10.2.3], man/pf2afm.1 [1.10.2.3],
+man/pfbtopfa.1 [1.11.2.3], man/printafm.1 [1.10.2.3],
+man/ps2ascii.1 [1.10.2.3], man/ps2epsi.1 [1.10.2.3],
+man/ps2pdf.1 [1.14.2.3], man/ps2pdfwr.1 [1.13.2.3], man/ps2ps.1 [1.17.2.3],
+man/wftopfa.1 [1.10.2.3]: 2002/04/15 19:20:09 giles)
+
+Document the -dBATCH option in the manpage. Strengthen the wording for
+-dSAFER and improve the ordering of the option descriptions.
+(man/gs.1 [1.10.2.4]: 2002/04/15 19:54:06 giles)
+
+Update the release documentation to better reflect current practice.
+(doc/Release.htm [1.40.2.9]: 2002/04/15 21:40:02 giles)
+
+Documentation updates for a revised 7.05rc1. (doc/API.htm [1.11.2.7],
+doc/Bug-form.htm [1.23.2.5], doc/Bug-info.htm [1.20.2.5],
+doc/C-style.htm [1.21.2.5], doc/Commprod.htm [1.15.2.5],
+doc/Current.htm [1.13.2.5], doc/DLL.htm [1.15.2.5],
+doc/Develop.htm [1.47.2.8], doc/Devices.htm [1.34.2.7],
+doc/Drivers.htm [1.21.2.5], doc/Fonts.htm [1.22.2.6],
+doc/Helpers.htm [1.17.2.5], doc/History1.htm [1.13.2.5],
+doc/History2.htm [1.13.2.5], doc/History3.htm [1.13.2.5],
+doc/History4.htm [1.13.2.5], doc/History5.htm [1.15.2.5],
+doc/History6.htm [1.30.2.5], doc/History7.htm [1.5.2.6],
+doc/Htmstyle.htm [1.18.2.5], doc/Install.htm [1.26.2.5],
+doc/Issues.htm [1.15.2.6], doc/Language.htm [1.34.2.7],
+doc/Lib.htm [1.14.2.5], doc/Maintain.htm [1.23.2.5],
+doc/Make.htm [1.36.2.9], doc/New-user.htm [1.30.2.5],
+doc/News.htm [1.90.2.8], doc/Projects.htm [1.33.2.5],
+doc/Ps-style.htm [1.13.2.5], doc/Ps2epsi.htm [1.15.2.5],
+doc/Ps2pdf.htm [1.32.2.5], doc/Psfiles.htm [1.22.2.5],
+doc/Readme.htm [1.31.2.6], doc/Release.htm [1.40.2.10],
+doc/Source.htm [1.13.2.5], doc/Tester.htm [1.14.2.5],
+doc/Unix-lpr.htm [1.13.2.5], doc/Use.htm [1.33.2.9],
+doc/Xfonts.htm [1.13.2.5], doc/gs-vms.hlp [1.12.2.4]: 2002/04/17 01:08:26
+giles)
+
+Documentation updates for a revised 7.05rc1. (man/dvipdf.1 [1.10.2.4],
+man/font2c.1 [1.10.2.4], man/gs.1 [1.10.2.5], man/gslp.1 [1.10.2.4],
+man/gsnd.1 [1.10.2.4], man/pdf2dsc.1 [1.10.2.4], man/pdf2ps.1 [1.12.2.4],
+man/pdfopt.1 [1.10.2.4], man/pf2afm.1 [1.10.2.4], man/pfbtopfa.1 [1.11.2.4],
+man/printafm.1 [1.10.2.4], man/ps2ascii.1 [1.10.2.4],
+man/ps2epsi.1 [1.10.2.4], man/ps2pdf.1 [1.14.2.4],
+man/ps2pdfwr.1 [1.13.2.4], man/ps2ps.1 [1.17.2.4], man/wftopfa.1 [1.10.2.4]:
+2002/04/17 01:08:37 giles)
+
+Update release date for revised 7.05rc1. (doc/API.htm [1.11.2.8],
+doc/Bug-form.htm [1.23.2.6], doc/Bug-info.htm [1.20.2.6],
+doc/C-style.htm [1.21.2.6], doc/Commprod.htm [1.15.2.6],
+doc/Current.htm [1.13.2.6], doc/DLL.htm [1.15.2.6],
+doc/Develop.htm [1.47.2.9], doc/Devices.htm [1.34.2.8],
+doc/Drivers.htm [1.21.2.6], doc/Fonts.htm [1.22.2.7],
+doc/Helpers.htm [1.17.2.6], doc/History1.htm [1.13.2.6],
+doc/History2.htm [1.13.2.6], doc/History3.htm [1.13.2.6],
+doc/History4.htm [1.13.2.6], doc/History5.htm [1.15.2.6],
+doc/History6.htm [1.30.2.6], doc/History7.htm [1.5.2.7],
+doc/Htmstyle.htm [1.18.2.6], doc/Install.htm [1.26.2.6],
+doc/Issues.htm [1.15.2.7], doc/Language.htm [1.34.2.8],
+doc/Lib.htm [1.14.2.6], doc/Maintain.htm [1.23.2.6],
+doc/Make.htm [1.36.2.10], doc/New-user.htm [1.30.2.6],
+doc/News.htm [1.90.2.9], doc/Projects.htm [1.33.2.6],
+doc/Ps-style.htm [1.13.2.6], doc/Ps2epsi.htm [1.15.2.6],
+doc/Ps2pdf.htm [1.32.2.6], doc/Psfiles.htm [1.22.2.6],
+doc/Readme.htm [1.31.2.7], doc/Release.htm [1.40.2.11],
+doc/Source.htm [1.13.2.6], doc/Tester.htm [1.14.2.6],
+doc/Unix-lpr.htm [1.13.2.6], doc/Use.htm [1.33.2.10],
+doc/Xfonts.htm [1.13.2.6], doc/gs-vms.hlp [1.12.2.5]: 2002/04/17 01:13:15
+giles)
+
+Update release date for revised 7.05rc1. (man/dvipdf.1 [1.10.2.5],
+man/font2c.1 [1.10.2.5], man/gs.1 [1.10.2.6], man/gslp.1 [1.10.2.5],
+man/gsnd.1 [1.10.2.5], man/pdf2dsc.1 [1.10.2.5], man/pdf2ps.1 [1.12.2.5],
+man/pdfopt.1 [1.10.2.5], man/pf2afm.1 [1.10.2.5], man/pfbtopfa.1 [1.11.2.5],
+man/printafm.1 [1.10.2.5], man/ps2ascii.1 [1.10.2.5],
+man/ps2epsi.1 [1.10.2.5], man/ps2pdf.1 [1.14.2.5],
+man/ps2pdfwr.1 [1.13.2.5], man/ps2ps.1 [1.17.2.5], man/wftopfa.1 [1.10.2.5]:
+2002/04/17 01:13:21 giles)
+
+update changelog for 7.05rc1 (doc/Changes.htm [1.28.2.4],
+doc/History7.htm [1.5.2.8], doc/News.htm [1.90.2.10]: 2002/04/17 01:43:27
+giles)
+
+Minor clean-up for GNU coding standards. (doc/Readme.htm [1.31.2.8]: 2002/04/17
+01:52:38 giles)
+
+Remove the chess.ps example file due to license ambiguity.
+(doc/Psfiles.htm [1.22.2.7]: 2002/04/18 06:01:27 giles)
+
+update the language describing the gnu portion of the license options to
+reflect current practice. (doc/Commprod.htm [1.15.2.7]: 2002/04/19 01:45:01
+giles)
+
+Add the 'stp' driver from the gimp-print project, and compile it in by
+default from the autoconf build if libgimprint is found.
+(doc/Devices.htm [1.34.2.9]: 2002/04/19 22:23:09 giles)
+
+bump release date for 7.05rc2 (doc/API.htm [1.11.2.9],
+doc/Bug-form.htm [1.23.2.7], doc/Bug-info.htm [1.20.2.7],
+doc/C-style.htm [1.21.2.7], doc/Commprod.htm [1.15.2.8],
+doc/Current.htm [1.13.2.7], doc/DLL.htm [1.15.2.7],
+doc/Develop.htm [1.47.2.10], doc/Devices.htm [1.34.2.10],
+doc/Drivers.htm [1.21.2.7], doc/Fonts.htm [1.22.2.8],
+doc/Helpers.htm [1.17.2.7], doc/History1.htm [1.13.2.7],
+doc/History2.htm [1.13.2.7], doc/History3.htm [1.13.2.7],
+doc/History4.htm [1.13.2.7], doc/History5.htm [1.15.2.7],
+doc/History6.htm [1.30.2.7], doc/History7.htm [1.5.2.9],
+doc/Htmstyle.htm [1.18.2.7], doc/Install.htm [1.26.2.7],
+doc/Issues.htm [1.15.2.8], doc/Language.htm [1.34.2.9],
+doc/Lib.htm [1.14.2.7], doc/Maintain.htm [1.23.2.7],
+doc/Make.htm [1.36.2.11], doc/New-user.htm [1.30.2.7],
+doc/News.htm [1.90.2.11], doc/Projects.htm [1.33.2.7],
+doc/Ps-style.htm [1.13.2.7], doc/Ps2epsi.htm [1.15.2.7],
+doc/Ps2pdf.htm [1.32.2.7], doc/Psfiles.htm [1.22.2.8],
+doc/Readme.htm [1.31.2.9], doc/Release.htm [1.40.2.13],
+doc/Source.htm [1.13.2.7], doc/Tester.htm [1.14.2.7],
+doc/Unix-lpr.htm [1.13.2.7], doc/Use.htm [1.33.2.11],
+doc/Xfonts.htm [1.13.2.7], doc/gs-vms.hlp [1.12.2.6],
+man/dvipdf.1 [1.10.2.6], man/font2c.1 [1.10.2.6], man/gs.1 [1.10.2.7],
+man/gslp.1 [1.10.2.6], man/gsnd.1 [1.10.2.6], man/pdf2dsc.1 [1.10.2.6],
+man/pdf2ps.1 [1.12.2.6], man/pdfopt.1 [1.10.2.6], man/pf2afm.1 [1.10.2.6],
+man/pfbtopfa.1 [1.11.2.6], man/printafm.1 [1.10.2.6],
+man/ps2ascii.1 [1.10.2.6], man/ps2epsi.1 [1.10.2.6],
+man/ps2pdf.1 [1.14.2.6], man/ps2pdfwr.1 [1.13.2.6], man/ps2ps.1 [1.17.2.6],
+man/wftopfa.1 [1.10.2.6]: 2002/04/19 22:38:45 giles)
+
+Update the open bug list. (doc/News.htm [1.90.2.12]: 2002/04/19 22:47:14
+giles)
+
+add gnudevs.mak and gdevstp.c to Develop.htm (doc/Develop.htm [1.47.2.11]:
+2002/04/19 22:53:14 giles)
+
+Update changelog for the 7.05rc2 pre-release. (doc/Changes.htm [1.28.2.5],
+doc/History7.htm [1.5.2.10]: 2002/04/19 23:03:02 giles)
+
+Add a step to create the configure script for ijs.
+(doc/Release.htm [1.40.2.14]: 2002/04/22 18:11:46 giles)
+
+Remove the DOS and OS/2 versions of the ps2epsi code. They have been broken
+for some time. (doc/Develop.htm [1.47.2.12], doc/Ps2epsi.htm [1.15.2.8],
+man/ps2epsi.1 [1.10.2.7]: 2002/04/22 20:38:01 giles)
+
+Update version date for release. (doc/API.htm [1.11.2.10],
+doc/Bug-form.htm [1.23.2.8], doc/Bug-info.htm [1.20.2.8],
+doc/C-style.htm [1.21.2.8], doc/Commprod.htm [1.15.2.9],
+doc/Current.htm [1.13.2.8], doc/DLL.htm [1.15.2.8],
+doc/Develop.htm [1.47.2.13], doc/Devices.htm [1.34.2.11],
+doc/Drivers.htm [1.21.2.8], doc/Fonts.htm [1.22.2.9],
+doc/Helpers.htm [1.17.2.8], doc/History1.htm [1.13.2.8],
+doc/History2.htm [1.13.2.8], doc/History3.htm [1.13.2.8],
+doc/History4.htm [1.13.2.8], doc/History5.htm [1.15.2.8],
+doc/History6.htm [1.30.2.8], doc/History7.htm [1.5.2.11],
+doc/Htmstyle.htm [1.18.2.8], doc/Install.htm [1.26.2.8],
+doc/Issues.htm [1.15.2.9], doc/Language.htm [1.34.2.10],
+doc/Lib.htm [1.14.2.8], doc/Maintain.htm [1.23.2.8],
+doc/Make.htm [1.36.2.12], doc/New-user.htm [1.30.2.8],
+doc/News.htm [1.90.2.13], doc/Projects.htm [1.33.2.8],
+doc/Ps-style.htm [1.13.2.8], doc/Ps2epsi.htm [1.15.2.9],
+doc/Ps2pdf.htm [1.32.2.8], doc/Psfiles.htm [1.22.2.9],
+doc/Readme.htm [1.31.2.10], doc/Release.htm [1.40.2.15],
+doc/Source.htm [1.13.2.8], doc/Tester.htm [1.14.2.8],
+doc/Unix-lpr.htm [1.13.2.8], doc/Use.htm [1.33.2.12],
+doc/Xfonts.htm [1.13.2.8], doc/gs-vms.hlp [1.12.2.7]: 2002/04/22 21:15:32
+giles)
+
+Update version date for release.Update version date for release.
+(man/dvipdf.1 [1.10.2.7], man/font2c.1 [1.10.2.7], man/gs.1 [1.10.2.8],
+man/gslp.1 [1.10.2.7], man/gsnd.1 [1.10.2.7], man/pdf2dsc.1 [1.10.2.7],
+man/pdf2ps.1 [1.12.2.7], man/pdfopt.1 [1.10.2.7], man/pf2afm.1 [1.10.2.7],
+man/pfbtopfa.1 [1.11.2.7], man/printafm.1 [1.10.2.7],
+man/ps2ascii.1 [1.10.2.7], man/ps2epsi.1 [1.10.2.8],
+man/ps2pdf.1 [1.14.2.7], man/ps2pdfwr.1 [1.13.2.7], man/ps2ps.1 [1.17.2.7],
+man/wftopfa.1 [1.10.2.7]: 2002/04/22 21:15:55 giles)
+
+Update the open bug list for release. (doc/News.htm [1.90.2.14]: 2002/04/22
+21:26:46 giles)
+
+</pre><h2><a name="7.05-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - ps2pdf14 was not being installed by unixinst.mak. Fixes
+SourceForge bug #508607. (unixinst.mak [1.20.2.2]: 2002/02/06 07:19:17
+jackiem)
+ - make symlinks to equivalent manpages with relative rather than
+absolute paths to facilitate moving the directory to another location.
+Closes SourceForge Bug #416131. (unixinst.mak [1.20.2.7]: 2002/04/18
+01:56:12 giles)
+ - Adds -p parameter to mkdir to suppress warning messages when the
+target already exists and to create parent directories automatically if they
+don't exist. Fixes Sourceforge bug #518742. (unix-dll.mak [1.6.2.2],
+unixinst.mak [1.20.2.9]: 2002/04/19 01:10:40 jack)
+
+Improves branch handling in cvs2hist, raph's patch from HEAD. Also documents
+the new options. (toolbin/cvs2hist.py [1.9.2.1]: 2002/02/06 23:31:10 giles)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(all-arch.mak [1.9.2.2],
+bcwin32.mak [1.12.2.3], cfonts.mak [1.2.6.1], contrib.mak [1.24.2.1],
+devs.mak [1.47.2.3], dvx-gcc.mak [1.12.2.3], dvx-head.mak [1.2.6.1],
+dvx-tail.mak [1.5.2.1], dwmain.rc [1.2.6.1], dwsetup.rc [1.5.2.1],
+dwuninst.rc [1.3.6.1], gs.mak [1.5.2.3], gs16spl.rc [1.2.6.1],
+gsdll2.rc [1.2.6.1], gsdll32.rc [1.2.6.1]: 2002/02/22 19:45:55 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(gsos2.rc [1.2.6.1],
+gspmdrv.rc [1.2.6.1], gswin.rc [1.2.6.1], icclib.mak [1.3.2.2],
+ijs.mak [1.2.2.2], int.mak [1.50.2.3], jpeg.mak [1.4.2.1],
+lib.mak [1.53.2.2], libpng.mak [1.10.2.2], macos-fw.mak [1.1.2.2],
+macos-mcp.mak [1.3.2.3], macosx.mak [1.3.2.2], msvc32.mak [1.20.2.4],
+msvccmd.mak [1.6.2.1], msvclib.mak [1.16.2.2], msvctail.mak [1.6.2.1],
+openvms.mak [1.16.2.3], openvms.mmk [1.12.2.1], os2.mak [1.19.2.3],
+pcwin.mak [1.2.6.1], ugcclib.mak [1.13.2.3], unix-aux.mak [1.5.2.1],
+unix-dll.mak [1.6.2.1], unix-end.mak [1.2.6.1], unix-gcc.mak [1.23.2.4],
+unixansi.mak [1.16.2.4], unixhead.mak [1.2.6.1], unixinst.mak [1.20.2.3],
+unixlink.mak [1.3.4.1], version.mak [1.36.2.3], watc.mak [1.16.2.2],
+watclib.mak [1.13.2.3], watcw32.mak [1.13.2.3], wccommon.mak [1.3.6.1],
+wctail.mak [1.3.2.2], winint.mak [1.8.2.1], winlib.mak [1.12.2.2],
+winplat.mak [1.2.6.1], wmin.mak [1.2.6.1], zlib.mak [1.3.2.1]: 2002/02/22
+19:45:58 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(toolbin/3way.tcl [1.3.6.1],
+toolbin/cvs2hist.py [1.9.2.2], toolbin/errlist.tcl [1.3.6.1],
+toolbin/gsindent [1.3.6.1], toolbin/gsmake.tcl [1.5.6.1],
+toolbin/gssubst [1.1.4.1], toolbin/headers.tcl [1.3.6.1],
+toolbin/leaks.tcl [1.3.6.1], toolbin/makegnu.tcl [1.3.6.1],
+toolbin/makeset.tcl [1.10.2.3], toolbin/many2pdf.tcl [1.1.4.1],
+toolbin/pdfinflt.ps [1.1.2.1], toolbin/pre [1.11.2.1],
+toolbin/precheck.tcl [1.3.6.1], toolbin/suite.tcl [1.3.6.1],
+toolbin/tmake.tcl [1.3.6.1]: 2002/02/22 19:46:03 ray)
+
+Removes auto-generated plain text versions of html documentation from cvs
+and makes their creation an explicit part of the release process.
+(toolbin/pre [1.11.2.2]: 2002/02/25 21:43:20 giles)
+
+Add gdevpccm.obj to the display device dependencies. (devs.mak [1.47.2.4]:
+2002/02/28 22:22:25 ghostgum)
+
+When building the distribution archive, don't flag an error if gsv16spl.exe
+doesn't exist. This file is only needed for Win32s which is no longer
+supported. (winint.mak [1.8.2.2]: 2002/02/28 22:23:03 ghostgum)
+
+Update msvc32.mak and documentation to support compilation with Microsoft
+Visual Studio .NET. This requires MSVC_VERSION=7. (msvc32.mak [1.20.2.5]:
+2002/03/12 07:21:30 ghostgum)
+
+Replace Windows icons with new versions that include 48x48 pixel and 32-bit
+versions for Windows XP. Change the 16x16 pixel icons to use the full 'g'
+instead of just the head. Use a restricted icon gswin16.ico for WinZip SE
+which can't handle the new icon. (bcwin32.mak [1.12.2.4],
+dwmain.rc [1.2.6.2], dwsetup.rc [1.5.2.2], dwuninst.rc [1.3.6.2],
+gs16spl.rc [1.2.6.2], gsdll32.rc [1.2.6.2], gswin.rc [1.2.6.2],
+gswin32.rc [1.1.6.1], gswin386.rc [1.1.6.1], winint.mak [1.8.2.3]:
+2002/03/30 01:33:03 ghostgum)
+
+gs_cjk project : bugfix for nested FMapType4/5 OCF. Fix by Suzuki Toshiya.
+(lib.mak [1.53.2.3]: 2002/04/02 13:29:35 mpsuzuki)
+
+gs-cjk project : add new documents CJK.htm and CJKTTCID.htm, add references
+to Fonts.htm, Readme.htm, Use.htm add targets to unixinst.mak. Fix by Suzuki
+Toshiya and Taiji Yamada. (unixinst.mak [1.20.2.4]: 2002/04/02 14:26:39
+mpsuzuki)
+
+gs-cjk project : add CIDFnmap samples add references to Develop.htm add
+targets to unixinst.mak (unixinst.mak [1.20.2.5]: 2002/04/02 14:47:42
+mpsuzuki)
+
+gs-cjk project : add CJK samples and fix install targets, by Taiji Yamada
+(unixinst.mak [1.20.2.6]: 2002/04/02 14:53:39 mpsuzuki)
+
+Create the bboxutil pseudo-device to allow inclusion of the bbox device for
+internal use by those drivers that require it without putting it on the list
+of devices. Also some minor makefile cleanup. Patch by Ray Johnston from
+7.20. (devs.mak [1.47.2.5], lib.mak [1.53.2.4], macosx.mak [1.3.2.3],
+msvc32.mak [1.20.2.6], openvms.mak [1.16.2.4], os2.mak [1.19.2.4],
+unix-gcc.mak [1.23.2.5], unixansi.mak [1.16.2.5]: 2002/04/10 00:53:33 giles)
+
+Adds support for compilation against a standard shared libjpeg. It is
+believed that non-baseline compliant DCTEncoded data, permitted by early
+versions of postscript, is now extremely rare and the prohibition against
+SHARE_JPEG=1 may reasonably be removed. The autoconf build will prefer a
+local copy of the jpeg source, in which case the D_MAX_BLOCKS_IN_MCU patch
+will still be applied. If no such local copy is found, it will try to find a
+shared library on the system. For all unix builds, if $(JSRCDIR)/jmemsys.h
+cannot be found, we define DONT_HAVE_JMEMSYS_H and include our own versions
+of the libjpeg memory manager prototypes. The default allocator in the
+shared library is overridden by the ghostscript one at link-time. While this
+may be implementation-dependent, it appears to function as desired on at
+least GNU/Linux and Solaris. Also changes the autoconf build to prefer local
+zlib and libpng source, and cleans up some variable names. Patch by Raph
+Levien from 7.20. (dvx-gcc.mak [1.12.2.4], macosx.mak [1.3.2.4],
+ugcclib.mak [1.13.2.4], unix-aux.mak [1.5.2.2], unixansi.mak [1.16.2.6]:
+2002/04/10 01:44:27 giles)
+
+remove the warning against SHARE_JPEG=1, omitted in the last commit
+(unix-gcc.mak [1.23.2.6]: 2002/04/10 02:33:31 giles)
+
+use relative paths for the smoke test data files
+(toolbin/smoke.ps [1.1.6.1]: 2002/04/10 02:33:31 giles)
+
+makefile cleanup. remove a redundant -fno-common from the linker flags
+(unix-gcc.mak [1.23.2.7]: 2002/04/10 02:37:36 giles)
+
+add a missing Id: line (toolbin/smoke.ps [1.1.6.2]: 2002/04/10 09:17:30
+giles)
+
+mark this as a GNU version and bump the release number
+(version.mak [1.36.2.4]: 2002/04/15 05:47:56 giles)
+
+update the libpng version (macosx.mak [1.3.2.5]: 2002/04/15 19:24:22 giles)
+
+Documentation updates for a revised 7.05rc1. (version.mak [1.36.2.5]:
+2002/04/17 01:08:44 giles)
+
+Check release dates in UTC to avoid conflicts due to timezone.
+(toolbin/pre [1.11.2.3]: 2002/04/17 01:16:22 giles)
+
+Remove the chess.ps example file due to license ambiguity.
+(unixinst.mak [1.20.2.8]: 2002/04/18 06:01:27 giles)
+
+Committing in . Back-ports from the main stream such that OpenVMS is happy
+Modified Files: Tag: GS_7_0X gs/src/devs.mak gs/src/gschar0.c
+gs/src/gserrors.h gs/src/imainarg.c
+----------------------------------------------------------------------
+(devs.mak [1.47.2.6]: 2002/04/18 09:58:45 joukj)
+
+Update libpng version numbers to the latest 1.2.2. (all-arch.mak [1.9.2.3],
+bcwin32.mak [1.12.2.5], dvx-gcc.mak [1.12.2.5], libpng.mak [1.10.2.3],
+macos-mcp.mak [1.3.2.4], macosx.mak [1.3.2.6], msvc32.mak [1.20.2.7],
+msvclib.mak [1.16.2.3], openvms.mak [1.16.2.5], openvms.mmk [1.12.2.2],
+os2.mak [1.19.2.5], ugcclib.mak [1.13.2.5], unix-gcc.mak [1.23.2.8],
+unixansi.mak [1.16.2.7], watc.mak [1.16.2.3], watclib.mak [1.13.2.4],
+watcw32.mak [1.13.2.4]: 2002/04/19 06:32:22 giles)
+
+Add the 'stp' driver from the gimp-print project, and compile it in by
+default from the autoconf build if libgimprint is found.
+(unix-gcc.mak [1.23.2.9], unixansi.mak [1.16.2.8]: 2002/04/19 22:23:09
+giles)
+
+bump the release date in the makefile (version.mak [1.36.2.6]: 2002/04/19
+22:39:53 giles)
+
+Update licensing information in the Windows distribution archive.
+(winint.mak [1.8.2.4]: 2002/04/20 10:14:02 ghostgum)
+
+Update licensing information in Windows distribution archive.
+(winint.mak [1.8.2.5]: 2002/04/20 10:32:37 ghostgum)
+
+Update licensing information in Windows files. (dwsetup.def [1.2.6.1],
+dwsetup.rc [1.5.2.3], dwuninst.def [1.2.6.1]: 2002/04/20 22:11:39 ghostgum)
+
+Update version date for release.Update version date for release.Update
+version date for release. (version.mak [1.36.2.7]: 2002/04/22 21:16:23
+giles)
+
+Change the license reference in the installer dialog and update the
+copyright year. (dwsetup.rc [1.5.2.4]: 2002/04/23 01:41:13 giles)
+
+</pre><h2><a name="7.05-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Fixes pdf2dsc to open input file before .setsafe, so that it works
+even when SAFER locks down read file access. Backport patch by raph from
+HEAD. (lib/pdf2dsc.ps [1.3.4.1]: 2002/02/13 23:29:52 giles)
+ - ps2epsi generated an invalid DSC header. Also, encapsulate the
+original file in %%Begin/EndDocument t o protect against confusion with
+multiple DSC comments. Patch from Russell Lang. (lib/ps2epsi [1.7.2.1]:
+2002/04/22 20:18:24 giles)
+ - Calculate more accurate BoundingBox and prevent invalidaccess by
+using an 8-bit deep preview image. Patch from Ray Johnston. SF bug #525508.
+(lib/ps2epsi.ps [1.5.2.3]: 2002/04/22 20:30:39 giles)
+
+Update licensing information, with permission from Thomas Merz. Also
+updates the author's email address and removes the obsolete physical
+address.
+(lib/viewjpeg.ps [1.1.6.1]: 2002/02/08 09:44:43 giles)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(bench.c [1.4.4.1],
+dxmain.c [1.7.2.1], dxmainc.c [1.4.2.2], echogs.c [1.3.2.1],
+lib/Fontmap.ATB [1.2.6.1], lib/Fontmap.ATM [1.2.6.1],
+lib/Fontmap.GS [1.2.6.1], lib/Fontmap.OS2 [1.2.6.1],
+lib/Fontmap.SGI [1.2.6.1], lib/Fontmap.Sol [1.2.6.1],
+lib/Fontmap.Ult [1.2.6.1], lib/addxchar.ps [1.2.6.1],
+lib/align.ps [1.2.6.1], lib/bdftops.ps [1.3.2.1], lib/caption.ps [1.2.6.1],
+lib/cid2code.ps [1.3.4.1], lib/docie.ps [1.2.6.1], lib/errpage.ps [1.2.6.1],
+lib/font2c.ps [1.3.2.1], lib/font2pcl.ps [1.2.6.1], lib/gslp.ps [1.2.6.1],
+lib/gsnup.ps [1.2.6.1], lib/image-qa.ps [1.3.2.1], lib/impath.ps [1.3.4.1],
+lib/jispaper.ps [1.2.6.1], lib/lines.ps [1.2.6.1],
+lib/markhint.ps [1.2.6.1], lib/markpath.ps [1.2.6.1],
+lib/packfile.ps [1.2.6.1], lib/pcharstr.ps [1.2.6.1],
+lib/pdf2dsc.ps [1.3.4.2], lib/pdfopt.ps [1.10.2.1],
+lib/pdfwrite.ps [1.7.2.1], lib/pfbtopfa.ps [1.2.6.1],
+lib/ppath.ps [1.2.6.1], lib/pphs.ps [1.3.2.1], lib/ps2ai.ps [1.2.6.1],
+lib/ps2ascii.ps [1.3.2.1], lib/ps2epsi.ps [1.5.2.1],
+lib/showchar.ps [1.2.6.1], lib/stcinfo.ps [1.2.6.1],
+lib/stcolor.ps [1.2.6.1], lib/stocht.ps [1.3.6.1],
+lib/traceimg.ps [1.2.6.1], lib/traceop.ps [1.2.6.1],
+lib/type1enc.ps [1.2.6.1], lib/type1ops.ps [1.2.6.1],
+lib/uninfo.ps [1.2.6.1], lib/unprot.ps [1.2.6.1], lib/viewcmyk.ps [1.2.6.1],
+lib/viewgif.ps [1.2.6.1], lib/viewjpeg.ps [1.1.6.2],
+lib/viewmiff.ps [1.2.6.1], lib/viewpbm.ps [1.2.6.1],
+lib/viewpcx.ps [1.2.6.1], lib/viewps2a.ps [1.2.6.1],
+lib/wftopfa.ps [1.2.6.1], lib/winmaps.ps [1.2.6.1], lib/wrfont.ps [1.2.6.1],
+lib/zeroline.ps [1.2.6.1]: 2002/02/22 19:45:54 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(genarch.c [1.2.6.1],
+genconf.c [1.4.4.1], gendev.c [1.2.6.1], genht.c [1.2.6.1],
+geninit.c [1.3.6.1], gp_dvx.c [1.4.2.1], gp_iwatc.c [1.6.2.1],
+gp_mac.c [1.1.4.1], gp_mktmp.c [1.2.6.1], gp_msdll.c [1.1.2.1],
+gp_mshdl.c [1.2.6.1], gp_msio.c [1.3.4.1], gp_mslib.c [1.3.2.1],
+gp_mspol.c [1.1.2.1], gp_msprn.c [1.1.2.1], gp_mswin.c [1.7.2.1],
+gp_ntfs.c [1.5.2.3], gp_os2.c [1.10.2.2], gp_os9.c [1.4.2.1],
+gp_stdia.c [1.3.2.1], gp_stdin.c [1.2.2.1], gp_sysv.c [1.2.6.1],
+gp_unix.c [1.5.2.1], gp_vms.c [1.7.2.2], gp_wgetv.c [1.4.2.1],
+gp_win32.c [1.2.6.1], gp_wsync.c [1.2.6.1], gs16spl.c [1.2.6.1],
+gsdll.c [1.6.2.1], gserver.c [1.2.6.1], gspmdrv.c [1.2.6.1]: 2002/02/22
+19:45:57 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(scfdgen.c [1.2.6.1],
+zdosio.c [1.2.6.1], ziodevs.c [1.5.2.1], ziodevsc.c [1.3.2.1]: 2002/02/22
+19:46:00 ray)
+
+gs_cjk project : replace "min" &amp; "max" by ".min" &amp; ".max". Fix by
+Suzuki Toshiya. (lib/bdftops.ps [1.3.2.2], lib/font2pcl.ps [1.2.6.2],
+lib/gslp.ps [1.2.6.2], lib/packfile.ps [1.2.6.2], lib/pdfopt.ps [1.10.2.2],
+lib/prfont.ps [1.2.6.1], lib/ps2ascii.ps [1.3.2.2],
+lib/traceimg.ps [1.2.6.2], lib/viewcmyk.ps [1.2.6.2],
+lib/viewpbm.ps [1.2.6.2], lib/viewpcx.ps [1.2.6.2]: 2002/04/02 13:57:27
+mpsuzuki)
+
+add missing Id: lines (lib/acctest.ps [1.1.6.1], lib/decrypt.ps [1.1.6.1],
+lib/landscap.ps [1.1.6.1], lib/level1.ps [1.1.6.1], lib/pf2afm.ps [1.3.2.1],
+lib/printafm.ps [1.1.6.1]: 2002/04/10 09:22:58 giles)
+
+adds missing Id: lines. (gp_mac.c [1.1.4.2]: 2002/04/10 09:33:26 giles)
+
+Updating licensing information in Windows files. (gp_wgetv.c [1.4.2.2]:
+2002/04/20 22:11:39 ghostgum)
+
+Use sed in preference to tail to avoid conflicts between posix and
+traditional implementations. Patch from Paul Eggert. Closes SourceForge bug
+#521597. (lib/unix-lpr.sh [1.1.6.1]: 2002/04/22 19:54:55 giles)
+
+Add new license header to some files.
+(gp_macio.c [1.2.4.2]: 2002/04/23 01:32:26 giles)
+
+</pre><h2><a name="7.05-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - Changes XPutImage to use xdev-&gt;vinfo-&gt;depth rather than
+xdev-&gt;color_info.depth. These are the same in all cases except a visual
+depth of 15, in which the latter is 16. (gdevx.c [1.8.2.2]: 2002/02/20
+21:11:49 raph)
+ - improve pswrite with compatibility to interpreters which don't
+consume ASCII85Decode EOD when reader stops immediately before it. Source
+Forge bug #525044 "pswrite incompatible with some RIPs". Thanks to Paul
+Vojta for spotting this. (gdevps.c [1.19.2.2]: 2002/03/13 17:09:11 igor)
+ - epswrite was incompatible with HP LaserJet 4000 TN. Source Forge
+bug #529202 "Wrong PostScript in pswrite prolog". (gdevpsu.c [1.7.2.2]:
+2002/03/20 20:17:31 igor)
+ - Fixes incorrect margins on IJS devices. Thanks to Dave Suffield
+for the patch. (gdevijs.c [1.1.2.3]: 2002/03/28 20:44:53 raph)
+ - Initializes the green and blue components of cmap and their
+multipliers. A floating point exception was occuring on static gray X
+displays when these were left at 0. (gdevxcmp.c [1.2.6.2]: 2002/04/19
+00:46:41 jack)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(gdev3852.c [1.3.2.1],
+gdev3b1.c [1.2.6.1], gdev4081.c [1.3.2.1], gdev8510.c [1.3.2.1],
+gdev8bcm.c [1.2.6.1], gdev8bcm.h [1.2.6.1], gdevadmp.c [1.3.2.1],
+gdevbit.c [1.2.6.1], gdevbj10.c [1.4.2.1], gdevbjc.h [1.2.6.1],
+gdevbjcl.c [1.2.6.1], gdevbjcl.h [1.2.6.1], gdevbmp.c [1.4.2.1],
+gdevbmp.h [1.2.6.1], gdevbmpa.c [1.3.6.1], gdevbmpc.c [1.2.6.1],
+gdevccr.c [1.2.6.1], gdevcdj.c [1.5.2.1], gdevcfax.c [1.3.6.1],
+gdevcgm.c [1.2.6.2], gdevcgml.c [1.2.6.1], gdevcgml.h [1.2.6.1],
+gdevcgmx.h [1.2.6.1], gdevcif.c [1.3.2.1], gdevclj.c [1.2.6.1],
+gdevcljc.c [1.4.2.1], gdevcp50.c [1.3.2.1], gdevcslw.c [1.2.6.1],
+gdevdcrd.c [1.2.6.1], gdevdcrd.h [1.2.6.1], gdevdfax.c [1.4.2.1],
+gdevdjtc.c [1.3.2.1], gdevdm24.c [1.3.2.1], gdevdsp.c [1.5.2.2],
+gdevegaa.asm [1.2.6.1], gdevepsc.c [1.3.2.1], gdevepsn.c [1.3.2.1],
+gdevescp.c [1.3.2.1], gdevevga.c [1.2.6.1], gdevfax.c [1.2.6.1],
+gdevfax.h [1.2.6.1], gdevherc.c [1.2.6.1], gdevhl7x.c [1.5.2.1],
+gdevijs.c [1.1.2.2], gdevimgn.c [1.4.2.1], gdevjpeg.c [1.3.2.1],
+gdevl256.c [1.3.6.1], gdevl31s.c [1.2.6.1], gdevlbp8.c [1.3.2.1],
+gdevlj56.c [1.3.2.1], gdevlp8k.c [1.2.6.1], gdevlxm.c [1.2.6.1],
+gdevmac.h [1.1.4.1], gdevmacxf.c [1.1.4.1], gdevmeds.c [1.2.6.1],
+gdevmeds.h [1.2.6.1], gdevmgr.c [1.2.6.1], gdevmgr.h [1.2.6.1],
+gdevmiff.c [1.3.2.1], gdevmswn.c [1.4.2.1], gdevmswn.h [1.2.6.1],
+gdevmsxf.c [1.2.6.1], gdevn533.c [1.3.2.1], gdevo182.c [1.3.2.1],
+gdevokii.c [1.3.2.1], gdevos2p.c [1.4.2.1], gdevp14.h [1.1.2.1],
+gdevp2up.c [1.2.6.1], gdevpbm.c [1.3.6.1], gdevpccm.c [1.2.6.1],
+gdevpccm.h [1.3.6.1], gdevpcfb.c [1.2.6.1], gdevpcfb.h [1.2.6.1],
+gdevpcl.c [1.5.2.1], gdevpcl.h [1.5.2.1], gdevpcx.c [1.2.6.1],
+gdevpe.c [1.2.6.1], gdevphex.c [1.2.6.1], gdevpjet.c [1.3.2.1],
+gdevpm.c [1.4.2.1], gdevpm.h [1.2.6.1], gdevpng.c [1.4.2.1],
+gdevpnga.c [1.4.2.1], gdevps.c [1.19.2.1], gdevpsdf.h [1.9.4.1],
+gdevpsdi.c [1.15.2.1], gdevpsdp.c [1.8.6.1], gdevpsds.c [1.4.6.1],
+gdevpsds.h [1.4.6.1], gdevpsdu.c [1.10.2.1], gdevpsim.c [1.6.2.1],
+gdevpsu.c [1.7.2.1], gdevpsu.h [1.4.2.1], gdevpx.c [1.6.2.1],
+gdevpxat.h [1.3.6.1], gdevpxen.h [1.3.6.1], gdevpxop.h [1.2.6.1],
+gdevpxut.c [1.2.6.1], gdevpxut.h [1.2.6.1], gdevs3ga.c [1.2.6.1],
+gdevsco.c [1.3.6.1], gdevsj48.c [1.2.6.1], gdevsnfb.c [1.3.2.1],
+gdevsppr.c [1.5.2.1], gdevstc.c [1.2.6.1], gdevstc.h [1.2.6.1],
+gdevstc1.c [1.2.6.1], gdevstc2.c [1.2.6.1], gdevstc3.c [1.2.6.1],
+gdevstc4.c [1.2.6.1], gdevsun.c [1.2.6.1], gdevsunr.c [1.4.2.1],
+gdevsvga.c [1.2.6.1], gdevsvga.h [1.2.6.1], gdevtfax.c [1.4.6.1],
+gdevtfax.h [1.4.6.1], gdevtfnx.c [1.5.2.1], gdevtifs.c [1.4.2.1],
+gdevtifs.h [1.3.6.1], gdevtknk.c [1.3.2.1], gdevupd.c [1.5.2.1],
+gdevvglb.c [1.3.6.1], gdevwddb.c [1.3.2.1], gdevwdib.c [1.3.2.1],
+gdevwpr2.c [1.9.2.1], gdevwprn.c [1.3.2.1], gdevx.c [1.8.2.3],
+gdevx.h [1.4.6.1], gdevxalt.c [1.2.6.2], gdevxcmp.c [1.2.6.1],
+gdevxcmp.h [1.2.6.1], gdevxini.c [1.10.4.1], gdevxres.c [1.3.6.1],
+gdevxxf.c [1.5.6.1]: 2002/02/22 19:45:55 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(png_.h [1.2.6.1],
+x_.h [1.3.2.1]: 2002/02/22 19:46:00 ray)
+
+Add multiple inclusion protection to headers files which were missing it.
+(gdevmacpictop.h [1.1.4.1], gdevmacttf.h [1.1.4.1], png_.h [1.2.6.2]:
+2002/04/10 09:13:11 giles)
+
+adds missing Id: lines. (gdevdsp.c [1.5.2.3], gdevhpij.c [1.3.2.1],
+gdevhpij.h [1.2.4.1], gdevmac.c [1.1.4.2], gdevmac.h [1.1.4.2],
+gdevmacxf.c [1.1.4.2], gdevphex.c [1.2.6.2]: 2002/04/10 09:33:25 giles)
+
+Add new license header to some files.
+(gdevmac.c [1.1.4.3]: 2002/04/23 01:32:26 giles)
+
+</pre><h2><a name="7.05-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - Fix : pdfwrite wrongly computed text width for fonts with unusual
+font matrix. Source Forge bug "[ 535401 ] euro glyph misplaced after
+pdfwrite". (gdevpdff.c [1.22.2.2], gdevpdfs.c [1.7.2.2]: 2002/04/11 15:49:45
+igor)
+ - Fix : pdfwrite wrongly computed line width for fonts with
+PaintType 2. (gdevpdfs.c [1.7.2.3]: 2002/04/16 10:11:30 igor)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(gdevpdf.c [1.38.2.1],
+gdevpdfb.c [1.6.2.1], gdevpdfc.c [1.17.2.1], gdevpdfd.c [1.16.2.1],
+gdevpdfe.c [1.10.2.1], gdevpdff.c [1.22.2.1], gdevpdff.h [1.11.2.1],
+gdevpdfg.c [1.14.2.1], gdevpdfg.h [1.9.6.1], gdevpdfi.c [1.24.2.1],
+gdevpdfj.c [1.7.2.1], gdevpdfm.c [1.14.2.1], gdevpdfo.c [1.9.2.1],
+gdevpdfo.h [1.6.4.1], gdevpdfp.c [1.19.2.1], gdevpdfr.c [1.4.6.1],
+gdevpdfs.c [1.7.2.1], gdevpdft.c [1.36.2.1], gdevpdfu.c [1.16.2.1],
+gdevpdfv.c [1.10.2.1], gdevpdfw.c [1.12.2.1], gdevpdfx.h [1.34.2.1]:
+2002/02/22 19:45:56 ray)
+
+</pre><h2><a name="7.05-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(lib/pdf_base.ps [1.14.2.1],
+lib/pdf_draw.ps [1.36.2.1], lib/pdf_font.ps [1.23.2.1],
+lib/pdf_main.ps [1.35.2.1], lib/pdf_ops.ps [1.17.2.2]: 2002/02/22 19:45:55
+ray)
+
+gs_cjk project : CIDWProc sample implementation by Suzuki Toshiya.
+(lib/pdf_font.ps [1.23.2.2]: 2002/04/02 13:53:16 mpsuzuki)
+
+gs_cjk project : replace "min" &amp; "max" by ".min" &amp; ".max". Fix by
+Suzuki Toshiya. (lib/pdf_font.ps [1.23.2.3], lib/pdf_main.ps [1.35.2.2],
+lib/pdf_sec.ps [1.5.2.1]: 2002/04/02 13:57:27 mpsuzuki)
+
+gs_cjk project : Automatic bold &amp; italic for non-CID fonts in PDF. Fix
+by Taiji Yamada. (lib/pdf_font.ps [1.23.2.4]: 2002/04/02 13:58:40 mpsuzuki)
+
+gs-cjk project : update comments on "PDF reference", third edition fixes
+wrong notes about /DW in second edition. Fix by Suzuki Toshiya.
+(lib/pdf_font.ps [1.23.2.5]: 2002/04/03 07:27:49 mpsuzuki)
+
+disable the new auto-bold and auto-slant functions for non-cid fonts,
+pending improved detection of when this is necessary.
+(lib/pdf_font.ps [1.23.2.6]: 2002/04/16 06:11:29 giles)
+
+</pre><h2><a name="7.05-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Prevent .locksafe (and .setsafe) from resetting the current
+pagedevice. Fixes SourceForge bug #516379. (lib/gs_init.ps [1.40.2.5]:
+2002/02/14 01:25:59 rayjj)
+ - -dSAFER mode to allow opening a file that references the parent
+directory as long as the PermitFileReading strings include a (*) string
+(allow all reading). Corresponds to rev 1.19 change. (zfile.c [1.11.2.3]:
+2002/04/11 20:05:01 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(bfont.h [1.3.6.1],
+btoken.h [1.4.6.1], ccfont.h [1.2.6.1], dpmain.c [1.5.2.1],
+dscparse.c [1.7.2.1], dscparse.h [1.6.2.1], dstack.h [1.3.4.1],
+dwdll.c [1.2.2.1], dwdll.h [1.3.2.1], dwimg.c [1.3.2.1], dwimg.h [1.4.2.1],
+dwinst.cpp [1.2.6.1], dwinst.h [1.2.6.1], dwmain.c [1.6.2.2],
+dwmain.h [1.3.2.1], dwmainc.c [1.8.2.2], dwnodll.c [1.1.2.1],
+dwreg.c [1.1.2.1], dwreg.h [1.1.2.1], dwsetup.cpp [1.5.6.1],
+dwsetup.h [1.2.6.1], dwtext.c [1.5.2.1], dwtext.h [1.4.2.1],
+dwuninst.cpp [1.2.6.1], dwuninst.h [1.2.6.1], errors.h [1.4.2.1],
+estack.h [1.2.6.1], examples/waterfal.ps [1.3.2.1], files.h [1.4.2.1],
+gdevdsp.h [1.1.2.1], gdevdsp2.h [1.2.2.1], lib/gs_agl.ps [1.2.6.1],
+lib/gs_btokn.ps [1.5.2.1], lib/gs_ccfnt.ps [1.5.2.1],
+lib/gs_ce_e.ps [1.2.6.1], lib/gs_cff.ps [1.10.2.1],
+lib/gs_cidcm.ps [1.5.2.1], lib/gs_cidfn.ps [1.18.4.1],
+lib/gs_cmap.ps [1.11.2.1], lib/gs_cmdl.ps [1.2.6.1],
+lib/gs_css_e.ps [1.2.6.1], lib/gs_dbt_e.ps [1.2.6.1],
+lib/gs_diskf.ps [1.2.6.1], lib/gs_dpnxt.ps [1.2.6.1],
+lib/gs_dps.ps [1.4.6.1], lib/gs_dps1.ps [1.2.6.1], lib/gs_dps2.ps [1.3.4.1],
+lib/gs_dscp.ps [1.4.2.1], lib/gs_epsf.ps [1.2.6.1],
+lib/gs_fform.ps [1.2.6.1], lib/gs_fonts.ps [1.13.2.2],
+lib/gs_frsd.ps [1.4.6.1], lib/gs_icc.ps [1.2.2.1],
+lib/gs_il1_e.ps [1.2.6.1], lib/gs_il2_e.ps [1.2.6.1],
+lib/gs_init.ps [1.40.2.6], lib/gs_kanji.ps [1.2.6.1],
+lib/gs_ksb_e.ps [1.2.6.1], lib/gs_l2img.ps [1.2.6.1],
+lib/gs_lev2.ps [1.7.2.3], lib/gs_lgo_e.ps [1.3.6.1],
+lib/gs_lgx_e.ps [1.2.6.1], lib/gs_ll3.ps [1.10.2.1],
+lib/gs_mex_e.ps [1.2.6.1], lib/gs_mgl_e.ps [1.3.6.1],
+lib/gs_mro_e.ps [1.2.6.1], lib/gs_pdf_e.ps [1.2.6.1],
+lib/gs_pdfwr.ps [1.11.2.1], lib/gs_pfile.ps [1.2.6.1],
+lib/gs_rdlin.ps [1.2.6.1], lib/gs_res.ps [1.16.2.1],
+lib/gs_setpd.ps [1.8.2.2], lib/gs_statd.ps [1.5.2.1],
+lib/gs_std_e.ps [1.2.6.1], lib/gs_sym_e.ps [1.2.6.1],
+lib/gs_trap.ps [1.3.6.1], lib/gs_ttf.ps [1.9.2.1],
+lib/gs_typ32.ps [1.3.2.1], lib/gs_typ42.ps [1.2.6.1],
+lib/gs_type1.ps [1.5.2.1], lib/gs_wan_e.ps [1.2.6.1],
+lib/gs_wl1_e.ps [1.2.6.1], lib/gs_wl2_e.ps [1.2.6.1],
+lib/gs_wl5_e.ps [1.2.6.1]: 2002/02/22 19:45:54 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(ghost.h [1.2.6.1],
+gs.c [1.6.2.1], ialloc.c [1.2.6.1], ialloc.h [1.2.6.1], iapi.c [1.1.2.2],
+iapi.h [1.2.2.1], iastate.h [1.2.6.1], iastruct.h [1.2.6.1],
+ibnum.c [1.2.6.1], ibnum.h [1.2.6.1], iccfont.c [1.2.6.2],
+iccinit0.c [1.2.6.1], icfontab.c [1.2.6.1], ichar.h [1.3.6.1],
+ichar1.h [1.3.6.1], icharout.h [1.3.4.1], icid.h [1.2.6.1],
+icie.h [1.3.2.1], icolor.h [1.2.6.1], iconf.c [1.3.2.1], iconf.h [1.1.6.1],
+icontext.c [1.6.6.2], icontext.h [1.2.6.1], icremap.h [1.2.6.1],
+icsmap.h [1.2.6.1], icstate.h [1.4.6.2], iddict.h [1.2.6.1],
+iddstack.h [1.2.6.1], idebug.c [1.4.2.1], idebug.h [1.2.6.1],
+idict.c [1.4.4.1], idict.h [1.2.6.1], idictdef.h [1.2.6.1],
+idisp.c [1.2.2.1], idisp.h [1.1.2.1], idosave.h [1.2.6.1],
+idparam.c [1.3.6.1], idparam.h [1.3.6.1], idsdata.h [1.2.6.1],
+idstack.c [1.2.6.1], idstack.h [1.2.6.1], iesdata.h [1.2.6.1],
+iestack.h [1.2.6.1], ifcid.h [1.2.6.1], ifilter.h [1.3.6.1],
+ifilter2.h [1.2.6.1], ifont.h [1.6.4.1], ifont1.h [1.3.6.1],
+ifont2.h [1.2.6.1], ifont42.h [1.3.6.1], ifrpred.h [1.2.6.1],
+ifunc.h [1.3.6.3], ifwpred.h [1.2.6.1], igc.c [1.5.2.1], igc.h [1.2.6.1],
+igcref.c [1.3.2.1], igcstr.c [1.3.6.1], igcstr.h [1.2.6.1],
+igstate.h [1.3.6.1], iht.h [1.2.6.1], iimage.h [1.2.6.1],
+iimage2.h [1.2.6.1], iinit.c [1.3.4.1], iinit.h [1.2.6.1],
+ilevel.h [1.2.6.1], ilocate.c [1.4.2.1], imain.c [1.19.2.1],
+imain.h [1.3.2.1], imainarg.c [1.13.2.2], imainarg.h [1.3.2.1],
+imemory.h [1.2.6.1], iminst.h [1.5.2.1], iname.c [1.3.6.1],
+iname.h [1.2.6.1], inamedef.h [1.2.6.1], inameidx.h [1.2.6.1],
+inames.h [1.2.6.1], inamestr.h [1.2.6.1], inobtokn.c [1.2.6.1],
+inouparm.c [1.2.6.1], interp.c [1.8.2.1], interp.h [1.2.6.1],
+iosdata.h [1.2.6.1], iostack.h [1.2.6.1], ipacked.h [1.2.6.1],
+iparam.c [1.5.6.1], iparam.h [1.2.6.1], iparray.h [1.2.6.1],
+ipcolor.h [1.2.6.1], ireclaim.c [1.3.2.1], iref.h [1.5.4.1],
+isave.c [1.3.6.1], isave.h [1.2.6.1], iscan.c [1.5.6.1], iscan.h [1.4.6.1],
+iscanbin.c [1.5.6.1], iscanbin.h [1.2.6.1], iscannum.c [1.3.2.1],
+iscannum.h [1.2.6.1], isdata.h [1.2.6.1], isstate.h [1.2.6.1],
+istack.c [1.2.6.1], istack.h [1.2.6.1], istkparm.h [1.2.6.1],
+istream.h [1.2.6.1], istruct.h [1.2.6.1], itoken.h [1.2.6.1],
+iutil.c [1.3.2.1], iutil.h [1.2.6.1], iutil2.c [1.2.6.2],
+iutil2.h [1.2.6.2], ivmem2.h [1.2.6.1], ivmspace.h [1.2.6.1],
+main.h [1.3.2.1], oparc.h [1.2.6.1], opcheck.h [1.2.6.1], opdef.h [1.3.2.1],
+oper.h [1.2.6.1], opextern.h [1.2.6.1]: 2002/02/22 19:45:57 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(ostack.h [1.2.6.1],
+sbhc.c [1.3.4.1], sbhc.h [1.2.6.1], sbwbs.c [1.2.6.1], sbwbs.h [1.2.6.1],
+sfilter1.c [1.6.4.1], shcgen.c [1.2.6.1], shcgen.h [1.2.6.1],
+smtf.c [1.2.6.1], smtf.h [1.2.6.1], store.h [1.2.6.1], zarith.c [1.4.6.1],
+zarray.c [1.2.6.1], zbfont.c [1.7.4.1], zbseq.c [1.4.6.1],
+zcfont.c [1.2.6.1], zchar.c [1.4.2.1], zchar1.c [1.7.2.1],
+zchar2.c [1.2.6.1], zchar32.c [1.2.6.1], zchar42.c [1.3.4.1],
+zcharout.c [1.4.4.1], zcharx.c [1.3.6.1], zcid.c [1.3.6.1],
+zcie.c [1.5.2.1], zcolor.c [1.4.6.1], zcolor1.c [1.3.6.1],
+zcolor2.c [1.4.2.1], zcontext.c [1.7.2.1], zcontrol.c [1.3.6.2],
+zcrd.c [1.2.6.1], zcsdevn.c [1.5.2.2], zcsindex.c [1.3.6.1],
+zcspixel.c [1.2.6.1], zcssepr.c [1.8.2.1], zdevcal.c [1.3.6.1],
+zdevice.c [1.3.6.2], zdevice2.c [1.4.2.2], zdfilter.c [1.2.2.1],
+zdict.c [1.3.6.1], zdouble.c [1.2.6.1], zdpnext.c [1.3.6.1],
+zdps.c [1.4.6.1], zdps1.c [1.3.4.1], zdscpars.c [1.12.2.1],
+zfarc4.c [1.2.2.1], zfbcp.c [1.3.6.1], zfcid.c [1.11.4.1],
+zfcid0.c [1.7.2.1], zfcid1.c [1.4.4.1], zfcmap.c [1.9.2.1],
+zfdctd.c [1.6.2.1], zfdcte.c [1.5.2.1], zfdecode.c [1.3.6.1],
+zfile.c [1.11.2.2], zfileio.c [1.12.2.1], zfilter.c [1.5.2.1],
+zfilter2.c [1.3.6.1], zfilterx.c [1.2.6.1], zfmd5.c [1.2.6.1],
+zfont.c [1.3.4.1], zfont0.c [1.3.6.1], zfont1.c [1.9.4.1],
+zfont2.c [1.4.2.1], zfont32.c [1.2.6.1], zfont42.c [1.5.6.1],
+zfproc.c [1.9.2.1], zfrsd.c [1.4.6.1], zfunc.c [1.6.6.3],
+zfunc0.c [1.3.6.2], zfunc3.c [1.2.6.2], zfunc4.c [1.7.4.2],
+zfzlib.c [1.3.6.1], zgeneric.c [1.3.6.1], zgstate.c [1.2.6.1],
+zhsb.c [1.2.6.1], zht.c [1.2.6.1], zht1.c [1.2.6.1], zht2.c [1.2.6.1],
+zicc.c [1.2.2.1], zimage.c [1.5.6.1], zimage2.c [1.4.2.1],
+zimage3.c [1.3.6.1], ziodev.c [1.6.2.1], ziodev2.c [1.3.6.1],
+zmath.c [1.3.6.1], zmatrix.c [1.4.6.1], zmedia2.c [1.3.2.1],
+zmisc.c [1.2.6.1], zmisc1.c [1.3.6.1], zmisc2.c [1.3.6.1],
+zmisc3.c [1.2.6.1], zpacked.c [1.2.6.1], zpaint.c [1.2.6.1],
+zpath.c [1.2.6.1], zpath1.c [1.2.6.1], zpcolor.c [1.3.6.1],
+zrelbit.c [1.2.6.1], zrop.c [1.2.6.1], zshade.c [1.4.6.2],
+zstack.c [1.2.6.1], zstring.c [1.2.6.1], zsysvm.c [1.2.6.1],
+ztoken.c [1.6.6.1], ztrans.c [1.13.2.1], ztrap.c [1.2.6.1],
+ztype.c [1.3.6.1], zupath.c [1.2.6.1], zusparam.c [1.3.6.2],
+zvmem.c [1.3.2.2], zvmem2.c [1.3.2.1]: 2002/02/22 19:46:00 ray)
+
+MS-Windows installer now clears the read-only attribute when copying files.
+The installer was failing when the source files were stored unpacked on a
+CD-ROM. (dwinst.cpp [1.2.6.2], dwinst.h [1.2.6.2]: 2002/03/12 20:57:01
+ghostgum)
+
+gs_cjk project : gdevpsfm.c did not know about CODE_VALUE_NOTDEF which was
+introduced by MDRC. Fix by Suzuki Toshiya. Also Fix in HEAD (revision 1.8
+-&gt; 1.9) by L. Peter Deutsch is included. (lib/gs_cmap.ps [1.11.2.2]:
+2002/04/02 13:24:12 mpsuzuki)
+
+gs_cjk project : MDRC bug fix pt.1: use signalerror instead stop Fix by
+Suzuki Toshiya. (lib/gs_cmap.ps [1.11.2.3]: 2002/04/02 13:25:44 mpsuzuki)
+
+gs_cjk project : MDRC bug fix pt.2: shrink map infos by endcidchar too, to
+provide parsing of Adobe-CNS1-4 UCS4 CMap. Fix by Suzuki Toshiya.
+(lib/gs_cmap.ps [1.11.2.4]: 2002/04/02 13:26:37 mpsuzuki)
+
+gs_cjk project : return error when we cannot load even CID=0. Fix by Suzuki
+Toshiya. (zfcid0.c [1.7.2.2]: 2002/04/02 13:28:34 mpsuzuki)
+
+gs_cjk project : cshow bug patch for CIDFont. proc passed to cshow can
+change currentfont internally, in such case, rangecheck error should not be
+returned. Fix by Masatake Yamato. (zchar.c [1.4.2.2]: 2002/04/02 13:30:49
+mpsuzuki)
+
+gs_cjk project : cshow bug patch for composite font. Fix by Masatake Yamato.
+(zcfont.c [1.2.6.2]: 2002/04/02 13:31:38 mpsuzuki)
+
+gs_cjk project : support for vertical writing mode by CIDFontType2 by
+Hideyuki Suzuki. (zchar42.c [1.3.4.2]: 2002/04/02 13:32:14 mpsuzuki)
+
+gs_cjk project : zsetcachedevice2 bug patch by Masatake Yamato, modified by
+Hideo Saito (zchar1.c [1.7.2.2]: 2002/04/02 13:45:02 mpsuzuki)
+
+gs_cjk project : CDevProc patch by Masatake Yamato. (zcharout.c [1.4.4.2]:
+2002/04/02 13:46:13 mpsuzuki)
+
+gs_cjk project : CJK TTF loader: on-the-fly CIDFontType2 convertor,
+including bugfix for cmap format2 parser (2002-01-09 for GS_6_5) by Hideyuki
+Suzuki and Taiji Yamada. (lib/gs_ttf.ps [1.9.2.2]: 2002/04/02 13:55:03
+mpsuzuki)
+
+gs_cjk project : CIDFontmap patch (without CJK TTF support) by Masatake
+Yamato. (lib/gs_cidcm.ps [1.5.2.2], lib/gs_cidfn.ps [1.18.4.2],
+lib/gs_init.ps [1.40.2.7]: 2002/04/02 13:55:47 mpsuzuki)
+
+gs_cjk project : CIDFontmap patch CJK TTF support by Masatake Yamato.
+(lib/gs_cidfn.ps [1.18.4.3]: 2002/04/02 13:56:26 mpsuzuki)
+
+gs_cjk project : replace "min" &amp; "max" by ".min" &amp; ".max". Fix by
+Suzuki Toshiya. (lib/gs_cidfn.ps [1.18.4.4], lib/gs_fonts.ps [1.13.2.3],
+lib/gs_init.ps [1.40.2.8], lib/gs_ll3.ps [1.10.2.2],
+lib/gs_trap.ps [1.3.6.2], lib/gs_typ32.ps [1.3.2.2]: 2002/04/02 13:57:27
+mpsuzuki)
+
+gs-cjk project : apply security fix by rayjj for gs6.53 branch (for original
+fix, see rev. 1.17.2.2). Fix by Suzuki Toshiya. (lib/gs_cidfn.ps [1.18.4.5]:
+2002/04/03 07:31:14 mpsuzuki)
+
+Add multiple inclusion protection to headers files which were missing it.
+(dscparse.h [1.6.2.2], dwimg.h [1.4.2.2], dwinst.h [1.2.6.3],
+dwmain.h [1.3.2.2], dwreg.h [1.1.2.2], dwsetup.h [1.2.6.2],
+dwtext.h [1.4.2.2], dwuninst.h [1.2.6.2]: 2002/04/10 09:13:11 giles)
+
+adds missing Id: lines. (dwnodll.c [1.1.2.2], gdevdsp.h [1.1.2.2],
+gdevdsp2.h [1.2.2.2], idisp.c [1.2.2.2], zicc.c [1.2.2.2]: 2002/04/10
+09:33:25 giles)
+
+Update the version number in the library as well.
+(lib/gs_init.ps [1.40.2.9]: 2002/04/15 06:49:43 giles)
+
+Committing in . Back-ports from the main stream such that OpenVMS is happy
+Modified Files: Tag: GS_7_0X gs/src/devs.mak gs/src/gschar0.c
+gs/src/gserrors.h gs/src/imainarg.c
+----------------------------------------------------------------------
+(imainarg.c [1.13.2.3]: 2002/04/18 09:58:45 joukj)
+
+Updating licensing information in Windows files. (dwreg.c [1.1.2.2],
+dwsetup.cpp [1.5.6.2], dwuninst.cpp [1.2.6.2]: 2002/04/20 22:11:39 ghostgum)
+
+</pre><h2><a name="7.05-Streams"></a>Streams</h2><pre>
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(sa85d.c [1.3.4.1],
+sa85d.h [1.3.4.1], sa85x.h [1.3.6.1], sarc4.c [1.5.2.1], sarc4.h [1.2.2.1],
+sbcp.c [1.3.6.1], sbcp.h [1.2.6.1], sbtx.h [1.2.6.1], scanchar.h [1.2.6.1],
+scantab.c [1.2.6.1], scf.h [1.2.6.1], scfd.c [1.3.4.1], scfe.c [1.2.6.1],
+scfetab.c [1.2.6.1], scfparam.c [1.2.6.1], scfx.h [1.2.6.1],
+scommon.h [1.3.4.1], sdcparam.c [1.3.2.1], sdcparam.h [1.2.6.1],
+sdct.h [1.4.2.1], sdctc.c [1.2.6.1], sdctd.c [1.2.6.1], sdcte.c [1.4.2.1],
+sddparam.c [1.2.6.1], sdeparam.c [1.4.2.1], seexec.c [1.4.2.1],
+sfilter.h [1.6.6.1], sfilter2.c [1.3.6.1], sfxboth.c [1.2.6.1],
+sfxfd.c [1.6.4.1], sfxstdio.c [1.4.6.1], shc.c [1.2.6.1], shc.h [1.2.6.1],
+siinterp.c [1.2.6.1], siinterp.h [1.2.6.1], siscale.c [1.4.6.1],
+siscale.h [1.2.6.1], sisparam.h [1.2.6.1], sjpeg.h [1.2.6.1],
+sjpegc.c [1.4.2.1], sjpegd.c [1.3.2.1], sjpege.c [1.3.2.1],
+slzwc.c [1.2.6.1], slzwce.c [1.2.6.1], slzwd.c [1.3.4.1], slzwx.h [1.2.6.1],
+smd5.c [1.3.6.1], smd5.h [1.2.6.1], spdiff.c [1.3.6.1], spdiffx.h [1.2.6.1],
+spngp.c [1.2.6.1], spngpx.h [1.2.6.1], spprint.c [1.4.2.1],
+spprint.h [1.3.2.1], spsdf.c [1.5.2.1], spsdf.h [1.2.6.1],
+srdline.h [1.2.6.1], srld.c [1.2.6.1], srle.c [1.2.6.1], srlx.h [1.3.4.1],
+sstring.c [1.2.6.1], sstring.h [1.3.4.1], stat_.h [1.6.2.1],
+std.h [1.4.2.1], stdio_.h [1.4.2.1], stdpre.h [1.4.2.1],
+stream.c [1.15.2.1], stream.h [1.8.2.1], strimpl.h [1.3.4.1],
+string_.h [1.2.6.1], szlibc.c [1.3.2.1], szlibd.c [1.3.4.1],
+szlibe.c [1.2.6.1], szlibx.h [1.2.6.1], szlibxx.h [1.2.6.1]: 2002/02/22
+19:46:00 ray)
+
+Adds support for compilation against a standard shared libjpeg. It is
+believed that non-baseline compliant DCTEncoded data, permitted by early
+versions of postscript, is now extremely rare and the prohibition against
+SHARE_JPEG=1 may reasonably be removed. The autoconf build will prefer a
+local copy of the jpeg source, in which case the D_MAX_BLOCKS_IN_MCU patch
+will still be applied. If no such local copy is found, it will try to find a
+shared library on the system. For all unix builds, if $(JSRCDIR)/jmemsys.h
+cannot be found, we define DONT_HAVE_JMEMSYS_H and include our own versions
+of the libjpeg memory manager prototypes. The default allocator in the
+shared library is overridden by the ghostscript one at link-time. While this
+may be implementation-dependent, it appears to function as desired on at
+least GNU/Linux and Solaris. Also changes the autoconf build to prefer local
+zlib and libpng source, and cleans up some variable names. Patch by Raph
+Levien from 7.20. (sjpegc.c [1.4.2.2]: 2002/04/10 01:44:27 giles)
+
+</pre><h2><a name="7.05-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - The formula for dy6 in Type2 hflex1 instruction was wrong. Source
+Forge bug #530136 "hflex1 arguments misinterpreted". Thanks to Felix Pahl
+(fpahl) for spotting this. (gstype2.c [1.10.2.2]: 2002/03/20 20:22:15 igor)
+ - Fix : Type2 interpreter state was wrongly backed up for sbw
+fallback. Source Forge bug "[ 541877 ] /invalidfont on Kozuka Mincho". Patch
+by Igor Melichev, backported from the development tree.
+(gstype2.c [1.10.2.3]: 2002/04/18 21:10:48 giles)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(ctype_.h [1.2.6.1],
+dirent_.h [1.2.6.1], dos_.h [1.2.6.1], errno_.h [1.2.6.1],
+fcntl_.h [1.3.6.1], gconf.c [1.2.6.1], gconf.h [1.2.6.1],
+gdebug.h [1.3.2.1], gdevabuf.c [1.3.6.1], gdevalph.c [1.2.6.1],
+gdevbbox.c [1.4.2.1], gdevbbox.h [1.2.6.1], gdevcmap.c [1.2.6.1],
+gdevcmap.h [1.2.6.1], gdevdbit.c [1.2.6.1], gdevddrw.c [1.2.6.1],
+gdevdflt.c [1.3.6.1], gdevdgbr.c [1.2.6.1], gdevdrop.c [1.3.6.1],
+gdevemap.c [1.2.6.1], gdevhit.c [1.2.6.1], gdevm1.c [1.2.6.1],
+gdevm16.c [1.2.6.1], gdevm2.c [1.2.6.1], gdevm24.c [1.2.6.1],
+gdevm32.c [1.2.6.1], gdevm4.c [1.2.6.1], gdevm8.c [1.2.6.1],
+gdevmem.c [1.2.6.1], gdevmem.h [1.3.6.1], gdevmpla.c [1.2.6.1],
+gdevmpla.h [1.2.6.1], gdevmr1.c [1.2.6.1], gdevmr2n.c [1.2.6.1],
+gdevmr8n.c [1.2.6.1], gdevmrop.h [1.3.6.1], gdevmrun.c [1.2.6.1],
+gdevmrun.h [1.2.6.1], gdevnfwd.c [1.3.6.1], gdevp14.c [1.4.2.1],
+gdevpipe.c [1.4.4.1], gdevplnx.c [1.2.6.1], gdevplnx.h [1.2.6.1],
+gdevppla.c [1.2.6.1], gdevppla.h [1.2.6.1], gdevprn.c [1.5.6.2],
+gdevprn.h [1.6.6.1], gdevprna.c [1.2.6.1], gdevprna.h [1.2.6.1],
+gdevpsf.h [1.10.2.1], gdevpsf1.c [1.9.2.1], gdevpsf2.c [1.15.2.1],
+gdevpsfm.c [1.5.2.1], gdevpsft.c [1.8.2.1], gdevpsfu.c [1.7.2.1],
+gdevpsfx.c [1.9.2.1], gdevrops.c [1.3.6.1], gdevtrac.c [1.2.6.1],
+gdevvec.c [1.12.2.2], gdevvec.h [1.7.2.1], gp.h [1.8.2.2],
+gp_dosfe.c [1.2.6.2], gp_dosfs.c [1.2.6.2], gp_getnv.c [1.2.6.1],
+gp_msdos.c [1.2.6.1], gp_nsync.c [1.2.6.1], gp_psync.c [1.2.6.1],
+gp_strdl.c [1.2.6.1], gp_unifn.c [1.2.6.2], gp_unifs.c [1.6.2.1],
+gpcheck.h [1.2.6.1], gpgetenv.h [1.2.6.1], gpmisc.c [1.9.4.1],
+gpmisc.h [1.2.6.1], gpsync.h [1.2.6.1], gsalloc.c [1.11.2.1],
+gsalloc.h [1.2.6.1], gsalpha.c [1.2.6.1], gsalpha.h [1.2.6.1],
+gsalphac.c [1.2.6.1], gsalphac.h [1.2.6.1], gsargs.c [1.4.2.1],
+gsargs.h [1.4.2.1], gsbitcom.c [1.1.4.1], gsbitmap.h [1.2.6.1],
+gsbitops.c [1.3.4.1], gsbitops.h [1.2.6.1], gsbittab.c [1.2.6.1],
+gsbittab.h [1.2.6.1], gsccode.h [1.4.6.1], gsccolor.h [1.2.6.1],
+gscdef.c [1.15.2.1], gscdefs.h [1.2.6.1], gscdevn.c [1.6.2.1],
+gscdevn.h [1.3.6.1], gschar.c [1.3.6.1], gschar.h [1.3.6.1],
+gschar0.c [1.3.4.1], gscie.c [1.4.2.1], gscie.h [1.3.2.1],
+gsciemap.c [1.6.2.1], gscindex.h [1.2.6.1], gsclipsr.c [1.2.6.1],
+gsclipsr.h [1.2.6.1], gscolor.c [1.5.2.1], gscolor.h [1.3.6.1],
+gscolor1.c [1.4.2.1], gscolor1.h [1.2.6.1], gscolor2.c [1.6.6.1],
+gscolor2.h [1.3.6.1], gscolor3.c [1.4.6.1], gscolor3.h [1.2.6.1],
+gscompt.h [1.2.6.1], gscoord.c [1.5.6.1], gscoord.h [1.2.6.1],
+gscparam.c [1.7.2.1], gscpixel.c [1.3.6.1], gscpixel.h [1.2.6.1],
+gscpm.h [1.2.6.1], gscrd.c [1.2.6.1], gscrd.h [1.2.6.1], gscrdp.c [1.2.6.1],
+gscrdp.h [1.2.6.1], gscrypt1.c [1.2.6.1], gscrypt1.h [1.2.6.1],
+gscscie.c [1.4.2.1], gscsel.h [1.2.6.1], gscsepnm.h [1.2.6.1],
+gscsepr.c [1.12.2.2], gscsepr.h [1.4.6.1], gscspace.c [1.4.6.1],
+gscspace.h [1.8.2.1], gscssub.c [1.3.2.1], gscssub.h [1.2.6.1],
+gsdcolor.h [1.3.6.1], gsdevice.c [1.11.2.1], gsdevice.h [1.3.6.1],
+gsdevmem.c [1.2.6.1], gsdfilt.c [1.3.2.1], gsdfilt.h [1.2.2.1],
+gsdparam.c [1.4.6.2], gsdpnext.h [1.2.6.1], gsdps.c [1.2.6.1],
+gsdps.h [1.2.6.1], gsdps1.c [1.2.6.1], gsdsrc.c [1.2.6.1],
+gsdsrc.h [1.3.6.1], gserror.h [1.2.6.1], gserrors.h [1.2.6.1],
+gsexit.h [1.4.2.1], gsfcid.c [1.5.4.1], gsfcmap.c [1.14.2.1],
+gsfcmap.h [1.4.6.1], gsfemu.c [1.2.6.1], gsflip.c [1.2.6.1],
+gsflip.h [1.2.6.1], gsfname.c [1.2.6.1], gsfname.h [1.2.6.1],
+gsfont.c [1.4.4.1], gsfont.h [1.2.6.1], gsfont0.c [1.2.6.1],
+gsfunc.c [1.4.6.1], gsfunc.h [1.4.6.1], gsfunc0.c [1.5.4.1],
+gsfunc0.h [1.2.6.1], gsfunc3.c [1.4.6.1], gsfunc3.h [1.2.6.1],
+gsfunc4.c [1.7.2.1], gsfunc4.h [1.2.6.1], gsgc.h [1.3.2.1],
+gshsb.c [1.2.6.1], gshsb.h [1.2.6.1], gsht.c [1.2.6.1], gsht.h [1.2.6.1],
+gsht1.c [1.3.2.1], gsht1.h [1.2.6.1], gshtscr.c [1.6.2.1],
+gshtx.c [1.2.6.1], gshtx.h [1.2.6.1], gsicc.c [1.5.2.1], gsicc.h [1.3.2.1],
+gsimage.c [1.4.2.1], gsimage.h [1.2.6.1], gsimpath.c [1.2.6.1],
+gsinit.c [1.3.2.1]: 2002/02/22 19:45:55 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(gsio.h [1.5.2.1],
+gsiodev.c [1.5.2.1], gsiodevs.c [1.2.6.1], gsipar3x.h [1.3.6.1],
+gsiparam.h [1.4.6.1], gsiparm2.h [1.2.6.1], gsiparm3.h [1.4.6.1],
+gsiparm4.h [1.2.6.1], gsistate.c [1.4.6.1], gsjconf.h [1.2.6.1],
+gslib.c [1.5.2.1], gslib.h [1.2.6.1], gsline.c [1.2.6.1],
+gsline.h [1.2.6.1], gslparam.h [1.2.6.1], gsmalloc.c [1.3.6.1],
+gsmalloc.h [1.2.6.1], gsmatrix.c [1.2.6.1], gsmatrix.h [1.2.6.1],
+gsmdebug.h [1.3.2.1], gsmemlok.c [1.3.6.1], gsmemlok.h [1.2.6.1],
+gsmemory.c [1.4.2.1], gsmemory.h [1.3.2.1], gsmemraw.h [1.2.6.1],
+gsmemret.c [1.2.6.1], gsmemret.h [1.2.6.1], gsmisc.c [1.12.2.1],
+gsnogc.c [1.7.2.1], gsnogc.h [1.2.6.1], gsnorop.c [1.2.6.1],
+gsnotify.c [1.2.6.1], gsnotify.h [1.2.6.1], gspaint.c [1.2.6.1],
+gspaint.h [1.2.6.1], gsparam.c [1.4.6.1], gsparam.h [1.8.4.1],
+gsparam2.c [1.2.6.1], gsparams.c [1.2.6.1], gsparams.h [1.2.6.1],
+gsparamx.c [1.4.2.1], gsparamx.h [1.3.6.1], gspath.c [1.2.6.1],
+gspath.h [1.2.6.1], gspath1.c [1.3.4.1], gspath2.h [1.2.6.1],
+gspcolor.c [1.4.6.1], gspcolor.h [1.2.6.1], gspenum.h [1.2.6.1],
+gsptype1.c [1.3.2.1], gsptype1.h [1.2.6.1], gsptype2.c [1.5.2.1],
+gsptype2.h [1.4.2.1], gsrect.h [1.2.6.1], gsrefct.h [1.2.6.1],
+gsrop.c [1.2.6.1], gsrop.h [1.2.6.1], gsropc.c [1.2.6.1],
+gsropc.h [1.2.6.1], gsropt.h [1.4.2.1], gsroptab.c [1.2.6.1],
+gsshade.c [1.4.2.1], gsshade.h [1.3.6.1], gsstate.c [1.11.2.1],
+gsstate.h [1.2.6.1], gsstruct.h [1.8.2.1], gsstype.h [1.2.6.1],
+gstext.c [1.6.2.1], gstext.h [1.3.6.1], gstparam.h [1.7.6.1],
+gstrans.c [1.13.2.1], gstrans.h [1.6.6.1], gstrap.c [1.3.6.1],
+gstrap.h [1.3.6.1], gstype1.c [1.6.4.1], gstype1.h [1.2.6.1],
+gstype2.c [1.10.2.1], gstype42.c [1.12.2.1], gstypes.h [1.3.2.1],
+gsuid.h [1.2.6.1], gsutil.c [1.4.6.2], gsutil.h [1.3.6.2],
+gsxfont.h [1.2.6.1], gx.h [1.2.6.1], gxacpath.c [1.3.6.1],
+gxalloc.h [1.6.2.1], gxalpha.h [1.2.6.1], gxarith.h [1.2.6.1],
+gxband.h [1.2.6.1], gxbcache.c [1.2.6.1], gxbcache.h [1.2.6.1],
+gxbitfmt.h [1.2.6.1], gxbitmap.h [1.2.6.1], gxbitops.h [1.2.6.1],
+gxblend.c [1.2.2.1], gxblend.h [1.1.2.1], gxccache.c [1.5.2.1],
+gxccman.c [1.2.6.1], gxcdevn.h [1.2.6.1], gxchar.c [1.5.2.2],
+gxchar.h [1.2.6.1], gxchrout.c [1.2.6.1], gxchrout.h [1.2.6.1],
+gxcht.c [1.3.2.1], gxcid.h [1.3.6.1], gxcie.h [1.3.2.1],
+gxcindex.h [1.2.6.1], gxclbits.c [1.4.4.1], gxcldev.h [1.4.4.1],
+gxclfile.c [1.3.2.1], gxclimag.c [1.3.2.1], gxclio.h [1.2.6.1],
+gxclip.c [1.4.2.1], gxclip.h [1.2.6.1], gxclip2.c [1.3.6.1],
+gxclip2.h [1.2.6.1], gxclipm.c [1.3.6.1], gxclipm.h [1.2.6.1],
+gxclipsr.h [1.2.6.1], gxclist.c [1.3.6.1], gxclist.h [1.2.6.1],
+gxcllzw.c [1.2.6.1], gxclmem.c [1.2.6.1], gxclmem.h [1.2.6.1],
+gxclpage.c [1.2.6.1], gxclpage.h [1.2.6.1], gxclpath.c [1.9.2.1],
+gxclpath.h [1.6.6.1], gxclrast.c [1.9.2.1], gxclread.c [1.3.4.1],
+gxclrect.c [1.2.6.1], gxclutil.c [1.5.2.1], gxclzlib.c [1.2.6.1],
+gxcmap.c [1.3.6.1], gxcmap.h [1.2.6.1], gxcolor2.h [1.4.6.1],
+gxcomp.h [1.2.6.1], gxcoord.h [1.2.6.1], gxcpath.c [1.3.6.1],
+gxcpath.h [1.2.6.1], gxcspace.h [1.4.6.1], gxctable.c [1.3.6.1],
+gxctable.h [1.2.6.1], gxcvalue.h [1.2.6.1], gxdcconv.c [1.3.6.1],
+gxdcconv.h [1.2.6.1], gxdcolor.c [1.3.6.1], gxdcolor.h [1.3.6.1],
+gxdda.h [1.2.6.1], gxdevbuf.h [1.2.6.1], gxdevcli.h [1.5.2.2],
+gxdevice.h [1.4.6.2], gxdevmem.h [1.2.6.1], gxdevrop.h [1.2.6.1],
+gxdht.h [1.4.6.1], gxdhtres.h [1.2.6.1], gxdither.c [1.2.6.1],
+gxdither.h [1.2.6.1], gxfarith.h [1.3.6.1], gxfcache.h [1.2.6.1],
+gxfcid.h [1.6.6.1], gxfcmap.h [1.8.2.1], gxfill.c [1.8.2.1],
+gxfixed.h [1.3.4.1], gxfmap.h [1.3.6.1], gxfont.h [1.3.4.1],
+gxfont0.h [1.3.6.1], gxfont1.h [1.5.4.1], gxfont42.h [1.4.6.1],
+gxfrac.h [1.3.4.1], gxftype.h [1.2.6.1], gxfunc.h [1.3.6.1],
+gxgetbit.h [1.2.6.1], gxhint1.c [1.2.6.1], gxhint2.c [1.2.6.1],
+gxhint3.c [1.3.2.1], gxht.c [1.2.6.1], gxht.h [1.2.6.1],
+gxhtbit.c [1.3.6.1], gxhttile.h [1.2.6.1], gxhttype.h [1.2.6.1],
+gxi12bit.c [1.2.6.1], gxiclass.h [1.2.6.1], gxicolor.c [1.3.2.1],
+gxidata.c [1.4.6.1], gxifast.c [1.4.2.1], gximag3x.c [1.7.6.1],
+gximag3x.h [1.3.6.1], gximage.c [1.2.6.1], gximage.h [1.2.6.1],
+gximage1.c [1.5.6.1], gximage2.c [1.2.6.1], gximage3.c [1.6.6.1],
+gximage3.h [1.4.6.1], gximage4.c [1.3.6.1], gximono.c [1.2.6.1],
+gxino12b.c [1.2.6.1], gxiodev.h [1.2.6.1], gxiparam.h [1.2.6.1],
+gxipixel.c [1.2.6.1], gxiscale.c [1.2.6.2], gxistate.h [1.6.6.1],
+gxline.h [1.2.6.1], gxlum.h [1.2.6.1], gxmatrix.h [1.4.6.1],
+gxmclip.c [1.2.6.1], gxmclip.h [1.2.6.1], gxobj.h [1.2.6.1],
+gxop1.h [1.2.6.1], gxp1fill.c [1.2.6.1], gxp1impl.h [1.2.6.1],
+gxpageq.c [1.2.6.1], gxpageq.h [1.2.6.1], gxpaint.c [1.2.6.1],
+gxpaint.h [1.2.6.1], gxpath.c [1.2.6.1], gxpath.h [1.2.6.1],
+gxpath2.c [1.2.6.1], gxpcache.h [1.2.6.1], gxpcmap.c [1.3.6.1],
+gxpcolor.h [1.2.6.1], gxpcopy.c [1.3.6.1], gxpdash.c [1.2.6.1],
+gxpflat.c [1.2.6.1], gxropc.h [1.2.6.1], gxrplane.h [1.2.6.1],
+gxsample.c [1.2.6.1], gxsample.h [1.2.6.1], gxshade.c [1.6.2.1],
+gxshade.h [1.4.2.1], gxshade1.c [1.9.2.1], gxshade4.c [1.6.2.1],
+gxshade4.h [1.2.6.1], gxshade6.c [1.3.6.1], gxstate.h [1.2.6.1],
+gxstdio.h [1.2.6.1], gxstroke.c [1.2.6.1], gxsync.c [1.2.6.1],
+gxsync.h [1.2.6.1], gxtext.h [1.7.2.1], gxtmap.h [1.2.6.1],
+gxttf.h [1.2.6.1], gxtype1.c [1.8.4.1], gxtype1.h [1.5.4.1],
+gxxfont.h [1.2.6.1], gzacpath.h [1.2.6.1], gzcpath.h [1.2.6.1],
+gzht.h [1.4.4.1], gzline.h [1.2.6.1], gzpath.h [1.3.6.1],
+gzstate.h [1.5.2.1], jerror_.h [1.2.6.1], malloc_.h [1.2.6.1],
+math_.h [1.2.6.1], memory_.h [1.2.6.1], pipe_.h [1.2.6.1],
+time_.h [1.3.2.1], unistd_.h [1.4.2.1], vmsmath.h [1.2.6.1],
+windows_.h [1.2.6.1]: 2002/02/22 19:45:58 ray)
+
+gs_cjk project : gdevpsfm.c did not know about CODE_VALUE_NOTDEF which was
+introduced by MDRC. Fix by Suzuki Toshiya. Also Fix in HEAD (revision 1.8
+-&gt; 1.9) by L. Peter Deutsch is included. (gdevpsfm.c [1.5.2.2]:
+2002/04/02 13:24:12 mpsuzuki)
+
+gs_cjk project : handle "cidchar" map correctly. Fix by Suzuki Toshiya.
+(gsfcmap.c [1.14.2.2]: 2002/04/02 13:27:37 mpsuzuki)
+
+gs_cjk project : bugfix for nested FMapType4/5 OCF. Fix by Suzuki Toshiya.
+(gschar0.c [1.3.4.2]: 2002/04/02 13:29:35 mpsuzuki)
+
+gs_cjk project : bugfix for invalid metrics calculation for CIDFontType2.
+Fix by Masatake Yamato. (gstype42.c [1.12.2.2]: 2002/04/02 13:33:06
+mpsuzuki)
+
+gs_cjk project : cshow bug fix for CIDFontType2. Fix by Hideyuki Suzuki.
+(gxchar.c [1.5.2.3]: 2002/04/02 13:33:44 mpsuzuki)
+
+gs_cjk project: glyph cache bug patch for vertical writing mode. Fallback
+against inconsistency in double checking of glyph cache. The inconsistency
+causes misplacement of CJK glyph in vertical writing mode. Fix by Hideo
+Saito. (gxchar.c [1.5.2.4], gxchar.h [1.2.6.2]: 2002/04/02 13:35:00
+mpsuzuki)
+
+gs_cjk project : glyphshow in vertical writing mode bug patch. Originally,
+FontBBox_as_Metrics2 was set when charcode string is decoded into CIDs.
+"glyphshow" bypasses such decoding procedure, thus FontBBox_as_Metrics2 is
+not set. Fix by Masatake Yamato. (gstext.c [1.6.2.2]: 2002/04/02 13:42:10
+mpsuzuki)
+
+gs-cjk project : move definition "cc" to the scope that it is used. Fix by
+Suzuki Toshiya. (gxchar.c [1.5.2.5]: 2002/04/02 13:52:29 mpsuzuki)
+
+Add multiple inclusion protection to headers files which were missing it.
+(gsdfilt.h [1.2.2.2], jerror_.h [1.2.6.2]: 2002/04/10 09:13:11 giles)
+
+mark this as a GNU version and bump the release number (gscdef.c [1.15.2.2]:
+2002/04/15 05:47:56 giles)
+
+disable the new auto-bold and auto-slant functions for non-cid fonts,
+pending improved detection of when this is necessary. (gscdef.c [1.15.2.3]:
+2002/04/16 06:11:29 giles)
+
+revert bad licensing change accidentally included in the last commit.
+(gscdef.c [1.15.2.4]: 2002/04/16 06:12:42 giles)
+
+Committing in . Back-ports from the main stream such that OpenVMS is happy
+Modified Files: Tag: GS_7_0X gs/src/devs.mak gs/src/gschar0.c
+gs/src/gserrors.h gs/src/imainarg.c
+----------------------------------------------------------------------
+(gschar0.c [1.3.4.3], gserrors.h [1.2.6.2]: 2002/04/18 09:58:45 joukj)
+
+</pre><h2><a name="7.05-Other"></a>Other</h2><pre>
+
+Fixes problems:
+ - Fixes the gdevx.o command line in the case when AC_PATH_X sets
+x_includes to the empty string. Fixes SF #530429. (Makefile.in [1.1.4.4],
+configure.ac [1.4.4.4]: 2002/03/28 19:35:58 raph)
+ - Uses a default 'src' setting for PSRCDIR in the autoconf build
+with a shared libpng, as we do with zlib, preventing compiler confusion from
+empty -I lines. Partial fix for SF bug #514898. (configure.ac [1.4.4.5]:
+2002/03/28 20:37:33 giles)
+ - improves X11 path settings in the autoconf build. We use
+AC_PATH_XTRA instead of the previous "is it null" hack with AC_PATH_X. The
+new macro also defines some additional libraries that may need to be
+included. We currently don't use this information. (Makefile.in [1.1.4.5],
+configure.ac [1.4.4.6]: 2002/03/28 20:41:25 giles)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(Makefile.in [1.1.4.3],
+gp_mswin.h [1.4.2.1], gsdll.h [1.3.2.1], gsdllos2.h [1.2.6.1],
+gsdllwin.h [1.3.2.1]: 2002/02/22 19:45:55 ray)
+
+Update banner to the new format common to all releases. References file
+LICENSE. Note that the $Id: line is not altered by this change.
+(gsjmorec.h [1.3.4.1],
+gspmdrv.h [1.2.6.1], iutilasm.asm [1.2.6.1]: 2002/02/22 19:45:58 ray)
+
+Replace Windows icons with new versions that include 48x48 pixel and 32-bit
+versions for Windows XP. Change the 16x16 pixel icons to use the full 'g'
+instead of just the head. Use a restricted icon gswin16.ico for WinZip SE
+which can't handle the new icon. (gswin.icx [1.1.2.1]: 2002/03/30 01:33:03
+ghostgum)
+
+Replace Windows icons with new versions that include 48x48 pixel and 32-bit
+versions for Windows XP. Change the 16x16 pixel icons to use the full 'g'
+instead of just the head. Use a restricted icon gswin16.ico for WinZip SE
+which can't handle the new icon. (gswin16.icx [1.1.2.1]: 2002/03/30 01:34:00
+ghostgum)
+
+Propagate autoconf build updates from HEAD: Allow shared jpeg since
+non-baseline dctencoded data is now vanishingly rare. Prefer local source of
+libjpeg, libpng and zlib to shared versions if it's available. Add the
+standard gcc cflags only if we're using gcc and it don't error on them. Also
+look for current-version-named third-party libraries to save a step.
+(Makefile.in [1.1.4.6], configure.ac [1.4.4.7]: 2002/04/09 21:18:27 giles)
+
+Add multiple inclusion protection to headers files which were missing it.
+(gsdll.h [1.3.2.2]: 2002/04/10 09:13:11 giles)
+
+adds missing Id: lines. (gp_mac.h [1.1.4.1], macsysstat.h [1.1.4.1],
+macsystypes.h [1.1.4.1], vms_x_fix.h [1.1.2.1]: 2002/04/10 09:33:26 giles)
+
+Adds the LICENSE file, containing a copy of the GNU GPL.
+(LICENSE [1.1.2.1]: 2002/04/15 05:38:45 giles)
+
+Upgrade icclib to (proposed) 2.01 release. Patch has been sent to Graeme
+Gill for consideration. (icclib/icc.c [1.6.2.1], icclib/icc.h [1.4.2.1],
+icclib/icc9809.h [1.2.2.1]: 2002/04/18 18:20:16 raph)
+
+Removes trailing comma in enum. (icclib/icc.h [1.4.2.2]: 2002/04/18 20:29:14
+raph)
+
+Update libpng version numbers to the latest 1.2.2. (configure.ac [1.4.4.8]:
+2002/04/19 06:32:22 giles)
+
+Add the 'stp' driver from the gimp-print project, and compile it in by
+default from the autoconf build if libgimprint is found.
+(Makefile.in [1.1.4.7], configure.ac [1.4.4.9]: 2002/04/19 22:23:09 giles)
+
+Update to the latest cvs version of ijs. Source files now properly include
+the MIT license header. (ijs/Makefile.in [1.1.2.2], ijs/README [1.1.2.2],
+ijs/ijs.c [1.1.2.2], ijs/ijs.h [1.1.2.2], ijs/ijs_client.c [1.1.2.2],
+ijs/ijs_client.h [1.1.2.2], ijs/ijs_client_example.c [1.1.2.2],
+ijs/ijs_exec_unix.c [1.1.2.2], ijs/ijs_exec_win.c [1.1.2.2],
+ijs/ijs_server.c [1.1.2.2], ijs/ijs_server.h [1.1.2.2],
+ijs/ijs_server_example.c [1.1.2.2], ijs/ijs_spec.sgml [1.1.2.2],
+ijs/unistd_.h [1.1.2.2]: 2002/04/22 17:53:36 giles)
+
+update icclib to the 2.02 release (icclib/Licence.txt [1.1.2.1],
+icclib/Readme.txt [1.1.2.1], icclib/icc.c [1.6.2.2], icclib/icc.h [1.4.2.3]:
+2002/04/22 18:17:47 giles)
+
+Update the ijs source to the latest 0.34 release.
+(ijs/Makefile.in [1.1.2.3], ijs/configure.in [1.1.2.2],
+ijs/ijs_spec.pdf [1.1.2.2], ijs/ijs_spec.sgml [1.1.2.3]: 2002/04/23 01:23:33
+giles)
+
+Add new license header to some files.
+(gp_mac.h [1.1.4.2], macsysstat.h [1.1.4.2], macsystypes.h [1.1.4.2]:
+2002/04/23 01:32:26 giles)
+
+<hr>
+
+<h1><a name="Version7.04"></a>Version 7.04 (2002-01-30)</h1>
+
+<p>
+This is a security update of Ghostscript. A number of maintenance
+fixes and new features have been added.
+
+<p> Major changes include:
+
+<ul>
+<li>A rather serious security hole, where PostScript code could cause
+arbitrary commands to be executed, has been patched.
+
+<li>There is also a new -DPARANOIDSAFER option, which locks down
+reading of arbitrary files.
+
+<li>This release integrates the IJS driver, which makes it much easier
+to add and upgrade printer drivers without needing to recompile
+Ghostscript.
+
+<li>There is a configure script for automatically configuring the
+makefile on Unix platforms. Those who enjoy the fun of hand-editing
+the makefile are still welcome to do so.
+
+<li>The usual bug fixes.
+
+</ul>
+
+<p>
+The following SourceForge bug numbers are currently open: (todo)
+
+<h3><a name="7.04_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version. Authors
+of drivers with potential security implications are encouraged to review
+the security changes, however.
+
+<pre>
+
+
+
+<h2><a name="7.04-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Improve security in a (mostly) backward compatible fashion adding
+more flexible file access paths (PermitFile...) as user paramters and adding
+the facility to return to NOSAFER mode after running jobs (files/procedures)
+in SAFER mode. Also adds a -dPARANOIDSAFER command line option that only
+allows reading files from %stdin, paths specified on LIBPATH, FONTPATH and
+/GenericResourceDir or /FontResourceDir. Improve security for device related
+access to the file system and to pipes by allowing the dangerous parameters
+to be locked (for example, OutputFile). The locking is performed after
+command line parameters are established. This should address SF bug #474582
+and eliminate the need for the RedHat PARANOIDSAFER patch.
+(doc/Language.htm [1.34.2.1], doc/Use.htm [1.33.2.1]: 2002/01/25 06:33:08
+rayjj)
+
+Removes the admonishment to update PVERSION and JVERSION from the Makefile
+documentation. The build dependencies were removed earlier to reduce user
+confusion; they're currently vestigial in expectation of future build
+requirements. This is the second half of the fix for sf bug #457838.
+(doc/Make.htm [1.36.2.1]: 2001/10/24 22:29:29 giles)
+
+Adds a link to the v7.xx history files. (doc/News.htm [1.90.2.2]: 2001/10/24
+22:32:18 giles)
+
+Adds basic autoconf support to the build system. (doc/Make.htm [1.36.2.2],
+doc/Release.htm [1.40.2.1]: 2002/01/24 01:30:56 giles)
+
+Adds a new documentation section on display devices along with a basic
+description of the x11 devices. (doc/Devices.htm [1.34.2.1]: 2002/01/30
+07:36:09 giles)
+
+Minor change from 'search' to 'filenameforall' in discussion about the
+wildcard characters in PermitFile... strings. (doc/Language.htm [1.34.2.2]:
+2002/01/31 17:36:56 rayjj)
+
+Version number upgrade and minor documentation patch in preparation for 7.04
+release. (doc/API.htm [1.11.2.1], doc/Bug-form.htm [1.23.2.1],
+doc/Bug-info.htm [1.20.2.1], doc/C-style.htm [1.21.2.1],
+doc/Changes.htm [1.28.2.2], doc/Commprod.htm [1.15.2.1],
+doc/Copying.htm [1.13.2.1], doc/Current.htm [1.13.2.1],
+doc/DLL.htm [1.15.2.1], doc/Develop.htm [1.47.2.1],
+doc/Devices.htm [1.34.2.2], doc/Drivers.htm [1.21.2.1],
+doc/Fonts.htm [1.22.2.1], doc/Helpers.htm [1.17.2.1],
+doc/History1.htm [1.13.2.1], doc/History2.htm [1.13.2.1],
+doc/History3.htm [1.13.2.1], doc/History4.htm [1.13.2.1],
+doc/History5.htm [1.15.2.1], doc/History6.htm [1.30.2.1],
+doc/History7.htm [1.5.2.2], doc/Htmstyle.htm [1.18.2.1],
+doc/Install.htm [1.26.2.1], doc/Issues.htm [1.15.2.1],
+doc/Language.htm [1.34.2.3], doc/Lib.htm [1.14.2.1],
+doc/Maintain.htm [1.23.2.1], doc/Make.htm [1.36.2.3],
+doc/New-user.htm [1.30.2.1], doc/News.htm [1.90.2.3], doc/PUBLIC [1.5.2.1],
+doc/Projects.htm [1.33.2.1], doc/Ps-style.htm [1.13.2.1],
+doc/Ps2epsi.htm [1.15.2.1], doc/Ps2pdf.htm [1.32.2.1],
+doc/Psfiles.htm [1.22.2.1], doc/README [1.12.2.1],
+doc/Readme.htm [1.31.2.1], doc/Release.htm [1.40.2.2],
+doc/Source.htm [1.13.2.1], doc/Tester.htm [1.14.2.1],
+doc/Unix-lpr.htm [1.13.2.1], doc/Use.htm [1.33.2.2],
+doc/Xfonts.htm [1.13.2.1], doc/gs-vms.hlp [1.12.2.1],
+man/dvipdf.1 [1.10.2.1], man/font2c.1 [1.10.2.1], man/gs.1 [1.10.2.1],
+man/gslp.1 [1.10.2.1], man/gsnd.1 [1.10.2.1], man/pdf2dsc.1 [1.10.2.1],
+man/pdf2ps.1 [1.12.2.1], man/pdfopt.1 [1.10.2.1], man/pf2afm.1 [1.10.2.1],
+man/pfbtopfa.1 [1.11.2.1], man/printafm.1 [1.10.2.1],
+man/ps2ascii.1 [1.10.2.1], man/ps2epsi.1 [1.10.2.1],
+man/ps2pdf.1 [1.14.2.1], man/ps2pdfwr.1 [1.13.2.1], man/ps2ps.1 [1.17.2.1],
+man/wftopfa.1 [1.10.2.1]: 2002/02/01 03:25:43 raph)
+
+Adds IJS driver to Ghostscript. Includes complete IJS version 0.33
+distribution. Also includes autoconf patch by Ralph Giles.
+(doc/Develop.htm [1.47.2.2], doc/Devices.htm [1.34.2.3]: 2002/02/01 03:30:14
+raph)
+
+</pre><h2><a name="7.04-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - the icclib makefile comments were out of date; the build rule
+referred to gs_stdio_h, which no longer exists; the build rule for gsicc.o
+referred to icc_h, which was not defined at that point. patch originally by
+lpd, propagated from the development branch. (gs.mak [1.5.2.1],
+icclib.mak [1.3.2.1], lib.mak [1.53.2.1]: 2001/10/26 00:15:30 giles)
+ - Fix for #474544. Corrects inability to convert valid DeviceN tint
+transform functions into type 4 functions. Valid operator names were not
+being recognized unless the tint transform function had been bound. One of
+two fixes required for this problem. Customer #710. (int.mak [1.50.2.1]:
+2002/01/17 02:59:35 dancoby)
+ - Fix for #474544. This is the second of two fixes required for this
+problem. This fix creates a type 0 function which implements a "color cube"
+for those tint transform functions which cannot be converted into a type 4
+function. Customer #710. Note: There is one more revision planned for this
+effort. This revision will make the buildcolorcube operator into a more
+general buildsampledfunction. This will allow its use in other situations.
+(int.mak [1.50.2.2]: 2002/01/17 06:57:55 dancoby)
+
+Version number upgrade and minor documentation patch in preparation for 7.04
+release. (all-arch.mak [1.9.2.1], bcwin32.mak [1.12.2.1],
+dvx-gcc.mak [1.12.2.1], libpng.mak [1.10.2.1], macos-mcp.mak [1.3.2.1],
+msvc32.mak [1.20.2.1], msvclib.mak [1.16.2.1], openvms.mak [1.16.2.1],
+os2.mak [1.19.2.1], ugcclib.mak [1.13.2.1], unix-gcc.mak [1.23.2.1],
+unixansi.mak [1.16.2.1], version.mak [1.36.2.1], watc.mak [1.16.2.1],
+watclib.mak [1.13.2.1], watcw32.mak [1.13.2.1]: 2002/02/01 03:25:45 raph)
+
+Adds IJS driver to Ghostscript. Includes complete IJS version 0.33
+distribution. Also includes autoconf patch by Ralph Giles.
+(bcwin32.mak [1.12.2.2], devs.mak [1.47.2.1], dvx-gcc.mak [1.12.2.2],
+gs.mak [1.5.2.2], ijs.mak [1.2.2.1], macos-mcp.mak [1.3.2.2],
+msvc32.mak [1.20.2.2], openvms.mak [1.16.2.2], os2.mak [1.19.2.2],
+ugcclib.mak [1.13.2.2], unix-gcc.mak [1.23.2.2], unixansi.mak [1.16.2.2],
+watclib.mak [1.13.2.2], watcw32.mak [1.13.2.2], wctail.mak [1.3.2.1],
+winlib.mak [1.12.2.1]: 2002/02/01 03:30:13 raph)
+
+</pre><h2><a name="7.04-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Incorporate patch from Tim Waugh of RedHat to allow ps2pdfwr to
+correctly process files with spaces in their names. Peter's earlier fix
+missed a few enclosing "'s for output files. Fixes Sourceforge bug #505338.
+(lib/ps2pdfwr [1.6.2.1]: 2002/01/22 21:34:04 jackiem)
+ - Improve security in a (mostly) backward compatible fashion adding
+more flexible file access paths (PermitFile...) as user paramters and adding
+the facility to return to NOSAFER mode after running jobs (files/procedures)
+in SAFER mode. Also adds a -dPARANOIDSAFER command line option that only
+allows reading files from %stdin, paths specified on LIBPATH, FONTPATH and
+/GenericResourceDir or /FontResourceDir. Improve security for device related
+access to the file system and to pipes by allowing the dangerous parameters
+to be locked (for example, OutputFile). The locking is performed after
+command line parameters are established. This should address SF bug #474582
+and eliminate the need for the RedHat PARANOIDSAFER patch.
+(gp_macio.c [1.2.4.1], gp_ntfs.c [1.5.2.1], gp_os2.c [1.10.2.1],
+gp_vms.c [1.7.2.1]: 2002/01/25 06:33:09 rayjj)
+
+Replaces references of 'FontManagerLib' with 'FontManager' to match the
+Universal Headers stub shipped with Metrowerks CW 6.3.
+(macgenmcpxml.sh [1.1.4.1]: 2001/11/02 02:31:21 giles)
+
+Disables the 'unused arguments' warning with the Metrowerks Codewarrior 6.3
+Compiler. We have many of these by design and it's responsible for a large
+number of warnings on that platform. (macgenmcpxml.sh [1.1.4.2]: 2001/11/02
+02:33:21 giles)
+
+</pre><h2><a name="7.04-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - Improve security in a (mostly) backward compatible fashion adding
+more flexible file access paths (PermitFile...) as user paramters and adding
+the facility to return to NOSAFER mode after running jobs (files/procedures)
+in SAFER mode. Also adds a -dPARANOIDSAFER command line option that only
+allows reading files from %stdin, paths specified on LIBPATH, FONTPATH and
+/GenericResourceDir or /FontResourceDir. Improve security for device related
+access to the file system and to pipes by allowing the dangerous parameters
+to be locked (for example, OutputFile). The locking is performed after
+command line parameters are established. This should address SF bug #474582
+and eliminate the need for the RedHat PARANOIDSAFER patch.
+(gdevcgm.c [1.2.6.1], gdevmac.c [1.1.4.1]: 2002/01/25 06:33:09 rayjj)
+ - Removes broken x11alpha driver, and installs an alias for x11
+under that name, with default parameters changed to support antialiasing.
+Fixes SourceForge bug #505692. (gdevx.c [1.8.2.1], gdevxalt.c [1.2.6.1]:
+2002/01/30 20:09:26 raph)
+
+Don't allocate memory or call callbacks when display device does not have a
+callback function. (gdevdsp.c [1.5.2.1]: 2001/12/18 07:09:17 ghostgum)
+
+Adds IJS driver to Ghostscript. Includes complete IJS version 0.33
+distribution. Also includes autoconf patch by Ralph Giles.
+(gdevijs.c [1.1.2.1]: 2002/02/01 03:30:13 raph)
+
+</pre><h2><a name="7.04-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - T* applied the leading horizontally when using a font in vertical
+writing mode, but the PDF Reference says the leading is always applied
+vertically. (lib/pdf_ops.ps [1.17.2.1]: 2001/12/22 07:34:23 masata-y)
+
+</pre><h2><a name="7.04-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Some gsapi functions were not passing the user_errors argument to
+the corresponding gs_main_run_string_* functions, and instead, these
+functions were passing 0. (iapi.c [1.1.2.1]: 2002/01/03 20:20:38 jackiem)
+ - ifont.h requires gsmatix.h and gxfont.h for clean compilation. Not
+having them was a warning on gcc, but an error on Borland CBuilder 5.5.
+Thanks to Rod Webster for the fix. Closes Sourceforge bug #474246.
+(iccfont.c [1.2.6.1]: 2002/01/09 21:52:04 giles)
+ - ReleaseDC was missed in Windows client applications. SourceForge
+bug #499903. (dwmain.c [1.6.2.1], dwmainc.c [1.8.2.1]: 2002/01/16 21:07:16
+igorm)
+ - Fix for #474544. Corrects inability to convert valid DeviceN tint
+transform functions into type 4 functions. Valid operator names were not
+being recognized unless the tint transform function had been bound. One of
+two fixes required for this problem. Customer #710. (ifunc.h [1.3.6.1],
+zfunc.c [1.6.6.1], zfunc0.c [1.3.6.1], zfunc3.c [1.2.6.1],
+zfunc4.c [1.7.4.1], zshade.c [1.4.6.1]: 2002/01/17 02:59:35 dancoby)
+ - Fix for #474544. This is the second of two fixes required for this
+problem. This fix creates a type 0 function which implements a "color cube"
+for those tint transform functions which cannot be converted into a type 4
+function. Customer #710. Note: There is one more revision planned for this
+effort. This revision will make the buildcolorcube operator into a more
+general buildsampledfunction. This will allow its use in other situations.
+(ifunc.h [1.3.6.2], lib/gs_lev2.ps [1.7.2.1], zccube.c [1.1.2.1],
+zcsdevn.c [1.5.2.1], zfunc.c [1.6.6.2]: 2002/01/17 06:57:55 dancoby)
+ - Improve security in a (mostly) backward compatible fashion adding
+more flexible file access paths (PermitFile...) as user paramters and adding
+the facility to return to NOSAFER mode after running jobs (files/procedures)
+in SAFER mode. Also adds a -dPARANOIDSAFER command line option that only
+allows reading files from %stdin, paths specified on LIBPATH, FONTPATH and
+/GenericResourceDir or /FontResourceDir. Improve security for device related
+access to the file system and to pipes by allowing the dangerous parameters
+to be locked (for example, OutputFile). The locking is performed after
+command line parameters are established. This should address SF bug #474582
+and eliminate the need for the RedHat PARANOIDSAFER patch.
+(icontext.c [1.6.6.1], icstate.h [1.4.6.1], imainarg.c [1.13.2.1],
+iutil2.c [1.2.6.1], iutil2.h [1.2.6.1], lib/gs_fonts.ps [1.13.2.1],
+lib/gs_init.ps [1.40.2.2], lib/gs_lev2.ps [1.7.2.2],
+lib/gs_setpd.ps [1.8.2.1], zcontrol.c [1.3.6.1], zdevice.c [1.3.6.1],
+zdevice2.c [1.4.2.1], zfile.c [1.11.2.1], zusparam.c [1.3.6.1],
+zvmem.c [1.3.2.1]: 2002/01/25 06:33:09 rayjj)
+ - .locksafe is not supposed to change the PermitFileWriting and
+PermitFileControl paths (was setting them to empty arrays).
+(lib/gs_init.ps [1.40.2.3]: 2002/01/31 17:39:07 rayjj)
+
+Change the unstopped error handler to print the operand stack in the same
+order as the normal error handler, with the top of the stack at the right.
+Fixes Sourceforge bug #496440. (lib/gs_init.ps [1.40.2.1]: 2002/01/10
+02:41:01 ghostgum)
+
+Version number upgrade and minor documentation patch in preparation for 7.04
+release. (lib/gs_init.ps [1.40.2.4]: 2002/02/01 03:25:45 raph)
+
+</pre><h2><a name="7.04-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Change show_enum pointer enumeration to properly enumerate
+underlying gs_text_enum structure. (gxchar.c [1.5.2.1]: 2001/10/26 16:35:25
+raph)
+ - Image Type 4 images processed with the Interpolate turned on (as
+from -dDOINTERPOLATE) left an uninitialized variable that could cause
+extensive slowdown. Fix for SourceForge bug #491308 for Artifex customer
+671. (gxiscale.c [1.2.6.1]: 2001/12/14 19:16:04 rayjj)
+ - Improve security in a (mostly) backward compatible fashion adding
+more flexible file access paths (PermitFile...) as user paramters and adding
+the facility to return to NOSAFER mode after running jobs (files/procedures)
+in SAFER mode. Also adds a -dPARANOIDSAFER command line option that only
+allows reading files from %stdin, paths specified on LIBPATH, FONTPATH and
+/GenericResourceDir or /FontResourceDir. Improve security for device related
+access to the file system and to pipes by allowing the dangerous parameters
+to be locked (for example, OutputFile). The locking is performed after
+command line parameters are established. This should address SF bug #474582
+and eliminate the need for the RedHat PARANOIDSAFER patch.
+(gdevprn.c [1.5.6.1], gdevvec.c [1.12.2.1], gp.h [1.8.2.1],
+gp_dosfe.c [1.2.6.1], gp_dosfs.c [1.2.6.1], gp_unifn.c [1.2.6.1],
+gsdparam.c [1.4.6.1], gsutil.c [1.4.6.1], gsutil.h [1.3.6.1],
+gxdevcli.h [1.5.2.1], gxdevice.h [1.4.6.1]: 2002/01/25 06:33:09 rayjj)
+
+</pre><h2><a name="7.04-Other"></a>Other</h2><pre>
+
+Adds basic autoconf support to the build system. (.cvsignore [1.2.2.1],
+Makefile.in [1.1.4.1], autogen.sh [1.3.4.1], configure.ac [1.4.4.1]:
+2002/01/24 01:30:56 giles)
+
+Adds IJS driver to Ghostscript. Includes complete IJS version 0.33
+distribution. Also includes autoconf patch by Ralph Giles.
+(Makefile.in [1.1.4.2], configure.ac [1.4.4.2]: 2002/02/01 03:30:13 raph)
+
+<hr>
+
+<h1><a name="Version7.03"></a>Version 7.03 (2001-10-20)</h1>
+
+<p>
+This is a fully tested, stable release of Ghostscript. It fixes quite a
+few issues with 7.02.
+
+<p> Major changes include:
+
+<ul>
+<li>Integration of icclib 2.0.
+
+<li>There was at least one embarassing pdfwrite bug, now fixed.
+
+<li>Significant shading speedups, especially for worst-case files
+such as Coons01.ps.
+
+<li>The stdio logic is a lot more robust. 7.02 had some problems,
+especially with trying to set stdin to non-blocking.
+
+<li>The usual bug fixes. In particular, regression testing against
+7.00 shows only one serious regression (035-01.ps), and numerous
+progressions.
+
+</ul>
+
+<p>
+The following SourceForge bug numbers are currently open: 215256,
+219798, 222727, 226477, 405342, 406689, 406979, 407342, 414947,
+414985, 415016, 415142, 415170, 416131, 416830, 418241, 421057,
+422532, 423838, 427193, 427314, 427347, 428891, 428973, 432040,
+432657, 434277, 434707, 436099, 436897, 437285, 438679, 438957,
+443745, 444791, 446344, 446672, 448199, 450663, 451456, 452155,
+453969, 457838, 458261, 458500, 458769, 458775, 458780, 462221,
+465720, 465921, 465936, 468386, 468762, 469518, 472681, 473305.
+
+<h3><a name="7.03_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version.
+
+<pre>
+
+
+
+<h2><a name="7.03-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Add new Windows and Unix platform files to developer
+documentation. (doc/Develop.htm [1.46]: 2001/09/23 08:54:03 ghostgum)
+ - Adds a -dNOCCFONTS switch to disable use of compiled-in fonts.
+(doc/Use.htm [1.32]: 2001/10/01 05:25:55 lpd)
+ - Added potential workaround for DCTEncode filter problem where the
+image has less rows than requested. (doc/Issues.htm [1.13]: 2001/10/03
+17:24:23 jackiem)
+ - Fixes reference counting for PDF 1.4 device filter stack.
+Temporary patch to not free PDF 1.4 marking device for images (it was being
+freed prematurely). (doc/Issues.htm [1.14]: 2001/10/17 17:28:10 raph)
+ - Syncs with hpijs version 0.97, and fixes a documentation bug.
+(doc/Devices.htm [1.33]: 2001/10/19 04:20:08 raph)
+ - Documentation and version number change in preparation for 7.03
+release. (doc/API.htm [1.11], doc/Bug-form.htm [1.23],
+doc/Bug-info.htm [1.20], doc/C-style.htm [1.21], doc/Commprod.htm [1.15],
+doc/Copying.htm [1.13], doc/Current.htm [1.13], doc/DLL.htm [1.15],
+doc/Develop.htm [1.47], doc/Devices.htm [1.34], doc/Drivers.htm [1.21],
+doc/Fonts.htm [1.22], doc/Helpers.htm [1.17], doc/History1.htm [1.13],
+doc/History2.htm [1.13], doc/History3.htm [1.13], doc/History4.htm [1.13],
+doc/History5.htm [1.15], doc/History6.htm [1.30], doc/History7.htm [1.4],
+doc/Htmstyle.htm [1.18], doc/Install.htm [1.26], doc/Issues.htm [1.15],
+doc/Language.htm [1.34], doc/Lib.htm [1.14], doc/Maintain.htm [1.23],
+doc/Make.htm [1.36], doc/New-user.htm [1.30], doc/News.htm [1.89],
+doc/Projects.htm [1.33], doc/Ps-style.htm [1.13], doc/Ps2epsi.htm [1.15],
+doc/Ps2pdf.htm [1.32], doc/Psfiles.htm [1.22], doc/README [1.12],
+doc/Readme.htm [1.31], doc/Release.htm [1.40], doc/Source.htm [1.13],
+doc/Tester.htm [1.14], doc/Unix-lpr.htm [1.13], doc/Use.htm [1.33],
+doc/Xfonts.htm [1.13], doc/gs-vms.hlp [1.12], man/dvipdf.1 [1.10],
+man/font2c.1 [1.10], man/gs.1 [1.10], man/gslp.1 [1.10], man/gsnd.1 [1.10],
+man/pdf2dsc.1 [1.10], man/pdf2ps.1 [1.12], man/pdfopt.1 [1.10],
+man/pf2afm.1 [1.10], man/pfbtopfa.1 [1.11], man/printafm.1 [1.10],
+man/ps2ascii.1 [1.10], man/ps2epsi.1 [1.10], man/ps2pdf.1 [1.14],
+man/ps2pdfwr.1 [1.13], man/ps2ps.1 [1.17], man/wftopfa.1 [1.10]: 2001/10/20
+08:44:30 raph)
+
+</pre><h2><a name="7.03-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - cvs2hist no longer worked in Python 2.1 and later: the regex and
+regsub modules were superseded by re, and append() no longer accepted
+multiple arguments to create a tuple. The fixes are backward compatible for
+all versions of Python from 1.5 on. (toolbin/cvs2hist.py [1.7]: 2001/09/23
+04:45:10 lpd)
+ - The previous update to make cvs2hist use Python's re module rather
+than the obsolete regex and regsub modules didn't change the code to use
+match objects when necessary. Finishes fixing SourceForge #462777.
+(toolbin/cvs2hist.py [1.8]: 2001/09/23 20:43:16 lpd)
+ - Some print statements for debugging were accidentally left in the
+code. (toolbin/cvs2hist.py [1.9]: 2001/09/23 21:05:12 lpd)
+ - Committing in . Modified Files: gs/src/gp_stdia.c
+gs/src/openvms.mmk gs/src/ziodevs.c patches for OpenVMS (openvms.mmk [1.10]:
+2001/09/24 10:47:06 joukj)
+ - Fixes for stdin as a result of using callouts. Use unbuffered
+read, not non-blocking read. Change gp_stdin_read to use file pointer not
+handle. Remove gp_stdin_init since we don't need to set non-blocking. Change
+gp_stdin.c to use fread/fwrite to be more portable. Flush redirected stdout
+correctly. Added casts to fix compiler warnings in dxmain.c. Corrected
+header dependencies. Fixes SourceForge bug #467787. (dvx-tail.mak [1.5],
+macos-mcp.mak [1.3], openvms.mak [1.16], openvms.mmk [1.11], os2.mak [1.19],
+unix-aux.mak [1.5], watc.mak [1.16], winlib.mak [1.12]: 2001/10/12 21:37:08
+ghostgum)
+ - Committing in . Modified Files: gs/src/openvms.mmk OpenVMS needs
+target : sources ^ this space is realy needed. Otherwise MMS/MMK chokes on
+it!!!! (openvms.mmk [1.12]: 2001/10/15 10:24:21 joukj)
+ - When building gsx and gsc, use the GS makefile macro as the shared
+library name to link against, not a hard coded gs. (unix-dll.mak [1.6]:
+2001/10/17 10:11:23 ghostgum)
+ - Removes cheq.ps from list of example files installed.
+(unixinst.mak [1.20]: 2001/10/17 19:48:36 raph)
+ - uses concrete color space of alternate color space, rather than
+simply alternate color space, to determine target color space for
+concretizing /All colors. Fixes regression of non-sepqxd2distiller.pdf, for
+which those color spaces differed. (gscsepr.c [1.13]: 2001/10/21 06:02:21
+ raph)
+ - Updates icclib to version 2.0, and integrates icclib changes. In
+particular, icclib now accesses Ghostscript streams through the clean
+icmFile object interface, rather than previous hack. Removes remnants of
+previous hack, including gs_stdio.h header file and sread() and swrite()
+functions in stream.c. (lib.mak [1.53]: 2001/10/19 21:52:50 raph)
+ - Documentation and version number change in preparation for 7.03
+release. (version.mak [1.36]: 2001/10/20 08:44:31 raph)
+ - Updates default MSVC_VERSION to 6. (msvc32.mak [1.20]: 2001/10/20
+08:45:39 raph)
+
+</pre><h2><a name="7.03-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Committing in . Modified Files: gs/src/gp_stdia.c
+gs/src/openvms.mmk gs/src/ziodevs.c patches for OpenVMS (gp_stdia.c [1.2],
+ziodevs.c [1.4]: 2001/09/24 10:47:06 joukj)
+ - add missing file descriptor variable to stdin function of
+dxmainc.c. Fixes SourceForge bug #465214. (dxmainc.c [1.3]: 2001/09/28
+22:04:03 ghostgum)
+ - If gtk+ GUI can't be initialised, disable display device. This
+allows gsx to be used without an X display. Partial fix for SourceForge bug
+#450933. (dxmain.c [1.5]: 2001/10/12 11:10:37 ghostgum)
+ - Fixes for stdin as a result of using callouts. Use unbuffered
+read, not non-blocking read. Change gp_stdin_read to use file pointer not
+handle. Remove gp_stdin_init since we don't need to set non-blocking. Change
+gp_stdin.c to use fread/fwrite to be more portable. Flush redirected stdout
+correctly. Added casts to fix compiler warnings in dxmain.c. Corrected
+header dependencies. Fixes SourceForge bug #467787. (dxmain.c [1.6],
+dxmainc.c [1.4], gp_stdia.c [1.3], gp_stdin.c [1.2]: 2001/10/12 21:37:08
+ghostgum)
+ - Proposed log message: Fix: Callout implementation of %stdin,
+%stdout and %stderr now correctly allocates the streams in system memory.
+This avoids a crash during garbage collection seen during frequent
+open/close of stderr.. Fixes SourceForge bugs #427316, #442477.
+(ziodevsc.c [1.3]: 2001/10/15 21:44:42 ghostgum)
+ - When using STDIO_IMPLEMENTATION=, call gp_stdin_read with a file
+pointer, not a file handle. (ziodevs.c [1.5]: 2001/10/17 21:12:44 ghostgum)
+ - Use unbuffered read within gtk+ handler instead of using
+non-blocking read. While waiting for stdin, allow gtk main loop to block to
+avoid wasting CPU. (dxmain.c [1.7]: 2001/10/20 08:22:05 ghostgum)
+
+</pre><h2><a name="7.03-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - If "distiller" image compression options were changed in the
+middle of a file, the parameter list holding them might not be set back to
+read mode when using them to compress an image, causing an error. Fixes
+SourceForge #464938. (gdevpsdi.c [1.15]: 2001/09/25 22:00:44 lpd)
+ - bmp16 and png16 devices now create 4 bit/pixel bitmaps instead of
+8. bmp256 and png256 devices now use dci values which match the color
+mapping functions. (gdevbmp.c [1.4], gdevpng.c [1.4]: 2001/09/28 22:06:21
+ghostgum)
+ - Don't omit zero length deltas when stroking so that linecap will
+be produced by resulting PS or EPS file. SourceForge bug #466162.
+(gdevps.c [1.19]: 2001/09/28 23:18:46 rayjj)
+ - Fixes for stdin as a result of using callouts. Use unbuffered
+read, not non-blocking read. Change gp_stdin_read to use file pointer not
+handle. Remove gp_stdin_init since we don't need to set non-blocking. Change
+gp_stdin.c to use fread/fwrite to be more portable. Flush redirected stdout
+correctly. Added casts to fix compiler warnings in dxmain.c. Corrected
+header dependencies. Fixes SourceForge bug #467787. (gdevsppr.c [1.5]:
+2001/10/12 21:37:08 ghostgum)
+ - When the display device fails to allocate memory for the bitmap,
+set the memory device width and height to zero to prevent drawing on it.
+Always call the display_size callback to prevent a lockup in the caller, and
+if there is no memory tell the caller that the width and height are zero.
+Add some casts to remove compiler warnings. Fixes SourceForge bug #430879.
+(gdevdsp.c [1.5]: 2001/10/12 21:41:25 ghostgum)
+ - Syncs with hpijs version 0.97, and fixes a documentation bug.
+(gdevhpij.c [1.3]: 2001/10/19 04:20:07 raph)
+
+</pre><h2><a name="7.03-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - pdfwrite didn't set the orig_matrix of standard fonts, sometimes
+causing re-encoded characters to be written with a width of 0. Bug
+introduced by fix for #439474, gdevpdff.c [1.19]. Fixes SourceForge #463400.
+(gdevpdff.c [1.22]: 2001/10/05 05:40:41 lpd)
+ - pdfwrite allowed AutoRotatePages to override DSC comments rather
+than vice versa, and it interpreted "Portrait" in a DSC orientation comment
+as "don't rotate" rather than as "rotate if necessary so that width &lt;
+height." Fixes SourceForge #467259, although the result is not what the
+submitter wanted. (gdevpdf.c [1.38], gdevpdfp.c [1.19], gdevpdfx.h [1.34]:
+2001/10/07 05:33:11 lpd)
+
+</pre><h2><a name="7.03-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - Pop the /None key in the SMask processing of the 'gs' in a PDF 1.4
+document. Fixes SourceForge bug #459647 for Artifex customer Accusoft.
+(lib/pdf_draw.ps [1.35]: 2001/10/05 18:25:16 rayjj)
+ - Enhances -dDEBUG for encrypted PDF files to print strings after
+decryption. (lib/pdf_sec.ps [1.5]: 2001/10/09 20:17:23 lpd)
+ - If LastPage was greater than the number of pages in the document,
+a rangecheck was generated. Instead, limit LastPage (silently) to the number
+of pages in the document. If FirstPage is past end of document, issue a
+warning. Also, if no pages are processed due to FirstPage &gt; LastPage,
+give a clear error message. SourceForge bug #470025.
+(lib/pdf_main.ps [1.35]: 2001/10/12 07:07:54 rayjj)
+ - Changing the hack in PDF font processing, which chooses character
+width with encodings where the same character appears more than once. New
+code takes width for character code which appears in Differences. Source
+Forge bugs #444366, #468389. (lib/pdf_font.ps [1.22]: 2001/10/14 01:28:05
+igorm)
+ - Fix for #471414. Thanks to Leon Bottou for his excellent analysis
+and fix for this problem. Ghostscript was incorrectly handling a PDF shading
+dictionary in which the /Function entry contained an array of function
+dictionary references. An additonal oforce was required in the array
+processing loop. (lib/pdf_draw.ps [1.36]: 2001/10/16 22:20:31 dancoby)
+ - Applied two patches reported in
+http://www.ghostscript.com/pipermail/gs-code-review/2001-October/001255.html
+by Hideyuki Suzuki / hideyuki at sat dot t dot u-tokyo dot ac dot jp.
+pdf_font.ps: automatic substitution &amp; transformation of CID-keyed fonts.
+pdf_ops.ps: make spacings vertical when WMode is 1. (lib/pdf_font.ps [1.23],
+lib/pdf_ops.ps [1.17]: 2001/10/19 16:42:47 masata-y)
+
+</pre><h2><a name="7.03-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Adds a -dNOCCFONTS switch to disable use of compiled-in fonts.
+(lib/gs_ccfnt.ps [1.5], lib/gs_init.ps [1.39]: 2001/10/01 05:25:55 lpd)
+ - After removing a compiled font with undefinefont, loading the font
+or asking for its resourcestatus left extra information on the stack. Fixes
+SourceForge #458818. (lib/gs_res.ps [1.16]: 2001/10/01 05:56:58 lpd)
+ - Clean up PostScript files in examples directory to prevent
+spurious bug reports caused when running more than a sigle file or running
+chess.ps without cheq.ps in the current directory. Thanks to Russell Lang
+for cleanup on DSC comment and structure. (examples/alphabet.ps [1.2],
+examples/chess.ps [1.2], examples/colorcir.ps [1.2],
+examples/doretree.ps [1.2], examples/escher.ps [1.2],
+examples/golfer.ps [1.2], examples/grayalph.ps [1.2],
+examples/snowflak.ps [1.2], examples/tiger.ps [1.2],
+examples/vasarely.ps [1.2], examples/waterfal.ps [1.3]: 2001/10/01 21:28:25
+rayjj)
+ - Remove this file which was referenced from chess.ps -- now it is
+included in chess.ps to prevent errors when cheq.ps could not be located.
+(examples/cheq.ps [1.2]: 2001/10/01 21:33:05 rayjj)
+ - When using a substitute for an unknown font, add an alias in
+FontDirectory under the original requested font name.
+(lib/gs_fonts.ps [1.12]: 2001/10/01 21:35:53 rayjj)
+ - Undo previous 1.12 update. The PS file that exhibited the problem
+was bad as was my testing against Adobe PS behaviour. Substituted fonts are
+neither aliased, nor entered in the FontDirectory by Adobe PostScript. Fixes
+regression bug with Genoa PS LL3 FTS test 313-01.ps.
+(lib/gs_fonts.ps [1.13]: 2001/10/09 18:01:17 rayjj)
+ - Fixing inaccurate coding in Type 2 font processing : when
+GlobalSubrs absents, old code damages useful information in
+charstring_font_refs_s::GlobalSubrs, possibly causing indeterministic error.
+(zfont2.c [1.4]: 2001/10/11 17:55:32 igorm)
+ - Fix : Making GlobalSubrs to be shared for all descendent fonts
+within CFF CID font. 1/2 fix for Source Forge bug #468389 "rangecheck in
+type2execchar" (lib/gs_cff.ps [1.10]: 2001/10/12 08:52:14 igorm)
+ - Fixes for stdin as a result of using callouts. Use unbuffered
+read, not non-blocking read. Change gp_stdin_read to use file pointer not
+handle. Remove gp_stdin_init since we don't need to set non-blocking. Change
+gp_stdin.c to use fread/fwrite to be more portable. Flush redirected stdout
+correctly. Added casts to fix compiler warnings in dxmain.c. Corrected
+header dependencies. Fixes SourceForge bug #467787. (dpmain.c [1.5],
+dwmainc.c [1.8], idebug.c [1.4], igc.c [1.5], imain.c [1.19]: 2001/10/12
+21:37:08 ghostgum)
+ - Documentation and version number change in preparation for 7.03
+release. (lib/gs_init.ps [1.40]: 2001/10/20 08:44:31 raph)
+
+</pre><h2><a name="7.03-Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - Updates icclib to version 2.0, and integrates icclib changes. In
+particular, icclib now accesses Ghostscript streams through the clean
+icmFile object interface, rather than previous hack. Removes remnants of
+previous hack, including gs_stdio.h header file and sread() and swrite()
+functions in stream.c. (stream.c [1.15]: 2001/10/19 21:52:50 raph)
+
+</pre><h2><a name="7.03-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Fixes nontermination of triangle subdivision in shading, as
+triggered by FTS 446-01.ps. The criterion for whether a triangle spans more
+than one pixel was too conservative, as it took the fill adjust into
+account. (gxshade4.c [1.6]: 2001/10/01 21:16:47 raph)
+ - Correct inverted Decode cases of ImageType 4 color range masks for
+the Monochrome single bit per pixel case. Fixes SourceForge bug #462319 for
+Artifex customer #671. (gxifast.c [1.4]: 2001/10/06 03:27:57 rayjj)
+ - Fix : More error tolerance in type2 charstring interpreter. 2/2
+fix for Source Forge bug #468389 "rangecheck in type2execchar". Thanks to L.
+Peter Deutsch for participation and for the comment in code.
+(gstype2.c [1.10]: 2001/10/12 08:55:24 igorm)
+ - Fixes for stdin as a result of using callouts. Use unbuffered
+read, not non-blocking read. Change gp_stdin_read to use file pointer not
+handle. Remove gp_stdin_init since we don't need to set non-blocking. Change
+gp_stdin.c to use fread/fwrite to be more portable. Flush redirected stdout
+correctly. Added casts to fix compiler warnings in dxmain.c. Corrected
+header dependencies. Fixes SourceForge bug #467787. (gp.h [1.8],
+gxclutil.c [1.5], unistd_.h [1.4]: 2001/10/12 21:37:08 ghostgum)
+ - Fixes reference counting for PDF 1.4 device filter stack.
+Temporary patch to not free PDF 1.4 marking device for images (it was being
+freed prematurely). (gdevp14.c [1.4], gsdfilt.c [1.3]: 2001/10/17 17:28:10
+raph)
+ - Updates icclib to version 2.0, and integrates icclib changes. In
+particular, icclib now accesses Ghostscript streams through the clean
+icmFile object interface, rather than previous hack. Removes remnants of
+previous hack, including gs_stdio.h header file and sread() and swrite()
+functions in stream.c. (gsicc.c [1.5], gsicc.h [1.3]: 2001/10/19 21:52:50
+raph)
+ - Documentation and version number change in preparation for 7.03
+release. (gscdef.c [1.15]: 2001/10/20 08:44:31 raph)
+
+</pre><h2><a name="7.03-Other"></a>Other</h2><pre>
+
+Fixes problems:
+ - Updates icclib to version 2.0, and integrates icclib changes. In
+particular, icclib now accesses Ghostscript streams through the clean
+icmFile object interface, rather than previous hack. Removes remnants of
+previous hack, including gs_stdio.h header file and sread() and swrite()
+functions in stream.c. (gs_stdio.h [1.3], icclib/Licence.txt [1.1],
+icclib/NOTES [1.2], icclib/Readme.txt [1.1], icclib/icc.c [1.6],
+icclib/icc.h [1.4], icclib/icc9809.h [1.2]: 2001/10/19 21:52:50 raph)
+
+<hr>
+
+<h1><a name="Version7.02"></a>Version 7.02 (2001-09-22)</h1>
+
+<p>
+This is a prerelease of Ghostscript, in preparation for a forthcoming
+fully tested, supported 7.0x release. We are skipping the 7.01 release
+number because that number is now associated with CVS versions.
+
+<p> Major changes include:
+
+<ul>
+<li>Compile and portability fixes, including the dreaded time.h
+problem that affects up-to-date GNU/Linux builds.
+
+<li>Big improvements in stdio, including a new -sstdout= redirect
+switch. In addition, reading from stdin uses nonblocking I/O, so the
+ugly -_ workaround is no longer necessary.
+
+<li>Substantial pdfwrite improvements.
+
+<li>128-bit encrypted files are now supported.
+
+<li>The usual bug fixes.
+
+</ul>
+
+Release issues that will be fixed before next fully supported version:
+
+<ul>
+
+<li> Update icclib to 2.0.
+
+<li> Update hpijs and Omni glue to latest versions.
+
+<li> Make sure all source files are referenced in Develop.htm.
+
+</ul>
+
+<p>
+The following SourceForge bug numbers are currently open:
+215256, 219798, 222727, 224863, 226477, 405342, 406285, 406689,
+406979, 407342, 411753, 413669, 414947, 414985, 415016, 415142,
+415170, 415177, 415526, 416043, 416131, 416830, 418241, 418597,
+421057, 422532, 423838, 426274, 427193, 427314, 427316, 427347,
+428891, 428973, 430879, 431065, 432040, 432657, 433835, 434277,
+434707, 435154, 436099, 436897, 437285, 438679, 438957, 441566,
+442477, 443745, 444791, 446344, 446672, 446676, 446035, 447695,
+448199, 450271, 450663, 451456, 452155, 452173, 453861, 453969,
+457838, 458025, 458261, 458500, 458769, 458775, 458780, 458818,
+459645, 459647, 459764, 460292, 462139, 462212, 462221, 462319,
+462777, 463123, 463400.
+
+<h3><a name="7.02_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version.
+
+<pre>
+
+
+
+<h2><a name="7.02-Documentation"></a>Documentation</h2><pre>
+
+Fixes problems:
+ - Fixes a typo: gs_stable_memory should have been gs_memory_stable.
+(doc/Develop.htm [1.41]: 2001/06/17 04:06:05 lpd)
+ - The "Incompatible changes" sections for 6.62 and 6.61 were
+duplicates of the section for 6.60. (doc/History6.htm [1.28]: 2001/07/28
+23:02:56 lpd)
+
+Increments version number after 7.00 release. Also fixes gs_init.ps to
+consistently print minor revision number as two digits.
+(doc/News.htm [1.86]: 2001/04/17 07:40:12 raph)
+
+Documents the circumstances when no structure descriptor is needed.
+(doc/Develop.htm [1.39]: 2001/04/20 19:44:18 lpd)
+
+Adds documentation for the graphics library's implementation of clipping.
+(doc/Develop.htm [1.40]: 2001/04/20 20:17:28 lpd)
+
+Make copyright and license info at the end match other .htm files.
+(doc/Humor.htm [1.3]: 2001/04/21 17:14:33 rayjj)
+
+Added entry about confusing error messages. (doc/Issues.htm [1.10]:
+2001/04/27 23:41:28 alexcher)
+
+Clarifies the manpage for the ps2pdfwr wrapper script, mentioning the
+-dSAFER option and adding a sentence describing the role of this particular
+script. (man/ps2pdfwr.1 [1.10]: 2001/05/03 21:07:33 giles)
+
+Adds a 'see also' reference to ps2pdf from the pdf2pdfwr manpage.
+(man/ps2pdfwr.1 [1.11]: 2001/05/03 23:54:51 giles)
+
+Restructures the C style guide to explicitly distinguish language
+restrictions from purely stylistic issues. (Requested by Artifex engineer.)
+(doc/C-style.htm [1.18]: 2001/05/25 00:35:41 lpd)
+
+Updates hpijs driver to version 0.96. (doc/Devices.htm [1.30]: 2001/05/30
+23:25:25 raph)
+
+Minor documentation update for HPIJS driver (adds more supported devices).
+(doc/Devices.htm [1.31]: 2001/05/30 23:58:44 raph)
+
+updates the bug report for to reflect the public nature of the new bug lists
+and tracker. (doc/Bug-form.htm [1.21]: 2001/06/05 02:30:47 giles)
+
+corrects the spelling of Metrowerks CodeWarrior (doc/Bug-info.htm [1.18]:
+2001/06/05 02:31:58 giles)
+
+branches: 1.1.2; file COPYING was initially added on branch GS_6_5.
+(doc/COPYING [1.1]: 2001/06/05 07:07:35 raph)
+
+Changes release policy to preserve the original filenames of 3rd party
+tarballs. (doc/Release.htm [1.38]: 2001/06/06 18:46:23 giles)
+
+This revision allows the MSVC makefiles to work with spaces in the DEVSTUDIO
+path. Also if DEVSTUDIO is set to empty then the PATH, LIB, INCLUDE
+environment variables are used for building. The MSVC section of Make.htm
+was enlarged. (doc/Make.htm [1.32]: 2001/06/12 23:06:19 dancoby)
+
+Adds an explanation of why stable allocators are needed, rather than using
+the system VM allocator for all stable objects. (doc/Develop.htm [1.42]:
+2001/06/17 04:12:06 lpd)
+
+Adds extern_inline for including inline procedures in header files.
+(doc/C-style.htm [1.19]: 2001/06/17 05:09:07 lpd)
+
+Adds and documents an operator &lt;prefix|null&gt; &lt;access_string&gt;
+.tempfile &lt;filename&gt; &lt;file&gt; to create and open a temporary file,
+using gp_open_scratch_file. (doc/Language.htm [1.32]: 2001/07/15 13:54:17
+lpd)
+
+Adds pphs, a utility for printing the Primary Hint Stream of a linearized
+PDF file. (doc/Develop.htm [1.43], doc/Psfiles.htm [1.20]: 2001/07/15
+16:25:02 lpd)
+
+Adds documentation of the new macos build processes. (doc/Make.htm [1.33]:
+2001/07/18 20:17:11 giles)
+
+Makes explicit note of the requirement to update the 'incompatible changes'
+section of the documentation with relevant commits.
+(doc/Maintain.htm [1.19], doc/News.htm [1.87]: 2001/07/31 03:31:35 giles)
+
+Adds documentation for the 'Fix:' prefix handling in changelog generation.
+(doc/Maintain.htm [1.20]: 2001/07/31 08:06:48 giles)
+
+Removes a reference to mailing separate bug fix notices to artifex made
+obsolete by the commit announcement mailing list. (doc/Maintain.htm [1.21]:
+2001/07/31 20:27:42 giles)
+
+Documentation update : ps2ascii can't handle incremental fonts.
+(doc/Issues.htm [1.11]: 2001/08/06 10:24:01 igorm)
+
+Update to 1. add Active-X project suggested by a user. 2. Remove the DSC
+processing project (completed). 3. provide minor update to the pswrite
+project. 4. Update the ICC profile support project to reflect the partial
+support now completed (in 7.00). (doc/Projects.htm [1.31]: 2001/08/17
+19:42:49 rayjj)
+
+Adds documentation for the -sPDFPassword command line option for encrypted
+pdf files, introduced with the inclusion of pdf_sec.ps. (doc/Use.htm [1.29]:
+2001/09/05 22:47:27 giles)
+
+Notes that ps2pdf may cause a limitcheck on PostScript files with
+unreasonably large coordinates; suggests using -r as a workaround. Responds
+to SourceForge bug #461335. (doc/Ps2pdf.htm [1.30]: 2001/09/14 00:40:04 lpd)
+
+Update documentation to describe how to build and install ghostscript as a
+shared object on Unix. Fixes sourceforge bug #444593.
+(doc/Install.htm [1.24], doc/Make.htm [1.34]: 2001/09/15 08:04:42 ghostgum)
+
+Speed up reading stdin when using callouts. Add platform-specific functions
+for reading stdin, to allow non-blocking reading of stdin if supported.
+Fixes Sourceforge bug #416973. (doc/Develop.htm [1.44]: 2001/09/15 08:48:33
+ghostgum)
+
+Allow PostScript stdout to be redirected to stderr or a file. This is
+required to avoid driver stdout being mixed with PostScript stdout. Options
+are -sstdout=filename or -sstdout=%stderr. To reset redirection use
+-sstdout=- or -sstdout=%stdout. Fixes Sourceforge bug #222534.
+(doc/Use.htm [1.30]: 2001/09/22 07:33:35 ghostgum)
+
+Updates version and date in documentation in preparation for 7.02
+pre-release. (doc/API.htm [1.10], doc/Bug-form.htm [1.22],
+doc/Bug-info.htm [1.19], doc/C-style.htm [1.20], doc/Commprod.htm [1.14],
+doc/Copying.htm [1.12], doc/Current.htm [1.12], doc/DLL.htm [1.14],
+doc/Develop.htm [1.45], doc/Devices.htm [1.32], doc/Drivers.htm [1.20],
+doc/Fonts.htm [1.21], doc/Helpers.htm [1.16], doc/History1.htm [1.12],
+doc/History2.htm [1.12], doc/History3.htm [1.12], doc/History4.htm [1.12],
+doc/History5.htm [1.14], doc/History6.htm [1.29], doc/History7.htm [1.2],
+doc/Htmstyle.htm [1.17], doc/Install.htm [1.25], doc/Issues.htm [1.12],
+doc/Language.htm [1.33], doc/Lib.htm [1.13], doc/Maintain.htm [1.22],
+doc/Make.htm [1.35], doc/New-user.htm [1.29], doc/News.htm [1.88],
+doc/PUBLIC [1.5], doc/Projects.htm [1.32], doc/Ps-style.htm [1.12],
+doc/Ps2epsi.htm [1.14], doc/Ps2pdf.htm [1.31], doc/Psfiles.htm [1.21],
+doc/README [1.11], doc/Readme.htm [1.30], doc/Release.htm [1.39],
+doc/Source.htm [1.12], doc/Tester.htm [1.13], doc/Unix-lpr.htm [1.12],
+doc/Use.htm [1.31], doc/Xfonts.htm [1.12], doc/gs-vms.hlp [1.11],
+man/dvipdf.1 [1.9], man/font2c.1 [1.9], man/gs.1 [1.9], man/gslp.1 [1.9],
+man/gsnd.1 [1.9], man/pdf2dsc.1 [1.9], man/pdf2ps.1 [1.11],
+man/pdfopt.1 [1.9], man/pf2afm.1 [1.9], man/pfbtopfa.1 [1.10],
+man/printafm.1 [1.9], man/ps2ascii.1 [1.9], man/ps2epsi.1 [1.9],
+man/ps2pdf.1 [1.13], man/ps2pdfwr.1 [1.12], man/ps2ps.1 [1.16],
+man/wftopfa.1 [1.9]: 2001/09/22 16:26:21 raph)
+
+</pre><h2><a name="7.02-Procedures"></a>Procedures</h2><pre>
+
+Fixes problems:
+ - Removing the dependence of graphic library on PS interpreter.
+Source Forge bug #415003. (lib.mak [1.48]: 2001/04/20 09:38:39 igorm)
+ - Undoes makefile breakage introduced in previous version (for VMS).
+(icclib.mak [1.3], lib.mak [1.50]: 2001/04/24 18:36:55 raph)
+ - !ifndef COMPILED_INITS instead of !ifndef COMPILE_INITS Discovered
+fixing bug #414985 from anonymous user (msvclib.mak [1.13]: 2001/04/28
+00:53:46 alexcher)
+ - Optimization for shading fill. The general path filling algorithm
+subdivides fill region with trapezoid or rectangle subregions and then
+paints each subregion with given color. If the color is shading, each
+subregion to be subdivided into areas of constant color. But with radial
+shading each area is a high order polygon, being subdivided into smaller
+subregions, so as total number of subregions grows huge. Faster processing
+is done here by changing the order of subdivision cycles : we first
+subdivide the shading into areas of constant color, then apply the general
+path filling algorithm (i.e. subdivide each area into trapezoids or
+rectangles), using the filling path as clip mask. Source Forge bug #414022.
+(lib.mak [1.51]: 2001/05/10 18:36:40 igorm)
+ - Adobe PhotoShop 5+ duotone code assumes that setcolor operator
+calls tint transform function if source colors don't make a subset of device
+colors. Bug #224056, Customer #150 (int.mak [1.47]: 2001/06/07 14:48:24
+alexcher)
+ - index.html and gs.css weren't being copied to the installed
+documentation directory. (unixinst.mak [1.19]: 2001/07/25 21:10:39 giles)
+ - define previously undefined make variables. DISPLAY_DEV in
+unix-gcc.mak. gdevdsp_h and gdevdsp2_h in int.mak. Add missing iref.h
+dependency for idisp. Bug #415006. (devs.mak [1.46], int.mak [1.48],
+unix-gcc.mak [1.22]: 2001/08/01 08:58:49 ghostgum)
+ - Link GNU/Linux shared object as position independent code, instead of
+just compiling the modules as position independent. Adds prefix to shared
+object recursive make to allow install to a temporary location while
+building a distribution. (unix-dll.mak [1.3]: 2001/08/01 09:42:01 ghostgum)
+ - allow any value of JVERSION in the platform-specific makefiles to
+reduce user confusion over minor version naming. We continue to support only
+libjpeg v6*. Sourceforge bugs #457617 and #457838, September 2001.
+(jpeg.mak [1.4]: 2001/09/05 21:46:35 giles)
+ - Fix for MS-Windows graphics library. Remove references to
+interpreter from gp_check_interrupts function in library. Make gslib.c
+access gs_stdin not stdin. Correct the build paths for graphics devices. Add
+missing graphics devices. (msvc32.mak [1.18], msvclib.mak [1.16],
+winlib.mak [1.11]: 2001/09/22 07:07:02 ghostgum)
+ - Prevent memory corruption when reading %statementedit. Allocate
+lineedit buffer in correct memory space. Line being assembled is stored in a
+PostScript string during callouts, so prevent zfilelineedit from reading
+more than max_string_size bytes. Allocate extra space for trailing new-line
+for statementedit, rather than fiddling the string length which broke when
+sreadline reallocated the string. (int.mak [1.50]: 2001/09/22 07:26:45
+ghostgum)
+ - pdfwrite failed to recognize several of the standard screen spot
+functions: Ellipse, Round, and Diamond weren't implemented, and several of
+the others didn't match the PostScript implementation because of
+float/double discrepancies. Also, pdfwrite wrote out halftone screens using
+the adjusted ("actual") frequency and angle values rather than the requested
+values. Fixes SourceForge #446676. (devs.mak [1.47]: 2001/09/22 16:27:04
+lpd)
+
+Increments version number after 7.00 release. Also fixes gs_init.ps to
+consistently print minor revision number as two digits. (version.mak [1.34]:
+2001/04/17 07:40:12 raph)
+
+Committing in . Modified Files: gs/icclib/icc.c gs/src/gdevpdf.c
+gs/src/gp_vms.c gs/src/gsnogc.c gs/src/icclib.mak gs/src/openvms.mmk
+gs/src/x_.h Added Files: gs/src/vms_x_fix.h Patches for OpenVMS
+(icclib.mak [1.2], openvms.mmk [1.7]: 2001/04/20 09:56:22 joukj)
+
+Committing in . Modified Files: gs/src/lib.mak Patch for OpenVMS (little
+delayed since it was merged first with another commit) (lib.mak [1.49]:
+2001/04/20 10:39:44 joukj)
+
+Committing in . Modified Files: gs/src/gdevpdf.c gs/src/imainarg.c
+gs/src/openvms.mmk Merged in some patches by Rick Dyson, which affect
+compilation on VMS only. (openvms.mmk [1.8]: 2001/04/25 08:19:41 joukj)
+
+Committing in . Modified Files: gs/src/openvms.mak bringing openvms.mak in
+sync. with new features( Icclib etc.) and with new compile strategy with
+long variable names( as in openvms.mmk) Patch from Rick Dyson.
+(openvms.mak [1.12]: 2001/04/25 13:24:20 joukj)
+
+Changes gp_open_scratch_file() to use mkstemp() rather than mktemp() on gcc
+builds, which avoids warnings. Adds CAPOPT variable to unix-gcc.mak to
+select which function is used, so that builds will still succeed on systems
+that don't have mkstemp(). (unix-gcc.mak [1.20]: 2001/05/07 19:05:46
+jackiem)
+
+Committing in . Modified Files: gs/src/openvms.mmk Enabling mkstemp on VMS.
+(openvms.mmk [1.9]: 2001/05/08 12:28:38 joukj)
+
+This file is a new utility intended for debug. It is not yet ready for prime
+time, but is available for whoever wants to fix it. The main problems are:
+1. It doesn't work for files that use chained filters such as [
+/ASCII85Decode /FlateDecode ] 2. The PDF files that are written are
+sometimes broken. GS gets an xref problem. This second problem may actually
+due to lib/pdfwrite.ps since even when no conversion is done, the file is
+bad. (toolbin/pdfinflt.ps [1.1]: 2001/05/31 04:54:51 rayjj)
+
+branches: 1.1.2; file gnudevs.mak was initially added on branch GS_6_5.
+(gnudevs.mak [1.1]: 2001/06/05 07:07:37 raph)
+
+removes unnessary whitespace, which was breaking tmake.tcl. Part of
+sourceforge bug #415170, 2001 April 10. (libpng.mak [1.7]: 2001/06/07
+22:01:16 giles)
+
+This revision allows the MSVC makefiles to work with spaces in the DEVSTUDIO
+path. Also if DEVSTUDIO is set to empty then the PATH, LIB, INCLUDE
+environment variables are used for building. The MSVC section of Make.htm
+was enlarged. (msvc32.mak [1.16], msvccmd.mak [1.6], msvclib.mak [1.14],
+msvctail.mak [1.6]: 2001/06/12 23:06:19 dancoby)
+
+updates makefiles to use version 1.0.12 of the png library.
+(all-arch.mak [1.9], bcwin32.mak [1.11], dvx-gcc.mak [1.11],
+libpng.mak [1.8], msvc32.mak [1.17], msvclib.mak [1.15], openvms.mak [1.13],
+os2.mak [1.17], ugcclib.mak [1.13], unix-gcc.mak [1.21],
+unixansi.mak [1.15], unixtrad.mak [1.15], watc.mak [1.13],
+watclib.mak [1.13], watcw32.mak [1.12]: 2001/07/10 01:39:57 giles)
+
+drops support for libpng v0.89 and streamlines the library makefile.
+(libpng.mak [1.9]: 2001/07/10 02:07:08 giles)
+
+minor comment cleanup (libpng.mak [1.10]: 2001/07/10 03:14:33 giles)
+
+branches: 1.1.2; Adds the makefile and script for the new macos build method
+(macos-mcp.mak [1.1]: 2001/07/18 20:28:57 giles)
+
+To reduce redraw flicker, do not allow Windows to erase the background since
+we paint it ourselves. Paint areas outside the page with the window
+background colour or light grey. Save and restore window size using
+registry. Add "Paste" to system menu of text window. Make error message box
+a child of text window to avoid it appearing behind the text window. To
+allow user to read the error message, the text window is not automatically
+destroyed in the event of an error. The user must close text window using
+close button or system menu. If text window closed, return e_Fatal to poll
+function to provide a cleaner exit without a stack dump. (winint.mak [1.8]:
+2001/08/01 09:50:36 ghostgum)
+
+Uses lynx instead of netscape to generate text versions of important
+documentation files. (toolbin/pre [1.11]: 2001/08/18 02:50:09 giles)
+
+Adds a C implementation of the Arcfour encryption filter. This is a
+work-alike of the RC4 cipher used in PDF encryption. (int.mak [1.49],
+lib.mak [1.52]: 2001/09/02 06:16:41 giles)
+
+The Unix shared object loader 'gsx' depends on Gtk+ which causes it to fail
+in an environment where X11 and Gtk+ are not available. Add a console only
+loader 'gsc' which does not depend on X11 or Gtk+. This does not support the
+'display' device. Fixes sourceforge bug #450933. (unix-dll.mak [1.4]:
+2001/09/15 08:10:33 ghostgum)
+
+Speed up reading stdin when using callouts. Add platform-specific functions
+for reading stdin, to allow non-blocking reading of stdin if supported.
+Fixes Sourceforge bug #416973. (dvx-tail.mak [1.4], macos-mcp.mak [1.2],
+openvms.mak [1.14], os2.mak [1.18], unix-aux.mak [1.4], watc.mak [1.14],
+winlib.mak [1.10]: 2001/09/15 08:48:33 ghostgum)
+
+Change all interpreter builds to use callouts for stdio. Ghostscript library
+builds still use file based stdio. (bcwin32.mak [1.12], dvx-gcc.mak [1.12],
+gs.mak [1.5], openvms.mak [1.15], unix-gcc.mak [1.23], unixansi.mak [1.16],
+unixtrad.mak [1.16], watc.mak [1.15], watcw32.mak [1.13]: 2001/09/15
+08:55:32 ghostgum)
+
+Correct makefile dependency for gsx/dxmainc.c. (unix-dll.mak [1.5]:
+2001/09/22 07:21:00 ghostgum)
+
+Add the needed object files when building Windows large executable.
+(msvc32.mak [1.19]: 2001/09/22 07:24:33 ghostgum)
+
+Updates version and date in documentation in preparation for 7.02
+pre-release. (version.mak [1.35]: 2001/09/22 16:26:22 raph)
+
+</pre><h2><a name="7.02-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - null object was converted to -nostringval- Discovered during the
+work on pdfopt. (lib/pdfwrite.ps [1.4]: 2001/04/28 01:01:38 alexcher)
+ - On Windows GS enumerated "." and ".." as external resources and
+failed with /invalidresource trying to load them later. (gp_ntfs.c [1.5]:
+2001/05/04 20:27:40 alexcher)
+ - pass #xx escaped characters in names through and fix the escape
+logic to prevent a /typecheck in add. (lib/pdfwrite.ps [1.5]: 2001/05/31
+04:38:42 rayjj)
+ - Many scripts for invoking Ghostscript-based utilities didn't
+properly handle file names that included spaces. Unix and DOS/Windows/OS/2
+scripts required different fixes. (lib/dvipdf [1.2], lib/eps2eps [1.3],
+lib/eps2eps.bat [1.5], lib/gssetgs.bat [1.3], lib/pdf2dsc.bat [1.2],
+lib/pdf2ps [1.4], lib/pdf2ps.bat [1.5], lib/pdfopt [1.3],
+lib/pdfopt.bat [1.3], lib/pf2afm.bat [1.3], lib/pfbtopfa [1.3],
+lib/ps2ascii [1.3], lib/ps2epsi [1.7], lib/ps2epsi.bat [1.6],
+lib/ps2epsi.cmd [1.3], lib/ps2pdf.bat [1.6], lib/ps2pdf12.bat [1.5],
+lib/ps2pdf13.bat [1.5], lib/ps2pdf14.bat [1.2], lib/ps2pdfwr [1.6],
+lib/ps2pdfxx.bat [1.10], lib/ps2ps [1.3], lib/ps2ps.bat [1.4]: 2001/06/22
+16:09:22 lpd)
+ - pdfopt gave an error if the input file had PageMode = /UseOutlines
+but lacked an Outlines tree. Fixes SourceForge bug #410371.
+(lib/pdfopt.ps [1.5]: 2001/07/01 07:16:28 lpd)
+ - The first pass of pdfopt always estimated the size of the primary
+hint stream as 0, which occasionally caused the second-pass fixup to fail.
+Fixes SourceForge bug #409887. (lib/pdfopt.ps [1.7]: 2001/07/01 07:23:36
+lpd)
+ - If the OpenAction of a document referred to a Page object, pdfopt
+would try to include the page in the "document-level objects" section of the
+output, causing a rangecheck error. Fixes SourceForge bug #437724. Also adds
+more tracing to pdfopt (with -dPDEBUG). (lib/pdfopt.ps [1.8]: 2001/07/02
+15:50:19 lpd)
+ - gp_open_scratch_file concatenated the temporary directory name
+with the prefix even if the prefix was an absolute path; also, it didn't
+check the length of the final file name, possibly leading to memory
+corruption. (gp_iwatc.c [1.6], gp_mswin.c [1.6], gp_os2.c [1.10],
+gp_vms.c [1.7]: 2001/07/15 13:57:50 lpd)
+ - glyphshow procedure in ps2ascii lacks a pop in the for loop. Patch
+from Leon Bottou. Source Forge bug #443361. (lib/ps2ascii.ps [1.3]:
+2001/07/22 20:43:32 igorm)
+ - pdfopt was broken because SAFER prevented it from opening its
+output and temporary files, and from deleting its temporary files. Note:
+this fix requires the .tempfile operator added in src/zfile.c [1.9].
+(lib/pdfopt [1.4], lib/pdfopt.bat [1.4], lib/pdfopt.ps [1.9]: 2001/07/23
+06:57:27 lpd)
+ - Running font2c on any of the 35 standard fonts caused an
+invalidaccess error if gs was built with compiled fonts (ccfonts.dev
+"feature"). Fixes SourceForge #458816. (lib/font2c.ps [1.3]: 2001/09/13
+23:16:29 lpd)
+ - Fix for MS-Windows graphics library. Remove references to
+interpreter from gp_check_interrupts function in library. Make gslib.c
+access gs_stdin not stdin. Correct the build paths for graphics devices. Add
+missing graphics devices. (gp_mslib.c [1.3], gp_mspol.c [1.1],
+gp_mswin.c [1.7]: 2001/09/22 07:07:02 ghostgum)
+
+Committing in . Modified Files: gs/icclib/icc.c gs/src/gdevpdf.c
+gs/src/gp_vms.c gs/src/gsnogc.c gs/src/icclib.mak gs/src/openvms.mmk
+gs/src/x_.h Added Files: gs/src/vms_x_fix.h Patches for OpenVMS
+(gp_vms.c [1.6]: 2001/04/20 09:56:22 joukj)
+
+branches: 1.1.2; file gp_gnrdl.c was initially added on branch GS_6_5.
+(gp_gnrdl.c [1.1]: 2001/06/05 07:07:37 raph)
+
+Change ps2pdfxx.bat to use lowercase output file extension to be consistent
+with other platforms. This closes sourceforge bug #430129.
+(lib/ps2pdfxx.bat [1.9]: 2001/06/15 05:32:56 jackiem)
+
+Adds more tracing output to pdfopt with -dPDEBUG. (lib/pdfopt.ps [1.6]:
+2001/07/01 07:20:30 lpd)
+
+Adds more tracing (with -dPDEBUG) to lib/pdfwrite.ps, used by pdfopt.
+(lib/pdfwrite.ps [1.6]: 2001/07/02 15:46:05 lpd)
+
+Adds pphs, a utility for printing the Primary Hint Stream of a linearized
+PDF file. (lib/pphs [1.1], lib/pphs.ps [1.1]: 2001/07/15 16:25:02 lpd)
+
+Re-enables export of the hwnd parameter in the old dll interface. This is
+required by macgsview. (gsdll.c [1.5]: 2001/07/18 20:16:24 giles)
+
+Adds initial support for macos. (gp_macio.c [1.1]: 2001/07/18 20:20:50
+giles)
+
+branches: 1.1.2; Adds initial support for macos. (gp_mac.c [1.1]: 2001/07/18
+20:20:50 giles)
+
+branches: 1.1.2; Adds the makefile and script for the new macos build method
+(macgenmcpxml.sh [1.1]: 2001/07/18 20:28:57 giles)
+
+Adds descriptive labels to the output of the utility for printing linearized
+PDF data. (lib/pphs.ps [1.2]: 2001/07/19 18:38:45 lpd)
+
+Protect the export of 'hwndtext', required by macgsview, with platform
+#ifdefs to avoid conflicts with the win32 dll build. (gsdll.c [1.6]:
+2001/07/23 05:25:08 giles)
+
+branches: 1.2.2; corrects line endings in gp_macio.c (gp_macio.c [1.2]:
+2001/07/24 22:22:59 giles)
+
+Improves the comments printed with dumps of Linearized PDF hint tables.
+(lib/pphs.ps [1.3]: 2001/07/24 22:24:28 lpd)
+
+Changes pdfopt to work around several Acrobat code and documentation bugs,
+so that Acrobat now recognizes pdfopt output as "optimized". Fixes
+SourceForge #438685. (lib/pdfopt.ps [1.10], lib/pdfwrite.ps [1.7]:
+2001/07/30 07:16:32 lpd)
+
+The Unix shared object loader 'gsx' depends on Gtk+ which causes it to fail
+in an environment where X11 and Gtk+ are not available. Add a console only
+loader 'gsc' which does not depend on X11 or Gtk+. This does not support the
+'display' device. Fixes sourceforge bug #450933. (dxmainc.c [1.1]:
+2001/09/15 08:10:33 ghostgum)
+
+When using the Unix Gtk+ loader gsx, delay setting the default color map and
+visual until the display device is opened. This may allow gsx to be used
+when X11 is not available. May fix Sourceforge bug #450933. (dxmain.c [1.4]:
+2001/09/15 08:14:21 ghostgum)
+
+Speed up reading stdin when using callouts. Add platform-specific functions
+for reading stdin, to allow non-blocking reading of stdin if supported.
+Fixes Sourceforge bug #416973. (gp_stdia.c [1.1], gp_stdin.c [1.1],
+ziodevs.c [1.3]: 2001/09/15 08:48:34 ghostgum)
+
+Correct the stdin code in dxmainc.c (gsc) to be the same as gp_stdia.c.
+(dxmainc.c [1.2]: 2001/09/22 07:16:50 ghostgum)
+
+</pre><h2><a name="7.02-Drivers"></a>Drivers</h2><pre>
+
+Fixes problems:
+ - Prevent empty or invalid OutputFile values from causing SEGV in
+psrgb, psgray and psmono. SourceForge bug #414151. (gdevpsu.c [1.5]:
+2001/04/20 02:35:24 rayjj)
+ - Corrects incorrect month value in TIFF headers. Need to increment
+tm_mon by one to get actual month. Fix from Helge Blischke.
+(gdevtifs.c [1.4]: 2001/04/20 06:36:00 rayjj)
+ - epswrite now writes each page into separate file, if OutputFile
+specifies format. SourceForge bug #228641. (gdevps.c [1.17],
+gdevpsim.c [1.5], gdevpsu.c [1.6], gdevpsu.h [1.3]: 2001/05/05 11:04:22
+igorm)
+ - Writing each page to separate file, epswrite wrote wrong number of
+pages to their trailers. (gdevps.c [1.18], gdevpsim.c [1.6],
+gdevpsu.c [1.7], gdevpsu.h [1.4]: 2001/05/10 17:41:22 igorm)
+ - Removes duplicate rc_decrement_only() in
+pdf14_begin_typed_image(), so that the marking device is now deallocated
+once. Fixes SourceForge bug #434705. (gdevpnga.c [1.4]: 2001/07/05 23:21:01
+raph)
+
+Committing in . Modified Files: gs/icclib/icc.c gs/src/gdevpdf.c
+gs/src/gp_vms.c gs/src/gsnogc.c gs/src/icclib.mak gs/src/openvms.mmk
+gs/src/x_.h Added Files: gs/src/vms_x_fix.h Patches for OpenVMS (x_.h [1.3]:
+2001/04/20 09:56:22 joukj)
+
+branches: 1.2.2; Updates hpijs driver to version 0.96. (gdevhpij.c [1.2],
+gdevhpij.h [1.2]: 2001/05/30 23:25:25 raph)
+
+branches: 1.1.2; file defs.h was initially added on branch GS_6_5.
+(defs.h [1.1]: 2001/05/31 08:28:49 raph)
+
+branches: 1.1.2; file gomni.c was initially added on branch GS_6_5.
+(gomni.c [1.1]: 2001/05/31 08:28:49 raph)
+
+branches: 1.1.2; file gdevln03.c was initially added on branch GS_6_5.
+(gdevln03.c [1.1]: 2001/06/05 07:07:37 raph)
+
+branches: 1.1.2; file gdevop4w.c was initially added on branch GS_6_5.
+(gdevop4w.c [1.1]: 2001/06/05 07:07:37 raph)
+
+branches: 1.1.2; file gdevxes.c was initially added on branch GS_6_5.
+(gdevxes.c [1.1]: 2001/06/05 07:07:37 raph)
+
+Adds knowledge of more paper sizes to PCL driver. Thanks to Jonathan Kamens
+for the patch. (gdevpcl.c [1.5], gdevpcl.h [1.5]: 2001/07/15 06:38:38 raph)
+
+branches: 1.1.2; Adds initial support for macos. (gdevmac.c [1.1],
+gdevmac.h [1.1], gdevmacpictop.h [1.1], gdevmacttf.h [1.1]: 2001/07/18
+20:20:50 giles)
+
+branches: 1.1.2; Adds the remaining macos source files (gdevmacxf.c [1.1]:
+2001/07/18 20:27:39 giles)
+
+Added const to all printer device descriptors const gx_device_printer
+gs_xxx_device = ... (gdev3852.c [1.3], gdev4081.c [1.3], gdev4693.c [1.3],
+gdev8510.c [1.3], gdevadmp.c [1.3], gdevbj10.c [1.4], gdevcif.c [1.3],
+gdevcljc.c [1.4], gdevcp50.c [1.3], gdevdjtc.c [1.3], gdevdm24.c [1.3],
+gdevepsc.c [1.3], gdevepsn.c [1.3], gdevescp.c [1.3], gdevhl7x.c [1.5],
+gdevimgn.c [1.4], gdevlbp8.c [1.3], gdevlj56.c [1.3], gdevmiff.c [1.3],
+gdevn533.c [1.3], gdevo182.c [1.3], gdevokii.c [1.3], gdevpjet.c [1.3],
+gdevsgi.c [1.2], gdevsnfb.c [1.3], gdevsppr.c [1.4], gdevsunr.c [1.4],
+gdevtknk.c [1.3]: 2001/08/01 00:48:23 stefan911)
+
+</pre><h2><a name="7.02-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - Empty pages included a Contents entry whose value was an empty
+array: the spec allows this, and AR3 and 4 accept it, but AR5 rejects it.
+(gdevpdf.c [1.34]: 2001/06/29 06:52:13 lpd)
+ - When tiling with a bitmap, the /Type entry in the Pattern resource
+was written twice. (Minor file size problem only, not a functional problem.)
+(gdevpdfb.c [1.5]: 2001/06/29 17:04:17 lpd)
+ - Some poorly designed PDF tools couldn't handle the fact that the
+Contents stream of each page was not surrounded by q/Q. (The PDF spec does
+not require this.) Fixes SourceForge bug #231390. (gdevpdfu.c [1.16]:
+2001/07/02 18:07:55 lpd)
+ - pdfwrite didn't set returned.current_char, so the "current
+character" for kshow was 0 or a random value. Fixes SourceForge bug #420933.
+(gdevpdfs.c [1.5]: 2001/07/02 19:09:23 lpd)
+ - When producing text in a Type 3 (bitmap) font and using TL and '
+for Y positioning, emitting a horizontal space character reset
+text.use_leading, causing the line to be positioned incorrectly. Fixes
+SourceForge bug #427159. (gdevpdft.c [1.33]: 2001/07/04 16:47:33 uid22160)
+ - When producing text using a Type 3 (bitmap) font, the TL command
+was used (incorrectly) when the new text position was directly below the
+current text position, not (correctly) when the new text position was
+directly below the beginning of the current text line. Fixes SourceForge bug
+#228180. (gdevpdft.c [1.34]: 2001/07/04 18:06:39 uid22160)
+ - Scaled fonts with PaintType = 2 (stroked) were painted with
+incorrect stroked width. (gdevpdfs.c [1.6]: 2001/07/04 21:57:02 uid22160)
+ - pdfwrite generated masked images, a PDF 1.3 feature, even when
+CompatibilityLevel &lt; 1.3. Fixes item (2) of SourceForge bug #414104.
+(gdevpdfj.c [1.7], gdevpdfv.c [1.6]: 2001/07/07 19:15:51 lpd)
+ - pdfwrite could write out a Pattern image too large for Acrobat
+Reader to handle, which would then never be referenced. Fixes item (4) of
+SourceForge bug #414104. (gdevpdfv.c [1.7]: 2001/07/07 19:41:12 lpd)
+ - MSVC requires that a label not be the last thing in a block.
+(gdevpdfv.c [1.9]: 2001/07/08 13:46:25 lpd)
+ - The algorithm for scaling down user coordinates to fall within
+Acrobat Reader's limitations didn't work properly for stroked paths with
+anisotropic CTMs, possibly producing large coordinates that led Acrobat (but
+not Ghostscript) to display the resulting file incorrectly. Fixes
+SourceForge bug #440476. (gdevpdfd.c [1.15], gdevpdfp.c [1.18],
+gdevpdfx.h [1.30]: 2001/07/12 03:28:02 lpd)
+ - pdfwrite didn't write transfer functions in the output for images,
+and allowed lossy compressions on images even in the presence of peculiar
+transfer functions (such as functions simulating indexed color spaces). This
+fix writes transfer functions for images, prevents lossy compression if the
+transfer function is not the identity, and undoes the hack that was
+implemented earlier to work around this problem. Fixes SourceForge bug
+#420257. (gdevpdf.c [1.35], gdevpdfg.c [1.13], gdevpdfi.c [1.22],
+gdevpdfx.h [1.31]: 2001/07/12 05:47:07 lpd)
+ - When writing text, the leading offset was sometimes ignored if
+blank lines were followed by a non-blank line. Fixes SourceForge bug
+#440490. (gdevpdft.c [1.35]: 2001/07/12 19:45:53 lpd)
+ - If ConvertCMYKImagesToRGB was true, pdfwrite produced images with
+the correct RGB data but with the color space still set to DeviceCMYK. (Fix
+originally from Helge Blischke.) (gdevpdfi.c [1.23]: 2001/07/24 04:47:37
+lpd)
+ - The calculation of a scaling value for stroked paths was
+incorrect, causing Inf and NaN values to be written in the PDF file. Fixes
+SourceForge #444682. Bug was introduced by the fix for #440476.
+(gdevpdfd.c [1.16]: 2001/07/27 22:28:31 lpd)
+ - Some error codes were ignored, masking errors in writing embedded
+fonts. (gdevpdfe.c [1.10]: 2001/07/31 06:32:42 lpd)
+ - ICCBased color spaces were copied to the output even if the output
+level was 1.2 (ICCBased color spaces were introduced in PDF 1.3).
+(gdevpdfc.c [1.16]: 2001/08/02 20:29:07 lpd)
+ - If an image used a color space that couldn't be represented in
+PDF, an invalid file was produced, rather than falling back to the default
+representation as tiny rectangles. (bug introduced by H. Blischke's color
+space fix) (gdevpdfi.c [1.24]: 2001/08/03 16:12:16 lpd)
+ - Type 1 fonts that did not use the standard 1000-unit cell, such as
+some fonts in PostScript files produced by Windows NT 4.0, were written with
+an incorrect FontMatrix. (The output was visually correct, because the font
+size was scaled to compensate.) Fixes SourceForge #439474.
+(gdevpdff.c [1.19], gdevpdff.h [1.11], gdevpdfs.c [1.7]: 2001/08/06 19:36:01
+lpd)
+ - If the base 14 fonts were being embedded, they would often be
+embedded multiple times. Partially fixes SourceForge #438957.
+(gdevpdff.c [1.20]: 2001/08/17 21:27:21 lpd)
+ - The descriptors for embedded fonts were recomputed unnecessarily.
+Part 1 of a two-part fix for SourceForge #451456. (gdevpdff.c [1.21]:
+2001/08/29 19:03:59 lpd)
+ - Uncolored Patterns with all bits set (equivalent to a solid color)
+crashed pdfwrite. Fixes SourceForge #461330. (gdevpdfv.c [1.10]: 2001/09/15
+06:12:29 lpd)
+ - pdfwrite failed to recognize several of the standard screen spot
+functions: Ellipse, Round, and Diamond weren't implemented, and several of
+the others didn't match the PostScript implementation because of
+float/double discrepancies. Also, pdfwrite wrote out halftone screens using
+the adjusted ("actual") frequency and angle values rather than the requested
+values. Fixes SourceForge #446676. (gdevpdfg.c [1.14]: 2001/09/22 16:27:04
+lpd)
+
+Committing in . Modified Files: gs/icclib/icc.c gs/src/gdevpdf.c
+gs/src/gp_vms.c gs/src/gsnogc.c gs/src/icclib.mak gs/src/openvms.mmk
+gs/src/x_.h Added Files: gs/src/vms_x_fix.h Patches for OpenVMS
+(gdevpdf.c [1.32]: 2001/04/20 09:56:22 joukj)
+
+Committing in . Modified Files: gs/src/gdevpdf.c gs/src/imainarg.c
+gs/src/openvms.mmk Merged in some patches by Rick Dyson, which affect
+compilation on VMS only. (gdevpdf.c [1.33]: 2001/04/25 08:19:41 joukj)
+
+Changes the locally used BASE_ENCODING macro to an inline procedure
+base_encoding_index. (Code hygeine only, no functional effect.)
+(gdevpdfs.c [1.4]: 2001/06/29 17:05:35 lpd)
+
+Makes pdfwrite recognize colored Patterns where all the pixels are the same
+color, and convert them to uncolored Patterns. This is an important
+optimization for files produced by certain applications (the test file came
+from Freehand on the Mac). Fixes item (3) of SourceForge bug #414104.
+(gdevpdfv.c [1.8]: 2001/07/08 04:27:48 lpd)
+
+Capitalizes a macro, and replaces two other macros with variables.
+(gdevpdfm.c [1.12]: 2001/07/15 22:53:23 lpd)
+
+Interprets bookmarks (/OUT pdfmarks) lacking both Action and Dest keys as a
+GoTo to the current page, to match Acrobat Distiller. SourceForge bug
+(enhancement) #442111. (gdevpdfm.c [1.13]: 2001/07/24 22:28:42 lpd)
+
+Changes pdfwrite to produce MediaBox values with up to 2 digits of decimal
+fraction, rather than truncating to integers. SourceForge enhancement
+request #440782. (gdevpdf.c [1.36], gdevpdfx.h [1.32]: 2001/07/25 23:16:44
+lpd)
+
+Changes the writing of Type 3 character bitmaps to use Decode in the image
+dictionary, rather than BlackIs1 in the parameter dictionary, to invert the
+data, because it takes slightly less space on the file. (gdevpdfb.c [1.6]:
+2001/07/29 02:21:43 lpd)
+
+Shrinks PDF output slightly by removing unnecessary spaces.
+(gdevpdfo.c [1.8]: 2001/07/29 03:00:45 lpd)
+
+Writes only the necessary Encoding entries for Type 3 bitmap fonts, rather
+than always writing all 256 entries. Motivated by SourceForge #438957.
+(gdevpdf.c [1.37], gdevpdft.c [1.36], gdevpdfw.c [1.12], gdevpdfx.h [1.33]:
+2001/07/30 15:11:00 lpd)
+
+Added const to all printer device descriptors const gx_device_printer
+gs_xxx_device = ... (gdevpdff.c [1.18]: 2001/08/01 00:48:23 stefan911)
+
+Converts all locally defined macros to upper case. (gdevpdfc.c [1.17]:
+2001/08/03 06:43:52 lpd)
+
+Shrinks pdfwrite output slightly by omitting the unnecessary space character
+before strings and hex strings, as well as before names, arrays, and
+dictionaries. (gdevpdfo.c [1.9]: 2001/08/14 02:29:16 lpd)
+
+Committing in . Modified Files: gs/src/gdevpdfm.c gs/src/sarc4.c
+gs/src/zcsdevn.c gs/src/zfile.c Some type casts added (gdevpdfm.c [1.14]:
+2001/09/04 14:30:13 joukj)
+
+</pre><h2><a name="7.02-PDF_Interpreter"></a>PDF Interpreter</h2><pre>
+
+Fixes problems:
+ - 5-element DeviceN array (with attributes) messed up the operand
+stack and failed. The attributes is an informational entry that can be
+safely ignored. Bug #419509, Customer #150. (lib/pdf_draw.ps [1.30]:
+2001/04/28 01:45:25 alexcher)
+ - PDF files containing strings with codes that map to glyph names
+that are not part of the font would error with undefined in --get--.
+Substitute the .notdef glyph as Adobe Acrobat Reader apparently does.
+(lib/pdf_font.ps [1.19]: 2001/05/12 00:11:42 rayjj)
+ - .resolvefn4 used stream length as the length of the decompressed
+data, truncated the PostScript procedure and caused syntax error in the
+token operator because of the unmatched brackets. Reading directly from the
+stream fixes the problem. Bugs #425919 (lib/pdf_draw.ps [1.31]: 2001/05/24
+16:48:59 alexcher)
+ - The March 1999 PDF 1.3 version of the specification had a change
+to make the /FormType key and /Matrix key optional in a Form. While we had
+already handled missing /Matrix key, the missing /FormType key was not
+accounted for in all cases. Move this to the common DoForm code. Fix for
+SourceForge bug #430556, Artifex customer #671. (lib/pdf_draw.ps [1.32]:
+2001/06/13 05:30:29 rayjj)
+ - Wrong entry name (BaseFont instead CIDFontName) was used while
+resolving font resource to CIDFontType2 in PDF interpreter. Source Forge bug
+#436892 (lib/pdf_font.ps [1.20]: 2001/07/09 19:27:37 igorm)
+ - Workaround a SEGV caused by GC interaction with stderr file.
+Needed to complete the fix for #430556, but the stderr bug remains open as
+442477. (lib/pdf_main.ps [1.34]: 2001/07/18 20:42:48 rayjj)
+ - Detect and load embedded Type1 fonts that are in PFB format (have
+the 6 byte PFB header before each segment). Also ignore /Length values in
+the streamdict keys that don't match the PFB segnment lengths. Issue warning
+messages to stderr for all of these spec violations. SourceForge bug #430556
+for Artifex customer #671. VS:
+----------------------------------------------------------------------
+(lib/pdf_font.ps [1.21]: 2001/07/18 20:45:35 rayjj)
+ - This problem was a rangecheck error being reported in
+.setindexedspace when the base colorspace was DeviceN. The cause was an
+error in determining the number of components in the DeviceN space. This is
+the second of two fixes for SF bugs 427165 (customer #1110) and 438682.
+(lib/pdf_draw.ps [1.34]: 2001/08/21 23:54:30 dancoby)
+
+Improvement: Prevents PDF files with more than 65534 page from failing due
+to the dict size limit. The caches never hit on pages past 65534. Problem
+was reported by a potential Artifex customer re their customer's files.
+(lib/pdf_main.ps [1.33]: 2001/05/12 17:15:41 rayjj)
+
+This is the fix for [ #427354 ] PDF checkboxes problem. The PDF annotation
+handler was not correctly handling cases in which there was no appearance in
+the appearance dictionary AP for the current appearance state AS. It should
+not display anything in this case. (lib/pdf_draw.ps [1.33]: 2001/06/14
+22:25:36 dancoby)
+
+Updates pdf_sec.ps to use the new PDF 1.4 algorithms and 128 bit keylengths.
+Rewritten to use C implementations of Arcfour (RC4 compatible cipher) and
+MD5. Also fixes bug in processing of zero-length streams.
+(lib/pdf_sec.ps [1.4]: 2001/09/19 07:12:13 raph)
+
+</pre><h2><a name="7.02-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - GS didn't exit to shell when it was used with '--' option. The bug
+was introduced in revision 1.7 when many references to exit() were replaced
+with returns. Bug #416498 by Paul Vojta (imainarg.c [1.11]: 2001/04/19
+23:39:39 ghostgum)
+ - Removing the dependence of graphic library on PS interpreter.
+Source Forge bug #415003. (zcssepr.c [1.8]: 2001/04/20 09:38:39 igorm)
+ - Auto-rotation is enabled for non-null orientations. Auto rotation
+now always rotates the image +90 degrees relative to the orientation. Bug
+#416830 Customer #430 (zmedia2.c [1.3]: 2001/04/26 17:57:41 alexcher)
+ - EPS files without a showpage could not be viewed if given as a
+command line arg. Extra call to display_set_callback erased the page before
+going to the GS&gt; prompt the first time. Only do display_set_callback as
+part of init_2. (imain.c [1.13]: 2001/05/04 20:35:33 rayjj)
+ - in global mode pdfmark with composite objects causes invalidaccess
+because the objects are copied to local memory but the array is copied to
+current memory. Now the array is copied to local memory too. Fix from Helge
+Blischke with changes. (lib/gs_pdfwr.ps [1.11]: 2001/05/04 20:59:33
+alexcher)
+ - This IdiomSet replaces 3 procedures generated by Win2K driver in
+level 1 mode for RGB source image and DeviceRGB, DeviceCMYK, and DeviceGray
+color models. Original implementation uses transfer functions to simulate
+the indexed color space. Currently, GS always ignore transfer functions. The
+replacement procedure uses indexed color space directly. This Idiom should
+really be in a file in the IdiomSet directory of the Resource path, but we
+put it here until GS has a way to handle distribution and installation of
+Resources. Customer #670, Bug #420257 (lib/gs_ll3.ps [1.9]: 2001/05/08
+19:42:13 alexcher)
+ - Add all page sizes supported in statusdict to the .pagetypenames
+array so that these page sizes can be selected from the command line using
+-sPAPERSIZE=... parameter. Also implement the STRICT that limits the
+available known paper sizes to those Adobe had defined prior to Level 2 when
+'setpagedevice' replaced this mess. SourceForge bug #427898
+(lib/gs_statd.ps [1.5]: 2001/05/30 21:14:35 rayjj)
+ - Fix for [ #419211 ] .parse_dsc_comments not robust. This change
+modifies the DSC parser so that errors in DSC comments do not abort the file
+processing. (zdscpars.c [1.11]: 2001/06/06 08:11:20 dancoby)
+ - Adobe PhotoShop 5+ duotone code assumes that setcolor operator
+calls tint transform function if source colors don't make a subset of device
+colors. Bug #224056, Customer #150 (zcolor2.c [1.4]: 2001/06/07 14:48:24
+alexcher)
+ - When finding a %%Page line in the trailer due to incorrect DSC
+comments, the DSC parser now returns CDSC_PAGE only if the parser treats it
+as a valid page. Partial fix for SourceForge bug #435157. (dscparse.c [1.6]:
+2001/06/23 10:21:24 ghostgum)
+ - Fix for [ #435157 ] segmentation fault in dsc_page. Add test for
+valid page data before using. (zdscpars.c [1.12]: 2001/06/27 00:25:08
+dancoby)
+ - Implementing CIDFont.CMap construction with period character (see
+Ken Lunde, "CJKV Information Processing," O'RELILLY. 1999. p284) for any
+compatible pair of CIDFont &amp; CMap. This feature complies with Adobe
+CPSI. Thanks to Masatake Yamato for discovering this feature.
+(lib/gs_cidcm.ps [1.5]: 2001/07/01 08:55:34 igorm)
+ - Reading a TrueType font with an empty table could cause a
+rangecheck error. (lib/gs_ttf.ps [1.9]: 2001/07/08 15:24:11 lpd)
+ - pdfwrite didn't write transfer functions in the output for images,
+and allowed lossy compressions on images even in the presence of peculiar
+transfer functions (such as functions simulating indexed color spaces). This
+fix writes transfer functions for images, prevents lossy compression if the
+transfer function is not the identity, and undoes the hack that was
+implemented earlier to work around this problem. Fixes SourceForge bug
+#420257. (lib/gs_ll3.ps [1.10]: 2001/07/12 05:47:07 lpd)
+ - zfilelineedit sometimes reallocates (resizes) buffer string
+without updating reference to it from o-stack, so as console input after
+callout reads undefined data. Fixed with copying new reference to o-stack
+whenever it changes. Source Forge bug #437808 (ziodev.c [1.5]: 2001/07/16
+08:38:14 igorm)
+ - If a 'restore' had to restore page device parameters, it did so
+before rather than after restoring the state of VM, possibly creating
+dangling references. Fixes SourceForge #230694, #414588, #444565.
+(lib/gs_setpd.ps [1.8], zdevice2.c [1.4]: 2001/07/30 07:11:38 lpd)
+ - Ignore white space between %%DocumentData: and argument. Fix: Set
+dsc-&gt;preview correctly to DOS EPS if both DOS EPS and EPSI previews are
+present. Update to latest dscparse.c/h used in GSview. Change dscparse to
+mark internal functions "dsc_private" not "private", so it can be compiled
+as C++ (needed by GSview, not Ghostscript). (dscparse.c [1.7],
+dscparse.h [1.6]: 2001/08/01 09:03:40 ghostgum)
+ - Fixing wrong binding of .getmetrics32 with -dNOBIND.
+(lib/gs_typ32.ps [1.3]: 2001/08/06 10:19:42 igorm)
+ - Old hack about underline parameters in gs_type1.ps now conflicts
+with QuarkXPress_4.1 3.0 0 procset. Disabling it for fonts, which have
+degenerate FontBBox. Source Forge bug #441870. (lib/gs_type1.ps [1.5]:
+2001/08/06 16:47:43 igorm)
+ - The problem was a rangecheck error being reported in
+.setdevicenspace with PDF files. The cause of the problem was not allowing
+multiple copies of the name /None in DeviceN colorant specification. This is
+the first of two fixes for SF bugs 427165 (customer #1110) and 438682.
+(zcsdevn.c [1.4]: 2001/08/21 23:52:36 dancoby)
+ - Work around a bug in the Adobe AGM_Core that results in areas
+painted by the tint transform of a spot color being overpainted with white.
+The symptom is missing graphics (lines, fills or text). SourceForge bug
+#454415 for Artifex customer #190. (lib/gs_init.ps [1.37]: 2001/08/29
+21:10:23 rayjj)
+ - Fix a bug that the procedure for arraytype in cntdict leaves an
+object. (lib/gs_btokn.ps [1.4]: 2001/09/04 22:59:52 masata-y)
+ - If MaxLocalVM user parameter is set, perform garbage collection
+before checking for potential VMerror. Without this fix, VMerror would be
+issued even if a garbage collection would have freed enough memory to stay
+below the MaxLocalVM limit. (ireclaim.c [1.3]: 2001/09/05 17:50:36 rayjj)
+ - Prevent memory corruption when reading %statementedit. Allocate
+lineedit buffer in correct memory space. Line being assembled is stored in a
+PostScript string during callouts, so prevent zfilelineedit from reading
+more than max_string_size bytes. Allocate extra space for trailing new-line
+for statementedit, rather than fiddling the string length which broke when
+sreadline reallocated the string. (zfile.c [1.11], ziodev.c [1.6]:
+2001/09/22 07:26:46 ghostgum)
+
+Increments version number after 7.00 release. Also fixes gs_init.ps to
+consistently print minor revision number as two digits.
+(lib/gs_init.ps [1.35]: 2001/04/17 07:40:12 raph)
+
+Committing in . Modified Files: gs/src/gdevpdf.c gs/src/imainarg.c
+gs/src/openvms.mmk Merged in some patches by Rick Dyson, which affect
+compilation on VMS only. (imainarg.c [1.12]: 2001/04/25 08:19:41 joukj)
+
+Added dot(.) composed font name(CIDFont.CMap) supports.
+(lib/gs_cidcm.ps [1.3]: 2001/05/09 09:15:19 masata-y)
+
+In zfilename, a string allocated by ialloc_string is put on the stack with
+correct memory space. (zfileio.c [1.11]: 2001/05/09 09:25:24 masata-y)
+
+The show operator doesn't clear the operand stack on interrupts. Source
+Forge bug 209350. (zchar.c [1.4]: 2001/05/10 19:15:29 igorm)
+
+Move jpeg_decompress structure enum/reloc handler from interp level to
+stream utility level to support non-PostScript clients. (zfdcte.c [1.5]:
+2001/05/30 17:38:45 rayjj)
+
+Unwind to the revision 1.2, because CIDFont.CMap patch misses some important
+CIDFont-CMap combinations. (lib/gs_cidcm.ps [1.4]: 2001/06/06 10:44:05
+igorm)
+
+If an ICC color space failed to load, Acrobat Reader uses the alternate
+color space. Previous implementation ignored errors during load and used the
+partial ICC space. This change signals an error and uses the alternate space
+by catching the error in a stopped context in the interpreter.
+(lib/gs_icc.ps [1.2]: 2001/06/12 16:02:39 rayjj)
+
+Patch from Mr. Toshiya Suzuki : Implementing multi-dimensional CID ranges,
+and fixing bugs about decoding text string with CID font : (1) when GS
+consumes undefined byte sequence (which cannot be mapped to some glyphs), GS
+aborts. (2) when selected CID font lacks the glyph for requested CID, GS
+aborts. (3) "notdefrange" defines SINGLE CID for undefined byte sequences in
+specified range, but current GS implementation take it as an offset to
+calculate MULTIPLE CID. (4) "cidrange" operators accept only full range
+specification (&lt;0000&gt; to &lt;FFFF&gt;) or 8 bit width range
+(&lt;xxyy&gt; to &lt;xxzz&gt;). Source Forge bug #415163.
+(lib/gs_cmap.ps [1.11], zfcid0.c [1.7]: 2001/06/16 19:02:31 igorm)
+
+Committing in . Modified Files: gs/src/idisp.c gs/src/imain.c
+gs/src/zfileio.c Some minor fixes (2 added includes and 1 type cast) needed
+to compile cleanly on OpenVMS. (idisp.c [1.2], imain.c [1.14],
+zfileio.c [1.12]: 2001/07/11 12:05:52 joukj)
+
+Adds and documents an operator &lt;prefix|null&gt; &lt;access_string&gt;
+.tempfile &lt;filename&gt; &lt;file&gt; to create and open a temporary file,
+using gp_open_scratch_file. (zfile.c [1.9]: 2001/07/15 13:54:17 lpd)
+
+Add the local and global vmstatus values to calculate the memory usage of a
+resource. (lib/gs_res.ps [1.15]: 2001/07/15 16:13:39 masata-y)
+
+Allows temporary files (created and opened with .tempfile) to be deleted
+even if SAFER is set. (lib/gs_init.ps [1.36]: 2001/07/23 06:56:24 lpd)
+
+To reduce redraw flicker, do not allow Windows to erase the background since
+we paint it ourselves. Paint areas outside the page with the window
+background colour or light grey. Save and restore window size using
+registry. Add "Paste" to system menu of text window. Make error message box
+a child of text window to avoid it appearing behind the text window. To
+allow user to read the error message, the text window is not automatically
+destroyed in the event of an error. The user must close text window using
+close button or system menu. If text window closed, return e_Fatal to poll
+function to provide a cleaner exit without a stack dump. (dwimg.c [1.3],
+dwimg.h [1.4], dwmain.c [1.5], dwmainc.c [1.6], dwtext.c [1.4],
+dwtext.h [1.4]: 2001/08/01 09:50:36 ghostgum)
+
+Changed debugging flag variables to const. (igc.c [1.4], zvmem.c [1.3]:
+2001/08/01 16:21:35 stefan911)
+
+Adds missing dwreg.cpp and dwreg.h files needed by recent Windows updates
+which save and restore window size using registry. (dwreg.c [1.1],
+dwreg.h [1.1]: 2001/08/02 08:36:07 ghostgum)
+
+Improves documentation of the op_def array elements and removes the obsolete
+BEGIN/END_OP_DEFS macros, deprecated since 5.25. (opdef.h [1.3]: 2001/08/28
+03:28:08 giles)
+
+Adds a C implementation of the Arcfour encryption filter. This is a
+work-alike of the RC4 cipher used in PDF encryption. (zfarc4.c [1.1]:
+2001/09/02 06:16:41 giles)
+
+Corrects indenting, and adds another missing header. (zfarc4.c [1.2]:
+2001/09/02 07:09:13 giles)
+
+Committing in . Modified Files: gs/src/gdevpdfm.c gs/src/sarc4.c
+gs/src/zcsdevn.c gs/src/zfile.c Some type casts added (zcsdevn.c [1.5],
+zfile.c [1.10]: 2001/09/04 14:30:13 joukj)
+
+Change to debug output so that when the ptr is totally bogus, some useful
+output will be generated before otype-&gt;ssize is dereferenced (which can
+cause a memory access crash such as SEGV). No effect on non-debug code.
+(ilocate.c [1.4]: 2001/09/06 15:46:13 rayjj)
+
+Move misplaced comment block. (zvmem2.c [1.3]: 2001/09/06 16:01:23 rayjj)
+
+.objectprinttest: do one more pop if the operator is executed without error.
+.writeobjects: Before writing the header, check whether the written objects
+are arrays or not. If they are arrays, they are left them on the stack. If
+they are not arrays, they are removed from the stack.
+(lib/gs_btokn.ps [1.5]: 2001/09/15 07:11:00 masata-y)
+
+When using gswin32 (GUI version) and an error occurs or -? is used, do not
+display an error message box. Add a message to the text window "Close this
+window with the close button on the title bar or the system menu". Flash the
+window to attract attention. Fixes sourceforge bug #459019. (dwmain.c [1.6],
+dwtext.c [1.5]: 2001/09/15 08:36:53 ghostgum)
+
+Speed up reading stdin when using callouts. Add platform-specific functions
+for reading stdin, to allow non-blocking reading of stdin if supported.
+Fixes Sourceforge bug #416973. (dpmain.c [1.4], dwmainc.c [1.7],
+imain.c [1.15]: 2001/09/15 08:48:33 ghostgum)
+
+When using stdio callouts without callback functions, flush stdout and
+stderr. (imain.c [1.16]: 2001/09/15 09:17:10 ghostgum)
+
+Don't initialize stdin if it is being handled by the caller.
+(imain.c [1.17]: 2001/09/22 07:22:48 ghostgum)
+
+Allow PostScript stdout to be redirected to stderr or a file. This is
+required to avoid driver stdout being mixed with PostScript stdout. Options
+are -sstdout=filename or -sstdout=%stderr. To reset redirection use
+-sstdout=- or -sstdout=%stdout. Fixes Sourceforge bug #222534.
+(imain.c [1.18], imain.h [1.3], imainarg.c [1.13], iminst.h [1.5]:
+2001/09/22 07:33:35 ghostgum)
+
+Updates version and date in documentation in preparation for 7.02
+pre-release. (lib/gs_init.ps [1.38]: 2001/09/22 16:26:22 raph)
+
+</pre><h2><a name="7.02-Streams"></a>Streams</h2><pre>
+
+Fixes problems:
+ - When input stream of an input filter reports EOF, old code reports
+EOF for the filter. But if output buffer for the filter is not empty, EOF
+status to be delayed until it empties. Source Forge bug #417127.
+(stream.c [1.12]: 2001/05/05 10:12:23 igorm)
+ - Non-stable memory was used for internal zlib data, causing
+inconsistent heap state after 'restore' while zlib is active, and subsequent
+crash. Source Forge bug #431057 (szlibc.c [1.3]: 2001/07/16 08:29:46 igorm)
+ - Fixes numerous bugs in setting of DCT compression parameters.
+Manual setting of parameters such as QFactor should now work. Also
+ColorTransform now defaults to YCC instead of RGB color space so the default
+quality and compression ratio should improve. Thanks to Dave Slattengren for
+the initial version of this fix. (sdcparam.c [1.3], sdcte.c [1.4],
+sdeparam.c [1.4]: 2001/09/01 23:54:57 raph)
+ - fixes bounds overstepping in arcfour filter in the case where
+write buffer space is smaller than read buffer space. (sarc4.c [1.5]:
+2001/09/14 20:26:02 raph)
+
+Set file_name.size = 0 when file_name.data is set to 0. (stream.c [1.13]:
+2001/05/09 09:42:57 masata-y)
+
+Move jpeg_decompress structure enum/reloc handler from interp level to
+stream utility level to support non-PostScript clients. (sdcte.c [1.3]:
+2001/05/30 17:38:45 rayjj)
+
+Move jpeg_decompress structure enum/reloc handler from interp level to
+stream utility level to support non-PostScript clients. (see also zfdcte.c
+and sdcte.c) (sdct.h [1.4]: 2001/06/08 07:08:44 rayjj)
+
+Adds a comment describing the function and return value of sreadbuf.
+(stream.c [1.14]: 2001/06/17 04:28:10 lpd)
+
+Adds extern_inline for including inline procedures in header files.
+(stdpre.h [1.4]: 2001/06/17 05:09:07 lpd)
+
+These changes were originally put into the GS_6_5 branch on 2001/03/13. They
+are needed for using the current version of teh graphics library with the
+PCL6 code. Short description of changes: stat_.h: Added definition of
+stat_is_dir for use with MSVC. Not used in Ghostscript. gsptype1.c: Changes
+in image_PaintProc. This routine is used in gs_makepixmappattern.
+gs_makepixmappattern is only used in test8 (in gslib.c - a test module) and
+gs_makebitmappattern_xform. gs_makebitmappatern_xform is not used in
+Ghostscript. It is used in pcl6. (stat_.h [1.6]: 2001/08/07 22:13:29
+dancoby)
+
+Makes the spprint* procedures use sputc rather than sputs for printing
+converted values. Speeds up one set of customer ps2pdf conversions by 2.5%.
+(spprint.c [1.4]: 2001/08/25 06:59:04 lpd)
+
+Adds a C implementation of the Arcfour encryption filter. This is a
+work-alike of the RC4 cipher used in PDF encryption. (sarc4.c [1.1],
+sarc4.h [1.1]: 2001/09/02 06:16:41 giles)
+
+adds a missing header file for e_rangecheck. (sarc4.c [1.2]: 2001/09/02
+06:27:18 giles)
+
+Corrects indenting, and adds another missing header. (sarc4.c [1.3],
+sarc4.h [1.2]: 2001/09/02 07:09:13 giles)
+
+Committing in . Modified Files: gs/src/gdevpdfm.c gs/src/sarc4.c
+gs/src/zcsdevn.c gs/src/zfile.c Some type casts added (sarc4.c [1.4]:
+2001/09/04 14:30:13 joukj)
+
+</pre><h2><a name="7.02-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - When copying a device, copy the static procs if needed before
+calling finish_copydevice, so that the correct finish_copydevice is used.
+(gsdevice.c [1.9]: 2001/04/12 08:45:02 ghostgum)
+ - Removing the dependence of graphic library on PS interpreter.
+Source Forge bug #415003. (gscsepr.c [1.10], gscspace.h [1.7]: 2001/04/20
+09:38:38 igorm)
+ - Removing the dependence of graphic library on PS interpreter.
+Source Forge bug #415003. (gscsepr.c [1.11]: 2001/04/20 10:07:48 igorm)
+ - Optimization for shading fill. The general path filling algorithm
+subdivides fill region with trapezoid or rectangle subregions and then
+paints each subregion with given color. If the color is shading, each
+subregion to be subdivided into areas of constant color. But with radial
+shading each area is a high order polygon, being subdivided into smaller
+subregions, so as total number of subregions grows huge. Faster processing
+is done here by changing the order of subdivision cycles : we first
+subdivide the shading into areas of constant color, then apply the general
+path filling algorithm (i.e. subdivide each area into trapezoids or
+rectangles), using the filling path as clip mask. Source Forge bug #414022.
+(gsptype2.c [1.5], gsptype2.h [1.3], gxfill.c [1.8]: 2001/05/10 18:35:14
+igorm)
+ - If the OutputFile name was not NULL terminated, the strcmp would
+fail in unpredictable ways. (gsdevice.c [1.10]: 2001/05/12 00:08:36 rayjj)
+ - dev_color_eq used wrong number of components for halftones. Source
+Forge bug #422534. (gsht1.c [1.3], gxcht.c [1.3]: 2001/05/12 14:51:52 igorm)
+ - Current code for /All separations marks all planes in the
+alternate color space, not the destination color space. This is wrong, but
+gx_concretize_Separation() doesn't have access to the destination device
+color space. This fix makes tint value 1 print as black in any alternate
+color space. It printed as white in DeviceCMYK before. Bug #423838
+(gscsepr.c [1.12]: 2001/05/25 13:54:01 alexcher)
+ - Prevent SEGV caused by freeing memory not owned. Variable 'code'
+was overwritten, losing the get_outline return code that was needed for the
+decision to free the glyph_string.data. Problem detected with PCL. Bug was
+introduced in rev 1.10. (gstype42.c [1.12]: 2001/05/31 04:34:23 rayjj)
+ - Include &lt;time.h&gt; as required by Debian systems with glibc
+2.2. Fixes SourceForge bugs 413747, 417180, 417181, 417182. (time_.h [1.3]:
+2001/06/07 21:04:52 raph)
+ - FunctionType 4 functions that contained conditionals (if/ifelse)
+would report the length of their symbolic definition incorrectly;
+FunctionType 4 functions that had to return their symbolic definition in
+pieces would loop forever. Fixes SourceForge bug #427191. (gsfunc4.c [1.6]:
+2001/07/04 01:23:46 lpd)
+ - Changes clip logic in gx_image_cached_char() to affect the imaging
+device, so that clipping is reliably effective. Fixes SF bug #433821 (and
+probably others). (gxccache.c [1.5]: 2001/07/05 20:36:55 raph)
+ - Removes duplicate rc_decrement_only() in
+pdf14_begin_typed_image(), so that the marking device is now deallocated
+once. Fixes SourceForge bug #434705. (gdevp14.c [1.3]: 2001/07/05 23:21:00
+raph)
+ - Prevent non-persistent name_arrays of size==0 from causing a
+VMerror if alloc of size 0 returns a NULL. Detected with
+SeparationColorNames from the PCL code. (gscparam.c [1.7]: 2001/07/06
+17:02:25 rayjj)
+ - If the FontMatrix of a CFF CIDFont was the default [0.001 0 0
+0.001 0 0], it was not written, causing the FontMatrices of the subfonts to
+be scaled by 1000. (The Adobe documentation isn't at all clear about this.)
+Fixes SourceForge bug #428595. (gdevpsf2.c [1.14]: 2001/07/07 06:28:08 lpd)
+ - Before processing an image that uses the current color, call
+gs_state_color_load to ensure that if the current color is a pattern, the
+pattern is loaded. (This parallels existing code used for filling paths and
+processing text.) This prevents a SEGV caused when pdfwrite dereferenced a 0
+pointer to pdc-&gt;colors.pattern.p_tile. Fixes SourceForge bug #422089 for
+Artifex Customer #1110. (gsimage.c [1.4]: 2001/07/10 22:04:20 lpd)
+ - The algorithm for scaling down user coordinates to fall within
+Acrobat Reader's limitations didn't work properly for stroked paths with
+anisotropic CTMs, possibly producing large coordinates that led Acrobat (but
+not Ghostscript) to display the resulting file incorrectly. Fixes
+SourceForge bug #440476. (gdevvec.c [1.12], gdevvec.h [1.7]: 2001/07/12
+03:28:02 lpd)
+ - -sOutputFile=%stdout handling was broken by rev. 1.4 is fixed by
+giving priority to iodevices when there is a leading %, but if the iodevice
+is not recognized, attempting to parse as a format. Fix for SourceForge bugs
+436895 and 428738, Artifex customer #680 (gsdevice.c [1.11]: 2001/07/12
+14:10:55 rayjj)
+ - gp_open_scratch_file concatenated the temporary directory name
+with the prefix even if the prefix was an absolute path; also, it didn't
+check the length of the final file name, possibly leading to memory
+corruption. (gp_unifs.c [1.6]: 2001/07/15 13:57:50 lpd)
+ - An incorrect optimization in the conversion of Type 1 to Type 2
+CharStrings could cause character shapes to be mangled. This probably only
+affected embedded fonts in PDF output. Fixes SourceForge #444374.
+(gdevpsfx.c [1.9]: 2001/07/26 03:04:51 lpd)
+ - Acrobat Reader would not accept embedded TrueType fonts with a
+zero-length glyf table. Fixes SourceForge #429156. (gdevpsft.c [1.8]:
+2001/07/30 07:03:18 lpd)
+ - An embedded CFF font could not be larger than 64K. Fixes
+SourceForge #445400. (gdevpsf2.c [1.15]: 2001/07/31 06:39:06 lpd)
+ - For CIEBasedDEF(G) color spaces the interpolated values from the
+Table need to be scaled to the range given by RangeABC. Fixes SourceForge
+bug #440278 reported by Artifex customer #10. (gsciemap.c [1.6]: 2001/08/03
+15:26:35 rayjj)
+ - Correct a problem with white lines appearing in an image at or
+near band boundaries. Problem caused by different handling for the last
+image pixel at a band boundary versus the remaining pixels. Replaced it with
+uniform handling. Fixes SourceForge bug #436899 reported by Artifex customer
+#150. Also included are three lines of source code clean up in the same
+section. (gxicolor.c [1.3]: 2001/08/06 21:22:31 dancoby)
+ - Writing a Type 2 font subset with undefined glyphs in the Encoding
+produced invalid output. Fixes SourceForge #451399. (gdevpsf.h [1.10],
+gdevpsfu.c [1.7]: 2001/08/16 13:36:37 lpd)
+ - The problem was a rangecheck error being reported in
+.setdevicenspace with PDF files. The cause of the problem was not allowing
+multiple copies of the name /None in DeviceN colorant specification. This is
+the first of two fixes for SF bugs 427165 (customer #1110) and 438682.
+(gscdevn.c [1.6], gscspace.h [1.8]: 2001/08/21 23:52:36 dancoby)
+ - Most of the Type 1 hinting code was executed even when hinting was
+disabled. Part 2 of a two-part fix for SourceForge #451456.
+(gxhint3.c [1.3]: 2001/08/29 19:04:55 lpd)
+ - Quark Xpress turns off garbage collection with -2 vmreclaim when
+embedding EPS files which can lead to rampant allocation that is only
+reclaimed when GC is reenabled. When the GC is disabled, reduce the
+threshold from 2 Gb to 8 Mb. Fixes SourceForge bugs: 444370 and 438676.
+(gsalloc.c [1.10]: 2001/09/05 17:54:31 rayjj)
+ - Fixes some typos in the comment for FORCE_GC_LIMIT.
+(gsalloc.c [1.11]: 2001/09/05 18:03:39 lpd)
+ - Copying a parameter list failed to copy persistent aggregates if
+the target list used a different allocator from the source list, possibly
+causing crashes at 'restore'. Fixes SourceForge #461007. (gsparamx.c [1.4]:
+2001/09/14 04:23:11 lpd)
+ - The sin and cos operators in Type 4 (PostScript Calculator)
+Functions expected their argument in radians, not degrees. (gsfunc4.c [1.7]:
+2001/09/17 06:01:12 lpd)
+ - Fix for MS-Windows graphics library. Remove references to
+interpreter from gp_check_interrupts function in library. Make gslib.c
+access gs_stdin not stdin. Correct the build paths for graphics devices. Add
+missing graphics devices. (gslib.c [1.5]: 2001/09/22 07:07:02 ghostgum)
+
+Committing in . Modified Files: gs/icclib/icc.c gs/src/gdevpdf.c
+gs/src/gp_vms.c gs/src/gsnogc.c gs/src/icclib.mak gs/src/openvms.mmk
+gs/src/x_.h Added Files: gs/src/vms_x_fix.h Patches for OpenVMS
+(gsnogc.c [1.7]: 2001/04/20 09:56:22 joukj)
+
+Changes gp_open_scratch_file() to use mkstemp() rather than mktemp() on gcc
+builds, which avoids warnings. Adds CAPOPT variable to unix-gcc.mak to
+select which function is used, so that builds will still succeed on systems
+that don't have mkstemp(). (gp_unifs.c [1.5]: 2001/05/07 19:05:46 jackiem)
+
+This fixes a minor omission that prevents ghostscript from building on at
+least some platforms. After an #ifndef, a #define isn't done.
+(gsptype2.h [1.4]: 2001/05/11 23:12:11 jackiem)
+
+fix: If the ICC profile fails to load completely, or is missing a WhitePoint
+a valid default is needed to prevent a divide by zero. The WhitePoint is the
+same as the ICC default illuminant, D50. SourceForge bug 432130 for Artifex
+customer #150 as well as bug 427156, customers #880 and #1110 and bug
+414984. (gsicc.c [1.3]: 2001/06/12 15:32:20 rayjj)
+
+If an ICC color space failed to load, Acrobat Reader uses the alternate
+color space. Previous implementation ignored errors during load and used the
+partial ICC space. This change signals an error and uses the alternate space
+by catching the error in a stopped context in the interpreter.
+(gsicc.c [1.4]: 2001/06/12 16:02:39 rayjj)
+
+Patch from Mr. Toshiya Suzuki : Implementing multi-dimensional CID ranges,
+and fixing bugs about decoding text string with CID font : (1) when GS
+consumes undefined byte sequence (which cannot be mapped to some glyphs), GS
+aborts. (2) when selected CID font lacks the glyph for requested CID, GS
+aborts. (3) "notdefrange" defines SINGLE CID for undefined byte sequences in
+specified range, but current GS implementation take it as an offset to
+calculate MULTIPLE CID. (4) "cidrange" operators accept only full range
+specification (&lt;0000&gt; to &lt;FFFF&gt;) or 8 bit width range
+(&lt;xxyy&gt; to &lt;xxzz&gt;). Source Forge bug #415163. (gdebug.h [1.3],
+gsfcmap.c [1.14], gsmisc.c [1.12], gxfcmap.h [1.8]: 2001/06/16 19:02:32
+igorm)
+
+Notes that the 'foreign' member of the vm_spaces.memories allocator array is
+not used (always zero). (gsgc.h [1.3]: 2001/06/17 04:03:52 lpd)
+
+Makes embedded CFF fonts in PDF files omit the FontBBox if it is [0 0 0 0].
+This should only be a minor optimization, but SourceForge bug #428595 claims
+that Acrobat Reader cares. (gdevpsf2.c [1.13]: 2001/07/06 05:17:31 lpd)
+
+Changed debugging flag variables to const. (gshtscr.c [1.6],
+gsmdebug.h [1.3], gxchar.c [1.5], gxclimag.c [1.3], gxclip.c [1.4]:
+2001/08/01 16:21:34 stefan911)
+
+Changed fill patterns for unallocated memory to const (gsmemory.c [1.3]:
+2001/08/02 00:12:08 stefan911)
+
+These changes were originally put into the GS_6_5 branch on 2001/03/13. They
+are needed for using the current version of teh graphics library with the
+PCL6 code. Short description of changes: stat_.h: Added definition of
+stat_is_dir for use with MSVC. Not used in Ghostscript. gsptype1.c: Changes
+in image_PaintProc. This routine is used in gs_makepixmappattern.
+gs_makepixmappattern is only used in test8 (in gslib.c - a test module) and
+gs_makebitmappattern_xform. gs_makebitmappatern_xform is not used in
+Ghostscript. It is used in pcl6. (gsptype1.c [1.3]: 2001/08/07 22:13:29
+dancoby)
+
+Improves documentation for gs_string and gs_bytestring types; adds
+gs_free_[const_]bytestring procedures. (gsmemory.c [1.4], gsmemory.h [1.3],
+gstypes.h [1.3]: 2001/08/25 06:46:21 lpd)
+
+Speed up reading stdin when using callouts. Add platform-specific functions
+for reading stdin, to allow non-blocking reading of stdin if supported.
+Fixes Sourceforge bug #416973. (gp.h [1.7], unistd_.h [1.3]: 2001/09/15
+08:48:33 ghostgum)
+
+Improves poor performance of shadings in some cases, notably Coons01.ps.
+Long, thin triangles are now cut in half, rather than into four smaller
+triangles. Thus, the mesh is more regular. (gxshade4.c [1.5]: 2001/09/22
+16:15:43 raph)
+
+Updates version and date in documentation in preparation for 7.02
+pre-release. (gscdef.c [1.14]: 2001/09/22 16:26:22 raph)
+
+</pre><h2><a name="7.02-Other"></a>Other</h2><pre>
+
+Committing in . Modified Files: gs/icclib/icc.c gs/src/gdevpdf.c
+gs/src/gp_vms.c gs/src/gsnogc.c gs/src/icclib.mak gs/src/openvms.mmk
+gs/src/x_.h Added Files: gs/src/vms_x_fix.h Patches for OpenVMS
+(icclib/icc.c [1.4], vms_x_fix.h [1.1]: 2001/04/20 09:56:22 joukj)
+
+This is the fix for [ #425014 ] Compile error on AIX in icc.c. The control87
+is not defined on AIX systems (or probably on anything but x86 systems).
+This was suggested by Graeme Gill. (icclib/icc.c [1.5]: 2001/06/06 08:14:14
+dancoby)
+
+branches: 1.1.2; Adds initial support for macos. (gp_mac.h [1.1]: 2001/07/18
+20:20:50 giles)
+
+branches: 1.1.2; Adds the remaining macos source files (macsysstat.h [1.1],
+macsystypes.h [1.1]: 2001/07/18 20:27:39 giles)
+
+Adds generated macos build files to .cvsignore (.cvsignore [1.2]: 2001/07/31
+20:03:20 giles)
+
+<hr>
+
+<h1><a name="Version7.00"></a>Version 7.00 (2001-04-08)</h1>
+
+<p>
+This is the official 7.0 Ghostscript release. Most of the changes
+since 6.64 are quite minor, with the exception of one fix for ICC
+profile support.
+
+<p>
+All problems registered on SourceForge numbered 414588 or lower are
+closed, except for the following: 209350 215256, 219798, 221582,
+222534, 222727, 224056, 224863, 226477, 226584, 227684, 228180,
+228641, 230694, 231390, 404255, 404482, 405342, 406285, 406689,
+406696, 406979, 407342, 409887, 410371, 411753, 413114, 413669,
+413747, 414022, 414104, 414588.
+
+<h3><a name="7.00_Incompatible_changes"></a>Incompatible changes</h3>
+
+<pre>
+</pre>
+
+<h2><a name="7.00-Documentation"></a>Documentation</h2><pre>
+
+Updates broken and obsolete offsite links in the documenation.
+(doc/Devices.htm [1.28], doc/Fonts.htm [1.18], doc/Language.htm [1.30],
+doc/Lib.htm [1.11], doc/Maintain.htm [1.17], doc/Make.htm [1.29],
+doc/New-user.htm [1.26], doc/Projects.htm [1.29], doc/Ps2epsi.htm [1.12],
+doc/Readme.htm [1.27]: 2001/04/08 04:42:55 giles)
+
+Updates version number and date in preparation for 7.00 release.
+(doc/API.htm [1.9], doc/Bug-form.htm [1.20], doc/Bug-info.htm [1.17],
+doc/C-style.htm [1.17], doc/Commprod.htm [1.13], doc/Copying.htm [1.11],
+doc/Current.htm [1.11], doc/DLL.htm [1.13], doc/Develop.htm [1.38],
+doc/Devices.htm [1.29], doc/Drivers.htm [1.19], doc/Fonts.htm [1.19],
+doc/Helpers.htm [1.15], doc/History1.htm [1.11], doc/History2.htm [1.11],
+doc/History3.htm [1.11], doc/History4.htm [1.11], doc/History5.htm [1.13],
+doc/History6.htm [1.27], doc/Htmstyle.htm [1.16], doc/Install.htm [1.22],
+doc/Issues.htm [1.9], doc/Language.htm [1.31], doc/Lib.htm [1.12],
+doc/Maintain.htm [1.18], doc/Make.htm [1.30], doc/New-user.htm [1.27],
+doc/News.htm [1.84], doc/Projects.htm [1.30], doc/Ps-style.htm [1.11],
+doc/Ps2epsi.htm [1.13], doc/Ps2pdf.htm [1.29], doc/Psfiles.htm [1.19],
+doc/README [1.10], doc/Readme.htm [1.28], doc/Release.htm [1.35],
+doc/Source.htm [1.11], doc/Tester.htm [1.12], doc/Unix-lpr.htm [1.11],
+doc/Use.htm [1.27], doc/Xfonts.htm [1.11], doc/gs-vms.hlp [1.10],
+man/dvipdf.1 [1.8], man/font2c.1 [1.8], man/gs.1 [1.8], man/gslp.1 [1.8],
+man/gsnd.1 [1.8], man/pdf2dsc.1 [1.8], man/pdf2ps.1 [1.10],
+man/pdfopt.1 [1.8], man/pf2afm.1 [1.8], man/pfbtopfa.1 [1.9],
+man/printafm.1 [1.8], man/ps2ascii.1 [1.8], man/ps2epsi.1 [1.8],
+man/ps2pdf.1 [1.12], man/ps2pdfwr.1 [1.9], man/ps2ps.1 [1.15],
+man/wftopfa.1 [1.8]: 2001/04/09 06:20:01 raph)
+
+</pre><h2><a name="7.00-Procedures"></a>Procedures</h2><pre>
+
+Completes the change of default X directories to /usr/X11R6. Last commit on
+this was inadvertently incomplete. (unix-gcc.mak [1.19],
+unixansi.mak [1.14]: 2001/04/07 23:34:40 raph)
+
+Updates version number and date in preparation for 7.00 release.
+(version.mak [1.33]: 2001/04/09 06:20:03 raph)
+
+</pre><h2><a name="7.00-Utilities"></a>Utilities</h2><pre>
+
+Fixes problems:
+ - Correct the Unix executable handing of the display device formats
+of 8bit and 24bit per pixel RGB. (dxmain.c [1.3]: 2001/04/08 08:40:29
+ghostgum)
+ - Ghostscript should return to the caller, not exit. Remove exit()
+from gp_do_exit() for all platforms except VMS. (gp_dvx.c [1.4],
+gp_iwatc.c [1.5], gp_os9.c [1.4], gp_unix.c [1.5]: 2001/04/08 08:43:24
+ghostgum)
+
+</pre><h2><a name="7.00-PDF_writer"></a>PDF writer</h2><pre>
+
+Fixes problems:
+ - AR4 doesn't like fonts with empty FontBBox which happens when the
+font contains only space characters. Small BBox causes AR 4 to display a
+hairline. So we use the full BBox. (gdevpdfw.c [1.11]: 2001/04/08 14:12:56
+alexcher)
+
+</pre><h2><a name="7.00-Interpreter"></a>Interpreter</h2><pre>
+
+Fixes problems:
+ - Ghostscript should return to the caller, not exit. Remove exit()
+from gp_do_exit() for all platforms except VMS. (gs.c [1.6]: 2001/04/08
+08:43:24 ghostgum)
+ - Need a cast to (gs_memory_t *) to prevent errors on some
+compliers. Change provided by Nelson H. F. Beebe. (zfdctd.c [1.6]:
+2001/04/09 05:15:57 rayjj)
+ - Setting an ICC color space now invalidates the joint cache, so
+that TransformPQR gets computed. The profile is explicitly loaded so that
+the TransformPQR procedures have access to the white point. Also, the
+photometric interpretation of the hack for /All separation color spaces is
+reversed. Fixes Fixed_Original.pdf from Michael Jahn and Adobe tech note
+5002_EPSF_Spec.pdf. (zicc.c [1.2]: 2001/04/09 06:09:58 raph)
+
+Updates version number and date in preparation for 7.00 release.
+(lib/gs_init.ps [1.34]: 2001/04/09 06:20:03 raph)
+
+</pre><h2><a name="7.00-Library"></a>Library</h2><pre>
+
+Fixes problems:
+ - Setting an ICC color space now invalidates the joint cache, so
+that TransformPQR gets computed. The profile is explicitly loaded so that
+the TransformPQR procedures have access to the white point. Also, the
+photometric interpretation of the hack for /All separation color spaces is
+reversed. Fixes Fixed_Original.pdf from Michael Jahn and Adobe tech note
+5002_EPSF_Spec.pdf. (gscsepr.c [1.9], gsicc.c [1.2], gsicc.h [1.2]:
+2001/04/09 06:09:58 raph)
+
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2001 artofcode LLC.
+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>
diff --git a/Master/xemtex/doc/ghostscript/Htmstyle.htm b/Master/xemtex/doc/ghostscript/Htmstyle.htm
new file mode 100644
index 00000000000..05b4e82ef06
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Htmstyle.htm
@@ -0,0 +1,778 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>HTML coding and style guidelines for Ghostscript documentation</title>
+<!-- $Id: Htmstyle.htm,v 1.18.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>HTML coding and style guidelines for Ghostscript documentation</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#Appearance">Appearance and contents</a>
+<ul>
+<li><a href="#Page_structure">Page structure</a>
+<li><a href="#Links_outside">Links to outside the Ghostscript documentation</a>
+<li><a href="#Images">Images and graphics</a>
+<li><a href="#index.html"><b><tt>index.html</tt></b></a>
+</ul>
+<li><a href="#Large_structure">HTML large structure</a>
+<ul>
+<li><a href="#HTML_head">HTML <b><tt>&lt;head&gt;</tt></b></a>
+<li><a href="#HTML_body">HTML <b><tt>&lt;body&gt;</tt></b></a>
+</ul>
+<li><a href="#Inner_structure">HTML inner structure</a>
+<ul>
+<li><a href="#Structuring_comments">Structuring comments</a>
+<li><a href="#Headers">Headers: <b><tt>&lt;Hn&gt;</tt></b></a>
+<li><a href="#Anchors">Anchors: <b><tt>&lt;a name="..."&gt;</tt></b></a>
+</ul>
+<li><a href="#Text">The presentation of text</a>
+<ul>
+<li><a href="#Text_sections">Sections of text</a>
+<ul>
+<li><a href="#Paragraphs">Paragraphs: <b><tt>&lt;p&gt;</tt></b></a>
+<li><a href="#Blockquote">Indented paragraphs: <b><tt>&lt;blockquote&gt;</tt></b></a>
+<li><a href="#Line_breaks">Explicit line breaks: <b><tt>&lt;br&gt;</tt></b></a>
+<li><a href="#Preformatted_text">Preformatted text: <b><tt>&lt;pre&gt;</tt></b></a>
+</ul>
+<li><a href="#Use_of_fonts">The use of different font faces</a>
+</ul>
+<li><a href="#Lists">Lists: <b><tt>&lt;ul&gt;, &lt;ol&gt;, &lt;dl&gt;</tt></b></a>
+<li><a href="#Tables">Tables: <b><tt>&lt;table&gt;</tt></b></a>
+<ul>
+<li><a href="#Readability">Readability for the user and the HTML writer</a>
+<li><a href="#Table_guidelines">Specific guidelines for coding tables</a>
+<li><a href="#Typical_table">HTML code for typical tables</a>
+</ul>
+<li><a href="#Unused_tags">Tags not used</a>
+<li><a href="#New_document">Creating a new document</a>
+<ul>
+<li><a href="#File_name">Name the new document in 8+3 format</a>
+<li><a href="#Plagiarize">Use an existing document as a model</a>
+<li><a href="#Readme_material">Write new references to go in <b><tt>Readme.htm</tt></b></a>
+<li><a href="#New_doc_other">Other considerations</a>
+</ul>
+<li><a href="#Miscellany">Miscellany</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+The most important intention in casting Ghostscript's documentation into
+Hypertext Markup Language (HTML) from simple text form is to improve its
+usefulness greatly to those who use, install, and build Ghostscript:
+everything else is details. The wide spread of World Wide Web browsers now
+makes it possible to distribute documents which are not only readable as
+text, but also richly cross-linked as hypertext. Using hypertext through a
+browser can reduce the effort required to find and use the information
+people often need in order to use Ghostscript.
+
+<p>
+The remainder of this document expresses the guidelines used to create the
+HTML form of the Ghostscript documentation. The guidelines are intended to
+encourage
+
+<ul>
+<li>documents that are easy to read and understand in all of the most-used
+forms: on screen with a browser, printed by a browser, or as plain text;
+
+<li>correct HTML that conforms to prevailing standards;
+
+<li>consistent HTML coding among all Ghostscript's documents; and
+
+<li>HTML documents that are as simple as possible in light of their
+contents; free of difficult, little-used, or proprietary constructs; and
+easy to understand and modify.
+</ul>
+
+<p>
+Here are those guidelines.
+
+<hr>
+
+<h2><a name="Appearance"></a>Appearance and contents</h2>
+
+<p>
+What the user sees browsing the documentation, and what a document
+developer or editor sees working with it, are different. This section is
+about what the user sees.
+
+<h3><a name="Page_structure"></a>Page structure</h3>
+
+<p>
+A Ghostscript document in HTML form should consist of
+
+<ol>
+<li>a visual header containing
+<ol type=a>
+<li>a conspicuous highlighted headline;
+<li>a table of contents;
+<li>"hints": references to other useful documents, always including
+<a href="Readme.htm">Readme.htm</a>;
+</ol>
+<li>the substantive contents;
+<li>a visual trailer consisting entirely of
+<ol type=a>
+<li>standard copyright and licensing text;
+<li>the Ghostscript version number; and
+<li>the date when the document was last modified.
+</ol>
+</ol>
+
+<p>
+This document is an example of this standard visible structure. Also see
+below about "<a href="#Structuring_comments">Structuring comments</a>" in
+HTML source code.
+
+<p>
+Where it makes sense to modify the standard structure to make the document
+more usable, do that. See
+<a href="Readme.htm"><b><tt>Readme.htm</tt></b></a> for an example: the
+introductory material at the beginning of the visible header, before the
+table of contents.
+
+<h3><a name="Links_outside"></a>Links to outside the Ghostscript documentation</h3>
+
+<p>
+Links to sites and documents outside the ghostscript distribution
+must carry the <code>class="offsite"</code> attribute and value. This signals special
+formatting to the stylesheet to assist users reading offline.
+
+<p>
+Avoid gratuitous commercial links; for instance, link the title of a book
+to its publisher, not to one particular on-line bookseller. See
+<a href="Language.htm#Capabilities"><b><tt>Language.htm</tt></b></a> for an
+example, the reference to the <em>PostScript Language Reference
+Manual</em>.
+
+<p>
+Similarly, where you have a choice, refer to free software rather than
+commercial products. See
+<a href="Make.htm#Third-party_libraries">Make.htm</a> for an example, the
+reference to <a href="Make.htm#Third-party_libraries">InfoZip
+<b><tt>unzip</tt></b></a> (where many commercial products provide similar
+functions).
+
+<h3><a name="Images"></a>Images and graphics</h3>
+
+<p>
+Use no graphics or images. The documents are text-only, so nothing is lost
+when a document is converted into ASCII text. This is an explicit initial
+design goal of the HTML documentation.
+
+<h3><a name="index.html"></a><b><tt>index.html</tt></b></h3>
+
+<p>
+<b><tt>index.html</tt></b> is not a part of the visible Ghostscript
+documentation itself, but when it is placed with all the
+<b><tt>*.htm</tt></b> files in a directory and a browser refers to the
+directory name alone, most servers are configured to deliver a file named
+<b><tt>index.html</tt></b> by default. This one does nothing except
+immediately to open the introductory Ghostscript document
+<a href="index.html"><b><tt>Readme.htm</tt></b></a>. This is intended to
+make life easier for both webmasters and users.
+
+<hr>
+
+<h2><a name="Large_structure"></a>HTML large structure</h2>
+
+<h3><a name="HTML_head"></a>HTML <b><tt>&lt;head&gt;</tt></b></h3>
+
+<p>
+Besides the essential HTML structure elements, Ghostscript HTML document's
+<b><tt>&lt;head&gt;</tt></b> consists of three elements in this order:
+
+<ol>
+<li>A <b><tt>&lt;title&gt;</tt></b>, usually the same text as the
+<a href="#Headline">headline</a>
+
+<li>An RCS identification line giving the name of the file in an HTML
+comment:
+
+<blockquote>
+<!-- The next line must not contain the literal string $,I,d,:! -->
+<b><tt>&lt;!-- $Id</tt><tt>: </tt></b><b><em>{file name}</em></b><b><tt>.htm $ --&gt;</tt></b>
+</blockquote>
+
+<li>For documents converted from another form, an HTML comment line giving
+the name of the original file before it was edited and converted to HTML:
+
+<blockquote>
+<b><tt>&lt;!-- Originally: </tt></b><b><em>{file name}</em></b><b><tt> --&gt;</tt></b>
+</blockquote>
+</ol>
+
+<h3><a name="HTML_body"></a>HTML <b><tt>&lt;body&gt;</tt></b></h3>
+
+<p>
+A Ghostscript HTML document's <b><tt>&lt;body&gt;</tt></b> consists of five
+elements in this order:
+
+<ol>
+<li><a name="Headline"></a>The <b><em>headline</em></b> is conspicuous text
+at the top of the page, usually the same as the
+<a href="#Structure_head"><b><tt>&lt;title&gt;</tt></b></a> text. It is
+always in a table whose purpose is to provide a colored background using
+<b><tt>bgcolor</tt></b>, going the full width of the page:
+
+<blockquote>
+<b><tt>&lt;p&gt;&lt;table width="100%" border="0"&gt;<br>
+&lt;tr&gt;&lt;th align="center" bgcolor="#CCCC00"&gt;&lt;font size=6&gt;</tt></b><br>
+<b><em>{Text}</em></b><br>
+<b><tt>&lt;/font&gt;<br>
+&lt;/table&gt;</tt></b>
+</blockquote>
+
+<li><a name="Table_of_contents"></a>
+The <b><em>table of contents</em></b> consists of nested unordered
+lists <b><tt>&lt;ul&gt;</tt></b>, in most documents assembled strictly from
+the <b><tt>&lt;Hn&gt;</tt></b> headers. The levels of nesting in the table
+of contents correspond to the level numbers of the headers.
+
+<li>The <b><em>hint</em></b> is a short section suggesting where to look
+for other related information. With very few exceptions this always
+includes a reference and link to
+<a href="Readme.htm"><b><tt>Readme.htm</tt></b></a>, but may include other
+suggestions and references.
+
+<li>The substance of the document.
+
+<li>The <b><em>trailer</em></b> contains, in a small font size,
+
+<ol type=a>
+<li>the <b><em>copyright notice</em></b> and other legal boilerplate text
+<li>the <b><em>version number</em></b> of Ghostscript and the
+<b><em>date</em></b> when the file was last modified.
+</ol>
+</ol>
+
+<p>
+This document for an example of that structure.
+
+<hr>
+
+<h2><a name="Inner_structure"></a>HTML inner structure</h2>
+
+<h3><a name="Structuring_comments"></a>Structuring comments</h3>
+
+<p>
+Special comment lines within the HTML files mark internally the visible
+sections of the document. They make it easy for both document developers
+and programs to handle the HTML code. Each of these comments is exactly 80
+characters wide, and each important section of a document is bracketed by a
+unique beginning and ending pair. View the source code of this document
+for an example of these structuring comments. The sections they mark are:
+
+<ol>
+<li>the <b><em>visible header</em></b>
+<ol type=a>
+<li>the <a href="#Headline"><b><em>headline</em></b></a>
+<li>the <b><em>table of contents</em></b>
+<li>the "see also" <b><em>hints</em></b>
+</ol>
+<li>the <b><em>body</em></b>
+<li>the <b><em>trailer</em></b>
+</ol>
+
+<h3><a name="Headers"></a>Headers: <b><tt>&lt;Hn&gt;</tt></b></h3>
+
+<p>
+Give a header <b><tt>&lt;Hn&gt;</tt></b> this structure:
+
+<blockquote><b><tt>
+&lt;h2&gt;&lt;a name="Head_anchor"&gt;&lt;/a&gt;Header text&lt;/h2&gt;
+</tt></b></blockquote>
+
+<p>
+That is, the opening header tag, an anchor, the header text, and the
+closing tag.
+
+<p>
+Represent every header in the table of contents, linked
+<b><tt>&lt;a&nbsp;href="#..."&gt;</tt></b>...<b><tt>&lt;/a&gt;</tt></b> to
+the header. Of course, the headers are also convenient linkage points for
+references from other documents.
+
+<h3><a name="Anchors"></a>Anchors: <b><tt>&lt;a name="..."&gt;</tt></b></h3>
+
+<p>
+Give an anchor a name consisting only of letters, digits, dots
+("<b><tt>.</tt></b>"), hyphens ("<b><tt>-</tt></b>"), and underscores
+("<b><tt>_</tt></b>"), but not white space or other punctuation marks.
+This ensures that the name is readable and that an entire name always
+appears on a single line of HTML source both where it's defined and
+everywhere it's used, making it simple to find anchors by text search in
+the HTML source code.
+
+<p>
+Choose anchor names to be readable and meaningful in the HTML source code.
+For instance:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Use this form
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>... <b><em>NOT</em></b> this form
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>&lt;a&nbsp;name="Image_formats"&gt;&lt;/a&gt;</tt></b>
+ <td>&nbsp;
+ <td><b><tt>&lt;a&nbsp;name="Imgfts"&gt;&lt;/a&gt;</tt></b>
+</table></blockquote>
+
+<p>
+Anchors should be empty, that is
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Use this form
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>... <b><em>NOT</em></b> this form
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>&lt;a&nbsp;name="..."&gt;&lt;/a&gt;</tt></b>
+ <td>&nbsp;
+ <td><b><tt>&lt;a&nbsp;name="..."&gt;</tt></b><b><em>anything</em></b><b><tt>&lt;/a&gt;</tt></b>
+</table></blockquote>
+
+<p>
+<a name="Anchor_placement"></a>Place an anchor within a paragraph (indented
+paragraph, list item, head, etc.) and at its beginning.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Use this form
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>... <b><em>NOT</em></b> this form
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>&lt;p&gt;&lt;a&nbsp;name="..."&gt;&lt;/a&gt;</tt></b>
+ <td>&nbsp;
+ <td><b><tt>&lt;p&gt;</tt></b><b><em>&nbsp;...text...&nbsp;</em></b><b><tt>&lt;a&nbsp;name="..."&gt;&lt;/a&gt;</tt></b>
+<tr valign=top> <td><b><tt>&lt;p&gt;&lt;a&nbsp;name="..."&gt;&lt;/a&gt;</tt></b>
+ <td>&nbsp;
+ <td><b><tt>&lt;a&nbsp;name="..."&gt;&lt;/a&gt;&lt;p&gt;</tt></b>
+<tr valign=top> <td><b><tt>&lt;li&gt;&lt;a&nbsp;name="..."&gt;&lt;/a&gt;</tt></b>
+ <td>&nbsp;
+ <td><b><tt>&lt;a&nbsp;name="..."&gt;&lt;/a&gt;&lt;li&gt;</tt></b>
+</table></blockquote>
+
+<hr>
+
+<h2><a name="Text"></a>The presentation of text</h2>
+
+<h3><a name="Text_sections"></a>Sections of text</h3>
+
+<h4><a name="Paragraphs"></a>Paragraphs: <b><tt>&lt;p&gt;</tt></b></h4>
+
+<p>
+Define unindented paragraphs with <b><tt>&lt;p&gt;</tt></b>, never with
+explicit line breaks <b><tt>&lt;br&gt;</tt></b>, and make them
+ragged-right, not right-filled or centered. Put the paragraph tag
+<b><tt>&lt;p&gt;</tt></b> on a line alone, except when it is
+<a href="#Anchor_placement">followed immediately by an anchor</a>.
+Don't place the anchor before the paragraph tag.
+
+<h4><a name="Blockquote"></a>Indented paragraphs: <b><tt>&lt;blockquote&gt;</tt></b></h4>
+
+<p>
+Define indented paragraphs with <b><tt>&lt;blockquote&gt;</tt></b>. Avoid
+elaborate nested indentation -- that is, more than two levels. It is
+generally a poor idea to try to make indentation carry too much weight of
+meaning for text, so use indentation simply to separate visual elements for
+easier reading.
+
+<h4><a name="Line_breaks"></a>Explicit line breaks: <b><tt>&lt;br&gt;</tt></b></h4>
+
+<p>
+Use explicit line breaks <b><tt>&lt;br&gt;</tt></b> sparingly, and never as
+a substitute for paragraph tags. Do use them in
+
+<ul>
+<li>multi-line addresses
+<li>formatted coding examples
+<li>table entries, sparingly
+</ul>
+
+<h4><a name="Preformatted_text"></a>Preformatted text: <b><tt>&lt;pre&gt;</tt></b></h4>
+
+<p>
+Use preformatted text <b><tt>&lt;pre&gt;</tt></b> exclusively for material
+that must be presented with exact spacing in a monospaced font, such as
+extended coding examples. Where extended preformatted text seems likely to
+be wider than a typical browser window, reduce the font size:
+
+<blockquote>
+<b><tt>&lt;font size="-1"&gt;&lt;pre&gt;</tt></b><br>
+<b><em>...&nbsp;Wide preformatted text&nbsp;...</em></b><br>
+<b><tt>&lt;/pre&gt;&lt;/font&gt;</tt></b>
+</blockquote>
+
+<h3><a name="Use_of_fonts"></a>The use of different font faces</h3>
+
+<p>
+Do not use named fonts. Use only standard markup to specify fonts, as
+shown in this table.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Use of fonts</font><hr>
+<tr valign=bottom>
+ <th align=left>Tag
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Used for
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>&lt;address&gt;</tt></b>
+ <td>&nbsp;
+ <td>Addresses in running text
+<tr valign=top> <td><b><tt>&lt;b&gt;</tt></b>
+ <td>&nbsp;
+ <td>Emphasis everywhere
+<tr valign=top> <td><b><tt>&lt;em&gt;</tt></b>
+ <td>&nbsp;
+ <td>Emphasis, usually in running text; with <b><tt>&lt;b&gt;</tt></b>, strong emphasis
+<tr valign=top> <td><b><tt>&lt;font size=</tt></b><b><em>N</em></b><b><tt>&gt;</tt></b>
+ <td>&nbsp;
+ <td>Table headings, extended <b><tt>&lt;pre&gt;</tt></b> examples
+<tr valign=top> <td><b><tt>&lt;pre&gt;</tt></b>
+ <td>&nbsp;
+ <td>Preformatted text (to control spacing)
+<tr valign=top> <td><b><tt>&lt;small&gt;</tt></b>
+ <td>&nbsp;
+ <td>Superscripts (smaller than <b><tt>&lt;font size="-1"&gt;</tt></b>)
+<tr valign=top> <td><b><tt>&lt;sup&gt;</tt></b>
+ <td>&nbsp;
+ <td>Superscripts
+<tr valign=top> <td><b><tt>&lt;tt&gt;</tt></b>
+ <td>&nbsp;
+ <td>With <b><tt>&lt;b&gt;</tt></b>, used for specific names of
+ code, programs, and data in running text, and in short examples
+</table></blockquote>
+
+<hr>
+
+<h2><a name="Lists"></a>Lists: <b><tt>&lt;ul&gt;, &lt;ol&gt;, &lt;dl&gt;</tt></b></h2>
+
+<p>
+Don't over-use lists: instead simply use clear wording in running text
+wherever possible. Use a list where the special formatting improves the
+material's clarity and readability.
+
+<p>
+Most simple lists should be unordered (bulleted) lists
+<b><tt>&lt;ul&gt;</tt></b>. Use an ordered (numbered or alphabetized) list
+<b><tt>&lt;ol&gt;</tt></b> only where the exact ordering or an exact count
+is important.
+
+<p>
+Where entries in a descriptive list <b><tt>&lt;dl&gt;</tt></b> contain
+extended descriptions <b><tt>&lt;dd&gt;</tt></b> -- especially if the
+descriptions contain paragraph breaks or tables -- improve the spacing
+between entries by making each entry a separate list. That is, enclose
+each entry in a separate list to give it more readable spacing, rather than
+putting many <b><tt>&lt;dt&gt;...&lt;dd&gt;...</tt></b> entries in a single
+list:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Use this form
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>... <b><em>NOT</em></b> this form
+<tr> <td colspan=3><hr>
+<tr> <td valign=top>
+ <b><tt>&lt;dl&gt;</tt></b><br>
+ <b><tt>&lt;dt&gt;</tt></b>Term<br>
+ <b><tt>&lt;dd&gt;</tt></b>Description<br>
+ <b><tt>&lt;p&gt;</tt></b>Another paragraph of description<br>
+ <b><tt>&lt;/dl&gt;</tt></b><br>
+ &nbsp;<br>
+ <b><tt>&lt;dl&gt;</tt></b><br>
+ <b><tt>&lt;dt&gt;</tt></b>Another term<br>
+ <b><tt>&lt;dd&gt;</tt></b>Another description<br>
+ <b><tt>&lt;/dl&gt;</tt></b><br>
+ ...<br>
+ <td>&nbsp;
+ <td valign=top>
+ <b><tt>&lt;dl&gt;</tt></b><br>
+ <b><tt>&lt;dt&gt;</tt></b>Term<br>
+ <b><tt>&lt;dd&gt;</tt></b>Description<br>
+ <b><tt>&lt;p&gt;</tt></b>Another paragraph of description<br>
+ <b><tt>&lt;dt&gt;</tt></b>Another term<br>
+ <b><tt>&lt;dd&gt;</tt></b>Another description<br>
+ ...<br>
+ <b><tt>&lt;/dl&gt;</tt></b>
+</table></blockquote>
+
+<p>
+This may be more work for the HTML writer, but the results for the reader
+are often much better.
+
+<hr>
+
+<h2><a name="Tables"></a>Tables: <b><tt>&lt;table&gt;</tt></b></h2>
+
+<h3><a name="Readability"></a>Readability for the user and the HTML writer</h3>
+
+<p>
+Format tables to be as readable as possible both with a browser and when
+converted to plain text. Browsers and converters of all kinds handle
+tables idiosyncratically, so there seems to be more art than science to
+reaching this end, which accounts for all the detail in the guidelines for
+tables: it is the reason for all the uses of background color
+<b><tt>bgcolor</tt></b>, horizontal rules <b><tt>&lt;hr&gt;</tt></b>, and
+explicit spacing.
+
+<p>
+Secondarily, arrange HTML source code for tables to be readable by the
+writer and developer.
+
+<h3><a name="Table_guidelines"></a>Specific guidelines for coding tables</h3>
+
+<ul>
+<li>Large tables have heads with the same background color as the page's
+<a href="#Headline">headline</a>. (Color is used only in tables and only
+this way, and it is the same color everywhere. In consideration of
+differences of color vision, the color is chosen so that normal black text
+contrasts with a brighter background, and the color itself against white.)
+
+<li>Do not use borders for tables; they almost invariably only clutter the
+appearance without adding to clarity, and they don't convert well to plain
+text. For visual spacing prefer white space.
+
+<li>Set cell padding and spacing to 0. Use explicit white space for
+readability, not implicit white space.
+
+<li>Begin the code for a new row <b><tt>&lt;tr&gt;</tt></b> on a new line.
+Generally use <b><tt>valign=top</tt></b> to control the placement of text
+in a row for readability with a browser or as plain text.
+
+<li>Code the first column of a row beginning on the same line as the
+beginning of the row, and then begin every other column on a separate line.
+Always precede <b><tt>&lt;td&gt;</tt></b> by a tab character.
+
+<li>Separate two columns of substantive material by a visually empty column
+of nonbreaking spaces for readability. Specify the width of this empty
+column in the first row, and in all other rows give that column a single
+nonbreaking space.
+
+<li>Use horizontal rules and visually empty rows for clarity, but
+sparingly. Be consistent with the existing tables.
+
+<li>Give every cell some contents: put a nonbreaking space in a visually
+empty cell as a placeholder.
+</ul>
+
+<h3><a name="Typical_table"></a>HTML code for typical tables</h3>
+
+<p>
+The HTML source code for a typical large table should look like this:
+
+<blockquote>
+<pre>&lt;table cellpadding=0 cellspacing=0&gt;
+&lt;tr&gt;&lt;th colspan=5 bgcolor="#CCCC00"&gt;&lt;hr&gt;&lt;font size="+1"&gt;Large&nbsp;table&lt;/font&gt;&lt;hr&gt;
+&lt;tr&gt; &lt;th align=left&gt;...
+ &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
+ &lt;th align=left&gt;...
+ &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
+ &lt;th align=left&gt;...
+&lt;tr&gt; &lt;td&gt;...
+ &lt;td&gt;&amp;nbsp;&amp;nbsp;
+ &lt;td&gt;...
+ &lt;td&gt;&amp;nbsp;
+ &lt;td&gt;...
+...
+&lt;/table&gt;
+</pre></blockquote>
+
+<p>
+The HTML source code for a typical small table should look like this:
+
+<blockquote>
+<pre>&lt;table cellpadding=0 cellspacing=0&gt;
+&lt;tr&gt; &lt;td&gt;...
+ &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
+ &lt;td&gt;...
+&lt;tr&gt; &lt;td&gt;...
+ &lt;td&gt;&amp;nbsp;
+ &lt;td&gt;...
+...
+&lt;/table&gt;
+</pre></blockquote>
+
+<hr>
+
+<h2><a name="Unused_tags"></a>Tags not used</h2>
+
+<p>
+Don't use optional tags (ones not required by the HTML standard). These
+include <b><tt>&lt;/dd&gt;</tt></b>, <b><tt>&lt;/dt&gt;</tt></b>,
+<b><tt>&lt;/li&gt;</tt></b>, <b><tt>&lt;/p&gt;</tt></b>,
+<b><tt>&lt;/tr&gt;</tt></b>, <b><tt>&lt;/th&gt;</tt></b>, and
+<b><tt>&lt;/td&gt;</tt></b>.
+
+<hr>
+
+<h2><a name="New_document"></a>Creating a new document</h2>
+
+<h3><a name="File_name"></a>Name the new document in 8+3 format</h3>
+
+<p>
+If you create a new Ghostscript HTML document, choose for it a name in 8+3
+format for cross-platform compabitility:
+
+<blockquote>
+<b><em>Name</em></b><b><tt>.htm</tt></b>
+</blockquote>
+
+<p>
+where "<b><em>Name</em></b>" is no more than eight characters.
+
+<p>
+Begin the new file name with an upper-case letter like the existing names,
+which are in mixed case beginning with upper-case letters. Use spelling,
+not case, to distinguish between names: that is, don't create a new file
+whose name differs from an existing one only by the difference between
+upper and lower case, because some platforms can't store two such files.
+
+<h3><a name="Plagiarize"></a>Use an existing document as a model</h3>
+
+<p>
+To create an entirely new Ghostscript document, plagiarize this one for the
+<a href="#Structuring_comments">structuring comments</a> and other useful
+parts. Then, using the <a href="#Structuring_comments">structuring
+comments</a> as a guide to the sections of the document (in a text editor,
+search for "<b><tt>&lt;!--&nbsp;[</tt></b>"):
+
+<ul>
+<li>insert your own HTML title and <a href="#Headline">headline</a> (they
+should ordinarily be the same text) in place of the old ones;
+
+<li>insert your own RCS <b><tt>$Id</tt></b> in place of the old one in the
+<a href="#Structure_head">HTML header</a>;
+
+<li>delete the old entries in the <a href="#Table_of_contents">table of
+contents</a>;
+
+<li>keep the hint paragraph;
+
+<li>delete the entire contents section between the structuring comments;
+and
+
+<li>in the trailer, update the version number and date.
+</ul>
+
+<p>
+You now have a template document ready for new contents.
+
+<h3><a name="Readme_material"></a>Write new references to go in <b><tt>Readme.htm</tt></b></h3>
+
+<p>
+Write material to go in <a href="Readme.htm"><b><tt>Readme.htm</tt></b></a>
+that describes the new document, and links to it from two sections:
+
+<ul>
+<li>the <a href="Readme.htm#Theme_roadmap">thematic section</a> and
+
+<li>the descriptions of documentation
+<a href="Readme.htm#Ordered_roadmap">arranged by file name</a>.
+</ul>
+
+<h3><a name="New_doc_other"></a>Other considerations</h3>
+
+<p>
+Follow the other guidelines here, including which elements of the
+document should go in which section according to the structuring comments,
+and <a href="#Headers">anchoring every <b><tt>&lt;Hn&gt;</tt></b>
+header</a>. As you create text and headers, you will want to rebuild the
+<a href="#Table_of_contents">table of contents</a> from the headers
+occasionally.
+
+<p>
+Pete Kaiser &lt;<a href="mailto:kaiser@acm.org">kaiser@acm.org</a>&gt;
+wrote a package of GNU emacs functions specifically to handle Ghostscript
+HTML documentation, including functions to build a table of contents from
+headers in an HTML document, and to build and maintain tables and
+other structures built along the guidelines in this document.
+
+<hr>
+
+<h2><a name="Miscellany"></a>Miscellany</h2>
+
+<p>
+Use <b><tt>&lt;&gt;</tt></b> to bracket links to visible email addresses
+(<b><tt>mailto</tt></b>) in running text. This makes it easy for a user to
+cut and paste the entire name and address into another document or mailer,
+for instance
+
+<blockquote>
+Free Software Foundation &lt;<a href="mailto:gnu@gnu.org">gnu@gnu.org</a>&gt;
+</blockquote>
+
+<p>
+For exponentiation use "<b><tt>^</tt></b>" (not "**" or "exp()") plus
+writing the exponent as a superscript in <b><tt>&lt;small&gt;</tt></b>
+size:
+
+<blockquote>
+Something<b><tt>^&lt;sup&gt;</tt></b><b><tt>&lt;small&gt;</tt></b>exponent<b><tt>&lt;/small&gt;&lt;/sup&gt;</tt></b>.
+</blockquote>
+
+<p>
+to look like this:
+
+<blockquote>
+Something<b><tt>^</tt></b><sup><small>exponent</small></sup>
+</blockquote>
+
+<p>
+This is intended for readability both in a browser and as plain text.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Humor.htm b/Master/xemtex/doc/ghostscript/Humor.htm
new file mode 100644
index 00000000000..2df2a61a1b4
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Humor.htm
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Another Ghostscript interpreter</title>
+<!-- $Id: Humor.htm,v 1.3.2.1 2002/02/22 19:45:54 ray Exp $ -->
+<!-- Originally: humor.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Another Ghostscript interpreter</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document contains a humorous message, verbatim except for
+minor spelling corrections, received from a friend out in network-land.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<hr>
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<p>
+Regarding Ghostscript: I hate to say this to you but I've already
+implemented a Ghostscript interpreter. I'm happy to see that someone else
+has recognized the need dead people have for computers. I have included an
+example of the output of my Ghostscript at the end of this letter.
+
+<p>
+The interpreter is written in a language called cant-C, developed by Mr.
+Turing last year. The compiler is easily ported to any environment you
+care to name. I would be more than happy to send you a copy, but you must
+first contact my lawyer for this venture, Thomas Jefferson of Phila. Pa..
+(As a side note, Mr. Jefferson is very excited by Ghostscript. Look for
+The Declaration of Independance V1.1 RSN).
+
+<p>
+The possibilities for Ghostscript go far beyond Deathtop publishing, I'm
+sure you'll agree. I have contacted numerous authors who may be interested
+in using Ghostscript (Shakespeare, Hemingway, etc) and all have been very
+excited by what they've seen. (Shakespeare wants to write a modern Romeo
+and Juliette, called Romeo and Julio, the story of 2 gay hispanic men kept
+apart by their parents.)
+
+<p>
+Anyway, here is the Ghostscript example I promised. Feel free to show this
+to your friends and colleagues, I'm sure they'll all be suitably impressed.
+
+<pre>
+------Cut Here--------------------------------------
+------Cut Here--------------------------------------
+</pre>
+
+<!-- [2.0 end contents]
+==================================================== -->
+
+<!-- [3.0 begin visible trailer]
+=========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2001 artofcode LLC. 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.
+
+For more information about licensing, please refer to
+http://www.ghostscript.com/licensing/. For information on
+commercial licensing, go to http://www.artifex.com/licensing/ or
+contact Artifex Software, Inc., 101 Lucas Valley Road #110,
+San Rafael, CA 94903, U.S.A., +1(415)492-9861.
+
+<p>
+<small>Ghostscript version 7.00, 8 April 2001
+</small>
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/Install.htm b/Master/xemtex/doc/ghostscript/Install.htm
new file mode 100644
index 00000000000..060de229bae
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Install.htm
@@ -0,0 +1,540 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>How to install Ghostscript</title>
+<!-- $Id: Install.htm,v 1.26.2.13.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: install.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>How to install Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Overview">Overview of how to install Ghostscript</a>
+<li><a href="#Install_Unix">Installing Ghostscript on Unix</a>
+<ul>
+<li><a href="#Shared_object">Ghostscript as a shared object</a>
+<li><a href="#Install_GNULinux">Additional notes on GNU/Linux</a>
+</ul>
+<li><a href="#Install_Windows">Installing Ghostscript on MS Windows</a>
+<li><a href="#Install_VMS">Installing Ghostscript on OpenVMS</a>
+<li><a href="#Install_DOS">Installing Ghostscript on DOS</a>
+<li><a href="#Install_OS2">Installing Ghostscript on OS/2 2.x</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and "<a href="Make.htm">How to build Ghostscript from source
+code</a>".
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Overview"></a>Overview of how to install Ghostscript</h2>
+
+<p>
+You must have three things to run Ghostscript:
+<ol>
+<li>The Ghostscript executable file; on some operating
+systems, more than one file is required. These are entirely
+platform-specific. See below for details.
+
+<li>Initialization files that Ghostscript reads in when it
+starts up; these are the same on all platforms.
+<ul>
+<li><b><tt>gs_</tt></b>*<b><tt>.ps</tt></b> unless Ghostscript was compiled
+using the "compiled initialization files" option. See the documentation of
+<a href="Psfiles.htm">PostScript files distributed with Ghostscript</a>.
+
+<li><b><tt>pdf_</tt></b>*<b><tt>.ps</tt></b> if Ghostscript was compiled
+with the ability to interpret Adobe Portable Document Format (PDF) files,
+that is, <b><tt>pdf.dev</tt></b> was included in
+<b><tt>FEATURE_DEVS</tt></b> when Ghostscript was built.
+
+<li><b><tt>Fontmap</tt></b> and <b><tt>Fontmap.GS</tt></b> (or the
+appropriate <b><tt>Fontmap.</tt></b><em>xxx</em> for your platform), unless
+you plan always to invoke Ghostscript with the <a
+href="Use.htm#FONTMAP_switch"><b><tt>-dNOFONTMAP</tt></b> switch</a>.
+</ul>
+
+<li>Fonts, for rendering text. These are platform-independent,
+but if you already have fonts of the right kind on your platform,
+you may be able to use those. See below for details. Also see the
+<a href="Fonts.htm">documentation on fonts</a>.
+</ol>
+
+<p>
+The <a href="Use.htm">usage documentation</a> describes the search
+algorithms used to find initialization files and font files. The
+per-platform descriptions that follow tell you where to install these
+files.
+
+<hr>
+
+<h2><a name="Install_Unix"></a>Installing Ghostscript on Unix</h2>
+
+<p>
+Ghostscript uses a GNU autoconf-based configure, build and install method
+common to many modern software packages. In general the following with suffice
+to build ghostscript:
+<blockquote><tt><b>
+ ./configure<br>
+ make
+</b></tt></blockquote>
+and then it may be installed in the default location with:
+<blockquote><b>
+ <tt>make install</tt>
+</b></blockquote>
+This last command may need to be performed with super user privileges.
+
+<p>
+You can set the installation directory by adding <tt>--prefix=<em>path</em></tt>
+to the configure invocation in the first step. The default prefix is <tt>/usr/local</tt>,
+which is to say the <tt>gs</tt> executable is installed as <tt>/usr/local/bin/gs</tt>.
+
+</p>A list of similar configuration options is available via <tt>./configure --help</tt>
+
+<p>
+For more detailed information on building Ghostscript see
+<a href="Make.htm#Unix_build">how to build Ghostscript on Unix</a> in
+the documentation on building Ghostscript, especially regarding information
+on using the older <a href="Make.htm#UNIX_makefile">hand edited makefile</a>
+approach. Whatever configuration method you use, execute "<b><tt>make
+install</tt></b>" to install the executable and all the required and
+ancillary files after the build is complete.
+
+<h3><a name="Unix_Fonts"></a>Fonts</h3>
+
+<p>
+The makefile installs all the files except fonts under the directory
+defined in the makefile as <b><tt>prefix</tt></b>. Fonts need to be
+installed separately. The fonts should be installed in
+<tt><em>{prefix}</em>/share/ghostscript/fonts</tt>.
+(That is, <tt>/usr/local/share/ghostscript/fonts/</tt> if you used the default
+configuration above.)
+
+<p>
+You can have ghostscript use other fonts on your system by adding
+entries to the fontmap or adding the directories to the GS_FONTMAP environment
+variable. See the <a href="Use.htm#Font_lookup">usage documentation</a> for more
+information.
+For example, many GNU/Linux distributions place fonts under <tt>/usr/share/fonts</tt>.
+
+<h3><a name="Shared_object"></a>Ghostscript as a shared object</h3>
+If you've built Ghostscript as a shared object, instead of '<tt>make install</tt>',
+you must use '<tt>make soinstall</tt>'.
+See <a href="Make.htm#Shared_object">how to build Ghostscript
+as a shared object</a> for more details.
+
+<h3><a name="Install_GNULinux"></a>Additional notes on GNU/Linux</h3>
+
+<p>
+For GNU/Linux, you may be able to install or upgrade Ghostscript from
+precompiled <a href="http://www.rpm.org">RPM</a> files using:
+
+<blockquote><b><tt>
+rpm -U ghostscript-N.NN-1.i386.rpm<br>
+rpm -U ghostscript-fonts-N.NN-1.noarch.rpm
+</tt></b></blockquote>
+
+<p>
+However, please note that we do not create RPMs for Ghostscript, and we take
+no responsibility for RPMs created by others.
+
+<hr>
+
+<h2><a name="Install_Windows"></a>Installing Ghostscript on MS Windows</h2>
+
+<p>
+We usually distribute Ghostscript releases for Windows as self-extracting
+archive files, since this is the most convenient form for users. These
+files can also be unpacked as if they were plain zip files.
+
+<p>
+The self-extracting archive is normally named
+<b><tt>gs###w32.exe</tt></b>,
+where ### is the release number (e.g., 650 for Ghostscript 6.50,
+700 for Ghostscript 7.00).
+
+<h3><a name="Windows4"></a>Windows 95/98 and NT 4</h3>
+
+<p>
+To install a self-extracting Ghostscript archive on Windows 95/98 or
+Windows NT4/2000, you need just this self-extracting archive file.
+Run this file to install Ghostscript.
+
+<p>
+Alternatively, if you have the zip file, unzip it to a temporary
+directory then run the included <b><tt>setupgs.exe</tt></b>.
+After the setup program has finished, remove the temporary files.
+
+<h3><a name="General_Windows"></a>General Windows configuration</h3>
+
+<p>
+The archive includes files in these subdirectories:
+
+<blockquote><b><tt>
+gs<em>#.##</em>\bin
+<br>gs<em>#.##</em>\lib
+<br>gs<em>#.##</em>\examples
+<br>gs<em>#.##</em>\doc
+<br>fonts
+</tt></b></blockquote>
+
+<p>
+The actual executable files, in the <b><tt>gs<em>#.##</em>\bin</tt></b>
+subdirectory, are:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>GSWIN32.EXE</tt></b>
+ <td>&nbsp;
+ <td>32-bit Ghostscript using windows
+<tr valign=top> <td><b><tt>GSWIN32C.EXE</tt></b>
+ <td>&nbsp;
+ <td>32-bit Ghostscript using only the command line
+<tr valign=top> <td><b><tt>GSDLL32.DLL</tt></b>
+ <td>&nbsp;
+ <td>32-bit dynamic link library containing most of Ghostscript's
+functionality
+</table></blockquote>
+
+<p>
+See "<a href="#Install_DOS">Installing Ghostscript on DOS</a>" below for
+information about using Adobe Type Manager, Adobe Type Basics, or Adobe
+Acrobat fonts. If your system uses TrueType fonts, you can get them
+converted to a Ghostscript-compatible format at the time you select your
+"printer" by doing the following:
+
+<blockquote><ol>
+<li>Open control panel and double-click on the "Printers" icon.
+<li>Select your Postscript printer.
+<li>Choose Setup.
+<li>Choose Options.
+<li>Choose Advanced.
+<li>At the top of the dialog box you will see TrueType Fonts Send to
+Printer As: Choose <em>(drop-down menu)</em> Adobe Type 1.
+<li>Uncheck Use Printer Fonts for All TrueType Fonts and Use
+Substitution
+Table.
+<li>OK.
+<li>OK etc.
+</ol></blockquote>
+
+<p>
+That's it! Your TrueType fonts will automatically be downloaded in your
+PostScript file for Ghostscript to use.
+
+<p>
+For printer devices, the default output is:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td>The default printer
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>Win95 or WinNT
+<tr valign=top> <td>Prompt for a printer port
+ <td>&nbsp;
+ <td>Win32s (Windows 3.1)
+</table></blockquote>
+
+<p>
+This can be modified as follows.
+
+<blockquote>
+<dl>
+<dt><b><tt>-sOutputFile="LPT1:"</tt></b>
+<dd>Output to the named port.
+
+<dt><b><tt>-sOutputFile="%printer%printer name"</tt></b> (Windows 95, 98,
+NT or 2000)
+<dd>Output to the named printer. If your printer is named "HP DeskJet 500"
+then you would use <tt>-sOutputFile="%printer%HP DeskJet 500"</tt>.
+
+<dt><b><tt>-sOutputFile="\\spool\printer name"</tt></b> (Windows 3.1/Win32s)
+<dd>Output to the named printer. Note that this is NOT a UNC name.
+
+</dl>
+</blockquote>
+
+<p>
+If Ghostscript fails to find an environment variable, it looks for a
+registry value of the same name under the key
+
+<blockquote><b><tt>
+HKEY_CURRENT_USER\Software\GNU Ghostscript\#.##
+</tt></b></blockquote>
+
+<p>
+or if that fails, under the key
+
+<blockquote><b><tt>
+HKEY_LOCAL_MACHINE\SOFTWARE\GNU Ghostscript\#.##
+</tt></b></blockquote>
+
+<p>
+where #.## is the Ghostscript version number. This does not work under
+Win32s (that is, Windows 3.1, which doesn't support named registry
+values).
+
+<p>
+Ghostscript will attempt to load the Ghostscript dynamic link
+library <b><tt>GSDLL32.DLL</tt></b> in the following order:
+<ul>
+<li> In the same directory as the Ghostscript executable.
+<li> If the environment variable <b><tt>GS_DLL</tt></b> is defined,
+Ghostscript tries to load the Ghostscript dynamic link library (DLL)
+with the name given.
+<li> Using the standard Windows library search method: the directory
+from which the application loaded, the current directory, the Windows
+system directory, the Windows directory and the directories listed in
+the PATH environment variable.
+</ul>
+
+<p>
+The Ghostscript setup program will create registry values
+for the environment variables <b><tt>GS_LIB</tt></b>
+and <b><tt>GS_DLL</tt></b>.
+
+<h3><a name="Uninstall_Windows"></a>Uninstalling Ghostscript on Windows</h3>
+
+<p>
+To uninstall Ghostscript, use the Control Panel, Add/Remove Programs and
+remove "Ghostscript #.##" and "Ghostscript Fonts". (The entries may be
+called "Aladdin Ghostscript" or some other specifier rather than just
+"Ghostscript", depending on what version of Ghostscript was installed.)
+
+<hr>
+
+<h2><a name="Install_VMS"></a>Installing Ghostscript on OpenVMS</h2>
+
+<p>
+You need the file <b><tt>GS.EXE</tt></b> to run Ghostscript on OpenVMS, and
+installing Ghostscript on an OpenVMS system requires building it first:
+please read <a href="Make.htm#VMS_build">how to build Ghostscript on VMS</a>
+in the documentation on building Ghostscript.
+
+<p>
+The following installation steps assume that the Ghostscript directory is
+<b><tt>DISK1:[DIR.GHOSTSCRIPT]</tt></b>. Yours will almost certainly be in
+a different location so adjust the following commands accordingly.
+
+<ul>
+
+<li>Download the fonts and unpack them into
+<b><tt>DISK1:[DIR.GHOSTSCRIPT.LIB]</tt></b>.
+
+<li>Enable access to the program and support files for all users with:
+
+<blockquote><pre>
+$ set file/prot=w:re DISK1:[DIR]GHOSTSCRIPT.dir
+$ set file/prot=w:re DISK1:[DIR.GHOSTSCRIPT...]*.*
+</pre></blockquote>
+
+<li>Optionally, add the Ghostscript help instructions to your system wide
+help file:
+
+<blockquote><pre>
+$ lib/help sys$help:HELPLIB.HLB DISK1:[DIR.GHOSTSCRIPT.DOC]GS-VMS.HLP
+</pre></blockquote>
+
+<li>Lastly, add the following lines to the appropriate system wide or user
+specific login script.
+
+<blockquote><pre>
+$ define gs_exe DISK1:[DIR.GHOSTSCRIPT.BIN]
+$ define gs_lib DISK1:[DIR.GHOSTSCRIPT.EXE]
+$ gs :== $gs_exe:gs.exe
+</pre></blockquote>
+
+</ul>
+
+<p>
+If you have DECWindows/Motif installed, you may wish to replace the
+<b><tt>FONTMAP.GS</tt></b> file with <b><tt>FONTMAP.VMS</tt></b>. Read the
+comment at the beginning of the latter file for more information.
+
+<hr>
+
+<h2><a name="Install_DOS"></a>Installing Ghostscript on DOS</h2>
+
+<p>
+You need the files <b><tt>GS386.EXE</tt></b> and <b><tt>DOS4GW.EXE</tt></b>
+to run Ghostscript. You should install all the files except the fonts in
+<b><tt>C:\GS</tt></b>, and the fonts in <b><tt>C:\GS\FONTS</tt></b>.
+
+<p><a name="Use_platform_fonts_DOS"></a> If you have Adobe Type Manager
+(ATM) fonts installed on your system, and you wish to use them with
+Ghostscript, you may wish to replace the <b><tt>FONTMAP</tt></b> file with
+<b><tt>FONTMAP.ATM</tt></b>, and to add to the environment variable
+<b><tt>GS_LIB</tt></b> the name of the directory where the fonts are located
+(see below for more information about <b><tt>GS_LIB</tt></b>). Before you
+do this, please read carefully the license that accompanies the ATM fonts;
+we take no responsibility for any possible violations of such licenses.
+Similarly, if you have Adobe Type Basics, you may wish to replace
+<b><tt>FONTMAP</tt></b> with <b><tt>FONTMAP.ATB</tt></b>. Finally, if you
+have neither ATM nor ATB but you have Adobe Acrobat installed, you can use
+the Acrobat fonts in place of the ones provided with Ghostscript by adding
+the Acrobat fonts directory to <b><tt>GS_FONTPATH</tt></b> and removing
+these fonts from <b><tt>FONTMAP</tt></b>:
+
+<blockquote>
+Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, Helvetica,
+Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, Symbol, Times-Bold,
+Times-BoldItalic, Times-Italic, Times-Roman, ZapfDingbats
+</blockquote>
+
+<hr>
+
+<h2><a name="Install_OS2"></a>Installing Ghostscript on OS/2 2.x</h2>
+
+<p>
+The Ghostscript OS/2 implementation is designed for OS/2 2.1 or later. A
+few people have used it successfully under OS/2 2.0, but it has had very
+little testing. You need these files to run Ghostscript on OS/2:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>GSOS2.EXE</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>A text application that will run windowed or full screen
+<tr valign=top> <td><b><tt>GSDLL2.DLL</tt></b>
+ <td>&nbsp;
+ <td>A dynamic link library that must be in the same directory as
+ <b><tt>GSOS2.EXE</tt></b> or on the <b><tt>LIBPATH</tt></b>.
+<tr valign=top> <td><b><tt>GSPMDRV.EXE</tt></b>
+ <td>&nbsp;
+ <td>An "external driver" used by the "<b><tt>os2pm</tt></b>"
+ device, which is normally the default device and which displays
+ output in a Presentation Manager window;
+ <b><tt>GSPMDRV.EXE</tt></b> must be located in the same
+ directory as <b><tt>GSOS2.EXE</tt></b> or on the
+ <b><tt>PATH</tt></b>
+</table></blockquote>
+
+<p>
+<b><tt>GSOS2.EXE</tt></b>, <b><tt>GSDLL2.DLL</tt></b> and
+<b><tt>GSPMDRV.EXE</tt></b> are compiled using EMX/GCC 0.9d. You must have
+the EMX DLLs on your <b><tt>LIBPATH</tt></b>; they are available in a
+package <b><tt>emxrt.zip</tt></b> from many places on the Internet, so you
+can find the package by using a search engine or an ftp lookup service such
+as the one at
+
+<blockquote>
+<a href="http://ftpsearch.lycos.com/"
+class="offset">http://ftpsearch.lycos.com/</a>
+</blockquote>
+
+<p>
+The system menu of the Ghostscript Image window includes a "Copy" command
+to copy the currently displayed bitmap to the Clipboard.
+
+<p>
+OS/2 comes with some Adobe Type Manager fonts. If you wish to use these with
+Ghostscript, you should replace the <b><tt>FONTMAP</tt></b> file with
+<b><tt>FONTMAP.OS2</tt></b>, and add to the environment variable
+<b><tt>GS_LIB</tt></b> (see below for more information about
+<b><tt>GS_LIB</tt></b>) the name of the directory where the fonts are
+located, usually <b><tt>C:\PSFONTS</tt></b>. Before you do this, please
+read carefully the license that accompanies the ATM fonts; we take no
+responsibility for any possible violations of such licenses.
+
+<p>
+Since <b><tt>GSOS2.EXE</tt></b> is not a PM application, it cannot
+determine the depth of the PM display. You must provide this information
+using the <b><tt>-dBitsPerPixel</tt></b> option. Valid values are 1, 4, 8
+(the default), and 24.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Use
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>For
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>-dBitsPerPixel=1</tt></b>
+ <td>&nbsp;
+ <td>VGA monochrome
+<tr valign=top> <td><b><tt>-dBitsPerPixel=4</tt></b>
+ <td>&nbsp;
+ <td>VGA standard
+<tr valign=top> <td><b><tt>-dBitsPerPixel=8</tt></b>
+ <td>&nbsp;
+ <td>SVGA 256 colors
+</table></blockquote>
+
+<p>
+A command file <b><tt>gspm.cmd</tt></b> containing the following line may
+be useful:
+
+<blockquote><b><tt>
+@c:\gs\gsos2.exe -Ic:/gs;c:/gs/fonts;c:/psfonts -sDEVICE=os2pm -dBitsPerPixel=8 -sPAPERSIZE=a4 %1 %2 %3 %4 %5 %6 %7 %8
+</tt></b></blockquote>
+
+<p>
+While drawing, the <b><tt>os2pm</tt></b> driver updates the display every 5
+seconds. On slow computers this is undesirable, and a different interval
+can be specified in milliseconds with the <b><tt>-dUpdateInterval</tt></b>
+option, with a default of <b><tt>-dUpdateInterval=5000</tt></b>; to disable
+update, use <b><tt>-dUpdateInterval=0</tt></b>.
+
+<p>
+Standard VGA is very slow because it uses double buffering to avoid bugs
+and because of 1-plane to 4-plane conversion; it's better to use a
+256-color display driver. Many display drivers have bugs which cause 1
+bit-per-pixel bitmaps to be displayed incorrectly.
+
+<p>
+<b><tt>GSOS2.EXE</tt></b> and <b><tt>GSPMDRV.EXE</tt></b> will stay in
+memory for the number of minutes specified in the environment variable
+<b><tt>GS_LOAD</tt></b>.
+
+<p>
+If you run <b><tt>GS386</tt></b> in the OS/2 2.0 or 2.1 DOS box, you must
+select the "ENABLED" setting for the DPMI_DOS_API option of the DOS box.
+<b><tt>GS386</tt></b> will not run with the "AUTO" setting.
+
+<p>
+For printer devices, output goes to the default queue. To print to a
+specified queue, use <b><tt>-sOutputFile=\\spool\NullLPT1</tt></b>, where
+<b><tt>NullLPT1</tt></b> is the queue's physical name.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Issues.htm b/Master/xemtex/doc/ghostscript/Issues.htm
new file mode 100644
index 00000000000..6285337ecfb
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Issues.htm
@@ -0,0 +1,502 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript Open Issues.</title>
+<!-- $Id: Issues.htm,v 1.15.2.13.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Known limitations and minor bugs.</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#Known_Limitations">Known Limitations</a>
+<li><a href="#Minor_bugs">Minor bugs</a>
+<li><a href="#Driver_Issues">Specific Driver Issues</a>
+<li><a href="#Performance">Performance</a>
+<li><a href="#Differences_from_Adobe">Differences from Adobe Implementation</a>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Projects.htm">Development Projects list
+</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<p>
+There are many areas that might make Ghostscript more useful or minor bugs
+that we would like to investigate and possibly fix, but for which we don't
+have enough resources. These may or may not be addressed in future releases.
+<p>
+If you would like to take responsibility for any of these issues, please
+<a href="mailto:raph@artofcode.com">contact us</a>.
+<p>
+Additional comments on implementation approaches or project goals are in
+<I>italic type like this</I>.
+<hr>
+
+<h2><a name="Known_Limitations"></a>Known Limitations.</h2>
+
+<h3>bbox device doesn't allow min coords < 0.</h3>
+Adobe eps specification doesn't say that bbox values must be positive,
+and, for example Adobe Illustrator, can create EPS files with negative bboxes.
+In such case, Ghostscipt returns zero instead of proper negative number.
+<br>SourceForge Bug #202735 March 09, 2000.
+<p>
+<I>
+This might be able to be fixed by applying a large positive translation to
+the bbox CTM which would be subtracted from coordinates passed to the target
+device as well as from the results the bbox device reports.
+<p>
+If coordinates for the ImagingBBox[0] and [1] values, then negative
+values are handled, but this is not reliable since there are places in
+the graphics library that depend on first quadrant coordinates.
+</I>
+
+<h3>Error messages are too low level and confusing.</h3>
+
+<p>
+Although technically correct many error messages are confusing for
+end users. Some commonly reported examples are listed below.
+
+<p>
+When pdfwrite device cannot open the output file it fails with:
+<pre>**** Unable to open the initial device, quitting.</pre>
+
+When CIDFont-CMap pair required by PDF file is not available GS
+fails with:
+<pre>/undefinedresource in --findresource--</pre>
+
+<hr>
+<h2><a name="Minor_bugs"></a>Minor Bugs.</h2>
+
+<h3>PageSize cannot use packedarray</h3>
+PageSize doesn't accept packed array as an argument if the page size is
+adjusted, for instance, to the whole number of pixels. The following
+program
+<pre>
+%!
+/x 333.33333333 def /y 666.66666666 def
+
+<< /PageSize x y 2 packedarray >> setpagedevice
+(pached passed)== % fails
+%EOF
+</pre>
+fails with
+<pre>
+Error: /configurationerror in --setpagedevice--
+Additional information: [/PageSize [333.333344 666.666687]]
+</pre>
+
+<h3> Multiple encode filters in a pipeline fail.</h3>
+The following code fragment should output "3E>". It outputs nothing.
+<pre>
+%!PS
+(%stdout) (w) file
+/ASCIIHexEncode filter
+/ASCIIHexEncode filter
+closefile
+</pre>
+SourceForge bug #224134, December 2, 2000.
+
+<h3> Bad JPEG stream in PDF generated when source ends prematurely</h3>
+When GS converts the source image to JPEG stream in PDF file and the
+source data end prematurely, it generates bad JPEG stream.
+tiff2ps from libtiff distribution often generates such files.
+<p>
+One potential workaround is to use -dAutoFilterColorImages=false and
+-dColorImageFilter=/FlateEncode.
+<p>
+SourceForge bug #228808, Jan 15, 2000.
+<p>
+<I>
+JPEG stream writes image dimensions in JPEG header when the stream is created.
+When the source data end the dimensions are not updated. There may be other
+problems too.
+</I>
+
+<h3> Some attributes of Catalog object are lost during PDF to PDF conversion</h3>
+Dests, OpenAction, URI, PageMode, ViewerPreferences are lost during PDF to PDF
+conversion. Other attributes have not been checked.
+<p>
+<I>
+The loss happens diring PDF interpretation. GS can generate these attributes
+from pdfmark's.
+</I>
+<p>
+March 25, 2001.
+<h3>ps2pdf ignores transfer functions in shaded fill</h3>
+ps2pdf ignores transfer functions in the shaded fill but
+uses them for vector objects. The following sample program
+has 2 shaded fills and 2 rectangles that should have the
+same color as the left end of the shaded fill.
+<pre>
+
+ <</PageSize [612 200] /Policies<</PageSize 1>> >>setpagedevice
+ 612 1 scale
+ /grad
+ { gsave
+ 0 0 1 100 rectclip
+ <<
+ /ColorSpace [/DeviceCMYK]
+ /Domain [0 1]
+ /Coords [0 0 1 0]
+ /Extend [false false]
+ /Function
+ << /FunctionType 3
+ /Domain [ 0 1]
+ /Functions
+ [ <<
+ /FunctionType 2
+ /N 1
+ /C0 [ 0 0.5 0 0 ]
+ /Domain [ 0 1]
+ /C1 [0.5 0 0 0]
+ >> ]
+ /Bounds []
+ /Encode [0 1]
+ >>
+ /ShadingType 2
+ >> shfill
+
+ 0 0.5 0 0 setcmykcolor
+ 0 0 0.1 50 rectfill
+ grestore
+ } def
+
+ grad
+ {1 exch 2 div sub} settransfer
+ 0 100 translate
+ grad
+ showpage
+</pre>
+SourceForge Bug #232334, Feb 14, 2001.
+
+<h3>ResourceFileName gives wrong result with Font category.</h3>
+The following sequence:
+
+<pre>
+ /Font /Category findresource begin
+ /CharterBT-Roman 255 string ResourceFileName =
+ end
+</pre>
+
+Gives the results:
+<pre>
+ /Resource/Font/CharterBT-Roman
+</pre>
+
+This should be a valid platform specific file name and path such as:
+<pre>
+ f:/fonts/bchr.pfa
+</pre>
+SourceForge Bug #233403, Feb 21, 2001.
+<h3>GS doesn't handle names of separations with HalftoneType 5.</h3>
+PLRM3 says, that HalftoneType 5 may use user defined
+names of separations. Neither zht2.c nor cmd_put_drawing_color in
+gxclpath.c can handle this. GS chooses default halftone component
+for any non-standard separation name.
+<p>
+SourceForge Bug #406643, Mar 7, 2001.
+
+<h3> PDF 1.4 images don't deallocate all memory </h3>
+
+The pdf14_begin_typed_image() function in the PDF 1.4 device creates
+a marking device, but this is not freed on end_image. The garbage
+collector will free it, so it's not a real memory leak, but it would
+still be nicer to free it explicitly.
+
+<h3> </h3>
+
+<hr>
+
+<h2><a name="Driver_Issues"></a>Driver Issues.</h2>
+
+<h3> [ ] Missing text in landscape mode.</h3>
+Using GSWIN32C.EXE with djet500 to print a file in landscape mode
+on a HP 2000C, the first 3 characters on the left margin are missing.<br>
+When the postscript file is editted to use a larger offset (1st moveto
+parameter), the text appears ok.<br>
+When the postscript file is sent to a printer with a builtin postscript
+interpreter, it prints ok.
+<br>SourceForge Bug #206652.
+<p><I>
+A possible work around is to send the following
+postscript file to the printer prior to printing the problem
+file. This works but it leaves a .5" margin at the top
+and left which is may be ok for some uses.
+</I>
+<pre>
+
+%!PS-Adobe-2.0
+% Reset the offset and margins.
+<<
+ /PageOffset [-12 -18]
+ /Margins [0 0]
+ /.HWMargins [0 0 0 0]
+>>
+setpagedevice
+</pre>
+
+<I>
+This is an instance of the endless struggle with printer margins, especially
+for HP printers. The HP drivers are inconsistent as to whether the user space
+(0,0) should be the physical corner of the page (as it is in PostScript) or
+the corner of the printable area, and if the latterm whether the page should
+be clipped or scaled.
+</I>
+<p>
+
+<hr>
+
+<h2><a name="Performance"></a>Performance.</h2>
+
+<h3>Incremental loading for CIDFontType 2 and TrueType fonts.</h3>
+
+Entire TrueType outline data in CIDFontType 2 and TrueType fonts are
+loaded into memory at once. Incremental loading of the outline data is
+indispensable for practical use of Asian fonts.
+<p>
+There is one other type of CID-keyed font that should also be
+loaded incrementally: CFF CIDFontType0, i.e., a CIDFontType 0
+font represented using the compact binary CFF format. This is
+important because this is one of the two variants of Asian OpenType
+fonts (the other is essentially the same as TrueType). Ghostscript
+already supports both of these OpenType variants, but not with
+incremental loading.
+<p>
+SourceForge bug #223992, November 30, 2000.
+<p><I>
+We suggest that anyone who would like to work on this project
+start by looking at how CIDFontType 0 fonts do incremental loading
+(lib/gs_cidfn.ps and src/zfcid0.c). Probably much of this
+code can be also be used with CIDFontType 2 and TrueType fonts.
+</I>
+
+<hr>
+
+<h2><a name="Differences_from_Adobe"></a>Differences from Adobe Implementation.</h2>
+
+<h3>pdfwrite + TT font => Acrobat 3.x for Windows gives error</h3>
+
+Running ps2pdf12 on the file test1.ps produces a PDF on which Acrobat
+3.x for Windows complains about not being able to find or create a
+particular TrueType font that is embedded in the PDF file. However,
+Acrobat 3.x for other platforms, and Acrobat 4.x for all platforms,
+accepts the file.
+<p>
+SourceForge bug #201955, February 14, 2000.
+<p><I>
+Since Acrobat 3 is superseded by Acrobat 4 which is available at no
+charge, and the file produced by Ghostscript meets published PDF
+specification, this will most likely be left as is.
+</I>
+
+<h3> Inconsistent handling of /Orientation.</h3>
+PLRM says "The dictionary returned by currentpagedevice always
+contains an entry for every parameter supported by the device".
+GS prints both messages in the following program:
+
+<pre>
+%!
+currentpagedevice /Orientation known not
+{ (This printer does _not_ support Orientation.) =
+}
+if
+<</Orientation 1>> setpagedevice
+currentpagedevice /Orientation known
+{ (Err... wait... it does.) =
+}
+if
+%%EOF
+</pre>
+SourceForge bug #220967, October 31, 2000.
+<p><I>
+The handling of Orientation is a mess. The PLRM says quite explicitly
+that it is only supported for roll devices, where the page size
+alone doesn't give enough information to decide whether to rotate
+the page.
+<p>
+The reason that Ghostscript accepts it for other devices at all
+is twofold: displays are like roll media in that they don't have
+an inherent orientation, and almost none of the other Ghostscript
+devices actually specify their page sizes. Both of these reasons
+are now poorly motivated: displays should behave like
+portrait-orientation devices (albeit with variable page dimensions),
+rotating the image if the requested page width is greater than
+the height, and now that setpagedevice and the Resource machinery
+are fully implemented, all printer drivers should be updated
+to provide the paper size information. Once these fixes are made
+(which will probably have some repercussions other places in
+the code), Ghostscript will handle Orientation properly.
+<p>
+This should be addressed when the "setpagedevice in C" project is
+completed since part of this will require printer drivers to make
+page size information available to the setpagedevice logic.
+</I>
+
+<h3>Filesystem implementation differences.</h3>
+Adobe implementations often treat the filesystem as flat. This means that the
+path separator characters are not handled as special characters in filenames.
+The PLRM states that file names are implementation specific (section 3.8.2)
+and Ghostscript currently implements filenames that conform with the underlying
+operating system as is stated in this section about the %os% device. This
+can result from behaviour that is different from Adobe printer implementations.
+<br><br>
+<I>
+Current implementation is incompatible with most font installers. Installers
+expect that:
+<ul>
+"filenameforall" enumerates all files in all directories using the relative path name.
+Directory names, including . and .. are not enumerated
+</ul>
+<ul>
+characters not supported on the platform are encoded.
+</ul>
+<ul>
+"(w) file" operator creates directories if necessary.
+</ul>
+</I>
+
+<h3>Cannot load Adobe's fonts. </h3>
+The following program fails with Adobe fonts:
+
+<pre>
+(C*)
+{ cvn findfont pop
+} 255 string /Font resourceforall
+</pre>
+SourceForge Bug #226462, December 20, 2000.
+<p>
+<I>
+The 'findfont' operator and '/Font resourceforall' are very difficult to
+keep consistent, because the same logic algorithms must be implemented
+in two different ways. The problem is likely to be in lib/gs_fonts.ps,
+lib/gs_res.ps, and lib/gs_cidcm.ps.
+</I>
+<h3> There's no %ram% device.</h3>
+GS doesn't have %ram% device reguired on all Level 3 products.
+It is documented in PS Supplement 3010 and 3011 dated August 30, 1999
+<br>SourceForge Bug #226943, December 27, 2000.
+<p>
+<I>
+This should be implemented using the (disk) file system rather than
+actual RAM, at least initially, since that will be easy.
+<br>
+On Unix, it should be implemented with a directory /tmp/$$/ (where
+$$ is the process id), which Ghostscript should delete when it exits.
+</I>
+
+<h3> pdfwrite doesn't recognise the image type by content</h3>
+Currently pdfwrite uses JPEG compression for any 8 bit per component
+images >= 64 pixels in both dimensions.
+<p>
+<I>
+pdfwrite needs to be changed to use a reasonable algorithm for deciding
+between JPEG and Flate compression, probably based on sharp vs. smooth
+color transitions in the image; in case of uncertainty, it should use Flate.
+</I>
+<p>
+SourceForge Bug #226391, December 19, 2000.
+<p>
+
+
+<h3> ps2ascii can't handle incremental fonts</h3>
+ps2ascii fails with rangecheck on incremental fonts.
+Need to recognise incremental fonts and say that incremental
+fonts are impossible to convert to ASCII.
+<p>
+SourceForge Bug #441959 keeps good test data for this.
+<p>
+
+
+<h3> Buffering in input filters</h3>
+
+The following program prints differently to stdout on GS and Adobe :
+<p>
+<pre>
+%!
+/proc
+ { currentfile =string readline pop
+ dup ==
+ (%) anchorsearch { pop } if
+ } bind def
+/test
+ { //proc /ASCIIHexDecode filter
+ 3 string readstring pop ==
+ } bind def
+
+(start) ==
+
+test
+%31
+%32
+%33
+%34
+%35
+%36
+%37
+%38
+%39
+
+(stop) ==
+
+%%EOF
+</pre>
+<p>
+<I>
+Adobe fills entire input buffer of ASCIIHexDecode with procedure's output,
+before passing data to ASCIIHexDecode, and without knowledge how much data
+does ASCIIHexDecode want. GS does know the size of data requested,
+so as the procedure is called exact number of times. Thus, GS is more conservative.
+</I>
+<p>
+Anoter useful test to be made by repeating lines %31-%39 hundred times,
+without intermediate empty lines.
+<p>
+<h3> </h3>
+<p>
+
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2000 artofocode LLC. 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>
diff --git a/Master/xemtex/doc/ghostscript/Language.htm b/Master/xemtex/doc/ghostscript/Language.htm
new file mode 100644
index 00000000000..b47f003bec9
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Language.htm
@@ -0,0 +1,1897 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript and the PostScript language</title>
+<!-- $Id: Language.htm,v 1.34.2.16.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: language.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript and the PostScript language</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Capabilities">Ghostscript's capabilities in relation to PostScript</a>
+<li><a href="#Implementation_limits">Implementation limits</a>
+<ul>
+<li><a href="#Architectural_limits">Architectural limits</a>
+<li><a href="#Typical_memory_limits">Typical memory limits in LanguageLevel 1</a>
+<li><a href="#VM_consumption">Other differences in VM consumption</a>
+</ul>
+<li><a href="#Additional_operators">Additional operators in Ghostscript</a>
+<ul>
+<li><a href="#Graphics_and_text">Graphics and text operators</a>
+<ul>
+<li><a href="#Transparency">Transparency</a>
+<ul>
+<li><a href="#Transparency_graphics_state_operators">Graphics state operators</a>
+<li><a href="#Transparency_rendering_stack_operators">Rendering stack operators</a>
+<li><a href="#Transparency_ImageType">New ImageType</a>
+</ul>
+<li><a href="#Graphics_state">Other graphics state operators</a>
+<li><a href="#Path">Path operators</a>
+<li><a href="#Painting">Painting operators</a>
+<li><a href="#Character">Character operators</a>
+</ul>
+<li><a href="#Other">Other operators</a>
+<ul>
+<li><a href="#Mathematical">Mathematical operators</a>
+<li><a href="#Dictionary">Dictionary operators</a>
+<li><a href="#String">String and name operators</a>
+<li><a href="#Relational">Relational operators</a>
+<li><a href="#File">File operators</a>
+<li><a href="#Virtual_memory">Virtual memory operators</a>
+<li><a href="#Miscellaneous">Miscellaneous operators</a>
+<li><a href="#Device">Device operators</a>
+</ul>
+</ul>
+<li><a href="#Filters">Filters</a>
+<ul>
+<li><a href="#Standard_filters">Standard filters</a>
+<li><a href="#Non_standard_filters">Non-standard filters</a>
+<li><a href="#Unstable_filters">Unstable filters</a>
+</ul>
+<li><a href="#Device_parameters">Device parameters</a>
+<li><a href="#User_parameters">User parameters</a>
+<li><a href="#Miscellaneous_additions">Miscellaneous additions</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Capabilities"></a>Ghostscript's capabilities in relation to PostScript</h2>
+
+<p>
+The Ghostscript interpreter, except as noted below, is intended to execute
+properly any source program written in the (LanguageLevel 3)
+<b>PostScript</b> language as defined in the <cite>PostScript
+Language Reference, Third Edition</cite> (ISBN 0-201-37922-8) published by
+Addison-Wesley in mid-1999. However, the interpreter is configurable in
+ways that can restrict it to various subsets of this language.
+Specifically, the base interpreter accepts the Level 1 subset of the
+PostScript language, as defined in the first edition of the <cite>PostScript
+Language Reference Manual</cite> (ISBN 0-201-10174-2) Addison-Wesley 1985,
+plus the file system, version 25.0 language, and miscellaneous additions
+listed in sections A.1.6, A.1.7, and A.1.8 of the Second Edition
+respectively, including allowing a string operand for the
+"<b><tt>status</tt></b>" operator. The base interpreter may be configured
+(see the <a href="Make.htm">documentation on building Ghostscript</a> for
+how to configure it) by adding any combination of the following:
+
+<ul>
+<li>The ability to process PostScript Type 1 fonts. This facility is
+normally included in the interpreter.
+
+<li>The CMYK color extensions listed in section A.1.4 of the Second Edition
+(including <b><tt>colorimage</tt></b>). These facilities are available
+only if the <b><tt>color</tt></b>, <b><tt>dps</tt></b>, or
+<b><tt>level2</tt></b> feature was selected when Ghostscript was built.
+
+<li>The Display PostScript extensions listed in section A.1.3 of the Second
+Edition, but excluding the operators listed in section A.1.2. These
+facilities are available only if the <b><tt>dps</tt></b> feature or the
+<b><tt>level2</tt></b> feature was selected when Ghostscript was built.
+
+<li>The composite font extensions listed in section A.1.5 of the Second
+Edition, and the ability to handle Type 0 fonts. These facilities are
+available only if the <b><tt>compfont</tt></b> feature or the
+<b><tt>level2</tt></b> feature was selected when Ghostscript was built.
+
+<li>The ability to load TrueType fonts and to handle PostScript Type 42
+(encapsulated TrueType) fonts. These facilities are available only if the
+<b><tt>ttfont</tt></b> feature was selected when Ghostscript was built.
+
+<li>The PostScript Level 2 "filter" facilities except the
+<b><tt>DCTEncode</tt></b> and <b><tt>DCTDecode</tt></b> filters. These
+facilities are available only if the <b><tt>filter</tt></b>,
+<b><tt>dps</tt></b>, or <b><tt>level2</tt></b> feature was selected when
+Ghostscript was built.
+
+<li>The PostScript Level 2 <b><tt>DCTEncode</tt></b> and
+<b><tt>DCTDecode</tt></b> filters. These facilities are available only if
+the <b><tt>dct</tt></b> or <b><tt>level2</tt></b> feature was selected when
+Ghostscript was built.
+
+<li>All the other PostScript Level 2 operators and facilities listed in
+section A.1.1 of the Second Edition and not listed in any of the other
+A.1.n sections. These facilities are available only if the
+<b><tt>level2</tt></b> feature was selected when Ghostscript was built.
+
+<li>All PostScript LanguageLevel 3 operators and facilities listed in the
+Third Edition, except as noted below. These facilities are available only
+if the <b><tt>psl3</tt></b> feature was selected when Ghostscript was built.
+
+<li>The ability to recognize DOS EPSF files and process only the PostScript
+part, ignoring bitmap previews or other information. This facility is
+available only if the <b><tt>epsf</tt></b> feature was selected when
+Ghostscript was built.
+</ul>
+
+<p>
+Ghostscript currently does not implement the following PostScript
+LanguageLevel 3 facilities:
+
+<ul>
+<li>Native <b><tt>Separation</tt></b> and <b><tt>DeviceN</tt></b> color
+spaces -- the alternate space is always used.
+
+<li>Settable <b><tt>ProcessColorModel</tt></b> for page devices, except for
+a very few special devices.
+
+<li><b><tt>IODevice</tt></b>s other than <b><tt>%stdin</tt></b>,
+<b><tt>%stdout</tt></b>, <b><tt>%stderr</tt></b>, <b><tt>%lineedit</tt></b>,
+<b><tt>%statementedit</tt></b>, <b><tt>%os%</tt></b>, and (if configured)
+<b><tt>%pipe%</tt></b>.
+</ul>
+
+<p>
+Ghostscript can also interpret files in the Portable Document Format (PDF)
+1.3 format defined in the <a
+href="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf"><em>Portable
+Document Format Reference Manual</em> Version 1.3</a> of March 11, 1999,
+distributed by <a href="http://www.adobe.com/">Adobe Systems
+Incorporated</a>, except as noted below. This facility is available only if
+the <b><tt>pdf</tt></b> feature was selected when Ghostscript was built.
+
+<p>
+Ghostscript currently does not implement the following PDF 1.3 facilities:
+
+<ul>
+<li>Native <b><tt>Separation</tt></b> and <b><tt>DeviceN</tt></b> color
+spaces, as noted above for PostScript.
+
+<li>Native <b><tt>ICCBased</tt></b> color spaces -- these too always use the
+alternate space.
+</ul>
+
+<p>
+Ghostscript also includes a number of
+<a href="#Additional_operators">additional operators</a> defined below that
+are not in the PostScript language defined by Adobe.
+
+<hr>
+
+<h2><a name="Implementation_limits"></a>Implementation limits</h2>
+
+<p>
+The implementation limits show here correspond to those in Tables B.1 and
+B.2 of the Second and Third Editions, which describe the quantities fully.
+Where Ghostscript's limits are different from those of Adobe's
+implementations (as shown in the Third Edition), Adobe's limits are also
+shown.
+
+<h3><a name="Architectural_limits"></a>Architectural limits</h3>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=7 bgcolor="#CCCC00"><hr><font size="+1">Architectural limits (corresponds to Adobe table B.1)</font><hr>
+<tr valign=bottom>
+ <th align=left>Quantity
+ <td>&nbsp;&nbsp;
+ <th align=left>Limit
+ <td>&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;
+ <th align=left>Adobe
+<tr> <td colspan=7><hr>
+<tr valign=top> <td>integer
+ <td>&nbsp;
+ <td>32-bit
+ <td>&nbsp;
+ <td>twos complement integer
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>real
+ <td>&nbsp;
+ <td>single-precision
+ <td>&nbsp;
+ <td>IEEE float
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>array
+ <td>&nbsp;
+ <td>65535
+ <td>&nbsp;
+ <td>elements
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>dictionary
+ <td>&nbsp;
+ <td>65534
+ <td>&nbsp;
+ <td>elements
+ <td>&nbsp;
+ <td>65535
+<tr valign=top> <td>string
+ <td>&nbsp;
+ <td>65535
+ <td>&nbsp;
+ <td>characters
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>name
+ <td>&nbsp;
+ <td>16383
+ <td>&nbsp;
+ <td>characters
+ <td>&nbsp;
+ <td>127
+<tr valign=top> <td>filename
+ <td>&nbsp;
+ <td>128*
+ <td>&nbsp;
+ <td>characters
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td><b><tt>save</tt></b> level
+ <td>&nbsp;
+ <td>none
+ <td>&nbsp;
+ <td>(capacity of memory)
+ <td>&nbsp;
+ <td>15
+<tr valign=top> <td><b><tt>gsave</tt></b> level
+ <td>&nbsp;
+ <td>none
+ <td>&nbsp;
+ <td>(capacity of memory)
+ <td>&nbsp;
+ <td>13
+</table></blockquote>
+
+<p>
+* The limit on the length of a file name is 128 characters if the name
+starts with a %...% IODevice designation, or 124 characters if it does not.
+
+<h3><a name="Typical_memory_limits"></a>Typical memory limits in LanguageLevel 1</h3>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+
+<tr><th colspan=7 bgcolor="#CCCC00"><hr><font size="+1">Memory limits (corresponds to Adobe table B.2)</font><hr>
+<tr valign=bottom>
+ <th align=left>Quantity
+ <td>&nbsp;&nbsp;
+ <th align=left>Limit
+ <td>&nbsp;&nbsp;
+ <th align=left>Type
+ <td>&nbsp;&nbsp;
+ <th align=left>Adobe
+<tr> <td colspan=7><hr>
+<tr valign=top> <td><b><tt>userdict</tt></b>
+ <td>&nbsp;
+ <td>200
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td><b><tt>FontDirectory</tt></b>
+ <td>&nbsp;
+ <td>100
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>operand stack
+ <td>&nbsp;
+ <td>800
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>500
+<tr valign=top> <td>dictionary stack
+ <td>&nbsp;
+ <td>20
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>execution stack
+ <td>&nbsp;
+ <td>250
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>interpreter level
+ <td>&nbsp;
+ <td>none
+ <td>&nbsp;
+ <td>(capacity of memory)
+ <td>&nbsp;
+ <td>10
+<tr valign=top> <td>path
+ <td>&nbsp;
+ <td>none
+ <td>&nbsp;
+ <td>(capacity of memory)
+ <td>&nbsp;
+ <td>1500
+<tr valign=top> <td>dash
+ <td>&nbsp;
+ <td>11
+ <td>&nbsp;
+ <td>&nbsp;
+<tr valign=top> <td>VM
+ <td>&nbsp;
+ <td>none
+ <td>&nbsp;
+ <td>(capacity of memory)
+ <td>&nbsp;
+ <td>240000
+<tr valign=top> <td>file
+ <td>&nbsp;
+ <td>none
+ <td>&nbsp;
+ <td>(determined by operating system)
+ <td>&nbsp;
+ <td>6
+<tr valign=top> <td>image
+ <td>&nbsp;
+ <td>65535
+ <td>&nbsp;
+ <td>values (samples × components)<br>for1-, 2-, 4-, or 8-bit samples
+ <td>&nbsp;
+ <td>3300
+<tr valign=top> <td>&nbsp;
+ <td>&nbsp;
+ <td>32767
+ <td>&nbsp;
+ <td>values for 12-bit samples
+ <td>&nbsp;
+ <td>3300
+</table></blockquote>
+
+<h3><a name="VM_consumption"></a>Other differences in VM consumption</h3>
+
+<p>
+Packed array elements occupy either 2 bytes or 8 bytes. The average
+element size is probably about 5 bytes. Names occupy 12 bytes plus the
+space for the string.
+
+<hr>
+
+<h2><a name="Additional_operators"></a>Additional operators in Ghostscript</h2>
+
+<h3><a name="Graphics_and_text"></a>Graphics and text operators</h3>
+
+<h4><a name="Transparency"></a>Transparency</h4>
+
+<p>
+Ghostscript provides a set of operators for implementing the transparency
+and compositing facilities of PDF 1.4. These are defined only if the
+<b><tt>transpar</tt></b> option was selected when Ghostscript was built. We
+do not attempt to explain the underlying graphics model here: for details,
+see <a
+href="http://partners.adobe.com/asn/developer/technotes.html#acrobat-pdf"
+class="offsite">Adobe
+Technical Note</a> #5407, "<a
+href="http://partners.adobe.com/asn/developer/acrosdk/DOCS/PDF_Transparency.pdf"
+class="offsite">Transparency
+in PDF</a>". Note, however, that
+Ghostscript's model generalizes that of PDF 1.4 in that Ghostscript
+maintains separate alpha and mask values for opacity and shape, rather than
+a single value with a Boolean that says whether it represents opacity or
+shape. EVERYTHING IN THIS SECTION IS SUBJECT TO CHANGE.
+
+<h5><a name="Transparency_graphics_state_operators"></a>Graphics state
+operators</h5>
+
+<dl>
+<dt><b><tt>&lt;modename&gt; .setblendmode -</tt></b>
+<dd>Sets the blending mode in the graphics state. If the mode name is not
+recognized, causes a <b><tt>rangecheck</tt></b> error. The initial value of
+the blending mode is <b><tt>/Compatible</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentblendmode &lt;modename&gt;</tt></b>
+<dd>Returns the current blending mode.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;0..1&gt; .setopacityalpha -</tt></b>
+<dd>Sets the opacity alpha value in the graphics state.
+The initial opacity alpha value is 1.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentopacityalpha &lt;0..1&gt;</tt></b>
+<dd>Returns the current opacity alpha value.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;0..1&gt; .setshapealpha -</tt></b>
+<dd>Sets the shape alpha value in the graphics state.
+The initial shape alpha value is 1.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentshapealpha &lt;0..1&gt;</tt></b>
+<dd>Returns the current shape alpha value.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;bool&gt; .settextknockout -</tt></b>
+<dd>Sets the text knockout flag in the graphics state.
+The initial value of the text knockout flag is <b><tt>true</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>- .currenttextknockout &lt;bool&gt;</tt></b>
+<dd>Returns the current text knockout flag.
+</dl>
+
+<h5><a name="Transparency_rendering_stack_operators"></a>Rendering stack
+operators</h5>
+
+<p>
+The interpreter state is extended to include a (per-context) rendering stack
+for handling transparency groups and masks (generically, "layers"). Groups
+accumulate a full value for each pixel (paint plus transparency); masks
+accumulate only a coverage value. Layers must be properly nested, i.e., the
+'end' or 'discard' operator must match the corresponding 'begin' operator.
+
+<p>
+Beginning and ending layers must nest properly with respect to
+<b><tt>save</tt></b> and <b><tt>restore</tt></b>: <b><tt>save</tt></b> and
+<b><tt>restore</tt></b> do not save and restore the layer stack. Currently,
+layers are not required to nest with respect to <b><tt>gsave</tt></b> and
+<b><tt>grestore</tt></b>, except that the device that is current in the
+graphics state when ending a layer must be the same as the device that was
+current when beginning the layer. THIS AREA IS SUBJECT TO CHANGE.
+
+<dl>
+<dt><b><tt>&lt;paramdict&gt; &lt;llx&gt; &lt;lly&gt; &lt;urx&gt; &lt;ury&gt;
+.begintransparencygroup -</tt></b>
+<dd>Begins a new transparency group. The <b><tt>ll/ur</tt></b> coordinates
+are the bounding box of the group in the current user coordinate system.
+<b><tt>paramdict</tt></b> has the following keys:
+<dl>
+<dt><b><tt>/Isolated</tt></b>
+<dd>(optional) Boolean; default value = <b><tt>false</tt></b>.
+<dt><b><tt>/Knockout</tt></b>
+<dd>(optional) Boolean; default value = <b><tt>false</tt></b>.
+</dl>
+</dl>
+
+<dl>
+<dt><b><tt>- .discardtransparencygroup -</tt></b>
+<dd>Ends and discards the current transparency group.
+</dl>
+
+<dl>
+<dt><b><tt>- .endtransparencygroup -</tt></b>
+<dd>Ends the current transparency group, compositing the group being ended
+onto the group that now becomes current.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;paramdict&gt; &lt;llx&gt; &lt;lly&gt; &lt;urx&gt; &lt;ury&gt;
+.begintransparencymask -</tt></b>
+<dd>Begins a new transparency mask. The <b><tt>ll/ur</tt></b> coordinates
+are the bounding box of the mask in the current user coordinate system.
+<b><tt>paramdict</tt></b> has the following keys:
+<dl>
+<dt><b><tt>/Subtype</tt></b>
+<dd>(required) Name, either <b><tt>/Alpha</tt></b> or
+<b><tt>/Luminosity</tt></b>.
+<dt><b><tt>/Background</tt></b>
+<dd>(optional) Array of number.
+<dt><b><tt>/TransferFunction</tt></b>
+<dd>(optional) Function object (produced by applying
+<b><tt>.buildfunction</tt></b> to a Function dictionary).
+</dl>
+</dl>
+
+<dl>
+<dt><b><tt>- .discardtransparencymask -</tt></b>
+<dd>Ends and discards the current transparency mask.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;masknum&gt; .endtransparencymask -</tt></b>
+<dd>Ends the current transparency mask, installing it as the current opacity
+(<b><tt>masknum</tt></b> = 0) or shape (<b><tt>masknum</tt></b> = 1) mask in
+the graphics state.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;masknum&gt; .inittransparencymask -</tt></b>
+<dd>Resets the current opacity (<b><tt>masknum</tt></b> = 0) or shape
+(<b><tt>masknum</tt></b> = 1) mask to an infinite mask with alpha = 1
+everywhere.
+</dl>
+
+<h5><a name="Transparency_ImageType"></a>New ImageType</h5>
+
+<p>
+The transparency extension defines a new ImageType 103, similar to ImageType
+3 with the following differences:
+
+<ul>
+
+<li>The required <b><tt>MaskDict</tt></b> is replaced by two optional
+dictionaries, <b><tt>OpacityMaskDict</tt></b> and
+<b><tt>ShapeMaskDict</tt></b>. If present, these dictionaries must have a
+<b><tt>BitsPerComponent</tt></b> entry, whose value may be greater than 1.
+Note that in contrast to ImageType 3, where any non-zero chunky mask value
+is equivalent to 1, ImageType 103 simply takes the low-order bits of chunky
+mask values.
+
+<li>A <b><tt>Matte</tt></b> entry may be present in one or both mask
+dictionaries, indicating premultiplication of the data values. If both
+<b><tt>MaskDict</tt></b>s have a <b><tt>Matte</tt></b> entry and the values
+of the two <b><tt>Matte</tt></b> entries are different, a
+<b><tt>rangecheck</tt></b> error occurs.
+
+<li><b><tt>InterleaveType</tt></b> appears in the <b><tt>MaskDict</tt></b>s,
+not the <b><tt>DataDict</tt></b>, because each mask has its own
+<b><tt>InterleaveType</tt></b>. <b><tt>InterleaveType</tt></b> 2
+(interlaced scan lines) is not supported.
+
+</ul>
+
+<h4><a name="Graphics_state"></a>Other graphics state operators</h4>
+
+<dl>
+<dt><b><tt>&lt;bool&gt; .setaccuratecurves -</tt></b>
+<dd>Sets a graphics state flag that determines whether curves and arcs,
+when flattened, always start and end with a line that is a segment of the
+tangent; this also causes butt and square caps to be properly perpendicular
+to the tangent. <b><tt>initgraphics</tt></b> sets this flag to false, to
+match other PostScript implementations.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentaccuratecurves &lt;bool&gt;</tt></b>
+<dd>Returns the current value of the accurate curves flag.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;int&gt; .setcurvejoin -</tt></b>
+<dd>Sets a graphics state parameter that determines how to treat the joins
+between the line segments produced when a curve is flattened. The parameter
+value may be either -1 or a value acceptable to <b><tt>setlinejoin</tt></b>.
+If the parameter value is -1, the join used for flattened curve line
+segments is given by the current line join parameter in the graphics state
+(except that if the line join value is "none", a bevel join is used), which
+matches the Adobe Red Book, but not the Adobe implementations; if the curve
+join parameter value is a line join value, that type of join is used for
+flattened curve line segments, regardless of the value of the graphics state
+line join parameter. The initial (and default) value of the curve join
+parameter is 2, causing bevel joins to be used: this matches the Adobe
+implementations. <b><tt>initgraphics</tt></b> sets the parameter to its
+default value.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentcurvejoin &lt;int&gt;</tt></b>
+<dd>Returns the current value of the curve join parameter.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;bool&gt; .setdashadapt -</tt></b>
+<dd>Sets a graphics state flag that determines whether dash patterns do
+(true) or do not (false) automatically scale themselves so that each line
+segment consists of an integral number of pattern repetitions.
+<b><tt>initgraphics</tt></b> sets this flag to false.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentdashadapt &lt;bool&gt;</tt></b>
+<dd>Returns the current value of the dash adaptation flag.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;matrix&gt; .setdefaultmatrix -</tt></b>
+<dd>Sets the default matrix that is returned by
+<b><tt>defaultmatrix</tt></b> and installed by <b><tt>initmatrix</tt></b>.
+Ordinary programs should not use this operator.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;num&gt; &lt;bool&gt; .setdotlength -</tt></b>
+<dd>Sets a graphics state parameter that determines the handling of
+zero-length lines (dots). If the dot length is zero, dots are painted as
+circles if round line caps are in effect, otherwise they are not painted at
+all. If the dot length is non-zero, dots are treated exactly like lines of
+the given length: the length is specified in user coordinates (like line
+width) if <b><tt>bool</tt></b> is false, or in default user coordinates of
+points (units of 1/72in; see the <a href="Devices.htm#Measurements">notes
+on measurements</a> in the documentation on devices) if
+<b><tt>bool</tt></b> is true. Dots occurring as part of dash patterns will
+be oriented correctly; isolated dots will be oriented as though they were
+part of a vertical line. <b><tt>initgraphics</tt></b> sets the dot length
+to zero.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentdotlength &lt;num&gt; &lt;bool&gt;</tt></b>
+<dd>Returns the current dot length and dot length mode.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;dx&gt; &lt;dy&gt; .setfilladjust2 -</tt></b>
+<dd>Sets graphics state parameters that cause all filled and stroked
+regions to be "fattened" by the given amount relative to an algorithm that
+only paints pixels whose centers fall within the region to be painted.
+<b><tt>dx</tt></b> and <b><tt>dy</tt></b> are numbers between 0 and 0.5,
+measured in device space. The only two values that are likely to be useful
+are 0, which gives a pure center-of-pixel rule, and 0.5, which gives
+Adobe's any-part-of-pixel rule. (0.5 is treated slightly specially in
+order to create half-open pixels per Adobe's specification.)
+</dl>
+
+<dl>
+<dt><b><tt>- .currentfilladjust2 &lt;dx&gt; &lt;dy&gt;</tt></b>
+<dd>Returns the current fill adjustment values.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;bool&gt; .setlimitclamp -</tt></b>
+<dd>Sets a graphics state flag that determines whether attempts to set the
+current point outside the internally representable range should clamp the
+value to the largest representable value (true) or give a
+<b><tt>limitcheck</tt></b> error (false). <b><tt>initgraphics</tt></b> sets
+this flag to false, to match other PostScript implementations.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentlimitclamp &lt;bool&gt;</tt></b>
+<dd>Returns the current value of the limit clamp flag.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;int&gt; .setoverprintmode -</tt></b>
+<dd>Sets the overprint mode in the graphics state. Legal values are 0 or 1.
+Per the PDF 1.3 specification, if the overprint mode is 1, then when the
+current color space is <b><tt>DeviceCMYK</tt></b>, color components whose
+value is 0 do not write into the target, rather than writing a 0 value.
+THIS BEHAVIOR IS NOT IMPLEMENTED YET. The initial value of the overprint
+mode is 0.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentoverprintmode &lt;int&gt;</tt></b>
+<dd>Returns the current overprint mode.
+</dl>
+
+<h4><a name="Path"></a>Path operators</h4>
+
+<dl>
+<dt><b><tt>- .dashpath -</tt></b>
+<dd>If there is no current dash pattern, does nothing. Otherwise, does the
+equivalent of <b><tt>flattenpath</tt></b> and then chops up the path as
+determined by the dash pattern.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;x&gt; &lt;y&gt; &lt;width&gt; &lt;height&gt; .rectappend -</tt></b>
+<dt><b><tt>&lt;numarray&gt; .rectappend -</tt></b>
+<dt><b><tt>&lt;numstring&gt; .rectappend -</tt></b>
+<dd>Appends a rectangle or rectangles to the current path, in the same
+manner as <b><tt>rectfill</tt></b>, <b><tt>rectclip</tt></b>, etc. Defined
+only if the <b><tt>dps</tt></b> or <b><tt>level2</tt></b> option was
+selected when Ghostscript was built.
+</dl>
+
+<h4><a name="Painting"></a>Painting operators</h4>
+
+<p>
+Ghostscript supports an experimental extension of the PostScript imaging
+model to include <b><tt>RasterOp</tt></b> and some related facilities.
+This extension is available only if the <b><tt>rasterop</tt></b> option was
+selected when building Ghostscript.
+
+<p>
+With the <b><tt>RasterOp</tt></b> extension, imaging operations compute a
+function <b>D&nbsp;=&nbsp;f(D,S,T)</b> in RGB space, where <b>f</b> is an
+arbitrary 3-input Boolean function, <b>D</b> is the destination (frame
+buffer or print buffer), <b>S</b> is the source (described below), and
+<b>T</b> is the texture (the current PostScript color, which may be a
+pattern). The source and texture depend on the PostScript imaging
+operation:
+
+<ul>
+<li>For <b><tt>fill</tt></b> and <b><tt>stroke</tt></b>, the source is
+solid black, covering the region to be painted; the texture is the current
+PostScript color.
+
+<li>For <b><tt>show</tt></b> and <b><tt>imagemask</tt></b>, the source is
+solid black, covering the pixels to be painted; the texture is the current
+PostScript color.
+
+<li>For <b><tt>image</tt></b> and <b><tt>colorimage</tt></b>, the source is
+the image data; the texture depends on an optional Boolean parameter,
+<b><tt>CombineWithColor</tt></b>, in the image dictionary. If
+<b><tt>CombineWithColor</tt></b> is false (the default), the texture is
+solid black. If <b><tt>CombineWithColor</tt></b> is true, the texture is
+the current color. For the non-dictionary form of the image operator,
+<b><tt>CombineWithColor</tt></b> is considered to be false.
+</ul>
+
+<p>
+The <b><tt>rasterop</tt></b> option adds the following operators:
+
+<dl>
+<dt><b><tt>&lt;int8&gt; .setrasterop -</tt></b>
+<dd>Sets the <b><tt>RasterOp</tt></b> function in the graphics state. The
+default function is 252, Source | Texture.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentrasterop &lt;int8&gt;</tt></b>
+<dd>Returns the current <b><tt>RasterOp</tt></b> function.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;bool&gt; .setsourcetransparent -</tt></b>
+<dd>Sets source transparency in the graphics state. When source
+transparency is true, white source pixels prevent storing into the
+destination, regardless of what the <b><tt>RasterOp</tt></b> function
+returns. The default source transparency is false.
+</dl>
+
+<dl>
+<dt><b><tt>- .currentsourcetransparent &lt;bool&gt; -</tt></b>
+<dd>Returns the current source transparency.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;bool&gt; .settexturetransparent -</tt></b>
+<dd>Sets texture transparency in the graphics state. When texture
+transparency is true, white texture pixels prevent storing into the
+destination, regardless of what the <b><tt>RasterOp</tt></b> function
+returns. The default texture transparency is false.
+</dl>
+
+<dl>
+<dt><b><tt>- .currenttexturetransparent &lt;bool&gt; -</tt></b>
+<dd>Returns the current texture transparency.
+</dl>
+
+<p>
+For more information on RasterOp and transparency, please consult chapter 5
+of the "PCL 5 Color Technical Reference Manual",
+<a href="http://www.hp.com/cposupport/printers/support_doc/bpl01354.html">Hewlett-Packard
+Manual Part No. 5961-0635</a>.
+
+<h4><a name="Character"></a>Character operators</h4>
+
+<dl>
+<dt><b><tt>&lt;string&gt; &lt;bool&gt; .charboxpath -</tt></b>
+<dd>For each character <b>C</b> in the rendering of &lt;string&gt;, let the
+bounding box of <b>C</b> <b><em>in device space</em></b> be the four
+<b><em>user-space</em></b> points p1x/y, p2x/y, p3x/y, and p4x/y. For each
+character in order, <b><tt>.charboxpath</tt></b> appends the following to
+the current path:
+
+<ul><li>If <b><tt>&lt;bool&gt;</tt></b> is true, the equivalent of:
+
+<blockquote>
+p1x p1y <b><tt>moveto</tt></b><br>
+p2x p2y <b><tt>lineto</tt></b><br>
+p3x p3y <b><tt>lineto</tt></b><br>
+p4x p4y <b><tt>lineto</tt></b><br>
+<b><tt>closepath</tt></b>
+</blockquote>
+</ul>
+
+<p>
+This creates a path whose <b><tt>pathbbox</tt></b> is the
+<b><tt>bbox</tt></b> of the string.
+
+<ul><li>If <b><tt>&lt;bool&gt;</tt></b> is false, the equivalent of:
+
+<blockquote>
+p1x p1y <b><tt>moveto</tt></b><br>
+p3x p3y <b><tt>lineto</tt></b>
+</blockquote>
+</ul>
+
+<p>
+If the CTM is well-behaved (consists only of reflection, scaling, and
+rotation by multiples of 90 degrees), this too creates a (simpler) path
+whose <b><tt>pathbbox</tt></b> is the <b><tt>bbox</tt></b> of the string.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;font&gt; &lt;charname|charcode&gt; &lt;charname&gt; &lt;charstring&gt; .type1execchar -</tt></b>
+<dd>Does all the work for rendering a Type 1 outline. This operator, like
+<b><tt>setcharwidth</tt></b> and <b><tt>setcachedevice</tt></b>, is valid
+only in the context of a show operator -- that is, it must only be called
+from within a <b><tt>BuildChar</tt></b> or <b><tt>BuildGlyph</tt></b>
+procedure.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;font&gt; &lt;charcode&gt; %Type1BuildChar -</tt></b>
+<dd>This is not a new operator: rather, it is a name known specially to the
+interpreter. Whenever the interpreter needs to render a character (during
+a ...<b><tt>show</tt></b>, <b><tt>stringwidth</tt></b>, or
+<b><tt>charpath</tt></b>), it looks up the name <b><tt>BuildChar</tt></b>
+in the font dictionary to find a procedure to run. If it does not find
+this name, and if the <b><tt>FontType</tt></b> is 1, the interpreter
+instead uses the value (looked up on the dictionary stack in the usual way)
+of the name <b><tt>%Type1BuildChar</tt></b>.
+
+<p>
+The standard definition of <b><tt>%Type1BuildChar</tt></b> is in the
+initialization file <b><tt>gs_type1.ps</tt></b>. Users should not need to
+redefine <b><tt>%Type1BuildChar</tt></b>, except perhaps for tracing or
+debugging.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;font&gt; &lt;charname&gt; %Type1BuildGlyph -</tt></b>
+<dd>Provides the Type 1 implementation of <b><tt>BuildGlyph</tt></b>.
+</dl>
+
+<h3><a name="Other"></a>Other operators</h3>
+
+<h4><a name="Mathematical"></a>Mathematical operators</h4>
+
+<dl>
+<dt><b><tt>&lt;number&gt; arccos &lt;number&gt;</tt></b>
+<dd>Computes the arc cosine of a number between -1 and 1.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;number&gt; arcsin &lt;number&gt;</tt></b>
+<dd>Computes the arc sine of a number between -1 and 1.
+</dl>
+
+<h4><a name="Dictionary"></a>Dictionary operators</h4>
+
+<dl>
+<dt><b><tt>mark &lt;key1&gt; &lt;value1&gt; &lt;key2&gt; &lt;value2&gt; ... .dicttomark &lt;dict&gt;</tt></b>
+<dd>Creates and returns a dictionary with the given keys and values. This
+is the same as the PostScript Level 2 <b><tt>&gt;&gt;</tt></b> operator,
+but is available even in Level 1 configurations.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;dict&gt; &lt;key&gt; &lt;value&gt; .forceput - </tt></b>
+<dd>Equivalent to <b><tt>put</tt></b>, but works even if
+<b><tt>dict</tt></b> is not writable, and (if <b><tt>dict</tt></b> is
+<b><tt>systemdict</tt></b> or the current save level is 0) even if
+<b><tt>dict</tt></b> is in global VM and <b><tt>key</tt></b> and/or
+<b><tt>value</tt></b> is in local VM. <strong>This operator should be used
+only initialization code, and only in executeonly procedures: it must not be
+accessible after initialization.</strong>
+</dl>
+
+<dl>
+<dt><b><tt>&lt;dict&gt; &lt;key&gt; .forceundef - </tt></b>
+<dd>Equivalent to <b><tt>undef</tt></b>, but works even if
+<b><tt>dict</tt></b> is not writable. <strong>This operator should be used
+only initialization code, and only in executeonly procedures: it must not be
+accessible after initialization.</strong>
+</dl>
+
+
+<dl>
+<dt><b><tt>&lt;dict&gt; &lt;key&gt; .knownget &lt;value&gt; true</tt></b>
+<dt><b><tt>&lt;dict&gt; &lt;key&gt; .knownget false</tt></b>
+<dd>Combines <b><tt>known</tt></b> and <b><tt>get</tt></b> in the
+obvious way.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;dict&gt; &lt;integer&gt; .setmaxlength -</tt></b>
+<dd>Sets the capacity (<b><tt>maxlength</tt></b>) of a dictionary.
+Causes a <b><tt>dictfull</tt></b> error if the dictionary has more
+occupied entries than the requested capacity.
+</dl>
+
+<h4><a name="String"></a>String and name operators</h4>
+
+<dl>
+<dt><b><tt>&lt;integer&gt; .bytestring &lt;bytestring&gt;</tt></b>
+<dd>Allocates and returns a bytestring, a special data type that can be
+larger than the maximum size of a string (64K-1 bytes) and can be used in
+place of a string with a very few operators.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;name&gt; .namestring &lt;string&gt;</tt></b>
+<dd>Returns the (read-only) string for a name.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;obj&gt; &lt;pattern&gt; .stringmatch &lt;bool&gt;</tt></b>
+<dd>Matches <b><tt>obj</tt></b> against a pattern in which '*' matches 0 or
+more characters and '?' matches any single character. If
+<b><tt>obj</tt></b> is a string or a name, matches its characters against
+the pattern; if <b><tt>obj</tt></b> is of any other type, the result is
+<b><tt>true</tt></b> if the pattern is the single character "*" and
+<b><tt>false</tt></b> otherwise.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;state&gt; &lt;fromString&gt; &lt;toString&gt; .type1encrypt &lt;newState&gt; &lt;toSubstring&gt;</tt></b>
+<dd>Encrypts <b><tt>fromString</tt></b> according to the algorithm for
+Adobe Type 1 fonts, writing the result into <b><tt>toString</tt></b>.
+<b><tt>toString</tt></b> must be at least as long as
+<b><tt>fromString</tt></b>, or a rangecheck error occurs.
+<b><tt>state</tt></b> is the initial state of the encryption algorithm (a
+16-bit non-negative integer); <b><tt>newState</tt></b> is the new state of
+the algorithm.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;state&gt; &lt;fromString&gt; &lt;toString&gt; .type1decrypt &lt;newState&gt; &lt;toSubstring&gt;</tt></b>
+<dd>Decrypts <b><tt>fromString</tt></b> according to the algorithm for
+Adobe Type 1 fonts, writing the result into <b><tt>toString</tt></b>.
+Other specifications are as for <b><tt>type1encrypt</tt></b>.
+</dl>
+
+<h4><a name="Relational"></a>Relational operators</h4>
+
+<dl>
+<dt><b><tt>&lt;number|string&gt; &lt;number|string&gt; max &lt;number|string&gt;</tt></b>
+<dd>Returns the larger of two numbers or strings.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;number|string&gt; &lt;number|string&gt; min &lt;number|string&gt;</tt></b>
+<dd>Returns the smaller of two numbers or strings.
+</dl>
+
+<h4><a name="File"></a>File operators</h4>
+
+<dl>
+<dt><b><tt>&lt;file&gt; .filename &lt;string&gt; true</tt></b>
+<dt><b><tt>&lt;file&gt; .filename false</tt></b>
+<dd>If the file was opened by the <b><tt>file</tt></b> or
+<b><tt>.tempfile</tt></b> operator, returns the file name and
+<b><tt>true</tt></b>; if the file is a filter, returns
+<b><tt>false</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;file&gt; .fileposition &lt;integer&gt; true</tt></b>
+<dd>Returns the position of <b><tt>file</tt></b>. Unlike the standard
+<b><tt>fileposition</tt></b> operator, which causes an error if the file is
+not positionable, <b><tt>.fileposition</tt></b> works on all files,
+including filters: for non-positionable files, it returns the total number
+of bytes read or written since the file was opened.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;string&gt; findlibfile &lt;foundstring&gt; &lt;file&gt; true</tt></b>
+<dt><b><tt>&lt;string&gt; findlibfile &lt;string&gt; false</tt></b>
+<dd>Opens the file of the given name for reading, searching through
+directories <a href="Use.htm#Finding_files">as described in the usage
+documentation</a>. If the search fails, <b><tt>findlibfile</tt></b> simply
+pushes false on the stack and returns, rather than causing an error.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;file&gt; &lt;string&gt; .peekstring &lt;substring&gt; &lt;filled_bool&gt;</tt></b>
+<dd>Reads bytes from a file like <b><tt>readstring</tt></b>, but also leaves
+the bytes in the file buffer so they will be read again by a subsequent read
+operation. Currently gives a <b><tt>rangecheck</tt></b> error if
+<b><tt>string</tt></b> is larger than the file's buffer.
+</dl>
+
+<a name=Tempfile></a>
+<dl>
+<dt><b><tt>&lt;prefix_string|null&gt; &lt;access_string&gt; .tempfile
+&lt;string&gt; &lt;file&gt;</tt></b>
+<dd>Creates and opens a temporary file
+like the <b><tt>file</tt></b> operator, also returning the file name. There
+are three cases for the <b><tt>&lt;prefix_string|null&gt;</tt></b> operand:
+
+<ul>
+<p>
+<li><b><tt>null</tt></b>: create the file in the same directory and with the
+same name conventions as other temporary files created by the Ghostscript
+implementation on this platform. E.g., the temporary file might be named
+<b><tt>/tmp/gs_a1234</tt></b>.
+<p>
+<li>A string that is not the beginning of an absolute file name (e.g., does
+not begin with <b><tt>.</tt></b> or <b><tt>/</tt></b> on Unix-like
+platforms): create the file in the standard temporary directory, but use the
+<b><tt>&lt;prefix_string&gt;</tt></b> as the first part of the file name.
+E.g., if <b><tt>&lt;prefix_string&gt;</tt></b> is <b><tt>xx</tt></b>, the
+temporary file might be named <b><tt>/tmp/xxa1234</tt></b>.
+<p>
+<li>A string that is the beginning of an absolute file name: use the
+<b><tt>&lt;prefix_string&gt;</tt></b> as the first part of the file name.
+E.g., if <b><tt>&lt;prefix_string&gt;</tt></b> is
+<b><tt>/my/tmpdir/zz</tt></b>, the temporary file might be named
+<b><tt>/my/tmpdir/zza1234</tt></b>.
+<p>
+When running in <b><tt>SAFER</tt></b> mode, the absolute path must
+be one of the strings on the list given by the <b><tt>PermitFileWriting</tt></b>
+userparameter. Temporary files created with <b><tt>.tempfile</tt></b> can
+be deleted when in SAFER mode, and can be renamed to one of the paths
+that is on <b>both</b> the PermitFileControl and PermitFileWriting
+paths.
+</ul>
+
+</dl>
+
+<dl>
+<dt><b><tt>&lt;file&gt; &lt;integer&gt; .unread -</tt></b>
+<dd>Pushes back the last-read character onto the front of the file. If the
+file is open only for writing, or if the integer argument is not the same
+as the last character read from the file, causes an <b><tt>ioerror</tt></b>
+error. May also cause an <b><tt>ioerror</tt></b> if the last operation on
+the file was not a reading operation. This operator is now deprecated:
+use <b><tt>.peekstring</tt></b> in new code.
+</dl>
+
+<p>
+Ghostscript also supports the following <b><tt>IODevice</tt></b> in
+addition to a subset of those defined in the Adobe documentation:
+<b><tt>%pipe%command</tt></b>, which opens a pipe on the given command.
+This is supported only on operating systems that provide
+<b><tt>popen</tt></b> (primarily Unix systems, and not all of those).
+
+<h4><a name="Virtual_memory"></a>Virtual memory operators</h4>
+
+<dl>
+<dt><b><tt>&lt;save&gt; .forgetsave -</tt></b>
+<dd>Cancels the effect of a save, making it as though the save never
+happened.
+</dl>
+
+<h4><a name="Miscellaneous"></a>Miscellaneous operators</h4>
+
+<dl>
+<dt><b><tt>&lt;obj1&gt; &lt;obj2&gt; ... &lt;objn&gt; &lt;n&gt; .execn ...</tt></b>
+<dd>This executes <b><tt>obj1</tt></b> through <b><tt>objn</tt></b> in that
+order, essentially equivalent to
+
+<blockquote><pre>
+&lt;obj1&gt; &lt;obj2&gt; ... &lt;objn&gt; &lt;n&gt; array astore {exec} forall
+</pre></blockquote>
+
+<p>
+except that it doesn't actually create the array.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;string&gt; getenv &lt;string&gt; true</tt></b>
+<dt><b><tt>&lt;string&gt; getenv false</tt></b>
+<dd>Looks up a name in the shell environment. If the name is found,
+returns the corresponding value and true; if the name is not found, returns
+false.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;name&gt; &lt;array&gt; .makeoperator &lt;operator&gt;</tt></b>
+<dd>Constructs and returns a new operator that is actually the given
+procedure in disguise. The name is only used for printing. The operator
+has the executable attribute.
+
+<p>
+Operators defined in this way do one other thing besides running the
+procedure: if an error occurs during the execution of the procedure, and
+there has been no net reduction in operand or dictionary stack depth, the
+operand or dictionary stack pointer respectively is reset to its position
+at the beginning of the procedure.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;string&gt; &lt;boolean&gt; .setdebug -</tt></b>
+<dd>If the Ghostscript interpreter was built with the <b><tt>DEBUG</tt></b>
+flag set, sets or resets any subset of the debugging flags normally
+controlled by <b><tt>-Z</tt></b> in the command line. Has no effect
+otherwise.
+</dl>
+
+<dl>
+<dt><b><tt>- .oserrno &lt;errno&gt;</tt></b>
+<dd>Returns the error code for the most recent operating system error.
+</dl>
+
+<dl>
+<dt><b><tt>- .oserrorstring &lt;string&gt;</tt></b>
+<dd>Returns the error string for the most recent operating system error.
+</dl>
+
+<a name="Runandhide"></a>
+<dl>
+<dt><b><tt>&lt;array&gt; &lt;procedure&gt; .runandhide ... &lt;array&gt;</tt></b>
+<dd>Runs the <i><tt>&lt;procedure&gt;</tt></i> after removing the
+<i><tt>&lt;array&gt;</tt></i> from the stack. As long as <i><tt>&lt;array&gt;</tt></i>
+is not contained in any readable dictionaries or elsewhere on stacks, it
+will not be accessible to <i><tt>&lt;procedure&gt;</tt></i>.
+<p>
+This operator is intended to allow hiding a <i><tt>&lt;save&gt;</tt></i> object
+during execution of procedures or files that run in <b>SAFER</b> mode.
+If a <b><tt>save</tt></b> is performed prior to entering <b>SAFER</b> mode
+with <b><tt>.setsafe</tt></b>, using the save object as the operand to
+<b><tt>restore</tt></b> will return to <b>NOSAFER</b> mode. In order to
+prevent the procedures running in <b>SAFER</b> mode from being able to
+return to <b>NOSAFER</b> mode, this operator should be used.
+Upon return from the file or procedure <b><tt>restore</tt></b> can be used
+to return to <b>NOSAFER</b> mode.
+<p>
+<b>Note:</b> The array operand hidden during the execution of the file or
+procedure will be placed at the top of the operand stack which may be on
+top of objects that the file or procedure leaves on top of the stack.
+Thus removing objects below the array may be needed to prevent an
+<b><tt>invalidrestore</tt></b> error.
+<p>
+For example, in order for a script or job server to execute a file
+<tt>somefile.ps</tt> with the <b>SAFER</b> mode restrictions in place, returning
+to unrestricted <b>NOSAFER</b> mode when the procedure exits is as follows:
+<pre>
+ Start Ghostscript with <b>-dNOSAFER</b>
+
+ ... % perform any device set up w/o restrictions
+ [ save ] % create a save object before SAFER
+ (somefile.ps) (r) file cvx % open the file to process
+ .setsafe % enter SAFER mode
+ .runandhide % run the file hiding the save object
+ count 1 roll % place array below anything left over
+ count 1 sub { pop } repeat % pop left over stuff
+ cleardictstack % prevent invalidrestore from dicts
+ 0 get restore % go back to NOSAFER mode
+</pre>
+Another refinement on the above would be to execute <b><tt>.runandhide</tt></b>
+using <b><tt>stopped</tt></b> in order to report errors but continue processing.
+</dl>
+
+<dl>
+<dt><b><tt>- .setsafe -</tt></b>
+<dd>If Ghostscript is started with <b><tt>-dNOSAFER</tt></b> or
+<b><tt>-dDELAYSAFER</tt></b>, this operator can be used to enter <b>SAFER</b>
+mode (see <a href="Use.htm#Safer"><b>-dSAFER</b></a>)
+<p>
+<b>Note: </b>If <b><tt>-dPARANOIDSAFER</tt></b> was specified on the command
+line, <b><tt>.setsafe</tt></b> also sets the <b><tt>PermitFileReading</tt></b>
+parameter to an empty array.
+<p>
+Since <b>SAFER</b> mode is implemented with userparameters and device parameters,
+it is possible to use <b><tt>save</tt></b> and <b><tt>restore</tt></b> before
+and after <b><tt>.setsafe</tt></b> to return to <b>NOSAFER</b> mode, but care
+should be taken to ensure that the <i><tt>save</tt></i> object is not
+accessible to any procedures or file run in <b>SAFER</b> mode (see
+<a href="#Runandhide"><b>.runandhide</b></a> above).
+<p>
+<b>Note: This uses setpagedevice to change .LockSafetyParams, so the page
+will be erased as a side effect of this operator</b>
+</dl>
+
+<dl>
+<dt><b><tt>- .locksafe -</tt></b>
+<dd>
+This operator sets the current device's <b><tt>.LockSafetyParams</tt></b>
+and the <b><tt>LockFilePermissions</tt></b> user parameter true as well as
+adding the paths on LIBPATH and FONTPATH and the paths given by the
+system params /GenericResourceDir and /FontResourceDir to the current
+PermitFileReading list of paths.
+<p>
+If Ghostscript is started with <b><tt>-dNOSAFER</tt></b> or
+<b><tt>-dDELAYSAFER</tt></b>, this operator can be used to enter <b>SAFER</b>
+mode with the current set of <b><tt>PermitFile...</tt></b> user parameters
+in effect. Since <b><tt>.setsafe</tt></b> sets the <b><tt>PermitFileWriting</tt></b>
+and <b><tt>PermitFileControl</tt></b> user parameters to empty arrays, a script
+or job server that needs to enable certain paths for file Writing and/or Control
+can use this operator to perform the locking needed to enter <b>SAFER</b> mode.
+<p>
+For example, to enable reading everywhere, but disallow writing and file
+control (deleting and renaming files), the following can be used:
+<pre>
+ { << /PermitFileReading [ (*) ]
+ /PermitFileWriting [ ]
+ /PermitFileControl [ ]
+ >> setuserparams
+ .locksafe
+ } stopped pop
+</pre>
+In the above example, use of stopped will allow the use of this sequence on
+older versions of Ghostscript where <b><tt>.locksafe</tt></b> was not an operator.
+<p>
+<b>Note: This uses setpagedevice to change .LockSafetyParams, so the page
+will be erased as a side effect of this operator</b>
+<p>
+See also <a href="#LockSafetyParams">.LockSafetyParams</a> and
+<a href="#User_parameters">User Parameters</a>.
+<p>
+</dl>
+
+<h4><a name="Device"></a>Device operators</h4>
+
+<dl>
+<dt><b><tt>&lt;device&gt; copydevice &lt;device&gt;</tt></b>
+<dd>Copies a device. The copy is writable and installable. The copy is
+created in the current VM (local or global), usually local VM for executing
+ordinary PostScript files.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;devicename&gt; finddevice &lt;device&gt;</tt></b>
+<dd>Creates a default instance of a device specified by name. The instance
+is created in global VM. If <b><tt>finddevice</tt></b> is called more than
+once with the same device name, it creates the default instance the first
+time, and returns the same instance thereafter.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;devicename&gt; findprotodevice &lt;device&gt;</tt></b>
+<dd>Finds the prototype of a device specified by name. A prototype can be
+used with <b><tt>.getdeviceparams</tt></b> or other parameter-reading
+operators, but it is read-only and cannot be set with
+<b><tt>setdevice</tt></b>: it must be copied first.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;device&gt; &lt;x&gt; &lt;y&gt; &lt;width&gt; &lt;max_height&gt; &lt;alpha?&gt; &lt;std_depth|null&gt; &lt;string&gt; .getbitsrect &lt;height&gt; &lt;substring&gt;</tt></b>
+<dd>Reads a rectangle of rendered bits back from a device. This is only
+guaranteed to be implemented for image devices (see below).
+<b><tt>alpha?</tt></b> is 0 for no alpha, -1 for alpha first, 1 for alpha
+last. <b><tt>std_depth</tt></b> is null for native pixels, number of bits
+per component for a standard color space.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;index&gt; .getdevice &lt;device&gt;</tt></b>
+<dd>Returns a device from the set of devices known to the system. The
+first device, which is the default, is numbered 0. If the
+<b><tt>index</tt></b> is out of range, causes a <b><tt>rangecheck</tt></b>
+error. This device is actually a prototype, not a directly usable device,
+and is marked read-only; it cannot have its parameters changed or be
+installed as the current device.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;matrix&gt; &lt;width&gt; &lt;height&gt; &lt;palette&gt; makeimagedevice &lt;device&gt;</tt></b>
+<dd>Makes a new device that accumulates an image in memory. <b><tt>
+matrix</tt></b> is the initial transformation matrix: it must be orthogonal
+(that is, [a&nbsp;0&nbsp;0&nbsp;b&nbsp;x&nbsp;y] or
+[0&nbsp;a&nbsp;b&nbsp;0&nbsp;x&nbsp;y]). <b><tt>palette</tt></b> is a
+string of 2^<small><sup><b>N</b></sup></small> or
+3&nbsp;&times;&nbsp;2^<small><sup><b>N</b></sup></small> elements,
+specifying how the 2^<small><sup><b>N</b></sup></small> possible pixel
+values will be interpreted. Each element is interpreted as a gray value,
+or as RGB values, multiplied by 255. For example, if you want a monochrome
+image for which 0=white and 1=black, the palette should be
+<b><tt>&lt;ff&nbsp;00&gt;</tt></b>; if you want a 3-bit deep image with
+just the primary colors and their complements (ignoring the fact that 3-bit
+images are not supported), the palette might be <b><tt>&lt;000000 0000ff
+00ff00 00ffff ff0000 ff00ff ffff00 ffffff&gt;</tt></b>. At present, the
+palette must contain exactly 2, 4, 16, or 256 entries, and must contain an
+entry for black and an entry for white; if it contains any entries that
+aren't black, white, or gray, it must contain at least the six primary
+colors (red, green, blue, and their complements cyan, magenta, and yellow);
+aside from this, its contents are arbitrary.
+
+<p>
+Alternatively, palette can be 16, 24, 32, or null (equivalent to 24).
+These are interpreted as:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th valign=bottom align=left>Palette
+ <td>&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left>Bits allocated per color
+<tr> <td colspan=3><hr>
+<tr valign=top> <td>16
+ <td>&nbsp;
+ <td>5 red, 6 green, 5 blue
+<tr valign=top> <td>24
+ <td>&nbsp;
+ <td>8 red, 8 green, 8 blue
+<tr valign=top> <td>32
+ <td>&nbsp;
+ <td>8C, 8M, 8Y, 8K
+</table></blockquote>
+
+<p>
+Note that one can also make an image device (with the same palette as an
+existing image device) by copying a device using the
+<b><tt>copydevice</tt></b> operator.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;matrix&gt; &lt;width&gt; &lt;height&gt; &lt;palette&gt; &lt;word?&gt; makewordimagedevice &lt;device&gt;</tt></b>
+<dd>Makes an image device as described above. <b><tt>word?</tt></b> is a
+Boolean value indicating whether the data should be stored in a
+word-oriented format internally. No ordinary PostScript programs should
+use this operator.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;device&gt; &lt;index&gt; &lt;string&gt; copyscanlines &lt;substring&gt;</tt></b>
+<dd>Copies one or more scan lines from an image device into a string,
+starting at a given scan line in the image. The data is in the same format
+as for the <b><tt>image</tt></b> operator. It is an error if the device is
+not an image device or if the string is too small to hold at least one
+complete scan line. Always copies an integral number of scan lines.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;device&gt; setdevice -</tt></b>
+<dd>Sets the current device to the specified device. Also resets the
+transformation and clipping path to the initial values for the device.
+Signals an <b><tt>invalidaccess</tt></b> error if the device is a
+prototype or if <a href="Language.htm#LockSafetyParams">.LockSafetyParams</a>
+is true for the current device.
+</dl>
+
+<dl>
+<dt><b><tt>- currentdevice &lt;device&gt;</tt></b>
+<dd>Gets the current device from the graphics state.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;device&gt; getdeviceprops &lt;mark&gt; &lt;name1&gt; &lt;value1&gt; ... &lt;namen&gt; &lt;valuen&gt;</tt></b>
+<dd>Gets the properties of a device. See the section on
+<a href="#Device_parameters">device parameters</a> below for details.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;mark&gt; &lt;name1&gt; &lt;value1&gt; ... &lt;namen&gt; &lt;valuen&gt; &lt;device&gt; putdeviceprops &lt;device&gt;</tt></b>
+<dd>Sets properties of a device. May cause <b><tt>undefined</tt></b>,
+<b><tt>invalidaccess</tt></b>, <b><tt>typecheck</tt></b>, <b><tt>rangecheck</tt></b>, or
+<b><tt>limitcheck</tt></b> errors.
+</dl>
+
+<dl>
+<dt><b><tt>- flushpage -</tt></b>
+<dd>On displays, flushes any buffered output, so that it is guaranteed to
+show up on the screen; on printers, has no effect.
+</dl>
+
+<hr>
+
+<h2><a name="Filters"></a>Filters</h2>
+
+<h3><a name="Standard_filters"></a>Standard filters</h3>
+
+<p>
+In its usual configuration, Ghostscript supports all the standard PostScript
+LanguageLevel 3 filters, both encoding and decoding, except that it does not
+currently support:
+
+<ul>
+
+<li>the <b><tt>EarlyChange</tt></b> key in the <b><tt>LZWEncode</tt></b>
+filter.
+
+</ul>
+
+<p>
+Ghostscript also supports additional keys in the optional dictionary
+operands for some filters. For the <b><tt>LZWDecode</tt></b> filter:
+
+<dl>
+<dt><b><tt>InitialCodeLength &lt;integer&gt;</tt></b> (default 8)
+<dd>An integer between 2 and 11 specifying the initial number of data bits
+per code. Note that the actual initial code length is 1 greater than this,
+to allow for the reset and end-of-data code values.
+</dl>
+
+<dl>
+<dt><b><tt>FirstBitLowOrder &lt;boolean&gt;</tt></b> (default false)
+<dd>If true, codes appear with their low-order bit first.
+</dl>
+
+<dl>
+<dt><b><tt>BlockData &lt;boolean&gt;</tt></b> (default false)
+<dd>If true, the data is broken into blocks in the manner specified for the
+GIF file format.
+</dl>
+
+<p>
+For the <b><tt>CCITTFaxEncode</tt></b> and <b><tt>CCITTFaxDecode</tt></b>
+filters:
+
+<dl>
+<dt><b><tt>DecodedByteAlign &lt;integer&gt;</tt></b> (default 1)
+<dd>An integer <b>N</b> with the value 1, 2, 4, 8, or 16, specifying that
+decoded data scan lines are always a multiple of <b>N</b> bytes. The
+encoding filter skips data in each scan line from Columns to the next
+multiple of <b>N</b> bytes; the decoding filter pads each scan line to a
+multiple of <b>N</b> bytes.
+</dl>
+
+<h3><a name="Non_standard_filters"></a>Non-standard filters</h3>
+
+<p>
+In addition to the standard PostScript LanguageLevel 3 filters, Ghostscript
+supports the following non-standard filters. Many of these filters are used
+internally to implement standard filters or facilities; they are almost
+certain to remain, in their present form or a backward-compatible one, in
+future Ghostscript releases.
+
+<dl>
+<dt><b><tt>&lt;target&gt; /BCPEncode filter &lt;file&gt;</tt></b>
+<dt><b><tt>&lt;source&gt; /BCPDecode filter &lt;file&gt;</tt></b>
+<dd>Create filters that implement the Adobe Binary Communications Protocol.
+See Adobe documentation for details.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target&gt; &lt;seed_integer&gt; /eexecEncode filter &lt;file&gt;</tt></b>
+<dd>Creates a filter for encrypting data into the encrypted format described
+in the Adobe Type 1 Font Format documentation. The
+<b><tt>seed_integer</tt></b> must be 55665 for the <b><tt>eexec</tt></b>
+section of a font, or 4330 for a <b><tt>CharString</tt></b>. Note that for
+the <b><tt>eexec</tt></b> section of a font, this filter produces binary
+output and does not include the initial 4 (or <b><tt>lenIV</tt></b>) garbage
+bytes.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;source&gt; &lt;seed_integer&gt; /eexecDecode filter &lt;file&gt;</tt></b>
+<dt><b><tt>&lt;source&gt; &lt;dict&gt; /eexecDecode filter &lt;file&gt;</tt></b>
+<dd>Creates a filter for decrypting data encrypted as described in the Adobe
+Type 1 Font Format documentation. The <b><tt>seed_integer</tt></b> must be
+55665 or 4330 as described just above. Recognized dictionary keys are:
+
+<blockquote>
+<b><tt>seed &lt;16-bit integer&gt;</tt></b> (required)<br>
+<b><tt>lenIV &lt;non-negative integer&gt;</tt></b> (default=4)
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target&gt; /MD5Encode filter &lt;file&gt;</tt></b>
+<dd>Creates a filter that produces the 16-byte MD5 digest of the input.
+Note that no output is produced until the filter is closed.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;source&gt; &lt;hex_boolean&gt; /PFBDecode filter &lt;file&gt;</tt></b>
+<dd>Creates a filter that decodes data in <b><tt>.PFB</tt></b> format, the
+usual semi-binary representation for Type 1 font files on IBM PC and
+compatible systems. If <b><tt>hex_boolean</tt></b> is true, binary packets
+are converted to hex; if false, binary packets are not converted.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target&gt; &lt;dict&gt; /PixelDifferenceEncode filter &lt;file&gt;</tt></b>
+<dt><b><tt>&lt;source&gt; &lt;dict&gt; /PixelDifferenceDecode filter &lt;file&gt;</tt></b>
+<dd>Implements the Predictor=2 pixel-differencing option of the LZW
+filters. Recognized keys are:
+
+<blockquote>
+<b><tt>Colors &lt;integer&gt;</tt></b> (1 to 4, default=1)<br>
+<b><tt>BitsPerComponent &lt;integer&gt;</tt></b> (1, 2, 4, or 8, default=8)<br>
+<b><tt>Columns &lt;integer&gt;</tt></b> (&gt;= 0, required)
+</blockquote>
+
+<p>
+See the Adobe <a
+href="http://partners.adobe.com/asn/developer/acrosdk/DOCS/pdfspec.pdf"><em>Portable
+Document Format Reference Manual</em></a> for details.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target&gt; &lt;dict&gt; /PNGPredictorEncode filter &lt;file&gt;</tt></b>
+<dt><b><tt>&lt;source&gt; &lt;dict&gt; /PNGPredictorDecode filter &lt;file&gt;</tt></b>
+<dd>Implements the "filter" algorithms of the
+<a href="http://www.libpng.org/pub/png/">Portable Network Graphics (PNG)
+graphics format</a>. Recognized keys are:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Keys recognized in PNG filter algorithms</font><hr>
+<tr valign=bottom>
+ <th align=left>Key
+ <td>&nbsp;&nbsp;
+ <th align=left>Range
+ <td>&nbsp;&nbsp;
+ <th align=left>Default
+<tr> <td colspan=5><hr>
+<tr valign=top> <td><b><tt>Colors &lt;integer&gt;</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>1 to 16
+ <td>&nbsp;&nbsp;
+ <td>16
+<tr valign=top> <td><b><tt>BitsPerComponent &lt;integer&gt;</tt></b>
+ <td>&nbsp;
+ <td>1, 2, 4, 8, or 16
+ <td>&nbsp;&nbsp;
+ <td>8
+<tr valign=top> <td><b><tt>Columns &lt;integer&gt;</tt></b>
+ <td>&nbsp;
+ <td>&gt;= 0
+ <td>&nbsp;&nbsp;
+ <td>1
+<tr valign=top> <td><b><tt>Predictor &lt;integer&gt;</tt></b>
+ <td>&nbsp;
+ <td>10 to 15
+ <td>&nbsp;&nbsp;
+ <td>15
+</table></blockquote>
+
+<p>
+The <b><tt>Predictor</tt></b> is the PNG algorithm number + 10 for the
+<b><tt>Encoding</tt></b> filter; the <b><tt>Decoding</tt></b> filter
+ignores <b><tt>Predictor</tt></b>. 15 means the encoder attempts to
+optimize the choice of algorithm. For more details see the PNG
+specification
+
+<blockquote>
+<a href="http://www.w3.org/TR/WD-png-960128.html">http://www.w3.org/TR/WD-png-960128.html</a>
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target&gt; /TBCPEncode filter &lt;file&gt;</tt></b>
+<dt><b><tt>&lt;source&gt; /TBCPDecode filter &lt;file&gt;</tt></b>
+<dd>Create filters that implement the Adobe Tagged Binary Communications
+Protocol. See Adobe documentation for details.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target&gt; /zlibEncode filter &lt;file&gt;</tt></b>
+<dt><b><tt>&lt;source&gt; /zlibDecode filter &lt;file&gt;</tt></b>
+<dd>Creates filters that use the data compression method variously known as
+'zlib' (the name of a popular library that implements it), 'Deflate' (as in
+<a href="http://www.ietf.org/rfc/rfc1951.txt">RFC 1951</a>, which is a
+detailed specification for the method), 'gzip' (the name of a popular
+compression application that uses it), or 'Flate' (Adobe's name). Note that
+the PostScript <b><tt>Flate</tt></b> filters are actually a combination of
+this filter with an optional predictor filter.
+</dl>
+
+<h3><a name="Unstable_filters"></a>Unstable filters</h3>
+
+<p>
+Some versions of Ghostscript may also support other non-standard filters for
+experimental purposes. The current version includes the following such
+filters, which are not documented further. No code should assume that these
+filters will exist in compatible form, or at all, in future versions.
+
+<dl>
+<dt><b><tt>&lt;target/source&gt; &lt;string&gt; ByteTranslateEncode/Decode filter &lt;file&gt;</tt></b>
+<dd><b><tt>string</tt></b> must be a string of exactly 256 bytes. Creates a
+filter that converts each input byte <em>b</em> to
+<b><tt>string</tt></b>[<em>b</em>]. Note that the <b><tt>Encode</tt></b>
+and <b><tt>Decode</tt></b> filters operate identically: the client must
+provide a <b><tt>string</tt></b> for the <b><tt>Decode</tt></b> filter that
+is the inverse mapping of the <b><tt>string</tt></b> for the
+<b><tt>Encode</tt></b> filter.
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target/source&gt; &lt;dict&gt; BoundedHuffmanEncode/Decode filter &lt;file&gt;</tt></b>
+<dd>These filters encode and decode data using Huffman codes. Since these
+filters aren't used anywhere, we don't document them further, except to note
+the recognized dictionary keys, which must be set identically for encoding
+and decoding:
+
+<blockquote>
+<b><tt>FirstBitLowOrder &lt;bool&gt;</tt></b> (default=false)<br>
+<b><tt>MaxCodeLength &lt;int&gt;</tt></b> (default=16)<br>
+<b><tt>EndOfData &lt;bool&gt;</tt></b> (default=true)<br>
+<b><tt>EncodeZeroRuns &lt;int&gt;</tt></b> (default=256)<br>
+<b><tt>Tables &lt;int_array&gt;</tt></b>
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target/source&gt; &lt;dict&gt; BWBlockSortEncode/Decode filter &lt;file&gt;</tt></b>
+<dd>This filter implements the Burroughs-Wheeler block sorting compression
+method, which we've heard is also used in the popular <b><tt>bzip2</tt></b>
+compression application. See <a
+href="http://sources.redhat.com/bzip2/">http://sources.redhat.com/bzip2/</a>
+for more information. The only recognized dictionary key is:
+
+<blockquote>
+<b><tt>BlockSize &lt;integer&gt;</tt></b> (default=16384)
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>&lt;target/source&gt; MoveToFrontEncode/Decode filter &lt;file&gt;</tt></b>
+
+<dd>The <b><tt>Encode</tt></b> filter starts by initializing an internal
+256-byte array <b><tt>a</tt></b> to the values 0 .. 255. This array will
+always hold a permutation of these values. Then for each input byte
+<em>b</em>, the filter outputs the index <em>i</em> such that
+<b><tt>a</tt></b>[<em>i</em>] = <em>b</em>, and moves that element to the
+front (element 0) of <b><tt>a</tt></b>, moving elements 0 .. <em>i-1</em> to
+positions 1 .. <em>i</em>. The <b><tt>Decode</tt></b> filter inverts this
+process.
+</dl>
+
+<hr>
+
+<h2><a name="Device_parameters"></a>Device parameters</h2>
+
+Ghostscript supports the concept of device parameters for all devices, not
+just page devices. (For non-page devices, these are accessible through
+<b><tt>getdeviceprops</tt></b> and <b><tt>putdeviceprops</tt></b>, as
+indicated above.) Here are the currently defined parameters for all
+devices:
+
+<dl>
+<a name="LockSafetyParams"></a>
+<dt><b><tt>.LockSafetyParams &lt;boolean&gt;</tt></b>
+<dd>This parameter allows for improved system security by preventing
+PostScript programs from being able to change potentially dangerous
+device paramters such as OutputFile. This parameter cannot be set false
+if it is already true.
+<p>
+If this parameter is true for the current device, attempt to set a new
+device that has <b><tt>.LockSafetyParams</tt></b> false will signal an
+<tt><b> invalidaccess</b></tt> error.
+</dl>
+
+<dl>
+<dt><b><tt>BitsPerPixel &lt;integer&gt; (usually read-only)</tt></b>
+<dd>Number of bits per pixel.
+</dl>
+
+<dl>
+<dt><b><tt>.HWMargins [&lt;four floats&gt;]</tt></b>
+<dd>Size of non-imageable regions around the edges of the page, in points
+(units of 1/72in; see the <a href="Devices.htm#Measurements">notes on
+measurements</a> in the documentation on devices).
+</dl>
+
+<dl>
+<dt><b><tt>HWSize [&lt;integer&gt; &lt;integer&gt;]</tt></b>
+<dd>X and Y size in pixels.
+</dl>
+
+<dl>
+<dt><b><tt>Name &lt;string&gt; (read-only)</tt></b>
+<dd>The device name. Currently the same as <b><tt>OutputDevice</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>Colors, GrayValues, RedValues, GreenValues, BlueValues, ColorValues (usually read-only)</tt></b>
+<dd>As for the <b><tt>deviceinfo</tt></b> operator of Display PostScript.
+<b><tt>Red</tt></b>, <b><tt>Green</tt></b>, <b><tt>Blue</tt></b>, and
+<b><tt>ColorValues</tt></b> are only defined if
+<b><tt>Colors</tt></b>&nbsp;&gt;&nbsp;1.
+</dl>
+
+<dl>
+<dt><b><tt>TextAlphaBits, GraphicsAlphaBits (usually read-only)</tt></b>
+<dd>The number of bits of anti-aliasing information for text or graphics
+respectively. Legal values are 1 (no anti-aliasing, the default for most
+devices), 2, or 4.
+</dl>
+
+<p>
+In addition, the following are defined per Adobe's documentation for the
+<b><tt>setpagedevice</tt></b> operator:
+
+<blockquote>
+<b><tt>Duplex</tt></b> (if supported)<br>
+<b><tt>HWResolution</tt></b><br>
+<b><tt>ImagingBBox</tt></b><br>
+<b><tt>Margins</tt></b><br>
+<b><tt>NumCopies</tt></b> (for printers only)<br>
+<b><tt>Orientation</tt></b> (if supported)<br>
+<b><tt>OutputDevice</tt></b><br>
+<b><tt>PageOffset</tt></b> (write-only)<br>
+<b><tt>PageSize</tt></b><br>
+<b><tt>ProcessColorModel</tt></b> (usually read-only)<br>
+</blockquote>
+
+<p>
+Some devices may only allow certain values for <b><tt>HWResolution</tt></b>
+and <b><tt>PageSize</tt></b>. The null device ignores attempts to set
+<b><tt>PageSize</tt></b>; its size is always <b><tt>[0&nbsp;0]</tt></b>.
+
+<p>
+For printers these are also defined:
+
+<dl>
+<dt><b><tt>BufferSpace &lt;integer&gt;</tt></b>
+<dd>Buffer space for band lists, if the bitmap is too big to fit in memory.
+</dl>
+
+<dl>
+<dt><b><tt>MaxBitmap &lt;integer&gt;</tt></b>
+<dd>Maximum space for a full bitmap in memory.
+</dl>
+
+<dl>
+<dt><b><tt>OutputFile &lt;string&gt;</tt></b>
+
+<dd>An empty string means "send to printer directly", otherwise specifies
+the file name for output; <b><tt>%d</tt></b> is replaced by the page number;
+on Unix systems <b><tt>%pipe%</tt></b><em>command</em> writes to a pipe.
+(<b><tt>|</tt></b><em>command</em> also writes to a pipe, but is now
+deprecated.)
+<p>
+Attempts to set this parameter if <tt><b>.LockSafetyParams</b></tt> is true
+will signal an <tt><b>invalidaccess</b></tt> error.
+</dl>
+
+<dl>
+<dt><b><tt>OpenOutputFile &lt;boolean&gt;</tt></b>
+<dd>If true, open the device's output file when the device is opened,
+rather than waiting until the first page is ready to print.
+</dl>
+
+<dl>
+<dt><b><tt>PageCount &lt;integer&gt; (read-only)</tt></b>
+<dd>Counts the number of pages printed on the device.
+</dl>
+
+<p>
+The following parameters are for use only by very specialized applications
+that separate band construction from band rasterization. Improper use may
+cause unpredictable errors. In particular, if you only want to allocate
+more memory for banding, to increase band size and improve performance, use
+the <b><tt>BufferSpace</tt></b> parameter, not
+<b><tt>BandBufferSpace</tt></b>.
+
+<dl>
+<dt><b><tt>BandHeight &lt;integer&gt;</tt></b>
+<dd>The height of bands when banding. 0 means use the largest band height
+that will fit within the BandBufferSpace (or BufferSpace, if
+BandBufferSpace is not specified).
+</dl>
+
+<dl>
+<dt><b><tt>BandWidth &lt;integer&gt;</tt></b>
+<dd>The width of bands in the rasterizing pass, in pixels. 0 means use the
+actual page width.
+</dl>
+
+<dl>
+<dt><b><tt>BandBufferSpace &lt;integer&gt;</tt></b>
+<dd>The size of the band buffer in the rasterizing pass, in bytes. 0 means
+use the same buffer size as for the interpretation pass.
+</dl>
+
+<p>
+Ghostscript supports the following parameter for
+<b><tt>setpagedevice</tt></b> and <b><tt>currentpagedevice</tt></b> that is
+not a device parameter per se:
+
+<dl>
+<dt><b><tt>ViewerPreProcess &lt;procedure&gt;</tt></b>
+<dd>Specifies a procedure to be applied to the page device dictionary
+before any other processing is done. The procedure may not alter the
+dictionary, but it may return a modified copy. This "hook" is provided for
+use by viewing programs such as GSview.
+</dl>
+
+<hr>
+
+<h2><a name="User_parameters"></a>User parameters</h2>
+
+Ghostscript supports the following non-standard user parameters:
+
+<dl>
+<dt><b><tt>ProcessDSCComment &lt;procedure|null&gt;</tt></b>
+<dd>If not null, this procedure is called whenever the scanner detects a DSC
+comment (comment beginning with <b><tt>%%</tt></b> or <b><tt>%!</tt></b>).
+There are two operands, the file and the comment (minus any terminating
+EOL), which the procedure must consume.
+</dl>
+
+<dl>
+<dt><b><tt>ProcessComment &lt;procedure|null&gt;</tt></b>
+<dd>If not null, this procedure is called whenever the scanner detects a
+comment (or, if <b><tt>ProcessDSCComment</tt></b> is also not null, a
+comment other than a DSC comment). The operands are the same as for
+<b><tt>ProcessDSCComment</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>LockFilePermissions &lt;boolean&gt;</tt></b>
+<dd>If <tt>true</tt>, this parameter and the three <tt>PermitFile...</tt>
+parameters cannot be changed. Attempts to change any of the values
+when LockFilePermissions is <tt>true</tt> will signal <b><tt>invalidaccess</tt></b>.
+Also, when this value is <tt>true</tt>, the <b><tt>file</tt></b> operator
+will give <b><tt>invalidaccess</tt></b> when attempting to open files
+(processes) using the <b><tt>%pipe</tt></b> device.
+<p>
+Also when <b><tt>LockFilePermissions</tt></b> is <tt>true</tt>, strings
+cannot reference the parent directory (platform specific). For example
+<b><tt>(../../xyz)</tt></b> is illegal on unix, Windows
+and Macintosh, and <b><tt>([.#.#.XYZ])</tt></b> is illegal on VMS.
+<p>
+This parameter is set <tt>true</tt> by the <b><tt>.setsafe</tt></b> and
+<b><tt>.locksafe</tt></b> operators.
+</dl>
+
+<dl>
+<dt><b><tt>PermitFileReading &lt;array of strings&gt;</tt></b>
+<dt><b><tt>PermitFileWriting &lt;array of strings&gt;</tt></b>
+<dt><b><tt>PermitFileControl &lt;array of strings&gt;</tt></b>
+<dd>These parameters specify paths where file reading, writing and the
+'control' operations are permitted, respectively. File control
+operations are <b><tt>deletefile</tt></b> and <b><tt>renamefile</tt></b>.
+For <b><tt>renamefile</tt></b>, the filename for the current filename
+must match one of the paths on the PermitFileControl list, and the
+new filename must be on <b>both</b> the PermitFileControl and the
+PermitFileWriting lists of paths.
+<p>
+The strings can contain wildcard characters as for the <b><tt>filenameforall</tt></b>
+operator and unless specifying a single file, will end with a <b>*</b>
+for directories (folders) to allow access to all files and sub-directories
+in that directory.
+<p>
+<b>Note:</b> The strings are used for stringmatch operations similar
+to <b><tt>filenameforall</tt></b>, thus on MS Windows platforms, use the '/'
+character to separate directories and filenames or use '\\\\' to
+have the string contain '\\' which will match a single '\' in the
+target filename (use of '/' is strongly recommended).
+<p>
+The <a href=Use.htm#Safer><b>SAFER</b></a> mode and the
+<b><tt>.setsafe</tt></b> operator set all three lists to empty arrays,
+thus the only files that can be read are the <b><tt>%stdin</tt></b> device and
+on LIBPATH or FONTPATH or the Resource paths specified by the /FontResourceDir
+or /GenericResourceDir system params. Files cannot be opened for writing
+anywhere and cannot be deleted or renamed except for files created with the
+<a href=#Tempfile><b>.tempfile</b></a> operator).
+</dl>
+
+<hr>
+
+<h2><a name="Miscellaneous_additions"></a>Miscellaneous additions</h2>
+
+<b><tt>run</tt></b> can take either a string or a file as its argument. In
+the latter case, it just runs the file, closing it at the end, and trapping
+errors just as for the string case.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Lib.htm b/Master/xemtex/doc/ghostscript/Lib.htm
new file mode 100644
index 00000000000..d3377b6238b
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Lib.htm
@@ -0,0 +1,491 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>The Ghostscript library</title>
+<!-- $Id: Lib.htm,v 1.14.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: lib.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>The Ghostscript Library</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#GS_library">The Ghostscript library</a>
+<li><a href="#PS_operator_API">PostScript operator API</a>
+<ul>
+<li><a href="#Patterns">Patterns</a>
+<li><a href="#Lower_level_API">Lower-level API</a>
+</ul>
+<li><a href="#Full_example">A full example</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="GS_library"></a>The Ghostscript library</h2>
+
+<p>
+This document describes the Ghostscript library, a set of procedures
+to implement the graphics and filtering capabilities that are primitive
+operations in the PostScript language and in Adobe Portable Document Format
+(PDF).
+
+<p>
+Ghostscript is actually two programs: a language interpreter, and a
+graphics library. The library provides, in the form of C procedures, all
+the graphics functions of the language, that is, approximately those
+facilities listed in section 8.1 of the <cite>PostScript
+Language Reference Manual</cite>, starting with the
+graphics state operators. In addition, the library provides some
+lower-level graphics facilities that offer higher performance in exchange
+for less generality.
+
+<hr>
+
+<h2><a name="PS_operator_API"></a>PostScript operator API</h2>
+
+<p>
+The highest level of the library, which is the one that most clients will
+use, directly implements the PostScript graphics operators with procedures
+named <b><tt>gs_XXX</tt></b>, for instance <b><tt>gs_moveto</tt></b> and
+<b><tt>gs_fill</tt></b>. Nearly all of these procedures take graphics
+state objects as their first arguments, such as
+
+<blockquote><b><tt>
+int gs_moveto(gs_state *, double, double);
+</tt></b></blockquote>
+
+<p>
+Nearly every procedure returns an integer code which is &gt;= 0 for a
+successful return or &lt;0 for a failure. The failure codes correspond
+directly to PostScript errors, and are defined in
+<b><tt>gserrors.h</tt></b>.
+
+<p>
+The library implements all the operators in the following sections of the
+<cite>PostScript Language Reference Manual</cite>, with the indicated
+omissions and with the APIs defined in the indicated <b><tt>.h</tt></b>
+files. A header of the form <b><em>A.h(B.h)</em></b> indicates that
+<b><em>A.h</em></b> is included in <b><em>B.h</em></b>, so
+<b><em>A.h</em></b> need not be included explicitly if <b><em>B.h</em></b>
+is included. Operators marked with * in the "omissions" column are not
+implemented directly; the library provides lower-level procedures that can
+be used to implement the operator.
+
+<p>
+There are slight differences in the operators that return multiple values,
+since C's provisions for this are awkward. Also, the control structure for
+the operators involving callback procedures (<b><tt>pathforall</tt></b>,
+<b><tt>image</tt></b>, <b><tt>colorimage</tt></b>,
+<b><tt>imagemask</tt></b>) is partly inverted: the client calls a procedure
+to set up an enumerator object, and then calls another procedure for each
+iteration. The <b><tt>...show</tt></b> operators,
+<b><tt>charpath</tt></b>, and <b><tt>stringwidth</tt></b> also use an
+inverted control structure.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Section<br>(operators)
+ <td>&nbsp;&nbsp;
+ <th align=left>Headers
+ <td>&nbsp;&nbsp;
+ <th align=left>Omissions
+<tr> <td colspan=5><hr>
+<tr valign=top> <td>Graphics state -- device-independent
+ <td>&nbsp;
+ <td><b><tt>gscolor.h</tt></b>(<b><tt>gsstate.h</tt></b>)<br><b><tt>gscolor1.h</tt></b><br><b><tt>gscolor2.h</tt></b><br><b><tt>gscspace.h</tt></b><br><b><tt>gshsb.h</tt></b><br><b><tt>gsline.h</tt></b>(<b><tt>gsstate.h</tt></b>)<br><b><tt>gsstate.h</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr> <td>&nbsp;
+<tr valign=top> <td>Graphics state -- device-dependent
+ <td>&nbsp;
+ <td><b><tt>gscolor.h</tt></b>(<b><tt>gsstate.h</tt></b>)<br><b><tt>gscolor1.h</tt></b><br><b><tt>gscolor2.h</tt></b><br><b><tt>gsht.h</tt></b>(<b><tt>gsht1.h</tt></b>,<b><tt>gsstate.h</tt></b>)<br><b><tt>gsht1.h</tt></b><br><b><tt>gsline.h</tt></b>(<b><tt>gsstate.h</tt></b>)
+ <td>&nbsp;
+ <td>&nbsp;
+<tr> <td>&nbsp;
+<tr valign=top> <td>Coordinate system and matrix
+ <td>&nbsp;
+ <td><b><tt>gscoord.h</tt></b><br><b><tt>gsmatrix.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*matrix</tt></b>, <b><tt>*identmatrix</tt></b>, <b><tt>*concatmatrix</tt></b>, <b><tt>*invertmatrix</tt></b>
+<tr> <td>&nbsp;
+<tr valign=top> <td>Path construction
+ <td>&nbsp;
+ <td><b><tt>gspath.h</tt></b><br><b><tt>gspath2.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*arct</tt></b>, <b><tt>*pathforall</tt></b>, <b><tt>ustrokepath</tt></b>, <b><tt>uappend</tt></b>, <b><tt>upath</tt></b>, <b><tt>ucache</tt></b>
+<tr> <td>&nbsp;
+<tr valign=top> <td>Painting
+ <td>&nbsp;
+ <td><b><tt>gsimage.h</tt></b><br><b><tt>gspaint.h</tt></b><br><b><tt>gspath2.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*image</tt></b>, <b><tt>*colorimage</tt></b>, <b><tt>*imagemask</tt></b>, <b><tt>ufill</tt></b>, <b><tt>ueofill</tt></b>, <b><tt>ustroke</tt></b>
+<tr> <td>&nbsp;
+<tr valign=top> <td>Form and pattern
+ <td>&nbsp;
+ <td><b><tt>gscolor2.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>execform</tt></b>
+<tr> <td>&nbsp;
+<tr valign=top> <td>Device setup and output
+ <td>&nbsp;
+ <td><b><tt>gsdevice.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>*showpage</tt></b>, <b><tt>*set</tt></b>/<b><tt>currentpagedevice</tt></b>
+<tr> <td>&nbsp;
+<tr valign=top> <td>Character and font
+ <td>&nbsp;
+ <td><b><tt>gschar.h</tt></b><br><b><tt>gsfont.h</tt></b>
+ <td>&nbsp;
+ <td>*(all the <b><tt>show</tt></b> operators), <b><tt>definefont</tt></b>, <b><tt>undefinefont</tt></b>, <b><tt>findfont</tt></b>, <b><tt>*scalefont</tt></b>, <b><tt>*makefont</tt></b>, <b><tt>selectfont</tt></b>, <b><tt>[Global]FontDirectory</tt></b>, <b><tt>Standard</tt></b>/<b><tt>ISOLatin1Encoding</tt></b>, <b><tt>findencoding</tt></b>
+</table></blockquote>
+
+<p>
+The following procedures from the list above operate differently from their
+PostScript operator counterparts, as explained here:
+
+<dl>
+<dt><b><tt>gs_makepattern(gscolor2.h)</tt></b>
+<dd>Takes an explicit current color, rather than using the current color in
+the graphics state. Takes an explicit allocator for allocating the pattern
+implementation. See below for more details on
+<b><tt>gs_makepattern</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>gs_setpattern(gscolor2.h)</tt></b>
+<dt><b><tt>gs_setcolor(gscolor2.h)</tt></b>
+<dt><b><tt>gs_currentcolor(gscolor2.h)</tt></b>
+<dd>Use <b><tt>gs_client_color</tt></b> rather than a set of color
+parameter values. See below for more details on
+<b><tt>gs_setpattern</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>gs_currentdash_length/pattern/offset(gsline.h)</tt></b>
+<dd>Splits up <b><tt>currentdash</tt></b> into three separate procedures.
+</dl>
+
+<dl>
+<dt><b><tt>gs_screen_init/currentpoint/next/install(gsht.h)</tt></b>
+<dd>Provide an "enumeration style" interface to <b><tt>setscreen</tt></b>.
+(<b><tt>gs_setscreen</tt></b> is also implemented.)
+</dl>
+
+<dl>
+<dt><b><tt>gs_rotate/scale/translate(gscoord.h)</tt></b>
+<dt><b><tt>gs_[i][d]transform(gscoord.h)</tt></b>
+<dd>These always operate on the graphics state CTM. The corresponding
+operations on free-standing matrices are in <b><tt>gsmatrix.h</tt></b> and
+have different names.
+</dl>
+
+<dl>
+<dt><b><tt>gs_path_enum_alloc/init/next/cleanup(gspath.h)</tt></b>
+<dd>Provide an "enumeration style" implementation of
+<b><tt>pathforall</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>gs_image_enum_alloc(gsimage.h)</tt></b>
+<dt><b><tt>gs_image_init/next/cleanup(gsimage.h)</tt></b>
+<dd>Provide an "enumeration style" interface to the equivalent of
+<b><tt>image</tt></b>, <b><tt>imagemask</tt></b>, and
+<b><tt>colorimage</tt></b>. In the <b><tt>gs_image_t</tt></b>,
+<b><tt>ColorSpace</tt></b> provides an explicit color space, rather than
+using the current color space in the graphics state;
+<b><tt>ImageMask</tt></b> distinguishes <b><tt>imagemask</tt></b> from
+<b><tt>[color]image</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>gs_get/putdeviceparams(gsdevice.h)</tt></b>
+<dd>Take a <b><tt>gs_param_list</tt></b> for specifying or receiving the
+parameter values. See <b><tt>gsparam.h</tt></b> for more details.
+</dl>
+
+<dl>
+<dt><b><tt>gs_show_enum_alloc/release(gschar.h)</tt></b>
+<dt><b><tt>gs_xxxshow_[n_]init(gschar.h)</tt></b>
+<dt><b><tt>gs_show_next(gschar.h)</tt></b>
+<dd>Provide an "enumeration style" interface to writing text. Note that
+control returns to the caller if the character must be rasterized.
+</dl>
+
+<p>
+This level of the library also implements the following operators from other
+sections of the Manual:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Section<br>(operators)
+ <td>&nbsp;&nbsp;
+ <th align=left>Headers
+ <td>&nbsp;&nbsp;
+ <th align=left>Operators
+<tr> <td colspan=5><hr>
+<tr valign=top> <td>Interpreter parameter
+ <td>&nbsp;
+ <td><b><tt>gsfont.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>cachestatus</tt></b>, <b><tt>setcachelimit</tt></b>, <b><tt>*set/currentcacheparams</tt></b>
+<tr valign=top> <td>Display PostScript
+ <td>&nbsp;
+ <td><b><tt>gsstate.h</tt></b>
+ <td>&nbsp;
+ <td><b><tt>set/currenthalftonephase</tt></b>
+</table></blockquote>
+
+<p>
+In order to obtain the full PostScript Level 2 functionality listed above,
+<b><tt>FEATURE_DEVS</tt></b> must be set in the makefile to include at least the following:
+
+<blockquote><b><tt>
+FEATURE_DEVS=patcore.dev cmykcore.dev psl2core.dev dps2core.dev ciecore.dev path1core.dev hsbcore.dev
+</tt></b></blockquote>
+
+<p>
+The <b><tt>*lib.mak</tt></b> makefiles mentioned below do not always
+include all of these features.
+
+<p>
+Files named <b><tt>gs*.c</tt></b> implement the higher level of the
+graphics library. As might be expected, all procedures, variables, and
+structures available at this level begin with "<b><tt>gs_</tt></b>".
+Structures that appear in these interfaces, but whose definitions may be
+hidden from clients, also have names beginning with "<b><tt>gs_</tt></b>",
+that is, the prefix, not the implementation, reflects at what level the
+abstraction is made available.
+
+<h3><a name="Patterns"></a>Patterns</h3>
+
+<p>
+Patterns are the most complicated PostScript language objects that the
+library API deals with. As in PostScript, defining a pattern color and
+using the color are two separate operations.
+
+<p>
+<b><tt>gs_makepattern</tt></b> defines a pattern color. Its arguments are as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td><b><tt>gs_client_color *</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;
+ <td>The resulting <b><tt>Pattern</tt></b> color is stored here. This is different from PostScript, which has no color objects <em>per se</em>, and hence returns a modified copy of the dictionary.
+<tr valign=top> <td><b><tt>const gs_client_pattern *</tt></b>
+ <td>&nbsp;
+ <td>The analogue of the original <b><tt>Pattern</tt></b> dictionary, described in detail just below.
+<tr valign=top> <td><b><tt>const gs_matrix *</tt></b>
+ <td>&nbsp;
+ <td>Corresponds to the matrix argument of the <b><tt>makepattern</tt></b> operator.
+<tr valign=top> <td><b><tt>gs_state *</tt></b>
+ <td>&nbsp;
+ <td>The current graphics state.
+<tr valign=top> <td><b><tt>gs_memory_t *</tt></b>
+ <td>&nbsp;
+ <td>The allocator to use for allocating the saved data for the
+ <b><tt>Pattern</tt></b> color. If this is
+ <b><tt>NULL</tt></b>, <b><tt>gs_makepattern</tt></b> uses the
+ same allocator that allocated the graphics state. Library
+ clients should probably always use <b><tt>NULL</tt></b>.
+
+</table></blockquote>
+
+<p>
+The <b><tt>gs_client_pattern</tt></b> structure defined in
+<b><tt>gscolor2.h</tt></b> corresponds to the <b><tt>Pattern</tt></b>
+dictionary that is the argument to the PostScript language
+<b><tt>makepattern</tt></b> operator. This structure has one extra member,
+<b><tt>void&nbsp;*client_data</tt></b>, which is a place for clients to
+store a pointer to additional data for the <b><tt>PaintProc</tt></b>; this
+provides the same functionality as putting additional keys in the
+<b><tt>Pattern</tt></b> dictionary at the PostScript language level. The
+<b><tt>PaintProc</tt></b> is an ordinary C procedure that takes as
+parameters a <b><tt>gs_client_color&nbsp;*</tt></b>, which is the
+<b><tt>Pattern</tt></b> color that is being used for painting, and a
+<b><tt>gs_state&nbsp;*</tt></b>, which is the same graphics state that
+would be presented to the <b><tt>PaintProc</tt></b> in PostScript.
+Currently the <b><tt>gs_client_color&nbsp;*</tt></b> is always the current
+color in the graphics state, but the <b><tt>PaintProc</tt></b> should not
+rely on this. The <b><tt>PaintProc</tt></b> can retrieve the
+<b><tt>gs_client_pattern&nbsp;*</tt></b> from the
+<b><tt>gs_client_color&nbsp;*</tt></b> with the
+<b><tt>gs_getpattern</tt></b> procedure, also defined in
+<b><tt>gscolor2.h</tt></b>, and from there, it can retrieve the
+<b><tt>client_data</tt></b> pointer.
+
+<p>
+The normal way to set a <b><tt>Pattern</tt></b> color is to call
+<b><tt>gs_setpattern</tt></b> with the graphics state and with the
+<b><tt>gs_client_color</tt></b> returned by <b><tt>gs_makepattern</tt></b>.
+After that, one can use <b><tt>gs_setcolor</tt></b> to set further
+<b><tt>Pattern</tt></b> colors (colored, or uncolored with the same
+underlying color space); the rules are the same as those in PostScript.
+Note that for <b><tt>gs_setpattern</tt></b>, the
+<b><tt>paint.values</tt></b> in the <b><tt>gs_client_color</tt></b> must be
+filled in for uncolored patterns; this corresponds to the additional
+arguments for the PostScript <b><tt>setpattern</tt></b> operator in the
+uncolored case.
+
+<p>
+There is a special procedure <b><tt>gs_makebitmappattern</tt></b> for creating bitmap-based
+patterns. Its API is documented in <b><tt>gscolor2.h</tt></b>; its implementation, in
+<b><tt>gspcolor.c</tt></b>, may be useful as an example of a pattern using a particularly
+simple <b><tt>PaintProc.</tt></b>
+
+<h3><a name="Lower_level_API"></a>Lower-level API</h3>
+
+<p>
+Files named <b><tt>gx*.c</tt></b> implement the lower level of the graphics
+library. The interfaces at the <b><tt>gx</tt></b> level are less stable,
+and expose more of the implementation detail, than those at the
+<b><tt>gs</tt></b> level: in particular, the <b><tt>gx</tt></b> interfaces
+generally use device coordinates in an internal fixed-point representation,
+as opposed to the <b><tt>gs</tt></b> interfaces that use floating point
+user coordinates. Named entities at this level begin with
+<b><tt>gx_</tt></b>.
+
+<p>
+Files named <b><tt>gz*.c</tt></b> and <b><tt>gz*.h</tt></b> are internal to
+the Ghostscript implementation, and are not designed to be called by
+clients.
+
+<hr>
+
+<h2><a name="Full_example"></a>A full example</h2>
+
+<p>
+The file <b><tt>gslib.c</tt></b> in the Ghostscript fileset is a complete
+example program that initializes the library and produces output using it;
+files named <b><tt>*lib.mak</tt></b> (such as <b><tt>ugcclib.mak</tt></b>
+and <b><tt>bclib.mak</tt></b>) are makefiles using <b><tt>gslib.c</tt></b>
+as the main program. The following annotated excerpts from this file are
+intended to provide a roadmap for applications that call the library.
+
+<blockquote><pre>/* Capture stdin/out/err before gs.h redefines them. */
+#include &lt;stdio.h&gt;
+static FILE *real_stdin, *real_stdout, *real_stderr;
+static void
+get_real(void)
+{ real_stdin = stdin, real_stdout = stdout, real_stderr = stderr;
+}</pre></blockquote>
+
+<p>
+Any application using Ghostscript should include the fragment above at the
+very beginning of the main program.
+
+<blockquote><pre>#include "gx.h"</pre></blockquote>
+
+<p>
+The <b><tt>gx.h</tt></b> header includes a wealth of declarations related
+to the Ghostscript memory manager, portability machinery, debugging
+framework, and other substrate facilities. Any application file that calls
+any Ghostscript API functions should probably include <b><tt>gx.h</tt></b>.
+
+<blockquote><pre>/* Configuration information imported from gconfig.c. */
+extern gx_device *gx_device_list[];
+
+/* Other imported procedures */
+ /* from gsinit.c */
+extern void gs_lib_init(P1(FILE *));
+extern void gs_lib_finit(P2(int, int));
+ /* from gsalloc.c */
+extern gs_ref_memory_t *ialloc_alloc_state(P2(gs_memory_t *, uint));</pre></blockquote>
+
+<p>
+The externs above are needed for initializing the library.
+
+<blockquote><pre> gs_ref_memory_t *imem;
+#define mem ((gs_memory_t *)imem)
+ gs_state *pgs;
+ gx_device *dev = gx_device_list[0];
+
+ gp_init();
+ get_real();
+ gs_stdin = real_stdin;
+ gs_stdout = real_stdout;
+ gs_stderr = real_stderr;
+ gs_lib_init(stdout);
+ ....
+ imem = ialloc_alloc_state(&amp;gs_memory_default, 20000);
+ imem-&gt;space = 0;
+ ....
+ pgs = gs_state_alloc(mem);</pre></blockquote>
+
+<p>
+The code above initializes the library and its memory manager. <b><tt>pgs</tt></b> now
+points to the graphics state that will be passed to the drawing routines in
+the library.
+
+<blockquote><pre> gs_setdevice_no_erase(pgs, dev); /* can't erase yet */
+ { gs_point dpi;
+ gs_screen_halftone ht;
+ gs_dtransform(pgs, 72.0, 72.0, &amp;dpi);
+ ht.frequency = min(fabs(dpi.x), fabs(dpi.y)) / 16.001;
+ ht.angle = 0;
+ ht.spot_function = odsf;
+ gs_setscreen(pgs, &amp;ht);
+ }</pre></blockquote>
+
+<p>
+The code above initializes the default device and sets a default halftone
+screen. (For brevity, we have omitted the definition of odsf, the spot
+function.)
+
+<blockquote><pre> /* gsave and grestore (among other places) assume that */
+ /* there are at least 2 gstates on the graphics stack. */
+ /* Ensure that now. */
+ gs_gsave(pgs);</pre></blockquote>
+
+<p>
+The call above completes initializing the graphics state. When the program
+is finished, it should execute:
+
+<blockquote><pre> gs_lib_finit(0, 0);</pre></blockquote>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/Maintain.htm b/Master/xemtex/doc/ghostscript/Maintain.htm
new file mode 100644
index 00000000000..789602bd86c
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Maintain.htm
@@ -0,0 +1,210 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript maintenance procedures</title>
+<!-- $Id: Maintain.htm,v 1.23.2.12.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript maintenance procedures</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#CVS">Rules for CVS commits</a>
+<li><a href="#Adding_or_removing_files">Adding or Removing Files</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the instructions on how to <a href="Make.htm">build
+Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+This document describes various maintenance procedures associated with
+development version
+Ghostscript. It is only meant for developers actively working on
+Ghostscript.
+
+<hr>
+
+<h2><a name="CVS"></a>Rules for CVS Commits</h2>
+
+<p>
+This section describes a few rules intended to make life easier for people
+working with this code base.
+
+<p>
+At any given time, there are usually two active branches: a stable
+branch and a development branch. The development branch is HEAD, which
+is the default when doing a checkout without a -r flag. At the time of
+this writing (7 October 2002), the stable branch is tagged
+GS_7_0x.
+
+<p>
+A concise and useful document for working with CVS branches is Jeff
+Semke's <a href="http://www.psc.edu/~semke/cvs_branches.html"
+class="offsite">CVS
+Branch and Tag Primer</a>. A
+somewhat more detailed explanation is the <a
+href="http://www.loria.fr/~molli/cvs/doc/cvs_5.html"
+class="offsite">Branching and
+merging</a> section from the CVS documentation by Pascal Molli.
+
+<p>
+For new development commits, you can basically ignore the
+branches. Just commit to the HEAD branch. For bug fixes for the stable
+branch, it is your responsibility to commit to both the stable branch
+and, if appropriate, HEAD. Commits to HEAD are appropriate if they are
+in an area not being actively reworked, if the development version
+exhibits the same bug symptoms, and if the patch fixes these
+symptoms.
+
+<p>
+When modifying a number of files for a single issue, please group them
+together as a single commit. For two separate sets of changes dealing
+with two different issues, there should be two commits.
+
+<p>
+You should strive not to introduce any new bugs with your
+commit. Always make sure the code compiles before committing. Test the
+changes with several files, including the problem file in the case of
+a bug fix, and other files that may have been affected by the
+changes.
+
+<p>
+Always supply a descriptive log message for your commits. These log
+messages are used to automatically generate the <a
+href="News.htm">News.htm</a> file and History changelogs, and are also
+crucial for navigating CVS using the CVSweb gateway. Please try to
+keep the style of the descriptions similar to those in the current
+History#.htm files.
+
+<p>
+Log messages beginning with 'Fix' are treated specially. Such messages are
+put under the "Fixes problems" heading when the History files are
+generated. Additionally, if the first four characters are 'Fix:' this is removed
+(i.e., "Fix: The xyz" becomes "The xyz", but "Fixes xyz" is copied unchanged).
+This feature is intended for explicit bugfixes and should be avoided for
+enhancements or commits with long explanations.
+
+<p>
+Information about who changed what, when, and why is maintained in the
+CVS logs. In general, a file should be a clean representation of the
+current version rather than a history trail of how it got
+there. Keeping old code around for reference is usually not necessary,
+as it is stored in the CVS diffs. When necessary, use #if / #endif, or
+descriptive conditionals such as #ifdef OLD_CMAP_TABLES. Do not
+comment out old code. (A very few files that are distributed separate
+from Ghostscript have a change log at the beginning, which should be
+maintained: currently, only ansiknr.c and md5.[ch].)
+
+<p>
+Additionally, if your patch removes a feature, changes an interface or
+otherwise creates an incompatibility with the last release, you
+must add an entry to the "Incompatible changes" section of <tt>News.htm</tt>
+as this information can only be generated manually.
+This admonition applies to api changes that might
+affect other developers as well as user issues like switch behavior.
+Upon release, the accumulated incompatible changes will be moved to the
+relevant History file, and the News collection in cvs will be wiped clean
+for the next version.
+
+<p>
+All patches must be reviewed before being committed. Please email your
+patch to <a
+href="mailto:gs-code-review@ghostscript.com">gs-code-review@ghostscript.com</a>.
+Make sure to include your commit comment and any other information
+that would be helpful for the review. Also, please identify which
+branches the patch is intended for.
+
+<p>
+If you are not an employee or consultant of Artifex or artofcode, then
+we need a copyright assignment form so we can incorporate your
+changes. Please email Raph Levien &lt;<a
+href="mailto:raph@artofcode.com">raph@artofcode.com</a>&gt; and
+include your snailmail address for a hardcopy assignment form.
+
+<h2><a name="Adding_or_removing_files"></a>Adding or removing files</h2>
+
+<p>
+When adding or removing files, don't forget to invoke <b><tt>cvs
+add</tt></b> or <b><tt>cvs rm</tt></b>.
+
+<p>
+When adding files, update the file roadmap in
+<b><tt>doc/Develop.htm</tt></b>.
+
+<p>
+When adding or removing files other than .c or .h: If the files will be
+used at runtime, check the install list in <b><tt>unixinst.mak</tt></b>.
+
+<p>
+When adding .c files, update the relevant <b><tt>.mak</tt></b> file
+(usually <b><tt>devs.mak</tt></b>, <b><tt>int.mak</tt></b>, or
+<b><tt>lib.mak</tt></b>).
+
+<p>
+When adding new documentation, add a link to <tt>doc/Readme.htm</tt> and
+a short blurb describing the contents of the file.
+
+<p>
+When adding or changing fonts, update <b><tt>lib/Fontmap.GS</tt></b>,
+<b><tt>fonts.mak</tt></b>, and possibly the compiled fonts in
+<b><tt>gs.mak</tt></b> and the examples in
+<b><tt>doc/Fonts.htm</tt></b>.
+
+<p>
+When adding .ps files, update <b><tt>doc/Psfiles.htm</tt></b>.
+
+<p>
+Likewise, you will want to delete any references for a file you
+remove from Ghostscript.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2000 artofcode LLC.
+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>
diff --git a/Master/xemtex/doc/ghostscript/Make.htm b/Master/xemtex/doc/ghostscript/Make.htm
new file mode 100644
index 00000000000..2fecd470c45
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Make.htm
@@ -0,0 +1,2766 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>How to build Ghostscript from source code</title>
+<!-- $Id: Make.htm,v 1.36.2.19.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: make.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>How to build Ghostscript from source code</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#General_overview">General overview</a>
+<li><a href="#Acquiring">How to acquire the source code</a>
+<ul>
+<li><a href="#Ghostscript_source">Ghostscript source code</a>
+<li><a href="#Third-party_libraries">Third-party library source code</a>
+</ul>
+<li><a href="#Unpack">How to unpack the source code</a>
+<ul>
+<li><a href="#Tarfiles">How to unpack compressed tar files generally</a>
+<li><a href="#Zipfiles">How to unpack zip files generally</a>
+<li><a href="#Unpack_Ghostscript">How to unpack Ghostscript itself</a>
+<li><a href="#Unpack_libraries">How to unpack the third-party libraries</a>
+</ul>
+<li><a href="#Makefile_overview">How to prepare the makefiles</a>
+<ul>
+<li><a href="#Preparing_makefiles">Changes for your environment</a>
+<li><a href="#Features_and_devices">Selecting features and devices</a>
+<ul>
+<li><a href="#Precompiled_data">Precompiled run-time data</a>
+<li><a href="#GNU_readline">GNU readline</a>
+</ul>
+<li><a href="#Makefile_setup">Setting up "makefile"</a>
+<li><a href="#Invoke_make">Invoking "make"</a>
+<li><a href="#Cross-compiling">Cross-compiling</a>
+</ul>
+<li><a href="#PC_build">How to build Ghostscript from source (PC version)</a>
+<ul>
+<li><a href="#Borland_build">Borland/Inprise environment</a>
+<li><a href="#Microsoft_build">Microsoft environment</a>
+<li><a href="#Self-extracting_executables">Making self-extracting executables</a>
+<li><a href="#Watcom_build">Watcom environment</a>
+<li><a href="#Cygwin32_build">Cygwin32 gcc</a>
+<li><a href="#IntelWin32_build">Intel C/C++ compiler</a>
+</ul>
+<li><a href="#Mac_build">How to build Ghostscript from source (MacOS version)</a>
+<ul>
+<li><a href="#MacOS">Traditional MacOS</a>
+<li><a href="#MacOSX">MacOS X</a>
+</ul>
+<li><a href="#Unix_build">How to build Ghostscript from source (Unix version)</a>
+<ul>
+<li><a href="#Multi_architecture_makefile">The multi-architecture makefile</a>
+<li><a href="#UNIX_makefile">Setting up "makefile"</a>
+<li><a href="#Shared_object">Shared object</a>
+<li><a href="#Tool_specific_issues">Tool-specific issues</a>
+<ul>
+<li><a href="#gcc_27x">gcc 2.7.*</a>
+<li><a href="#GNU_make">GNU make</a>
+</ul>
+<li><a href="#OS_specific_issues">OS-specific issues</a>
+<ul>
+<li><a href="#386_Unix">386 Unix</a>
+<li><a href="#BSDI">BSDI</a>
+<li><a href="#Digital_Unix">Digital Unix (Alpha)</a>
+<li><a href="#FreeBSD">FreeBSD</a>
+<li><a href="#GNULinux">GNU/Linux</a>
+<li><a href="#NeXTSTEP">NeXTSTEP / OpenSTEP</a>
+<li><a href="#SCO">SCO Unix/Xenix</a>
+<li><a href="#SVR4">SVR4 Unix</a>
+<li><a href="#System_V">System V Unix platforms</a>
+<li><a href="#Unixware">Unixware</a>
+</ul>
+<li><a href="#Hardware_specific_issues">Hardware-specific issues</a>
+<ul>
+<li><a href="#Alpha_with_gcc">Alpha with gcc</a>
+<li><a href="#Apollo">H-P Apollo</a>
+<li><a href="#ATT_7040">AT&amp;T 7040 R3</a>
+<li><a href="#Convex">Convex</a>
+<li><a href="#DECStations">DECStations with Ultrix</a>
+<li><a href="#HP_RISC">H-P RISC workstations</a>
+<li><a href="#Intergraph">Intergraph Clipper</a>
+<li><a href="#MIPS">MIPS</a>
+<li><a href="#NCR_3550">NCR 3550</a>
+<li><a href="#Pyramid">Pyramid MIServer-S</a>
+<li><a href="#RS6000">IBM RS/6000 with AIX</a>
+<li><a href="#Silicon_Graphics">Silicon Graphics</a>
+<li><a href="#Sun">Sun</a>
+<li><a href="#SunOS">SunOS</a>
+<li><a href="#Solaris">Solaris</a>
+<li><a href="#VAX_Ultrix">VAX with Ultrix</a>
+</ul>
+</ul>
+<li><a href="#OS2_build">How to build Ghostscript from source (OS/2 version)</a>
+<li><a href="#VMS_build">How to build Ghostscript from source (OpenVMS version)</a>
+<ul>
+<li><a href="#GNU_make_VMS">Building with GNU make on OpenVMS</a>
+<li><a href="#MMK_MMS_VMS">Building with MMK or MMS on OpenVMS</a>
+</ul>
+<li><a href="#Other_environments">Other environments</a>
+<ul>
+<li><a href="#No_multi_thread">Environments lacking multi-threading</a>
+<li><a href="#Plan_9">Plan 9</a>
+<li><a href="#QNX">QNX</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the instructions on how to <a href="Install.htm">install
+Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="General_overview"></a>General overview</h2>
+
+<p>
+This document describes how to build a Ghostscript executable from source
+code. There are four major steps to building Ghostscript:
+
+<ol>
+<li>Acquire the compressed archive files of source code for Ghostscript and
+the required third-party libraries.
+<li>Unpack the archive files into the Ghostscript directory and correctly
+named subdirectories.
+<li>Prepare the makefiles, including specific changes for your operating
+environment and your choice of configuration options.
+<li>Invoke "<b><tt>make</tt></b>" to build the software.
+</ol>
+
+<p>
+The remainder of this document describes each of these steps in detail.
+Note that some of this process is platform-dependent. After building
+Ghostscript you must then install it; for that, see the
+<a href="Install.htm">installation instructions</a>.
+
+<hr>
+
+<h2><a name="Acquiring"></a>How to acquire the source code</h2>
+
+<p>
+Building Ghostscript requires the Ghostscript source code itself, and also
+the source code for some third-party libraries that Ghostscript uses.
+
+<h3><a name="Ghostscript_source"></a>Ghostscript source code</h3>
+
+<p><a name="Authoritative_distribution_site"></a>
+Ghostscript is available from all the standard GNU mirrors, e.g.
+
+<blockquote>
+<a href="ftp://ftp.gnu.org/pub/gnu/"
+class="offsite">ftp://ftp.gnu.org/pub/gnu/</a>
+</blockquote>
+
+<p>
+Ghostscript source code is packaged in two different formats:
+gzip-compressed tar files (*<b><tt>.tar.gz</tt></b>) and zip files
+(*<b><tt>.zip</tt></b>). For all versions there are gzip-compressed tar
+files:
+
+<blockquote>
+<b><tt>ghostscript-</tt></b>#.##<b><tt>.tar.gz</tt></b><br>
+<b><tt>ghostscript-fonts-std-</tt></b>#.##<b><tt>.tar.gz</tt></b><br>
+<b><tt>ghostscript-fonts-other-</tt></b>#.##<b><tt>.tar.gz</tt></b>
+</blockquote>
+
+<p>For recent versions of Ghostscript there may also be zip files
+
+<blockquote>
+<b><tt>gs</tt></b>###<b><tt>src.zip</tt></b><br>
+<b><tt>gs</tt></b>###<b><tt>w32.exe</tt></b>
+</blockquote>
+
+<p>
+("#.##" and "###" are version numbers in punctuated and unpunctuated form.)
+Software to decompress and extract both formats is available for almost
+every platform for which Ghostscript is available -- including Unix, DOS,
+MS Windows, and VMS -- so you can choose the format most convenient for
+you; but it's up to you to locate that software. See the section on <a
+href="#Unpack">unpacking the source code</a>.
+
+<h3><a name="Third-party_libraries"></a>Third-party library source code</h3>
+
+<p>
+To build Ghostscript you need the source code for the <a
+href="http://www.ijg.org/">Independent JPEG Group</a> (IJG) library, the
+<a href="http://www.libpng.org/pub/png/">Portable Network Graphics</a>
+(PNG)
+library, and the <a
+href="http://www.gzip.org/zlib/">zlib</a>
+compression and decompression library. Here are authoritative distribution
+points for these libraries, where as elsewhere, "#" is used for version
+numbers. The JPEG source code is quite stable, so the reference
+here includes the latest version number. The zlib references are
+version-independent and should always provide the latest version.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Third-party libraries: authoritative sources</font><hr>
+<tr> <td valign=top>JPEG
+ <td>&nbsp;&nbsp;&nbsp;
+ <td><a href="ftp://ftp.uu.net/graphics/jpeg/"
+class="offsite">ftp://ftp.uu.net/graphics/jpeg/</a><a
+href="ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz"
+class="offsite">jpegsrc.v6b.tar.gz</a><br>
+ <a href="ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/"
+class="offsite">ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/</a><a
+href="ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/jpegsr6b.zip">jpegsr6b.zip</a>
+
+<tr> <td valign=top>PNG
+ <td>&nbsp;
+ <td><a href="http://www.libpng.org/pub/png/src/"
+class="offsite">http://www.libpng.org/pub/png/src/</a>libpng-#.#.#.tar.gz<br>
+ <a href="http://www.libpng.org/pub/png/src/"
+class="offsite">http://www.libpng.org/pub/png/src/</a>lpng###.zip<br>
+ <a href="ftp://swrinde.nde.swri.edu/pub/png/src/"
+class="offsite">ftp://swrinde.nde.swri.edu/pub/png/src/</a>libpng-#.#.#.tar.gz<br>
+ <a href="ftp://swrinde.nde.swri.edu/pub/png/src/"
+class="offsite">ftp://swrinde.nde.swri.edu/pub/png/src/</a>lpng###.zip
+
+<tr> <td valign=top>zlib (latest)
+ <td>&nbsp;
+ <td> <a href="http://www.gzip.org/zlib/zlib.tar.gz"
+class="offsite">http://www.gzip.org/zlib/zlib.tar.gz</a><br>
+ <a href="http://www.gzip.org/zlib/zlib.zip"
+class="offsite">http://www.gzip.org/zlib/zlib.zip</a><br>
+ <a href="ftp://swrinde.nde.swri.edu/pub/png/src/" class="offsite">ftp://swrinde.nde.swri.edu/pub/png/src/zlib-#.#.#.tar.gz</a><br>
+ <a href="ftp://swrinde.nde.swri.edu/pub/png/src/" class="offsite">ftp://swrinde.nde.swri.edu/pub/png/src/zlib###.zip</a>
+</table></blockquote>
+
+<p>
+On DOS or MS Windows one ordinarily uses the zip file kits, in other
+environments the compressed tar files, but this is simply a matter of
+convenience, since for the same version of the software the compressed tar
+file has the same contents as the zip file. Note that each of these
+libraries has <b><em>its own version number</em></b> that has
+<b><em>nothing to do with Ghostscript's version number</em></b>; you should
+get the highest numbered version. (If you encounter difficulties in the
+build process you might have to use a lower-numbered version, but don't
+worry about this yet.) If you're running GNU/Linux, you might check whether
+these libraries are already available in source form on your system, since
+many GNU/Linux distributors include them; but we advise you to get the highest
+version from the Net if you can.
+
+<p>
+Although the zip archives of an old version of the PNG library may not be
+named <b><tt>lpng</tt></b>###<b><tt>.zip</tt></b>, we refer to it as
+<b><tt>lpng</tt></b>###<b><tt>.zip</tt></b>.
+
+<p>
+On MacOS, the .sit source archive includes the appropriate source versions
+of these libraries, so no additional downloads are necessary.
+
+<hr>
+
+<h2><a name="Unpack"></a>How to unpack the source code</h2>
+
+<p>
+Unfortunately there are no generally accepted standards for how to package
+source code into archives, so the instructions for unpacking Ghostscript are
+longer than they should be. We begin with a brief explanation of how to
+extract the two kinds of archive files.
+
+<h3><a name="Tarfiles"></a>How to unpack compressed tar files generally</h3>
+
+<p>
+Tar (<b><tt>.tar</tt></b>) files are the <em>de facto</em> standard for
+archiving files on Unix (every Unix system has the <b><tt>tar</tt></b>
+program), and programs to extract their contents are also widely available
+for DOS, MS Windows, and VMS. To economize on space and downloading time,
+Ghostscript's tar files are compressed with GNU <b><tt>gzip</tt></b>, which
+adds the suffix "<b><tt>.gz</tt></b>" to the file name, giving
+"<b><tt>.tar.gz</tt></b>".
+
+<p>
+To unpack a compressed tar file <b><tt>MyArchive.tar.gz</tt></b> you
+must both decompress it and extract the contents. You can do this in two
+steps, one to decompress the file and another to unpack it:
+
+<blockquote>
+<b><tt>gzip -d MyArchive.tar.gz</tt></b>
+<br><b><tt>tar -xf MyArchive.tar</tt></b>
+</blockquote>
+
+<p>
+or in a pipeline:
+
+<blockquote>
+<b><tt>gzip -d -c MyArchive.tar.gz | tar -xf -</tt></b>
+</blockquote>
+
+<p>
+or, if you have a program like GNU <b><tt>tar</tt></b> that can handle
+compressed tar files, with a single command:
+
+<blockquote>
+<b><tt>tar -zxf MyArchive.tar.gz</tt></b>
+</blockquote>
+
+<p>
+The <b><tt>tar</tt></b> program automatically preserves directory structure
+in extracting files. The Ghostscript source archive puts all files under a
+directory <b><tt>gs</tt></b>#.##, so using <b><tt>tar</tt></b> to unpack a
+compressed archive should always properly create that directory, which we
+will call the "gs directory". Make sure you're positioned in the
+<b><em>parent</em></b> of the gs directory <b><em>before</em></b> unpacking
+the files. If a subdirectory doesn't already exist, <b><tt>tar</tt></b>
+creates it.
+
+<p>
+Some other programs -- under MS Windows, for instance -- can also unpack
+compressed tar files, but they may not automatically preserve directory
+structure nor even extract files into the current directory. If you use
+one of these, you must
+
+<ul>
+<li>set the program's options to "Use folder names" or the equivalent, and
+<li>check that it is extracting files into the right place.
+</ul>
+
+<h3><a name="Zipfiles"></a>How to unpack zip files generally</h3>
+
+<p>
+Zip files are the <em>de facto</em> standard for archiving files on DOS and
+MS Windows, and programs to extract their contents are widely available for
+DOS, MS Windows, Unix, VMS, and other platforms. Zip files are at once an
+archive format and a compressed format, so an unzipping program
+decompresses and extracts archived files as a single step.
+
+<p>
+One common 16-bit DOS program is <b><tt>pkunzip</tt></b>, which comes in
+the <b><tt>pkzip</tt></b> package. If you use this, you should ensure that
+you have at least version 2.04g, because with its <b><tt>-d</tt></b>
+switch, that version of <b><tt>pkunzip</tt></b> preserves the directory
+structure of archived files when extracting them; see below. Another
+popular free program to unpack zip archives, available for DOS and MS
+Windows (16-bit and 32-bit), Unix, VMS, and other platforms, is InfoZIP
+<b><tt>unzip</tt></b>:
+
+<blockquote>
+<a href="http://www.info-zip.org/pub/infozip/UnZip.html"
+class="offsite">http://www.info-zip.org/pub/infozip/UnZip.html</a>
+</blockquote>
+
+<p>
+Unlike <b><tt>pkunzip</tt></b>, InfoZIP <b><tt>unzip</tt></b> automatically
+preserves the directory structure of extracted files. So if you have a zip
+archive <b><tt>MyArchive.zip</tt></b>:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Extracting zipped files</font><hr>
+<tr valign=bottom>
+ <th align=left>Command
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Preserves directory structure
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>pkunzip MyArchive.zip</tt></b>
+ <td>&nbsp;
+ <td>Does <b><em>NOT</em></b>
+<tr valign=top> <td><b><tt>pkunzip -d MyArchive.zip</tt></b>
+ <td>&nbsp;
+ <td><b><em>DOES</em></b> (note the <b><tt>-d</tt></b> switch)
+<tr valign=top> <td><b><tt>unzip MyArchive.zip</tt></b>
+ <td>&nbsp;
+ <td><b><em>DOES</em></b>
+</table></blockquote>
+
+<p>
+As with the compressed tar files, make sure you're positioned in the
+<b><em>parent</em></b> of the gs directory <b><em>before</em></b> unpacking
+the files. If a subdirectory doesn't already exist, <b><tt>zip</tt></b> or
+<b><tt>pkunzip&nbsp;-d</tt></b> creates it.
+
+<h3><a name="Unpack_Ghostscript"></a>How to unpack Ghostscript itself</h3>
+
+<p>
+At this point you have <a href="#Acquiring">acquired all the source code</a>
+and are ready to unpack it according to the preceding guidelines for <a
+href="#Tarfiles">tar files</a> or <a href="#Zipfiles">zip files</a>. To
+unpack the Ghostscript source, make the <b><em>parent</em></b> of the (new)
+gs directory the current directory.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <th align=left valign=top>2-step:
+ <td>&nbsp;&nbsp;&nbsp;
+ <td><b><tt>gzip -d ghostscript-</tt></b>#.##<b><tt>.tar.gz</tt></b><br><b><tt>tar -xf ghostscript-</tt></b>#.##<b><tt>.tar</tt></b>
+<tr><td>
+<tr> <th align=left valign=top>Pipe:
+ <td>&nbsp;
+ <td><b><tt>gzip -d -c ghostscript-</tt></b>#.##<b><tt>.tar.gz | tar -xf -</tt></b>
+<tr><td>
+<tr> <th align=left valign=top>GNU <b><tt>tar</tt></b>:
+ <td>&nbsp;
+ <td><b><tt>tar -zxf ghostscript-</tt></b>#.##<b><tt>.tar.gz</tt></b>
+<tr><td>
+<tr> <th align=left valign=top><b><tt>pkunzip</tt></b>:
+ <td>&nbsp;
+ <td><b><tt>pkunzip -d gs</tt></b>###<b><tt>sr1.zip</tt></b><br><b><tt>pkunzip -d gs</tt></b>###<b><tt>sr2.zip</tt></b><br>...
+<tr><td>
+<tr> <th align=left valign=top><tt>unzip</tt>:
+ <td>&nbsp;
+ <td><b><tt>unzip gs</tt></b>###<b><tt>src.zip</tt></b>
+</table></blockquote>
+
+<p>
+All the Ghostscript source files are now in subdirectories of the gs
+directory.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Source subdirectories</font><hr>
+<tr> <th valign=bottom align=left>Subdirectory
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left>Contents
+<tr> <td colspan=5><hr>
+<tr> <td><b><tt>src/</tt></b>
+ <td>&nbsp;
+ <td>C source code and makefiles
+<tr> <td><b><tt>lib/</tt></b>
+ <td>&nbsp;
+ <td>PostScript files and scripts used when running Ghostscript
+<tr> <td><b><tt>doc/</tt></b>
+ <td>&nbsp;
+ <td>Documentation
+<tr> <td><b><tt>man/</tt></b>
+ <td>&nbsp;
+ <td>Unix <b><tt>man</tt></b> pages
+<tr> <td><b><tt>examples/</tt></b>
+ <td>&nbsp;
+ <td>Sample PostScript files
+</table></blockquote>
+
+<h3><a name="Unpack_libraries"></a>How to unpack the third-party libraries</h3>
+
+<p>
+The Ghostscript makefiles expect to find the JPEG, PNG, and zlib source code
+in specific subdirectories of the <b><tt>gs</tt></b> directory, and this
+means you must pay careful attention to unpacking the source code for these
+packages. Use the same method for all of them, no matter how they're
+packaged:
+
+<ol>
+<li>Make the gs directory current.
+<li>Unpack the archive file, creating a subdirectory (which will include a
+version number).
+<li>Whatever the subdirectory's original name, rename it to the versionless
+name shown just below.
+</ol>
+
+<p>
+If you're uncertain how to unpack an archive, review the sections on <a
+href="#Tarfiles">compressed tar files</a> and <a href="#Zipfiles">zip
+files</a>.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">3d-party software subdirectories</font><hr>
+<tr> <th valign=bottom align=left>Package
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left>Possible<br>original name
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th valign=bottom align=left>Rename to
+<tr> <td colspan=5><hr>
+<tr> <td>JPEG
+ <td>&nbsp;
+ <td><b><tt>./jpeg-6b</tt></b>
+ <td>&nbsp;
+ <td><b><tt>./jpeg</tt></b>
+<tr> <td>PNG
+ <td>&nbsp;
+ <td><b><tt>./libpng-</tt></b>#.##
+ <td>&nbsp;
+ <td><b><tt>./libpng</tt></b>
+<tr> <td>zlib
+ <td>&nbsp;
+ <td><b><tt>./zlib-</tt></b>#.#.#
+ <td>&nbsp;
+ <td><b><tt>./zlib</tt></b>
+</table></blockquote>
+
+<hr>
+
+<h2><a name="Makefile_overview"></a>How to prepare the makefiles</h2>
+
+<p>
+The Ghostscript makefiles are very large and complex in order to deal with
+the diverse requirements of all the different systems where they may be
+used.
+
+<p>
+New with this release is support for the GNU autoconf tool for generating
+an automatic configuration script. If you're on unix or a related system
+that supports unix shell scripts, this is the easiest option to use.
+Simply type:
+
+<blockquote>
+<tt>./configure</tt>
+</blockquote>
+
+from the top level of the ghostscript source directory. It should configure
+itself based on what's available on your system, warn you of any missing
+dependencies, and generate a Makefile. At this point you can skip to the
+section <a href="#Invoke_make">invoking make</a> below. Note that the
+autoconfiguration option is only available with the unix .tar distribution
+of the source.
+
+<p>
+If your system doesn't support the configure script or you don't wish to
+use it, you can use the traditional ghostscript makefile system, editing
+the options by hand to match your system as described below.
+Fortunately, the only makefiles you're likely to want to change are
+relatively small ones containing platform-specific information.
+
+
+<blockquote><a name="Platform-specific_makefiles"></a><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Platform-specific makefiles</font><hr>
+<tr> <th align=left>Makefile
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Used for
+<tr> <td colspan=3><hr>
+<tr> <td><b><tt>bcwin32.mak</tt></b>
+ <td>&nbsp;
+ <td>MS Windows with Borland/Inprise compilers
+<tr> <td><b><tt>msvc32.mak</tt></b>
+ <td>&nbsp;
+ <td>MS Windows with Microsoft Visual C++ version 4 to 7.
+<tr> <td><b><tt>openvms.mak</tt></b>
+ <td>&nbsp;
+ <td>OpenVMS
+<tr> <td><b><tt>os2.mak</tt></b>
+ <td>&nbsp;
+ <td>OS/2 with the gcc/emx compiler
+<tr> <td><b><tt>unix-gcc.mak</tt></b>
+ <td>&nbsp;
+ <td>Unix with gcc
+<tr> <td><b><tt>unixansi.mak</tt></b>
+ <td>&nbsp;
+ <td>Unix with ANSI C compilers other than gcc
+<tr> <td><b><tt>watc.mak</tt></b>
+ <td>&nbsp;
+ <td>DOS with Watcom compilers
+<tr> <td><b><tt>watcw32.mak</tt></b>
+ <td>&nbsp;
+ <td>MS Windows with Watcom compilers
+<tr> <td>&nbsp;
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Platform-independent makefiles</font><hr>
+<tr> <td><b><tt>contrib.mak</tt></b>
+ <td>&nbsp;
+ <td>Contributed device drivers
+<tr> <td><b><tt>devs.mak</tt></b>
+ <td>&nbsp;
+ <td>Maintained device drivers
+<tr> <td><b><tt>gs.mak</tt></b>
+ <td>&nbsp;
+ <td>Documentation and miscellany
+<tr> <td><b><tt>int.mak</tt></b>
+ <td>&nbsp;
+ <td>Main makefile for the PostScript &amp; PDF interpreter
+<tr> <td><b><tt>jpeg.mak</tt></b>
+ <td>&nbsp;
+ <td>JPEG library
+<tr> <td><b><tt>lib.mak</tt></b>
+ <td>&nbsp;
+ <td>Graphics engine
+<tr> <td><b><tt>libpng.mak</tt></b>
+ <td>&nbsp;
+ <td>PNG library
+<tr> <td><b><tt>version.mak</tt></b>
+ <td>&nbsp;
+ <td>Version and release date
+<tr> <td><b><tt>zlib.mak</tt></b>
+ <td>&nbsp;
+ <td>zlib library
+</table></blockquote>
+
+<p>
+Since these files change from one Ghostscript version to another, sometimes
+substantially, and since they all include documentation for the various
+options, here we don't duplicate most of that documentation: we recommend
+strongly that you review the entire makefile specific for your operating
+system and compiler before building Ghostscript.
+
+<h3><a name="Preparing_makefiles"></a>Changes for your environment</h3>
+
+<p>
+You must edit the platform-specific makefile to change any of these:
+
+<ul>
+<li>The name of the makefile itself (<b><tt>MAKEFILE</tt></b> macro)
+<li>The locations to install Ghostscript files (<b><tt>prefix</tt></b> etc.)
+<li>The default search paths for the initialization and font files
+(<b><tt>GS_LIB_DEFAULT</tt></b> macro)
+<li>The debugging options (<b><tt>DEBUG</tt></b> and <b><tt>TDEBUG</tt></b>
+macros)
+<li>Which optional features to include (<b><tt>FEATURE_DEVS</tt></b>)
+<li>Which device drivers to include (<b><tt>DEVICE_DEVS</tt></b> and
+<b><tt>DEVICE_DEVS</tt></b>{<em>1--20</em>} macros)
+<li>Default resolution parameters for some printer drivers
+(<b><tt>devs.mak</tt></b> or <b><tt>contrib.mak</tt></b>, whichever defines
+the driver)
+
+</ul>
+
+<p>
+The <a href="#Platform-specific_makefiles">platform-specific makefiles</a>
+include comments describing all these except the
+<b><tt>DEVICE_DEVS</tt></b> options. These are described in
+<b><tt>devs.mak</tt></b> and <b><tt>contrib.mak</tt></b>, even though the
+file that must be edited to select them is the <a
+href="#Platform-specific_makefiles">platform-specific makefile</a>.
+
+<p>
+Some platform-specific options are described in the sections for individual
+platforms. See the "Options" section near the beginning of the relevant
+makefile for more information.
+
+<h3><a name="Features_and_devices"></a>Selecting features and devices</h3>
+
+<p>
+You may build Ghostscript with any of a variety of features and with any
+subset of the available device drivers. The complete list of features is
+in a comment at the beginning of <b><tt>gs.mak</tt></b>, and the complete
+list of drivers in comments at the beginning of <b><tt>devs.mak</tt></b>
+and <b><tt>contrib.mak</tt></b>. To find what devices a platform-specific
+makefile selects to include in the executable, look in it for all lines of
+the form
+
+<blockquote>
+<b><tt>FEATURE_DEVS=</tt></b><em>{list of features}</em><br>
+<b><tt>DEVICE_DEVS</tt></b>*<b><tt>=</tt></b><em>{list of devices}</em>
+</blockquote>
+
+<p>
+For example, if the makefile has
+
+<blockquote><b><tt>
+FEATURE_DEVS=$(PSD)level2.dev
+</tt></b></blockquote>
+
+<p>
+indicating that only the PostScript Level 2 facilities should be included,
+you might make it
+
+<blockquote><b><tt>
+FEATURE_DEVS=$(PSD)level2.dev $(PSD)pdf.dev
+</tt></b></blockquote>
+
+<p>
+to add the ability to interpret PDF files. (In fact,
+<b><tt>FEATURE_DEVS</tt></b> in the current Unix makefiles already includes
+<b><tt>$(PSD)pdf.dev</tt></b>.) The Unix makefile also defines
+
+<blockquote><b><tt>
+DEVICE_DEVS=$(DD)x11.dev
+</tt></b></blockquote>
+
+<p>
+indicating that the X Windows driver should be included, but since
+platform-specific makefiles as distributed normally include many of the
+possible features and drivers, you will probably rather remove from the
+makefile the features and drivers you don't want. It does no harm to
+include unneeded features and devices, but the resulting executable will be
+larger than needed.
+
+<p>
+You may edit the <b><tt>FEATURE_DEVS</tt></b> line to select or omit any of
+the features listed near the beginning of <b><tt>gs.mak</tt></b>, and the
+<b><tt>DEVICE_DEVS</tt></b>* lines to select or omit any of the device
+drivers listed near the beginning of <b><tt>devs.mak</tt></b> and
+<b><tt>contrib.mak</tt></b>. The first device listed in the definition of
+<b><tt>DEVICE_DEVS</tt></b> becomes the default device for this executable;
+see the usage documentation for <a href="Use.htm#Output_device">how to
+select an output device</a> at run time using the
+<a href="Use.htm#DEVICE_switch"><b><tt>-sDEVICE=</tt></b></a> switch. If
+you can't fit all the devices on a single line, you may add lines defining
+
+<blockquote>
+<b><tt>DEVICE_DEVS1=$(DD)</tt></b><em>{dev11}</em><b><tt>.dev</tt></b> ... <b><tt>$(DD)</tt></b><em>{dev1n}</em><b><tt>.dev</tt></b>
+<br><b><tt>DEVICE_DEVS2=$(DD)</tt></b><em>{dev21}</em><b><tt>.dev</tt></b> ... <b><tt>$(DD)</tt></b><em>{dev2n}</em><b><tt>.dev</tt></b>
+</blockquote>
+
+<p>
+etc., up to <b><tt>DEVICE_DEVS15</tt></b>. Don't use continuation lines --
+on some platforms they don't work.
+
+<p>
+Note that if you want to include a driver named <em>xxx</em>, you must put
+<b><tt>$(DD)</tt></b><em>xxx</em><b><tt>.dev</tt></b> in
+<b><tt>DEVICE_DEVS</tt></b>*. Similarly, if you want to include a feature
+related to the PostScript or PDF language interpreters (PostScript level
+1 .. 3, or other language features such as the ability to read EPSF files or
+TrueType font files), you must represent it as
+<b><tt>$(PSD)</tt></b><em>xxx</em><b><tt>.dev</tt></b>. If you are linking
+only the graphics library -- not the language interpreter(s) -- with an
+application and want to include optional graphics library features such as
+CIE color, you represent them as
+<b><tt>$(GLD)</tt></b><em>xxx</em><b><tt>.dev</tt></b>.
+
+<h4><a name="Precompiled_data"></a>Precompiled run-time data</h4>
+
+<p>
+Ghostscript normally reads a number of external data files at run time:
+initialization files containing PostScript code, fonts, and other resources
+such as halftones. By changing options in the top-level makefile for the
+platform, you can cause some of these files to be compiled into the
+executable: this simplifies installation, improves security, may reduce
+memory requirements, and may be essential if you are planning on putting
+Ghostscript into ROM.
+
+<p>
+To compile the initialization files (<b><tt>lib/gs_init.ps</tt></b>, etc.)
+into the executable, change the <b><tt>0</tt></b> to a <b><tt>1</tt></b> in
+the line
+
+<blockquote><b><tt>
+COMPILE_INITS=0
+</tt></b></blockquote>
+
+<p>
+To compile fonts into the executable, see <a
+href="Fonts.htm#Precompiling">Precompiling fonts</a>.
+
+<p>
+To compile threshold-array halftones into the executable, see the "Compiled
+halftone" section of <b><tt>int.mak</tt></b> for a sample makefile fragment,
+<b><tt>genht.c</tt></b> for the syntax of halftone data files, and
+<b><tt>lib/ht_ccsto.ps</tt></b> for a sample data file. Note that even
+though the data files use PostScript syntax, compiled halftones do not
+require the PostScript interpreter and may be used with the graphics library
+alone.
+
+<h4><a name="GNU_readline"></a>GNU readline</h4>
+
+<p>
+GNU Ghostscript distributions include support for GNU readline, but this
+is not officially supported at this time. We will, however, welcome bug
+fixes or updates, and distribute them with subsequent releases.
+
+<h3><a name="Makefile_setup"></a>Setting up "makefile"</h3>
+
+<p>
+
+After going through the steps just described to <a href="#Unpack">unpack
+the
+sources</a>, make any desired <a href="#Preparing_makefiles">changes to
+the
+makefiles</a>, and unpack or create links to the <a
+href="#Unpack_libraries">third party libraries</a>, as the final step in
+preparing to build Ghostscript you must usually associate the name
+"<b><tt>makefile</tt></b>" with the correct makefile for your environment so
+the <b><tt>make</tt></b> command can find it. See the section on your
+particular platform for how to do that if necessary.
+
+<h3><a name="Invoke_make"></a>Invoking "make"</h3>
+
+<dl>
+<dt><b><tt>make</tt></b>
+<dd>Builds Ghostscript without debugging options.
+</dl>
+
+<dl>
+<dt><a name="Debugging"></a><b><tt>make debug</tt></b>
+<dd>Builds Ghostscript with debugging options and additional internal error
+checks. The program will be somewhat larger and slower, but it will behave
+no differently unless you actually turn on debugging options at execution
+time with the <b><tt>-DDEBUG</tt></b> or
+<a href="Use.htm#Debugging"><b><tt>-Z</tt></b> command line switches</a>
+described in the usage documentation.
+</dl>
+
+<dl>
+<dt><b><tt>make pg</tt></b>
+<dd>On Unix platforms, builds with the <b><tt>-pg</tt></b> compiler
+switch, creating an executable for time profiling.
+</dl>
+
+<dl>
+<dt><b><tt>make begin</tt></b>
+<dd>On PC platforms, attempts a quick and dirty compilation of all the
+<b><tt>.c</tt></b> files in the current directory. See the
+<a href="#Make_begin">more detailed explanation</a>.
+</dl>
+
+<dl>
+<dt><b><tt>make install</tt></b>
+<dd>After building, installs the Ghostscript executables, support files,
+and documentation, but does <b><em>not</em></b> install fonts. See the
+<a href="Install.htm">installation documentation</a>.
+</dl>
+
+<dl>
+<dt><b><tt>make clean</tt></b>
+<dd>Deletes all the files created by the build process (relocatables,
+executables, and miscellaneous temporary files). If you've built an
+executable and want to save it, move it first to another place, because
+"<b><tt>make clean</tt></b>" deletes it.
+</dl>
+
+<p>
+<b><em>Note:</em></b> on most platforms some of these simple instructions don't
+quite work in one way or another. Read the section on your specific
+platform.
+
+<h3><a name="Cross-compiling"></a>Cross-compiling</h3>
+
+<p>
+If you are compiling Ghostscript on machines <b>X1</b> ... <b>X</b><em>n</em> with
+cross-compilers that generate code for machine <b>Y</b>, you must first
+perform several extra steps on some machine <b>Z</b> (not necessarily of the
+same type as either <b>X</b><em>i</em> or <b>Y</b>). First of all, choose a makefile
+appropriate for <b>Z</b> and edit it to reflect the run-time options you
+wish to include (<b><tt>FEATURE_DEVS</tt></b>, <b><tt>DEVICE_DEVS*</tt></b>,
+and any other relevant options), just as for non-cross-compilation.
+
+<p>
+If <b>Z</b> runs Unix, perform the following steps:
+<ol>
+<li>On <b>Z</b>,
+<blockquote>
+<b><tt>make clean</tt></b><br>
+<b><tt>make obj/arch.h obj/genconf obj/echogs</tt></b>
+</blockquote>
+
+<li>Edit <b><tt>obj/arch.h</tt></b> to reflect the architecture of <b>Y</b>.
+
+<li>On <b>Z</b>,
+<blockquote>
+<b><tt>make CC=: CCLD=:</tt></b>
+</blockquote>
+
+<li>Copy the files <b><tt>obj/*.h</tt></b> from <b>Z</B> to the directory on
+each <b>X</b><em>i</em> that will be used for compilation.
+
+<li>Extract from the file <b><tt>obj/ldt.tr</tt></b> (on <b>Z</b>) the list
+of <b><tt>.o</tt></b> files that will be linked: this gives the list of
+source files that must be compiled.
+
+<li>Do the compilations on <b>X</b><em>i</em>.
+</ol>
+
+<p>
+If <b>Z</b> runs some version of Microsoft Windows with Microsoft Visual
+C++, use the following steps. <em>NOTE: We have not actually tested
+this.</em>
+
+<ol>
+<li>On <b>Z</b>,
+<blockquote>
+<b><tt>nmake clean</tt></b><br>
+<b><tt>nmake obj\arch.h obj\genconf.exe obj\echogs.exe</tt></b>
+</blockquote>
+
+<li>Edit <b><tt>obj\arch.h</tt></b> to reflect the architecture of <b>Y</b>.
+
+<li>On <b>Z</b>,
+<blockquote>
+<b><tt>nmake CC=rem LINK=rem</tt></b>
+</blockquote>
+
+<li>Copy the files <b><tt>obj\*.h</tt></b> from <b>Z</B> to the directory on
+each <b>X</b><em>i</em> that will be used for compilation.
+
+<li>Extract from the file <b><tt>obj\ldt.tr</tt></b> (on <b>Z</b>) the list
+of <b><tt>.obj</tt></b> files that will be linked: this gives the list of
+source files that must be compiled.
+
+<li>Do the compilations on <b>X</b><em>i</em>.
+</ol>
+
+<hr>
+
+<h2><a name="PC_build"></a>How to build Ghostscript from source (PC version)</h2>
+
+<p>
+All Ghostscript builds in PC (DOS and MS Windows) environments are 32- or
+64-bit: 16-bit builds are not supported. The relevant makefiles are
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">PC makefiles</font><hr>
+<tr> <th align=left>Makefile
+ <td>&nbsp;&nbsp;
+ <th align=left>Construction tools
+ <td>&nbsp;&nbsp;
+ <th align=left>For environment
+<tr> <td colspan=5><hr>
+<tr> <td valign=top><b><tt>bcwin32.mak</tt></b>
+ <td>&nbsp;
+ <td valign=top><a href="#Borland_build">Borland/Inprise C++ 4.x</a>
+ <td>&nbsp;
+ <td valign=top>32-bit MS Windows 3.1 + Win32s, 95, 98, NT
+<tr> <td valign=top><b><tt>msvc32.mak</tt></b>
+ <td>&nbsp;
+ <td valign=top><a href="#Microsoft_build">Microsoft Visual C++ 4 to 7</a>
+ <td>&nbsp;
+ <td valign=top>MS Windows 32-bit
+<tr> <td valign=top><b><tt>watc.mak</tt></b>
+ <td>&nbsp;
+ <td valign=top><a href="#Watcom_build">Watcom C/386 or C++</a>
+ <td>&nbsp;
+ <td valign=top>MS-DOS 32-bit (extended)
+<tr> <td valign=top><b><tt>watcw32.mak</tt></b>
+ <td>&nbsp;
+ <td valign=top><a href="#Watcom_build">Watcom C/386 or C++</a>
+ <td>&nbsp;
+ <td valign=top>MS Windows 32-bit
+<tr> <td valign=top><b><tt>unix-gcc.mak</tt></b>
+ <td>&nbsp;
+ <td valign=top><a href="#Cygwin32_build">Cygnus gcc</a>
+ <td>&nbsp;
+ <td valign=top><a href="http://sourceware.cygnus.com/cygwin/">Cygnus gnu-win32</a>
+</table></blockquote>
+
+<p>
+To build Ghostscript you need MS-DOS version 3.3 or later and
+Borland/Inprise C/C++ (4.0 or later); Microsoft Visual C++ (version 4.0 or
+later); Watcom C/386 (version 8.5 or later) or C++ (any version); or the
+free djgpp + go32 development system. The options in the makefiles are
+chosen to strike a balance between RAM consumption and likely usefulness.
+If you run <b><tt>make</tt></b> in directory <em>{dir}</em>, the default
+configuration generates an executable that assumes the Ghostscript
+initialization and font files are in directory
+<em>{dir}</em><b><tt>\lib</tt></b>.
+
+<p>
+Note that the <b><tt>make</tt></b> program supplied with each PC compiler
+has a different name. We refer to this program generically as
+<b><tt>make</tt></b> everywhere else in this document, but you will find the
+correct name for each compiler in the relevant section below that discusses
+that compiler.
+
+<p>
+You must have <b><tt>COMMAND.COM</tt></b> in your path to build Ghostscript.
+After making the changes needed to choose features and devices to build into
+the executable, you must create the directory where the compiler will do its
+work (normally the <b><tt>obj</tt></b> subdirectory of the current
+directory) and the directory where the compiled code will be placed
+(normally the <b><tt>bin</tt></b> subdirectory). Then to build the
+Ghostscript executable all you need do is give the <b><tt>make</tt></b>
+command.
+
+<p><a name="Make_begin"></a>
+A special make target "<b><tt>begin</tt></b>" attempts to compile all the
+<b><tt>.c</tt></b> files in the current directory. Some of these
+compilations will fail, but the ones that succeed will go considerably
+faster because they don't individually pay the overhead of starting up the
+compiler. So a good strategy for building the executable for the first
+time, or after changing a widely used <b><tt>.h</tt></b> file, is to do the
+fast compilation of everything possible, then the controlled compilation of
+everything that failed in the first step:
+
+<blockquote><b><tt>
+make begin<br>
+make
+</tt></b></blockquote>
+
+<p>
+<b><em>Note:</em></b> if you unpack the Ghostscript sources on a DOS or MS Windows
+system from a Unix tar file, the unpacked files have linefeed alone as the
+line terminator (the Unix convention) instead of carriage return + linefeed
+(the Microsoft convention), which may make the C compiler unhappy. One
+simple way to fix this, if you have the InfoZIP <b><tt>zip</tt></b> and
+<b><tt>unzip</tt></b> programs, is
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td><b><tt>zip -l CVTEMP.zip *.bat *.c *.h *.def *.rc</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>(Letter "l", not the digit "1")
+<tr> <td><b><tt>unzip -o CVTEMP.zip</tt></b>
+ <td>&nbsp;
+ <td>(Rewrite all the same files correctly)
+<tr> <td><b><tt>del CVTEMP.zip</tt></b>
+ <td>&nbsp;
+ <td>(Delete the temporary zip file)
+</table></blockquote>
+
+<h3><a name="Borland_build"></a>Borland/Inprise environment</h3>
+
+<p>
+To compile Ghostscript with the Borland/Inprise environment (hereafter
+referred to as just "Borland"), you need Borland C++ (version 4.0 or later);
+specifically the compiler, <b><tt>make</tt></b> utility, and linker. You
+also need either the Borland assembler (version 1.0 or later) or the
+Microsoft assembler (version 4.0 or later).
+
+<p>
+To create "<b><tt>makefile</tt></b>", give the command
+
+<blockquote><b><tt>
+echo !include "src\bcwin32.mak" &gt;makefile
+</tt></b></blockquote>
+
+<p>
+To run the <b><tt>make</tt></b> program, give the commmand
+
+<blockquote><b><tt>
+make
+</tt></b></blockquote>
+
+<p>
+Besides the source files and the makefiles, you need:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <td>*<b><tt>.bat</tt></b>
+ <td>&nbsp;
+ <td>(a variety of batch files used in the build process)
+</table></blockquote>
+
+<p>
+Comments in the makefiles describe the configuration parameters. If your
+configuration is different from the following, you should definitely read
+those comments and see if you want or need to change any of this:
+<ul>
+<li>The compiler files are in <b><tt>C:\BC</tt></b> and its subdirectories.
+<li>You are using the Borland assembler <b><tt>tasm</tt></b>.
+<li>You want an executable that will run on any 32-bit PC-compatible,
+regardless of processor type (80386, 80486, Pentium, or compatible) and
+regardless of whether a math coprocessor (80x87) is present -- an issue only
+with 80386 processors.
+</ul>
+
+<p>
+<b>Notes</b>
+
+<ul>
+<li>A user reports that the Borland C++ 4.00 with patch 1-6 doesn't
+produce a working executable of Ghostscript 5.03. We can't test this,
+since we no longer have this compiler.
+
+<li>Borland C++ 4.5 has a bug or bugs that cause(s) the 32-bit Windows
+executable to crash if you give any @-files on the command line. Among
+other things, this makes the uniprint driver unusable, because it references
+the .upp configuration files this way. This problem may possibly be fixed
+by one or more of the patch files on
+
+<blockquote>
+<a href="ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/"
+class="offsite">ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/</a>
+</blockquote>
+
+<li>Borland C++ 4.52 has a bug that causes the 32-bit Windows executable to
+fail during startup. Borland (now Inprise) provides a patch for this bug
+in
+
+<blockquote>
+<a
+href="ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/bc45xp1.zip"
+class="offsite">ftp://ftp.borland.com/pub/borlandcpp/devsupport/patches/bc4_5/bc45xp1.zip</a>
+</blockquote>
+
+<li>Borland C++ 5.0 and 5.01 have a code generator bug that generates
+incorrect code for the construct <b><tt>!file_is_valid()</tt></b>. Do not
+attempt to compile Ghostscript with these compilers. If you want to report
+this bug to Borland, send them the result of compiling
+<b><tt>ziodev.c</tt></b> and tell them to look at the code generated for
+<b><tt>file_is_valid()</tt></b> and <b><tt>!file_is_valid()</tt></b>. We
+don't know whether Borland C++ 5.02 still has this problem.
+
+<li>When building for the MS Windows Win32s environment, the make
+process will stop after it has created <b><tt>genarch.exe</tt></b>.
+You should then run "<b><tt>_genarch.bat</tt></b>", wait until
+<b><tt>genarch</tt></b> has finished and then exit MS Windows. Then type
+"<b><tt>make</tt></b>" again to restart the make process.
+
+</ul>
+
+<h3><a name="Microsoft_build"></a>Microsoft Environment</h3>
+
+<p> NOTE: We have received reports that the Microsoft Visual C++ 5.0 and 6.0 compilers
+ produce incorrect code for Ghostscript version 6.0 and later, from the same
+ source code that compiles and runs correctly with other compilers. In spite
+ of these reports, several members of the Artifex staff use version 6.0 of the
+ MSVC compiler on a regular basis and we have not found any problems. You may
+ also want to try out the <a href="#IntelWin32_build">Intel&nbsp;C/C++ compiler</a>,
+ which can be integrated into the Microsoft Visual C++ environment.
+<p>To compile Ghostscript using the Microsoft environment, you need Microsoft
+ Visual C++ 4.0 or later with its associated "<b><tt>nmake</tt></b>" utility
+ and linker.
+<h4><a name="Using_the_MS_Development_Environment"> </a>Using Microsoft Developer
+ Studio</h4>
+<p>Microsoft Developer Studio is the Microsoft Visual C++ integrated development
+ environment. To use it to build Ghostscript: it is first necessary to create
+ a new workspace/project. To create the workspace/project, open Microsoft Developer
+ Studio and select <b><tt>File/New</tt></b>. In the dialog window that is opened,
+ select 'Makefile' as the type of project. Specify a name for the project. (Microsoft
+ does not allow special characters such as ., *, ?, /, or \ as part of project
+ names.) Also specify the location of the master directory for your Ghostscript
+ files. Then select OK.
+<p> In the next dialog window, specify the build command line as <b><tt>nmake
+ /f src/msvc32.mak DEVSTUDIO= </tt></b> Note the value for <b><tt>DEVSTUDIO</tt></b>
+ is empty. Then select <b><tt>Finish</tt></b>.
+<p>At this point, it is now possible to build Ghostscript using Developer Studio.
+ To build, press F7 or select the build icon. Note: multiple warnings will also
+ given about things like double to float data conversions. Ignore them. We have
+ not found a way to create a single set of sources that does not create warnings
+ with the different compilers and operating systems supported by Ghostscript.
+ We are working to reduce the number of the warning messages.
+<p>To run Ghostscript inside of Developer Studio, it is necessary to specify the
+ name of the executable program . Select <b><tt>Project/Settings</tt></b>. Select
+ the <b><tt>Debug</tt></b> tab. Then for <b><tt>Executable for debug session:</tt></b>
+ specify <b><tt>bin/gswin32.exe</tt></b>
+<p>To use all of the features of Microsoft Developer Studio for debugging, and
+ modifying Ghostscriptt, you need to finish the remaining steps.
+<p>To add the Ghostscript DLL to the project, select <b><tt>Project/Settings</tt></b>.
+ Select the <b><tt>Debug</tt></b> tab. Change the <b><tt>Category</tt></b> to
+ <b><tt>Additional DLLs</tt></b>. Then specify <b><tt>bin/gsdll32.dll</tt></b>.
+<p> To specify the Ghostscript program arguments, select <b><tt>Project/Settings</tt></b>.
+ Select the <b><tt>Debug</tt></b> tab. Change the <b><tt>Category</tt></b> to
+ <b><tt>General</tt></b>. Then specify the desired program arguments. For example,
+ specifying: <b><tt>examples/tiger.ps</tt></b> will result in the tiger example
+ file being displayed when Ghostscript is executed. .
+<p> A final note: it is possible to create a command file (build.bat) to be used
+ for the build command line. If many different workspaces/projects are created,
+ it is simpler to use a build batch command file rather than retyping the build
+ command line for each new project. Here is an example used by one of Artifex's
+ staff members. This file is one line:
+<blockquote><b><tt> nmake -f src/msvc32.mak DEVSTUDIO= DEBUG=1 GS_LIB_DEFAULT="./lib/;./font;$(GSROOTDIR)/lib;$(AROOTDIR)/fonts"
+ </tt></b></blockquote>
+<p> The <b><tt>DEBUG=1</tt></b> enables many debugging features built into Ghostscript.
+ Please note the double quotes around the value for <b><tt>GS_LIB_DEFAULT</tt></b>
+ and the addition of <b><tt>./lib;./fonts;</tt></b> to its definition. This uses
+ the local (within the project) copy of the <b><tt>lib</tt></b> and <b><tt>fonts</tt></b>
+ directories. This is convenient if any changes need to be made in these directories.
+<h4><a name="Using_the_command_line"></a>Using the command line</h4>
+<p>Ghostscript can be made using either the DOS shell or one one of the various
+ command line shells made for Windows.
+<p>In order for the makefiles to work properly, two items may have to be changed.
+ If you are not using version 6.x then before building, in <b><tt>src\msvc32.mak</tt></b>
+ find the line "<b><tt>MSVC_VERSION=6</tt></b>" and change it to "<b><tt>MSVC_VERSION=4</tt></b>",
+ "<b><tt>MSVC_VERSION=5</tt></b>" or "<b><tt>MSVC_VERSION=7</tt></b>".
+<p>In some cases the location of the Microsoft Developer Studio, needs to be changed.
+ The location of Microsoft Developer Studio is defined by the value of <b><tt>DEVSTUDIO</tt></b>.
+ There are four different definitions of <b><tt>DEVSTUDIO</tt></b> in src\msvc32.mak.
+ There is one for each of the currently supported versions of Microsoft Visual
+ C++ (4, 5, 6 and 7).
+<p>The normal installation process for Microsoft Visual C++ includes setting the
+ location of the Microsoft Visual C++ executables (cl.exe, link.exe, nmake.exe,
+ rc.exe) in your PATH definition and the LIB and INCLUDE environment variables
+ are set to point to the Microsoft Visual C++ directories. If this is true then
+ the value for <b><tt>DEVSTUDIO</tt></b> can be changed to empty. I.e. <b><tt>DEVSTUDIO=</tt></b>
+<p> If PATH, LIB, and INCLUDE are not correctly set then the value for <b><tt>DEVSTUDIO</tt></b>
+ needs to be defined. For example, for version 6.0, the default definition for
+ the location for the Microsoft Developer Studio is: <b><tt>DEVSTUDIO=C:\Program
+ Files\Microsoft Visual Studio </tt></b> If the path to Microsoft Developer Studio
+ on your system differs from the default then change the appropriate definition
+ of <b><tt>DEVSTUDIO</tt></b>. (Remember that there is a separate definition
+ of <b><tt>DEVSTUDIO</tt></b> for each version of MSVC, so be sure to change
+ the correct definition.)
+<p>To run the <b><tt>make</tt></b> program, give the command
+<blockquote><b><tt>
+nmake -f src\msvc32.mak
+</tt></b></blockquote>
+
+<p>
+Rather than changing src/msvc32.mak, these values can be specified on the make
+command line, I.e.
+
+<blockquote><b><tt> nmake -f src\msvc32.mak MSVC_VERSION=6 DEVSTUDIO="C:\Program Files\Microsoft Visual Studio" <br>
+nmake -f src\msvc32.mak MSVC_VERSION=7 DEVSTUDIO="C:\Program Files\Microsoft Visual Studio .NET"
+ </tt></b></blockquote>
+
+<p> Note that double quotes have been added around the path for <b><tt>DEVSTUDIO</tt></b>
+ due to the spaces in the path value.
+<p>
+This command line can also be put into a batch file.
+
+<p> You may get warning messages during compilation about <b><tt>/QI0f</tt></b>
+ being an undefined switch, or the message "dwmain32.def: EXETYPE not supported
+ for platform; ignored" during linking. Multiple warnings will also given about
+ things like double to float data conversions. Ignore them. We have not found
+ a way to create a single set of sources that does not create warnings with the
+ different compilers and operating systems supported by Ghostscript.
+<p>
+The Microsoft VC++ 5.0 compiler locks up when compiling
+<b><tt>gxi12bit.c</tt></b> with <b><tt>/O2</tt></b>. Compile this file
+without <b><tt>/O2</tt></b>.
+
+<p> The Microsoft VC++ 5.0 compiler produces a non-working executable if compiling
+ without stack checking. Don't change the setting <b><tt>TDEBUG=1</tt></b> in
+ <b><tt>msvc32.mak</tt></b>.
+
+
+<h4><a name="Self-extracting_executables"></a>Making self-extracting executables</h4>
+
+<p>
+You can build self-extracting Windows executables of Ghostscript. (This is
+not needed to use Ghostscript.) Currently this requires both the
+Borland/Inprise and the Microsoft compilers, and also two pieces of
+third-party software:
+
+<ul>
+<li><b><tt>WinZipSE</tt></b>, available from <a
+href="http://www.winzip.com/winzipse.html"
+class="offsite">http://www.winzip.com/winzipse.html</a>.
+This is not free.
+<li><b><tt>zip</tt></b>, available from <a
+href="http://www.info-zip.org/pub/infozip/Zip.html" class="offsite">
+http://www.info-zip.org/pub/infozip/Zip.html</a>. This is free.
+</ul>
+
+<p>
+You will have to edit <b><tt>src/winint.mak</tt></b> to define
+<b><tt>WINZIPSE_XE</tt></b> and <b><tt>ZIP_XE</tt></b> respectively as the
+path names of these programs. See <a href="Release.htm">Release.htm</a> for
+the detailed procedure.
+
+<h3><a name="Watcom_build"></a>Watcom environment</h3>
+
+<p>
+Because of limitations in the way that Watcom implemented their
+<b><tt>wmake</tt></b> program, you must run the Watcom tools under MS
+Windows, even if you are generating a DOS executable. This is very
+unfortunate, and there is no good technical reason for it, but we were
+unable to persuade Watcom (now Powersoft) to do anything about it.
+
+<p>
+To use the Watcom compiler, add to <b><tt>AUTOEXEC.BAT</tt></b> the line
+"<b><tt>set&nbsp;DOS4G=quiet</tt></b>". Check that
+<b><tt>AUTOEXEC.BAT</tt></b> also contains a line of the form
+"<b><tt>set&nbsp;WATCOM=</tt></b><em>{wcdir}</em>" where <em>{wcdir}</em> is
+the directory where you installed the Watcom tools, and that the setting of
+<b><tt>PATH</tt></b> includes <em>{wcdir}</em><b><tt>\binnt</tt></b> (or
+<b><tt>%WATCOM%\binnt</tt></b>) before <em>{wcdir}</em><b><tt>\binw</tt></b>
+(or <b><tt>%WATCOM%\binw</tt></b>). Then to create
+"<b><tt>makefile</tt></b>":
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <th align=left>For
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Give the command
+<tr> <td colspan=3><hr>
+<tr> <td>DOS
+ <td>&nbsp;
+ <td nowrap><b><tt>echo&nbsp;!include&nbsp;src\watc.mak&nbsp;&gt;makefile</tt></b>
+<tr> <td>MS Windows
+ <td>&nbsp;
+ <td nowrap><b><tt>echo&nbsp;!include&nbsp;src\watcw32.mak&nbsp;&gt;makefile</tt></b>
+</table></blockquote>
+
+<p>
+Before compiling, change the definition of the <b><tt>WCVERSION</tt></b>
+macro in the makefile (<b><tt>watc.mak</tt></b> or
+<b><tt>watcw32.mak</tt></b>) to the version of the Watcom compiler you are
+using. This is necessary to handle some minor incompatibilities between
+versions.
+
+<p>
+To run the <b><tt>make</tt></b> program, give the commmand
+
+<blockquote>
+<b><tt>wmake -u</tt></b>
+</blockquote>
+
+<p>
+For information on using the GNU <b><tt>make</tt></b> program with the
+Watcom compiler to build MS-DOS executables, which avoids the limitations in
+<b><tt>wmake</tt></b>, see <a href="New-user.htm#MS-DOS">here</a>.
+
+<h3><a name="Cygwin32_build"></a>Cygwin32 gcc</h3>
+
+<p>
+A user reports that it is possible to compile Ghostscript for MS Windows NT
+using the Cygwin32 gcc compiler, GNU <b><tt>make</tt></b>, and the
+<b><tt>unix-gcc.mak</tt></b> makefile, with only two small source code
+changes:
+
+<ul>
+<li>Add "<b><tt>b</tt></b>" to the call to <b><tt>fopen</tt></b> in <b><tt>gp_open_scratch</tt></b>
+<li>Mirror the <b><tt>gp_ntfs</tt></b> logic for <b><tt>gp_file_name_is_absolute</tt></b>
+</ul>
+
+<p>
+Information about this compiler and environment is at the Cygnus site:
+
+<blockquote>
+<a href="http://sources.redhat.com/cygwin/">http://sources.redhat.com/cygwin/</a>
+</blockquote>
+
+<p>
+Please note that Cygnus's licensing terms aren't quite as liberal about
+redistribution as either the GNU
+<a href="http://www.gnu.org/copyleft/gpl.html">General Public License</a>
+or the Aladdin <a href="Public.htm">Free Public License</a>, so read their
+license carefully if you want to redistribute the results of using their
+compiler.
+
+<h3><a name="IntelWin32_build"></a>Intel C/C++ environment</h3>
+
+<p>
+Intel provides a C/C++ compiler that is compatible with the <a
+href="#Microsoft_build">Microsoft Visual&nbsp;C++ environment</a>. The main
+advantage of this compiler over MSVC&nbsp;5.0 and 6.0 is that it produces
+working code even when all optimizations are enabled and when stack checking
+is disabled.
+
+<p>
+To build Ghostscript using the Intel C/C++ compiler, you have to make the
+following small changes in the makefiles:
+
+<ul>
+<li>Find and change the second occurrence of
+"<b><tt>COMPILE_FULL_OPTIMIZED</tt></b>" to "<b><tt>/O2</tt></b>" in file
+<b><tt>msvccmd.mak</tt></b>. <li>Override "<b><tt>TDEBUG</tt></b>",
+"<b><tt>COMP</tt></b>", and "<b><tt>COMPAUX</tt></b>" when invoking
+<b><tt>nmake</tt></b>.
+</ul>
+
+<p>
+More specifically, use "<b><tt>TDEBUG=0</tt></b>" and set both
+"<b><tt>COMP</tt></b>" and "<b><tt>COMPAUX</tt></b>" to the full path of
+<b><tt>icl</tt></b> (for example
+"<b><tt>COMP=C:\intel\compiler45\bin\icl</tt></b>" if the Intel&nbsp;C/C++
+compiler V4.5 was installed to <b><tt>C:\intel</tt></b>). It is suggested
+that you use a batch file to launch <b><tt>nmake</tt></b>, since the command
+line processes the "<b><tt>=</tt></b>" on its own. Also, you may need to
+execute <b><tt>vcvars32.bat</tt></b> and <b><tt>iccvars.bat</tt></b> to
+register the proper paths for the compiler, its include files and its
+libraries.
+
+<p>
+You can buy or download a 30-day evaluation version of the Intel&nbsp;C/C++
+compiler from Intel's Software Performance Tools web site:
+
+<blockquote>
+<a href="http://www.intel.com/vtune/">http://www.intel.com/vtune/</a>
+</blockquote>
+
+<hr>
+
+<h2><a name="Mac_build"></a>How to build Ghostscript from source (MacOS version)</h2>
+
+<h3><a name="MacOS"></a>Traditional MacOS</h3>
+
+<p>
+The Macintosh version of Ghostscript requires the <a href="http://www.metrowerks.com/"
+class="offsite">Metrowerks Codewarrior</a> development suite. Download the
+<tt>macgs-7xx-src.sit</tt> source archive from the location listed
+below. This includes a Codewarrior .mcp project file than can be used to build both
+Carbon and CFM versions of the ghostscript shared library component.
+
+<blockquote>
+<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/current/"
+
+class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/current/</a>
+</blockquote>
+
+<p>
+If your system doesn't automatically unpack the source archive, you can
+download the gratis <a href="http://stuffit.com/download.html"
+class="offsite">Stuffit Expander</a> to open it.
+
+<p>
+This archive includes appropriate versions of the jpeg, zlib and libpng 3rd party
+library source for convenience. You must still download the fonts and place them in an
+appropriate location, along with the contents of the <tt>lib</tt> directory from the source
+archive.
+
+<p>
+Note that since this is just a library component, you will need a front-end application, such as
+MacGSView, to actually view or convert postscript and pdf documents.
+
+
+<h3><a name="MacOSX"></a>MacOS X</h3>
+
+<p>
+The unix source distribution (.tar.gz) builds fine on Darwin/MacOS X,
+albeit without a display device. You can generally just use the <tt>Makefile</tt>
+generated by ./configure or <tt>macosx.mak</tt> as your top-level makefile.
+This will allow you to use Ghostscript from the command line as a BSD-layer
+tool to rasterize postscript and pdf and convert between
+the various formats supported by Ghostscript.
+
+<p>
+There is also a support for building Ghostscript as a framework. This is
+a special encapsulated shared library format specific to MacOS X. To build
+the framework, copy <tt>macosx.mak</tt> to the top-level directory, rename it to
+<tt>makefile</tt> and issue 'make framework' from Terminal.app. This will result
+in a <tt>Ghostscript.framework</tt> in the <tt>sobin</tt> directory. It must be
+manually copied to /Library/Frameworks/ before applications
+can use it. You may need to create the Frameworks/ directory on some systems.
+
+<p>
+Finally, there is a <tt>macos-mcp.mak</tt> makefile that can be
+used to set up the Codewarrior shared library component build described
+in the section on <a href="#MacOS">Classic MacOS</a> above.
+
+<p>
+To set up the shlib build, download and uncompress the Ghostscript source.
+If the archive doesn't contain the 3rd party jpeg, png, and zlib source,
+you must download them as described at the beginning of this document and
+unpack them under the macgs-###-src directory under the specific names
+<tt>jpeg</tt>, <tt>zlib</tt> and <tt>libpng</tt>. You cannot use symlinks as
+Codewarrior will not be able to follow them for some of the needed header
+files.
+
+<p>
+Copy <tt>src/macos-mcp.mak</tt> to the top-level directory and rename
+it <tt>makefile</tt>. Then run 'make' in that directory, either from
+within Terminal.app or through Project Builder. This will set up the
+generated code required for the build and run a shell script to generate
+<tt>ghostscript.mcp.xml</tt>. Launch Metrowerks Codewarrior, and select
+'Import Project...' from the File menu, and open the xml project file.
+When asked, save the results as <tt>ghostscript.mcp</tt> in the same
+directory and you should be ready to build the shared library component.
+
+</p>
+Tradtional ('PPC') applications based on the Code Fragment Manager
+will not be able to open the shlib linked with CarbonLib, so two
+targets are provided, one with carbon and one without.
+
+<hr>
+
+<h2><a name="Unix_build"></a>How to build Ghostscript from source (Unix version)</h2>
+
+<p>
+Before issuing the <b><tt>make</tt></b> command to build Ghostscript, you
+have to make some choices, for instance
+<ul>
+<li>which compiler to use;
+<li>what features and devices to include;
+<li>whether to use system libraries for PNG and zlib;
+<li>and how to handle issues for your particular platform.
+</ul>
+
+<p>
+Be sure to check the sections on <a
+href="#Tool_specific_issues">tool-</a>, <a
+href="#OS_specific_issues">OS-</a>, and <a
+href="#Hardware_specific_issues">hardware-</a>specific issues for notes
+on your particular platform and compiler. In fact, that is the
+<b><em>first</em></b> place to check if you build Ghostscript and it crashes
+or produces obviously incorrect results.
+
+<h3><a name="Multi_architecture_makefile"></a>The multi-architecture makefile</h3>
+
+<p>
+Especially if you are working in a Unix environment with multiple CPU types,
+operating systems, and/or C compilers, you may find the file
+<b><tt>all-arch.mak</tt></b> useful. This user-contributed file includes
+"wrappers" for the Unix makefiles for many different common environments.
+The author of this file notes:
+
+<blockquote>
+
+<p>
+This makefile allows you to execute
+
+<pre>
+ make `hostname`
+</pre>
+
+<p>
+on any machine on a network, without having to examine the Makefile for a
+specific target name. Also, some of the targets in the Makefile incorporate
+special changes in compiler options for certain files, to work around
+compiler bugs that Ghostscript has been so good at exposing. Having that
+special handling written down in a Makefile proves very convenient.
+
+<p>
+I don't do "make install" until I've done
+
+<pre>
+ cd ...build-directory.../gs-x.yz
+ cd lib
+ ../bin/gs ../examples/tiger.ps
+</pre>
+
+<p>
+and verified that the famous tiger can be correctly displayed. Also, the
+"make install" step is careful to first remove any existing
+<b><tt>$(BINDIR)/gs</tt></b>, then install a new gs there with a hard link
+to gs-x.yz.
+
+<p>
+That way, each installation makes gs a synonym for the latest release,
+but earlier ones remain in place in case backtracking is needed, which
+I've fairly often wanted to do when investigating changed behavior, or
+a suspected bug.
+
+<p>
+When I've been experimenting with a new feature, such as GNU readline
+support, I change the setting of GS from gs to ngs (new gs), so as not
+to break any existing programs by the installation of an experimental
+version.
+
+</blockquote>
+
+<h3><a name="UNIX_makefile"></a>Setting up "makefile"</h3>
+
+<p>
+The files <b><tt>src/unix</tt></b>*<b><tt>.mak</tt></b> are the makefiles for
+Unix platforms, and you choose one based on what compiler you use. To
+build Ghostscript, however, you must use the simple command
+"<b><tt>make</tt></b>", which must find the file "<b><tt>makefile</tt></b>"
+(or "<b><tt>Makefile</tt></b>"). If your system supports symbolic links,
+set up "<b><tt>makefile</tt></b>" like this.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td>GNU gcc:
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td nowrap><b><tt>ln -s src/unix-gcc.mak makefile</tt></b>
+<tr> <td>Non-gcc ANSI C compiler:
+ <td>&nbsp;
+ <td nowrap><b><tt>ln -s src/unixansi.mak makefile</tt></b>
+</table></blockquote>
+
+<p>
+If your system doesn't support symbolic links, first finish all changes to
+the compiler-specific makefile, then make a hard link, omitting the
+<b><tt>-s</tt></b> switch.
+
+<p>
+The makefile distributed with Ghostscript selects the following devices
+to include in the build:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Devices included as distributed</font><hr>
+<tr valign=bottom>
+ <th align=left>Type
+ <td>&nbsp;&nbsp;
+ <th align=left>Devices
+<tr> <td colspan=3><hr>
+<tr valign=top> <td>Display
+ <td>&nbsp;
+ <td>X Windows
+<tr valign=top> <td>Printers
+ <td>&nbsp;
+ <td>H-P DeskJets, LaserJets, and color DeskJets and PaintJets; Canon BubbleJets
+<tr valign=top> <td>File formats
+ <td>&nbsp;
+ <td>Group 3 &amp; Group 4 fax; JPEG; PCX; PBM, PGM, PKM, &amp; PPM; TIFF; PostScript images; PNG; distilled PDF, PostScript, and EPS; PCL XL ("PCL 6")
+</table></blockquote>
+
+<p>
+The <b><tt>unix</tt></b>*<b><tt>.mak</tt></b> files explicitly compile and
+link the JPEG, PNG, and zlib libraries into the executable. If your Unix
+system already includes the PNG and zlib libraries -- probably in
+<b><tt>/usr/lib/libpng.</tt></b>{<b><tt>a</tt></b>,<b><tt>so</tt></b>} and
+<b><tt>/usr/lib/libz.</tt></b>{<b><tt>a</tt></b>,<b><tt>so</tt></b>} -- and
+you would rather use those copies, change the definition of
+<b><tt>SHARE_LIBPNG</tt></b> and <b><tt>SHARE_ZLIB</tt></b> from 0 to 1 in
+the relevant <b><tt>unix</tt></b>*<b><tt>.mak</tt></b> file before
+compiling. Note that if you do this, you will get non-debug versions of
+these libraries even if you selected <b><tt>DEBUG</tt></b> in the makefile.
+At the insistence of some users, we have also provided the ability to do
+this with the JPEG library (<b><tt>SHARE_JPEG</tt></b>), but should not use
+it: in order to be compatible with Adobe interpreters (which do not follow
+the JPEG standard exactly), Ghostscript has to compile the IJG code with
+the non-standard definition
+
+<blockquote><b><tt>
+#define D_MAX_BLOCKS_IN_MCU 64
+</tt></b></blockquote>
+
+<p>
+and since shared versions of this library will not have been compiled this
+way, you will get errors on some valid PostScript and PDF input files. Note
+also that because not all the JPEG library header files that Ghostscript
+uses are normally installed in <b><tt>/usr/include</tt></b>, you must have
+the source code for this library available even if you set
+<b><tt>SHARE_JPEG</tt></b> to 1.
+
+<p>
+If the X11 client header files are located in some directory which your
+compiler does not automatically search, you must change the
+<b><tt>XINCLUDE</tt></b> macro in the makefile to include a specific
+<b><tt>-I</tt></b> switch. See the comment preceding
+<b><tt>XINCLUDE</tt></b> in the makefile.
+
+<p>
+Currently Ghostscript is set up to compile and link in a generic Unix
+environment. Some Unix environments may require changing the
+<b><tt>LDFLAGS</tt></b> macro in the makefile; be sure to check the <a
+href="#Unix_build">Unix section</a> for your specific tools, operating
+system, and hardware.
+
+<p>
+Ghostscript uses ANSI syntax for function definitions. Building
+with pre-ANSI C compilers is no longer supported.
+
+<h3><a name="Shared_object"></a>Shared object</h3>
+To build Ghostscript as a shared object with gcc
+(instead of as a single large executable) use:
+<pre>
+ ln -s src/unix-gcc.mak makefile
+ make so
+</pre>
+<p>
+This will build <b><tt>libgs.so</tt></b> and two programs which use the
+shared object, <b><tt>gsx</tt></b> which uses Gtk+ and <b><tt>gsc</tt></b>
+which does not.
+
+<p>
+Do not use <tt>make -f src/unix-gcc.mak</tt> because this will
+break the recursive make used in building the shared object.
+<p>
+To install the shared object and these two programs:
+<pre>
+ make soinstall
+</pre>
+To delete files created by the build process:
+<pre>
+ make soclean
+</pre>
+<p>
+For more details see <a href="../src/unix-dll.mak">unix-dll.mak</a>.
+
+<h3><a name="Tool_specific_issues"></a>Tool-specific issues</h3>
+
+<h4><a name="gcc_27x"></a>gcc 2.7.*</h4>
+
+<p>
+Some of the issues in using gcc are very specific to the particular
+computer, the particular version of the operating system, and the
+particular version of gcc available to you. You can check the version of
+gcc with the <b><tt>gcc&nbsp;--version</tt></b> command.
+
+<p>
+An optimizer bug in gcc versions 2.7.0, 2.7.1, and 2.7.2 causes the
+compiler to generate incorrect code. The makefile works around this, but
+we recommend that if possible you use either an earlier or a later version
+of gcc; for instance, gcc 2.5.8, gcc 2.6.3, 2.7.2.1 or later which don't
+have this bug. Note, however, that gcc has other problems on some
+platforms, so please read the section for your specific platform.
+
+<h4><a name="GNU_make"></a>GNU make</h4>
+
+<p>
+Current versions of GNU <b><tt>make</tt></b> have no problems, but GNU
+<b><tt>make</tt></b> 3.59 can't handle the final linking step in some
+cases; if this happens, use the platform's standard <b><tt>make</tt></b>,
+typically <b><tt>/bin/make</tt></b>.
+
+<h3><a name="OS_specific_issues"></a>OS-specific issues</h3>
+
+<h4><a name="386_Unix"></a>386 Unix</h4>
+
+<ul>
+<li>gcc versions older than 1.38 on Intel 80386 systems do not compile
+Ghostscript correctly with the <b><tt>-O</tt></b> option.
+
+<li>gcc 1.39 under <b><tt>386BSD</tt></b> has a bug that causes
+float-to-integer conversions to compile incorrectly, rendering the
+executable unusable.
+
+<li>X11R5 may need "<b><tt>#include &lt;stddef.h&gt;</tt></b>" in <b><tt>x_.h</tt></b>.
+
+<li>Also see regarding <a href="#System_V">System V</a> platforms.
+</ul>
+
+<h4><a name="BSDI"></a>BSDI</h4>
+
+<ul>
+
+<li>Use <b><tt>unix-gcc.mak</tt></b> and set<blockquote><b><tt>
+STDLIBS=-lm<br>
+XINCLUDE=-I/usr/X11R6/include<br>
+XLIBDIRS=-L/usr/X11R6/lib<br>
+XLIBS=Xt SM ICE Xext X11<br></tt></b></blockquote>
+
+<li>If you want to use the shared versions of the PNG and zlib libraries, set
+<b><tt>SHARE_LIBPNG=1</tt></b> and <b><tt>SHARE_ZLIB=1</tt></b>
+as discussed <a href="#UNIX_makefile">previously</a>.
+
+<li>BSD <b><tt>make</tt></b> uses a different syntax for its
+<b><tt>include</tt></b> directive than Ghostscript;
+use <b><tt>gmake</tt></b> instead.
+</ul>
+
+<h4><a name="Digital_Unix"></a>Digital Unix (Alpha)</h4>
+
+<ul>
+
+<li>Use <b><tt>unixansi.mak</tt></b> for all Digital Unix compilers.
+
+<li>For versions of Digital Unix before 4.0, set
+
+<p>
+<b><tt>CFLAGS=-std -migrate -Olimit 1000 -g3 -O2 $(XCFLAGS)<br>
+LDFLAGS=-lots $(XLDFLAGS)</tt></b>
+
+<p>
+You may be able to omit <b><tt>-g3</tt></b>. For later versions of Digital
+Unix, users have reported that the proper flags are
+
+<p>
+<b><tt>CFLAGS=-std1 -Olimit 1000 -g3 -O2 $(XCFLAGS)</tt></b>
+
+<p>
+again, optionally omitting the <b><tt>-g3</tt></b>.
+
+<li>If you get compiler error messages about "ANSI aliasing rules", please
+see the section about <a href="#VMS_build">building under OpenVMS</a> below.
+
+</ul>
+
+<h4><a name="FreeBSD"></a>FreeBSD</h4>
+
+<p>
+On FreeBSD systems, in the top-level makefile (<b><tt>unixansi.mak</tt></b>,
+<b><tt>unix-gcc.mak</tt></b>, change the
+value of <b><tt>STDLIBS</tt></b> from <b><tt>-lpthread -lm</tt></b> to
+<b><tt>-lc_r -lm</tt></b> before building.
+
+<h4><a name="GNULinux"></a>GNU/Linux</h4>
+
+<ul>
+<li>If you build on GNU/Linux with X11 R6 or later, you may get link-time error
+messages about undefined references to various functions beginning with
+"SMC" and "ICE". If this happens, make sure that <b><tt>XLIBS</tt></b> in
+the makefile is set to
+"<b><tt>Xt&nbsp;SM&nbsp;ICE&nbsp;Xext&nbsp;X11</tt></b>" rather than
+"<b><tt>Xt&nbsp;Xext&nbsp;X11</tt></b>".
+
+<li>With gcc version 2.6.3 or later, you may encounter an incompatibility
+in object formats (<b><tt>a.out</tt></b> vs. ELF) with the XFree86 library.
+Typically, <b><tt>ld</tt></b> complains that some X library is not found,
+or that many <b><tt>Xlib</tt></b> or <b><tt>Xt</tt></b> functions are not
+found in the library (similar to the messages for omitting
+<b><tt>SM</tt></b> and <b><tt>ICE</tt></b> from <b><tt>XLIBS</tt></b>). Or
+you get a message when you start Ghostscript that the program or the shared
+library is an unrecognized format.
+If this happens, edit <b><tt>unix-gcc.mak</tt></b> to add the switches
+"<b><tt>-b i486-linuxaout</tt></b>" to both <b><tt>CFLAGS</tt></b> and
+<b><tt>LDFLAGS</tt></b>, then "<b><tt>make clean</tt></b>" followed by
+"<b><tt>make</tt></b>"). If this doesn't help, or if other strange things
+happen, contact your GNU/Linux supplier or support resource.
+
+<li>A few of Ghostscript's drivers are multi-threaded (currently only those
+whose names begin with "bmpa"). These drivers require <b><tt>libc</tt></b>
+version 6 or higher. Some GNU/Linux distributions, including Red Hat
+distributions before 5.0, have <b><tt>libc</tt></b> version 5, so these
+drivers may not compile. If this happens, remove these drivers (from the
+definitions of <b><tt>DEVICE_DEVS*</tt></b> in
+<b><tt>unix-gcc.mak</tt></b>), and, if you wish, substitute the
+corresponding single-threaded drivers, whose names don't include the "a".
+
+</ul>
+
+<p>
+You may want to create <a href="http://www.rpm.org">RPM</a> (<b>R</b>ed Hat
+<b>P</b>ackage <b>M</b>anager) files for Ghostscript. Because of the lack
+of standardization of installation directory names between GNU/Linux releases,
+Ghostscript does not come with any RPM specification files. You may wish to
+contact the following people who have created RPM spec files in the past:
+
+<blockquote>
+Henri Gomez <a href="mailto:hgomez@slib.fr">hgomez@slib.fr</a><br>
+Russell Lang <a href="mailto:gsview@ghostgum.com.au">gsview@ghostgum.com.au</a><br>
+Cristian Gafton <a href="mailto:gafton@redhat.com">gafton@redhat.com</a><br>
+Preston Brown <a href="mailto:pbrown@redhat.com">pbrown@redhat.com</a><br>
+</blockquote>
+
+<p>
+The following instructions may work for the Ghostscript 6.0x distributions,
+once you have RPM spec files that you believe are appropriate.
+
+<p>
+To create RPMs for Ghostscript N.NN:
+
+<ul>
+<li>Change to your source directory (<b><tt>/usr/src/redhat</tt></b> for Red Hat
+ Linux 5.1).
+<li>Copy <b><tt>ghostscript-N.NN*.tar.gz</tt></b> (4 source files) to the
+<b><tt>SOURCES</tt></b> subdirectory.
+<li>Copy <b><tt>ghostscript-fonts-std-6.0.tar.gz</tt></b> and
+<b><tt>ghostscript-fonts-other-6.0.tar.gz</tt></b> to the
+<b><tt>SOURCES</tt></b> subdirectory.
+<li>From <b><tt>SOURCES/ghostscript-N.NN.tar.gz</tt></b>,
+<ul>
+<li>extract <b><tt>rpm-conf.dif</tt></b> and copy to
+<b><tt>SOURCES/ghostscript-N.NN-config.patch</tt></b>
+<li>extract <b><tt>gs.rps</tt></b> and copy to
+<b><tt>SPECS/ghostscript-N.NN.spec</tt></b>
+<li>extract <b><tt>gs-fonts.rps</tt></b> and copy to
+<b><tt>SPECS/ghostscript-fonts-N.NN.spec</tt></b>
+</ul>
+If the contents of these files have become out of date, you
+will need to update the version number N.NN in the spec files,
+and update the patch file.
+<li> Change to the SPECS subdirectory and then execute the commands
+<blockquote><b><tt>
+rpm -ba ghostscript-N.NN.spec<br>
+rpm -ba ghostscript-fonts-N.NN.spec
+</tt></b></blockquote>
+This will create the RPM files
+<blockquote><b><tt>
+RPMS/i386/ghostscript-N.NN-1.i386.rpm<br>
+RPMS/noarch/ghostscript-fonts-N.NN-1.noarch.rpm<br>
+SRPMS/ghostscript-N.NN-1.src.rpm<br>
+SRPMS/ghostscript-fonts-N.NN-1.src.rpm<br>
+</tt></b></blockquote>
+<li> See instructions on how to <a href="Install.htm#Install_Unix">install
+ Ghostscript under Unix</a>.
+</ul>
+
+<p>
+Bruce Babcock
+&lt;<a href="mailto:babcock@math.psu.edu">babcock@math.psu.edu</a>&gt; has
+made available everything needed to build Ghostscript under Slackware
+3.*, Red Hat 4.* and 5.*, and Debian 1.* and 2.0; the files include
+instructions and shell scripts to build and install Ghostscript, as well as
+all the source and font kits and patches needed:
+
+<blockquote>
+<a href="ftp://ykbsb2.yk.psu.edu/pub/ghost/GS-5.10/"
+class="offsite">ftp://ykbsb2.yk.psu.edu/pub/ghost/GS-5.10/</a><br>
+<a href="ftp://ykbsb2.yk.psu.edu/pub/ghost/GS-5.10-Extra/"
+class="offsite">ftp://ykbsb2.yk.psu.edu/pub/ghost/GS-5.10-Extra/</a>
+</blockquote>
+
+<h4><a name="NeXTSTEP"></a>NeXTSTEP / OpenSTEP</h4>
+
+<ul>
+<li>If you are using a NeXTSTEP version before 3.3, please get a no-cost
+upgrade (along with Y2K patches) from Apple.
+
+<li>For all NeXTSTEP systems, use <b><tt>unix-gcc.mak</tt></b>. Make the
+following changes:
+
+<ul>
+<li>In <b><tt>unix-aux.mak</tt></b> (and <b><tt>ugcclib.mak</tt></b>, if you
+are using only the library) change the definition of <b><tt>INCLUDE</tt></b>
+to "<b><tt>INCLUDE=/usr/include/bsd</tt></b>";
+
+<li>in <b><tt>unix-gcc.mak</tt></b>:
+
+<ul>
+<li>change <b><tt>CC=gcc</tt></b> to <b><tt>CC=cc</tt></b>;
+
+<li>change the definition of <b><tt>STDLIBS</tt></b> to only
+<b><tt>-lm</tt></b>;
+
+<li>change <b><tt>SYNC=posync</tt></b> to <b><tt>SYNC=nosync</tt></b>;
+
+<li>add <b><tt>-D_POSIX_SOURCE</tt></b> to <b><tt>CFLAGS</tt></b> and remove
+<b><tt>-g</tt></b>;
+
+<li>remove <b><tt>-Wstrict-prototypes</tt></b> from <b><tt>GCFLAGS</tt></b>,
+and if you are using NeXTSTEP 3.3 (with gcc 2.5.8), also remove
+<b><tt>-Wmissing-declarations</tt></b>;
+</ul>
+
+<li>to the end of <b><tt>Fontmap.GS</tt></b> add the line
+"<b><tt>/Ohlfs&nbsp;/Courier&nbsp;;</tt></b>".
+</ul>
+
+<li>If you are running the Pencom co-Xist X server (development version),
+the X headers and libraries are in the default places, so change the
+makefile definitions of <b><tt>XINCLUDE</tt></b> and
+<b><tt>XLIBDIRS</tt></b> to empty strings.
+</ul>
+
+<h4><a name="SCO"></a>SCO Unix/Xenix</h4>
+
+<ul>
+<li>See also "<a href="#386_Unix">386 Unix</a>" and
+"<a href="#System_V">System V Unix platforms</a>".
+
+<li>The standard cc compiler on SCO OpenServer v5 has optimizer bugs.
+Compile without -O.
+
+<li>The SCO Unix C compiler apparently can't handle the
+<b><tt>P</tt></b><em>n</em> macros in <b><tt>std.h</tt></b>. If you get
+strange compilation errors on SCO Unix, ask SCO for a compiler fix.
+
+<li>Meanwhile, to use gcc with SCO ODT, see <b><tt>unix-gcc.mak</tt></b>
+for the appropriate switch settings.
+
+<li>Because of a bug in SCO's floating point emulator, gcc 2.3.3 produces
+code that causes crashes on machines without hardware floating point. Use
+a different compiler on these machines.
+
+<li>If you aren't using the X11 driver, you must add
+<b><tt>-lsocket</tt></b> to the value of <b><tt>EXTRALIBS</tt></b> to link
+the date and time functions.
+
+<li>If you want to use direct frame buffer addressing instead of X Windows,
+include the relevant frame buffer devices (<b><tt>$(DD)ega.dev</tt></b>,
+<b><tt>$(DD)vga.dev</tt></b>, etc.) and change the definition of
+<b><tt>EGAVGA</tt></b> to <b><tt>$(EGAVGA_SCO)</tt></b> as indicated in
+<b><tt>devs.mak</tt></b>. <b>Note</b>: this works with SuperVGA displays
+only for 800x600x16 mode.
+
+<li>If the display looks "smeared", try recompiling
+<b><tt>gdevpcfb.c</tt></b> with <b><tt>-O0</tt></b>.
+
+<li>If Ghostscript crashes, use the <b><tt>-q</tt></b> switch or redirect
+console output to a file.
+
+<li>If your compiler accepts both the <b><tt>-Xt</tt></b> and
+<b><tt>-Xa</tt></b> switches, use <b><tt>-Xt</tt></b>. Even though this
+causes the compiler to use incorrect rules for computing the result types
+of "<b><tt>&lt;&lt;</tt></b>" and "<b><tt>&gt;&gt;</tt></b>",
+<b><tt>-Xa</tt></b> enables optimizations that produce incorrect code.
+
+<li>For SCO ODT 2.0, in addition to <b><tt>-D__SVR3</tt></b> and
+<b><tt>-DSYSV</tt></b>, you need to specify <b><tt>-Dsco</tt></b>,
+<b><tt>-DUSG</tt></b>, and <b><tt>-DMALLOC_0_RETURNS_NULL</tt></b>. For
+SCO ODT, you need
+"<b><tt>EXTRALIBS=-lX11&nbsp;-lsocket&nbsp;-lmalloc</tt></b>", or maybe
+only <b><tt>-lsocket</tt></b> depending on the version), and for SCO ODT
+2.0, you must also specify <b><tt>-lc_s</tt></b>. For SCO Xenix, you need
+"<b><tt>EXTRALIBS=-lmalloc</tt></b>".
+
+<li>For SCO OpenServer 5.0.5, add <b><tt>-L/usr/local/lib</tt></b> to
+<b><tt>LDFLAGS</tt></b>.
+
+<li>For all SCO systems, set "<b><tt>XINCLUDE=</tt></b>" and
+"<b><tt>XLIBDIRS=</tt></b>".
+</ul>
+
+<h4><a name="SVR4"></a>SVR4 Unix</h4>
+
+<ul>
+<li>You may need to set <b><tt>EXTRALIBS=-lnsl</tt></b>.
+
+<li>Do <b><em>not</em></b> change <b><tt>PLATFORM=unix_</tt></b> to <b><tt>PLATFORM=sysv_</tt></b>.
+
+<li>On SVR4 Unix platforms with dynamic linking, you may need to define
+<b><tt>XLIBDIR</tt></b> as the name of the directory that holds the X
+Windows libraries. Do <b><em>not</em></b> prefix the name with
+"<b><tt>-L</tt></b>".
+
+<li>For SVR4.0 systems, set <b><tt>-DSVR4</tt></b> and
+<b><tt>-DSVR4_0</tt></b> in the makefile; do <b><em>not</em></b> set
+<b><tt>-DSYSV</tt></b>. For SVR4.2 (or later) and Solaris 2.<em>n</em>
+systems, set only <b><tt>-DSVR4</tt></b> (<b><em>not</em></b>
+<b><tt>-DSVR4_0</tt></b> nor <b><tt>-DSYSV</tt></b>).
+</ul>
+
+<h4><a name="System_V"></a>System V Unix platforms</h4>
+
+<ul>
+<li>If you are using a stock System V platform that lacks
+<b><tt>rename</tt></b> and <b><tt>gettimeofday</tt></b>, in the makefile
+change "<b><tt>PLATFORM=unix_</tt></b>" to
+"<b><tt>PLATFORM=sysv_</tt></b>".
+
+<li>You will probably need to change the definition of
+<b><tt>INSTALL</tt></b> from "<b><tt>install</tt></b>" to
+"<b><tt>/usr/ucb/install</tt></b>".
+</ul>
+
+<h4><a name="Unixware"></a>Unixware</h4>
+
+<ul>
+<li>The standard cc compiler has optimizer bugs. Compile without
+<b><tt>-O</tt></b>.
+</ul>
+
+<h3><a name="Hardware_specific_issues"></a>Hardware-specific issues</h3>
+
+<h4><a name="Alpha_with_gcc"></a>Alpha with gcc</h4>
+
+<ul>
+<li>You don't have to use gcc on Alpha systems, because the bundled
+compiler works.
+
+<li>The Alpha code generator in gcc 2.7.2.1 is broken. gcc 2.5.8 and 2.6.3
+are probably usable. Versions before 2.5.0 are believed not to work. We
+suggest you use a recent version.
+
+<li>If you really want to use gcc 2.7.x, here is a patch for that version
+from gcc maintainer Jim Wilson
+&lt;<a href="mailto:wilson@cygnus.com">wilson@cygnus.com</a>&gt;.
+
+<pre>
+*** reload.c.orig Sun Mar 9 14:05:23 1997
+--- reload.c Sun Mar 9 14:06:54 1997
+*************** push_secondary_reload (in_p, x, opnum, o
+*** 589,600 ****
+ set it up now. */
+
+ if (in_p &amp;&amp; icode == CODE_FOR_nothing
+! &amp;&amp; SECONDARY_MEMORY_NEEDED (class, reload_class, reload_mode))
+! get_secondary_mem (x, reload_mode, opnum, type);
+
+ if (! in_p &amp;&amp; icode == CODE_FOR_nothing
+! &amp;&amp; SECONDARY_MEMORY_NEEDED (reload_class, class, reload_mode))
+! get_secondary_mem (x, reload_mode, opnum, type);
+ #endif
+ }
+
+--- 589,600 ----
+ set it up now. */
+
+ if (in_p &amp;&amp; icode == CODE_FOR_nothing
+! &amp;&amp; SECONDARY_MEMORY_NEEDED (class, reload_class, mode))
+! get_secondary_mem (x, mode, opnum, type);
+
+ if (! in_p &amp;&amp; icode == CODE_FOR_nothing
+! &amp;&amp; SECONDARY_MEMORY_NEEDED (reload_class, class, mode))
+! get_secondary_mem (x, mode, opnum, type);
+ #endif
+ }
+</pre>
+</ul>
+
+<h4><a name="Apollo"></a>H-P Apollo</h4>
+
+<ul>
+
+<li>You must run the compiler in ANSI-compatible mode (that is, set <b><tt>AK=</tt></b>{null string} in the makefile); otherwise it gives incorrect error
+messages for any function declared as returning a float value.
+
+<li>The H-P Apollo compiler may not compile Ghostscript correctly. If you
+get unexpected crashes at run time, use gcc.
+</ul>
+
+<h4><a name="ATT_7040"></a>AT&amp;T 7040 R3</h4>
+
+<ul>
+<li>If Ghostscript crashes on startup, recompile with <b><tt>-O0</tt></b>
+to work around compiler bugs.
+</ul>
+
+<h4><a name="Convex"></a>Convex</h4>
+
+<ul>
+
+<li>Use <b><tt>unixansi.mak</tt></b>. Do not invoke optimization
+(<b><tt>-O1</tt></b>) because the compiler will produce incorrect code.
+
+<li>Set <b><tt>CFLAGS</tt></b> to
+"<b><tt>-no&nbsp;-fn&nbsp;-tm&nbsp;c1</tt></b>".
+</ul>
+
+<h4><a name="DECStations"></a>DECStations with Ultrix</h4>
+
+<ul>
+
+<li>If you get the compiler message "cfe: Fatal: _temp_19086.c:
+Segmentation violation" or a similar one, try compiling with the
+<b><tt>-oldc</tt></b> switch.
+
+<li>You may wish to set
+
+<p>
+<b><tt>GS_LIB_DEFAULT=$(gsdatadir):/usr/lib/DPS/outline/decwin:$(gsdatadir)/fonts</tt></b>
+
+<p>
+in the makefile to add the Display PostScript font directory to the font
+search path.
+
+<li>Set
+
+<p>
+<b><tt>CFLAGS="-Olimit&nbsp;2500"</tt></b>
+
+<p>
+to make the optimizer allocate enough table space.
+
+<li>The Ultrix 4.4 C compiler compiles <b><tt>gdevm1.c</tt></b>
+incorrectly. Insert the following line in the makefile rule for
+"<b><tt>gdevm1.$(OBJ)</tt></b>" (the body of the rule is empty in the
+standard distribution):
+
+<p>
+<b><tt>$(CCC) -oldc gdevm1.c</tt></b>
+</ul>
+
+<h4><a name="HP_RISC"></a>H-P RISC workstations</h4>
+
+<ul>
+
+<li>HP-UX versions before 11.0 do not support POSIX threads. Set
+<b><tt>SYNC=nosync</tt></b> in the makefile before building.
+
+<li>Ghostscript builds on H-P machines with either GNU gcc or H-P's
+ANSI-capable <b><tt>cc</tt></b>. The minimal, non-ANSI-capable
+<b><tt>cc</tt></b> that ships with a basic HPUX system does <b><em>not</em></b>
+work. If <b><tt>cc</tt></b> on your system doesn't accept the
+<b><tt>-Aa</tt></b> switch, then you need to get the full
+<b><tt>cc</tt></b> or gcc.
+
+<li>If you use H-P's compiler, be sure you have upgraded to a recent
+release. Many bizarre symptoms have been reported trying to build
+Ghostscript with older, buggier compilers, for example:
+<ul>
+<li>The link step fails with a message about "<b><tt>max</tt></b>" not being defined.
+<li>The build succeeds, but the resulting executable fails to start up,
+with an error message like "Initializing... Unrecoverable error: typecheck
+in .registerencoding".
+<li>The build succeeds, but the resulting executable produces a black
+background on the first page of output.
+</ul>
+
+<li>It is reported that On HPUX 9.* you need at least compiler patch
+PHSS_5723 and dld.sl patch PHSS_5734 to build Ghostscript. (As of late
+1997, those patches are long obsolete; the current patches are compiler
+PHSS_10357 and dld.sl PHSS_11246. It is unknown whether current
+Ghostscript releases work with compiler/dld.sl versions older than these.)
+
+<li>On HPUX 10.*, we don't know what combinations of compiler version and
+switches work. It is reported that On HPUX 10.20, setting
+"<b><tt>CC=c89</tt></b>" and "<b><tt>CFLAGS=+O3&nbsp;$(XCFLAGS)</tt></b>"
+works, contradicting the information in the next paragraph, but this may be
+dependent on the specific compiler version.
+
+<li>In either HPUX version, you need to set
+"<b><tt>CC=cc&nbsp;-Aa</tt></b>" (or use <b><tt>-Ae</tt></b> if you
+prefer), and set
+"<b><tt>CFLAGS=-D_HPUX_SOURCE&nbsp;-O&nbsp;$(XCFLAGS)</tt></b>". Higher
+levels of optimization than <b><tt>-O</tt></b> may work depending on your
+compiler revision; some users have reported success with
+<b><tt>+O3</tt></b>, some have not.
+
+<li>Some users have reported needing <b><tt>-DNOSYSTIME</tt></b> and
+<b><tt>-D_POSIX_SOURCE</tt></b> in <b><tt>CFLAGS</tt></b>, but recent tests
+do not show these to be necessary.
+
+<li>If you use gcc, it's a good idea to have a recent release -- 2.7.2.1 or
+later -- but gcc 2.6.3 has been known to work with past releases of
+Ghostscript. gcc versions earlier than 2.6.3, and 2.7.* earlier than
+2.7.2.1, are known <b><em>not</em></b> to work. You may be able to get a working
+executable with an older gcc by removing <b><tt>-O</tt></b> from
+<b><tt>CFLAGS</tt></b>.
+</ul>
+
+<h4><a name="Intergraph"></a>Intergraph Clipper</h4>
+
+<ul>
+<li>Recommended settings are:
+
+<p>
+<b><tt>XCFLAGS=-w -Q -DSYSV -D__SVR3<br>
+EXTRALIBS=-lbsd -lc_s<br>
+CC=acc -knr<br>
+PLATFORM=sysv_</tt></b><br>&nbsp;
+
+<li>You will probably need to change the value of <b><tt>XLIBS</tt></b> from
+"<b><tt>XLIBS=Xt X11 Xext</tt></b>" to "<b><tt>XLIBS=Xt_s X11_s Xext</tt></b>".
+</ul>
+
+<h4><a name="MIPS"></a>MIPS</h4>
+
+<ul>
+<li>There is apparently a bug in older versions of the MIPS C compiler
+which causes <b><tt>gxdither.c</tt></b> to compile incorrectly if
+optimization is enabled (<b><tt>-O</tt></b>). However, this bug is
+definitely fixed in MipsPRO C version 6.00; with this version, compiling
+with "<b><tt>-O2 -mips2</tt></b>" produces good output.
+</ul>
+
+<h4><a name="NCR_3550"></a>NCR 3550</h4>
+
+<ul>
+<li>With the NCR C Development Toolkit you must use <b><tt>-O0</tt></b>.
+</ul>
+
+<h4><a name="Pyramid"></a>Pyramid MIServer-S</h4>
+
+<p>
+See "<a href="#ATT_7040">AT&amp;T 7040 R3</a>".
+
+<h4><a name="RS6000"></a>IBM RS/6000 with AIX</h4>
+
+<ul>
+
+<li>Many versions of the AIX C compiler have bugs that have prevented
+Ghostscript from compiling and linking properly. We believe that the
+current Ghostscript release works around these bugs, and that
+<b><tt>unixansi.mak</tt></b> with <b><tt>CC=cc</tt></b> should work.
+
+<li>You must also edit the makefile (<b><tt>unixansi.mak</tt></b>) to change
+<b><tt>INSTALL</tt></b> to <b><tt>/usr/ucb/install</tt></b>.
+
+<li>AIX doesn't use a separate library for multi-thread support: set
+<b><tt>STDLIBS=-lm</tt></b> in the makefile.
+
+<li>If <b><tt>-DSYSV</tt></b> produces a complaint about the functions
+<b><tt>index</tt></b> and <b><tt>rindex</tt></b> not being defined, try
+removing it.
+
+<li>If the xlc 1.2.1 optimizer runs out of memory, you may need to add
+<b><tt>-qmaxmem=4000</tt></b> to <b><tt>CFLAGS</tt></b>.
+
+<li>A user reports that the AIX C compiler shipped with AIX 3.2.5 compiles
+Ghostscript only if invoked with "<b><tt>c89&nbsp;-D_POSIX_SOURCE</tt></b>"
+and <b><em>without</em></b> <b><tt>-O</tt></b>. On the other hand, another
+user reports successful compilation using <b><tt>unix-ansi.mak</tt></b> and
+the command line
+
+<p>
+<b><tt>make&nbsp;CC=c89&nbsp;XCFLAGS="-DOSY_AIX&nbsp;-D_ALL_SOURCE&nbsp;-qnoro&nbsp;-qmaxmem=3000&nbsp;-bfl"&nbsp;$*</tt></b><br>&nbsp;
+
+<li>Apparently some (but not all) releases of the C library declare the
+<b><tt>hypot</tt></b> function: if the declaration in
+<b><tt>math_.h</tt></b> produces an error message, try removing it.
+
+<li>The IBM X11R3 server is known to be buggy: use the MIT X server if
+possible.
+
+<li>The xlc 1.3.0.x compiler provided in AIX 3.2.5+ definitely will not
+compile Ghostscript correctly if <b><tt>-O</tt></b> is used on all files.
+A user reports that compiling <b><tt>z</tt></b>*<b><tt>.c</tt></b>,
+<b><tt>gsmatrix.c</tt></b>, <b><tt>gxstroke.c</tt></b> without
+<b><tt>-O</tt></b> is sufficient to produce a working executable:.
+
+<li>Some installations of AIX 3.2.5 have what appears to be an incorrect or
+inconsistent version of <b><tt>libXt.a</tt></b> in
+<b><tt>/usr/lpp/X11/lib</tt></b>. If linking shows
+<b><tt>XtShellStrings</tt></b> and <b><tt>XtStrings</tt></b> as unresolved
+externals, set
+"<b><tt>XLIBDIRS=-L/usr/lpp/X11/lib/R5&nbsp;-L/usr/lpp/X11/lib</tt></b>"
+rather than just "<b><tt>XLIBDIRS=-L/usr/lpp/X11/lib</tt></b>".
+
+<li>Ghostscript has been successfully compiled and runs under AIX 4.3.3 and
+the IBM C compiler version 5. The following changes were required in
+unixansi.mak:
+
+<p>
+<b><tt>CC=xlc</tt></b>
+<br>
+<b><tt>XCFLAGS=-qalign=natural</tt></b>
+
+</ul>
+
+<h4>
+<a NAME="Silicon_Graphics"></a>Silicon Graphics</h4>
+
+<p>
+Users have had a lot of problems with the MIPSpro compilers on SGI systems.
+We recommend using gcc. If you do choose to use the MIPSpro compiler,
+please read the following carefully.
+
+<ul>
+<li>
+To make the optimizer allocate enough table space, set
+
+<p><b><tt>CFLAGS="-Olimit 2500"</tt></b> (for older compilers)
+<br><b><tt>CFLAGS="-OPT:Olimit=2500"</tt></b> (for newer compilers)
+
+<p>
+MIPSpro compiler version 3.19 is "older", and 7.1 is "newer"; we aren't
+sure at what point in between the latter syntax was introduced.
+
+<li>
+With the compiler shipped with Irix 5.2, use the <b><tt>-ansi</tt></b>
+option.
+
+<li>
+The SGI C compiler may produce warnings about "Undefined the ANSI standard
+library defined macro stdin/stdout/stderr". To suppress these warnings, add
+"<b><tt>-woff 608</tt></b>" to the definition of <b><tt>CFLAGS</tt></b>.
+
+<li>
+The SGI C compiler shipped with Irix 6.1 and 6.2 will not compile
+<b><tt>zlib/deflate.c</tt></b> properly with optimization. Compile this file
+separately without <b><tt>-O</tt></b>.
+
+<li>
+With IRIX 6.5.x and the MIPSpro 7.x compilers there have been reports about
+incorrect output and binaries that cause segmentation faults.&nbsp; Various
+solutions have been suggested and you may want to try them in this order,
+until you get a working binary:
+
+<ul>
+<li>
+Compile <b><tt>idict.c</tt></b> and <b><tt>isave.c</tt></b> separately
+without optimization after doing a normal compile; then relink.e.g.:
+
+<p>
+<b><tt>cc -OPT:Olimit=2500 -I. -I./obj -o ./obj/idict.o -c ./idict.c</tt></b><br>
+<b><tt>cc -OPT:Olimit=2500 -I. -I./obj -o ./obj/isave.o -c ./isave.c</tt></b>
+
+<li>
+Set <b><tt>CFLAGS=</tt></b> (no optimization).
+
+<li>
+Use only <b><tt>-O2</tt></b>.&nbsp;&nbsp; Compiler produces incorrect output
+with <b><tt>-O3</tt></b> or "<b><tt>-Ofast=ip32 -show</tt></b>".
+
+<li>
+Irix 6.5.1m with MIPSpro compiler 7.2.1.1m, Irix 6.5.3m with MIPSpro
+compiler 7.2.1, and probably other 6.5x / 7.2x combinations require
+compiling with the <b><tt>-o32</tt></b> option. Compiling with the (default)
+<b><tt>-n32</tt></b> option produces non-working executables.
+<b><tt>-O2</tt></b> is OK (possibly except for <b><tt>idict.c</tt></b>), but
+not <b><tt>-O3</tt></b>.
+</ul>
+</ul>
+
+<h4><a name="Sun"></a>Sun</h4>
+
+<ul>
+<li>The Sun unbundled C compiler (SC1.0) doesn't compile Ghostscript
+properly with the <b><tt>-fast</tt></b> option: Ghostscript core-dumps in
+<b><tt>build_gs_font</tt></b>. With that compiler use <b><tt>-g</tt></b>,
+or use gcc instead.
+
+<li>The Sun version of <b><tt>dbx</tt></b> often gives up with an error
+message when trying to load Ghostscript. If this happens, use GNU
+<b><tt>gdb</tt></b> instead. (<b><tt>gdb</tt></b> is more reliable than
+<b><tt>dbx</tt></b> in other ways as well.)
+
+<li>A bug in some versions of <b><tt>zlib</tt></b> results in an undefined
+symbol <b><tt>zmemcmp</tt></b> when compiling with Sun cc. Use gcc
+instead.
+</ul>
+
+<h4><a name="SunOS"></a>SunOS</h4>
+
+<ul>
+<li>The <tt><b>tar</b></tt> program provided with SunOS 4.1.3 may not be
+able to unpack the archives in the standard Ghostscript distribution.
+Get a more recent version of <tt><b>tar</b></tt>, such as GNU
+<tt><b>tar</b></tt>.
+
+<li>In SunOS 4.1.[23], you may get undefined symbols
+<b><tt>_get_wmShellWidgetClass</tt></b> and
+<b><tt>_get_applicationShellWidgetClass</tt></b> when linking. Compiling
+"<b><tt>-Bstatic&nbsp;-lXmu&nbsp;-Bdynamic</tt></b>" appears to work for
+SC1.0. For gcc, try adding <b><tt>-static</tt></b> to
+<b><tt>CFLAGS</tt></b>. To solve the problem if you are using OpenWindows
+3.0 (X11R4-based Xt), ask Sun for patches 100512-02 and 100573-03.
+</ul>
+
+<h4><a name="Solaris"></a>Solaris</h4>
+
+<ul>
+<li>Solaris 2.2 may require setting "<b><tt>EXTRALIBS=-lsocket</tt></b>".
+Solaris 2.3 and later seem to require "<b><tt>EXTRALIBS=-lnsl&nbsp;-lsocket&nbsp;-lposix4</tt></b>".
+
+<li>For Solaris 2.6 (and possibly some other versions), if you set
+<b><tt>SHARE_LIBPNG=1</tt></b>, <b><tt>SHARE_ZLIB=1</tt></b>, or
+<b><tt>SHARE_JPEG=1</tt></b>, you may need to set
+
+<p>
+<b><tt>XLDFLAGS=-R /usr/local/</tt></b>xxx<b><tt>/lib:/usr/local/lib</tt></b>
+
+<p>
+using the full path names of the relevant directories.
+
+<li>Solaris 2.<em>n</em> uses <b><tt>/usr/openwin/share/include</tt></b>
+for the X11 libraries rather than <b><tt>/usr/local/X/include</tt></b>.
+
+<li>Solaris 2.<em>n</em> typically has Type 1 fonts in
+<b><tt>/usr/openwin/lib/X11/fonts/Type1/outline</tt></b>.
+
+<li>For Solaris 2.<b><tt>n</tt></b> in the makefile you must change
+the definition of <b><tt>INSTALL</tt></b> from "<b><tt>install&nbsp;-c</tt></b>" to
+"<b><tt>/usr/ucb/install&nbsp;-c</tt></b>".
+
+<li>You may need to set <b><tt>XLIBDIR</tt></b> to the directory that holds
+the X11 libraries, as for other SVR4 systems. Set <b><tt>-DSVR4</tt></b>
+in <b><tt>CFLAGS</tt></b>.
+
+<li>If you are using the SunPRO C compiler, don't use optimization level
+<b><tt>-xO3</tt></b>. On SPARC platforms the compiler hangs; on Intel
+platforms the generated code is incorrect. With this compiler on Intel, do
+not use the <b><tt>-native</tt></b> flag: floating point computations
+become unacceptably inaccurate. You can use <b><tt>-xcg92</tt></b> (SPARC
+V8) and <b><tt>-dalign</tt></b> for better performance.
+</ul>
+
+<h4><a name="VAX_Ultrix"></a>VAX with Ultrix</h4>
+
+<ul>
+<li>You may wish to set
+
+<p>
+<b><tt>GS_LIB_DEFAULT=$(gsdatadir):/usr/lib/DPS/outline/decwin:$(gsdatadir)/fonts</tt></b>
+
+<p>
+in the makefile to add the Display PostScript font directory to the font
+search path.
+</ul>
+
+<hr>
+
+<h2><a name="OS2_build"></a>How to build Ghostscript from source (OS/2 version)</h2>
+
+<p>
+<em>Note: This section was contributed by a user: please e-mail Hermann
+Ulrichskötter &lt;<a
+href="mailto:ulrichsk@t-online.de">ulrichsk@t-online.de</a>&gt; if you have
+questions or problems.</em>
+
+<p>
+The following instructions are for building with emx 0.9d/Fix2. Be warned
+that with this version of gcc/emx, compiler optimization flags '-O' or '-O1'
+will produce non-working output.
+
+<ul>
+<li>The relevant makefile is <b><tt>os2.mak</tt></b> The gcc/emx 0.9b (or
+later) compiler and IBM <b><tt>NMAKE.EXE</tt></b> are required.
+
+<li>For gcc/emx versions 0.9c and later, the <b><tt>LINK386</tt></b>
+command must <b><em>include</em></b>
+"<b><tt>$(COMPBASE)\lib\end.lib</tt></b>"; version 0.9b requires
+<b><em>omitting</em></b> it. The current <b><tt>os2.mak</tt></b> file does
+include this file in the <b><tt>LINK386</tt></b> command, so if you are
+using 0.9b, delete this file reference before building.
+
+<li>Be sure you are using the standard OS/2 shell, <b><tt>CMD.EXE</tt></b>.
+Some other shells have bugs or differences that cause the makefile not to
+work.
+
+<li>Make sure you followed the instructions in "How to unpack the source
+code" and "How to unpack the third-party libraries".
+
+<li>Use jpegsrc_v6b.tar.gz, zlib.tar.gz and libpng-1.0.3.tar.gz. Earlier
+versions may not work.
+
+<li>If you wish to include support for XFree86, edit the makefile
+to change <b>BUILD_X11=0</b> to <b>BUILD_X11=1</b>.
+XFree86 for OS/2 can be obtained from
+<a href="http://borneo.gmd.de/~veit/os2/xf86os2.html">
+http://borneo.gmd.de/~veit/os2/xf86os2.html</a>
+You must use emx 0.9d.
+</ul>
+
+<p>
+Before compiling or linking, execute <b><tt>md bin</tt></b> and <b><tt>md
+obj</tt></b> in the <b><tt>gs</tt></b> directory to create the directories
+for the binaries.
+
+<p>
+First, build the standard configuration:
+
+<ul>
+<li>Edit gs/src/os2.mak: find line with 'CO=-O' (Optimizer flag) and edit
+this line to 'CO=-O2' (-O or -O1 do not work!).
+
+<li>To start the make process, type <b><tt>nmake -f .\src\os2.mak</tt></b>,
+from the gs-directory.
+
+<li>One DLL and two EXEs will be produced in <b><tt>gs/bin</tt></b>:
+<b><tt>gsdll2.dll</tt></b> (the Ghostscript DLL), <b><tt>gsos2.exe</tt></b>
+(the Ghostscript executable) and <b><tt>gspmdrv.exe</tt></b> (the
+Presentation Manager display driver). All other newly generated files will
+be produced in <b><tt>gs/obj</tt></b>.
+</ul>
+
+<p>
+Now, if you wish, you can edit OS2.MAK to suit your needs, and then perform
+<b><tt>nmake -f .\src\os2.mak clean</tt></b> and then <b><tt>nmake -f
+.\src\os2.mak</tt></b>.
+
+<hr>
+
+<h2><a name="VMS_build"></a>How to build Ghostscript from source (OpenVMS version)</h2>
+
+<p>The DECC6.2-003 compiler has an optimization problem that may lead to
+warnings about the "ANSI aliasing rules". DEC (Compaq) can provide a fix
+for this problem. The DECC6.2-006 compiler apparently does not have the
+problem.
+
+<p>
+DEC C runtime library versions 5.5 and newer have an <b><tt>exit</tt></b>
+function that is compatible with all other C systems, but some older ones
+don't. If you get error messages from VMS when auxiliary programs such as
+<b><tt>genarch</tt></b> or <b><tt>echogs</tt></b> finish executing, find the
+line in stdpre.h that reads
+
+<blockquote><b><tt>
+/*#define&nbsp;OLD_VMS_C*/
+</tt></b></blockquote>
+
+and remove the <b><tt>/*</tt></b> and <b><tt>*/</tt></b>, changing it to
+
+<blockquote><b><tt>
+#define&nbsp;OLD_VMS_C
+</tt></b></blockquote>
+
+<p>
+Some versions of DEC's X server have bugs that produce broad bands of color
+where dither patterns should appear, or characters displayed white on top
+of black rectangles or not displayed at all. If this happens, consult the
+usage documentation for how to <a href="Use.htm#X_server_bugs">work around
+X server bugs</a> using X resources; also report the problem to DEC, or
+whomever supplied your X server.
+
+<p>
+You may also wish to turn off the use of a backing pixmap with Ghostscript,
+either to work around X server memory limitations or bugs, or to obtain
+faster displaying at the expense of no redrawing when a Ghostscript window
+is restored from an icon or exposed after being occluded by another window.
+Again, the <a href="Use.htm">usage documentation</a> tells how to do this.
+
+<p>
+You can <a href="Fonts.htm#Precompiling">precompile any Type 1 font</a>
+into C, then compile and build it into Ghostscript, as described in the
+<a href="Fonts.htm">fonts documentation</a>. If you do this, then add
+"<b><tt>$(PSD)ccfonts.dev</tt></b>" to <b><tt>FEATURE_DEVS</tt></b> in
+<b><tt>OPENVMS.MAK</tt></b>:
+
+<blockquote><b><tt>
+$&nbsp;FEATURE_DEVS&nbsp;=&nbsp;"$(PSD)psl3.dev&nbsp;$(PSD)pdf.dev&nbsp;$(PSD)dpsnext.dev&nbsp;$(PSD)ttfont.dev&nbsp;$(PSD)ccfonts.dev"
+</tt></b></blockquote>
+
+<p>
+Specify the font names with <b><tt>ccfonts1</tt></b>:
+
+<blockquote><b><tt>
+$&nbsp;ccfonts1&nbsp;=&nbsp;"Courier&nbsp;Courier_Oblique&nbsp;Courier_Bold&nbsp;Courier_BoldOblique"
+</tt></b></blockquote>
+
+<p>
+If this makes the line too long, add another line of the same form, such as
+
+<blockquote><b><tt>
+$&nbsp;ccfonts1&nbsp;=&nbsp;"Courier&nbsp;Courier_Oblique&nbsp;Courier_Bold&nbsp;Courier_BoldOblique"
+$&nbsp;ccfonts2&nbsp;=&nbsp;"Times_Roman&nbsp;Times_Italic&nbsp;Times_Bold&nbsp;Times_BoldItalic"
+</tt></b></blockquote>
+
+<h3><a name="GNU_make_VMS"></a>Building with GNU make on OpenVMS</h3>
+
+<p>
+<em>Note: GNU make on OpenVMS apparently has bugs that make it stop with an
+error when building Ghostscript version 5.80 or later. Until further
+notice, use MMS or MMK for building Ghostscript on OpenVMS. See <a
+href="#MMK_MMS_VMS">below</a> for details.</em>
+
+<p>
+As of Ghostscript version 5.0 you can use GNU make -- with the file
+<b><tt>OPENVMS.MAK</tt></b> and some auxiliary <b><tt>.COM</tt></b> files
+-- to build Ghostscript on OpenVMS. Use the command:
+
+<blockquote>
+<b><tt>make&nbsp;-fopenvms.mak&nbsp;"DECWINDOWS=</tt></b><em>[</em><b><tt>1.2</tt></b><em>]</em><b><tt>"</tt></b>
+</blockquote>
+
+<p>
+That is, specify either "<b><tt>1.2</tt></b>" or nothing (blank) as the
+value of <b><tt>DECWINDOWS</tt></b>. In Europe and other parts of the world
+where ISO standard paper sizes are used, append "<b><tt>A4_PAPER=1</tt></b>"
+to that line to make A4 the default paper size at run time.
+
+<p>
+If you haven't a prebuilt copy of GNU make, you'll have to build it
+yourself; as of Version 3.76 (but not earlier) it is said to build properly
+under OpenVMS on both VAX and Alpha. The kit is available at the
+<a href="http://www.gnu.org/">Free Software Foundation's</a> ftp site and
+its mirrors. See
+
+<blockquote>
+<a href="ftp://ftp.gnu.org/pub/gnu/"
+class="offsite">ftp://ftp.gnu.org/pub/gnu/</a>
+</blockquote>
+
+<h3><a name="MMK_MMS_VMS"></a>Building with MMK or MMS on OpenVMS</h3>
+
+<p>
+As of Ghostscript version 5.68 you can use MMK or MMS to build Ghostscript on
+OpenVMS. MMS is a utility available from Compaq (Digital);
+MMK is a freely-available program largely compatible with MMS.
+
+<p>
+Building Ghostscript with MMK or MMS uses the file
+<b><tt>OPENVMS.MMK</tt></b> and some auxiliary <b><tt>.COM</tt></b> files.
+To build Ghostscript with MMK or MMS, use the command:
+
+<blockquote>
+<b><tt>###/descrip=[.src]openvms.mmk/macro=("DECWINDOWS1_2=</tt></b><em>{</em><b><tt>0</tt></b>,<b><tt>1</tt></b><em>}</em><b><tt>")</tt></b>
+</blockquote>
+
+where <b><tt>###</tt></b> is either <b><tt>mmk</tt></b> or <b><tt>mms</tt></b>.
+
+<p>
+Specify <b><tt>DECWINDOWS1_2=1</tt></b> for DECWINDOWS 1.2,
+<b><tt>DECWINDOWS1_2=0</tt></b> for other DECWINDOWS versions. In Europe
+and other parts of the world where ISO standard paper sizes are used, add
+<b><tt>,"A4_PAPER=1"</tt></b> just before the final closing parenthesis to
+make A4 the default paper size at run time.
+
+<hr>
+
+<h2><a name="Other_environments"></a>Other environments</h2>
+
+<h3><a name="No_multi_thread"></a>Environments lacking multi-threading</h3>
+
+<p>
+All environments mentioned here by name have multi-threading capability.
+However, if your environment doesn't, you can remove all need for
+multi-threading by setting <b><tt>SYNC=nosync</tt></b> in the top-level
+makefile. Note that you will not be able to use any so-called "async"
+drivers (drivers that overlap interpretation and rasterization) if you do
+this. No such drivers are in the <b><tt>DEVICE_DEVS*</tt></b> lists of any
+makefile that we distribute.
+
+<h3><a name="Plan_9"></a>Plan 9</h3>
+
+<p>
+Use <b><tt>unix-gcc.mak</tt></b>, editing it to define
+
+<blockquote><b><tt>
+CC=cc
+GCFLAGS=-D_BSD_EXTENSION -DPlan9
+</tt></b></blockquote>
+
+<p>
+You will also probably have to edit many path names.
+
+<h3><a name="QNX"></a>QNX</h3>
+
+<p>
+David J. Hawkey Jr. writes that he built Ghostscript 4.03 and 5.0 under QNX
+4.22, 4.23, and 4.24 using Watcom C 10.6 and that "it works quite well,
+after figuring out the <b><tt>/etc/config/lpsrvr</tt></b> directives,
+except for color printing to my HP DeskJet some-number-or-another". Here
+is a concise presentation of changes based on the ones he made for
+Ghostscript 4.03.
+
+<dl>
+<dt><b><tt>unixansi.mak</tt></b>
+<dd><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Original lines
+ <td>&nbsp;&nbsp;
+ <th align=left>Change to
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>INSTALL = install -c<br>INSTALL_PROGRAM = $(INSTALL) -m 755<br>INSTALL_DATA = $(INSTALL) -m 644</tt></b>
+ <td>&nbsp;
+ <td><b><tt>INSTALL = cp<br>INSTALL_PROGRAM = $(INSTALL)<br>INSTALL_DATA = $(INSTALL)</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>datadir = $(prefix)/share</tt></b>
+ <td>&nbsp;
+ <td><b><tt>datadir = $(prefix)/lib</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>CFLAGS_STANDARD=-O</tt></b>
+ <td>&nbsp;
+ <td><b><tt>CFLAGS_STANDARD=-Otx -zp1 -mf</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>LDFLAGS=$(XLDFLAGS)</tt></b>
+ <td>&nbsp;
+ <td><b><tt>LDFLAGS=-mf -N32k $(XLDFLAGS)</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>EXTRALIBS=</tt></b>
+ <td>&nbsp;
+ <td><b><tt>EXTRALIBS=-lXqnx_s -lsocket</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>XINCLUDE=-I/usr/local/X/include</tt></b>
+ <td>&nbsp;
+ <td><b><tt>#XINCLUDE=-I/usr/local/X/include</tt></b>
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>XLIBDIRS=-L/usr/local/X/lib<br>XLIBDIR=<br>XLIBS=Xt Xext X11</tt></b>
+ <td>&nbsp;
+ <td><b><tt>#XLIBDIRS=-L/usr/local/X/lib<br>#XLIBDIR=<br>XLIBS=Xt_s Xext X11_s</tt></b>
+<tr> <td colspan=3><hr>
+</table>
+</dl>
+
+<dl>
+<dt><b><tt>gp_unifs.c</tt></b>
+<dd>After the line
+
+<blockquote>
+<b><tt>#include&nbsp;&lt;sys/param.h&gt;</tt></b>
+</blockquote>
+
+<p>
+add these lines:
+
+<blockquote>
+<b><tt>#if&nbsp;defined(__QNX__)<br>
+#include&nbsp;&lt;unix.h&gt;<br>
+#endif</tt></b><br>
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>gp_unix.c</tt></b>
+<dd>After the line
+
+<blockquote>
+<b><tt>#include&nbsp;"time.h"</tt></b>
+</blockquote>
+
+<p>
+add these lines:
+
+<blockquote>
+<b><tt>#if&nbsp;defined(__QNX__)<br>
+#include&nbsp;&lt;sys/time.h&gt;<br>
+#endif</tt></b><br>
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>time_.h</tt></b>
+<dd>Modify the line beginning
+
+<blockquote>
+<b><tt>#&nbsp;&nbsp;if&nbsp;defined(Plan9)&nbsp;||</tt></b>
+</blockquote>
+
+<p>
+to begin
+
+<blockquote>
+<b><tt>#&nbsp;&nbsp;if&nbsp;defined(__QNX__)&nbsp;||&nbsp;defined(Plan9)&nbsp;||</tt></b>
+</blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>/etc/config/lpsrvr</tt></b>
+<dd>Here is Hawkey's <b><tt>lpsrvr</tt></b> as an example.
+
+<blockquote>
+<pre># lpsrvr
+#
+# Defines the print queues and their devices
+#
+# Queues
+
+# ink-jet: Ghostscript interpreter for mono DeskJet - LaserJet works
+# better than DeskJet!
+
+[ij-monops]
+ ta=lpt1
+ co=/usr/local/bin/gs -q -sDEVICE=laserjet -sOutputFile=- -dNOPAUSE $(spfile) quit.ps | cat &gt; $(device)
+
+# Devices
+
+[-lpt1]
+ dv=/dev/par1
+
+[-lpt2]
+ dv=/dev/par2
+</pre></blockquote>
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/New-user.htm b/Master/xemtex/doc/ghostscript/New-user.htm
new file mode 100644
index 00000000000..125058b234e
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/New-user.htm
@@ -0,0 +1,592 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Background information for new users of Ghostscript</title>
+<!-- $Id: New-user.htm,v 1.30.2.14.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: new-user.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Background information for new users of Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#Overview">An overview of Ghostscript</a>
+<ul>
+<li><a href="#Find_Ghostscript">How is Ghostscript licensed? Where can I find it?</a>
+<ul>
+<li><a href="#GNU_gs">GNU Ghostscript</a>
+</ul>
+<li><a href="#Third-party_libraries">Libraries obtained from other parties</a>
+<li><a href="#Support">What if I want support?</a>
+<li><a href="#Commercial_use">What about commercial use?</a>
+<li><a href="#Platforms">What platforms does Ghostscript run on?</a>
+<ul>
+<li><a href="#Third-party_platforms">Ports done by users</a>
+</ul>
+</ul>
+<li><a href="#Related_work">Related work</a>
+<ul>
+<li><a href="#Drivers">Drivers</a>
+<li><a href="#Previewers">Previewers</a>
+<ul>
+<li><a href="#Previewer_X">Previewers for X Windows</a>
+<li><a href="#Previewer_DOS-Win">Previewers for DOS and MS Windows</a>
+<li><a href="#Previewer_GNULinux">A previewer for GNU/Linux</a>
+</ul>
+<li><a href="#Related_programs">Related programs</a>
+</ul>
+<li><a href="#Need_help">If you need help</a>
+<ul>
+<li><a href="#Reporting_problems">Reporting problems</a>
+</ul>
+<li><a href="#Contacting_us">Contacting Ghostscript headquarters</a>
+<li><a href="#How_to_help">How you can help improve Ghostscript</a>
+<li><a href="#Acknowledgments">Acknowledgements</a>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Overview"></a>An overview of Ghostscript</h2>
+
+<p>
+Ghostscript is the name of a set of software that provides:
+
+<ul>
+<li>An interpreter for the <b>PostScript</b><small><sup>TM</sup></small>
+language and the Adobe <b>Portable Document Format</b> (<b>PDF</b> --
+sometimes confused with Acrobat, Adobe's PDF browser and editor product);
+
+<li>Input modules (utilities) for reading a variety of raster formats,
+including <b>CMYK</b>, <b>GIF</b>, <b>JFIF</b> (<b>JPEG</b>), <b>MIFF</b>,
+<b>PBM</b>/<b>PGM</b>/<b>PPM</b>, and <b>PCX</b>;
+
+<li>Output modules (drivers) for a wide variety of window systems (including
+X Windows and Microsoft Windows), raster file formats, and printers, as well
+as a PDF output module that implements functions similar to Adobe's
+Acrobat<small><sup>TM</sup></small> Distiller<small><sup>TM</sup></small>
+product; and
+
+<li>The Ghostscript library, a set of procedures to implement the graphics
+and filtering capabilities that are primitive operations in the PostScript
+language and in PDF.
+</ul>
+
+<p>
+In simple terms, this means that Ghostscript can read a PostScript or PDF
+file and display the results on the screen or convert them into a form you
+can print on a non-PostScript printer. Especially together with several
+popular <a href="#Previewers">previewers</a>, with Ghostscript you can view
+or print an entire document or even isolated pages, even if your computer
+doesn't have Display PostScript and your printer doesn't handle PostScript
+itself.
+
+<h3><a name="Find_Ghostscript"></a>How is Ghostscript licensed? Where can I find it?</h3>
+
+<p>
+Ghostscript is a copyrighted work (artofcode LLC owns the copyright);
+it is not shareware or in the public domain. Different versions of it are
+distributed with three different licenses:
+
+<h4><a name="GNU_gs"></a>GNU Ghostscript</h4>
+
+<p>
+GNU Ghostscript is distributed under the terms of the GNU <a
+href="http://www.gnu.org/copyleft/gpl.html">General Public License</a>,
+which allows free use, and free copying and redistribution under certain
+conditions (including, in some cases, commercial distribution).
+You can always get the current version of GNU Ghostscript by Internet FTP
+from any of the many GNU distribution sites. The GNU home ftp site is
+
+<blockquote>
+<a href="ftp://ftp.gnu.org/pub/gnu/"
+class="offsite">ftp://ftp.gnu.org/pub/gnu/</a>
+</blockquote>
+
+<p>
+For a more complete list of sites, including sites outside the U.S. and
+other ways of obtaining GNU software, contact
+the <a href="http://www.gnu.org/">Free Software Foundation</a>
+<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
+
+<p><a name="CTAN"></a>
+Versions of Ghostscript are also available from sites in the
+Comprehensive TeX Archive Network (CTAN), in a tree based at
+/tex-archive/support/ghostscript/, which you can find at these principal
+CTAN distribution sites ("participating hosts") as of mid-1998:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td><a
+href="ftp://ctan.tug.org/tex-archive/support/ghostscript/"
+class="offsite">ftp://ctan.tug.org/tex-archive/support/ghostscript/</a>
+ <td>&nbsp;&nbsp;
+ <td>Massachusetts, U.S.A.
+<tr> <td><a href="ftp://ftp.dante.de/tex-archive/support/ghostscript/"
+class="offsite">ftp://ftp.dante.de/tex-archive/support/ghostscript/</a>
+ <td>&nbsp;
+ <td>Deutschland
+<tr> <td><a
+href="ftp://ftp.tex.ac.uk/tex-archive/support/ghostscript/"
+class="offsite">ftp://ftp.tex.ac.uk/tex-archive/support/ghostscript/</a>
+ <td>&nbsp;
+ <td>United Kingdom
+</table></blockquote>
+
+<p>
+CTAN has more than fifty mirror sites around the world. For information
+about CTAN sites, including how to use them over the World Wide Web, visit
+<a href="http://www.ctan.org/" class="offsite">ctan.org</a> or get
+the file <b><tt>CTAN.sites</tt></b> from any CTAN server, for
+instance
+
+<blockquote>
+<a href="ftp://ctan.tug.org/tex-archive/CTAN.sites"
+class="offsite">ftp://ctan.tug.org/tex-archive/CTAN.sites</a>
+</blockquote>
+
+<hr>
+
+<h3><a name="Third-party_libraries"></a>Libraries obtained from other parties</h3>
+
+<p>
+The Ghostscript source code distribution, and the Ghostscript executable
+code, include libraries obtained from other parties. All the source files
+mentioned in this section are in the Ghostscript and third-party library
+source kits. The documentation of <a href="Make.htm">how to build
+Ghostscript</a> tells <a href="Make.htm#Acquiring">where to get these
+libraries</a> and <a href="Make.htm#Unpack">how to unpack them</a>.
+
+<blockquote><dl>
+<dt>The <a href="http://www.ijg.org/" class="offsite">Independent JPEG
+Group</a> (IJG)
+library
+<dd>The executable versions of Ghostscript are based in part on the work of
+the Independent JPEG Group. For more information, see
+<b><tt>jpeg.mak</tt></b> in the main Ghostscript source directory and
+<b><tt>README</tt></b> in the libjpeg source directory.
+
+<dt>The <a href="http://www.libpng.org/pub/png/"
+class="offsite">Portable Network
+Graphics</a> (PNG) library created by Dave Martindale, Guy Eric Schalnat,
+Paul Schmidt, and Tim Wegner, of Group 42, Inc.
+<dd>For more information, see <b><tt>libpng.mak</tt></b> in the main
+Ghostscript source directory, and <b><tt>README</tt></b> and
+<b><tt>png.h</tt></b> in the libpng source directory.
+
+<dt>The <a href="http://www.gzip.org/zlib/"
+class="offsite">zlib</a> library
+created by Jean-loup Gailly and Mark Adler
+<dd>For more information, see <b><tt>zlib.mak</tt></b> in the main
+Ghostscript source directory, and <b><tt>README</tt></b> in the
+zlib source code.
+</dl></blockquote>
+
+<p>
+These libraries do not fall under the GPL but come with their own licenses,
+which also allow free use and redistribution under appropriate
+circumstances and which appear in the files mentioned just above. These
+libraries are entirely original works of their respective authors, and are
+provided as is with no warranty and no support.
+
+<hr>
+
+<h3><a name="Support"></a>What if I want support?</h3>
+
+<p>
+Neither artofcode LLC nor any organization known to us currently offers
+Ghostscript support for end-users -- that is, for people or companies who
+just want to use Ghostscript and not redistribute it as part of a product.
+
+<p>
+Nothing in the GNU license prevents anyone from providing
+support for Ghostscript, either free or commercial. We would be happy to
+include in the Ghostscript documentation the contact information for anyone
+who wants to offer such support.
+
+<hr>
+
+<h3><a name="Platforms"></a>What platforms does Ghostscript run on?</h3>
+
+<p>
+Ghostscript is written entirely in C, with special care taken to make it
+portable to a wide variety of systems. It is actively maintained on many
+unix-like operating systems, Microsoft Windows, Apple's MacOS and
+OpenVMS and can easily be ported to others. Please see <a
+href="Make.htm">Making Ghostscript</a> for details on the build process
+and hints for various platforms.
+
+<hr>
+
+<h2><a name="Related_work"></a>Related work</h2>
+
+<h3><a name="Drivers"></a>Drivers</h3>
+
+<p>
+A number of people have created Ghostscript drivers that they prefer to
+distribute directly, rather than including them in the Ghostscript
+distributions. Please refer to <a
+href="http://www.linuxprinting.org/"
+class="offsite">www.linuxprinting.org</a> or your favorite search engine
+for
+relevant examples.
+
+<h3><a name="Previewers"></a>Previewers</h3>
+
+<p>
+The Ghostscript user interface is very primitive, so several people have
+contributed screen previewers with better user interfaces.
+
+<h4><a name="Previewer_X"></a>Previewers for X Windows</h4>
+
+<dl>
+<dt><b><tt>GSPreview</tt></b>
+<dd>For information on GSPreview, contact Richard Hesketh
+&lt;<a href="mailto:rlh@ukc.ac.uk">rlh@ukc.ac.uk</a>&gt;.
+</dl>
+
+<h4><a name="Previewer_DOS-Win"></a>Previewers for DOS and MS Windows</h4>
+
+<dl>
+<dt><b><tt>psv</tt></b>
+<dd><b><tt>PSV</tt></b>, another keyboard-based PostScript viewing package
+for DOS, appears to be redistributable with no restrictions. It was once
+available from
+
+<blockquote>
+ftp://puccini.ujf-grenoble.fr/pub/contrib-ps/DOS-PSV/
+</blockquote>
+</dl>
+
+<h4><a name="Previewer_GNULinux"></a>A previewer for GNU/Linux</h4>
+
+<dl>
+<dt><b><tt>BMV</tt></b> <dd>Jan Kybic has created a Ghostscript-based
+bitmap previewing program for GNU/Linux called <b><tt>BMV</tt></b>, which
+doesn't use X Windows but is based on <b><tt>svgalib</tt></b>. He says
+there is a port of <b><tt>BMV</tt></b> for SCO Unix by William Bader.
+<b><tt>BMV</tt></b> is available from
+
+<blockquote>
+<a
+href="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz"
+class="offsite">ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz</a>
+</blockquote>
+</dl>
+
+<hr>
+
+<h3><a name="Related_programs"></a>Related programs</h3>
+
+<dl>
+<dt><b><tt>genscript</tt></b>
+<dd><b><tt>genscript</tt></b> is a free replacement for the
+<b><tt>enscript</tt></b> program. <b><tt>genscript</tt></b> converts plain
+text files to PostScript and sends the generated PostScript output to the
+specified printer or to a file. <b><tt>genscript</tt></b> can be easily
+extended to handle different output media, and it has many options which can
+be used to customize printouts, including 2-up printing, pagination, complex
+headers, and many more. You can find the current version at
+
+<blockquote>
+<a href="http://www.iki.fi/~mtr/genscript/"
+class="offsite">http://www.iki.fi/~mtr/genscript/</a> (home page)<br>
+<a href="ftp://ftp.gnu.org/pub/gnu/"
+class="offsite">ftp://ftp.gnu.org/pub/gnu/enscript/</a>enscript-*.tar.gz
+</blockquote>
+
+<dt><b><tt>pstotext</tt></b>
+<dd>A good free utility <b><tt>pstotext</tt></b> uses Ghostscript to extract
+plain text from PostScript files. It is much better than the
+<b><tt>ps2ascii</tt></b> utility distributed with Ghostscript. You can read
+the <b><tt>pstotext</tt></b> documentation at
+
+<blockquote>
+<a
+href="http://www.research.digital.com/SRC/virtualpaper/manpages/pstotext.1.html"
+class="offsite">http://www.research.digital.com/SRC/virtualpaper/manpages/pstotext.1.html</a>
+</blockquote>
+
+<p>
+and download the <b><tt>pstotext</tt></b> kit from
+
+<blockquote>
+<a href="http://www.research.digital.com/SRC/virtualpaper/pstotext.html"
+class="offsite">http://www.research.digital.com/SRC/virtualpaper/pstotext.html</a>
+</blockquote>
+
+<p>
+<b><tt>pstotext</tt></b> is unsupported, but the authors,
+Paul McJones
+&lt;<a href="mailto:paul.mcjones@acm.org">paul.mcjones@acm.org</a>&gt;
+and Andrew Birrell
+&lt;<a href="mailto:birrell@pa.dec.com">birrell@pa.dec.com</a>&gt;, are
+happy to have your questions and comments either by e-mail or <a href="http://www.research.digital.com/SRC/virtualpaper/comments.html"
+class="offsite">here</a>
+
+<p>
+For more information about the authors' Virtual Paper project, which
+attempts to make on-line reading of lengthy material (like research
+reports, manuals, or entire books) comfortable, read:
+
+<blockquote>
+<a href="http://www.research.digital.com/SRC/virtualpaper"
+class="offsite">http://www.research.digital.com/SRC/virtualpaper</a>
+</blockquote>
+
+<dt><b><tt>PreScript</tt></b>
+<dd>This is another good free utility that uses Ghostscript to extract text
+from PostScript or PDF files. It can also generate very simple HTML,
+keeping some of the formatting. It is unsupported, but is the product of an
+active research project. Its home page is:
+
+<blockquote>
+<a href="http://www.nzdl.org/html/prescript.html"
+class="offsite">http://www.nzdl.org/html/prescript.html</a>
+</blockquote>
+
+</dl>
+
+<hr>
+
+<h2><a name="Need_help"></a>If you need help</h2>
+
+<p>
+The list of Frequently Asked Questions (FAQ) isn't updated very often, so
+it may be somewhat out of date. It's available from
+
+<blockquote>
+<a href="http://www.cs.wisc.edu/~ghost/doc/faq.htm"
+class="offsite">http://www.cs.wisc.edu/~ghost/doc/faq.htm</a><br>
+<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/faq.htm"
+class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/faq.htm</a>
+</blockquote>
+
+<p>
+or by AFS from
+
+<blockquote>
+/afs/cs.wisc.edu/p/mirror/pub/mirrors/ghost/faq.htm
+</blockquote>
+
+<p>
+CompuServe announced in December 1995 that the Graphics Support Forum offers
+Message Section and Library 21, "Ghostscript", for technical assistance with
+Ghostscript. Ghostscript is available for downloading in Library 21,
+"Ghostscript." To access the Graphics Support Forum, <b><tt>GO
+GRAPHSUP</tt></b>. This service has no connection with the main Ghostscript
+developers.
+
+<p>
+If you have problems with Ghostscript and you have access to the
+Internet, we suggest to post your question to one of these Usenet
+newsgroups:
+
+<dl>
+<dt><b><tt><a href="news:gnu.ghostscript.bug">gnu.ghostscript.bug</a></tt></b>
+<dd>if your question is about <b>GNU Ghostscript</b>. If you have access to Internet mail, but not Usenet news,
+write to <b><tt>bug-ghostscript@gnu.org</tt></b>, which is equivalent to
+posting to that newsgroup.
+
+<dt><b><tt><a href="news:comp.lang.postscript">comp.lang.postscript</a></tt></b>
+<dd>if you have a general question about Ghostscript. Note
+however that this newsgroup was not intended for Ghostscript
+discussion <em>per se</em>.
+</dl>
+
+<p>
+There are hundreds of Ghostscript user sites all over the world, and another
+user will often be able to help you. If you have trouble with a specific
+device driver, look at <b><tt>devs.mak</tt></b> and
+<b><tt>contrib.mak</tt></b> in the Ghostscript source directory to see in
+which file the driver is defined. If it's defined in
+<b><tt>contrib.mak</tt></b>, the list of contributed drivers, please contact
+the author directly: the maintainers of Ghostscript can't help you with
+user-maintained drivers.
+
+<h3><a name="Reporting_problems"></a>Reporting problems</h3>
+
+<p>
+Please read <a href="Bug-info.htm">Bug-info.htm</a> for information about
+reporting problems.
+
+<hr>
+
+<h2><a name="Contacting_us"></a>Contacting Ghostscript headquarters</h2>
+
+<p>
+As of mid-September 2000, artofcode LLC is responsible for the future
+development of Ghostscript. Please do not contact us if all you want is
+help with Ghostscript! Ghostscript is
+free, but our time is not. If you call for help, we will tell you politely
+that we cannot answer your question. Ghostscript's documentation, while not
+of commercial end-user quality, has been adequate for thousands of users
+(for many of whom English is a foreign language), so the answer to your
+question is very likely in it somewhere. <!-- ouch -->
+
+<p>
+Here is our contact information:
+
+<blockquote><address>
+Raph Levien<br>
+artofcode LLC<br>
+940 Tyler St. Studio 6<br>
+Benicia, CA 94510<br>
+tel/fax +1 707 746 6398<br>
+<a href="mailto:raph@artofcode.com">raph@artofcode.com</a>
+</address></blockquote>
+
+<h3>Aladdin Enterprises</h3>
+
+<p>
+Aladdin Enterprises, the original authors of Ghostscript, is no
+longer responsible for Ghostscript, but may be available for small
+contract projects. Here is their contact information:
+
+<blockquote><address>
+Aladdin Enterprises<br>
+203 Santa Margarita Avenue<br>
+Menlo Park, CA 94025 U.S.A.<br>
++1-650-322-1734 fax<br>
+<a href="mailto:ghost@aladdin.com">ghost@aladdin.com</a><br>
+<a href="http://www.ghostscript.com/"
+class="offsite">http://www.ghostscript.com/</a>
+</address></blockquote>
+
+<p>
+If you want help with Ghostscript, or want to report a problem, please do
+not contact us. We will not be able to help you.
+
+<hr>
+
+<h2><a name="How_to_help"></a>How you can help improve Ghostscript</h2>
+
+<p>
+The most valuable thing you can do to help improve Ghostscript is to help
+test it. We make three different grades of release available, each of
+which needs a different kind of testing.
+
+<ul>
+<li><em>Stable</em> releases are made available about every 9 months, after
+a beta test period. Reporting problems as described <a
+href="#Reporting_problems">above</a> often results in a fix being posted on
+our Web site.
+</ul>
+
+<ul>
+<li><em>Beta</em> releases are posted starting about 6 weeks before a
+planned public release. These are candidates for public release, and need
+intensive testing.
+</ul>
+
+<ul>
+<li><em>Development</em> releases are posted every few weeks. These are not
+supposed to be good enough for general use, but testing them is still very
+helpful, since it gets problems corrected before the intensive beta test
+period.
+</ul>
+
+<p>
+You can always find the current public release and the current beta or
+tester release on our <a href="http://www.cs.wisc.edu/~ghost/">Web
+site</a>. If you would like to be notified when new beta or tester releases
+are posted, please <a href="#Contacting_us">contact us</a>.
+
+<p>
+There are also some useful projects that we don't have enough resources to
+work on, and with which we would appreciate help. See <a
+href="Projects.htm">this list</a> for details.
+
+<hr>
+
+<h2><a name="Acknowledgments"></a>Acknowledgements</h2>
+
+<p>
+Ghostscript was originally created, and through the year 2000 was primarily
+developed and maintained, by L. Peter Deutsch, President of Aladdin
+Enterprises (not to be confused with Peter J. Deutsch, founder of Bunyip
+Information Systems Inc.).
+
+<p>
+Special thanks are due to Russell Lang, for the
+<b><tt>GSview for Windows</tt></b> and
+<b><tt>PM GSview</tt></b> programs, and for contributing most of the code for
+the Microsoft Windows and OS/2 environments; to Tim Theisen, for the
+<b><tt>Ghostview</tt></b> program for X Windows and for major contributions
+to, and assistance with support of, the code for the X Windows
+environment; to Martin Fong and Mark Lentczner, for the first Macintosh
+ports; to Pete Kaiser
+&lt;<a href="mailto:kaiser@acm.org">kaiser@acm.org</a>&gt;, for redoing all
+of the documentation in HTML;
+and to the <a href="http://www.ijg.org/">Independent
+JPEG Group</a>, to Group 42, Inc., and to Jean-loup Gailly and Mark Adler,
+for creating the freely available libraries that Ghostscript uses.
+
+<p>
+Special thanks are due to URW++ Design and Development Incorporated, of
+Hamburg, Germany (<a href="http://www.urwpp.de/">http://www.urwpp.de/</a>)
+for making a commercial-quality set of the 35 standard PostScript Type 1
+fonts available for free distribution under the GNU and Aladdin licenses,
+and for updating them to include Adobe's expanded PostScript 3 character
+set.
+
+<p>
+Special thanks are due to Richard Stallman and the
+<a href="http://www.gnu.org/" class="offsite">Free Software
+Foundation</a> for originating
+the <a href="http://www.gnu.org/copyleft/gpl.html" class="offsite">GNU
+General Public
+License</a>, for originally motivating Aladdin's interest in creating free
+software, and for being the primary distributor of GNU Ghostscript on the
+Internet.
+
+<p>
+See also the <a href="Helpers.htm">list of the many other people</a> who have
+contributed significantly to improving Ghostscript.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996-2002 artofcode LLC. 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>
diff --git a/Master/xemtex/doc/ghostscript/News.htm b/Master/xemtex/doc/ghostscript/News.htm
new file mode 100644
index 00000000000..7e3fa2fa015
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/News.htm
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Recent changes in Ghostscript</title>
+<!-- $Id: News.htm,v 1.90.2.18.2.8 2003/05/17 14:44:22 giles Exp $ -->
+<!-- Originally: NEWS -->
+<!--
+ 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">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Changes in the most recent release of Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is news about the most recent Ghostscript release. For
+earlier versions, see the history documents:
+
+<blockquote>
+<a href="History7.htm">History of Ghostscript versions 7.n</a><br>
+<a href="History6.htm">History of Ghostscript versions 6.n</a><br>
+<a href="History5.htm">History of Ghostscript versions 5.n</a><br>
+<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] ================================================== -->
+
+<h3><a name="Version7.07"></a>Version 7.07 (2003-05-17)</h3>
+
+<p>This is the third release of the stable 7.0x series under the GNU
+GPL. It includes an important security update; upgrading is strongly
+recommended.</p>
+
+<h3><a name="7.07_Incompatible_changes"></a>Incompatible changes</h3>
+
+<p>
+No incompatible changes have been recorded for this version. Users of the 6.5x versions of GNU
+Ghostscript will want to check the History for a complete list of changes since that version.
+
+<pre>
+
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2003 artofcode LLC. 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>
diff --git a/Master/xemtex/doc/ghostscript/Projects.htm b/Master/xemtex/doc/ghostscript/Projects.htm
new file mode 100644
index 00000000000..3ee7f5cad5f
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Projects.htm
@@ -0,0 +1,629 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript projects</title>
+<!-- $Id: Projects.htm,v 1.33.2.11.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript projects seeking developers</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#Platforms">Platforms</a>
+<li><a href="#Driver_architecture">Driver architecture</a>
+<li><a href="#Specific_drivers">Specific drivers</a>
+<li><a href="#Graphics_functionality">Graphics functionality</a>
+<li><a href="#Performance">Performance</a>
+<li><a href="#Other_functionality">Other functionality</a>
+<li><a href="#Other_implementation">Implementation improvements</a>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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>
+There are many projects that would improve Ghostscript and that we would
+like to do, but for which we don't have enough resources. If you would like
+to take responsibility for any of these projects, please <a
+href="mailto:raph@artofcode.com">contact us</a>. Additional comments on
+implementation approaches or project goals are in <I>italic type like
+this</I>.
+
+<h2><a name="Platforms"></a>Additional platforms</h2>
+
+<h3>DOS, Windows and OS/2 builds using gcc.</h3>
+
+<p>
+We would like Ghostscript to work with the free <b><tt>emx/gcc</tt></b> and
+<b><tt>rsx</tt></b> libraries, to provide an alternative DOS, Windows
+95/98/NT, and OS/2 implementation that requires no proprietary, commercial
+compilers. We think Ghostscript's existing OS/2 makefile already includes
+most of what is needed. If someone is willing to do the work, we will be
+happy to include this in our list of supported platforms and to distribute
+the makefiles.
+
+<h3>Windows driver using Ghostscript as a language monitor.</h3>
+
+<p>
+MS Windows has a "language monitor" capability which would allow Ghostscript
+to be invoked seamlessly to process input files in any language Ghostscript
+could handle (currently PostScript and PDF) and for any printer for which
+Ghostscript had a driver. Doing this properly would require integrating
+Ghostscript with Windows' "Add Printer" dialog, and would also require
+creating a PPD for Ghostscript. <I>Russell Lang's RedMon program provides
+some, but not all, of this capability.</I>
+
+<h3>Netscape browser plug-in.</h3>
+
+<p>
+Currently, Ghostscript can work as a "helper application" for the Netscape
+browser, but not as a plug-in; the latter would integrate it more closely
+with the browser. We aren't sure what doing this would involve; we've also
+heard by rumor that it's already been done.
+
+<h3>Ghostscript as an Active-X COM Object.</h3>
+
+<p>
+In order to integrate Ghostscript into XMetaL and other applications it
+would be convenient for Ghostscript to be distributed as a COM object
+along with the current gswin32.exe, gswin32c.exe and gsdll32.dll files.
+
+<hr>
+
+<h2><a name="Driver_architecture"></a>Driver Architecture</h2>
+
+<h3>Improved multi-threaded rendering support.</h3>
+
+<p>
+Currently, drivers can be written so that converting PostScript to a list of
+graphical objects can run in one thread, and rasterizing the objects can run
+in another thread. However, drivers must be written specially if they are
+going to do this. We would like to change the architecture so that any
+driver can work this way. We would also like to support dual-threaded
+operation for drivers that produce high-level output, such as the PDF
+writer. <I>Doing this would require separating banding from
+the multithreaded logic. Also, currently each thread has its own allocation
+pool: this is unnecessary in the normal case, since Ghostscript now supports
+properly locked access to the C heap, but embedded systems still need to use
+a fixed-size area for the rasterizing thread. With a locked, shared
+allocator, the rasterizing thread could use the full set of band list
+functions; with a fixed-size area and a separate allocator, only a subset is
+available, as is the case now for dual-threaded drivers.
+</I>
+
+<h3>Dynamic run-time loadable devices.</h3>
+
+<p>
+Currently, drivers must be linked into the executable. We would like to be
+able to load drivers dynamically. Doing this requires defining a
+platform-independent API (presumably extending the current gp_* APIs) that
+would work at least on GNU/Linux, vendor Unix, MS Windows, and Macintosh. Unix
+systems should include Sun, HP, AIX, IRIX, DEC; Linux ELF and a.out formats
+should both be supported. <I>Consider the Netscape plug-in
+architecture.</I>
+
+<h3>Moving 'setpagedevice' into C.</h3>
+
+<p>
+The PostScript 'setpagedevice' function implements matching of media and
+page size requests to available media, page orientation, and paper handling
+(duplex, etc.) Currently it is implemented in PostScript code, which means
+it is not available for use with other input languages. (It is available
+for PDF, which Ghostscript implements on top of PostScript, but not for the
+not-yet-freely-available PCL interpreters that use the Ghostscript library,
+or for possible future SVG or similar interpreters). We would like to move
+this function into C. <I>The device driver will be required to
+send page parameters up to PostScript to be stored in a resource. To be
+included in this project are handling policy implementations in the device
+drivers. DeferredMediaSelection should also be implemented.</I>
+
+<h3>Adding 'tee' for output to multiple devices.</h3>
+
+<p>
+In a few cases, it would be desirable to provide a 'tee' capability for
+drivers: specifically, for generating small, low-resolution 'thumbnail'
+images concurrently with other output. <I>Probably the
+simplest way to do this is to generate a band list and then process it
+twice. This is not completely trivial, since the band list does include
+device resolution information and scaling would be required for some
+constructs.</I>
+
+<h3><b><tt>OutputDevice</tt></b> resource category</h3>
+
+<p>
+Each available output device should provide an instance of the
+<b><tt>OutputDevice</tt></b> resource category, which gives the available
+page sizes, resolutions, media classes, process color models, and other
+information about the device. <I>This would replace the current
+non-standard use of a 4-element <b><tt>PageSize</tt></b> in the
+<b><tt>InputAttributes</tt></b> entry of the page device dictionary.</I>
+
+<h3>Removing the limit on the length of OutputFile.</h3>
+
+<p>
+Currently, the maximum length of the <b><tt>OutputFile</tt></b> parameter is
+a compile-time constant, <b><tt>gp_file_name_sizeof</tt></b>. This is
+appropriate for ordinary file names, since this constant is the platform's
+limit on the length of a file name. However, if <b><tt>OutputFile</tt></b>
+is a pipe, the length should not be limited in this way. <I>This is
+probably a small project: it requires allocating the file name dynamically,
+and freeing it in the finalization routine that gets called when a driver
+instance is freed.</I>.
+
+<h2><a name="Specific_drivers"></a>Specific drivers</h2>
+
+<h3>PrintGear and PPA output drivers.</h3>
+
+<p>
+We would like to provide (Adobe) PrintGear and (H-P) PPA output drivers for
+Ghostscript, but the specifications for these protocols are not published.
+If you can provide them to us without violating any agreements, please let
+us know. (Some work has already been done on reverse-engineering these
+protocols, but we don't have references to it.)
+
+<h3>Improve 'pswrite' up to the level of 'pdfwrite'.</h3>
+
+<p>
+We would like to improve the high-level PostScript-writing
+<b><tt>pswrite</tt></b> driver to bring it up to parity with the PDF-writing
+driver (including the many improvements in the latter being implemented in
+Ghostscript 7.xx). Specifically, we want it to write text as text rather
+than bitmaps, and to consistently write images in their original high-level
+form. <I>We have already started to factor out code that
+should be common to these two drivers, specifically for writing embedded
+fonts and compressed data streams.</I>
+
+<p>
+There is one small part of this project that would be especially valuable
+and could be done independently (although it might have to be partly or
+entirely redone later): compressing images. Currently the driver only
+compresses character bitmaps, and doesn't compress other images at all.
+<I>It should use the <b><tt>CCITTFaxEncode</tt></b> filter for 1-bit-deep
+images, and plane-separated <b><tt>LZWEncode</tt></b> compression for color
+images, using the <b><tt>miGIF</tt></b> algorithms that are believed to be
+free of the Welch patent for the latter. When generating LL3 PS, the
+<b><tt>Flate</tt></b> compression will work better than miGIF. It may be
+worth trying several methods on each image and use the one that works best.</I>
+
+<h3>High level graphics and text for PCL 5 and PCL XL drivers.</h3>
+
+<p>
+Currently, the PCL 5 drivers produce only bitmaps; the PCL XL driver
+produces high-level graphics and sometimes high-level images, but low-level
+text. We would like to improve these drivers to produce higher-level,
+smaller output. <I>This was a very low-priority project; it has become more
+important now that H-P's laser printers are shipping with less memory.</I>
+
+<h3>Improved high level GDI driver for Windows.</h3>
+
+<p>
+We would like a "GDI driver" for MS Windows that would implement more
+higher-level constructs (specifically for text). <I> The
+<b><tt>mswin</tt></b> and <b><tt>mswinprn</tt></b> drivers both do some of
+this. Some of the the 'xfont' support code for MS Windows should be useful.
+We were frustrated in the past because the GDI calls for getting font sizes
+and metrics consistently returned incorrect information and provided no way
+to get the correct information; perhaps this has been fixed in 32-bit
+Windows. We believe that H-P, Russell Lang, and perhaps others are working
+in this area, but we can always use more help.</I>
+
+<h3>PDF thumbnail generation.</h3>
+
+<p>
+The PDF writer needs to be able to generate thumbnails (small previews). We
+might do this through the 'tee' capability mentioned above. However, we
+currently prefer the idea of implementing a completely separate program to
+add thumbnails to an arbitrary, existing PDF file: this would allow
+Ghostscript to add thumbnails to PDF files generated by other programs.
+<I>Much of the code needed to do this has already been written
+for Ghostscript's PDF linearizer: see
+<b><tt>lib/pdfwrite.ps</tt></b>. A user has implemented this as well,
+using a separate program that calls Ghostscript: see
+<a href="http://www.uni-giessen.de/~g029/eurotex99/oberdiek/">
+http://www.uni-giessen.de/~g029/eurotex99/oberdiek/</a>.
+</I>
+
+<h3>Consolidate inkjet drivers into a single family.</h3>
+
+<p>
+In addition to factoring out the error diffusion code as described below, we
+would like to see another attempt at reducing the enormous volume of code
+for color inkjet drivers. There are three sets of drivers (gdevcdj.c,
+gdevstc.c, gdevupd.c) with much overlapping functionality. The latter two
+driver families make good attempts at factoring out things like head
+geometry and canned control strings, but we think this problem deserves
+another pass, especially in the hope of consolidating these drivers into a
+single family.
+
+<h3>Download glyph bitmaps (with glyph decaching notification).</h3>
+
+<p>
+See below under "Notification for glyph decaching."
+
+<h3>Preserve compression when writing PDF images.</h3>
+
+<p>
+Currently, all images are decompressed by the interpreter before being
+passed to the graphics library; the PDF writer may then compress them again.
+Ordinarily, this only slows things down a little, but in the case of
+DCT-encoded images that are being DCT-encoded in the output, image
+degradation may occur. Ideally, the implementation should be smart enough
+to not decode and re-encode the image. However, making this work properly
+is difficult. <I>This would probably involve extending the library APIs for
+images so that they could pass a stream, possibly including filters, instead
+of the (fully decoded) data rows.</I>
+
+<hr>
+
+<h2><a name="Graphics_functionality"></a>Graphics functionality</h2>
+
+<h3>Support for 64-bit colors on 64-bit platforms.</h3>
+
+<p>
+Currently, the library supports a maximum of 32 bits of data per pixel; we
+would like to raise this limit to 64 bits on systems where the 'long' data
+type is 64 bits wide. <I>The <b><tt>gx_color_index</tt></b>
+type is already defined as 'long', but there are many places where the type
+<b><tt>bits32</tt></b> is used for pixel values; there is a 32-bit
+stored-image "device", but there is no 64-bit device; a few algorithms and
+tables have knowledge of the 32-bit width built into them, only because the
+C preprocessor doesn't have any kind of loop or repetition
+capability.</I>
+
+<h3>In-RIP trapping.</h3>
+
+<p>
+The PostScript specification includes an option for the interpreter to
+implement trapping (adjustments of object boundaries to prevent visual
+anomalies caused by slight misregistration of different ink layers): we
+would like to implement this. <I>This is a complex and
+difficult area; even many Adobe RIPs don't do it.</I>
+
+<h3>Hook FreeType TrueType library into graphics library.</h3>
+
+<p>
+We would like to provide an option for good integration of the FreeType font
+rasterizer into Ghostscript, since the FreeType code is better than
+Ghostscript's current rasterizers. We understand that some users in Japan
+have done this already, but we don't know if this is a good starting point
+(the only documentation is in Japanese). <I>Their work uses
+Ghostscript's 'xfont' interface, which is how Ghostscript interfaces to
+platform facilities such as the X and MS Windows font capabilities. This is
+a device-level interface and not the best place to do this: we would rather
+have the graphics library interface to FreeType directly.</I>
+
+<h3>ICC profile support for output.</h3>
+
+<p>
+Ghostscript 7.00 and later supports ICCBased color spaces of PDF
+using the icclib package from
+<a href="http://web.access.net.au/argyll/color.html ">
+http://web.access.net.au/argyll/color.html</a>
+but there is no facility to use ICC output (printer) profiles that
+may be embedded in the PDF. Also it would be useful for PostScript
+to be able to directly use a specific Intent from ICC profile to
+convert output colors (as CRD's are now used).
+<I>The primary difficulty is that the graphics library and PostScript
+always use CIE XYZ as the connection space, but ICC profiles may
+use CIELAB as the connection space, requiring conversion for use
+with the graphics library. </I>
+
+<h3>Making halftones into "objects" and adding new types.</h3>
+
+<p>
+Currently, knowledge of the specific data formats and algorithms for
+halftoning permeates too many places in the library. We would like
+halftoning to be more "object oriented" (using virtual procedures) so that
+we could support other halftoning methods such as direct use of threshold
+arrays, or the double-rectangle approach added in newer PostScript versions.
+<I>Threshold arrays take much less space than the current
+representation, generally at the expense of longer rendering time for
+black-and-white images; double-rectangle representation would give us a
+better implementation of AccurateScreens. We might want store both
+threshold arrays and the current representation.</I>
+
+<h3>Factor out error diffusion routines, integrate ETS.</h3>
+
+<p>
+Currently, several different inkjet drivers implement their own, very
+similar but slightly differing error diffusion methods. This has caused
+severe code bloat as well as tempting future driver writers to contribute to
+it further. We want to factor out error diffusion into a common set of
+facilities that drivers can use. <I>We would like to design
+these facilities so that they can easily interface to the Even-Toned
+Screening algorithms from artofcode (Raph Levien), to the extent that these
+will be Open Source.</I>
+
+<h3>Improve, or generalize, linearization for stochastic threshold
+data.</h3>
+
+<p>
+The Ghostscript distribution includes a stochastic threshold array. This
+array has some gamma correction built into it, which works well for some
+output devices and not for others. We would like to provide a version of
+this array without (or with less) gamma correction. <I>We have
+original data available from which this could be done fairly easily.</I>
+
+<h3>Change sampled functions to use new interpreted functions.</h3>
+
+<p>
+The PostScript language defines many functions relevant to graphics
+rendering as being implemented by arbitrary PostScript procedures: transfer
+(gamma correction), black generation, undercolor removal, several stages of
+CIE color space and rendering, and color mapping for Separation and DeviceN
+spaces. Since the graphics library can't call PostScript procedures,
+Ghostscript currently samples these procedures at a fixed number of points
+and interpolates linearly between the samples. As of Ghostscript 6.20, the
+library can interpret a restricted subset of PostScript procedures directly
+(basically those that only use arithmetic and comparisons: no loops,
+sub-procedures, or data structures). Changing the rendering functions to
+use this approach when possible would greatly improve output quality when
+the functions are very non-linear (which we have actually seen in practice).
+<I>This should only be done if the function is, in fact,
+severely non-linear, since interpreting the function definition will almost
+always be much slower than interpolating in the table.</I>
+
+<h3>Add optional cubic interpolation to RenderTable and other table
+lookup.</h3>
+
+<p>
+Currently, if a CIE rendering dictionary uses a lookup table for the final
+step, Ghostscript always interpolates linearly between the entries. Cubic
+interpolation should be supported as an option. A cubic interpolation
+option is also needed for general table-lookup Functions.
+
+<h3>Add better (SVG-like) alpha channel and compositing to library.</h3>
+
+<p>
+Ghostscript has partial support for alpha channel and for alpha and RasterOp
+compositing. There is some architectural support for general compositing,
+but it postdates the RasterOp implementation, and most of the RasterOp code
+doesn't use it. We expect that the more extensive compositing and alpha
+capabilities of SVG will find their way into PDF (and probably PostScript as
+well) in the course of 2000 and 2001, and we will need to implement them.
+
+<hr>
+
+<h2><a name="Performance"></a>Performance</h2>
+
+<h3>Change band list logic to defer halftoning until rendering.</h3>
+
+<p>
+Currently, when Ghostscript uses a band list, it does halftoning before
+banding. It should do halftoning after banding: this produces smaller band
+lists and shifts more work to the rasterizer (which is good because the
+rasterizer can be multi-threaded internally for higher performance on
+multiprocessors: see the next topic.)
+
+<h3>Reduce redundant data for smoothed banded images.</h3>
+
+<p>
+When smoothed ("interpolated") images are written in the band list, extra
+rows must be written above and below each band in order to provide the data
+for interpolation. Currently, the number of such rows is computed very
+conservatively; instead, the final interpolation algorithm should be
+consulted to provide the correct value. <i>This is a small task.</i>
+
+<h3>Multi-threaded rasterizing</h3>
+
+<p>
+For high-resolution devices, rasterization dominates execution time. On
+multiprocessor systems, Ghostscript can do tasks in parallel:
+
+<ul>
+
+<li>Rasterize multiple bands simultaneously;
+
+<li>Rasterize multiple color planes of a single band simultaneously (if a
+planar representation is being used);
+
+<li>For some computation-intensive tasks like smoothing images or filling
+large regions, partition the task (possibly buffering more data to allow
+larger-grain partitioning) and execute several partitions simultaneously.
+
+</ul>
+
+<p>
+We would want these facilities implemented so that no conditional
+compilation was involved: on uniprocessor systems, the locking API would
+simply have a vacuous implementation.
+
+<h3>Notification for glyph decaching.</h3>
+
+<p>
+Currently, drivers can't do a very good job of downloading rendered
+character bitmaps to the device they manage, because they can't find out
+when a bitmap is being deleted from Ghostscript's cache and therefore will
+never be referenced again. Here is a sketch of how we would add this
+capability to the graphics library:
+
+<ul>
+
+<li>The driver would implement the <b><tt>text_begin</tt></b> call, simply
+to get access to a <b><tt>gs_imager_state</tt></b> that references the
+rendered character cache. (The driver could always simply call the default
+implementation of <b><tt>text_begin</tt></b>.)
+
+<li>In the <b><tt>text_begin</tt></b> procedure, the driver would call
+
+<blockquote><pre>
+gs_glyph_decache_register(imager_state, notify_proc, proc_data)
+</pre></blockquote>
+
+<p>
+where <b><tt>proc_data</tt></b> was, or pointed to a structure that
+included, a pointer to the driver.
+
+<li><b><tt>gs_glyph_decache_register</tt></b> would use the general
+notification mechanism defined in <b><tt>gsnotify.h</tt></b> to call
+
+<blockquote><pre>
+notify_proc(proc_data, pchar_data)
+</pre></blockquote>
+
+<p>
+whenever a bitmap was removed from the character cache.
+<b><tt>pchar_data</tt></b> would point to some identification of the
+character; perhaps just the bitmap ID, but possibly a
+<b><tt>gx_cached_bits_common</tt></b> or even a <b><tt>cached_char</tt></b>.
+
+<li>The <b><tt>char_cache</tt></b> structure would be need an additional
+member, a <b><tt>gs_notify_list_t</tt></b>. It would also need to add
+finalization so that when it was freed, it would notify and unregister all
+clients, using <b><tt>gs_notify_all(list, NULL)</tt></b> and then
+<b><tt>gs_notify_release</tt></b>.
+
+</ul>
+
+<p>
+<I>This facility was requested by the Display Ghostscript project, but it
+could also be used to improve the output of the PCL XL driver and possibly
+the X and PCL5 drivers.</I>
+
+<hr>
+
+<h2><a name="Other_functionality"></a>Other functionality</h2>
+
+<h3>OpenStep (Display PostScript + NeXT) extensions to Ghostscript.</h3>
+
+<p>
+There is a project to create a GNU implementation of the OPENStep API, which
+involves extending Ghostscript to provide the full functionality of Adobe's
+Display PostScript system with some of the NeXT extensions. For more
+information, please contact Net-Community &lt;<a
+href="mailto:scottc@net-community.com">scottc@net-community.com</a>&gt;.
+
+<h3>Job Server implementation.</h3>
+
+<p>
+For full Adobe PostScript compatibility, Ghostscript needs a real "job
+server" to encapsulate the execution of PostScript files.
+<I>See the section on "Job Execution Environment" in the PostScript
+Language Reference Manual for details.</I>
+
+<h3>SVG (XML Structured Vector Graphics) interpreter.</h3>
+
+<p>
+Ghostscript could be adapted with some work to read SVG. This would be an
+interesting and challenging project because SVG's graphics model would
+require extending the library (see above). <I>If SVG turns out to be an
+important standard, it is important that there be a good free implementation
+of it.</I>
+
+<h3><b><tt>%font%</tt></b> and other IODevices.</h3>
+
+<p>
+Currently, the <b><tt>%font%</tt></b> IODevice is not implemented. We would
+like to see this implemented using a general framework for implementing
+IODevices (%xxxx%) entirely in PostScript, in an "object oriented" manner
+very similiar to the way Resource categories are implemented. An IODevice
+would be implemented as a dictionary with the following keys, whose values
+would be procedures that implemented the corresponding operation:
+
+<blockquote><pre>
+/File
+/DeleteFile
+/RenameFile
+/Status
+/FileNameForAll
+/GetDevParams
+/PutDevParams
+</pre></blockquote>
+
+<p>
+There would only be global IODevices, no local ones; the dictionary keeping
+track of them would be stored in global VM.
+
+<p>
+<I>This is an obscure feature that matters only because some PostScript code
+uses <b><tt>filenameforall</tt></b> with this IODevice, rather than
+<b><tt>filenameforall</tt></b> with the <b><tt>/Font</tt></b> Resource
+category, to enumerate available fonts.</I>
+
+<h3>Repairing damaged or EOL-converted PDF files.</h3>
+
+<p>
+Adobe Acrobat Reader can scan a PDF file that has had its end-of-lines
+converted by careless users transferring the file across operating systems
+as text rather than binary across, and reconstruct the cross-reference table
+which the PDF interpreter requires. This only works if the file has no
+binary data in it, which with PDF 1.3 is rarely the case. However, users
+occasionally receive PDF files that have been damaged in this way, and it
+might be useful to have a program that can repair them. <I>We think this
+should probably be done as a separate program, possibly in PostScript,
+similar to Ghostscript's PDF linearizer.</I>
+
+<h2><a name="Other_implementation"></a>Implementation improvements</h2>
+
+<h3>Fully re-entrant code.</h3>
+
+<p>
+Currently, neither the PostScript interpreter nor the graphics library is
+fully re-entrant (no writable globals). Making them fully re-entrant would
+make Ghostscript usable in multi-threaded environments, and more easily
+usable in embedded environments. Note that this is necessary, but far from
+sufficient, for Ghostscript to allow simultaneous execution of a single
+Ghostscript interpreter instance by multiple threads: that is probably
+permanently out of the question. <I>Almost all drivers, including all of
+the drivers in devs.mak which are maintained as part of the main Ghostscript
+code, are already fully re-entrant; making the remaining ones re-entrant
+should really be up to the driver author.</I>
+
+<h3>Ghostscript has no %ram% device.</h3>
+
+The %ram% device is documented in PS Supplement 3010 and 3011 dated August 30, 1999.
+This is probably not a major impediment to portability, but it would be handy.
+<p><I>
+On Unix, the suggested implementation would be to create a subdirectory
+of the temporary directory (usually /tmp), with the name chosen and the
+directory created in such a way as to avoid /tmp races and similar
+problems. Ghostscript should delete the subdirectory when it exits.
+</I>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 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>
diff --git a/Master/xemtex/doc/ghostscript/Ps-style.htm b/Master/xemtex/doc/ghostscript/Ps-style.htm
new file mode 100644
index 00000000000..5cf2e643113
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Ps-style.htm
@@ -0,0 +1,514 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript PostScript coding guidelines</title>
+<!-- $Id: Ps-style.htm,v 1.13.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript PostScript coding guidelines</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Summary">Summary of the coding guidelines</a>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#PS_features">Use of PostScript language features</a>
+<ul>
+<li><a href="#Restrictions">Restrictions</a>
+<li><a href="#Protection">Protection</a>
+<li><a href="#Standard_constructions">Standard constructions</a>
+</ul>
+<li><a href="#File_structuring">File structuring</a>
+<li><a href="#Commenting">Commenting</a>
+<li><a href="#Formatting">Formatting</a>
+<ul>
+<li><a href="#Indentation">Indentation</a>
+<li><a href="#Spaces">Spaces</a>
+</ul>
+<li><a href="#Naming">Naming</a>
+<li><a href="#Miscellany">Miscellany</a>
+<ul>
+<li><a href="#Non_standard_operators">Some useful non-standard operators</a>
+<li><a href="#Useful_procedures">Some useful procedures</a>
+<li><a href="#Other">Other</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Summary"></a>Summary of the coding guidelines</h2>
+
+<ul>
+
+<li>Don't store into literals.
+
+<li>Use <b><tt>loop</tt></b> to create a block with multiple exits.
+
+<li>Use a dictionary or an array for multi-way switches.
+
+<li>Start every file with a copyright notice, the file name, and a one-line
+summary.
+
+<li>Comment every procedure with the arguments and result, and with the
+function of the procedure unless it's obvious.
+
+<li>Comment the stack contents ad lib, and particularly at the beginning of
+every loop body.
+
+<li>Indent every 2 spaces.
+
+<li>Always put { at the end of a line, and } at the beginning of a line,
+unless the contents are very short.
+
+<li>Always put spaces between adjacent tokens.
+
+<li>Use only lower-case letters and digits for names, or Vienna style names,
+except for an initial "." for names only used within a single file.
+
+<li>Don't allocate objects in heavily used code.
+
+<li>Consider factoring out code into a procedure if it is used more than
+once.
+
+</ul>
+
+<hr>
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+The many rules that Ghostscript's code follows almost everywhere are meant
+to produce code that is easy to read. It's important to observe them as
+much as possible in order to maintain a consistent style, but if you find a
+rule getting in your way or producing ugly-looking results once in a while,
+it's OK to break it.
+
+<hr>
+
+<h2><a name="PS_features"></a>Use of PostScript language features</h2>
+
+<h3><a name="Restrictions"></a>Restrictions</h3>
+
+<p>
+If you need to store a value temporarily, don't write into a literal in the
+code, as in this fragment to show a character given the character code:
+
+<blockquote><pre>
+( ) dup 0 4 -1 roll put show
+</pre></blockquote>
+
+<p>
+Instead, allocate storage for it:
+
+<blockquote><pre>
+1 string dup 0 4 -1 roll put show
+</pre></blockquote>
+
+<h3><a name="Protection"></a>Protection</h3>
+
+<p>
+If an object is never supposed to change, use <b><tt>readonly</tt></b> to
+make it read-only. This applies especially to permanently allocated objects
+such as constant strings or dictionaries.
+
+<p>
+During initialization, and occasionally afterwards, it may be necessary to
+store into a read-only dictionary, or to store a pointer to a dictionary in
+local VM into a dictionary in global VM. The operators
+<b><tt>.forceput</tt></b> and <b><tt>.forceundef</tt></b> are available for
+this purpose. To make these operators inaccessible to ordinary programs,
+they are removed from <b><tt>systemdict</tt></b> at the end of
+initialization: system code that uses them should always use
+<b><tt>bind</tt></b> and <b><tt>odef</tt></b> (or
+<b><tt>executeonly</tt></b>) to make uses of them inaccessible as well.
+
+<h3><a name="Standard_constructions"></a>Standard constructions</h3>
+
+<h4>Multi-way conditionals</h4>
+
+<p>
+If you write a block of code with more than about 3 exit points, the usual
+way to do it would be like this:
+
+<blockquote><pre>
+{
+ ... {
+ ...1
+ } {
+ ... {
+ ...2
+ } {
+ ... {
+ ...3
+ } {
+ ...4
+ } ifelse
+ } ifelse
+ } ifelse
+}
+</pre></blockquote>
+
+<p>
+However, this causes the 4 logically somewhat parallel code blocks to be
+indented differently, and as the indentation increases, it becomes harder to
+see the structure visually. As an alternative, you can do it this way:
+
+<blockquote><pre>
+{ % The loop doesn't actually loop: it just provides a common exit.
+ ... {
+ ...1
+ exit
+ } if
+ ... {
+ ...2
+ exit
+ } if
+ ... {
+ ...3
+ exit
+ } if
+ ...4
+ exit
+} loop
+</pre></blockquote>
+
+<p>
+Don't forget the final exit, to prevent the loop from actually looping.
+
+<h4>Switches</h4>
+
+<p>
+Use a dictionary or an array of procedures to implement a 'switch', rather
+than a series of conditionals, if there are more than about 3 cases. For
+example, rather than:
+
+<blockquote><pre>
+dup /a eq {
+ pop ...a
+} {
+ dup /b eq {
+ pop ...b
+ } {
+ dup /c eq {
+ pop ...c
+ } {
+ ...x
+ } ifelse
+ } ifelse
+} ifelse
+</pre></blockquote>
+
+<p>
+(or using the loop/exit construct suggested above), consider:
+
+<blockquote><pre>
+/xyzdict mark
+ /a {...a} bind
+ /b {...b} bind
+ /c {...c} bind
+.dicttomark readonly def
+...
+//xyzdict 1 index .knownget {
+ exch pop exec
+} {
+ ...x
+} ifelse
+</pre></blockquote>
+
+<hr>
+
+<h2><a name="File_structuring"></a>File structuring</h2>
+
+<p>
+Every code file should start with comments containing
+
+<ol>
+<li>a copyright notice;
+<li>the name of the file in the form of an RCS Id:
+
+<blockquote><pre>
+% Id$: filename.ps $
+</pre></blockquote>
+
+<li>a very brief summary (preferably only one line) of what the file
+contains.
+</ol>
+
+<p>
+If you create a file by copying the beginning of another file, be sure to
+update the copyright year and change the file name.
+
+<hr>
+
+<h2><a name="Commenting"></a>Commenting</h2>
+
+<p>
+If a file has well-defined functional sections, put a comment at the
+beginning of each section to describe its purpose or function.
+
+<p>
+Put a comment before every procedure to describe what the procedure does,
+unless it's obvious or the procedure's function is defined by the PLRM. In
+case of doubt, don't assume it's obvious. If the procedure may execute a
+deliberate 'stop' or 'exit' not enclosed in 'stopped' or a loop
+respectively, that should be mentioned. However, information about the
+arguments and results should go in the argument and result comment
+(described just below) if possible, not the functional comment.
+
+<p>
+Put a comment on every procedure to describe the arguments and results:
+
+<blockquote><pre>
+/hypot { % &lt;num1&gt; &lt;num2&gt; hypot &lt;real&gt;
+ dup mul exch dup mul add sqrt
+} def
+</pre></blockquote>
+
+<p>
+There is another commenting style that some people prefer to the above:
+
+<blockquote><pre>
+/hypot { % num1 num2 --> realnum
+ dup mul exch dup mul add sqrt
+} def
+</pre></blockquote>
+
+<p>
+We have adopted the first style for consistency with Adobe's documentation,
+but we recognize that there are technical arguments for and against both
+styles, and might consider switching some time in the future. If you have
+strong feelings either way, please make your opinion known to
+<b><tt>gs-devel@ghostscript.com</tt></b>.
+
+<p>
+Put comments describing the stack contents wherever you think they will be
+helpful; put such a comment at the beginning of every loop body unless you
+have a good reason not to.
+
+<p>
+When you change a piece of code, do <em>not</em> include a comment with your
+name or initials. Also, do <em>not</em> retain the old code in a comment,
+unless you consider it essential to explain something about the new code; in
+that case, retain as little as possible. (CVS logs do both of these things
+better than manual editing.) However, if you make major changes in a
+procedure or a file, you may put your initials, the date, and a brief
+comment at the head of the procedure or file respectively.
+
+<hr>
+
+<h2><a name="Formatting"></a>Formatting</h2>
+
+<h3><a name="Indentation"></a>Indentation</h3>
+
+<p>
+Indent 2 spaces per indentation level. You may use tabs at the left margin
+for indentation, with 1 tab = 8 spaces, but you should not use tabs anywhere
+else, except to place comments.
+
+<p>
+Indent { } constructs like this:
+
+<blockquote><pre>
+... {
+ ...
+} {
+ ...
+} ...
+</pre></blockquote>
+
+<p>
+If the body of a conditional or loop is no more than about 20 characters,
+you can put the entire construct on a single line if you want:
+
+<blockquote><pre>
+... { ... } if
+</pre></blockquote>
+
+rather than
+
+<blockquote><pre>
+... {
+ ...
+} if
+</pre></blockquote>
+
+<p>
+There is another indentation style that many people prefer to the above:
+
+<blockquote><pre>
+...
+{ ...
+}
+{ ...
+} ...
+</pre></blockquote>
+
+<p>
+We have adopted the first style for consistency with our C code, but we
+recognize that there are technical arguments for and against both styles,
+and might consider switching some time in the future. If you have strong
+feelings either way, please make your opinion known to
+<b><tt>gs-devel@ghostscript.com</tt></b>.
+
+<h3><a name="Spaces"></a>Spaces</h3>
+
+<p>
+Always put spaces between two adjacent tokens, even if this isn't strictly
+required. E.g.,
+
+<blockquote><pre>
+/Halftone /Category findresource
+</pre></blockquote>
+
+<p>
+not
+
+<blockquote><pre>
+/Halftone/Category findresource
+</pre></blockquote>
+
+<hr>
+
+<h2><a name="Naming"></a>Naming</h2>
+
+<p>
+All names should consist only of letters and digits, possibly with an
+initial ".", except for names drawn from the PostScript or PDF reference
+manual, which must be capitalized as in the manual. In general, an initial
+"." should be used for those and only those names that are not defined in a
+private dictionary but that are meant to be used only in the file where they
+are defined.
+
+<p>
+For edits to existing code, names made up of multiple words should not use
+any punctuation, or capitalization, to separate the words, again except for
+names that must match a specification. For new code, you may use this
+convention, or you may use the "Vienna" convention of capitalizing the first
+letter of words, e.g., <b><tt>readSubrs</tt></b> rather than
+<b><tt>readsubrs</tt></b>. If you use the Vienna convention, function names
+should start with an upper case letter, variable names with a lower case
+letter. Using the first letter of a variable name to indicate the
+variable's type is optional, but if you do it, you should follow existing
+codified usage (****** WE NEED A REFERENCE FOR THIS ******).
+
+<hr>
+
+<h2><a name="Miscellany"></a>Miscellany</h2>
+
+<h3><a name="Non_standard_operators"></a>Some useful non-standard
+operators</h3>
+
+<dl>
+
+<dt><b><tt>&lt;obj1&gt; &lt;obj2&gt; ... &lt;objn&gt; &lt;n&gt; .execn ...</tt></b>
+<dd>This executes <b><tt>obj1</tt></b> through <b><tt>objn</tt></b> in that
+order, essentially equivalent to
+
+<blockquote><pre>
+&lt;obj1&gt; &lt;obj2&gt; ... &lt;objn&gt; &lt;n&gt; array astore {exec} forall
+</pre></blockquote>
+
+<p>
+except that it doesn't actually create the array.
+
+<dt><b><tt>&lt;dict&gt; &lt;key&gt; <b>.knownget</b> &lt;value&gt; true</tt></b>
+<dt><b><tt>&lt;dict&gt; &lt;key&gt; <b>.knownget</b> false</tt></b>
+
+<dd>This combines <b><tt>known</tt></b> and <b><tt>get</tt></b> in the
+obvious way.
+
+<dt><b><tt>&lt;name&gt; &lt;proc&gt; odef -</tt></b>
+
+<dd>This defines <b><tt>name</tt></b> as a "pseudo-operator". The value of
+<b><tt>name</tt></b> will be executable, will have type
+<b><tt>operatortype</tt></b>, and will be executed if it appears directly in
+the body of a procedure (like an operator, unlike a procedure), but what
+will actually be executed will be <b><tt>proc</tt></b>. In addition, if the
+execution of <b><tt>proc</tt></b> is ended prematurely (by
+<b><tt>stop</tt></b>, including the <b><tt>stop</tt></b> that is normally
+executed when an error occurs, or <b><tt>exit</tt></b>) and the operand and
+dictionary stacks are at least as deep as they were when the "operator" was
+invoked, the stacks will be cut back to their original depths before the
+error is processed. Thus, if pseudo-operator procedures are careful not to
+remove any of their operands until they reach a point in execution beyond
+which they cannot possibly cause an error, they will behave just like
+operators in that the stacks will appear to be unchanged if an error occurs.
+
+</dl>
+
+<h3><a name="Useful_procedures"></a>Some useful procedures</h3>
+
+<dl>
+
+<dt><b><tt>&lt;object&gt; &lt;errorname&gt; signalerror -</tt></b>
+
+<dd>Signal an error with the given name and the given "current object".
+This does exactly what the interpreter does when an error occurs.
+
+</dl>
+
+<h3><a name="Other"></a>Other</h3>
+
+<p>
+If you can avoid it, don't allocate objects (strings, arrays, dictionaries,
+gstates, etc.) in commonly used operators or procedures: these will need to
+be garbage collected later, slowing down execution. Instead, keep values on
+the stack, if you can. The <b><tt>.execn</tt></b> operator discussed above
+may be helpful in doing this.
+
+<p>
+If you find yourself writing the same stretch of code (more than about half
+a dozen tokens) more than once, ask yourself whether it performs a function
+that could be made into a procedure.
+
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 2000 Aladdin Enterprises. All rights
+reserved.</small>
+
+<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.
+</small>
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/Master/xemtex/doc/ghostscript/Ps2epsi.htm b/Master/xemtex/doc/ghostscript/Ps2epsi.htm
new file mode 100644
index 00000000000..3656b722a08
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Ps2epsi.htm
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Convert PostScript to Encapsulated PostScript Interchange format</title>
+<!-- $Id: Ps2epsi.htm,v 1.15.2.12.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: ps2epsi.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Convert PostScript to Encapsulated PostScript Interchange
+format</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Overview">Overview</a>
+<li><a href="#Usage">Usage</a>
+<ul>
+<li><a href="#Unix_usage">Unix</a>
+</ul>
+<li><a href="#Limitations">Limitations</a>
+<li><a href="#Files">Files</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+The information in this document was contributed by George Cameron
+&lt;<a href="mailto:george@bio-medical-physics.aberdeen.ac.uk">george@bio-medical-physics.aberdeen.ac.uk</a>&gt;;
+please direct to him any questions about it. Because the software
+described here is no longer being maintained, this document may be
+obsolete, or inconsistent with <b><tt>ps2epsi.1</tt></b>.
+
+<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] ================================================== -->
+
+<h2><a name="Overview"></a>Overview</h2>
+
+<p>
+<b><tt>ps2epsi</tt></b> is a utility based on Ghostscript, which takes as
+input a PostScript file and generates as output a new file which conforms
+to Adobe's Encapsulated PostScript Interchange (EPSI) format, a special
+form of
+<a href="http://partners.adobe.com/asn/developer/pdfs/tn/5002.EPSF_Spec.pdf"
+class="offsite">Encapsulated PostScript</a>
+(EPS) which adds to the beginning of the file, as PostScript comments, a
+low-resolution monochrome bitmap image of the final displayed page.
+Programs which understand EPSI can use this bitmap as a preview on screen
+of the full PostScript page. The displayed quality is often not very good,
+but the final printed version uses the "real" PostScript, and thus has the
+normal full PostScript quality.
+
+<hr>
+
+<h2><a name="Usage"></a>Usage</h2>
+
+<h3><a name="Unix_usage"></a>Unix</h3>
+
+<p>
+Using the supplied shell script <b><tt>ps2epsi</tt></b>, the command is
+
+<blockquote>
+<b><tt>ps2epsi</tt></b> <b><em>infile.ps</em></b> <b><em>[outfile.epsi]</em></b>
+</blockquote>
+
+<p>
+where <b><em>infile.ps</em></b> is the input file and
+<b><em>outfile.epsi</em></b> is the output EPSI file to be created. If the
+output filename is omitted, <b><tt>ps2epsi</tt></b> generates one from the
+input filename; and any standard extension (<b><tt>.ps</tt></b>,
+<b><tt>.cps</tt></b>, <b><tt>.eps</tt></b> or <b><tt>.epsf</tt></b>) of the
+input file is replaced in the output file with the extension
+<b><tt>.epsi</tt></b>.
+
+<hr>
+
+<h2><a name="Limitations"></a>Limitations</h2>
+
+<p>
+Not all PostScript files can be encapsulated, because there are
+restrictions in what is permitted in a PostScript file for it to be
+properly encapsulated. <b><tt>ps2epsi</tt></b> does a little extra work to
+try to help encapsulation, and it automatically calculates the bounding box
+required for all encapsulated PostScript files, so most of the time it does
+a pretty good job. There are certain to be cases, however, when
+encapsulation fails because of the nature of the original PostScript file.
+
+<hr>
+
+<h2><a name="Files"></a>Files</h2>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1"><b><tt>ps2epsi</tt></b> files</font><hr>
+<tr valign=bottom>
+ <th align=left>File
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Contents
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>Ps2epsi.htm</tt></b>
+ <td>&nbsp;
+ <td>This document
+<tr valign=top> <td><b><tt>ps2epsi</tt></b>
+ <td>&nbsp;
+ <td>Unix shell script
+<tr valign=top> <td><b><tt>ps2epsi.ps</tt></b>
+ <td>&nbsp;
+ <td>Ghostscript program which does the work
+</table></blockquote>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+
+<hr>
+
+<p>
+<small>Copyright &copy; 1998, 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>
diff --git a/Master/xemtex/doc/ghostscript/Ps2pdf.htm b/Master/xemtex/doc/ghostscript/Ps2pdf.htm
new file mode 100644
index 00000000000..6d369674969
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Ps2pdf.htm
@@ -0,0 +1,502 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>ps2pdf: PostScript-to-PDF converter</title>
+<!-- $Id: Ps2pdf.htm,v 1.32.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: ps2pdf.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1><tt>ps2pdf</tt>: PostScript-to-PDF converter</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Overview">Overview</a>
+<li><a href="#Usage">Usage</a>
+<li><a href="#Options">Options</a>
+<li><a href="#Limitations">Limitations</a>
+<li><a href="#Problems">Known problems</a>
+<li><a href="#Ps2pdf_vs_AD">Comparison of <b><tt>ps2pdf</tt></b> and Acrobat Distiller</a>
+<li><a href="#Acknowledgments">Acknowledgments</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Overview"></a>Overview</h2>
+
+<b><tt>ps2pdf</tt></b> is a work-alike for nearly all the functionality (but
+not the user interface) of Adobe's Acrobat<small><sup>TM</sup></small>
+Distiller<small><sup>TM</sup></small> product: it converts PostScript files
+to Portable Document Format (PDF) files.
+
+<p>
+<b><tt>ps2pdf</tt></b> is implemented as a very small command script (batch
+file) that invokes Ghostscript, selecting a special "output device" called
+<b><tt>pdfwrite</tt></b>. In order to use <b><tt>ps2pdf</tt></b>, the
+<b><tt>pdfwrite</tt></b> device must be included in the makefile when
+Ghostscript was compiled; see the <a
+href="Make.htm#Features_and_devices">documentation on building
+Ghostscript</a> for details: this is currently the case on all platforms, in
+Ghostscript as we distribute it.
+
+<hr>
+
+<h2><a name="Usage"></a>Usage</h2>
+
+<p>
+The usage for <b><tt>ps2pdf</tt></b> is
+
+<blockquote><b><tt>
+ps2pdf</tt></b> <em>[options] input.[e]ps output.pdf</em>
+</blockquote>
+
+<p>
+or, on Unix systems and some versions of Windows NT and OS/2
+
+<blockquote><b><tt>
+ps2pdf</tt></b> <em>input.[e]ps</em>
+</blockquote>
+
+<p>
+which is equivalent to
+
+<blockquote><b><tt>
+ps2pdf</tt></b> <em>input.[e]ps input.pdf</em>
+</blockquote>
+
+<p>
+There are actually several different <b><tt>ps2pdf</tt></b><em>*</em> scripts:
+the name <b><tt>ps2pdf</tt></b> above refers to any of them.
+
+<ul>
+
+<li><b><tt>ps2pdf12</tt></b> will always produce PDF 1.2 output (Acrobat
+3-and-later compatible).
+
+<li><b><tt>ps2pdf13</tt></b> will always produce PDF 1.3 output (Acrobat
+4-and-later compatible).
+
+<li><b><tt>ps2pdf14</tt></b> will always produce PDF 1.4 output (Acrobat
+5-and-later compatible).
+
+<li><b><tt>ps2pdf</tt></b> per se currently produces PDF 1.2 output (Acrobat
+3-and-later compatible). However, this may change in the future. If you
+care about the compatibility level of the output, use
+<b><tt>ps2pdf12</tt></b>, <b><tt>ps2pdf13</tt></b>, or
+<b><tt>ps2pdf14</tt></b>, or use the
+<b><tt>-dCompatibilityLevel=</tt></b><em>1.x</em> switch in the command
+line.
+
+</ul>
+
+<p>
+All of these scripts actually call a script named <b><tt>ps2pdfwr</tt></b>
+or <b><tt>ps2pdfxx</tt></b>. The Unix <b><tt>ps2pdfwr</tt></b> script
+assumes that the Ghostscript executable is named <b><tt>gs</tt></b>; it is
+unlikely that you will need to change this. The DOS and MS Windows
+<b><tt>ps2pdfxx.bat</tt></b> script uses the value of the
+<b><tt>GSC</tt></b> environment variable, if defined, as the name of the
+executable; otherwise the script assumes the executable is named
+<b><tt>gswin32c</tt></b>. So in these environments, if the executable has a
+different name, you must set <b><tt>GSC</tt></b> to the name of the
+executable.
+
+<hr>
+
+<h2><a name="Options"></a>Options</h2>
+
+<p>
+The <em>options</em> in the command line may include any switches that may
+be used with Ghostscript's PostScript and PDF interpreter (see <a
+href="Use.htm#Switches">here</a> for a complete list), although almost none
+of them are useful with <b><tt>ps2pdf</tt></b>. The following may be
+useful:
+
+<dl>
+
+<dt><b><tt>-r</tt></b><em>resolution</em>
+<dd>Sets the resolution for pattern fills and for fonts that must be
+converted to bitmaps.
+
+<dt><b><tt>-dProcessColorModel=</tt></b><em>device_color_space</em> <dd>Sets
+the color space to be used for device-dependent colors in the
+output. <em>device_color_space</em> may be <b><tt>/DeviceGray</tt></b>,
+<b><tt>/DeviceRGB</tt></b>, or <b><tt>/DeviceCMYK</tt></b>; the default
+value is <b><tt>/DeviceRGB</tt></b>.
+
+</dl>
+
+<p>
+More importantly, <em>options</em> may include
+<b><tt>-d</tt></b><em>parameter</em>=<em>value</em> or
+<b><tt>-s</tt></b><em>parameter</em>=<em>string</em> switches for setting
+"distiller parameters", Adobe's documented parameters for controlling the
+conversion process. The PostScript <b><tt>setdistillerparams</tt></b> and
+<b><tt>currentdistillerparams</tt></b> operators are also recognized when
+running <b><tt>ps2pdf</tt></b>, and provide an equivalent way to set these
+parameters from within the PostScript input file.
+
+<p>
+<b><tt>ps2pdf</tt></b> also recognizes the following switches:
+
+<dl>
+<dt><b><tt>-dPDFSETTINGS=</tt></b><em>configuration</em>
+<dd>Presets the "distiller parameters" to one of four predefined settings:
+
+<ul>
+
+<li><b><tt>/screen</tt></b> selects low-resolution output similar to the
+Acrobat Distiller "Screen Optimized" setting.
+
+<li><b><tt>/printer</tt></b> selects output similar to the Acrobat Distiller
+"Print Optimized" setting.
+
+<li><b><tt>/prepress</tt></b> selects output similar to Acrobat Distiller
+"Prepress Optimized" setting.
+
+<li><b><tt>/default</tt></b> selects output intended to be useful across a
+wide variety of uses, possibly at the expense of a larger output file.
+
+</ul>
+
+</dl>
+
+<p>
+<b><tt>ps2pdf</tt></b> recognizes all of the Acrobat Distiller 4 parameters
+documented in
+<a href="http://partners.adobe.com/asn/developer/acrosdk/DOCS/distparm.pdf">
+Adobe Technical Note #5151</a>. Cells in the table containing '=' mean that
+the value of the parameter is the same as in the "default" column.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=bottom>
+ <th align=left>Parameter name
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Notes
+ <td>&nbsp;&nbsp;
+ <th align=left>default
+ <td>&nbsp;&nbsp;
+ <th align=left>screen
+ <td>&nbsp;&nbsp;
+ <th align=left>printer
+ <td>&nbsp;&nbsp;
+ <th align=left>prepress
+<tr> <td colspan=11><hr>
+<tr valign=top><td><b><tt>ASCII85EncodePages</tt></b><td><td><td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AlwaysEmbed</tt></b><td><td><td><td>[]<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AntiAliasColorImages</tt></b><td><td>(0)<td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AntiAliasGrayImages</tt></b><td><td>(0)<td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AntiAliasMonoImages</tt></b><td><td>(0)<td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AutoFilterColorImages</tt></b><td><td>(1)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AutoFilterGrayImages</tt></b><td><td>(1)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AutoPositionEPSFiles</tt></b><td><td>(0)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>AutoRotatePages</tt></b><td><td><td><td>/PageByPage<td><td>/PageByPage<td><td>/None<td><td>/None
+<tr valign=top><td><b><tt>Binding</tt></b><td><td>(0)<td><td>/Left<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>CalCMYKProfile</tt></b><td><td>(0)<td><td>()<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>CalGrayProfile</tt></b><td><td>(0)<td><td>()<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>CalRGBProfile</tt></b><td><td>(0)<td><td>()<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>CannotEmbedFontPolicy</tt></b><td><td>(0)<td><td>/Warning<td><td>/Warning<td><td>/Warning<td><td>/Error
+<tr valign=top><td><b><tt>ColorACSImageDict</tt></b><td><td><td><td>(note 7)<td><td>(note 7)<td><td>(note 8)<td><td>(note 9)
+<tr valign=top><td><b><tt>ColorConversionStrategy</tt></b><td><td>(0,6)<td><td>/LeaveColorUnchanged<td><td>/sRGB<td><td>/UseDeviceIndependentColor<td><td>/LeaveColorUnchanged
+<tr valign=top><td><b><tt>ColorImageDepth</tt></b><td><td><td><td>-1<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ColorImageDict</tt></b><td><td><td><td>(note 7)<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ColorImageFilter</tt></b><td><td><td><td>/DCTEncode<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ColorImageDownsampleThreshold</tt></b><td><td><td><td>1.5<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ColorImageDownsampleType</tt></b><td><td>(3)<td><td>/Subsample<td><td>/Average<td><td>/Bicubic<td><td>/Bicubic
+<tr valign=top><td><b><tt>ColorImageResolution</tt></b><td><td><td><td>72<td><td>72<td><td>300<td><td>300
+<tr valign=top><td><b><tt>CompatibilityLevel</tt></b><td><td><td><td>1.3<td><td>1.2<td><td>1.3<td><td>1.3
+<tr valign=top><td><b><tt>CompressPages</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ConvertCMYKImagesToRGB</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ConvertImagesToIndexed</tt></b><td><td>(0)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>CoreDistVersion</tt></b><td><td><td><td>4000<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>CreateJobTicket</tt></b><td><td>(0)<td><td>false<td><td>false<td><td>true<td><td>true
+<tr valign=top><td><b><tt>DefaultRenderingIntent</tt></b><td><td><td><td>/Default<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>DetectBlends</tt></b><td><td>(0)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>DoThumbnails</tt></b><td><td>(0)<td><td>false<td><td>false<td><td>false<td><td>true
+<tr valign=top><td><b><tt>DownsampleColorImages</tt></b><td><td><td><td>false<td><td>true<td><td>false<td><td>false
+<tr valign=top><td><b><tt>DownsampleGrayImages</tt></b><td><td><td><td>false<td><td>true<td><td>false<td><td>false
+<tr valign=top><td><b><tt>DownsampleMonoImages</tt></b><td><td><td><td>false<td><td>true<td><td>false<td><td>false
+<tr valign=top><td><b><tt>EmbedAllFonts</tt></b><td><td><td><td>true<td><td>false<td><td>true<td><td>true
+<tr valign=top><td><b><tt>EmitDSCWarnings</tt></b><td><td>(0)<td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>EncodeColorImages</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>EncodeGrayImages</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>EncodeMonoImages</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>EndPage</tt></b><td><td>(0)<td><td>-1<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>GrayACSImageDict</tt></b><td><td><td><td>(note 7)<td><td>(note 7)<td><td>(note 8)<td><td>=
+<tr valign=top><td><b><tt>GrayImageDepth</tt></b><td><td><td><td>-1<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>GrayImageDict</tt></b><td><td><td><td>(note 7)<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>GrayImageDownsampleThreshold</tt></b><td><td><td><td>1.5<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>GrayImageDownsampleType</tt></b><td><td>(3)<td><td>/Subsample<td><td>/Average<td><td>/Bicubic<td><td>/Bicubic
+<tr valign=top><td><b><tt>GrayImageFilter</tt></b><td><td><td><td>/DCTEncode<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>GrayImageResolution</tt></b><td><td><td><td>72<td><td>72<td><td>300<td><td>300
+<tr valign=top><td><b><tt>ImageMemory</tt></b><td><td>(0)<td><td>500000<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>LockDistillerParams</tt></b><td><td><td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>LZWEncodePages</tt></b><td><td>(2)<td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>MaxSubsetPct</tt></b><td><td><td><td>100<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>MonoImageDepth</tt></b><td><td><td><td>-1<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>MonoImageDict</tt></b><td><td><td><td><<K -1>><td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>MonoImageDownsampleThreshold</tt></b><td><td><td><td>1.5<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>MonoImageDownsampleType</tt></b><td><td><td><td>/Subsample<td><td>/Average<td><td>/Bicubic<td><td>/Bicubic
+<tr valign=top><td><b><tt>MonoImageFilter</tt></b><td><td><td><td>/CCITTFaxEncode<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>MonoImageResolution</tt></b><td><td><td><td>300<td><td>300<td><td>1200<td><td>1200
+<tr valign=top><td><b><tt>NeverEmbed</tt></b><td><td><td><td>[]<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>OPM</tt></b><td><td><td><td>1<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>Optimize</tt></b><td><td>(0,5)<td><td>false<td><td>true<td><td>true<td><td>true
+<tr valign=top><td><b><tt>ParseDSCComments</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>ParseDSCCommentsForDocInfo</tt></b><td><td><td><td>true<td><td>false<td><td>true<td><td>true
+<tr valign=top><td><b><tt>PreserveCopyPage</tt></b><td><td>(0)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>PreserveEPSInfo</tt></b><td><td>(0)<td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>PreserveHalftoneInfo</tt></b><td><td><td><td>false<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>PreserveOPIComments</tt></b><td><td>(0)<td><td>false<td><td>false<td><td>true<td><td>true
+<tr valign=top><td><b><tt>PreserveOverprintSettings</tt></b><td><td><td><td>false<td><td>false<td><td>true<td><td>true
+<tr valign=top><td><b><tt>sRGBProfile</tt></b><td><td>(0)<td><td>()<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>StartPage</tt></b><td><td>(0)<td><td>1<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>SubsetFonts</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>TransferFunctionInfo</tt></b><td><td>(4)<td><td>/Preserve<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>UCRandBGInfo</tt></b><td><td><td><td>/Remove<td><td>/Remove<td><td>/Preserve<td><td>/Preserve
+<tr valign=top><td><b><tt>UseFlateCompression</tt></b><td><td><td><td>true<td><td>=<td><td>=<td><td>=
+<tr valign=top><td><b><tt>UsePrologue</tt></b><td><td>(0)<td><td>false<td><td>=<td><td>=<td><td>=
+</table></blockquote>
+
+<p>
+(note 0) This parameter can be set and queried, but currently has no effect.
+
+<p>
+(note 1) <b><tt>AutoFilterxxxImages</tt></b> doesn't examine the image to
+decide between JPEG and LZW or Flate compression: it uses JPEG compression
+if the image has 8 bits per component and does not use an Indexed color
+space, and LZW or Flate compression otherwise.
+
+<p>
+(note 2) Because of Unisys's threats regarding the Welch patent,
+<b><tt>ps2pdf</tt></b> cannot actually use LZW compression: instead, it
+treats all requests for LZW compression as calling for Flate compression if
+<b><tt>UseFlateCompression</tt></b> is true and
+<b><tt>CompatibilityLevel</tt></b> &gt;= 1.2, and ignores them otherwise.
+
+<p>
+(note 3) The <b><tt>xxxDownsampleType</tt></b> parameters can also have the
+value /Bicubic (a Distiller 4 feature), which is currently treated as
+equivalent to /Average.
+
+<p>
+(note 4) Currently, the transfer function is always applied. If the
+corresponding parameter is set to <b><tt>/Preserve</tt></b>, the function
+setting is also copied into the PDF file.
+
+<p>
+(note 5) Optimization (linearization) is implemented with a separate
+program, <b><tt>pdfopt</tt></b> <em>input.pdf</em> <em>output.pdf</em>; the
+<b><tt>Optimize</tt></b> parameter has no effect.
+
+<p>
+(note 6) Currently, colors for images and shadings are left in the color
+space specified in the PostScript input, except for
+<b><tt>ConvertCMYKImagesToRGB</tt></b>; the current color in the graphics
+state (used for fill, stroke, text, and imagemask) is always converted to
+the color space specified by the current value of
+<b><tt>ProcessColorModel</tt></b>. The intended behavior is the same as for
+Acrobat Distiller, except that if <b><tt>ColorConversionStrategy</tt></b> is
+set to <b><tt>/UseDeviceDependentColor</tt></b>, colors are converted to the
+color space specified by <b><tt>ProcessColorModel</tt></b> rather than
+always to <b><tt>/DeviceRGB</tt></b>.
+
+<p>
+(note 7) The default image parameter dictionary is
+<blockquote><b><tt>
+<< /QFactor 0.9 /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >>
+</tt></b></blockquote>
+
+<p>
+(note 8) The printer ACS image parameter dictionary is
+<blockquote><b><tt>
+<< /QFactor 0.55 /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >>
+</tt></b></blockquote>
+
+<p>
+(note 9) The prepress ACS image parameter dictionary is
+<blockquote><b><tt>
+<< /QFactor 0.25 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+</tt></b></blockquote>
+
+<hr>
+
+<h2><a name="Limitations"></a>Limitations</h2>
+
+<p>
+<b><tt>ps2pdf</tt></b> will sometimes convert text to high-resolution
+bitmapped fonts rather than to embedded outline fonts. This will occur when
+the PostScript file uses Type 3, CIDFontType 1, or CIDFontType 4 fonts, or
+Type 0 fonts that reference any of these; it may also occur in some cases if
+the input file uses fonts with non-standard encodings, or in some other rare
+cases.
+
+<p>
+The PDF output always represents the colors of text and graphics in
+DeviceGray or DeviceRGB color space (or DeviceCMYK if the
+<b><tt>ProcessColorModel</tt></b> parameter has been set to
+<b><tt>/DeviceCMYK</tt></b>); all other color spaces are converted to these.
+However, for images, it will retain the original color space for DeviceGray,
+DeviceRGB, DeviceCMYK, certain CIEBased spaces, and Indexed spaces based on
+these.
+
+<p>
+<b><tt>ps2pdf</tt></b> will sometimes convert PostScript constructs to
+lower-level ones, even if a higher-level construct is available. For
+example, if the PostScript file uses <b><tt>charpath</tt></b> to set a
+clipping path consisting of text, <b><tt>ps2pdf</tt></b> will write the
+clipping path as a path in the PDF file, rather than as text, even though
+PDF is able to express clipping with text. This is only a performance
+issue, and will be improved incrementally over time.
+
+<p>
+Some applications, such as HIGZ, produce PostScript files that use
+ridiculously large coordinates. On such files, <b><tt>ps2pdf</tt></b> may
+cause a <b><tt>limitcheck</tt></b> error. If this occurs, try reducing the
+default internal resolution of 720 dpi by using the <b><tt>-r</tt></b>
+switch, e.g., <b><tt>ps2pdf&nbsp;-r300&nbsp;somefile.ps</tt></b>.
+
+<p>
+<b><tt>ps2pdf</tt></b> ignores the PDF 1.3 (Acrobat 4.x) pdfmarks related to
+document content structure: <b><tt>StRoleMap</tt></b>,
+<b><tt>StClassMap</tt></b>, <b><tt>StPNE</tt></b>,
+<b><tt>StBookmarkRoot</tt></b>, <b><tt>StPush</tt></b>,
+<b><tt>StPop</tt></b>, <b><tt>StPopAll</tt></b>, <b><tt>StBMC</tt></b>,
+<b><tt>StBDC</tt></b>, <b><tt>EMC</tt></b>, <b><tt>StOBJ</tt></b>,
+<b><tt>StAttr</tt></b>, <b><tt>StStore</tt></b>, <b><tt>StRetrieve</tt></b>,
+<b><tt>NamespacePush</tt></b>, <b><tt>NamespacePop</tt></b>, and
+<b><tt>NI</tt></b>. While this causes some structural information to be
+omitted from the output file, the displayed and printed output are normally
+not affected.
+
+<p>
+<b><tt>ps2pdf</tt></b> currently has only very limited support for PDF 1.4.
+It writes out the blend mode, constant alpha, and text knockout graphics
+state parameters, and it handles images with soft masks, but it does not
+handle transparency groups, or soft masks in the graphics state. (Note that
+there is no standard way to specify any of these things in PostScript, so
+these statements only apply when the input file is already a PDF 1.4 file.)
+
+<hr>
+
+<h2><a name="Problems"></a>Known problems</h2>
+
+<p>
+Distiller parameters should only be saved by <b><tt>save</tt></b> and
+restored by <b><tt>restore</tt></b>, but they are also saved by
+<b><tt>gsave</tt></b> and restored by <b><tt>grestore</tt></b>.
+
+<p>
+Changing the value of the <b><tt>CompressPages</tt></b> parameter after any
+marks have been made on the page may cause a crash.
+
+<p>
+If the input file downloads Type 1 fonts incrementally, the output file may
+contain embedded fonts with some information missing from the
+FontDescriptor, which may crash Acrobat Reader 4 or produce incorrect
+character spacing.
+
+<hr>
+
+<h2><a name="Ps2pdf_vs_AD"></a>Comparison of <b><tt>ps2pdf</tt></b> and
+Acrobat Distiller</h2>
+
+<p>
+According to users, the greatest benefit of <b><tt>ps2pdf</tt></b> is that
+it is more robust than Acrobat Distiller: it will process complex and
+difficult PostScript files that Acrobat Distiller is not able to handle.
+
+<p>
+For certain documents, <b><tt>ps2pdf</tt></b> is much faster than Adobe
+Distiller, and may be suitable for run-time conversions. George White,
+a heavy user of <b><tt>ps2pdf</tt></b>, remarks:
+
+<blockquote>
+I haven't seen a head to head comparison, but Distiller seems
+slower when running on what should be a faster system (for instance,
+Distiller on a PPC Mac vs a 25 MHz 68040 NeXT running
+<b><tt>ps2pdf</tt></b>), so I think this is fair -- also, one of Mark
+Doyle's postings indicated that Distiller was not fast enough for use as a
+run-time server. In contrast, I find that I can use <b><tt>ps2pdf</tt></b>
+as a post-processor during routine document creation.
+</blockquote>
+
+<p>
+On the other hand, there are some documents for which <b><tt>ps2pdf</tt></b>
+may be much slower than Acrobat Distiller. Caveat user.
+
+<p>
+<b><tt>ps2pdf</tt></b> usually produces output that is comparable in size to
+the output of Acrobat Distiller; however, it sometimes produces much larger
+output, especially if the input file involves pattern fills.
+
+<p>
+Many users report that the combination of <b><tt>ps2pdf</tt></b> with
+Acrobat Reader is superior to using a generic PostScript viewer
+(<b><tt>psview</tt></b> or <b><tt>ghostview</tt></b>), particularly for
+documents with many pages where the navigational support in PDF files
+reduces the overhead involved in navigating conventional PostScript
+documents.
+
+<hr>
+
+<h2><a name="Acknowledgments"></a>Acknowledgments</h2>
+
+<p>
+Thanks to George N. White III &lt;<a href="mailto:aa056@chebucto.ns.ca">aa056@chebucto.ns.ca</a>&gt; of the Ocean
+Sciences Division of the Bedford Institute of Oceanography in Dartmouth,
+Nova Scotia for extensive testing of early versions of
+<b><tt>ps2pdf</tt></b>, and for contributing most of this writeup.
+
+<p>
+Thanks to Martin Hosken of SIL International &lt;<a
+href="http://www.sil.org">http://www.sil.org</a>&gt; for help with testing
+<b><tt>ps2pdf</tt></b> with a wide variety of international fonts.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Psfiles.htm b/Master/xemtex/doc/ghostscript/Psfiles.htm
new file mode 100644
index 00000000000..2b5a7a75c1c
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Psfiles.htm
@@ -0,0 +1,832 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>.ps files distributed with Ghostscript</title>
+<!-- $Id: Psfiles.htm,v 1.22.2.12.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: psfiles.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Postscript files distributed with Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#General">Generally used system files</a>
+<li><a href="#Obscure">More obscure system files</a>
+<li><a href="#PDF_specific">PDF-specific system files</a>
+<li><a href="#DPS_specific">Display PostScript-specific system files</a>
+<li><a href="#Art">Art and examples</a>
+<li><a href="#Utilities">Utilities</a>
+<li><a href="#Development_tools">Development tools</a>
+<li><a href="#Miscellany">Odds and ends</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="General"></a>Generally used system files</h2>
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><tt>gs_*_e.ps</tt>
+<dd><p>
+These files define the Encodings known to Ghostscript. All of
+them except <b><tt>gs_std_e.ps</tt></b> and <b><tt>gs_il1_e.ps</tt></b>
+are loaded only if referred to.
+
+<dl>
+
+<dt>
+PostScript Encodings:
+<dd>
+<a href="../lib/gs_ce_e.ps"><tt>gs_ce_e.ps</tt></a>,
+<a href="../lib/gs_il1_e.ps"><tt>gs_il1_e.ps</tt></a>,
+<a href="../lib/gs_std_e.ps"><tt>gs_std_e.ps</tt></a>,
+<a href="../lib/gs_sym_e.ps"><tt>gs_sym_e.ps</tt></a>.
+
+<dt>
+PDF Encodings:
+<dd>
+<a href="../lib/gs_mex_e.ps"><tt>gs_mex_e.ps</tt></a>,
+<a href="../lib/gs_mro_e.ps"><tt>gs_mro_e.ps</tt></a>,
+<a href="../lib/gs_pdf_e.ps"><tt>gs_pdf_e.ps</tt></a>,
+<a href="../lib/gs_wan_e.ps"><tt>gs_wan_e.ps</tt></a>.
+
+<dt>
+Non-standard Encodings:
+<dd>
+<a href="../lib/gs_dbt_e.ps"><tt>gs_dbt_e.ps</tt></a>,
+<a href="../lib/gs_il2_e.ps"><tt>gs_il2_e.ps</tt></a>,
+<a href="../lib/gs_ksb_e.ps"><tt>gs_ksb_e.ps</tt></a>,
+<a href="../lib/gs_wl1_e.ps"><tt>gs_wl1_e.ps</tt></a>,
+<a href="../lib/gs_wl2_e.ps"><tt>gs_wl2_e.ps</tt></a>,
+<a href="../lib/gs_wl5_e.ps"><tt>gs_wl5_e.ps</tt></a>.
+
+<dt>
+Pseudo-encodings:
+<dd>
+<a href="../lib/gs_css_e.ps"><tt>gs_css_e.ps</tt></a>,
+<a href="../lib/gs_lgo_e.ps"><tt>gs_lgo_e.ps</tt></a>,
+<a href="../lib/gs_lgx_e.ps"><tt>gs_lgx_e.ps</tt></a>,
+<a href="../lib/gs_mgl_e.ps"><tt>gs_mgl_e.ps</tt></a>.
+
+</dl>
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_btokn.ps"><tt>gs_btokn.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in if the <b><tt>btoken</tt></b>
+feature is included in the configuration. It provides support for binary
+tokens.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_ccfnt.ps"><tt>gs_ccfnt.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in if the <b><tt>ccfonts</tt></b>
+feature is included in the configuration. It provides support for compiled
+fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_cff.ps"><tt>gs_cff.ps</tt></a>
+<dd>Load CFF (compressed) fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_cidcm.ps"><tt>gs_cidcm.ps</tt></a>
+<dd>Code for recognizing font names of the form CIDFont-CMap (or
+CIDFont--CMap) and creating the font automatically.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_cidfn.ps"><tt>gs_cidfn.ps</tt></a>
+<dd><b><tt>ProcSet</tt></b> for implementing <b><tt>CIDFont</tt></b> and
+<b><tt>CIDMap</tt></b> resources.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_cmap.ps"><tt>gs_cmap.ps</tt></a>
+<dd><b><tt>ProcSet</tt></b> for implementing <b><tt>CMap</tt></b> resources.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_dscp.ps"><tt>gs_dscp.ps</tt></a>
+<dd>Code to compensate for badly written PostScript files by setting
+Orientation according to the DSC comments.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_epsf.ps"><tt>gs_epsf.ps</tt></a>
+<dd>Allow the interpreter to recognize DOS EPSF file headers, and skip to the
+PostScript section of the file.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_fonts.ps"><tt>gs_fonts.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in. It initializes Ghostscript's
+font machinery and provides some utility procedures that work with fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_frsd.ps"><tt>gs_frsd.ps</tt></a>
+<dd>Support for the PostScript LanguageLevel 3
+<b><tt>ReusableStreamDecode</tt></b> filter.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_init.ps"><tt>gs_init.ps</tt></a>
+<dd>Ghostscript reads this automatically when it starts up. It contains
+definitions of many standard procedures and initialization for a wide
+variety of things.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_lev2.ps"><tt>gs_lev2.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in if the Ghostscript interpreter
+includes Level 2 PostScript functions. It contains definitions of
+procedures and miscellaneous initialization for the Level 2 functions.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_ll3.ps"><tt>gs_ll3.ps</tt></a>
+<dd>Initialize PostScript LanguageLevel 3 functions.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_res.ps"><tt>gs_res.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in if the Level 2 resource
+machinery is included. Currently, this is the case for all Level 2
+configurations.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_setpd.ps"><tt>gs_setpd.ps</tt></a>
+<dd>Implementation of the <b><tt>setpagedevice</tt></b> operator.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_statd.ps"><tt>gs_statd.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in. It creates a dummy
+<b><tt>statusdict</tt></b> and some other environmental odds and ends for
+the benefit of PostScript files that really want to be printed on a
+LaserWriter.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_trap.ps"><tt>gs_trap.ps</tt></a>
+<dd>Stub support for the PostScript LanguageLevel 3 "In-RIP trapping"
+feature.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_ttf.ps"><tt>gs_ttf.ps</tt></a>
+<dd>Support code for direct use of TrueType fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_typ32.ps"><tt>gs_typ32.ps</tt></a>
+<dd>Initialization file for Type 32 fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_typ42.ps"><tt>gs_typ42.ps</tt></a>
+<dd>Support code for Type 42 fonts (TrueType font in a PostScript "wrapper").
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_type1.ps"><tt>gs_type1.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads this in if the Ghostscript interpreter
+includes Type 1 font capability (which it normally does).
+</dl>
+
+<hr>
+
+<h2><a name="Obscure"></a>More obscure system files</h2>
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../lib/font2c.ps"><tt>font2c.ps</tt></a>
+<dd>Convert a PostScript Type 0 or Type 1 font to C code that can be compiled
+and linked into Ghostscript; see the documentation on fonts for <a
+href="Fonts.htm#Precompiling">how to do this</a>.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_agl.ps"><tt>gs_agl.ps</tt></a>
+<dd>Contains the mapping from Adobe glyph names to Unicode values, used to
+support TrueType fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_cmdl.ps"><tt>gs_cmdl.ps</tt></a>
+<dd>This file is not used yet. Eventually it will replace C code that
+parses the Ghostscript command line.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_diskf.ps"><tt>gs_diskf.ps</tt></a>
+<dd>This file implements the <b><tt>-dDISKFONTS</tt></b> feature
+(<b><tt>diskfont.dev</tt></b>). See the the usage documentation for <a
+href="Use.htm#DISKFONTS">a description of this feature</a>.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_fform.ps"><tt>gs_fform.ps</tt></a>
+<dd>A usable but imperfect PostScript implementation of Form caching.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_kanji.ps"><tt>gs_kanji.ps</tt></a>
+<dd>This file provides support for the Wadalab free Kanji font. It is not
+included automatically in any configuration.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_pdfwr.ps"><tt>gs_pdfwr.ps</tt></a>
+<dd>This file contains some patches for providing information to the
+<b><tt>pdfwrite</tt></b> driver. It is included only if the
+<b><tt>pdfwrite</tt></b> driver is included.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_pfile.ps"><tt>gs_pfile.ps</tt></a>
+<dd>This file provides runtime support for packed fonts. It is not
+included automatically in any configuration.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_rdlin.ps"><tt>gs_rdlin.ps</tt></a>
+<dd>A tiny patch for systems with built-in readline support.
+</dl>
+
+<dl>
+<dt><a href="../lib/ht_ccsto.ps"><tt>ht_ccsto.ps</tt></a>
+<dd>A default stochastic CMYK halftone. This file is in the public domain.
+</dl>
+
+<dl>
+<dt><a href="../lib/stcolor.ps"><tt>stcolor.ps</tt></a>
+<dd>Configure the (Epson) <b><tt>stcolor</tt></b> driver
+</dl>
+
+<hr>
+
+<h2><a name="PDF_specific"></a>PDF-specific system files</h2>
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../lib/gs_l2img.ps"><tt>gs_l2img.ps</tt></a>
+<dd>The <b><tt>ProcSet</tt></b> that emulates the PostScript Level 2
+"<b><tt>image</tt></b>" operator on Level 1 systems.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf_base.ps"><tt>pdf_base.ps</tt></a>
+<dd>Utilities for interpreting PDF objects and streams.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf_draw.ps"><tt>pdf_draw.ps</tt></a>
+<dd>The interpreter for drawing-related PDF operations.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf_font.ps"><tt>pdf_font.ps</tt></a>
+<dd>Code for handling fonts in PDF files.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf_main.ps"><tt>pdf_main.ps</tt></a>
+<dd>Document- and page-level control for interpreting PDF files.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf_ops.ps"><tt>pdf_ops.ps</tt></a>
+<dd>Definitions for most of the PDF operators.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf_sec.ps"><tt>pdf_sec.ps</tt></a>
+<dd>PDF security (encryption) code.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdfopt.ps"><tt>pdfopt.ps</tt></a>
+<dd>A PDF linearizer ("optimizer").
+</dl>
+
+<dl>
+<dt><a href="../lib/pdfwrite.ps"><tt>pdfwrite.ps</tt></a>
+<dd>Support for writing PDF files. Currently used only by the linearizer,
+but potentially useful for other kinds of PDF-processing utilities.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_icc.ps"><tt>gs_icc.ps</tt></a> <dd>Support for
+ICC color profiles. These are not a standard PostScript feature, but
+are used in the PDF interpreter, as ICC profiles may be embedded in
+PDF files.
+</dl>
+
+<hr>
+
+<h2><a name="DPS_specific"></a>Display PostScript-specific system files</h2>
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../lib/gs_dpnxt.ps"><tt>gs_dpnxt.ps</tt></a>
+<dd>NeXT Display PostScript extensions.
+</dl>
+
+<dl>
+<dt><a href="../lib/gs_dps.ps"><tt>gs_dps.ps</tt></a>,
+<a href="../lib/gs_dps1.ps"><tt>gs_dps1.ps</tt></a>,
+<a href="../lib/gs_dps2.ps"><tt>gs_dps2.ps</tt></a>
+<dd><b><tt>gs_init.ps</tt></b> reads these in if the <b><tt>dps</tt></b>
+feature is included in the configuration. They provide support for various
+Display PostScript and Level 2 features.
+</dl>
+
+<hr>
+
+<h2><a name="Art"></a>Art and examples</h2>
+
+<p>
+These files are found in the <b><tt>examples</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../examples/alphabet.ps"><tt>alphabet.ps</tt></a>
+<dd>Prints a sample alphabet at several different sizes.
+</dl>
+
+<dl>
+<dt><a href="../examples/annots.pdf"><tt>annots.pdf</tt></a>
+<dd>A sample file with a wide variety of PDF "annotations".
+</dl>
+
+<dl>
+<dt><a href="../examples/colorcir.ps"><tt>colorcir.ps</tt></a>
+<dd>A set of nested ellipses made up of colored bars.
+</dl>
+
+<dl>
+<dt><a href="../examples/doretree.ps"><tt>doretree.ps</tt></a>
+<dd>A 3-D image produced by a modeling program. This file is in the public
+domain.
+</dl>
+
+<dl>
+<dt><a href="../examples/escher.ps"><tt>escher.ps</tt></a>
+<dd>A colored version of a hexagonally symmetric Escher drawing of
+interlocking butterflies. Can be printed on monochrome devices, with
+somewhat less dramatic results.
+</dl>
+
+<dl>
+<dt><a href="../examples/golfer.ps"><tt>golfer.ps</tt></a>
+<dd>A gray-scale picture of a stylishly dressed woman swinging a golf club.
+</dl>
+
+<dl>
+<dt><a href="../examples/grayalph.ps"><tt>grayalph.ps</tt></a>
+<dd>Grayscaled text test pattern.
+</dl>
+
+<dl>
+<dt><a href="../examples/ridt91.eps"><tt>ridt91.eps</tt></a>
+<dd>The RIDT '91 logo. Note that since this is an EPS file, you will have
+to add "<b><tt>-c&nbsp;showpage</tt></b>" at the end of the command line to
+print it or convert it to a raster file.
+</dl>
+
+<dl>
+<dt><a href="../examples/snowflak.ps"><tt>snowflak.ps</tt></a>
+<dd>A rectangular grid of intricate colored snowflakes. (May render very
+slowly.)
+</dl>
+
+<dl>
+<dt><a href="../examples/tiger.ps"><tt>tiger.ps</tt></a>
+<dd>A dramatic colored picture of a tiger's head.
+</dl>
+
+<dl>
+<dt><a href="../examples/vasarely.ps"><tt>vasarely.ps</tt></a>
+<dd>Colored rectangles and ellipses inspired by Victor Vasarely's experiments
+with tilting circles and squares.
+</dl>
+
+<dl>
+<dt><a href="../examples/waterfal.ps"><tt>waterfal.ps</tt></a>
+<dd>Prints text in a variety of different sizes, to help evaluate the
+quality of text rendering.
+</dl>
+
+<hr>
+
+<h2><a name="Utilities"></a>Utilities</h2>
+
+<p>
+For more information on these utility programs, see the comments at the
+beginnings of the files. The ones marked (*) have batch files or shell
+scripts of the same name (like <b><tt>bdftops</tt></b> and
+<b><tt>bdftops.bat</tt></b>) to invoke them conveniently.
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../lib/addxchar.ps"><tt>addxchar.ps</tt></a>
+<dd>A utility to add Central European and other Adobe extended Latin
+characters to a Type 1 font.
+</dl>
+
+<dl>
+<dt><a href="../lib/align.ps"><tt>align.ps</tt></a>
+<dd>A test page for determining the proper margin and offset parameters for
+your printer.
+</dl>
+
+<dl>
+<dt><a href="../lib/bdftops.ps"><tt>bdftops.ps</tt></a> *
+<dd>A utility for converting BDF fonts to outline form: see the <a
+href="Fonts.htm">documentation on fonts</a>.
+</dl>
+
+<dl>
+<dt><a href="../lib/bench.ps"><tt>bench.ps</tt></a>
+<dd>A file useful for running benchmarks.
+</dl>
+
+<dl>
+<dt><a href="../lib/caption.ps"><tt>caption.ps</tt></a>
+<dd>A file for putting a caption in a box at the bottom of each page,
+useful for trade show demos.
+</dl>
+
+<dl>
+<dt><a href="../lib/cid2code.ps"><tt>cid2code.ps</tt></a>
+<dd>A utility for creating maps from CIDs to Unicode, useful when
+substituting a TrueType font for an Adobe font.
+</dl>
+
+<dl>
+<dt><a href="../lib/docie.ps"><tt>docie.ps</tt></a>
+<dd>An emulation of the CIE color mapping algorithms.
+</dl>
+
+<dl>
+<dt><a href="../lib/errpage.ps"><tt>errpage.ps</tt></a>
+<dd>A file that you can put in front of your own files to make Ghostscript
+(or a PostScript printer) produce an informative error page if something
+goes wrong during the processing of your file(s).
+</dl>
+
+<dl>
+<dt><a href="../lib/font2pcl.ps"><tt>font2pcl.ps</tt></a>
+<dd>A utility to write a font as a PCL bitmap font.
+</dl>
+
+<dl>
+<dt><a href="../lib/gslp.ps"><tt>gslp.ps</tt></a> *
+<dd>A utility for doing "line printing" of plain text files.
+</dl>
+
+<dl>
+<dt><a href="../lib/gsnup.ps"><tt>gsnup.ps</tt></a>
+<dd>A file that you can concatenate in front of (very well-behaved)
+PostScript files to do N-up printing. It is deliberately simple and naive:
+for more generality, use <b><tt>psnup</tt></b> (which, however, requires DSC
+comments).
+</dl>
+
+<dl>
+<dt><a href="../lib/jispaper.ps"><tt>jispaper.ps</tt></a>
+<dd>A file that makes the <b><tt>b0</tt></b> through <b><tt>b6</tt></b>
+procedures refer to JIS B paper sizes rather than ISO B.
+</dl>
+
+
+<dl>
+<dt><a href="../lib/impath.ps"><tt>impath.ps</tt></a>
+<dd>A utility for reconstructing outlines from bitmap images, used by
+<b><tt>bdftops</tt></b>.
+</dl>
+
+<dl>
+<dt><a href="../lib/landscap.ps"><tt>landscap.ps</tt></a>
+<dd>A file that you can put in front of your own files to get them rendered
+in landscape mode.
+</dl>
+
+<dl>
+<dt><a href="../lib/level1.ps"><tt>level1.ps</tt></a>
+<dd>A file that turns off any Level 2 features.
+</dl>
+
+<dl>
+<dt><a href="../lib/packfile.ps"><tt>packfile.ps</tt></a>
+<dd>A utility for compressing fonts into a single file.
+</dl>
+
+<dl>
+<dt><a href="../lib/pdf2dsc.ps"><tt>pdf2dsc.ps</tt></a>
+<dd>A utility to read a PDF file and produce a DSC "index" file.
+</dl>
+
+<dl>
+<dt><a href="../lib/pf2afm.ps"><tt>pf2afm.ps</tt></a> *
+<dd>A utility for producing AFM files from PFA, PFB, and optionally PFM
+files.
+</dl>
+
+<dl>
+<dt><a href="../lib/pfbtopfa.ps"><tt>pfbtopfa.ps</tt></a> *
+<dd>A utility to convert PFB (binary) font files to PFA (text) format.
+</dl>
+
+<dl>
+<dt><a href="../lib/prfont.ps"><tt>prfont.ps</tt></a>
+<dd>A utility to print a font catalog.
+</dl>
+
+<dl>
+<dt><a href="../lib/printafm.ps"><tt>printafm.ps</tt></a>
+<dd>A utility to print an AFM file on standard output.
+</dl>
+
+<dl>
+<dt><a href="../lib/ps2ai.ps"><tt>ps2ai.ps</tt></a>
+<dd>A utility for converting an arbitrary PostScript file into a form
+compatible with Adobe Illustrator. NOTE: <b><tt>ps2ai</tt></b> doesn't
+work properly with Adobe's Helvetica-Oblique font, and other fonts whose
+original <b><tt>FontMatrix</tt></b> involves skewing or rotation.
+</dl>
+
+<dl>
+<dt><a href="../lib/ps2ascii.ps"><tt>ps2ascii.ps</tt></a> *
+<dd>A utility for extracting the ASCII text from PostScript source files.
+It redefines many operators. For more information, see the comments in the
+file.
+</dl>
+
+<dl>
+<dt><a href="../lib/ps2epsi.ps"><tt>ps2epsi.ps</tt></a> *
+<dd>A utility for converting an arbitrary PostScript file into EPSI form.
+</dl>
+
+<dl>
+<dt><a href="../lib/quit.ps"><tt>quit.ps</tt></a>
+<dd>A file containing just the word "<b><tt>quit</tt></b>". (The
+<b><tt>-c</tt></b> switch now makes this unnecessary; this file exists for
+backward compatibility.)
+</dl>
+
+<dl>
+<dt><a href="../lib/rollconv.ps"><tt>rollconv.ps</tt></a>
+<dd>A utility for converting files produced by Macromedia's
+<b><tt>Rollup</tt></b> program to a Type 0 form directly usable by
+Ghostscript.
+</dl>
+
+<dl>
+<dt><a href="../lib/showpage.ps"><tt>showpage.ps</tt></a>
+<dd>A file containing just the word "<b><tt>showpage</tt></b>". (The
+<b><tt>-c</tt></b> switch now makes this unnecessary; this file exists for
+backward compatibility.)
+</dl>
+
+<dl>
+<dt><a href="../lib/stocht.ps"><tt>stocht.ps</tt></a>
+<dd>A file that installs the StochasticDefault halftone as the default,
+which may improve output quality on inkjet printers. See the file for more
+information.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewcmyk.ps"><tt>viewcmyk.ps</tt></a>
+<dd>A utility for displaying CMYK files.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewgif.ps"><tt>viewgif.ps</tt></a>
+<dd>A utility for displaying GIF files.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewjpeg.ps"><tt>viewjpeg.ps</tt></a>
+<dd>A utility for displaying JPEG files.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewmiff.ps"><tt>viewmiff.ps</tt></a>
+<dd>A utility for displaying MIFF files.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewpbm.ps"><tt>viewpbm.ps</tt></a>
+<dd>A utility for displaying PBM/PGM/PPM files.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewpcx.ps"><tt>viewpcx.ps</tt></a>
+<dd>A utility for displaying PCX files.
+</dl>
+
+<dl>
+<dt><a href="../lib/waterfal.ps"><tt>waterfal.ps</tt></a>
+<dd>A utility to print a "waterfall" of fonts at different sizes.
+</dl>
+
+<hr>
+
+<h2><a name="Development_tools"></a>Development tools</h2>
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../lib/acctest.ps"><tt>acctest.ps</tt></a>
+<dd>A utility that checks whether the interpreter enforces access
+restrictions.
+</dl>
+
+<dl>
+<dt><a href="../lib/decrypt.ps"><tt>decrypt.ps</tt></a>
+<dd>A utility for decrypting the <b><tt>eexec</tt></b> section of a font.
+</dl>
+
+<dl>
+<dt><a href="../lib/image-qa.ps"><tt>image-qa.ps</tt></a>
+<dd>A comprehensive test of the image display operators.
+</dl>
+
+<dl>
+<dt><a href="../lib/markpath.ps"><tt>markpath.ps</tt></a>
+<dd>A utility for showing the points on a path.
+</dl>
+
+<dl>
+<dt><a href="../lib/pcharstr.ps"><tt>pcharstr.ps</tt></a>
+<dd>A utility for printing out the <b><tt>CharStrings</tt></b> and
+<b><tt>Subrs</tt></b> in a Type 1 font.
+</dl>
+
+<dl>
+<dt><a href="../lib/ppath.ps"><tt>ppath.ps</tt></a>
+<dd>A couple of utilities for printing out the current path, for debugging.
+</dl>
+
+<dl>
+<dt><a href="../lib/pphs.ps"><tt>pphs.ps</tt></a>
+<dd>A utility to print the Primary Hint Stream of a linearized PDF file.
+</dl>
+
+<dl>
+<dt><a href="../lib/traceimg.ps"><tt>traceimg.ps</tt></a>
+<dd>Trace the data supplied to the <b><tt>image</tt></b> operator.
+</dl>
+
+<dl>
+<dt><a href="../lib/traceop.ps"><tt>traceop.ps</tt></a>
+<dd>A utility for tracing uses of any procedure or operator for debugging.
+</dl>
+
+<dl>
+<dt><a href="../lib/type1enc.ps"><tt>type1enc.ps</tt></a>
+<dd>The Type 1 font format encryption and decryption algorithms, written in
+PostScript.
+</dl>
+
+<dl>
+<dt><a href="../lib/uninfo.ps"><tt>uninfo.ps</tt></a>
+<dd>Some utilities for printing out PostScript data structures.
+</dl>
+
+<dl>
+<dt><a href="../lib/unprot.ps"><tt>unprot.ps</tt></a>
+<dd>A prologue to disable access checking.
+</dl>
+
+<dl>
+<dt><a href="../lib/viewps2a.ps"><tt>viewps2a.ps</tt></a>
+<dd>A utility for displaying the output of <b><tt>ps2ascii.ps</tt></b>.
+</dl>
+
+<dl>
+<dt><a href="../lib/wftopfa.ps"><tt>wftopfa.ps</tt></a>
+<dd>Convert a Wadalab (Japanese) base font to <b><tt>.PFA</tt></b> (or
+<b><tt>.PFB</tt></b>) format.
+</dl>
+
+<dl>
+<dt><a href="../lib/winmaps.ps"><tt>winmaps.ps</tt></a>
+<dd>A utility for creating mappings between the Adobe encodings and the
+Microsoft Windows character sets.
+</dl>
+
+<dl>
+<dt><a href="../lib/wrfont.ps"><tt>wrfont.ps</tt></a>
+<dd>A utility for writing out an unprotected Type 1 font, such as the
+standard Ghostscript fonts.
+</dl>
+
+<dl>
+<dt><a href="../lib/zeroline.ps"><tt>zeroline.ps</tt></a>
+<dd>A utility for testing how interpreters handle zero-width lines.
+</dl>
+
+<hr>
+
+<h2><a name="Miscellany"></a>Odds and ends</h2>
+
+<p>
+These files are found in the <b><tt>lib</tt></b> subdirectory of
+the Ghostscript source distribution.
+
+<dl>
+<dt><a href="../lib/lines.ps"><tt>lines.ps</tt></a>
+<dd>A test program for line joins and caps.
+</dl>
+
+<dl>
+<dt><a href="../lib/markhint.ps"><tt>markhint.ps</tt></a>
+<dd>Draw the hints for a Type 1 font.
+</dl>
+
+<dl>
+<dt><a href="../lib/showchar.ps"><tt>showchar.ps</tt></a>
+<dd>Show a character's outline and rasterized forms.
+</dl>
+
+<dl>
+<dt><a href="../lib/stcinfo.ps"><tt>stcinfo.ps</tt></a>
+<dd>Print and show parameters of the (Epson) <b><tt>stcolor</tt></b> driver.
+</dl>
+
+<dl>
+<dt><a href="../lib/type1ops.ps"><tt>type1ops.ps</tt></a>
+<dd>The Type 1 font format opcodes.
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/README b/Master/xemtex/doc/ghostscript/README
new file mode 100644
index 00000000000..193c9f09192
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/README
@@ -0,0 +1,391 @@
+
+ Overview of Ghostscript
+
+ If this is your first contact with Ghostscript, before continuing here
+ you should read the documentation for new users, where you'll find
+ * what Ghostscript does (PostScript and PDF previewing, conversion,
+ and printing);
+ * its licensing terms (free for ordinary use);
+ * what platforms it runs on (every platform you're likely to be
+ interested in);
+ * where to find some useful programs that enhance Ghostscript (like
+ user-friendly previewers for Unix, VMS, MS Windows, DOS, and
+ Macintosh); and
+ * what to do if you need help.
+
+ The rest of this document is a roadmap to the Ghostscript
+ documentation. After looking through it, if you want to install
+ Ghostscript and not only use it, we recommend you read how to install
+ Ghostscript, and how to compile Ghostscript from source code (which is
+ necessary before installing it on Unix and VMS systems).
+ _________________________________________________________________
+
+Table of contents
+
+ * Document roadmap by theme
+ + What should I read if I'm a new user?
+ + Before building Ghostscript
+ + What should I read if I'm not a new user?
+ + What if I'm a developer?
+ + What if I'm writing documentation?
+ * Presence on the World Wide Web
+ + Ghostscript's home pages
+ + Adobe PostScript, Encapsulated PostScript, and PDF reference
+ documentation
+ + Other material on the WWW
+ * Which document contains what?
+ + Primarily for users:
+
+ Devices.htm
+ Helpers.htm
+ Humor.htm
+ New-user.htm
+ Ps2epsi.htm
+ Ps2pdf.htm
+ Readme.htm
+ Unix-lpr.htm
+ Use.htm
+
+ + For both users and developers:
+
+ Changes.htm
+ Current.htm
+ CJK.htm
+ Fonts.htm
+ Hershey.htm
+ History*.htm
+ Install.htm
+ Language.htm
+ Make.htm
+ News.htm
+ Psfiles.htm
+
+ + Primarily for developers:
+
+ API.htm
+ C-style.htm
+ CJKTTCID.htm
+ DLL.htm
+ Develop.htm
+ Drivers.htm
+ Htmstyle.htm
+ Issues.htm
+ Lib.htm
+ Maintain.htm
+ Projects.htm
+ Ps-style.htm
+ Release.htm
+ Source.htm
+ Xfonts.htm
+ _________________________________________________________________
+
+Document roadmap by theme
+
+ What should I read if I'm a new user?
+
+ A new user of Ghostscript should begin by reading the material
+ specifically for new users, then as many of these documents as seem
+ useful:
+ * how to install Ghostscript
+ * how to use Ghostscript; some of this information information also
+ found in gs.1, the Unix "man" page for Ghostscript.
+ * the catalogs at the beginning of devs.mak and contrib.mak, which
+ list all the devices for which Ghostscript is able to produce
+ output (although if you got Ghostscript in binary form, it will
+ only include some of these devices)
+ * detailed information about some specific devices that Ghostscript
+ knows about
+ * more detailed information about how to use Ghostscript under Unix
+ with lpr as a filter for non-PostScript printers
+ * about the fonts distributed with Ghostscript, including how to add
+ or replace fonts
+ * a description of the Ghostscript language, and its differences
+ from the documented PostScript language
+ * about the postscript files distributed with Ghostscript (other
+ than fonts)
+
+ Before building Ghostscript
+
+ If you are going to compile Ghostscript, rather than just use an
+ executable you got from somewhere, you should read:
+ * how to build Ghostscript and install it
+ _________________________________________________________________
+
+What should I read if I'm not a new user?
+
+ If you have already used Ghostscript, when you receive a new release
+ you should begin by reading this file, then
+ * News.htm, for incompatible changes and new features in the current
+ release;
+ * Current.htm, for known problems in the current release;
+ * if you wish, Changes.htm, for a detailed list of changes in the
+ current release;
+ * if you wish, History#.htm (currently History7.htm), for changes in
+ other releases.
+ _________________________________________________________________
+
+What if I'm a developer?
+
+ If you are going to do any development on or with Ghostscript at all,
+ you should at least look at
+ * the roadmap documentation for Ghostscript's source files and
+ architecture
+
+ If you are going to write a new driver for Ghostscript, you should
+ read
+ * the guide to the Ghostscript source code
+ * the interface between Ghostscript and device drivers
+ * about the external font interface between Ghostscript and
+ platform-supplied fonts (but read about drivers in general first)
+
+ If you intend to use Ghostscript in the form of a dynamic link library
+ (DLL) under OS/2 or Microsoft Windows or in the form of shared object
+ under GNU/Linux, read
+ * documentation on Ghostscript Interpreter API
+
+ If you want to use Ghostscript as part of another program--as a
+ callable PostScript language interpreter--and not as a DLL or as a
+ self-contained executable application, you should begin by reading
+ * the source file imain.h, the documented API for Ghostscript not as
+ a DLL
+
+ or if you are going to use only the Ghostscript graphics library,
+ * about the structure of the Ghostscript library and its interfaces
+ _________________________________________________________________
+
+What if I'm writing documentation?
+
+ If you are editing or adding to Ghostscript's existing documentation
+ in HTML format, or writing a new document, you should read
+ * the coding and style guidelines for Ghostscript's HTML-based
+ documentation.
+ _________________________________________________________________
+
+Presence on the World Wide Web
+
+ Ghostscript's home page
+
+ GNU Ghostscript has a home page on the World Wide Web with helpful
+ information. Pleave visit:
+
+ http://www.gnu.org/software/ghostscript/
+
+ More material about Ghostscript can be found at
+
+ http://www.ghostscript.com/
+
+ Adobe PostScript, Encapsulated PostScript, and PDF reference documentation
+
+ Adobe makes a wealth of technical documentation available over the
+ Web, including the PostScript Language Reference Manual (Third
+ Edition); the Encapsulated PostScript (EPS) Format Specification
+ version 3, including Encapsulated PostScript Interchange (EPSI)
+ format; the PDF 1.3 specification; and the pdfmark, transparency and
+ Acrobat Distiller parameters documentation. Some of these documents
+ are also available at Adobe's ftp site, but not necessarily under the
+ same filenames.
+
+ Other material on the WWW
+
+ Much other material about Ghostscript is available on the World Wide
+ Web, both as web pages and as archived Usenet and mailing list
+ discussions. Use the well-known search engines to find such material.
+
+ There is a good manual for Ghostscript available in PDF form, in
+ English and German (and soon in Japanese), at:
+
+ http://www.pdflib.com/gsmanual
+
+ There is a translation of the Ghostscript 'man' pages into Czech at:
+
+ http://www.volny.cz/rebus/ghostscript/
+ _________________________________________________________________
+
+Which document contains what?
+
+ Here is the list in alphabetic order of Ghostscript documentation,
+ with explanations of the contents.
+
+ API.htm
+ On MS-Windows and OS/2, Ghostscript is compiled as a dynamic
+ link library (DLL). On GNU/Linux, Ghostscript can be compiled
+ as a shared object. This describes how to use it. For
+ developers.
+
+ C-style.htm
+ Guidelines and style for C coding, which you should follow if,
+ for example, you write a new driver or add or change something
+ in Ghostscript. For developers.
+
+ Changes.htm
+ A detailed list of all code changes in the current release or
+ pre-release, generated mechanically from the CVS logs. For
+ developers.
+
+ CJK.htm
+ Usage of features to support CJK CID-keyed fonts in
+ Ghostscript.
+
+ CJKTTCID.htm
+ Note providing information on utilization of CJK (Chinese,
+ Japanese and Korean) TrueType fonts as CIDFontType2 fonts from
+ the viewpoint of its validity and limitations.
+
+ Current.htm
+ Information specifically about the current release of
+ Ghostscript. See also the latest news of changes.
+
+ DLL.htm
+ On OS/2, MS Windows-16 and MS Windows-32 platforms, Ghostscript
+ is compiled as a dynamic link library (DLL). This describes how
+ to use it. For developers. This DLL interface is obsolete. Use
+ API.htm instead.
+
+ Develop.htm
+ Code orientation for developers. Contains a detailed breakdown
+ of the source files by functional group, and overviews of the
+ major architectural features and services.
+
+ Devices.htm
+ Detailed information about some specific devices for which
+ Ghostscript can produce output. Run "gs -h" to see which
+ devices a particular version of Ghostscript is built to use.
+
+ Drivers.htm
+ Describes the interface between Ghostscript and device drivers.
+ If you do this, you should also read and use the C style and
+ coding guidelines. Necessary to develop a new driver. For
+ developers.
+
+ Fonts.htm
+ All about fonts freely available for Ghostscript, and how to
+ add and use new fonts. Also describes how to use Ghostscript
+ fonts as X Windows fonts. For both users and developers.
+
+ Helpers.htm
+ A note of thanks to people who have helped in the development
+ of Ghostscript.
+
+ Hershey.htm
+ Part 1 of the five-part original Usenet distribution of the
+ free Hershey fonts, giving the terms of use and describing
+ their encoding.
+
+ History*.htm
+ The history of changes in all Ghostscript releases:
+
+ History7.htm for Ghostscript versions 7.n
+ History6.htm for Ghostscript versions 6.n
+ History5.htm for Ghostscript versions 5.n
+ History4.htm for Ghostscript versions 4.n
+ History3.htm for Ghostscript versions 3.n
+ History2.htm for Ghostscript versions 2.n
+ History1.htm for Ghostscript versions 1.n
+
+ Htmstyle.htm
+ The guidelines and style for HTML coding of Ghostscript's
+ documentation, which you should follow if, for example, you
+ change existing HTML documentation or write new documents. For
+ writers and editors.
+
+ Humor.htm
+ Another Ghostscript interpreter.
+
+ Install.htm
+ How to install Ghostscript. See also how to build it.
+
+ Issues.htm
+ A list of outstanding open issues in Ghostscript. These include
+ known limitations, minor bugs, performance issues, differences
+ from Adobe implementations, and others.
+
+ Language.htm
+ The relationship between the Ghostscript interpreter and the
+ PostScript language as defined by Adobe.
+
+ Lib.htm
+ A description of the Ghostscript library, a set of procedures
+ to implement the graphics and filtering capabilities that are
+ primitive operations in the PostScript language and in Adobe
+ Portable Document Format (PDF). For developers.
+
+ Maintain.htm
+ Assorted Ghostscript maintenance procedures. For developers.
+
+ Make.htm
+ How to build Ghostscript executables from the source code. See
+ also how to install it. It's not necessary to be a highly
+ experienced developer to build or install Ghostscript, but some
+ experience is needed.
+
+ New-user.htm
+ Essential information for new users of Ghostscript.
+
+ News.htm
+ A brief description of the latest release or pre-release of
+ Ghostscript, and a list of any incompatible changes in it.
+ Changes in older releases are described in the history files
+ "History*.htm", which are usually installed in the
+ documentation directory. Run "gs -h" to see where that is.
+
+ Projects.htm
+ A list of Ghostscript development projects with which we would
+ like help.
+
+ Ps-style.htm
+ The guidelines and style for postscript coding in Ghostscript.
+ Some of Ghostscript is implemented in the postscript language
+ itself, and various utilities and examples are distributed with
+ it. You should follow these guidelines if you're extending or
+ modifying those files. For developers.
+
+ Ps2epsi.htm
+ Detailed information on how to use Ghostscript through ps2epsi
+ to convert PostScript to Adobe Encapsulated PostScript
+ Interchange (EPSI) format.
+
+ Ps2pdf.htm
+ Detailed information on how to use Ghostscript through ps2pdf
+ to convert PostScript to Adobe Portable Document Format (PDF).
+
+ Psfiles.htm
+ A description of the PostScript files (other than font files)
+ distributed with Ghostscript, including initialization
+ routines, utility programs, and sample printable files.
+
+ Readme.htm
+ This document.
+
+ Release.htm
+ A description of how to prepare and test a Ghostscript release.
+ Of interest only to developers who want to create new
+ Ghostscript versions for distribution.
+
+ Source.htm
+ A guide to the Ghostscript source code, for development and
+ debugging.
+
+ Unix-lpr.htm
+ How to set up Ghostscript as a Unix lpr filter.
+
+ Use.htm
+ Detailed instructions on how to use Ghostscript, including such
+ matters as designating an output device; choosing a default
+ paper size; how Ghostscript finds files, including font files;
+ how it uses environment variables; notes on specific platforms,
+ including the X Window System; and command-line options.
+
+ Xfonts.htm
+ Ghostscript's external font interface to a host platform's
+ font-rendering mechanism, for developers.
+ _________________________________________________________________
+
+ Copyright © 1996, 2000 Aladdin Enterprises. All rights reserved.
+
+ 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.
+
+ Ghostscript version 7.07, 17 May 2003
diff --git a/Master/xemtex/doc/ghostscript/Readme.htm b/Master/xemtex/doc/ghostscript/Readme.htm
new file mode 100644
index 00000000000..b1ed5164975
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Readme.htm
@@ -0,0 +1,634 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Overview of Ghostscript</title>
+<!-- $Id: Readme.htm,v 1.31.2.16.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: README -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Overview of Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+If this is your first contact with Ghostscript, before continuing here you
+should read the <a href="New-user.htm">documentation for new users</a>,
+where you'll find
+
+<ul>
+<li><a href="New-user.htm#Overview">what Ghostscript does</a> (PostScript
+and PDF previewing, conversion, and printing);
+
+<li>its <a href="New-user.htm#Find_Ghostscript">licensing terms</a> (free
+for ordinary use);
+
+<li>what <a href="New-user.htm#Platforms">platforms it runs on</a> (every
+platform you're likely to be interested in);
+
+<li>where to find some <a href="New-user.htm#Previewers">useful
+programs</a> that enhance Ghostscript (like user-friendly previewers for
+Unix, VMS, MS Windows, DOS, and Macintosh); and
+
+<li>what to do <a href="New-user.htm#Need_help">if you need help</a>.
+</ul>
+
+<p>
+The rest of this document is a roadmap to the Ghostscript documentation.
+After looking through it, if you want to install Ghostscript and not only
+use it, we recommend you read <a href="Install.htm">how to install
+Ghostscript</a>, and <a href="Make.htm">how to compile Ghostscript</a> from
+source code (which is necessary before installing it on Unix and VMS
+systems).
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Theme_roadmap">Document roadmap by theme</a>
+<ul>
+<li><a href="#New_users">What should I read if I'm a new user?</a>
+<li><a href="#Before_building">Before building Ghostscript</a>
+<li><a href="#Not_a_new_user">What should I read if I'm not a new user?</a>
+<li><a href="#Developer">What if I'm a developer?</a>
+<li><a href="#Writer">What if I'm writing documentation?</a>
+</ul>
+<li><a href="#Web_presence">Presence on the World Wide Web</a>
+<ul>
+<li><a href="#Web_home_page">Ghostscript's home pages</a>
+<li><a href="#Adobe_documentation">Adobe PostScript, Encapsulated
+PostScript, and PDF reference documentation</a>
+<li><a href="#Web_other">Other material on the WWW</a>
+</ul>
+<li><a href="#Ordered_roadmap">Which document contains what?</a>
+<ul>
+<li>Primarily for users:
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><td valign=top>
+<a href="#Devices">Devices.htm</a><br>
+<a href="#Helpers">Helpers.htm</a><br>
+<td>&nbsp;&nbsp;&nbsp;<td valign=top>
+<a href="#Humor">Humor.htm</a><br>
+<a href="#New-user">New-user.htm</a><br>
+<a href="#Ps2epsi">Ps2epsi.htm</a><br>
+<a href="#Ps2pdf">Ps2pdf.htm</a><br>
+<td>&nbsp;&nbsp;&nbsp;<td valign=top>
+<a href="#Readme">Readme.htm</a><br>
+<a href="#Unix-lpr">Unix-lpr.htm</a><br>
+<a href="#Use">Use.htm</a><br>
+<tr><td valign=top>
+</table></blockquote>
+<li>For both users and developers:
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><td valign=top>
+<a href="#Changes">Changes.htm</a><br>
+<a href="#Current">Current.htm</a><br>
+<a href="#CJK">CJK.htm</a><br>
+<a href="#Fonts">Fonts.htm</a><br>
+<td>&nbsp;&nbsp;&nbsp;<td valign=top>
+<a href="#Hershey">Hershey.htm</a><br>
+<a href="#History">History*.htm</a><br>
+<a href="#Install">Install.htm</a><br>
+<a href="#Language">Language.htm</a><br>
+<a href="#Make">Make.htm</a><br>
+<td>&nbsp;&nbsp;&nbsp;<td valign=top>
+<a href="#News">News.htm</a><br>
+<a href="#Psfiles">Psfiles.htm</a><br>
+</table></blockquote>
+<li>Primarily for developers:
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><td valign=top>
+<a href="#API">API.htm</a><br>
+<a href="#C-style">C-style.htm</a><br>
+<a href="#CJKTTCID">CJKTTCID.htm</a><br>
+<a href="#DLL">DLL.htm</a><br>
+<a href="#Develop">Develop.htm</a><br>
+<a href="#Drivers">Drivers.htm</a><br>
+<td>&nbsp;&nbsp;&nbsp;<td valign=top>
+<a href="#Htmstyle">Htmstyle.htm</a><br>
+<a href="#Issues">Issues.htm</a><br>
+<a href="#Lib">Lib.htm</a><br>
+<a href="#Maintain">Maintain.htm</a><br>
+<a href="#Projects">Projects.htm</a><br>
+<td>&nbsp;&nbsp;&nbsp;<td valign=top>
+<a href="#Ps-style">Ps-style.htm</a><br>
+<a href="#Release">Release.htm</a><br>
+<a href="#Source">Source.htm</a><br>
+<a href="#Xfonts">Xfonts.htm</a><br>
+</table></blockquote>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Theme_roadmap"></a>Document roadmap by theme</h2>
+
+<h3><a name="New_users"></a>What should I read if I'm a new user?</h3>
+
+<p>
+A new user of Ghostscript should begin by reading the material
+<a href="New-user.htm">specifically for new users</a>, then as many of
+these documents as seem useful:
+
+<ul>
+<li>how to <a href="Install.htm">install Ghostscript</a>
+
+<li>how to <a href="Use.htm">use Ghostscript</a>; some of this information
+information also found in <b><tt>gs.1</tt></b>, the Unix
+"man" page for Ghostscript.
+
+<li>the catalogs at the beginning of <b><tt>devs.mak</tt></b> and
+<b><tt>contrib.mak</tt></b>, which list all the devices for which
+Ghostscript is able to produce output (although if you got Ghostscript in
+binary form, it will only include some of these devices)
+
+<li>detailed information about <a href="Devices.htm">some specific
+devices</a> that Ghostscript knows about
+
+<li>more detailed information about how to use Ghostscript under
+Unix with <b><tt>lpr</tt></b> <a href="Unix-lpr.htm">as a filter</a>
+for non-PostScript printers
+
+<li> about the <a href="Fonts.htm">fonts distributed with
+Ghostscript</a>, including how to add or replace fonts
+
+<li> a description of <a href="Language.htm">the Ghostscript language</a>,
+and its differences from the documented PostScript language
+
+<li> about the <a href="Psfiles.htm">postscript files distributed with
+Ghostscript</a> (other than fonts)
+</ul>
+
+<h3><a name="Before_building"></a>Before building Ghostscript</h3>
+
+<p>
+If you are going to compile Ghostscript, rather than just use an executable
+you got from somewhere, you should read:
+
+<ul>
+<li> <a href="Make.htm">how to build Ghostscript</a> and
+<a href="Install.htm">install it</a>
+</ul>
+
+<hr>
+
+<h2><a name="Not_a_new_user"></a>What should I read if I'm not a new user?</h2>
+
+<p>
+If you have already used Ghostscript, when you receive a new release you
+should begin by reading this file, then
+
+<ul>
+<li> <a href="News.htm">News.htm</a>, for incompatible changes and new
+features in the current release;
+
+<li> <a href="Current.htm">Current.htm</a>, for known problems in the
+current release;
+
+<li> if you wish, <a href="Changes.htm">Changes.htm</a>, for a detailed list
+of changes in the current release;
+
+<li> if you wish, History#.htm (currently <a
+href="History6.htm">History7.htm</a>), for changes in other releases.
+</ul>
+
+<hr>
+
+<h2><a name="Developer"></a>What if I'm a developer?</h2>
+
+<p>
+If you are going to do any development on or with Ghostscript at all, you
+should at least look at
+
+<ul>
+<li>the <a href="Develop.htm">roadmap documentation</a> for Ghostscript's
+source files and architecture
+</ul>
+
+<p>
+If you are going to write a new driver for Ghostscript, you should read
+
+<ul>
+<li> the <a href="Source.htm">guide to the Ghostscript source code</a>
+
+<li> the interface between Ghostscript and <a href="Drivers.htm">device
+drivers</a>
+
+<li> about the <a href="Xfonts.htm">external font interface</a> between
+Ghostscript and platform-supplied fonts (but read about
+<a href="Drivers.htm">drivers in general</a> first)
+</ul>
+
+<p>
+If you intend to use Ghostscript in the form of a dynamic link library
+(DLL) under OS/2 or Microsoft Windows or in the form of shared object
+under GNU/Linux, read
+
+<ul>
+<li> documentation on <a href="API.htm">Ghostscript Interpreter API</a>
+</ul>
+
+<p>
+If you want to use Ghostscript as part of another program--as a callable
+PostScript language interpreter--and not as a DLL or as a self-contained
+executable application, you should begin by reading
+
+<ul>
+<li> the source file <b><tt>imain.h</tt></b>, the documented
+API for Ghostscript <em>not</em> as a DLL
+</ul>
+
+<p>
+or if you are going to use only the Ghostscript graphics library,
+
+<ul>
+<li> about the structure of the <a href="Lib.htm">Ghostscript library</a>
+and its interfaces
+</ul>
+
+<hr>
+
+<h2><a name="Writer"></a>What if I'm writing documentation?</h2>
+
+<p>
+If you are editing or adding to Ghostscript's existing documentation in
+HTML format, or writing a new document, you should read
+
+<ul>
+<li> the <a href="Htmstyle.htm">coding and style guidelines</a> for
+Ghostscript's HTML-based documentation.
+</ul>
+
+<hr>
+
+<h2><a name="Web_presence"></a>Presence on the World Wide Web</h2>
+
+<h3><a name="Web_home_page"></a>Ghostscript's home page</h3>
+
+<p>
+GNU Ghostscript has a home page on the World Wide Web with helpful
+information. Pleave visit:
+
+<blockquote>
+<a href="http://www.gnu.org/software/ghostscript/"
+class="offsite">http://www.gnu.org/software/ghostscript/</a>
+</blockquote>
+
+<p>
+More material about Ghostscript can be found at
+
+<blockquote>
+<a href="http://www.ghostscript.com/" class="offsite">http://www.ghostscript.com/</a>
+</blockquote>
+
+<h3><a name="Adobe_documentation"></a>Adobe PostScript, Encapsulated
+PostScript, and PDF reference documentation</h3>
+
+<p>
+Adobe makes a wealth of
+<a href="http://partners.adobe.com/asn/developer/technotes.html"
+class="offsite">
+technical documentation</a> available over the Web, including the
+<a href="http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf"
+class="offsite">
+PostScript Language Reference Manual (Third Edition)</a>; the
+<a
+href="http://partners.adobe.com/asn/developer/pdfs/tn/5002.EPSF_Spec.pdf"
+class="offsite">
+Encapsulated PostScript</a> (EPS) Format Specification version 3, including
+<a href="#Ps2epsi">Encapsulated PostScript Interchange (EPSI)</a>
+format; the
+<a
+href="http://partners.adobe.com/asn/developer/acrosdk/DOCS/pdfspec.pdf"
+class="offsite">
+PDF 1.3 specification</a>; and the
+<a
+href="http://partners.adobe.com/asn/developer/acrosdk/DOCS/pdfmark.pdf"
+class="offsite">
+pdfmark</a>,
+<a href="http://partners.adobe.com/asn/developer/acrosdk/docs/PDF_Transparency.pdf"
+class="offsite">transparency</a> and
+<a
+href="http://partners.adobe.com/asn/developer/acrosdk/DOCS/distparm.pdf"
+class="offsite">
+Acrobat Distiller parameters</a> documentation. Some of these documents
+are also available at <a href="ftp://ftp.adobe.com/pub/adobe/"
+class="offsite">Adobe's ftp
+site</a>, but not necessarily under the same filenames.
+
+<h3><a name="Web_other"></a>Other material on the WWW</h3>
+
+<p>
+Much other material about Ghostscript is available on the World Wide Web,
+both as web pages and as archived Usenet and mailing list discussions. Use
+the well-known search engines to find such material.
+
+<p>
+There is a good manual for Ghostscript available in PDF form,
+in English and German (and soon in Japanese), at:
+
+<blockquote>
+<a href="http://www.pdflib.com"
+class="offsite">http://www.pdflib.com/gsmanual</a>
+</blockquote>
+
+<p>
+There is a translation of the Ghostscript 'man' pages into Czech at:
+
+<blockquote>
+<a href="http://www.volny.cz/rebus/ghostscript/"
+class="offsite">http://www.volny.cz/rebus/ghostscript/</a>
+</blockquote>
+
+<hr>
+
+<h2><a name="Ordered_roadmap"></a>Which document contains what?</h2>
+
+<p> Here is the list in alphabetic order of Ghostscript documentation,
+with explanations of the contents.
+
+<dl>
+<dt><a name="API"></a><a href="API.htm"><b>API.htm</b></a>
+<dd> On MS-Windows and OS/2, Ghostscript is compiled as a dynamic
+link library (DLL). On GNU/Linux, Ghostscript can be compiled as
+a shared object. This describes how to use it.
+For developers.
+</dl>
+
+<dl>
+<dt><a name="C-style"></a><a href="C-style.htm"><b>C-style.htm</b></a>
+<dd> Guidelines and style for C coding, which you should follow
+if, for example, you <a href="#Drivers">write a new driver</a> or add or
+change something in Ghostscript. For developers.
+</dl>
+
+<dl>
+<dt><a name="Changes"></a><a href="Changes.htm"><b>Changes.htm</b></a>
+<dd> A detailed list of all code changes in the current release or
+pre-release, generated mechanically from the CVS logs. For developers.
+</dl>
+
+<dl>
+<dt><a name="CJK"></a><a href="CJK.htm"><b>CJK.htm</b></a>
+<dd> Usage of features to support CJK CID-keyed fonts in Ghostscript.
+</dl>
+
+<dl>
+<dt><a name="CJKTTCID"></a><a href="CJKTTCID.htm"><b>CJKTTCID.htm</b></a>
+<dd> Note providing information on utilization of CJK (Chinese,
+Japanese and Korean) TrueType fonts as CIDFontType2 fonts from the
+viewpoint of its validity and limitations.
+</dl>
+
+<dl>
+<dt><a name="Current"></a><a href="Current.htm"><b>Current.htm</b></a>
+<dd> Information specifically about the current release of Ghostscript.
+See also the <a href="#News">latest news</a> of changes.
+</dl>
+
+<dl>
+<dt><a name="DLL"></a><a href="DLL.htm"><b>DLL.htm</b></a>
+<dd> On OS/2, MS Windows-16 and MS Windows-32 platforms, Ghostscript is
+compiled as a dynamic link library (DLL). This describes how to use it.
+For developers. <b>This DLL interface is obsolete.</b>
+Use <a href="#API"><b>API.htm</b></a> instead.
+</dl>
+
+<dl>
+<dt><a name="Develop"></a><a href="Develop.htm"><b>Develop.htm</b></a>
+<dd> Code orientation for developers. Contains a detailed breakdown of
+the source files by functional group, and overviews of the major
+architectural features and services.
+</dl>
+
+<dl>
+<dt><a name="Devices"></a><a href="Devices.htm"><b>Devices.htm</b></a>
+<dd> Detailed information about some specific devices for which Ghostscript
+can produce output. Run "<b><tt>gs&nbsp;-h</tt></b>" to see which
+devices a particular version of Ghostscript is built to use.
+</dl>
+
+<dl>
+<dt><a name="Drivers"></a><a href="Drivers.htm"><b>Drivers.htm</b></a>
+<dd> Describes the interface between Ghostscript and device drivers. If
+you do this, you should also read and use the <a href="#C-style">C style
+and coding guidelines</a>. Necessary to develop a new driver. For
+developers.
+</dl>
+
+<dl>
+<dt><a name="Fonts"></a><a href="Fonts.htm"><b>Fonts.htm</b></a> <dd> All
+about fonts freely available for Ghostscript, and how to add and use new
+fonts. Also describes how to use Ghostscript fonts as X Windows fonts. For
+both users and developers.
+</dl>
+
+<dl>
+<dt><a name="Helpers"></a><a href="Helpers.htm"><b>Helpers.htm</b></a>
+<dd> A note of thanks to people who have helped in the development of
+Ghostscript.
+</dl>
+
+<dl>
+<dt><a name="Hershey"></a><a href="Hershey.htm"><b>Hershey.htm</b></a>
+<dd> Part 1 of the five-part original Usenet distribution of the free
+Hershey fonts, giving the terms of use and describing their encoding.
+</dl>
+
+<dl>
+<dt><a name="History"></a><b>History*.htm</b>
+<dd> The history of changes in all Ghostscript releases:
+<blockquote>
+<a href="History7.htm">History7.htm</a> for Ghostscript versions 7.n<br>
+<a href="History6.htm">History6.htm</a> for Ghostscript versions 6.n<br>
+<a href="History5.htm">History5.htm</a> for Ghostscript versions 5.n<br>
+<a href="History4.htm">History4.htm</a> for Ghostscript versions 4.n<br>
+<a href="History3.htm">History3.htm</a> for Ghostscript versions 3.n<br>
+<a href="History2.htm">History2.htm</a> for Ghostscript versions 2.n<br>
+<a href="History1.htm">History1.htm</a> for Ghostscript versions 1.n
+</blockquote>
+</dl>
+
+<dl>
+<dt><a name="Htmstyle"></a><a href="Htmstyle.htm"><b>Htmstyle.htm</b></a>
+<dd> The guidelines and style for HTML coding of Ghostscript's
+documentation, which you should follow if, for example, you change existing
+HTML documentation or write new documents. For writers and editors.
+</dl>
+
+<dl>
+<dt><a name="Humor"></a><a href="Humor.htm"><b>Humor.htm</b></a>
+<dd> Another Ghostscript interpreter.
+</dl>
+
+<dl>
+<dt><a name="Install"></a><a href="Install.htm"><b>Install.htm</b></a>
+<dd> How to install Ghostscript. See also <a href="#Make">how to build
+it</a>.
+</dl>
+
+<dl>
+<dt><a name="Issues"></a><a href="Issues.htm"><b>Issues.htm</b></a>
+<dd> A list of outstanding open issues in Ghostscript. These include
+known limitations, minor bugs, performance issues, differences from
+Adobe implementations, and others.
+</dl>
+
+<dl>
+<dt><a name="Language"></a><a href="Language.htm"><b>Language.htm</b></a>
+<dd> The relationship between the Ghostscript interpreter and the
+PostScript language as defined by Adobe.
+</dl>
+
+<dl>
+<dt><a name="Lib"></a><a href="Lib.htm"><b>Lib.htm</b></a>
+<dd> A description of the Ghostscript library, a set of procedures to
+implement the graphics and filtering capabilities that are primitive
+operations in the PostScript language and in Adobe Portable Document Format
+(PDF). For developers.
+</dl>
+
+<dl>
+<dt><a name="Maintain"></a><a href="Maintain.htm"><b>Maintain.htm</b></a>
+<dd> Assorted Ghostscript maintenance procedures. For developers.
+</dl>
+
+<dl>
+<dt><a name="Make"></a><a href="Make.htm"><b>Make.htm</b></a>
+<dd> How to build Ghostscript executables from the source code. See also
+<a href="#Install">how to install it</a>. It's not necessary to be a highly
+experienced developer to build or install Ghostscript, but some experience
+is needed.
+</dl>
+
+<dl>
+<dt><a name="New-user"></a><a href="New-user.htm"><b>New-user.htm</b></a>
+<dd> Essential information for new users of Ghostscript.
+</dl>
+
+<dl>
+<dt><a name="News"></a><a href="News.htm"><b>News.htm</b></a>
+<dd> A brief description of the latest release or pre-release of
+Ghostscript, and a list of any incompatible changes in it. Changes in older
+releases are described in the history files "<b><tt>History*.htm</tt></b>",
+which are usually installed in the documentation directory. Run
+"<b><tt>gs&nbsp;-h</tt></b>" to see where that is.
+</dl>
+
+<dl>
+<dt><a name="Projects"></a><a href="Projects.htm"><b>Projects.htm</b></a>
+<dd> A list of Ghostscript development projects with which we would like
+help.
+</dl>
+
+<dl>
+<dt><a name="Ps-style"></a><a
+href="Ps-style.htm"><b>Ps-style.htm</b></a>
+<dd> The guidelines and style for postscript coding in Ghostscript. Some
+of Ghostscript is implemented in the postscript language itself, and
+various utilities and examples are distributed with it. You should
+follow these guidelines if you're extending or modifying those files.
+For developers.
+</dl>
+
+<dl>
+<dt><a name="Ps2epsi"></a><a href="Ps2epsi.htm"><b>Ps2epsi.htm</b></a>
+<dd> Detailed information on how to use Ghostscript through
+<tt><b>ps2epsi</b></tt> to convert PostScript to Adobe
+Encapsulated PostScript Interchange (EPSI) format.
+</dl>
+
+<dl>
+<dt><a name="Ps2pdf"></a><a href="Ps2pdf.htm"><b>Ps2pdf.htm</b></a>
+<dd> Detailed information on how to use Ghostscript through
+<tt><b>ps2pdf</b></tt> to convert PostScript to Adobe
+Portable Document Format (PDF).
+</dl>
+
+<dl>
+<dt><a name="Psfiles"></a><a href="Psfiles.htm"><b>Psfiles.htm</b></a>
+<dd> A description of the PostScript files (other than font files)
+distributed with Ghostscript, including initialization routines, utility
+programs, and sample printable files.
+</dl>
+
+<dl>
+<dt><a name="Readme"></a><b>Readme.htm</b>
+<dd> This document.
+</dl>
+
+<dl>
+<dt><a name="Release"></a><a href="Release.htm"><b>Release.htm</b></a>
+<dd> A description of how to prepare and test a Ghostscript release. Of
+interest only to developers who want to create new Ghostscript versions for
+distribution.
+</dl>
+
+<dl>
+<dt><a name="Source"></a><a href="Source.htm"><b>Source.htm</b></a>
+<dd> A guide to the Ghostscript source code, for development and debugging.
+</dl>
+
+<dl>
+<dt><a name="Unix-lpr"></a><a href="Unix-lpr.htm"><b>Unix-lpr.htm</b></a>
+<dd> How to set up Ghostscript as a Unix <tt><b>lpr</b></tt>
+filter.
+</dl>
+
+<dl>
+<dt><a name="Use"></a><a href="Use.htm"><b>Use.htm</b></a>
+<dd> Detailed instructions on how to use Ghostscript, including such
+matters as designating an output device; choosing a default paper size;
+how Ghostscript finds files, including font files; how it uses environment
+variables; notes on specific platforms, including the X Window System; and
+command-line options.
+</dl>
+
+<dl>
+<dt><a name="Xfonts"></a><a href="Xfonts.htm"><b>Xfonts.htm</b></a>
+<dd> Ghostscript's external font interface to a host platform's
+font-rendering mechanism, for developers.
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Release.htm b/Master/xemtex/doc/ghostscript/Release.htm
new file mode 100644
index 00000000000..561de32658c
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Release.htm
@@ -0,0 +1,769 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>How to prepare a Ghostscript release</title>
+<!-- $Id: Release.htm,v 1.40.2.23.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: make.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>How to prepare a Ghostscript release</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#Servers">Servers</a>
+<ul>
+<li><a href="#Distribution">Distribution</a>
+</ul>
+<li><a href="#Making_distributions">Making distributions</a>
+<ul>
+<li><a href="#Preparing_source">Preparing the source code</a>
+<li><a href="#Testing">Testing</a>
+<li><a href="#Making_Tarballs">Making the source distribution</a>
+<li><a href="#Testing_on_Windows">Testing on Windows</a>
+<li><a href="#Windows_distribution">Building the Windows distribution</a>
+<li><a href="#Finishing_up">Finishing up</a>
+<li><a href="#Beta_distributions">Beta distributions</a>
+<li><a href="#Public_releases">Public releases</a>
+</ul>
+<li><a href="#After_releasing">After releasing</a>
+<li><a href="#Fonts">Fonts</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the instructions on how to <a href="Make.htm">build
+Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+This document describes the process that artofcode LLC, the copyright holder
+of Ghostscript, uses for making new Ghostscript releases. Please note
+that while the the license allows anyone to prepare and distribute
+releases in accordance with its terms and conditions, this document is
+really meant only to document the process used by artofcode LLC.
+However, the eventual purpose of this document is to describe
+Ghostscript release procedures in enough detail that someone who knows
+little about Ghostscript but is generally familiar with the platform on
+which the procedure is being carried out can execute the procedures
+correctly. So if you add or changing anything to/in this document,
+be sure to specify all command lines, file names, etc. in explicit
+detail.
+
+<p>
+File names below that don't include an explicit subdirectory name are in the
+<b><tt>src</tt></b> subdirectory.
+
+<p>
+If you do plan to make your own distribution, please be aware of some items
+you will want to change.
+
+<ul>
+
+<li>If you make any significant changes, please edit
+<b><tt>gscdef.c</tt></b> to change <b><tt>GS_PRODUCTFAMILY</tt></b> and
+<b><tt>GS_PRODUCT</tt></b> from "GNU Ghostscript" to something else,
+in order to avoid confusion with artofcode's releases.
+
+<li>In the same file, you may also want to edit <b><tt>GS_COPYRIGHT</tt></b>
+to add your own copyright notice (although you must not remove any
+notice that is there).
+
+<li>You will almost certainly want to edit <b><tt>version.mak</tt></b> to
+change the revision date, <b><tt>GS_REVISIONDATE</tt></b>.
+
+<li>If you want to change the version number, you must change it in both
+<b><tt>version.mak</tt></b> (<b><tt>GS_VERSION_</tt></b>*) and
+<b><tt>lib/gs_init.ps</tt></b> (the integer on a line by itself near the
+beginning of the file).
+
+</ul>
+
+<h2><a name="Servers"></a>Servers</h2>
+
+<p>
+The Ghostscript source files are maintained on sites accessible to
+the public. One specific site hosts the active CVS repository for code,
+data, and documentation, and the bug report data base; several sites
+offer distributions with version numbers, intended for wider
+distribution.
+
+<h3><a name="Distribution"></a>Distribution</h3>
+
+<p>
+The primary distribution site for GNU Ghostscript is the <a
+href="ftp://ftp.gnu.org/gnu/ghostscript/" class="offsite">GNU ftp
+site</a> and its <a
+href="http://www.gnu.org/prep/ftp.html" class="offsite">mirrors</a>.
+
+<p>
+Stable releases are also distributed from
+
+<blockquote>
+<a
+href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/"
+class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/</a>
+</blockquote>
+
+<h2><a name="Making_distributions"></a>Making distributions</h2>
+
+<p>
+This document only discusses source distributions. Source distributions
+currently can only be made on GNU/Linux systems (but it probably wouldn't
+take much work to support other Unix-like systems). Ghostscript as
+distributed also
+often includes executables or other packages for the Windows and MacOS
+environments, but artofcode does not produce these, and this document does not
+discuss them. For more information about Windows packages, please contact
+<a href="mailto:bug-gswin@ghostscript.com"><tt>bug-gswin@ghostscript.com</tt></a>;
+for more information about MacOS packages, please contact <a
+href="mailto:mac-gs@ghostscript.com"><tt>mac-gs@ghostscript.com</tt></a>.
+
+<p>
+To make a source distribution, you will need the scripts and data files in
+the <b><tt>toolbin/</tt></b> directory. The instructions below generally
+assume that you're invoking the relative to the top level of the source
+tree.
+
+To run the scripts, you will need reasonably current versions of Tcl,
+freely available from Scriptics
+(<a class="offsite" href="http://www.scriptics.com"><tt>http://www.scriptics.com</tt></a>), and
+Python, freely available from <a class="offsite"
+href="http://www.python.org"><tt>http://www.python.org</tt></a>.
+
+<p>
+The instructions below also refer to some files that are deliberately
+omitted from the public distribution, because they are not freely
+redistributable. You will need to provide similar files for your
+environment.
+
+<blockquote><pre>
+<b><tt>data/*/*.ps</tt></b> (PostScript files) - needed for smoke testing
+</pre></blockquote>
+
+<h3><a name="Preparing_source"></a>Preparing the source code</h3>
+
+<p>
+Update references to the date for release:
+
+<ul>
+
+<li>In <b><tt>lib/gs_init.ps</tt></b>, as an integer (release number
+x100) at the beginning of the file just after the initial comment
+blocks.
+
+<li>In <b><tt>version.mak</tt></b>, the numeric date.
+
+<li>In <b><tt>doc/News.htm</tt></b>, in two places, skipping the Id:
+line. That is, in parentheses after the <tt>VERSION X.YY</tt> heading,
+and in the copyright footer both the year and the release date.
+
+</ul>
+
+We recommend using a UTC release date to avoid timezone skew.
+
+<p>
+Also in <b><tt>doc/News.htm</tt></b>, update the number of the highest
+closed bug and the list of open bugs.
+
+<p>
+Check in <b><tt>gscdef.c</tt></b> that the definition of
+<b><tt>GS_PRODUCT</tt></b> includes the appropriate one of "DEVELOPMENT
+RELEASE", "BETA RELEASE", or neither, and does not include "CVS
+PRE-RELEASE".
+
+<p>Run the source-consistency checks from the test suite:
+
+<blockquote><pre>
+toolbin/tests/check_all.py --gsroot=.
+</pre></blockquote>
+Where the argument of --gsroot is the path to the top level of the
+source tree. Fix any problems it indicates, and commit them to cvs.
+
+<p>
+Check for patched configuration parameters, <b><tt>#define TEST</tt></b>s,
+version/date inconsistencies, and mismatches between the working directory
+and the CVS repository by running:
+
+<blockquote><pre>
+toolbin/pre
+</pre></blockquote>
+
+<p>
+This program compares the result of various greps against a check file,
+writing the results of grep on one output file and the differences from the
+check file on another. See the source code of
+<b><tt>toolbin/pre</tt></b> for the default file names. The
+important one is the check file,
+<b><tt>toolbin/pre.chk</tt></b>. <b><tt>pre</tt></b> also verifies
+that the
+right information is in the following places:
+<ul>
+<li>version number in <b><tt>man/*.1</tt></b>, <b><tt>doc/*.htm</tt></b>,
+<b><tt>version.mak</tt></b>, <b><tt>doc/gs-vms.hlp</tt></b>,
+<b><tt>lib/gs_init.ps</tt></b>
+<li>revision date in <b><tt>man/*.1</tt></b>, <b><tt>doc/*.htm</tt></b>,
+<b><tt>version.mak</tt></b>, <b><tt>doc/gs-vms.hlp</tt></b>
+<li>copyright year (if necessary) in <b><tt>gscdef.c</tt></b>
+<li>third-party library version number in <b><tt>*.mak</tt></b>
+</ul>
+
+<p>
+If necessary, run
+
+<blockquote><pre>
+toolbin/pre update
+</pre></blockquote>
+
+<p>
+to update the version and revision date in the doc files, and then run
+
+<blockquote><pre>
+toolbin/pre
+</pre></blockquote>
+
+<p>
+again. To confirm that everything is updated. You may have to commit to
+cvs after the update to satify the script that all the dates are
+correct.
+
+<p>
+Check the consistency of the source code with the makefiles by
+running:
+
+<blockquote><pre>
+toolbin/gsmake.tcl check
+</pre></blockquote>
+
+This script assumes the top level makefile is named '<tt>makefile</tt>'.
+
+<p>
+Fix any problems and commit to cvs.
+
+<h3><a name="Testing"></a>Testing</h3>
+
+<p>
+Edit your top-level the Makefile to set
+<blockquote><pre>
+FEATURE_DEVS=$(FEATURE_DEVS_ALL)
+COMPILE_INITS=1
+</pre></blockquote>
+
+<p>
+This will help catch compilation problems.
+
+<p>
+Run
+
+<blockquote><pre>
+rm obj/*
+make -j2 &gt;&amp; make.log
+</pre></blockquote>
+
+<p>
+and look for warnings and errors in the log file.
+
+<p>
+Do a smoke test, updating the example paths as necessary:
+
+<blockquote><pre>
+unset GS_DEVICE GS_FONTPATH GS_LIB GS_OPTIONS
+./bin/gs -I./lib -I./fonts -dNOPAUSE -dBATCH /gs/toolbin/smoke.ps
+./bin/gs -I./lib -I./fonts -dNOPAUSE -dBATCH -sDEVICE=bitcmyk\
+ -sOutputFile=/dev/null -r600 -dBufferSpace=50000 /gs/toolbin/smoke.ps
+</pre></blockquote>
+
+<p>
+This reads files named
+
+<blockquote><pre>
+<b><tt>data/misc/*.ps</tt></b>
+<b><tt>data/ps/*.ps</tt></b>
+<b><tt>data/psl2/*.ps</tt></b>
+<b><tt>data/psl3/*.ps</tt></b>
+<b><tt>data/pdf/*.pdf</tt></b>
+</pre></blockquote>
+
+<p>
+(Edit <b><tt>toolbin/smoke.ps</tt></b> to use other test sets.)
+Watch for crashes, unusual error messages, or anomalous displayed output.
+If there are any problems, start over from the beginning of the process.
+
+<p>
+Undo the <b><tt>FEATURE_DEVS</tt></b> and <b><tt>COMPILE_INITS</tt></b>
+edits.
+
+<p>
+Run
+
+<blockquote><pre>
+cvs commit
+</pre></blockquote>
+
+<p>
+to ensure the repository is up to date.
+
+<p>
+Execute
+
+<blockquote><pre>
+toolbin/cvs2hist.py -j &lt;previous_tag&gt; -r '-r&lt;branch_tag&gt;' -v &lt;new_version&gt; &gt; doc/Changes.htm
+</pre>
+e.g. <pre>toolbin/cvs2hist.py -j gs7_04 -r '-rGS_7_0X' -v 7.05</pre>
+</blockquote>
+
+<p>
+This consolidates all the CVS logs since the previous release in a readable
+format. Note: the cvs2hist.py tool currently in the distribution is not
+very branch-aware (nor is the 'cvs log' command it depends on) so the extra
+complication of the -j and -r options are required when generating the Changes
+for a non-HEAD branch of Ghostscript. Note that the -r option should be
+an empty '-b' when generating logs for the cvs main branch due to
+variations in naming.
+
+<p>
+Run
+
+<blockquote><pre>
+tclsh
+% source toolbin/makeset.tcl
+% makehist
+</pre></blockquote>
+
+<p>
+This updates <b><tt>doc/History#.htm</tt></b> from
+<b><tt>doc/News.htm</tt></b> and <b><tt>doc/Changes.htm</tt></b>.
+
+Then run
+
+<blockquote><pre>
+cvs commit
+</pre></blockquote>
+
+<p>
+again to check in the Changes and history files.
+
+<h3><a name="Making_Tarballs"></a>Making the source distribution</h3>
+
+<p>
+First, tag the versions of the files in cvs with the release version
+number.
+
+<blockquote>
+<pre><tt>cvs tag gs#_##</tt></pre>
+</blockquote>
+
+If you've already tagged this release (e.g. in making an earlier
+release candidate) you'll need to add the <tt>-r</tt> and <tt>-F</tt>
+options after 'cvs tag' to force moving the tag to the new revisions
+of changed files.
+
+<p>
+Pull a fresh copy for distribution from the cvs repository:
+
+<blockquote><pre>
+<tt>cvs -z3 -d &lt;ghostscript cvsroot&gt; export -r gs#_## -d ghostscript-#.## gs</tt>
+</pre></blockquote>
+
+
+<p>
+Generate the text versions of the README document:
+
+<blockquote>
+<pre><tt>cd ghostscript-#.##</tt>
+<tt>lynx -dump -nolist doc/Readme.htm &gt; doc/README</tt>
+</blockquote>
+
+<p>
+For the unix source distributions only, generate the configure
+scripts. From the top level directory, run
+
+<blockquote><pre><tt>./autogen.sh</tt>
+<tt>make distclean</tt>
+</pre></blockquote>
+
+This should create links to <tt>configure.ac</tt> and
+<tt>Makefile.in</tt> in the top level directory and
+invoke autoconf to create the <tt>configure</tt> script.
+
+<p>
+Also, run <tt>autoconf</tt> in the ijs subdir to create the configure script
+for that package.
+
+<p>
+Move back to directory containing the distribution code and make the
+source archives with:
+
+<blockquote><pre>
+<tt>tar cvzf ghostscript-#.##.tar.gz ghostscript-#.##/*</tt>
+<tt>zcat ghostscript-#.##.tar.gz | bzip2 -c > ghostscript-#.##.tar.bz2</tt>
+</pre></blockquote>
+
+<p>
+This creates the files
+
+<blockquote><pre>
+<b><tt>ghostscript-#.##.tar.gz</tt></b> (main archive)
+<b><tt>ghostscript-#.##.tar.bz2</tt></b> (main archive)
+</pre></blockquote>
+
+<p>
+The important issue is that the tarballs unpack into a directory
+of the same name, and that the code be a pristine copy without
+build or CVS housekeeping files.
+
+<p>
+It is also customary to make a <tt>gs###src.zip</tt> archive for the
+convenience of windows developers. See below.
+
+<h3><a name="Testing_on_Windows"></a>Testing on Windows</h3>
+
+<p>
+For Windows testing, you will need, in addition to the files listed
+under "<a href="#Preparing_source">Preparing the source</a>" above:
+<blockquote><pre>
+<b><tt>toolbin/makewin</tt></b> (link to <b><tt>makeset.tcl</tt></b>)
+</pre></blockquote>
+
+<p>
+The following procedures rely on a large number of MS-DOS batch scripts that
+are not discussed here: they are unlikely to be generally useful.
+
+<p>
+Mount the Windows partition on <b><tt>/c</tt></b>, and create the
+<b><tt>/c/work</tt></b> directory if needed.
+
+<p>
+Make the zip archive of all files needed for a Windows build, and copy it to
+the Windows partition:
+
+<blockquote><pre>
+toolbin/makewin
+cp gs###.zip /c/work
+</pre></blockquote>
+
+<p>
+Boot into Windows. Unpack the archive:
+
+<blockquote><pre>
+cd \work
+unzip -oq gs###.zip
+gs###
+</pre></blockquote>
+
+<p>
+The <b><tt>gs###.bat</tt></b> script creates some necessary directories,
+sets up <b><tt>PATH</tt></b> and <b><tt>GS_LIB</tt></b> for testing, and
+makes the <b><tt>gs#.##</tt></b> directory current.
+
+<p>
+Build with the Borland compiler:
+
+<blockquote><pre>
+config bcwin32
+copy /y /b ..\gs\makefile
+erase obj\*.*
+make > bc.log
+</pre></blockquote>
+
+<p>
+Smoke test the executables (both <b><tt>gswin32</tt></b> and
+<b><tt>gswin32c</tt></b>), as described above for source distributions.
+Then build with the Microsoft compiler:
+
+<blockquote><pre>
+config msvc32
+copy /y /b ..\gs\makefile
+erase obj\*.*
+nmake > msvc.log
+</pre></blockquote>
+
+<p>
+Smoke test these executables too.
+
+<p>
+Building with the Watcom compiler doesn't work, because the
+<b><tt>wmake</tt></b> or <b><tt>wmakel</tt></b> program runs out of memory.
+However, if it did work, this is how to do it:
+
+<blockquote><pre>
+config watcw32
+copy /y /b ..\gs\makefile
+erase obj\*.*
+wmake -u > watc.log
+</pre></blockquote>
+
+<p>
+Boot back into GNU/Linux. If testing in Windows revealed problems, edit the
+source files as necessary, and go back to <a
+href="#Preparing_source">"Preparing the source code."</a>
+
+<h3><a name="Windows_distribution"></a>Building the Windows distribution</h3>
+<p>
+Extract the sources from <b><tt>ghostscript-N.NN.tar.gz</tt></b>
+then repackage in a zip file as follows:
+<blockquote>
+<b><tt>zip -r temp.zip gsN.NN/doc gsN.NN/examples gsN.NN/icclib
+ gsN.NN/ijs gsN.NN/lib gsN.NN/src</tt></b>
+</blockquote>
+Unzip converting the line endings to CRLF:
+<blockquote>
+<b><tt>unzip -a temp.zip<br>
+del temp.zip</tt></b>
+</blockquote>
+Then finally zip up the sources to the distribution file:
+<blockquote>
+<b><tt>zip -9 -r gsNNNsrc.zip gsN.NN</tt></b>
+</blockquote>
+This method is reasonably portable, and does not convert binary
+files such as
+<b><tt><a href="../examples/annots.pdf">examples/annots.pdf</a></tt></b>.
+<p>
+Unzip <b><tt>gsNNNsrc.zip</tt></b>.
+The directory must be named <b><tt>gsN.NN</tt></b>.
+<p>
+Extract the fonts <b><tt>gnu-gs-fonts-std-6.0.tar.gz</tt></b>
+into a directory <b><tt>fonts</tt></b> adjacent to the
+<b><tt>gsN.NN</tt></b> directory.
+The fonts are needed in this location for building
+the distribution archive later.
+<p>
+You will need the command line Info-Zip zip program available from
+<a href="http://www.info-zip.org/pub/infozip/">
+http://www.info-zip.org/pub/infozip/</a>
+Alternatively, the command line version of WinZip
+(<b><tt>wzzip.exe</tt></b>) can be used by replacing the
+Info-Zip command line options <b><tt>-9 -r</tt></b>
+with <b><tt>-ex -P</tt></b> in
+<b><tt><a href="../src/winint.mak">winint.mak</a></tt></b>.
+<p>
+You will need WinZip Self-Extractor for building the
+self extracting archive. This is commercial software.
+You may need to update the path <b><tt>WINZIPSE_XE</tt></b> in
+<b><tt><a href="../src/winint.mak">winint.mak</a></tt></b>.
+<p>
+Unzip the jpeg, libpng and zlib libraries, then make ghostscript
+as documented in <a href="Make.htm">Make.htm</a>.
+<p>
+Run the command <b><tt>nmake archive</tt></b>. This builds the distribution
+archive <b><tt>gsNNNw32.exe</tt></b> and an ordinary zip file
+<b><tt>gsNNNw32.zip</tt></b> in the parent directory.
+If you do not have WinZip Self-Extractor, you can use
+<b><tt>nmake zip</tt></b> to make <b><tt>gsNNNw32.zip</tt></b> only.
+
+<h3><a name="Finishing_up"></a>Finishing up</h3>
+
+<p>
+Upload <b><tt>ghostscript-#.##.tar.*</tt></b> to SourceForge (by anonymous
+FTP to <b><tt>upload.sourceforge.net</tt></b>, directory
+<b><tt>/incoming</tt></b>), and then post it using the "File Release"
+facility in the Ghostscript project.
+If this is a GNU release, put it in the <b><tt>gnu-gs</tt></b> module.
+If this is a test release or beta release, put
+it in the <b><tt>gs-devel</tt></b> or <b><tt>gs-beta</tt></b> module,
+respectively.
+If you are adding executable builds or source archives for other
+platforms to an existing source release, please use the same release
+date as the source release, not the current date.
+
+<h3><a name="Beta_distributions"></a>Beta distributions</h3>
+
+<p>
+Do the steps for distributions in general.
+
+<p>
+Upload <b><tt>ghostscript-#.##.tar.*</tt></b> to the testing directory on
+mirror.cs.wisc.edu.
+
+<p>
+Send an email announcement to the <tt>gs-test</tt> list
+announcing the new release.
+
+<h3><a name="Public_releases"></a>Public releases</h3>
+
+<p>
+Update the title (current version #), first heading (previous version #),
+and "new features" and "known problems" lists in
+<b><tt>doc/Current.htm</tt></b>.
+
+<p>
+Do the steps for distributions in general.
+
+<p>
+Create a directory at
+<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/gs###/</tt></b>.
+In that
+directory, store the following files:
+
+<ul>
+
+<li>Standard distribution files:
+
+<blockquote><pre>
+<b><tt>ghostscript-#.##.tar.gz</tt></b>
+<b><tt>ghostscript-#.##.tar.bz2</tt></b>
+</pre></blockquote>
+
+<li>MS Windows source and executables:
+
+<blockquote><pre>
+<b><tt>gs###src.zip</tt></b>
+<b><tt>gs###w32.exe</tt></b>
+<b><tt>gs###w32.zip</tt></b>
+</pre></blockquote>
+
+<li>Third-party libraries, as links (upload these if not installed), where
+<b><tt>$$$</tt></b> et al. refer to the version number of the library, which
+should be the latest compatible release of the library and should be
+consistent with the values of and version numbers specifically listed in
+the makefiles.
+
+<blockquote><pre>
+<b><tt>jpegsrc.v$$.tar.gz</tt></b> -> <b><tt>../../3rdparty/jpegsrc.v$$.tar.gz</tt></b>
+<b><tt>libpng-$.$.$.tar.gz</tt></b> -> <b><tt>../../3rdparty/libpng-$.$.$.tar.gz</tt></b>
+<b><tt>zlib-$.$.$.tar.gz</tt></b> -> <b><tt>../../3rdparty/zlib-$.$.$.tar.gz</tt></b>
+<b><tt>jpegsr$$.zip</tt></b> -> <b><tt>../../3rdparty/jpegsr$$.zip</tt></b>
+<b><tt>lpng$$$.zip</tt></b> -> <b><tt>../../3rdparty/lpng$$$.zip</tt></b>
+<b><tt>zlib$$$.zip</tt></b> -> <b><tt>../../3rdparty/zlib$$$.zip</tt></b>
+</pre></blockquote>
+
+In any case, the names of the links in the distribution directory should reflect
+the original name of the upstream file.
+
+<li>Fonts, where <b><tt>$.$$</tt></b> refers to the most recent version
+number of the fonts:
+
+<blockquote><pre>
+<b><tt>ghostscript-fonts-other-$.$.tar.gz</tt></b> -> <b><tt>../fonts/ghostscript-fonts-other-$.$.tar.gz</tt></b>
+<b><tt>ghostscript-fonts-std-$.$.tar.gz</tt></b> -> <b><tt>../fonts/ghostscript-fonts-std-$.$.tar.gz</tt></b>
+</pre></blockquote>
+
+</ul>
+
+<p>
+(Note that the link names are somewhat inconsistent: some of them retain the
+version number of the file being referenced, and some of them use the
+Ghostscript version number. This is a historical artifact that might be
+changed someday.)
+
+<p>
+E-mail the release announcement using:
+<blockquote><pre>
+To: gs-announce
+</pre></blockquote>
+
+<p>
+Edit the Web pages in cvs and commit to reflect the new release.
+The Wisconsin server should update automatically.
+
+<h2><a name="After_releasing"></a>After releasing</h2>
+
+<p>
+E-mail the full URL and the <b><tt>md5sum</tt></b> of the new archive(s) to
+<a href="mailto:ftp-upload@gnu.org"><tt>ftp-upload@gnu.org</tt></a>. This
+will allow the site maintainers to add the new release to the GNU
+distribution network.
+
+<p>
+It may also be helpful to have the Free Software Foundation review the
+code before release to see whether it meets their standards for
+distribution from the gnu.org website.
+
+<p>
+Update the version number by incrementing it:
+
+<ul>
+
+<li>In <b><tt>lib/gs_init.ps</tt></b>, at the very beginning of the file.
+
+<li>In <b><tt>version.mak</tt></b>, in 3 definitions.
+
+<li>In <b><tt>doc/News.htm</tt></b>, in 4 places.
+
+</ul>
+
+<p>
+In <b><tt>gscdef.c</tt></b>, edit the definition of
+<b><tt>GS_PRODUCT</tt></b> to include "CVS PRE-RELEASE".
+
+<p>
+Edit <b><tt>doc/News.htm</tt></b> to remove all the content.
+
+
+<h2><a name="Fonts"></a>Fonts</h2>
+
+<p>
+artofcode LLC distributes a package of the base 35 PostScript fonts, and a
+package of other miscellaneous fonts. These are released with a
+licence matching that of the Ghostscript code.
+
+<p>
+To make the font packages, run the command
+
+<blockquote><pre>
+toolbin/makefonts #.##
+</pre></blockquote>
+
+<p>
+This creates the following files:
+
+<blockquote><pre>
+ghostscript-fonts-std-#.##.tar.gz
+ghostscript-fonts-other-#.##.tar.gz
+gnu-gs-fonts-std-#.##.tar.gz
+gnu-gs-fonts-other-#.##.tar.gz
+</pre></blockquote>
+
+<p>
+The second two should be uploaded to
+<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/fonts/</tt></b>,
+and the url and md5sum sent to the GNU ftp maintainers as with the
+ghostscript source.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1999-2002 artofcode LLC. 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>
diff --git a/Master/xemtex/doc/ghostscript/Source.htm b/Master/xemtex/doc/ghostscript/Source.htm
new file mode 100644
index 00000000000..348920b4e22
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Source.htm
@@ -0,0 +1,383 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Guide to Ghostscript source code</title>
+<!-- $Id: Source.htm,v 1.13.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: source.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Guide to Ghostscript source code</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Overview">Conceptual overview</a>
+<li><a href="#PostScript_interpreter">PostScript Interpreter</a>
+<li><a href="#PDF_interpreter">PDF interpreter</a>
+<li><a href="#Graphics_library">Graphics library</a>
+<ul>
+<li><a href="#Drivers">Device drivers</a>
+<li><a href="#Platform_specific_code">Platform-specific code</a>
+</ul>
+<li><a href="#Makefiles">Makefiles</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the documents on <a href="Make.htm">how to build
+Ghostscript</a> from source, <a href="C-style.htm">Ghostscript C coding
+guidelines</a>, <a href="Drivers.htm">drivers</a>, the
+<a href="Lib.htm">Ghostscript library</a> and <a href="Install.htm">how to
+install Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Overview"></a>Conceptual overview</h2>
+
+<p>
+The Ghostscript source code is divided conceptually as follows:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr valign=top> <th align=left colspan=4><a href="#PostScript_interpreter">PostScript interpreter</a>:
+<tr valign=top> <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>PostScript operators
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <td><b><tt>z</tt></b>*<b><tt>.h</tt></b> and <b><tt>z</tt></b>*<b><tt>.c</tt></b>
+<tr valign=top> <td>&nbsp;
+ <td>Other interpreter code
+ <td>&nbsp;
+ <td><b><tt>i</tt></b>*<b><tt>.h</tt></b> and <b><tt>i</tt></b>*<b><tt>.c</tt></b>
+<tr valign=top> <td>&nbsp;
+ <td>PostScript code
+ <td>&nbsp;
+ <td><b><tt>gs_</tt></b>*<b><tt>.ps</tt></b>
+<tr valign=top> <th align=left colspan=4><a href="#PDF_interpreter">PDF interpreter</a>:
+<tr valign=top> <td>&nbsp;
+ <td>PostScript code
+ <td>&nbsp;
+ <td><b><tt>pdf_</tt></b>*<b><tt>.ps</tt></b>
+<tr valign=top> <th align=left colspan=4><a href="#Graphics_library">Graphics library</a>:
+<tr valign=top> <td>&nbsp;
+ <td>Main library code
+ <td>&nbsp;
+ <td><b><tt>g</tt></b>*<b><tt>.h</tt></b> and <b><tt>g</tt></b>*<b><tt>.c</tt></b>
+<tr valign=top> <td>&nbsp;
+ <td>Streams
+ <td>&nbsp;
+ <td><b><tt>s</tt></b>*<b><tt>.h</tt></b> and <b><tt>s</tt></b>*<b><tt>.c</tt></b>
+<tr valign=top> <td>&nbsp;
+ <td><a href="#Drivers">Device drivers</a>
+ <td>&nbsp;
+ <td><b><tt>gdev</tt></b>*<b><tt>.h</tt></b> and <b><tt>gdev</tt></b>*<b><tt>.c</tt></b>
+<tr valign=top> <td>&nbsp;
+ <td><a href="#Platform_specific_code">Platform-specific code</a>
+ <td>&nbsp;
+ <td><b><tt>gp</tt></b>*<b><tt>.h</tt></b> and <b><tt>gp</tt></b>*<b><tt>.c</tt></b>
+</table></blockquote>
+
+<hr>
+
+<h2><a name="PostScript_interpreter"></a>PostScript Interpreter</h2>
+
+<p>
+<b><tt>gs.c</tt></b> is the main program for the interactive language
+interpreter; <b><tt>gserver.c</tt></b> is an alternative main program that
+is a rudimentary server. If you configure Ghostscript as a server rather
+than an interactive program, you will use <b><tt>gserver.c</tt></b> instead
+of <b><tt>gs.c</tt></b>.
+
+<p>
+Files named <b><tt>z</tt></b>*<b><tt>.c</tt></b> are Ghostscript operator
+files. The names of the files generally follow the section headings of the
+operator summary in section 6.2 (Second Edition) or 8.2 (Third Edition) of
+the PostScript Language Reference Manual. Each operator XXX is implemented
+by a procedure named <b><tt>z</tt></b>XXX, for example,
+<b><tt>zfill</tt></b> and <b><tt>zarray</tt></b>.
+
+<p>
+Files named <b><tt>i</tt></b>*<b><tt>.c</tt></b>, and *<b><tt>.h</tt></b>
+other than <b><tt>g</tt></b>*<b><tt>.h</tt></b>, are the rest of the
+interpreter. See the makefile for a little more information on how the
+files are divided functionally.
+
+<p>
+The main loop of the PostScript interpreter is the <b><tt>interp</tt></b>
+procedure in <b><tt>interp.c</tt></b>. When the interpreter is reading
+from an input file, it calls the token scanner in
+<b><tt>iscan</tt></b>*<b><tt>.c</tt></b>.
+
+<p>
+<b><tt>idebug.c</tt></b> contains a lot of debugger-callable routines
+useful for printing PostScript objects when debugging.
+
+<hr>
+
+<h2><a name="PDF_interpreter"></a>PDF interpreter</h2>
+
+<p>
+The PDF interpreter is written entirely in PostScript. Its main loop is
+the <b><tt>.pdfrun</tt></b> procedure in <b><tt>pdf_base.ps</tt></b>. When
+the PDF interpreter is configured into the build, it redefines the
+"<b><tt>run</tt></b>" operator to test whether the file is a PDF file.
+This redefinition is near the beginning of <b><tt>pdf_main.ps</tt></b>.
+
+<hr>
+
+<h2><a name="Graphics_library"></a>Graphics library</h2>
+
+<p>
+Files beginning with <b><tt>gs</tt></b>, <b><tt>gx</tt></b>, or
+<b><tt>gz</tt></b> (both <b><tt>.c</tt></b> and <b><tt>.h</tt></b>), other
+than <b><tt>gs.c</tt></b> and <b><tt>gserver.c</tt></b>, are the
+Ghostscript library. Files beginning with <b><tt>gdev</tt></b> are device
+drivers or related code, also part of the library. Other files beginning
+with <b><tt>g</tt></b> are library files that don't fall neatly into either
+the kernel or the driver category.
+
+<p>
+Files named <b><tt>s</tt></b>*<b><tt>.c</tt></b> and
+<b><tt>s</tt></b>*<b><tt>.h</tt></b> are a flexible stream package,
+including the Level 2 PostScript "filters" supported by Ghostscript. See
+<b><tt>stream.h</tt></b>, <b><tt>scommon.h</tt></b>, and
+<b><tt>strimpl.h</tt></b> for all the details.
+
+<h3><a name="Drivers"></a>Device drivers</h3>
+
+<p>
+The interface between the graphics library and device drivers is the only
+really well documented one in all of Ghostscript: see the
+<a href="Drivers.htm">documentation on drivers</a>.
+
+<p>
+In addition to many real device and file format drivers listed in
+<b><tt>devs.mak</tt></b> and <b><tt>contrib.mak</tt></b>, a number of
+drivers are used for internal purposes. You can search
+<b><tt>lib.mak</tt></b> for files named
+<b><tt>gdev</tt></b>*<b><tt>.c</tt></b> to find almost all of them.
+
+<p>
+Drivers are divided into "printer" drivers, which support banding, and
+non-printer drivers, which don't. The decision whether banding is
+required is made (by default on the basis of how much memory is available)
+in the procedure <b><tt>gdev_prn_alloc</tt></b> in
+<b><tt>gdevprn.c</tt></b>: it implements this decision by filling the
+virtual procedure table for the printer device in one of two different
+ways.
+
+<p>
+A good simple "printer" (bandable) driver to read is
+<b><tt>gdevmiff.c</tt></b>: it's less than 100 lines, of which much is
+boilerplate. There are no simple non-printer drivers that actually drive
+devices: probably the simplest non-printer driver for reading is
+<b><tt>gdevm8.c</tt></b>, which implements 8-bit-deep devices that only
+store the bits in memory.
+
+<h3><a name="Platform_specific_code"></a>Platform-specific code</h3>
+
+<p>
+There are very few platform dependencies in Ghostscript. Ghostscript deals
+with them in three ways:
+
+<ul>
+<li>Files named *<b><tt>_.h</tt></b> substitute for the corresponding
+<b><tt>&lt;</tt></b>*<b><tt>.h&gt;</tt></b> file by adding conditionals
+that provide a uniform set of system interfaces on all platforms.
+
+<li>The file <b><tt>arch.h</tt></b> contains a set of
+mechanically-discovered platform properties like byte order, size of
+<b><tt>int</tt></b>, etc. These properties, <b>not</b> the names of
+specific platforms, are used to select between different algorithms or
+parameters at compile time.
+
+<li>Files named <b><tt>gp</tt></b>*<b><tt>.h</tt></b> define interfaces
+that are intended to be implemented differently on each platform, but whose
+specification is common to all platforms.
+</ul>
+
+<p>
+The platform-specific implementations of the
+<b><tt>gp</tt></b>*<b><tt>.h</tt></b> interfaces have names of the form
+"<b><tt>gp_</tt></b><em>{platform}</em><b><tt>.c</tt></b>, specifically
+(this list may be out of date):
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Platform-specific interfaces</font><hr>
+<tr valign=bottom>
+ <th align=left>Routine
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;
+ <th align=left>Platform
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>gp_dosfb.c</tt></b>
+ <td>&nbsp;
+ <td>DOS
+<tr valign=top> <td><b><tt>gp_dosfs.c</tt></b>
+ <td>&nbsp;
+ <td>DOS and MS Windows
+<tr valign=top> <td><b><tt>gp_itbc.c</tt></b>
+ <td>&nbsp;
+ <td>DOS, Borland compilers
+<tr valign=top> <td><b><tt>gp_iwatc.c</tt></b>
+ <td>&nbsp;
+ <td>DOS, Watcom or Microsoft compiler
+<tr valign=top> <td><b><tt>gp_msdos.c</tt></b>
+ <td>&nbsp;
+ <td>DOS and MS Windows
+<tr valign=top> <td><b><tt>gp_ntfs.c</tt></b>
+ <td>&nbsp;
+ <td>MS-Windows Win32s and Windows NT
+<tr valign=top> <td><b><tt>gp_os2.c</tt></b>
+ <td>&nbsp;
+ <td>OS/2
+<tr valign=top> <td><b><tt>gp_os9.c</tt></b>
+ <td>&nbsp;
+ <td>OS-9
+<tr valign=top> <td><b><tt>gp_unifs.c</tt></b>
+ <td>&nbsp;
+ <td>Unix, OS-9, and QNX
+<tr valign=top> <td><b><tt>gp_unix.c</tt></b>
+ <td>&nbsp;
+ <td>Unix and QNX
+<tr valign=top> <td><b><tt>gp_sysv.c</tt></b>
+ <td>&nbsp;
+ <td>System V Unix
+<tr valign=top> <td><b><tt>gp_vms.c</tt></b>
+ <td>&nbsp;
+ <td>VMS
+<tr valign=top> <td><b><tt>gp_win32.c</tt></b>
+ <td>&nbsp;
+ <td>MS-Windows Win32s and Windows NT
+</table></blockquote>
+
+<p>
+If you are going to extend Ghostscript to new machines or operating
+systems, check the *<b><tt>_.h</tt></b> files for <b><tt>ifdef</tt></b> on
+things other than <b><tt>DEBUG</tt></b>. You should probably plan to make
+a new makefile and a new <b><tt>gp_</tt></b>XXX<b><tt>.c</tt></b> file.
+
+<hr>
+
+<h2><a name="Makefiles"></a>Makefiles</h2>
+
+<p>
+This section is only for advanced developers who need to integrate
+Ghostscript into a larger program at build time.
+
+<p>
+NOTE: THIS SECTION IS INCOMPLETE. IT WILL BE IMPROVED IN A LATER REVISION.
+
+<p>
+The Ghostscript makefiles are meant to be organized according to the
+following two principles:
+
+<ul>
+
+<li>All the parameters that vary from platform to platform appear in the
+top-level makefile for a given platform. ("Platform" = OS + compiler +
+choice of interpreter vs. library)
+
+<li>All the rules and definitions that can meaningfully be shared among more
+than 1 platform appear in a makefile that is "included" by a makefile
+(normally the top-level makefile) for those platforms.
+</ul>
+
+<p>
+Thus, for example:
+
+<ul>
+
+<li>Rules and definitions shared by all builds are in
+<b><tt>gs.mak</tt></b>.
+
+<li>Rules and definitions specific to the library (on all platforms) are in
+<b><tt>lib.mak</tt></b>. In principle this could be merged with
+<b><tt>gs.mak</tt></b>, but we wanted to leave open the possibility that
+<b><tt>gs.mak</tt></b> might be useful with hypothetical interpreter-only
+products.
+
+<li>Stuff specific to interpreters (on all platforms) is in
+<b><tt>int.mak</tt></b>.
+
+<li>Stuff specific to all Unix platforms should be in a single
+<b><tt>unix.mak</tt></b> file, but because <b><tt>make</tt></b> sometimes
+cares about the order of definitions, and because some of it is shared with
+DV/X, it got split between <b><tt>unix-aux.mak</tt></b>,
+<b><tt>unix-end.mak</tt></b>, <b><tt>unixhead.mak</tt></b>,
+<b><tt>unixinst.mak</tt></b>, and <b><tt>unixlink.mak</tt></b>.
+
+</ul>
+
+<p>
+For MS-DOS and MS Windows builds, there should be:
+
+<ul>
+
+<li>A makefile for all MS OS (DOS or Windows) builds, for all
+ compilers and products.
+
+<li>Perhaps a makefile for all MS-DOS builds, for all compilers and
+products, although since Watcom is the only such compiler we're likely to
+support this may be overkill.
+
+<li>A makefile for all MS Windows builds, for all compilers and products.
+
+<li>A makefile for all Watcom builds (DOS or Windows), for all products.
+
+<li>A top-level makefile for the Watcom DOS interpreter product.
+
+<li>A top-level makefile for the Watcom Windows interpreter product.
+
+<li>A top-level makefile for the Watcom DOS library "product".
+
+<li>A top-level makefile for the Watcom Windows library "product".
+
+<li>A makefile for all Borland builds (DOS or Windows), for all
+ products.
+
+</ul>
+
+<p>
+and so on.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/Unix-lpr.htm b/Master/xemtex/doc/ghostscript/Unix-lpr.htm
new file mode 100644
index 00000000000..a92e7809534
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Unix-lpr.htm
@@ -0,0 +1,267 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Setting up a Unix lpr filter for Ghostscript</title>
+<!-- $Id: Unix-lpr.htm,v 1.13.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: unix-lpr.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Setting up a Unix <tt>lpr</tt> filter for Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Overview">Overview</a>
+<li><a href="#What_it_can_do">What it can do</a>
+<li><a href="#Setting_up">Setting it up</a>
+<ul>
+<li><a href="#Editing_device_list">Editing the device list <b><tt>DEVICES</tt></b></a>
+<ul>
+<li><a href="#Field_bpp">Field 1: bits per pixel</a>
+<li><a href="#Field_colours">Field 2: colours</a>
+<li><a href="#Field_dq">Field 3: dual queues</a>
+<li><a href="#Device_example">Example definition of <b><tt>DEVICES</tt></b></a>
+</ul>
+<li><a href="#Editing_filter_list">Editing the filter list</a>
+<li><a href="#Editing_printer_port">Editing the printer port and type</a>
+<li><a href="#Modifying_printcap_insert">Modifying <b><tt>printcap.insert</tt></b></a>
+<li><a href="#Multiple_queues">Single or dual queues</a>
+</ul>
+<li><a href="#Bugs">Bugs</a>
+<li><a href="#Authors">Authors</a>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a> and the <a href="Use.htm">usage documentation</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Overview"></a>Overview</h2>
+
+<p>
+"How do I set up Ghostscript to provide PostScript queues in a standard lpr
+environment on Unix systems?" is a Frequently Asked Question amongst
+Ghostscript users. The two shell scripts described by this document are
+designed to make this task a little easier. They are
+
+<blockquote><dl>
+<dt><b><tt>unix-lpr.sh</tt></b>
+<dd>a flexible, multi-option print filter
+
+<dt><b><tt>lprsetup.sh</tt></b>
+<dd>A shell script which sets up soft links and creates a template insert
+for the <b><tt>printcap</tt></b> file
+</dl></blockquote>
+
+<hr>
+
+<h2><a name="What_it_can_do"></a>What it can do</h2>
+
+<p>
+The print filter resides in the Ghostscript installation directory (often
+<b><tt>/usr/local/share/ghostscript</tt></b>, but may be something else at
+your installation), together with a dummy filter directory containing
+various soft links which point to the filter. It offers the following
+features:
+
+<ul>
+<li>Multiple devices supported by a single filter
+<li>Multiple bit-depths for the same device
+<li>Multiple number of colours for the same device
+<li>Direct (single-queue) and indirect (two-queue) setup
+<li>Support for the standard preprocessing filters if you have the
+corresponding (whatever)-to-PostScript translators
+<li>Redirection of diagnostic and programmed output to a logfile in
+the spooling directory
+<li>Maintaining of printer accounting records of the numbers of pages
+printed by each user (compatible with the <b><tt>pac</tt></b> command)
+<li>Straightforward editing for further customisation
+</ul>
+
+<hr>
+
+<h2><a name="Setting_up"></a>Setting it up</h2>
+
+<p>
+The <b><tt>lprsetup.sh</tt></b> script needs to have two lines edited
+before running, to set the printer devices to use and the list of filters
+available. With this information, it
+
+<ul>
+<li>creates a "<b><tt>filt</tt></b>" subdirectory under the
+Ghostscript installation directory
+<li>creates the links in this directory which enable the filter to
+determine the parameters for running Ghostscript
+<li>automatically generates <b><tt>printcap</tt></b> entries which should
+need only a little editing before adding to your system
+<b><tt>printcap</tt></b> file
+</ul>
+
+<h3><a name="Editing_device_list"></a>Editing the device list <tt>DEVICES</tt></h3>
+
+<p>
+At the top of <b><tt>lprsetup.sh</tt></b> is a line of the form
+<b><tt>DEVICES=</tt></b><em>{list}</em>. Replace the example list with
+your own list of devices. Each entry is the name of a device, followed by
+three more optional fields, separated by dots "<b><tt>.</tt></b>".
+
+<h4><a name="Field_bpp"></a>Field 1: bits per pixel</h4>
+
+<p>
+The first field is required only if the printer device understands the <a
+href="Devices.htm#deskjet_parameters"><b><tt>-dBitsPerPixel=</tt></b>
+switch</a>, which applies only to colour devices. For a particular number
+<b><em>N</em></b> of bits per pixel, add the suffix <b><em>.N</em></b> to
+the device name, for instance <b><tt>cdj500.3</tt></b>,
+<b><tt>cdj500.24</tt></b>, etc.
+
+<h4><a name="Field_colours"></a>Field 2: colours</h4>
+
+<p>
+The second field is required only if the printer device understands the
+setting of the <b><tt>Colors</tt></b> device parameter (as in
+<b><tt>-dColors=</tt></b>), which applies only to colour devices (and at
+present is only supported by the <b><tt>bjc</tt></b>* family of drivers).
+For a particular number <b><em>N</em></b> of colours, suffix
+<b><em>.N</em></b> to the device name, such as <b><tt>bjc600.24.3</tt></b>,
+<b><tt>bjc600.8.1</tt></b> etc.
+
+<h4><a name="Field_dq"></a>Field 3: dual queues</h4>
+
+<p>
+The third field is required in order to use two separate queues for the
+device, a "raw" queue and a PostScript queue (see
+"<a href="#Multiple_queues">Single or dual queues</a>" below). If you want
+dual queues, add the suffix <b><tt>.dq</tt></b> ("dual queue") to the name,
+whether or not a <a href="#Field_bpp">bits-per-pixel suffix</a> has already
+been added.
+
+<h4><a name="Device_example"></a>Example definition of
+<tt>DEVICES</tt></h4>
+
+<p>
+Thus the following list supports a <b><tt>cdj550</tt></b> device at three
+different bit depths (24 bpp, 3 bpp and 1 bpp), with a dual queue (that is,
+a separate queue for the raw data); a monochrome <b><tt>deskjet</tt></b>
+device with a single queue; and a <b><tt>djet500</tt></b> device using a
+separate queue:
+
+<blockquote><b><tt>
+DEVICES="cdj550.24.dq&nbsp;cdj550.3.dq&nbsp;cdj550.1.dq&nbsp;deskjet&nbsp;djet500.dq"
+</tt></b></blockquote>
+
+<h3><a name="Editing_filter_list"></a>Editing the filter list</h3>
+
+<p>
+The standard list contains only the generic "<b><tt>if</tt></b>" filter,
+but a commented-out list shows other filters which may be available. If
+you wish to use the support for these filters, you may need to edit the
+<b><tt>bsd-if</tt></b> file to add to the <b><tt>PATH</tt></b> the
+directories where the translators are stored, or to change the names of the
+filters if yours are different. The <b><tt>bsd-if</tt></b> script is
+supplied with an example setup using Transcript (a commercial package from
+Adobe), and PBMPLUS, a freeware package by Jef Poskanzer and others.
+
+<h3><a name="Editing_printer_port"></a>Editing the printer port and
+type</h3>
+
+<p>
+You can set the port and port type (parallel or printer) for an attached
+printer, but for remote printers you'll have to modify the
+<tt>printcap.insert</tt> file yourself.
+
+<h3><a name="Modifying_printcap_insert"></a>Modifying
+<tt>printcap.insert</tt></h3>
+
+<p>
+Running <b><tt>lprsetup.sh</tt></b> generates a file
+<b><tt>printcap.insert</tt></b> which has a template setup for your
+printer queues. It cannot guarantee to do the whole job, and you will
+probably need to consult your system documentation and edit this file
+before you add it to your <b><tt>printcap</tt></b> file. The file has good
+defaults for serial printers, as these often cause problems in getting
+binary data to the printer. However, you may need to change the baud rate,
+or the handshaking method. Only a small change is required in the
+<b><tt>printcap</tt></b> file to use a networked remote printer instead of
+an attached printer, and an example is given in
+<b><tt>printcap.insert</tt></b>.
+
+<h3><a name="Multiple_queues"></a>Single or dual queues</h3>
+
+<p>
+If you wish to provide a PostScript-only queue (for example, so that all
+pages printed go through accounting), and the printer port is local to the
+host machine, a single queue is appropriate -- Ghostscript simply converts
+PostScript into the printer's native data format and sends it to the
+port. But if the printer is on a remote networked machine, or if you need to
+send raw printer data to the printer, you must use two queues. Simply
+specify the <a href="#Field_dq">"<b><tt>.dq</tt></b>" option</a> above.
+
+<hr>
+
+<h2><a name="Bugs"></a>Bugs</h2>
+
+<p>
+You must have write access to the Ghostscript installation directory for
+<b><tt>lprsetup.sh</tt></b> to create the filter directory and soft links.
+
+<p>
+If you have several different values of bits per pixel for the same device,
+you must list all instances of that device as adjacent items in the
+<a href="#Editing_device_list"><b><tt>DEVICES</tt></b></a> device
+list. If you do not, <b><tt>printcap.insert</tt></b> will contain multiple
+entries for the same device, which is not supported.
+
+<hr>
+
+<h2><a name="Authors"></a>Authors</h2>
+
+<p>
+This material was contributed by George Cameron. Yves Arrouye
+&lt;<a href="mailto:yves.arrouye@usa.net">yves.arrouye@usa.net</a>&gt;
+is responsible for the number-of-colours part of the script.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/Use.htm b/Master/xemtex/doc/ghostscript/Use.htm
new file mode 100644
index 00000000000..e2d2576d09b
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Use.htm
@@ -0,0 +1,3036 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>How to use Ghostscript</title>
+<!-- $Id: Use.htm,v 1.33.2.22.2.6 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: use.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>How to use Ghostscript</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Invoking">Invoking Ghostscript</a>
+<ul>
+<li><a href="#Help_command">Help at the command line: <b><tt>gs -h</tt></b></a>
+</ul>
+<li><a href="#Security">Security</a>
+<li><a href="#Pipe_input">Input from a pipe</a>
+<li><a href="#Output_device">Selecting an output device</a>
+<ul>
+<li><a href="#Printer_resolution">Printer resolution</a>
+<li><a href="#File_output">Output to files</a>
+<ul>
+<li><a href="#One_page_per_file">One page per file</a>
+<li><a href="#Pipe_output">Output to a pipe</a>
+<li><a href="#Output_to_graphics">Output to graphics file formats</a>
+<li><a href="#Bounding_box_output">Bounding box output</a>
+</ul>
+<li><a href="#Paper_size">Choosing paper size</a>
+<li><a href="#Change_default_size">Changing the installed default paper size</a>
+</ul>
+<li><a href="#Finding_files">How Ghostscript finds files</a>
+<ul>
+<li><a href="#PS_resources">Finding PostScript Level 2 resources</a>
+<li><a href="#Font_lookup">Font lookup</a>
+<li><a href="#Temp_files">Temporary files</a>
+</ul>
+<li><a href="#CIDFontSubstitution">CID font substitution</a>
+<li><a href="#Environment_variables">Summary of environment variables</a>
+<li><a href="#EPS">Using Ghostscript with EPS files</a>
+<li><a href="#PDF">Using Ghostscript with PDF files</a>
+<ul>
+<li><a href="#PDF_stdin">PDF files from standard input</a>
+<li><a href="#PDF_switches">Switches for PDF files</a>
+<li><a href="#PDF_problems">Problems interpreting a PDF file</a>
+</ul>
+<li><a href="#Platforms">Notes on specific platforms</a>
+<ul>
+<li><a href="#Unix">Unix</a>
+<li><a href="#VMS">VMS</a>
+<ul>
+<li><a href="#VMS_X_Windows">Using X Windows on VMS</a>
+</ul>
+<li><a href="#MS_Windows">MS Windows</a>
+<li><a href="#MS-DOS">MS-DOS</a>
+<li><a href="#X_Windows">X Windows</a>
+<ul>
+<li><a href="#X_resources">X resources</a>
+<li><a href="#X_server_bugs">Working around bugs in X servers</a>
+<li><a href="#X_fonts">X fonts</a>
+<li><a href="#GS_fonts_as_X_fonts">Using Ghostscript fonts on X displays</a>
+<li><a href="#X_device_parameters">X device parameters</a>
+</ul>
+<li><a href="#SCO_Unix">SCO Unix</a>
+</ul>
+<li><a href="#Switches">Switches</a>
+<ul>
+<li><a href="#General_switches">General switches</a>
+<ul>
+<li><a href="#Input_control">Input control</a>
+<li><a href="#File_searching">File searching</a>
+<li><a href="#Parameters">Setting parameters</a>
+<li><a href="#Quiet">Suppress messages</a>
+</ul>
+<li><a href="#Parameter_switches">Parameter switches (<b><tt>-d</tt></b> and <b><tt>-s</tt></b>)</a>
+<ul>
+<li><a href="#Rendering_parameters">Rendering parameters</a>
+<li><a href="#Page_parameters">Page parameters</a>
+<li><a href="#Font_related_parameters">Font-related parameters</a>
+<li><a href="#Interaction_related_parameters">Interaction-related parameters</a>
+<li><a href="#Output_selection_parameters">Device and output selection parameters</a>
+<li><a href="#Other_parameters">Other parameters</a>
+</ul>
+</ul>
+<li><a href="#Improving_performance">Improving performance</a>
+<li><a href="#Debugging">Debugging</a>
+<li><a href="#Known_paper_sizes">Appendix: Paper sizes known to Ghostscript</a>
+<li><a href="#X_font_mappings">Appendix: X default font mappings</a>
+<ul>
+<li><a href="#Standard_X_server_fonts">Standard X servers</a>
+<ul>
+<li><a href="#X_regular_fonts">Regular fonts</a>
+<li><a href="#X_symbol_fonts">Symbol fonts</a>
+<li><a href="#X_dingbat_fonts">Dingbat fonts</a>
+</ul>
+<li><a href="#OpenWindows_fonts">Sun OpenWindows</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>, the new user's documentation on
+<a href="New-user.htm#Previewers">previewers</a> and, if necessary, how to
+<a href="Install.htm">install Ghostscript</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Invoking"></a>Invoking Ghostscript</h2>
+
+<p><a name="Command_line"></a> The command line to invoke Ghostscript is
+essentially the same on all systems, although the name of the executable
+program itself may differ among systems. For instance, to invoke
+Ghostscript on Unix:
+
+<blockquote>
+<b><tt>gs</tt></b> [switches] {filename 1} ... [switches] {filename <em>N</em>} ...
+</blockquote>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Ghostscript's name on different systems</font><hr>
+<tr> <th align=left>System
+ <td>&nbsp;&nbsp;
+ <th align=left>Ghostscript's name
+<tr> <td colspan=3><hr>
+<tr> <td>Unix
+ <td>&nbsp;<td><b><tt>gs</tt></b>
+<tr> <td>VMS
+ <td>&nbsp;<td><b><tt>gs</tt></b>
+<tr> <td>DOS &amp; MS Windows 3
+ <td>&nbsp;<td><b><tt>gs386</tt></b>
+<tr> <td>MS Windows 95/98
+ <td>&nbsp;<td><b><tt>gswin32</tt></b>
+<tr> <td>MS Windows 95/98 command line
+ <td>&nbsp;<td><b><tt>gswin32c</tt></b>
+<tr> <td>OS/2
+ <td>&nbsp;<td><b><tt>gsos2</tt></b>
+</table></blockquote>
+
+<p>
+Note, though, that on a system with a windowed graphical user interface,
+it's common to use Ghostscript through a previewer, so you should read the
+<a href="New-user.htm#Previewers">section about previewers</a> in the
+documentation for new users.
+
+<p>
+Ghostscript is capable of interpreting PostScript, encapsulated PostScript
+(EPS), DOS EPS (EPSF), and -- if the executable was built for it -- Adobe
+Portable Document Format (PDF). The interpreter reads and executes the
+files in sequence, using the method described under
+"<a href="#File_searching">File searching</a>" to find them. After doing
+this, it reads further lines of PostScript language commands from the
+primary input stream, normally the keyboard, interpreting each line
+separately. To quit the interpreter, type "<b><tt>quit</tt></b>". The
+interpreter also quits gracefully if it encounters end-of-file or
+control-C.
+
+<p>
+The interpreter recognizes many <a href="#Switches">switches</a>. A switch
+may appear anywhere in the command line, and applies to all files named
+after it on the line. Many of the switches include "<b><tt>=</tt></b>"
+followed by a parameter.
+
+<h3><a name="Help_command"></a>Help at the command line: <b><tt>gs -h</tt></b></h3>
+
+<p>
+You can get a brief help message by invoking Ghostscript with the
+<b><tt>-h</tt></b> or <b><tt>-?</tt></b> switch, like this:
+
+<blockquote><b><tt>
+gs -h<br>
+gs -?
+</tt></b></blockquote>
+
+<p>
+(Of course, for "<b><tt>gs</tt></b>" use the right
+<a href="#Command_line">command for your system</a>.) The message shows
+for this executable
+
+<ul>
+<li>its version
+<li>the format of the command to invoke it
+<li>a few of the most useful switches
+<li>the formats it can interpret
+<li>the devices for which it can produce output
+<li>where it looks for font files
+<li>where and how to send bug reports
+</ul>
+
+<h2><a name="Security"></a>Security</h2>
+
+<p>
+Ghostscript implements a full-featured programming language, with
+access to the filesystem and the ability to control a diverse set of
+devices. As such, there are potential security implications.
+
+<p>
+The first line of defense is to use the security mechanisms
+provided by Ghostscript. If you're running arbitrary PostScript files
+(for example, those sent through email or downloaded from the Web),
+make sure to use the -dSAFER option. Otherwise, you are opening up
+your entire filesystem to potentially malicious code.
+
+<p>
+By default, Ghostscript opens up read access to the entire
+filesystem. In general, if you're just viewing or printing documents,
+this does not pose a significant security risk. However, if there is
+a chance that the output of Ghostscript can leak sensitive information,
+also set the -DPARANOIDSAFER option. Note, however, that this option
+is incompatible with some scripts and wrappers, including gv and
+related viewer apps.
+
+<p>
+We plan to make -dSAFER the default in future versions of Ghostscript.
+Since most people use Ghostscript to print and view documents, rather
+than to run scripts written in the PostScript language, this will
+provide additional safety with little hassle for most users. If you
+<em>are</em> using Ghostscript as a scripting language and need
+unfettered access to the filesystem, use the -dNOSAFER flag to signal
+explictly that you wish the PostScript code to have full access to the
+file system. Currently, this flag has no effect, but it will insure
+than your scripts execute as expected in future versions.
+
+<p>
+While we've tried to patch all known security problems, there is
+no guarantee that we've caught them all. Ghostscript is a complex
+application written in C. Buffer overflows and other exploits remain
+a distinct possibility. Thus we recommend that, whenever possible,
+Ghostscript should run in a secure "sandbox" environment, making
+use of the security mechanisms of the underlying operating system.
+In particular, we urge GNU/Linux distributors to invoke Ghostscript from
+the print subsystem in a chroot'ed environment, and never as root.
+
+<p>
+We will continue to be vigilant regarding security issues. As
+always, apply security updates promptly.
+
+<h2><a name="Pipe_input"></a>Input from a pipe</h2>
+
+<p>
+As noted above, one normally specifies input with file names on the command
+line. However, one can also "pipe" input into Ghostscript by using the
+special file name "<b><tt>-</tt></b>" or "<b><tt>-_</tt></b>", for instance
+
+<blockquote>
+{some program producing PS} <b><tt>| gs</tt></b> {...options...} <b><tt>-</tt></b>
+<br>
+{some program producing PS} <b><tt>| gs</tt></b> {...options...} <b><tt>-_</tt></b>
+</blockquote>
+
+<p>
+These switches differ from a named file in two respects:
+
+<ol>
+<li>When Ghostscript finishes reading from the pipe, it quits rather than
+going into interactive mode. Because of this, these switches are
+really only useful as the last argument on the command line.
+
+<li>These switches can't be used to pipe PDF input to Ghostscript.
+See "<a href="#PDF">Using Ghostscript with PDF files</a>" below.
+</ol>
+
+<p>
+
+The difference between "<b><tt>-</tt></b>" and "<b><tt>-_</tt></b>" is that
+"<b><tt>-</tt></b>" may read the input one character at a time, which is useful
+for programs that generate input for Ghostscript dynamically
+and watch for some response, whereas "<b><tt>-_</tt></b>" reads the input in
+blocks, which is more efficient for ordinary (batch) execution.
+
+<h2><a name="Output_device"></a>Selecting an output device</h2>
+
+<p>
+Ghostscript may be built to handle multiple output devices, and it normally
+opens and directs output to the first one built in. Ghostscript's
+<b><tt>gs&nbsp;-h</tt></b> <a href="#Help_command">help message</a> lists
+the output devices known to the executable. Once you invoke Ghostscript
+you can also find out what devices are available by
+"<b><tt>devicenames&nbsp;==</tt></b>" at its command prompt.
+
+<p><a name="Source_code"></a>
+
+A little more information about devices appears near the beginning of the
+files <b><tt>devs.mak</tt></b> (for drivers that are considered "part of"
+Ghostscript and are maintained by the maintainers of the main Ghostscript
+code) and <b><tt>contrib.mak</tt></b> (for user-contributed drivers) used to
+build Ghostscript. (If you got Ghostscript under the Aladdin <a
+href="Public.htm">Free Public License</a>, the person or place from which
+you got it is also required to make the source code available to you; if you
+got it under the GNU General Public License (GPL), see the GNU <a
+href="http://www.gnu.org/copyleft/gpl.html">General Public License</a> for
+more information.)
+
+<p><a name="Device_output"></a>
+To use device <em>xyz</em> as the initial output device, use the
+command-line switch
+
+<blockquote>
+ <b><tt>-sDEVICE=</tt></b><em>xyz</em>
+</blockquote>
+
+<p>
+Note that this switch must precede the name of the first input file, and
+only its first use has any effect. For example, for printer output in a
+configuration that includes an Epson printer driver, instead of just
+"<b><tt>gs&nbsp;myfile.ps</tt></b>" you might use
+
+<blockquote>
+ <b><tt>gs -sDEVICE=epson myfile.ps</tt></b>
+</blockquote>
+
+<p>
+Alternatively, once you invoke Ghostscript and have its own command prompt
+you can type
+
+<blockquote><b><tt>
+ (epson) selectdevice<br>
+ (myfile.ps) run
+</tt></b></blockquote>
+
+<p>
+All output then goes to the Epson printer instead of the display until you
+do something to change devices. You can switch devices at any time by
+using the <b><tt>selectdevice</tt></b> procedure, for
+instance like one of these:
+
+<blockquote><b><tt>
+ (vga) selectdevice<br>
+ (epson) selectdevice
+</tt></b></blockquote>
+
+<p><a name="GS_DEVICE"></a>
+A third possibility is to define an environment variable
+<b><tt>GS_DEVICE</tt></b> with the name of your desired default device.
+The order of precedence for these alternatives, highest to lowest, is:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td><b><tt>selectdevice</tt></b>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>Highest precedence
+<tr> <td>(command line)
+ <td>&nbsp;
+ <td>&nbsp;
+<tr> <td><b><tt>GS_DEVICE</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+<tr> <td>(first device built in)
+ <td>&nbsp;
+ <td>Default; lowest precedence
+</table></blockquote>
+
+<h3><a name="Printer_resolution"></a>Printer resolution</h3>
+
+<p>
+Some printers can print at several different resolutions, letting you
+balance resolution against printing speed. To select the resolution on
+such a printer, use the <b><tt>-r</tt></b> switch:
+
+<blockquote>
+ <b><tt>gs -sDEVICE=</tt></b><em>printer</em><b><tt> -r</tt></b><em>XRES</em><b><tt>x</tt></b><em>YRES</em>
+</blockquote>
+
+<p>
+For example, on Epson-compatible printers you have these choices:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr> <td><b><tt>gs -sDEVICE=epson</tt></b>
+ <td>&nbsp;&nbsp;
+ <td><b><tt>-r60x72</tt></b>
+ <td>&nbsp;&nbsp;
+ <td>9-pin
+ <td>&nbsp;&nbsp;
+ <td>lowest resolution
+ <td>&nbsp;&nbsp;
+ <td>fastest
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td><b><tt>-r240x72</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>highest
+ <td>&nbsp;
+ <td>slowest
+<tr> <td>&nbsp;
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td><b><tt>-r60x60</tt></b>
+ <td>&nbsp;
+ <td>24-pin
+ <td>&nbsp;
+ <td>lowest
+ <td>&nbsp;
+ <td>fastest
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td><b><tt>-r360x180</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>highest
+ <td>&nbsp;
+ <td>slowest
+</table></blockquote>
+
+<h3><a name="File_output"></a>Output to files</h3>
+
+<p>
+If you select a printer as the output device, Ghostscript also allows you to
+control where the device sends its output. On DOS and MS Windows systems,
+output normally goes directly to the printer (<b><tt>PRN</tt></b>); on Unix
+or VMS systems normally to a temporary file for later printing. To send the
+output to a file, use the <b><tt>-sOutputFile=</tt></b> switch (for
+compatibility with older versions of Ghostscript,
+<b><tt>-sOUTPUTFILE=</tt></b> also works). For instance, to direct all
+output into the file <b><tt>ABC.xyz</tt></b>, use
+
+<blockquote><b><tt>
+gs -sOutputFile=ABC.xyz
+</tt></b></blockquote>
+
+<p>
+The file name follows the PostScript convention that if a name begins with
+<b><tt>%</tt></b>, the name must be in the form <b><tt>%</tt></b>filedevice
+or <b><tt>%</tt></b>filedevice<b><tt>%</tt></b>file. The legal values of
+filedevice are system-dependent, but the following have consistent meanings
+across systems:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">"%{filedevice}%{file}" in <b><tt>-sOutputFile=</tt></b></font><hr>
+<tr valign=bottom>
+ <th align=left>filedevice
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Meaning
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>%os%xyz</tt></b>
+ <td>&nbsp;
+ <td>An ordinary file named <b><tt>xyz</tt></b>
+<tr valign=top> <td><b><tt>%pipe%cmd</tt></b>
+ <td>&nbsp;
+ <td>(if supported) A pipe to an instance of the command <b><tt>cmd</tt></b>
+<tr valign=top> <td><b><tt>%stdout</tt></b>
+ <td>&nbsp;
+ <td>The standard output file
+</table></blockquote>
+
+<p>
+Note that because of this, if you want to specify a file name that actually
+begins with <b><tt>%</tt></b>, you must specify the <b><tt>%os%</tt></b>
+filedevice explicitly: e.g., for output to a file named
+<b><tt>%abc</tt></b>, you need to specify
+<b><tt>-sOutputFile=%os%%abc</tt></b>. Note also that on DOS and MS Windows
+systems, the <b><tt>%</tt></b> character has a special meaning for the
+command processor (shell), so you will have to double it, e.g., for a pipe
+on MS Windows,
+
+<blockquote><b><tt>
+gs -sOutputFile=%%pipe%%cmd
+</tt></b></blockquote>
+
+<h4><a name="One_page_per_file"></a>One page per file</h4>
+
+<p>
+You can also tell Ghostscript to put each page of output in a separate
+file. To send output to a series of files each representing a single page,
+use in the filename the <b><tt>printf</tt></b> format specifier
+"<b><tt>%d</tt></b>" (or its extended form like "<b><tt>%02d</tt></b>");
+for instance
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">"%{n}d" in <b><tt>-sOutputFile=</tt></b></font><hr>
+<tr valign=bottom>
+ <th align=left>Output specification
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Produces the series of 1-page files
+<tr> <td colspan=3><hr>
+<tr valign=top> <td><b><tt>-sOutputFile=ABC%d.xyz</tt></b>
+ <td>&nbsp;
+ <td><b><tt>ABC1.xyz</tt></b> ... <b><tt>ABC10.xyz</tt></b> ...
+<tr valign=top> <td><b><tt>-sOutputFile=ABC%03d.xyz</tt></b>
+ <td>&nbsp;
+ <td><b><tt>ABC001.xyz</tt></b> ... <b><tt>ABC010.xyz</tt></b> ...
+</table></blockquote>
+
+<p>
+As noted above, on DOS and MS Windows systems, you will have to double the
+<b><tt>%</tt></b> character, e.g.,
+
+<blockquote><b><tt>
+gs -sOutputFile=ABC%%03d.xyz
+</tt></b></blockquote>
+
+<h4><a name="Pipe_output"></a>Output to a pipe</h4>
+
+<p>
+On Unix and (32-bit) MS Windows systems you can use this switch to send
+output directly to a pipe. For example, to pipe the output to
+<b><tt>lpr</tt></b>, use the command
+
+<blockquote><b><tt>
+ gs -sOutputFile=\|lpr
+</tt></b></blockquote>
+or, as noted above,
+<blockquote><b><tt>
+ gs -sOutputFile=%pipe%lpr
+</tt></b></blockquote>
+
+<p>
+(doubling the <b><tt>%</tt></b> characters on MS Windows systems, as noted
+above.) You can also send output to standard output for piping in the usual
+way supported by the system:
+
+<blockquote>
+ <b><tt>gs -sOutputFile=- -q |</tt></b> ...
+</blockquote>
+or, as noted above,
+<blockquote>
+ <b><tt>gs -sOutputFile=%stdout -q |</tt></b> ...
+</blockquote>
+
+<p>
+(again, doubling the <b><tt>%</tt></b> character on MS Windows systems.)
+In this case you must also use the <a href="#Quiet"><b><tt>-q</tt></b>
+switch</a> to prevent Ghostscript from writing messages to standard output
+which become mixed with the intended output stream.
+
+<h4><a name="Output_to_graphics"></a>Output to graphics file formats</h4>
+
+<p>
+File formats like PCX and PBM are also "devices". When you select a file
+format as the "device", you must also specify an output file, for instance
+
+<blockquote><b><tt>
+gs -sDEVICE=pcxmono -sOutputFile=xyz.pcx
+</tt></b></blockquote>
+
+<p>
+Here, as with printable files, you can use "<b><tt>%d</tt></b>"
+("<b><tt>%%d</tt></b>" on DOS and MS Windows) to specify <a
+href="#One_page_per_file">one page per output file</a>.
+
+<h4><a name="Bounding_box_output"></a>Bounding box output</h4>
+
+<p>
+There is a special <b><tt>bbox</tt></b> "device" that just prints the
+bounding box of each page. You select it in the usual way:
+
+<blockquote><b><tt>
+gs -dNOPAUSE -dBATCH -sDEVICE=bbox
+</tt></b></blockquote>
+
+<p>
+It prints the output in a format like this:
+
+<blockquote>
+<pre><b><tt>%%BoundingBox: 14 37 570 719
+%%HiResBoundingBox: 14.308066 37.547999 569.495061 718.319158
+</tt></b></pre></blockquote>
+
+<p>
+Currently, it always prints the bounding box on <b><tt>stderr</tt></b>;
+eventually, it should also recognize <b><tt>-sOutputFile=</tt></b>.
+
+<p>
+Note that this device, like other devices, has a resolution and a (maximum)
+page size. As for other devices, the product (resolution x page size) is
+limited to approximately 500K pixels. By default, the resolution is 4000
+DPI and the maximum page size is approximately 125", or approximately 9000
+default (1/72") user coordinate units. If you need to measure larger pages
+than this, you must reset <em>both</em> the resolution and the page size in
+pixels, e.g.,
+
+<blockquote><b><tt>
+gs -dNOPAUSE -dBATCH -sDEVICE=bbox -r100 -g500000x500000
+</tt></b></blockquote>
+
+<h3><a name="Paper_size"></a>Choosing paper size</h3>
+
+<p>
+Ghostscript is distributed configured to use U.S. letter paper as its
+default page size. There are two ways to select other paper sizes from the
+command line:
+
+<ul>
+
+<li>
+If the desired paper size is listed in the section on <a
+href="#Known_paper_sizes">paper sizes known to Ghostscript</a> below, you
+can select it as the default paper size for a single invocation of
+Ghostscript by using the <b><tt>-sPAPERSIZE=</tt></b> switch, for instance
+
+<blockquote><b><tt>
+-sPAPERSIZE=a4<br>
+-sPAPERSIZE=legal
+</tt></b></blockquote>
+
+<li>
+Otherwise, let <em>w</em> be the desired paper width and <em>h</em> be the
+desired paper height, in 1/72" units. You can set the page size using the
+pair of switches
+
+<blockquote>
+<b><tt>-dDEVICEWIDTHPOINTS=</tt></b><em>w</em>
+<b><tt>-dDEVICEHEIGHTPOINTS=</tt></b><em>h</em>
+</blockquote>
+
+</ul>
+
+<p>
+Individual documents can (and often do) specify a paper size, which takes
+precedence over the default size. To force a specific paper size and
+ignore the paper size specified in the document, select a paper size as
+just described, and also include the
+<a href="#FIXEDMEDIA"><b><tt>-dFIXEDMEDIA</tt></b> switch</a> on the
+command line.
+
+<h3><a name="Change_default_size"></a>Changing the installed default paper size</h3>
+
+<p>
+You can change the installed default paper size in installing Ghostscript
+or later, by editing the initialization file <b><tt>gs_init.ps</tt></b>.
+Find the consecutive lines
+
+<blockquote><b><tt>
+%&nbsp;Optionally&nbsp;choose&nbsp;a&nbsp;default&nbsp;paper&nbsp;size&nbsp;other&nbsp;than&nbsp;U.S.&nbsp;letter.<br>
+%&nbsp;(a4)
+</tt></b></blockquote>
+
+<p>
+Then to make A4 the default paper size, uncomment the second line to change
+this to
+
+<blockquote><b><tt>
+%&nbsp;Optionally&nbsp;choose&nbsp;a&nbsp;default&nbsp;paper&nbsp;size&nbsp;other&nbsp;than&nbsp;U.S.&nbsp;letter.<br>
+(a4)
+</tt></b></blockquote>
+
+<p>
+For <b><tt>a4</tt></b> you can substitute any
+<a href="#Known_paper_sizes">paper size Ghostscript knows</a>.
+
+<h2><a name="Finding_files"></a>How Ghostscript finds files</h2>
+
+<p>
+When looking for initialization files (<b><tt>gs_*.ps</tt></b>,
+<b><tt>pdf_*.ps</tt></b>), font files, the <b><tt>Fontmap</tt></b> file,
+and files named on the command line, Ghostscript first tests whether the
+file name specifies an explicit directory.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Testing a file name for an explicit directory</font><hr>
+<tr> <th align=left>System
+ <td>&nbsp;&nbsp;
+ <th align=left>Does the name ...
+<tr> <td colspan=3><hr>
+<tr> <td valign=top>Unix
+ <td>&nbsp;
+ <td>Begin with <b><tt><u>/</u></tt></b>, <b><tt><u>./</u></tt></b> or <b><tt><u>../</u></tt></b> ?
+<tr> <td valign=top>DOS or MS Windows
+ <td>&nbsp;
+ <td>Have <b><tt><u>:</u></tt></b> as its second character, or
+ begin with <b><tt><u>/</u></tt></b>, <b><tt><u>\</u></tt></b>,
+ <b><tt><u>./</u></tt></b>, <b><tt><u>../</u></tt></b>, <b><tt><u>.\</u></tt></b>, or <b><tt><u>..\</u></tt></b> ?
+<tr> <td valign=top>VMS
+ <td>&nbsp;
+ <td>Contain a node, device, root, or directory specification?
+</table></blockquote>
+
+<p><a name="General_search_path"></a> If the test succeeds, the file name
+specifies an explicit directory and Ghostscript tries to open the file
+using the name given. Otherwise it tries directories in this order:
+
+<ol>
+<li>The current directory (unless disabled by the
+<a href="#P-_switch"><b><tt>-P-</tt></b> switch</a>);
+
+<li>The directories specified by <a href="#I_switch"><b><tt>-I</tt></b>
+switches</a> in the command line, if any;
+
+<li>The directories specified by the <b><tt>GS_LIB</tt></b>
+environment variable, if any;
+
+<li>The directories specified by the
+<b><tt>GS_LIB_DEFAULT</tt></b> macro (if any) in the makefile
+when this executable was built.
+</ol>
+
+<p>
+<b><tt>GS_LIB_DEFAULT</tt></b>,
+<b><tt>GS_LIB</tt></b>, and the
+<b><tt>-I</tt></b> parameter may specify either a single
+directory or a list of directories separated by a character appropriate for
+the operating system ("<b><tt>:</tt></b>" on Unix systems,
+"<b><tt>,</tt></b>" on VMS systems, and
+"<b><tt>;</tt></b>" on DOS systems). We think that trying
+the current directory first is a very bad idea -- it opens serious security
+loopholes and can lead to very confusing errors if one has more than one
+version of Ghostscript in one's environment -- but when we attempted to
+change it, users insisted that we change it back. You can disable looking
+in the current directory first by using the
+<a href="#P_switch"><b><tt>-P-</tt></b> switch</a>.
+
+<p>
+Note that Ghostscript does not use this file searching algorithm for the
+<b><tt>run</tt></b> or <b><tt>file</tt></b>
+operators: for these operators, it simply opens the file with the name
+given. To run a file using the searching algorithm, use
+<b><tt>runlibfile</tt></b> instead of
+<b><tt>run</tt></b>.
+
+<h3><a name="PS_resources"></a>Finding PostScript Level 2 resources</h3>
+
+<p>
+Ghostscript uses a completely different rule for looking for files
+containing PostScript Level 2 "resources": per the Adobe documentation, it
+concatenates together
+
+<ol>
+<li>the value of the system parameter
+<b><tt>GenericResourceDir</tt></b> (initially
+<b><tt>/Resource/</tt></b>)
+
+<li>the name of the resource category (for instance, <b><tt>ProcSet</tt></b>)
+
+<li>the value of the system parameter
+<b><tt>GenericResourcePathSep</tt></b> (initially
+"<b><tt>/</tt></b>")
+
+<li>the name of the resource instance (for instance, <b><tt>CIDInit</tt></b>)
+</ol>
+
+<p>
+To look up fonts, after exhausting the search method described in <a href="#Font_lookup">the
+next section</a>, it concatenates together
+
+<ol>
+<li>the value of the system parameter
+<b><tt>FontResourceDir</tt></b> (initially
+<b><tt>/Resource/Font/</tt></b>)
+
+<li>the name of the resource font (for instance, <b><tt>Times-Roman</tt></b>)
+</ol>
+
+<p>
+Note that even though the system parameters are named "somethingDir", they
+are not just plain directory names: they have "<b><tt>/</tt></b>" on the
+end, so that they can be concatenated with the category name or font name.
+
+<h3><a name="Font_lookup"></a>Font lookup</h3>
+
+<p>
+Ghostscript has a slightly different way to find the file containing a font
+with a given name. This rule uses not only the search path defined by
+<b><tt>-I</tt></b>, <b><tt>GS_LIB</tt></b>, and
+<b><tt>GS_LIB_DEFAULT</tt></b> <a href="#General_search_path">as described
+above</a>, but also the directory that is the value of the
+<b><tt>FontResourceDir</tt></b> system parameter, and an additional list of
+directories that is the value of the <b><tt>GS_FONTPATH</tt></b> environment
+variable (or the value provided with the <b><tt>-sFONTPATH=</tt></b> switch,
+if present).
+
+<p>
+At startup time, Ghostscript reads in the <b><tt>Fontmap</tt></b> files in
+every directory on the search path (or in the list provided with the
+<b><tt>-sFONTMAP=</tt></b> switch, if present): these files are catalogs of
+fonts and the files that contain them. (See <a href="Fonts.htm#Fontmap">the
+documentation of fonts</a> for details.) Then, when Ghostscript needs to
+find a font that isn't already loaded into memory, it goes through a series
+of steps.
+
+<ul>
+
+<li>
+First, it looks up the font name in the combined Fontmaps. If there is an
+entry for the desired font name, and the file named in the entry can be
+found in some directory on the general search path (defined by
+<b><tt>-I</tt></b>, <b><tt>GS_LIB</tt></b>, and
+<b><tt>GS_LIB_DEFAULT</tt></b>), and the file is loaded successfully, and
+loading it defines a font of the desired name, that is the end of the
+process.
+
+<li>
+If this process fails at any step, Ghostscript looks for a file whose name
+is the concatenation of the value of the <b><tt>FontResourceDir</tt></b>
+system parameter and the font name, with no extension. If such a file
+exists, can be loaded, and defines a font of the desired name, that again is
+the end. The value of <b><tt>FontResourceDir</tt></b> is normally the
+string <b><tt>/Resource/Font/</tt></b>, but it can be changed with the
+<b><tt>setsystemparams</tt></b> operator: see the PostScript Language
+Reference Manual for details.
+
+<li>
+If that fails, Ghostscript then looks for a file on the general search path
+whose name is the desired font name, with no extension. If such a file
+exists, can be loaded, and defines a font of the desired name, that again is
+the end.
+
+<li>
+If that too fails, Ghostscript looks at the <b><tt>GS_FONTPATH</tt></b>
+environment variable (or the value provided with the
+<b><tt>-sFONTPATH=</tt></b> switch, if present), which is also a list of
+directories. It goes to the first directory on the list, looking for all
+files that appear to contain PostScript fonts; it then adds all those files
+and fonts to the combined Fontmaps, and starts over.
+
+<li>
+If scanning the first FONTPATH directory doesn't produce a file that
+provides the desired font, it adds the next directory on the FONTPATH list,
+and so on until either the font is defined successfully or the list is
+exhausted.
+
+<li>
+Finally, if all else fails, it will try to find a substitute for the font
+from among the standard 35 fonts.
+
+</ul>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Differences between search path and font path</font><hr>
+<tr> <th>Search path
+ <td>&nbsp;&nbsp;&nbsp;
+ <th>Font path
+<tr> <td colspan=3><hr>
+<tr> <td><b><tt>-I</tt></b> switch
+ <td>&nbsp;
+ <td><b><tt>-sFONTPATH=</tt></b> switch
+<tr> <td>&nbsp;
+<tr> <td><b><tt>GS_LIB</tt></b> and <b><tt>GS_LIB_DEFAULT</tt></b>
+ environment variables
+ <td>&nbsp;
+ <td><b><tt>GS_FONTPATH</tt></b> environment variable
+<tr> <td>&nbsp;
+<tr> <td valign=top>Consulted first
+ <td>&nbsp;
+ <td valign=top>Consulted only if search path and
+ <b><tt>FontResourceDir</tt></b> don't provide the file.
+<tr> <td>&nbsp;
+<tr> <td valign=top>Font-name-to-file-name mapping given in Fontmap
+ files; aliases are possible, and there need not be any relation
+ between the font name in the Fontmap and the
+ <b><tt>FontName</tt></b> in the file.
+ <td>&nbsp; <td valign=top>Font-name-to-file-name mapping is
+ implicit -- the <b><tt>FontName</tt></b> in the file is
+ used. Aliases are not possible.
+<tr> <td>&nbsp;
+<tr> <td valign=top>Only fonts and files named in Fontmap are used.
+ <td>&nbsp;
+ <td valign=top>Every Type 1 font file in each directory is
+ available; if TrueType fonts are supported (the
+ <b><tt>ttfont.dev</tt></b> feature was included when the
+ executable was built), they are also available.
+</table></blockquote>
+
+<p>
+If you are using one of the following types of computer, you may wish to
+set the environment variable <b><tt>GS_FONTPATH</tt></b> to
+the value indicated so that Ghostscript will automatically acquire all the
+installed Type 1 (and, if supported, TrueType) fonts (but see below for
+notes on systems marked with "*"):
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Suggested <b><tt>GS_FONTPATH</tt></b> for different systems</font><hr>
+<tr> <td>&nbsp;
+ <td>&nbsp;&nbsp;
+ <th align=left>System type
+ <td>&nbsp;&nbsp;
+ <th valign=bottom align=left><b><tt>GS_FONTPATH</tt></b>
+<tr> <td colspan=5><hr>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>Digital Unix
+ <td>&nbsp;
+ <td><b><tt>/usr/lib/X11/fonts/Type1Adobe</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>Ultrix
+ <td>&nbsp;
+ <td><b><tt>/usr/lib/DPS/outline/decwin</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>HP-UX 9
+ <td>&nbsp;
+ <td><b><tt>/usr/lib/X11/fonts/type1.st/typefaces</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>IBM AIX
+ <td>&nbsp;
+ <td><b><tt>/usr/lpp/DPS/fonts/outlines
+ <br>/usr/lpp/X11/lib/X11/fonts/Type1
+ <br>/usr/lpp/X11/lib/X11/fonts/Type1/DPS</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>NeXT
+ <td>&nbsp;
+ <td><b><tt>/NextLibrary/Fonts/outline</tt></b>
+<tr> <td>*
+ <td>&nbsp;
+ <td valign=top>SGI IRIX
+ <td>&nbsp;
+ <td><b><tt>/usr/lib/DPS/outline/base
+ <br>/usr/lib/X11/fonts/Type1</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>SunOS 4.x<br>(NeWSprint only)
+ <td>&nbsp;
+ <td valign=top><b><tt>newsprint_2.5/SUNWsteNP/reloc/$BASEDIR/NeWSprint/<br>&nbsp;&nbsp;&nbsp;&nbsp;small_openwin/lib/fonts</tt></b>
+<tr> <td>**
+ <td>&nbsp;
+ <td valign=top>SunOS 4.x
+ <td>&nbsp;
+ <td><b><tt>/usr/openwin/lib/X11/fonts/Type1/outline</tt></b>
+<tr> <td>**
+ <td>&nbsp;
+ <td valign=top>Solaris 2.x
+ <td>&nbsp;
+ <td><b><tt>/usr/openwin/lib/X11/fonts/Type1/outline</tt></b>
+<tr> <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>VMS
+ <td>&nbsp;
+ <td><b><tt>SYS$COMMON:[SYSFONT.XDPS.OUTLINE]</tt></b>
+</table>
+
+<hr align=left width="25%">
+
+<p>
+<b>*</b> On SGI IRIX systems, you must use <b><tt>Fontmap.SGI</tt></b> in
+place of <b><tt>Fontmap</tt></b> or <b><tt>Fontmap.GS</tt></b>, because
+otherwise the entries in <b><tt>Fontmap</tt></b> will take precedence over
+the fonts in the FONTPATH directories.
+
+<p>
+<b>**</b> On Solaris systems simply setting <b><tt>GS_FONTPATH</tt></b> or
+using <b><tt>-sFONTPATH=</tt></b> may not work, because for some reason some
+versions of Ghostscript can't seem to find any of the Type1 fonts in
+<b><tt>/usr/openwin/lib/X11/fonts/Type1/outline</tt></b>. (It says: "15
+files, 15 scanned, 0 new fonts". We think this problem has been fixed in
+Ghostscript version 6.0, but we aren't sure because we've never been able to
+reproduce it.) See <b><tt>Fontmap.Sol</tt></b> instead. Also, on Solaris
+2.x it's probably not worth your while to add Sun's fonts to your font path
+and Fontmap. The fonts Sun distributes on Solaris 2.x in the directories
+
+<blockquote><b><tt>
+ /usr/openwin/lib/X11/fonts/Type1<br>
+ /usr/openwin/lib/X11/fonts/Type1/outline
+</tt></b></blockquote>
+
+<p>
+are already represented among the ones distributed as part of Ghostscript;
+and on some test files, Sun's fonts have been shown to cause incorrect
+displays with Ghostscript.
+
+</blockquote>
+
+<p>
+These paths may not be exactly right for your installation; if the indicated
+directory doesn't contain files whose names are familiar font names like
+Courier and Helvetica, you may wish to ask your system administrator where
+to find these fonts.
+
+<p>
+Adobe Acrobat comes with a set of fourteen Type 1 fonts, on Unix typically
+in a directory called ...<b><tt>/Acrobat3/Fonts</tt></b>. There is no
+particular reason to use these instead of the corresponding fonts in the
+Ghostscript distribution (which are of just as good quality), except to save
+about a megabyte of disk space, but the installation documentation explains
+how to do it <a href="Install.htm#Unix_Fonts">on Unix</a> and <a
+href="Install.htm#Use_platform_fonts_DOS">on DOS</a> (where you can also use
+Adobe Type Manager fonts).
+
+<h3><a name="Temp_files"></a>Temporary files</h3>
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Where Ghostscript puts temporary files</font><hr>
+<tr valign=bottom>
+ <th align=left>Platform
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Filename
+ <td>&nbsp;&nbsp;&nbsp;
+ <th align=left>Location
+<tr> <td colspan=5><hr>
+<tr valign=top> <td>DOS and OpenVMS
+ <td>&nbsp;
+ <td><b><tt>_temp_</tt></b>XX.XXX
+ <td>&nbsp;
+ <td>Current directory
+<tr valign=top> <td>OS/2
+ <td>&nbsp;
+ <td><b><tt>gs</tt></b>XXXXXX
+ <td>&nbsp;
+ <td>Current directory
+<tr valign=top> <td>Unix
+ <td>&nbsp;
+ <td><b><tt>gs_</tt></b>XXXXX
+ <td>&nbsp;
+ <td><b><tt>/tmp</tt></b>
+</table></blockquote>
+
+<p>
+You can change in which directory Ghostscript creates temporary files by
+setting the <b><tt>TMPDIR</tt></b> or <b><tt>TEMP</tt></b> environment
+variable to the name of the directory you want used. Ghostscript currently
+doesn't do a very good job of deleting temporary files if it exits because
+of an error; you may have to delete them manually from time to time.
+
+<dl>
+<dt><b><tt>GS</tt></b>, <b><tt>GSC</tt></b> (MS Windows only)
+<dd>Specify the names of the Ghostscript executables. <b><tt>GS</tt></b>
+brings up a new typein window and possibly a graphics window;
+<b><tt>GSC</tt></b> uses the DOS console. If these are not set,
+<b><tt>GS</tt></b> defaults to <b><tt>gswin32</tt></b>, and
+<b><tt>GSC</tt></b> defaults to <b><tt>gswin32c</tt></b>.
+</dl>
+
+<h2><a name="Environment_variables"></a>Summary of environment variables</h2>
+
+<dl>
+<dt><a href="#GS_DEVICE"><b><tt>GS_DEVICE</tt></b></a>
+<dd>Defines the default output device.
+</dl>
+
+<dl>
+<dt><a href="#Font_lookup"><b><tt>GS_FONTPATH</tt></b></a>
+<dd>Specifies a list of directories to scan for fonts if a font requested
+can't be found anywhere on the search path.
+</dl>
+
+<dl>
+<dt><a href="#Finding_files"><b><tt>GS_LIB</tt></b></a>
+<dd>Provides a search path for initialization files and fonts.
+</dl>
+
+<dl>
+<dt><b><tt>GS_OPTIONS</tt></b>
+<dd>Defines a list of command-line arguments to be processed before the
+ones actually specified on the command line. For example, setting
+<b><tt>GS_DEVICE</tt></b> to XYZ is equivalent to setting
+<b><tt>GS_OPTIONS</tt></b> to <b><tt>-sDEVICE=XYZ</tt></b>. The contents
+of <b><tt>GS_OPTIONS</tt></b> are not limited to switches; they may include
+actual file names or even <a href="#Input_control">"@file" arguments</a>.
+
+</dl>
+
+<dl>
+<dt><a href="#Temp_files"><b><tt>TEMP</tt></b>, <b><tt>TMPDIR</tt></b></a>
+<dd>Defines a directory name for temporary files. If both
+<b><tt>TEMP</tt></b> and <b><tt>TMPDIR</tt></b> are defined,
+<b><tt>TMPDIR</tt></b> takes precedence.
+</dl>
+
+<hr>
+<h2><a name="CIDFontSubstitution"></a>CID font substitution</h2>
+
+<p>
+CID fonts are PostScript resources containing
+large number of glyphs (e.g. glyphs for Far East languages).
+Please refer Postscript Language Reference,
+third edition, for details.
+
+
+<p>
+CID font resources are different kind of PostScript resources than fonts.
+Particularly they cannot be used as regular fonts. For doing this,
+CID font resourse first to be combined with a CMap resource, which
+defines specific codes for hieroglyphs (this allows to use
+same collection of hieroglyphs with different encodings).
+
+<p>
+The simplest method to request a font composed of CID font resource and CMap resource
+is to code
+<blockquote><b><tt>
+/CIDFont-CMap findfont
+</tt></b></blockquote>
+in a PostScript document, where <b><tt>CIDFont</tt></b> is a name of any
+CID font resourse, and <b><tt>CMap</tt></b> is a name of a CMap resource,
+being designed for same character collection. The interpreter will compose
+the font automatically from the specified CID font and CMap resources.
+Another method is based on the operator <b><tt>composefont</tt></b>.
+
+<p>
+For substituting CID font resources Ghostscript 6.53 and 7.0x provides
+the control file "CIDFnmap", which defines a CID font resource map.
+please refer
+<a href="CJK.htm#About_CIDFnmap">"About CIDFnmap of Ghostscript"</a>
+in CJK.htm. However, "CIDFnmap" will be replaced by "cidfmap" in
+Ghostscript 7.2x and later releases.
+
+
+<h2><a name="EPS"></a>Using Ghostscript with EPS files</h2>
+<p>
+Encapsulated PostScript (EPS) files are intended to be encapsulated
+in another PostScript document and may not display or print on their
+own. An EPS file must conform to the Document Structuring Conventions,
+must include a <b><tt>%%BoundingBox:</tt></b> line to indicate the
+rectangle in which it will draw, must not use PostScript commands
+which will interfere with the document importing the EPS,
+and can have either zero pages or one page.
+Ghostscript has support for handling EPS files, but requires
+that the <b><tt>%%BoundingBox:</tt></b> be in the header,
+not the trailer.
+</p>
+<p>
+For the official description of the EPS file format, please
+refer to the Adobe documentation in their tech note #5002. It
+is available from:
+<a href="http://partners.adobe.com/asn/developer/technotes/postscript.html"
+class="offsite">
+http://partners.adobe.com/asn/developer/technotes/postscript.html</a>
+</p>
+<p>
+To crop an EPS file to the bounding box:
+<blockquote>
+<b><tt>
+ gs -dEPSCrop file.eps
+</tt></b>
+</blockquote>
+</p>
+<p>
+To resize an EPS file to fit the page:
+<blockquote>
+<b><tt>
+ gs -dEPSFitPage file.eps
+</tt></b>
+</blockquote>
+</p>
+<p>
+To disable special processing of EPS files:
+<blockquote>
+<b><tt>
+ gs -dNOEPS file.eps
+</tt></b>
+</blockquote>
+</p>
+
+<h2><a name="PDF"></a>Using Ghostscript with PDF files</h2>
+
+<p>
+Ghostscript is normally built (except on 16-bit DOS platforms) to interpret
+both PostScript and PDF files, examining each file to determine
+automatically whether its contents are PDF or PostScript. All the normal
+switches and procedures for interpreting PostScript files also apply to PDF
+files, with a few exceptions. In addition, the
+<b><tt>pdf2ps</tt></b> utility uses Ghostscript to convert
+PDF to (Level 2) PostScript.
+
+<h3><a name="PDF_stdin"></a>PDF files from standard input</h3>
+
+<p>
+The PDF language, unlike the PostScript language, inherently requires
+random access to the file.
+If you provide PDF to standard input using the
+<a href="#Pipe_input">"<b><tt>-</tt></b>" or "<b><tt>-_</tt></b>"
+switch</a>,
+ghostscript will copy it to a temporary file before interpreting the PDF.
+
+<h3><a name="PDF_switches"></a>Switches for PDF files</h3>
+
+<dl>
+<dt><b><tt>-dFirstPage=</tt></b><em>pagenumber</em>
+<dd>Begins interpreting on the designated page of the document.
+</dl>
+
+<dl>
+<dt><b><tt>-dLastPage=</tt></b><em>pagenumber</em>
+<dd>Stops interpreting after the designated page of the document.
+</dl>
+
+<dl>
+<dt><b><tt>-dPrinted</tt></b>
+<dt><b><tt>-dPrinted=false</tt></b>
+<dd>Determines whether the file should be displayed or printed using the
+"screen" or "printer" options for annotations and images. With
+<b><tt>-dPrinted</tt></b>, the output will use the file's "print"
+options; with <b><tt>-dPrinted=false</tt></b>, the output will use the
+file's "screen" options. If neither of these is specified, the output will
+use the screen options for any output device that doesn't have an
+<b><tt>OutputFile</tt></b> parameter, and the printer options for
+devices that do have this parameter.
+</dl>
+
+<dl>
+<dt><b><tt>-dUseCropBox</tt></b>
+<dd>Sets the page size to the CropBox rather than the MediaBox.
+Some files have a CropBox that is smaller than the MediaBox and
+may include white space, registration or cutting marks outside
+the CropBox. Using this option will set the page size
+appropriately for a viewer.
+</dl>
+
+<dl>
+<dt><b><tt>-sPDFPassword=</tt></b><em>password</em>
+<dd>Sets the user or owner password to be used in decoding encrypted
+PDF files.
+</dl>
+
+<h3><a name="PDF_problems"></a>Problems interpreting a PDF file</h3>
+
+<p>
+Occasionally you may try to read or print a <b><tt>*.pdf</tt></b> file that
+Ghostscript doesn't recognize as PDF, even though the same file
+<b><em>can</em></b> be opened and interpreted by an Adobe Acrobat viewer.
+This can happen when, for instance, a PDF file produced on a Macintosh is
+carelessly moved to another kind of system, leaving now-useless
+Macintosh-specific data before the standard header. Ghostscript can't read
+these files because they don't conform to the PDF standard, Adobe's <a
+href="http://partners.adobe.com/asn/developer/acrosdk/docs/PDFRef.pdf"
+class="offsite"><cite>Portable
+Document Format Reference Manual</cite></a>, version 1.2, which states:
+
+<blockquote>
+The first line of a PDF file specifies the version number of the PDF
+specification to which the file adheres.... [T]he first line of a
+1.2-conforming PDF file should be <b><tt>%PDF-1.2</tt></b>.
+</blockquote>
+
+<p>
+However, in an appendix the manual also says that Adobe
+
+<blockquote>
+Acrobat viewers are very liberal in their check for a valid PDF header.
+All viewers allow the header to appear anywhere in the first 1,000 bytes of
+the file.
+</blockquote>
+
+<p>
+Ghostscript doesn't do this: it expects PDF files to conform to the
+standard, because that's how it recognizes them among other formats it
+handles, unlike Acrobat viewers which need deal only with PDF and can
+therefore afford to be more liberal with PDF. So if you encounter a file
+with useless characters before the header and you want to use it with
+Ghostscript, you can fix it by stripping the extra characters from before
+the standard header. The file should begin with exactly the characters
+
+<blockquote><b><tt>
+%PDF
+</tt></b></blockquote>
+
+<p>
+PDF files are binary, not text, so be careful to edit the file as a binary,
+not as text. On Unix, after determining the length of the useless prefix
+string, which you can do with <b><tt>od</tt></b>, you can use
+<b><tt>tail</tt></b> to strip them off. For instance:
+
+<blockquote>
+<b><tt>od -c Macintosh.pdf | more</tt></b> ;# <em>shows that <b><tt>%PDF</tt></b> occurs after 128 characters</em><br>
+<b><tt>tail +128c Macintosh.pdf &gt;Legal.pdf</tt></b>
+</blockquote>
+
+<p>
+On PCs and other systems you can use the <b><tt>hexl</tt></b> program
+distributed with GNU emacs to convert the PDF file to editable text form.
+After editing, <b><tt>hexl</tt></b> can convert the text form back to
+binary.
+
+<hr>
+
+<h2><a name="Platforms"></a>Notes on specific platforms</h2>
+
+<h3><a name="Unix"></a>Unix</h3>
+
+<p>
+The Ghostscript distribution includes some Unix shell scripts to use with
+Ghostscript in different environments. These are all user-contributed
+code, so if you have questions, please contact the user identified in the
+file, not Aladdin Enterprises or artofcode LLC.
+
+<dl>
+<dt><b><tt>pv.sh</tt></b>
+<dd>Preview a specified page of a <b><tt>dvi</tt></b> file in an X window
+</dl>
+
+<dl>
+<dt><b><tt>sysvlp.sh</tt></b>
+<dd>System V 3.2 lp interface for parallel printer
+</dl>
+
+<dl>
+<dt><b><tt>pj-gs.sh</tt></b>
+<dd>Printing on an H-P PaintJet under HP-UX
+</dl>
+
+<dl>
+<dt><b><tt>unix-lpr.sh</tt></b>
+<dd>Queue filter for <b><tt>lpr</tt></b> under Unix;
+<a href="Unix-lpr.htm">its documentation</a> is intended for system
+administrators
+</dl>
+
+<dl>
+<dt><b><tt>lprsetup.sh</tt></b>
+<dd>Setup for <b><tt>unix-lpr.sh</tt></b>
+</dl>
+
+<hr>
+
+<h3><a name="VMS"></a>VMS</h3>
+
+<ul>
+<li>To be able to specify switches and file names when invoking the
+interpreter, define <b><tt>gs</tt></b> as a foreign command:
+
+<blockquote>
+<b><tt>$ gs == "$</tt></b><em>disk</em><b><tt>:[</tt></b><em>directory</em><b><tt>]gs.exe</tt></b>"
+</blockquote>
+
+<p>
+where the "<em>disk</em>" and "<em>directory</em>" specify where
+the Ghostscript executable is located. For instance,
+
+<blockquote><b><tt>
+$ gs == "$dua1:[ghostscript]gs.exe"
+</tt></b></blockquote>
+
+<li>On VMS systems, the last character of each "directory" name indicates
+what sort of entity the "directory" refers to. If the "directory" name
+ends with a colon "<b><tt>:</tt></b>", it is taken to refer to a logical
+device, for instance
+
+<blockquote><b><tt>
+$ define ghostscript_device dua1:[ghostscript_510]<br>
+$ define gs_lib ghostscript_device:
+</tt></b></blockquote>
+
+<p>
+If the "directory" name ends with a closing square bracket
+"<b><tt>]</tt></b>", it is taken to refer to a real directory, for instance
+
+<blockquote><b><tt>
+$ define gs_lib dua1:[ghostscript]
+</tt></b></blockquote>
+
+<li>Defining the logical <b><tt>GS_LIB</tt></b>
+
+<blockquote>
+<b><tt>$ define gs_lib</tt></b> <em>disk</em><b><tt>:[</tt></b><em>directory</em><b><tt>]</tt></b>
+</blockquote>
+
+<p>
+allows Ghostscript to find its initialization files in the Ghostscript
+directory even if that's not where the executable resides.<br>&nbsp;
+
+<li>Although VMS DCL itself converts unquoted parameters to upper case, C
+programs such as Ghostscript receive their parameters through the C runtime
+library, which forces all unquoted command-line parameters to lower case.
+That is, with the command
+
+<blockquote><b><tt>
+$ gs -Isys$login:
+</tt></b></blockquote>
+
+<p>
+Ghostscript sees the switch as <b><tt>-isys$login</tt></b>,
+which doesn't work. To preserve the case of switches, quote them like
+this:
+
+<blockquote><b><tt>
+$ gs "-Isys$login:"
+</tt></b></blockquote>
+
+<li>If you write printer output to a file with
+<b><tt>-sOutputFile=</tt></b> and then want to print the file later, use
+"<b><tt>PRINT/PASSALL</tt></b>".
+</ul>
+
+<ul>
+<li>PDF files (or PostScript files that use the
+<b><tt>setfileposition</tt></b> operator) must be "stream LF" type files to
+work properly on VMS systems. (<b><em>Note:</em></b> This definitely matters
+if Ghostscript was compiled with DEC C; we are not sure of the situation if
+you use <b><tt>gcc</tt></b>.) Because of this, if you transfer files by
+FTP, you probably need to do one of these two things after the transfer:
+
+<ol>
+<li>If the FTP transfer was in text (ASCII) mode:
+
+<blockquote>
+<b><tt>$ convert/fdl=streamlf.fdl</tt></b> input-file output-file
+</blockquote>
+
+<p>
+where the contents of the file <b><tt>STREAMLF.FDL</tt></b> are
+
+<blockquote>
+<pre>FILE
+ ORGANIZATION sequential
+
+RECORD
+ BLOCK_SPAN yes
+ CARRIAGE_CONTROL carriage_return
+ FORMAT stream_lf
+</pre></blockquote>
+
+<li>If the FTP transfer was in binary mode:
+
+<blockquote><b><tt>
+ $ set file/attribute=(rfm:stmlf)
+</tt></b></blockquote>
+</ol>
+</ul>
+
+<h4><a name="VMS_X_Windows"></a>Using X Windows on VMS</h4>
+
+<p>
+If you are using on an X Windows display, you can set it up with the node
+name and network transport, for instance
+
+<blockquote><b><tt>
+ $ set display/create/node="doof.city.com"/transport=tcpip
+</tt></b></blockquote>
+
+<p>
+and then run Ghostscript by typing <b><tt>gs</tt></b> at the command line.
+
+<hr>
+
+<h3><a name="MS_Windows"></a>MS Windows</h3>
+
+<p>
+You must add <em>gs\</em><b><tt>bin</tt></b> and
+<em>gs\</em><b><tt>lib</tt></b> to the <b><tt>PATH</tt></b>, where
+<em>gs</em> is the top-level Ghostscript directory.
+
+<p>
+When passing options to ghostcript through a batch file wrapper such as
+<tt>ps2pdf.bat</tt> you need to substitute '#' for '=' as the separator
+between options and their arguments. For example:
+<blockquote><pre>
+ps2pdf -sPAPERSIZE#a4 file.ps file.pdf
+</pre></blockquote>
+
+Ghostscript treats '#' the same internally, and the '=' is mangled by
+the command shell.
+
+<hr>
+
+<h3><a name="MS-DOS"></a>MS-DOS</h3>
+
+<p>
+<strong>Note:</strong> Ghostscript is no longer supported on MS-DOS. This
+documentation is included for historical interest only.
+
+<p>
+You must add <em>gs\</em><b><tt>bin</tt></b> and
+<em>gs\</em><b><tt>lib</tt></b> to the <b><tt>PATH</tt></b>, where
+<em>gs</em> is the top-level Ghostscript directory.
+
+<ul>
+<li>
+Ghostscript supports many SuperVGA displays directly, most of them with
+more than 16 colors. The complete list is in the file
+<b><tt>devs.mak</tt></b>, part of Ghostscript's
+<a href="#Source_code">source code</a>.
+
+<li>
+Some applications, such as Microsoft Word, require a prologue in front of
+the PostScript files they produce. In the case of MS Word, this prologue
+is one of the *.ini files Microsoft includes with Word. Other applications
+may require other prologues. You may specify a prologue on the Ghostscript
+command line, for instance
+
+<blockquote><b><tt>
+ gs386 prologue.ini myfile.ps
+</tt></b></blockquote>
+
+<li>
+If you have a SuperVGA display that supports a 16-color mode with 800x600
+pixels and you know the display mode number for this mode, you can select
+it by using the command line switches
+
+<blockquote>
+<b><tt>-sDEVICE=svga16 -dDisplayMode=</tt></b><em>NNN</em>
+</blockquote>
+
+<p>
+where <em>NNN</em> is the display mode number in decimal. Here are modes
+for some popular display chipsets; the ones that use the default value are
+marked "*". If your card's chipset doesn't appear on this list, or if you
+try the value here and it doesn't work, please send the name of the chipset
+and its correct display mode to &lt;<a href="mailto:bug-gs@aladdin.com">bug-gs@aladdin.com</a>&gt; to include in
+future releases.
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=6 bgcolor="#CCCC00"><hr><font size="+1">Display modes for PC display chipsets</font><hr>
+<tr> <td>&nbsp;
+ <th>Chipset
+ <td>&nbsp;
+ <th>Decimal
+ <td>&nbsp;
+ <th>Hex
+<tr> <td colspan=6><hr>
+<tr> <td>&nbsp;
+ <td>Acumos AVGA2, AVGA3
+ <td>&nbsp;
+ <td align=center>88
+ <td>&nbsp;
+ <td align=right><tt>0x58</tt>
+<tr> <td>&nbsp;
+ <td>Advance Logic AL2101
+ <td>&nbsp;
+ <td align=center>43
+ <td>&nbsp;
+ <td align=right><tt>0x2B</tt>
+<tr> <td>&nbsp;
+ <td>Ahead V5000
+ <td>&nbsp;
+ <td align=center>113
+ <td>&nbsp;
+ <td align=right><tt>0x71</tt>
+<tr> <td>&nbsp;
+ <td>ATI VGAWONDER, Graphics Ultra etc.
+ <td>&nbsp;
+ <td align=center>84
+ <td>&nbsp;
+ <td align=right><tt>0x54</tt>
+<tr> <td>&nbsp;
+ <td>Chips and Technologies
+ <td>&nbsp;
+ <td align=center>106
+ <td>&nbsp;
+ <td align=right><tt>0x6A</tt>
+<tr> <td>&nbsp;
+ <td>Cirrus Logic CL-GD 500/600
+ <td>&nbsp;
+ <td align=center>100
+ <td>&nbsp;
+ <td align=right><tt>0x64</tt>
+<tr> <td>&nbsp;
+ <td>Cirrus Logic GD 5422
+ <td>&nbsp;
+ <td align=center>88
+ <td>&nbsp;
+ <td align=right><tt>0x58</tt>
+<tr> <td>&nbsp;
+ <td>Compaq VGA
+ <td>&nbsp;
+ <td align=center>89
+ <td>&nbsp;
+ <td align=right><tt>0x59</tt>
+<tr> <td>&nbsp;
+ <td>CTI
+ <td>&nbsp;
+ <td align=center>106
+ <td>&nbsp;
+ <td align=right><tt>0x6A</tt>
+<tr> <td>*
+ <td>Genoa 5xxx, Sigma VGA
+ <td>&nbsp;
+ <td align=center>41
+ <td>&nbsp;
+ <td align=right><tt>0x29</tt>
+<tr> <td>&nbsp;
+ <td>Genoa 6xxx
+ <td>&nbsp;
+ <td align=center>106
+ <td>&nbsp;
+ <td align=right><tt>0x6A</tt>
+<tr> <td>&nbsp;
+ <td>MXIC MX 68010
+ <td>&nbsp;
+ <td align=center>85
+ <td>&nbsp;
+ <td align=right><tt>0x55</tt>
+<tr> <td>&nbsp;
+ <td>NCR 77C22
+ <td>&nbsp;
+ <td align=center>88
+ <td>&nbsp;
+ <td align=right><tt>0x58</tt>
+<tr> <td>&nbsp;
+ <td>OAK Technologies OTI-067, OTI-077, OTI037C
+ <td>&nbsp;
+ <td align=center>82
+ <td>&nbsp;
+ <td align=right><tt>0x52</tt>
+<tr> <td>&nbsp;
+ <td>OAK Technologies OTI037C w/ NEL BIOS
+ <td>&nbsp;
+ <td align=center>91
+ <td>&nbsp;
+ <td align=right><tt>0x5B</tt>
+<tr> <td>*
+ <td>Orchid Prodesigner
+ <td>&nbsp;
+ <td align=center>41
+ <td>&nbsp;
+ <td align=right><tt>0x29</tt>
+<tr> <td>&nbsp;
+ <td>Paradise
+ <td>&nbsp;
+ <td align=center>88
+ <td>&nbsp;
+ <td align=right><tt>0x58</tt>
+<tr> <td>&nbsp;
+ <td>Poach
+ <td>&nbsp;
+ <td align=center>106
+ <td>&nbsp;
+ <td align=right><tt>0x6A</tt>
+<tr> <td>&nbsp;
+ <td>Primus
+ <td>&nbsp;
+ <td align=center>42
+ <td>&nbsp;
+ <td align=right><tt>0x2A</tt>
+<tr> <td>&nbsp;
+ <td>Realtek RT 3106
+ <td>&nbsp;
+ <td align=center>31
+ <td>&nbsp;
+ <td align=right><tt>0x1F</tt>
+<tr> <td>&nbsp;
+ <td>Tecmar
+ <td>&nbsp;
+ <td align=center>22
+ <td>&nbsp;
+ <td align=right><tt>0x16</tt>
+<tr> <td>&nbsp;
+ <td>Trident 8900
+ <td>&nbsp;
+ <td align=center>91
+ <td>&nbsp;
+ <td align=right><tt>0x5B</tt>
+<tr> <td>*
+ <td>Tseng ET-3000, ET-4000
+ <td>&nbsp;
+ <td align=center>41
+ <td>&nbsp;
+ <td align=right><tt>0x29</tt>
+<tr> <td>*
+ <td>VEGA
+ <td>&nbsp;
+ <td align=center>41
+ <td>&nbsp;
+ <td align=right><tt>0x29</tt>
+<tr> <td>&nbsp;
+ <td>Video 7 SVGA
+ <td>&nbsp;
+ <td align=center>98
+ <td>&nbsp;
+ <td align=right><tt>0x62</tt>
+<tr> <td>&nbsp;
+ <td>WD90C11
+ <td>&nbsp;
+ <td align=center>92
+ <td>&nbsp;
+ <td align=right><tt>0x5C</tt>
+<tr> <td>&nbsp;
+ <td>Western Digital
+ <td>&nbsp;
+ <td align=center>88
+ <td>&nbsp;
+ <td align=right><tt>0x58</tt>
+</table></blockquote>
+</ul>
+
+<p>
+Note that when passing arguments to batch files (as above) and also with the
+DOS executable <b><tt>gs386.exe</tt></b> build with the Watcom C/C++ compiler,
+you must use '<b><tt>#</tt></b>' rather than '<b><tt>=</tt></b>' between a
+command line switch and its argument, because of a strange design decision
+in the Wacom run-time library.
+
+
+<hr>
+
+<h3><a name="X_Windows"></a>X Windows</h3>
+
+<p>
+Ghostscript looks for the following resources under the program name
+<b><tt>ghostscript</tt></b> and class name
+<b><tt>Ghostscript</tt></b>; the ones marked "**" are
+calculated from display metrics:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">X Windows resources</font><hr>
+<tr> <th align=left>Name
+ <td>&nbsp;&nbsp;
+ <th align=left>Class
+ <td>&nbsp;&nbsp;
+ <th align=left>Default
+<tr> <td colspan=5><hr>
+<tr> <td><b><tt>background</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Background</tt></b>
+ <td>&nbsp;
+ <td><b><tt>white</tt></b>
+<tr> <td><b><tt>foreground</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Foreground</tt></b>
+ <td>&nbsp;
+ <td><b><tt>black</tt></b>
+<tr> <td><b><tt>borderColor</tt></b>
+ <td>&nbsp;
+ <td><b><tt>BorderColor</tt></b>
+ <td>&nbsp;
+ <td><b><tt>black</tt></b>
+<tr> <td><b><tt>borderWidth</tt></b>
+ <td>&nbsp;
+ <td><b><tt>BorderWidth</tt></b>
+ <td>&nbsp;
+ <td><b><tt>1</tt></b>
+<tr> <td><b><tt>geometry</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Geometry</tt></b>
+ <td>&nbsp;
+ <td><b><tt>NULL</tt></b>
+<tr> <td><b><tt>xResolution</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Resolution</tt></b>
+ <td>&nbsp;
+ <td>**
+<tr> <td><b><tt>yResolution</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Resolution</tt></b>
+ <td>&nbsp;
+ <td>**
+<tr> <td><b><tt>useExternalFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>UseExternalFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>true</tt></b>
+<tr> <td><b><tt>useScalableFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>UseScalableFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>true</tt></b>
+<tr> <td><b><tt>logExternalFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>LogExternalFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>false</tt></b>
+<tr> <td><b><tt>externalFontTolerance</tt></b>
+ <td>&nbsp;
+ <td><b><tt>ExternalFontTolerance</tt></b>
+ <td>&nbsp;
+ <td><b><tt>10.0</tt></b>
+<tr> <td><b><tt>palette</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Palette</tt></b>
+ <td>&nbsp;
+ <td><b><tt>Color</tt></b>
+<tr> <td><b><tt>maxGrayRamp</tt></b>
+ <td>&nbsp;
+ <td><b><tt>MaxGrayRamp</tt></b>
+ <td>&nbsp;
+ <td><b><tt>128</tt></b>
+<tr> <td><b><tt>maxRGBRamp</tt></b>
+ <td>&nbsp;
+ <td><b><tt>MaxRGBRamp</tt></b>
+ <td>&nbsp;
+ <td><b><tt>5</tt></b>
+<tr> <td><b><tt>maxDynamicColors</tt></b>
+ <td>&nbsp;
+ <td><b><tt>MaxDynamicColors</tt></b>
+ <td>&nbsp;
+ <td><b><tt>256</tt></b>
+<tr> <td><b><tt>useBackingPixmap</tt></b>
+ <td>&nbsp;
+ <td><b><tt>UseBackingPixmap</tt></b>
+ <td>&nbsp;
+ <td><b><tt>true</tt></b>
+<tr> <td><b><tt>useXPutImage</tt></b>
+ <td>&nbsp;
+ <td><b><tt>UseXPutImage</tt></b>
+ <td>&nbsp;
+ <td><b><tt>true</tt></b>
+<tr> <td><b><tt>useXSetTile</tt></b>
+ <td>&nbsp;
+ <td><b><tt>UseXSetTile</tt></b>
+ <td>&nbsp;
+ <td><b><tt>true</tt></b>
+<tr> <td><b><tt>regularFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>RegularFonts</tt></b>
+ <td>&nbsp;
+ <td>See "<a href="#X_fonts">X fonts</a>"
+<tr> <td><b><tt>symbolFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>SymbolFonts</tt></b>
+ <td>&nbsp;
+ <td>See "<a href="#X_fonts">X fonts</a>"
+<tr> <td><b><tt>dingbatFonts</tt></b>
+ <td>&nbsp;
+ <td><b><tt>DingbatFonts</tt></b>
+ <td>&nbsp;
+ <td>See "<a href="#X_fonts">X fonts</a>"
+</table></blockquote>
+
+<h4><a name="X_resources"></a>X resources</h4>
+
+<ul>
+<li>
+To set X resources, put them in a file (such as
+<b><tt>~/.Xdefaults</tt></b> on Unix) in a form like this:
+
+<blockquote><table cellpadding=0 cellspacing=0>
+<tr><td><b><tt>Ghostscript*geometry:</tt></b><td><b><tt>&nbsp;&nbsp;</tt></b><td><b><tt>595x842-0+0</tt></b>
+<tr><td><b><tt>Ghostscript*xResolution:</tt></b><td><b><tt>&nbsp;</tt></b><td><b><tt>72</tt></b>
+<tr><td><b><tt>Ghostscript*yResolution:</tt></b><td><b><tt>&nbsp;</tt></b><td><b><tt>72</tt></b>
+</table></blockquote>
+
+<p>
+Then merge these resources into the X server's resource database:
+
+<blockquote><b><tt>
+ xrdb -merge ~/.Xdefaults
+</tt></b></blockquote>
+
+<li>
+Ghostscript doesn't look at the default system background and foreground
+colors; if you want to change the background or foreground color, you must
+set them explicitly for Ghostscript. This is a deliberate choice, so that
+PostScript documents will display correctly by default -- with white as
+white and black as black -- even if text windows use other colors.
+
+<li>
+The <b><tt>geometry</tt></b> resource affects only window placement.
+
+<li>
+Resolution is expressed in pixels per inch (1 inch = 25.4mm).
+
+<li>
+The font tolerance gives the largest acceptable difference in height of the
+screen font, expressed as a percentage of the height of the desired font.
+
+<li>
+The <b><tt>palette</tt></b> resource can be used to restrict Ghostscript to
+using a grayscale or monochrome palette.
+
+<li>
+<b><tt>maxRGBRamp</tt></b> and
+<b><tt>maxGrayRamp</tt></b> control the maximum number of
+colors that ghostscript allocates ahead of time for the dither cube (ramp).
+Ghostscript never preallocates more than half the cells in a colormap.
+<b><tt>maxDynamicColors</tt></b> controls the maximum
+number of colors that Ghostscript will allocate dynamically in the
+colormap.
+</ul>
+
+<h4><a name="X_server_bugs"></a>Working around bugs in X servers</h4>
+
+<p>
+The "<b><tt>use</tt></b>..." resources exist primarily to work around bugs
+in X servers.
+
+<ul>
+<li> Old versions of DEC's X server (DECwindows) have bugs that
+ require setting <b><tt>useXPutImage</tt></b> or
+ <b><tt>useXSetTile</tt></b> to
+ <b><tt>false</tt></b>.
+
+<li> Some servers do not implement backing pixmaps properly, or do not
+ have enough memory for them. If you get strange behavior or "out
+ of memory" messages, try setting
+ <b><tt>useBackingPixmap</tt></b> to
+ <b><tt>false</tt></b>.
+
+<li> Some servers do not implement tiling properly. This appears
+ as broad bands of color where dither patterns should appear. If
+ this happens, try setting
+ <b><tt>useXSetTile</tt></b> to
+ <b><tt>false</tt></b>.
+
+<li> Some servers do not implement bitmap or pixmap displaying properly.
+ This may appear as white or black rectangles where characters
+ should appear; or characters may appear in "inverse video" (for
+ instance, white on a black rectangle rather than black on white).
+ If this happens, try setting
+ <b><tt>useXPutImage</tt></b> to
+ <b><tt>false</tt></b>.
+</ul>
+
+<h4><a name="X_fonts"></a>X fonts</h4>
+
+<p>
+To use native X11 fonts, Ghostscript must map PostScript font names to the
+XLFD font names. The resources <b><tt>regularFonts</tt></b>
+(fonts available in standard or ISO-Latin-1 encoding),
+<b><tt>symbolFonts</tt></b> (using Symbol encoding), and
+<b><tt>dingbatFonts</tt></b> (using Dingbat encoding) give
+the name mapping for different encodings. The XLFD font name in the
+mapping must contain 7 dashes; the X driver adds the additional size and
+encoding fields to bring the total number of dashes in the font name to 14.
+See the appendix "<a href="#X_font_mappings">X default font mappings</a>"
+for the full list of default mappings.
+
+<p>
+Users who switch regularly between different X servers may wish to use the
+"*" wild card in place of the foundry name
+(<b><tt>itc</tt></b>,
+<b><tt>monotype</tt></b>,
+<b><tt>linotype</tt></b>,
+<b><tt>b&amp;h</tt></b>, or
+<b><tt>adobe</tt></b>); users who do not switch X servers
+should leave the explicit foundry in the name, since it speeds up access to
+fonts.
+
+<p>
+Ghostscript takes advantage of the "HP XLFD Enhancements," if available, to
+use native X11 fonts for fonts that are anamorphically scaled, rotated, or
+mirrored. If the changes have been installed to the X or font server, they
+are automatically used when appropriate.
+
+<h4><a name="GS_fonts_as_X_fonts"></a>Using Ghostscript fonts on X displays</h4>
+
+<p>
+Font files distributed with Ghostscript can be used on X Windows displays.
+You can find full instructions in the
+<a href="Fonts.htm#Use_gs_fonts_with_X">documentation on fonts</a>.
+
+<h4><a name="X_device_parameters"></a>X device parameters</h4>
+
+<p>
+In addition to the device parameters recognized by <a
+href="Language.htm#Device_parameters">all devices</a>, Ghostscript's X
+driver provides parameters to adjust its performance. Users will rarely
+need to modify these. Note that these are parameters to be set with the
+<b><tt>-d</tt></b> switch in the command line (e.g.,
+<b><tt>-dMaxBitmap=10000000</tt></b>), not resources to be defined in the
+<b><tt>~/.Xdefaults</tt></b> file.
+
+<dl>
+<dt><b><tt>AlwaysUpdate &lt;boolean&gt;</tt></b>
+<dd>If <b><tt>true</tt></b>, the driver updates the screen after each
+primitive drawing operation; if <b><tt>false</tt></b> (the default), the
+driver uses an intelligent buffered updating algorithm.
+</dl>
+
+<dl>
+<dt><b><tt>MaxBitmap &lt;integer&gt;</tt></b>
+<dd>If the amount of memory required to hold the pixmap for the window is no
+more than the value of <b><tt>MaxBitmap</tt></b>, the driver will draw to a
+pixmap in Ghostscript's address space (called a "client-side pixmap") and
+will copy it to the screen from time to time; if the amount of memory
+required for the pixmap exceeds the value of <b><tt>MaxBitmap</tt></b>, the
+driver will draw to a server pixmap. Using a client-side pixmap usually
+provides better performance -- for bitmap images, possibly much better
+performance -- but since it may require quite a lot of RAM (e.g., about 2.2
+Mb for a 24-bit 1024x768 window), the default value of
+<b><tt>MaxBitmap</tt></b> is 0.
+</dl>
+
+<dl>
+<dt><b><tt>MaxTempPixmap, MaxTempImage, MaxBufferedTotal, MaxBufferedArea,
+MaxBufferedCount &lt;integer&gt;</tt></b>
+<dd>These control various aspects of the driver's buffering behavior. For
+details, please consult the source file <b><tt>gdevx.h</tt></b>.
+</dl>
+
+<hr>
+
+<h3><a name="SCO_Unix"></a>SCO Unix</h3>
+
+<p>
+Because of bugs in the SCO Unix kernel, Ghostscript will not work if you
+select direct screen output and also allow it to write messages on the
+console. If you are using direct screen output, redirect Ghostscript's
+terminal output to a file.
+
+<hr>
+
+<h2><a name="Switches"></a>Switches</h2>
+
+<p>
+Unless otherwise noted, these switches can be used on all platforms.
+
+<h3><a name="General_switches"></a>General switches</h3>
+
+<h4><a name="Input_control"></a>Input control</h4>
+
+<dl>
+<dt><b><tt>@</tt></b><em>filename</em>
+<dd>Causes Ghostscript to read <em>filename</em> and treat its contents the
+same as the command line. (This is intended primarily for getting around
+DOS's 128-character limit on the length of a command line.) Switches or
+file names in the file may be separated by any amount of white space
+(space, tab, line break); there is no limit on the size of the file.
+</dl>
+
+<dl>
+<dt><b><tt>--</tt></b> <em>filename arg1 ...</em>
+<br><b><tt>-+</tt></b> <em>filename arg1 ...</em>
+<dd>Takes the next argument as a file name as usual, but takes all
+remaining arguments (even if they have the syntactic form of switches) and
+defines the name <b><tt>ARGUMENTS</tt></b> in userdict (not systemdict) as
+an array of those strings, <em>before</em> running the file. When
+Ghostscript finishes executing the file, it exits back to the shell.
+</dl>
+
+<dl>
+<dt><b><tt>-@</tt></b> <em>filename arg1 ...</em>
+<dd>Does the same thing as <b><tt>--</tt></b> and <b><tt>-+</tt></b>, but
+expands <b><tt>@</tt></b><em>filename</em> arguments.
+</dl>
+
+<dl>
+<dt><b><tt>-</tt></b>
+<br><b><tt>-_</tt></b>
+<dd>These are not really switches: they tell Ghostscript to read from
+standard input, which is coming from a file or a pipe,
+with or without buffering.
+See <a href="#Pipe_input">"Input from a pipe"</a> above.
+</dl>
+
+<dl>
+<dt><b><tt>-c</tt></b> <em>tokens ...</em>
+<dd>Interprets arguments as PostScript code up to the next argument that
+begins with "<b><tt>-</tt></b>" followed by a non-digit, or with
+"<b><tt>@</tt></b>". For example, if the file <b><tt>quit.ps</tt></b>
+contains just the word "<b><tt>quit</tt></b>", then
+<b><tt>-c&nbsp;quit</tt></b> on the command line is equivalent to
+<b><tt>quit.ps</tt></b> there. Each argument must be exactly one token, as
+defined by the <b><tt>token</tt></b> operator.
+</dl>
+
+<dl>
+<dt><b><tt>-f</tt></b>
+<dd>Interprets following non-switch arguments as file names to be executed
+using the normal <b><tt>run</tt></b> command. Since this is the default
+behavior, <b><tt>-f</tt></b> is useful only for terminating the list of
+tokens for the <b><tt>-c</tt></b> switch.
+</dl>
+
+<dl>
+<dt><b><tt>-f</tt></b><em>filename</em>
+<dd>Execute the given file, even if its name begins with a
+"<b><tt>-</tt></b>" or "<b><tt>@</tt></b>".
+</dl>
+
+<h4><a name="File_searching"></a>File searching</h4>
+
+<p>
+Note that by "library files" here we mean all the files identified using
+the search rule under "<a href="#Finding_files">How Ghostscript finds
+files</a>" above: Ghostscript's own initialization files, fonts, and files
+named on the command line.
+
+<dl>
+<dt><a name="I_switch"></a><b><tt>-I</tt></b><em>directories</em>
+<dd>Adds the designated list of directories at the head of the search path
+for library files.
+</dl>
+
+<dl>
+<dt><a name="P_switch"></a><b><tt>-P</tt></b>
+<dd>Makes Ghostscript look first in the current directory for library
+files. This is currently the default.
+</dl>
+
+<dl>
+<dt><a name="P-_switch"></a><b><tt>-P-</tt></b>
+<dd>Makes Ghostscript <b><em>not</em></b> look first in the current
+directory for library files (unless, of course, the first explicitly
+supplied directory is "<b><tt>.</tt></b>").
+</dl>
+
+<h4><a name="Parameters"></a>Setting parameters</h4>
+
+<dl>
+<dt><b><tt>-D</tt></b><em>name</em>
+<br><b><tt>-d</tt></b><em>name</em>
+<dd>Define a name in systemdict with value=true.
+</dl>
+
+<dl>
+<dt><b><tt>-D</tt></b><em>name</em><b><tt>=</tt></b><em>token</em>
+<br><b><tt>-d</tt></b><em>name</em><b><tt>=</tt></b><em>token</em>
+<dd>Define a name in systemdict with the given definition. The token must
+be exactly one token (as defined by the <b><tt>token</tt></b> operator) and
+must not contain any whitespace. If the token is a non-literal name, it
+must be true, false, or null.
+</dl>
+
+<dl>
+<dt><b><tt>-S</tt></b><em>name</em><b><tt>=</tt></b><em>string</em>
+<br><b><tt>-s</tt></b><em>name</em><b><tt>=</tt></b><em>string</em>
+<dd>Define a name in systemdict with a given string as value. This is
+different from <b><tt>-d</tt></b>. For example, <b><tt>-dXYZ=35</tt></b>
+on the command line is equivalent to the program fragment
+
+<blockquote><b><tt>
+/XYZ 35 def
+</tt></b></blockquote>
+
+<p>
+whereas <b><tt>-sXYZ=35</tt></b> is equivalent to
+
+<blockquote><b><tt>
+/XYZ (35) def
+</tt></b></blockquote>
+</dl>
+
+<dl>
+<dt><b><tt>-u</tt></b><em>name</em>
+<dd>Un-define a name, cancelling <b><tt>-d</tt></b> or <b><tt>-s</tt></b>.
+</dl>
+
+<p>
+Note that the initialization file <b><tt>gs_init.ps</tt></b> makes
+<b><tt>systemdict</tt></b> read-only, so the values of names defined with
+<b><tt>-D</tt></b>, <b><tt>-d</tt></b>, <b><tt>-S</tt></b>, and
+<b><tt>-s</tt></b> cannot be changed -- although, of course, they can be
+superseded by definitions in <b><tt>userdict</tt></b> or other dictionaries.
+However, device parameters set this way (<b><tt>PageSize</tt></b>,
+<b><tt>Margins</tt></b>, etc.) are <em>not</em> read-only, and <em>can</em>
+be changed by code in PostScript files.
+
+<dl>
+<dt><b><tt>-g</tt></b><em>number1</em><b><tt>x</tt></b><em>number2</em>
+<dd>Equivalent to <b><tt>-dDEVICEWIDTH=</tt></b><em>number1</em> and
+<b><tt>-dDEVICEHEIGHT=</tt></b><em>number2</em>, specifying the device
+width and height in pixels for the benefit of devices such as X11 windows
+and VESA displays that require (or allow) you to specify width and height.
+Note that this causes documents of other sizes to be clipped, not scaled:
+see <b><tt>-dFIXEDMEDIA</tt></b> below.
+</dl>
+
+<dl>
+<dt><a name="Resolution_switch"></a><b><tt>-r</tt></b><em>number</em> (same
+as <b><tt>-r</tt></b><em>number</em><b><tt>x</tt></b><em>number</em>)
+<br><b><tt>-r</tt></b><em>number1</em><b><tt>x</tt></b><em>number2</em>
+<dd>Equivalent to <b><tt>-dDEVICEXRESOLUTION=</tt></b><em>number1</em> and
+<b><tt>-dDEVICEYRESOLUTION=</tt></b><em>number2</em>, specifying the device
+horizontal and vertical resolution in pixels per inch for the benefit of
+devices such as printers that support multiple X and Y resolutions.
+</dl>
+
+<h4><a name="Quiet"></a>Suppress messages</h4>
+
+<dl>
+<dt><a name="Quiet"></a><b><tt>-q</tt></b>
+<dd>Quiet startup: suppress normal startup messages, and also do the
+equivalent of <a href="#dQUIET"><b><tt>-dQUIET</tt></b></a>.
+</dl>
+
+<h3><a name="Parameter_switches"></a>Parameter switches (<b><tt>-d</tt></b> and <b><tt>-s</tt></b>)</h3>
+
+<p>
+As noted above, <b><tt>-d</tt></b> and <b><tt>-s</tt></b> define initial
+values for PostScript names. Some of these names are parameters that
+control the interpreter or the graphics engine. You can also use
+<b><tt>-d</tt></b> or <b><tt>-s</tt></b> to define a value for any device
+parameter of the initial device (the one defined with
+<b><tt>-sDEVICE=</tt></b>, or the default device if this switch is not
+used). For example, since the <b><tt>ppmraw</tt></b> device has a numeric
+<b><tt>GrayValues</tt></b> parameter that controls the number of bits per
+component, <b><tt>-sDEVICE=ppmraw -dGrayValues=16</tt></b> will make this
+the default device and set the number of bits per component to 4 (log2(16)).
+
+<h4><a name="Rendering_parameters"></a>Rendering parameters</h4>
+
+<dl>
+<dt><b><tt>-dCOLORSCREEN
+<br>-dCOLORSCREEN=0
+<br>-dCOLORSCREEN=false</tt></b>
+<dd>On high-resolution devices (at least 150 dpi resolution, or
+<b><tt>-dDITHERPPI</tt></b> specified), <b><tt>-dCOLORSCREEN</tt></b>
+forces the use of separate halftone screens with different angles for CMYK
+or RGB if halftones are needed (this produces the best-quality output);
+<b><tt>-dCOLORSCREEN=0</tt></b> uses separate screens with the same
+frequency and angle; <b><tt>-dCOLORSCREEN=false</tt></b> forces the use of
+a single binary screen. The default if <b><tt>COLORSCREEN</tt></b> is not
+specified is to use separate screens with different angles if the device
+has fewer than 5 bits per color, and a single binary screen (which is never
+actually used under normal circumstances) on all other devices.
+</dl>
+
+<dl>
+<dt><b><tt>-dDITHERPPI=</tt></b><em>lpi</em>
+<dd>Forces all devices to be considered high-resolution, and forces use of
+a halftone screen or screens with <em>lpi</em> lines per inch, disregarding
+the actual device resolution. Reasonable values for <em>lpi</em> are
+<b><em>N</em></b>/5 to <b><em>N</em></b>/20, where <b><em>N</em></b> is the
+resolution in dots per inch.
+</dl>
+
+<dl>
+<dt><b><tt>-dDOINTERPOLATE</tt></b>
+<dd>Turns on image interpolation for all images, improving image quality for
+scaled images at the expense of speed. Note that
+<b><tt>-dNOINTERPOLATE</tt></b> overrides <b><tt>-dDOINTERPOLATE</tt></b> if
+both are specified.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOCIE</tt></b>
+<dd>Substitutes <b><tt>DeviceGray</tt></b> and <b><tt>DeviceRGB</tt></b>
+for CIEBasedA and CIEBasedABC color spaces respectively. Useful only on
+very slow systems where color accuracy is less important.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOINTERPOLATE</tt></b>
+<dd>Turns off image interpolation, improving performance on interpolated
+images at the expense of image quality. <b><tt>-dNOINTERPOLATE</tt></b>
+overrides <b><tt>-dDOINTERPOLATE</tt></b>.
+</dl>
+
+<h4><a name="Page_parameters"></a>Page parameters</h4>
+
+<dl>
+<dt><a name="FIXEDMEDIA"></a><b><tt>-dFIXEDMEDIA</tt></b>
+<dd>Causes the media size to be fixed after initialization, forcing pages
+of other sizes or orientations to be clipped. This may be useful when
+printing documents on a printer that can handle their requested paper size
+but whose default is some other size. Note that <b><tt>-g</tt></b>
+automatically sets <b><tt>-dFIXEDMEDIA</tt></b>, but
+<b><tt>-sPAPERSIZE=</tt></b> does not.
+</dl>
+
+<dl>
+<dt><b><tt>-dFIXEDRESOLUTION</tt></b>
+<dd>Causes the media resolution to be fixed similarly. <b><tt>-r</tt></b>
+automatically sets <b><tt>-dFIXEDRESOLUTION</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>-dORIENT1=true
+<br>-dORIENT1=false</tt></b>
+<dd>Defines the meaning of the 0 and 1 orientation values for the
+setpage[params] compatibility operators. The default value of
+<b><tt>ORIENT1</tt></b> is true (set in <b><tt>gs_init.ps</tt></b>), which
+is the correct value for most files that use setpage[params] at all,
+namely, files produced by badly designed applications that "know" that the
+output will be printed on certain roll-media printers: these applications
+use 0 to mean landscape and 1 to mean portrait.
+<b><tt>-dORIENT1=false</tt></b> declares that 0 means portrait and 1 means
+landscape, which is the convention used by a smaller number of files
+produced by properly written applications.
+</dl>
+
+<dl>
+<dt><b><tt>-dDEVICEWIDTHPOINTS=</tt></b><em>w</em>
+<br><b><tt>-dDEVICEHEIGHTPOINTS=</tt></b><em>h</em>
+<dd>Sets the initial page width to <em>w</em> or initial page height to
+<em>h</em> respectively, specified in 1/72" units.
+</dl>
+
+<h4><a name="Font_related_parameters"></a>Font-related parameters</h4>
+
+<dl>
+<dt><a name="DISKFONTS"></a><b><tt>-dDISKFONTS</tt></b>
+<dd>Causes individual character outlines to be loaded from the disk the
+first time they are encountered. (Normally Ghostscript loads all the
+character outlines when it loads a font.) This may allow loading more
+fonts into memory at the expense of slower rendering.
+<b><tt>DISKFONTS</tt></b> is effective only if the diskfont feature was
+built into the executable; otherwise it is ignored.
+</dl>
+
+<dl>
+<dt><b><tt>-dLOCALFONTS</tt></b>
+<dd>Causes Type 1 fonts to be loaded into the current VM -- normally local
+VM -- instead of always being loaded into global VM. Useful only for
+compatibility with Adobe printers for loading some obsolete fonts.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOCCFONTS</tt></b>
+<dd>Suppresses the use of fonts precompiled into the Ghostscript executable.
+See <a href="Fonts.htm#Precompiling">"Precompiling fonts"</a> in the
+documentation on fonts for details. This is probably useful only for
+debugging.
+</dl>
+
+<dl>
+<dt><a name="FONTMAP_switch"></a><b><tt>-dNOFONTMAP</tt></b>
+<dd>Suppresses the normal loading of the Fontmap file. This may be useful
+in environments without a file system.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOFONTPATH</tt></b>
+<dd>Suppresses consultation of <b><tt>GS_FONTPATH</tt></b>. This may be
+useful for debugging.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOPLATFONTS</tt></b>
+<dd>Disables the use of fonts supplied by the underlying platform (X
+Windows or Microsoft Windows). This may be needed if the platform fonts
+look undesirably different from the scalable fonts.
+</dl>
+
+<dl>
+<dt><b><tt>-sFONTMAP=</tt></b><em>filename1</em><b><tt>;</tt></b><em>filename2</em><b><tt>;</tt></b><em>...</em>
+<dd>Specifies alternate name or names for the Fontmap file. Note that the
+names are separated by "<b><tt>:</tt></b>" on Unix systems, by
+"<b><tt>;</tt></b>" on DOS or MS Windows systems, and by
+"<b><tt>,</tt></b>" on VMS systems, just as for search paths.
+</dl>
+
+<dl>
+<dt><b><tt>-sFONTPATH=</tt></b><em>dir1</em><b><tt>;</tt></b><em>dir2</em><b><tt>;</tt></b><em>...</em>
+<dd>Specifies a list of directories that will be scanned when looking for
+fonts not found on the search path, overriding the environment variable
+<b><tt>GS_FONTPATH</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>-sSUBSTFONT=</tt></b><em>fontname</em>
+<dd>Causes the given font to be substituted for all unknown fonts, instead
+of using the normal intelligent substitution algorithm. Also, in this
+case, the font returned by <b><tt>findfont</tt></b> is the actual font
+named "<em>fontname</em>", not a copy of the font with the
+<b><tt>FontName</tt></b> changed to the requested one.
+</dl>
+
+<h4><a name="Interaction_related_parameters"></a>Interaction-related parameters</h4>
+
+<dl>
+<dt><b><tt>-dBATCH</tt></b>
+<dd>Causes Ghostscript to exit after processing all files named on the
+command line, rather than going into an interactive loop reading PostScript
+commands. Equivalent to putting -c quit at the end of the command line.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOPAGEPROMPT</tt></b>
+<dd>Disables only the prompt, but not the pause, at the end of each page.
+This may be useful on PC displays that get confused if a program attempts
+to write text to the console while the display is in a graphics mode.
+</dl>
+
+<dl>
+<dt><a name="NoPause"></a><b><tt>-dNOPAUSE</tt></b>
+<dd>Disables the prompt and pause at the end of each page. Normally one
+should use this (along with <b><tt>-dBATCH</tt></b>) when producing output
+on a printer or to a file; it also may be desirable for applications where
+another program is "driving" Ghostscript.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOPROMPT</tt></b>
+<dd>Disables the prompt printed by Ghostscript when it expects interactive
+input, as well as the end-of-page prompt (<b><tt>-dNOPAGEPROMPT</tt></b>);
+also disables the implicit <b><tt>flushpage</tt></b> that normally occurs
+each time Ghostscript asks for more input. This allows piping input
+directly into Ghostscript, as long as the data doesn't refer to
+<b><tt>currentfile</tt></b>.
+</dl>
+
+<dl>
+<dt><a name="dQUIET"></a><b><tt>-dQUIET</tt></b>
+<dd>Suppresses routine information comments on standard output. This is
+currently necessary when redirecting device output to standard output.
+</dl>
+
+<dl>
+<dt><b><tt>-dSHORTERRORS</tt></b>
+<dd>Makes certain error and information messages more Adobe-compatible.
+</dl>
+
+<dl>
+<dt><b><tt>-sstdout=</tt></b><em>filename</em>
+<dd>Redirect PostScript <b><tt>%stdout</tt></b> to a file or
+<b><tt>stderr</tt></b>, to avoid it being mixed with device stdout.
+To redirect stdout to stderr use <b><tt>-sstdout=%stderr</tt></b>.
+To cancel redirection of stdout use <b><tt>-sstdout=%stdout</tt></b>
+or <b><tt>-sstdout=-</tt></b>.
+</dl>
+
+<dl>
+<dt><b><tt>-dTTYPAUSE</tt></b>
+<dd>Causes Ghostscript to read a character from <b><tt>/dev/tty</tt></b>,
+rather than standard input, at the end of each page. This may be useful if
+input is coming from a pipe. Note that <b><tt>-dTTYPAUSE</tt></b>
+overrides <b><tt>-dNOPAUSE</tt></b>.
+</dl>
+
+<h4><a name="Output_selection_parameters"></a>Device and output selection parameters</h4>
+
+<dl>
+<dt><b><tt>-dNODISPLAY</tt></b>
+<dd>Initializes Ghostscript with a null device (a device that discards the
+output image) rather than the default device or the device selected with
+<b><tt>-sDEVICE=</tt></b>. This is usually useful only when running
+PostScript code whose purpose is to compute something rather than to
+produce an output image; for instance, when converting PostScript to PDF.
+</dl>
+
+<dl>
+<dt><a name="DEVICE_switch"></a><b><tt>-sDEVICE=</tt></b><em>device</em>
+<dd>Selects an alternate <a href="#Output_device">initial output
+device</a>.
+</dl>
+
+<dl>
+<dt><b><tt>-sOutputFile=</tt></b><em>filename</em>
+<dd>Selects an alternate output file (or pipe) for the initial output
+device, as described above.
+</dl>
+
+<h4><a name="Other_parameters"></a>Other parameters</h4>
+
+<dl>
+<dt><b><tt>-dDELAYBIND</tt></b>
+<dd>Causes <b><tt>bind</tt></b> to remember all its invocations, but not
+actually execute them until the <b><tt>.bindnow</tt></b> procedure is
+called. Useful only for certain specialized packages like
+<b><tt>pstotext</tt></b> that redefine operators.
+</dl>
+
+<dl>
+<dt><b><tt>-dDOPDFMARKS</tt></b>
+<dd>Causes <b><tt>pdfmark</tt></b> to be called for bookmarks,
+annotations, links and cropbox when processing PDF files.
+Normally, <b><tt>pdfmark</tt></b> is only called for these types
+for PostScript files or when the output device requests it
+(e.g. pdfwrite device).
+</dl>
+
+<dl>
+<dt><b><tt>-dNOBIND</tt></b>
+<dd>Disables the <b><tt>bind</tt></b> operator. Useful only for debugging.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOCACHE</tt></b>
+<dd>Disables character caching. Useful only for debugging.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOGC</tt></b>
+<dd>Suppresses the initial automatic enabling of the garbage collector in
+Level 2 systems. (The <b><tt>vmreclaim</tt></b> operator is not disabled.)
+Useful only for debugging.
+</dl>
+
+<dl>
+<dt><b><tt>-dNOSAFER</tt></b> (equivalent to <b><tt>-dDELAYSAFER</tt></b>).
+<dd>This flag disables SAFER mode until the <b><tt>.setsafe</tt></b>
+procedure is run. This is intended for clients or scripts that cannot
+operate in SAFER mode. If Ghostscript is started with <b><tt>-dNOSAFER</tt></b>
+or <b><tt>-dDELAYSAFER</tt></b>, PostScript programs are allowed to read, write,
+rename or delete any files in the system that are not protected by operating
+system permissions.
+<p><b>This mode should be used with caution, and <tt>.setsafe</tt> should be
+run prior to running any PostScript file with unknown contents.</b>
+</dl>
+
+<a name="Safer"></a>
+<dl>
+<dt><b><tt>-dSAFER</tt></b>
+<dd>Disables the <b><tt>deletefile</tt></b> and <b><tt>renamefile</tt></b>
+operators, and the ability to open piped commands (<b><tt>%pipe%</tt></b><em>cmd</em>)
+at all. Only <b><tt>%stdout</tt></b> and <b><tt>%stderr</tt></b> can be opened
+for writing.
+<p>
+This mode also sets the <a href="Language.htm#LockSafetyParams">.LockSafetyParams</a>
+parameter of the default device, or the device specified with the <b><tt>-sDEVICE= </tt></b>
+switch to protect against programs that attempt to write to files using the
+OutputFile device parameter. Note that since the device parameters specified
+on the command line (including OutputFile) are set prior to SAFER mode,
+the <b><tt>-sOutputFile=...</tt></b> on the command line is unrestricted.
+<p>
+<b><tt>SAFER</tt></b> mode also prevents changing the /GenericResourceDir,
+/FontResourceDir and either the /SystemParamsPassword or the /StartJobPassword.
+<p>
+<b>Note: </b>While SAFER mode is not the default, in a subsequent release of
+Ghostscript, SAFER mode will be the default thus scripts or programs that need
+to open files or set restricted parameters will require the <b><tt>-dNOSAFER</tt></b>
+command line option.
+<p>
+When running -dNOSAFER it is possible to perform a <b><tt>save</tt></b>,
+followed by <b><tt>.setsafe</tt></b>, execute a file or procedure in SAFER mode,
+then use <b><tt>restore</tt></b> to return to NOSAFER mode. In order to prevent
+the save object from being restored by the foreign file or procedure, the
+<a href="Language.htm#Runandhide"><b>.runandhide</b></a> operator should
+be used to hide the save object from the restricted procedure.
+</dl>
+
+<dl>
+<dt><b><tt>-dPARANOIDSAFER</tt></b>
+<dd>Disables reading of files other than <b><tt>%stdin</tt></b>, those given as
+a command line argument, or those contained on one of the paths given by
+LIBPATH and FONTPATH and specified by the system params /FontResourceDir
+and /GenericResourceDir.
+<p>
+<b><tt>-dPARANOIDSAFER</tt></b> implies <b><tt>-dSAFER</tt></b> so if
+<b><tt>-dPARANOIDSAFER</tt></b> is given on the command line,
+<b><tt>-dSAFER</tt></b> is optional.
+</dl>
+
+<dl>
+<dt><b><tt>-dSTRICT</tt></b>
+<dd>Disables as many Ghostscript extensions as feasible, to be more helpful
+in debugging applications that produce output for Adobe and other RIPs.
+</dl>
+
+<dl>
+<dt><b><tt>-dWRITESYSTEMDICT</tt></b>
+<dd>Leaves <b><tt>systemdict</tt></b> writable. This is necessary when
+running special utility programs such as <b><tt>font2c</tt></b> and
+<b><tt>pcharstr</tt></b>, which must bypass normal PostScript access
+protection.
+</dl>
+
+<hr>
+
+<h2><a name="Improving_performance"></a>Improving performance</h2>
+
+<p>
+Ghostscript attempts to find an optimum balance between speed and memory
+consumption, but there are some cases in which you may get a very large
+speedup by telling Ghostscript to use more memory.
+
+<ul>
+
+<li>
+If you are using X Windows, setting the <b><tt>-dMaxBitmap=</tt></b>
+parameter described <a href="#X_device_parameters">above</a> may
+dramatically improve performance on files that have a lot of bitmap images.
+
+<li>
+If you are using Chinese, Japanese, or other fonts with very large character
+sets, adding the following sequence of switches before the first file name
+may dramatically improve performance at the cost of an additional 2-3 Mb of
+memory: <b><tt>-c&nbsp;3000000&nbsp;setvmthreshold&nbsp;-f</tt></b>.
+
+</ul>
+
+<hr>
+
+<h2><a name="Debugging"></a>Debugging</h2>
+
+<p>
+The information here describing the debugging switches is probably
+interesting only to developers. The <b><tt>-Z</tt></b> switch applies only
+if the interpreter was <a href="Make.htm#Debugging">built for a debugging
+configuration</a>. In the table below, the first column is a debugging
+switch, the second is an equivalent switch (if any) and the third is its
+usage.
+
+<table cellpadding=0 cellspacing=0>
+<tr><th colspan=5 bgcolor="#CCCC00"><hr><font size="+1">Switches used in debugging</font><hr>
+<tr> <th align=left>Switch
+ <td>&nbsp;&nbsp;
+ <th align=left>Equivalent
+ <td>&nbsp;&nbsp;
+ <th>&nbsp;
+<tr> <td colspan=5><hr>
+<tr> <td valign=top><b><tt>-A</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>-Z@</tt></b>
+ <td>&nbsp;
+ <td>Fill empty storage with a distinctive bit pattern for debugging
+
+<tr> <td valign=top><b><tt>-A-</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>-Z-@</tt></b>
+ <td>&nbsp;
+ <td>Turn off <b><tt>-A</tt></b>
+<tr> <td valign=top><b><tt>-B</tt></b><em>size</em>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Run all subsequent files named on the command line (except for
+ <b><tt>-F</tt></b>) through the run_string interface, using a
+ buffer of <em>size</em> bytes
+<tr> <td valign=top><b><tt>-B-</tt></b>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Turn off <b><tt>-B</tt></b>: run subsequent files (except for
+ <b><tt>-F</tt></b>) directly in the normal way
+<tr> <td valign=top><b><tt>-E</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>-Z#</tt></b>
+ <td>&nbsp;
+ <td>Turn on tracing of error returns from operators
+<tr> <td valign=top><b><tt>-E-</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>-Z-#</tt></b>
+ <td>&nbsp;
+ <td>Turn off <b><tt>-E</tt></b>
+<tr> <td valign=top><b><tt>-F</tt></b><em>file</em>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Execute the file with <b><tt>-B1</tt></b> temporarily in effect
+<tr> <td valign=top><b><tt>-K</tt></b><em>n</em>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Limit the total amount of memory that the interpreter can have
+ allocated at any one time to <b><em>n</em></b>K bytes.
+ <b><em>n</em></b> is a positive decimal integer.
+<tr> <td valign=top><b><tt>-M</tt></b><em>n</em>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Force the interpreter's allocator to acquire additional memory
+ in units of <b><em>n</em></b>K bytes, rather than the default
+ (currently 20K on DOS systems, 50K on Unix). <b><em>n</em></b>
+ is a positive decimal integer, on DOS systems no greater than
+ 63.
+<tr> <td valign=top><b><tt>-N</tt></b><em>n</em>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Allocate space for <b><em>n</em></b>K names, rather than the
+ default (normally 64K). <b><em>n</em></b> may be greater than
+ 64 only if <b><tt>EXTEND_NAMES</tt></b> was defined when the
+ interpreter was compiled .
+<tr> <td valign=top><b><tt>-Z</tt></b><em>xxx</em><br><b><tt>-Z-</tt></b><em>xxx</em>
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>Turn debugging printout on (off). Each of the <em>xxx</em>
+ characters selects an option. Case is significant: "a" and
+ "A" have different meanings.
+
+<dl compact>
+<dt><b><tt>0</tt></b><dd>garbage collector, minimal detail
+<dt><b><tt>1</tt></b><dd>type 1 and type 42 font interpreter
+<dt><b><tt>2</tt></b><dd>curve subdivider/rasterizer
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>3</tt></b><dd>curve subdivider/rasterizer, detail
+<dt><b><tt>4</tt></b><dd>garbage collector (strings)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>5</tt></b><dd>garbage collector (strings, detail)
+<dt><b><tt>6</tt></b><dd>garbage collector (chunks, roots)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>7</tt></b><dd>garbage collector (objects)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>8</tt></b><dd>garbage collector (refs)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>9</tt></b><dd>garbage collector (pointers)
+<dt><b><tt>a</tt></b><dd>allocator (large blocks only)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>A</tt></b><dd>allocator (all calls)
+<dt><b><tt>b</tt></b><dd>bitmap image processor
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>B</tt></b><dd>bitmap images, detail
+<dt><b><tt>c</tt></b><dd>color/halftone mapper
+<dt><b><tt>d</tt></b><dd>dictionary put/undef
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>D</tt></b><dd>dictionary lookups
+<dt><b><tt>e</tt></b><dd>external (OS-related) calls
+<dt><b><tt>f</tt></b><dd>fill algorithm (summary)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>F</tt></b><dd>fill algorithm (detail)
+<dt><b><tt>g</tt></b><dd>gsave/grestore[all]
+<dt><b><tt>h</tt></b><dd>halftone renderer
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>H</tt></b><dd>halftones, every pixel
+<dt><b><tt>i</tt></b><dd>interpreter, just names
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>I</tt></b><dd>interpreter, everything
+<dt><b><tt>j</tt></b><dd>(Japanese) composite fonts
+<dt><b><tt>k</tt></b><dd>character cache and xfonts
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>K</tt></b><dd>character cache, every access
+<dt><b><tt>l</tt></b><dd>command lists, bands
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>L</tt></b><dd>command lists, everything
+<dt><b><tt>m</tt></b><dd>makefont and font cache
+<dt><b><tt>n</tt></b><dd>name lookup (new names only)
+<dt><b><tt>o</tt></b><dd>outliner (stroke)
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>O</tt></b><dd>stroke detail
+<dt><b><tt>p</tt></b><dd>band list paths
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>P</tt></b><dd>all paths
+<dt><b><tt>q</tt></b><dd>clipping
+<dt><b><tt>r</tt></b><dd>arc renderer
+<dt><b><tt>s</tt></b><dd>streams
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>S</tt></b><dd>scanner
+<dt><b><tt>t</tt></b><dd>tiling algorithm
+<dt><b><tt>u</tt></b><dd>undo saver (for save/restore), finalization
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>U</tt></b><dd>undo saver, more detail
+<dt><b><tt>v</tt></b><dd>alpha/transparency
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>V</tt></b><dd>alpha/transparency, more detail
+<dt><b><tt>w</tt></b><dd>compression encoder/decoder
+<dt><b><tt>x</tt></b><dd>transformations
+<dt><b><tt>y</tt></b><dd>Type 1 hints
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>Y</tt></b><dd>Type 1 hints, every access
+<dt><b><tt>z</tt></b><dd>trapezoid fill
+<dt><b><tt>#</tt></b><dd>operator error returns
+<dt><b><tt>%</tt></b><dd>externally processed comments
+<dt><b><tt>*</tt></b><dd>image and RasterOp parameters
+<dt><b><tt>:</tt></b><dd>command list and allocator/time summary
+<dt><b><tt>~</tt></b><dd>math functions and Functions
+<dt><b><tt>'</tt></b><dd>contexts, create/destroy
+<dt>&nbsp;&nbsp;&nbsp;<b><tt>"</tt></b><dd>contexts, every operation
+<dt><b><tt>^</tt></b><dd>reference counting
+<dt><b><tt>_</tt></b><dd>high-level output
+<dt><b><tt>|</tt></b><dd>(reserved for experimental code)
+</dl>
+
+<p>
+The following switch affects what is printed, but does not select specific
+items for printing:
+
+<dl compact>
+<dt><b><tt>/</tt></b><dd>include file name and line number on all trace output
+</dl>
+
+<p>
+These switches select debugging options other than what should be printed:
+
+<dl compact>
+<dt><b><tt>$</tt></b><dd>set unused parts of object references to
+identifiable garbage values
+<dt><b><tt>+</tt></b><dd>use minimum-size stack blocks
+<dt><b><tt>,</tt></b><dd>don't use path-based banding
+<dt><b><tt>`</tt></b><dd>don't use high-level banded images
+<dt><b><tt>.</tt></b><dd>use small-memory table sizes even on large-memory
+machines
+<dt><b><tt>?</tt></b><dd>validate pointers before, during and after garbage
+collection, also before and after save and restore; also make other
+allocator validity checks
+<dt><b><tt>@</tt></b><dd>fill newly allocated, garbage-collected, and freed
+storage with a marker (a1, c1, and f1 respectively)
+</dl>
+</table>
+
+<hr>
+
+<h2><a name="Known_paper_sizes"></a>Appendix: Paper sizes known to Ghostscript</h2>
+
+<p>
+The paper sizes known to Ghostscript are defined at the beginning of the
+initialization file <b><tt>gs_statd.ps</tt></b>; see the comments there for
+more details about the definitions. The table here lists them by name and
+size. <b><tt>gs_statd.ps</tt></b> defines their sizes exactly in points,
+and the dimensions in inches (at 72 points per inch) and centimeters shown
+in the table are derived from those, rounded to the nearest 0.1 unit. A
+guide to international paper sizes can be found at
+
+<blockquote>
+<a href="http://www.twics.com/~eds/paper/index.html">http://www.twics.com/~eds/paper/</a>
+</blockquote>
+
+<table cellpadding=0 cellspacing=0>
+<tr><th colspan=13 bgcolor="#CCCC00"><hr><font size="+1">Paper sizes known to Ghostscript</font><hr>
+<tr><th colspan=13>U.S. standard
+<tr> <td>&nbsp;
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <th colspan=3>Inches
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <th colspan=3>mm
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <th colspan=3>Points
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <td>&nbsp;
+<tr> <th align=left>Name
+ <td>&nbsp;
+ <th>&nbsp;W&nbsp;
+ <td>&times;
+ <th>&nbsp;H&nbsp;
+ <td>&nbsp;
+ <th>&nbsp;W&nbsp;
+ <td>&times;
+ <th>&nbsp;H&nbsp;
+ <td>&nbsp;
+ <th>&nbsp;W&nbsp;
+ <td>&times;
+ <th>&nbsp;H&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+<tr> <td colspan=13><hr>
+<tr> <td>11x17
+ <td>&nbsp;&nbsp;<td align=right>11.0<td>&nbsp;&nbsp;<td align=right>17.0<td>&nbsp;&nbsp;<td align=right>279<td>&nbsp;&nbsp;<td align=right>432<td>&nbsp;&nbsp;<td align=right>792<td>&nbsp;&nbsp;<td align=right>1224<td>&nbsp;&nbsp;<td>11&times;17in portrait
+<tr> <td>ledger
+ <td>&nbsp;<td align=right>17.0<td>&nbsp;<td align=right>11.0<td>&nbsp;<td align=right>432<td>&nbsp;<td align=right>279<td>&nbsp;<td align=right>1224<td>&nbsp;<td align=right>792<td>&nbsp;<td>11&times;17in landscape
+<tr> <td>legal
+ <td>&nbsp;<td align=right>8.5<td>&nbsp;<td align=right>14.0<td>&nbsp;<td align=right>216<td>&nbsp;<td align=right>356<td>&nbsp;<td align=right>612<td>&nbsp;<td align=right>1008<td>&nbsp;<td>&nbsp;
+<tr> <td>letter
+ <td>&nbsp;<td align=right>8.5<td>&nbsp;<td align=right>11.0<td>&nbsp;<td align=right>216<td>&nbsp;<td align=right>279<td>&nbsp;<td align=right>612<td>&nbsp;<td align=right>792<td>&nbsp;<td>&nbsp;
+<tr> <td>lettersmall
+ <td>&nbsp;<td align=right>8.5<td>&nbsp;<td align=right>11.0<td>&nbsp;<td align=right>216<td>&nbsp;<td align=right>279<td>&nbsp;<td align=right>612<td>&nbsp;<td align=right>792<td>&nbsp;<td>&nbsp;
+<tr> <td>archE
+ <td>&nbsp;<td align=right>36.0<td>&nbsp;<td align=right>48.0<td>&nbsp;<td align=right>914<td>&nbsp;<td align=right>1219<td>&nbsp;<td align=right>2592<td>&nbsp;<td align=right>3456<td>&nbsp;<td>&nbsp;
+<tr> <td>archD
+ <td>&nbsp;<td align=right>24.0<td>&nbsp;<td align=right>36.0<td>&nbsp;<td align=right>610<td>&nbsp;<td align=right>914<td>&nbsp;<td align=right>1728<td>&nbsp;<td align=right>2592<td>&nbsp;<td>&nbsp;
+<tr> <td>archC
+ <td>&nbsp;<td align=right>18.0<td>&nbsp;<td align=right>24.0<td>&nbsp;<td align=right>457<td>&nbsp;<td align=right>610<td>&nbsp;<td align=right>1296<td>&nbsp;<td align=right>1728<td>&nbsp;<td>&nbsp;
+<tr> <td>archB
+ <td>&nbsp;<td align=right>12.0<td>&nbsp;<td align=right>18.0<td>&nbsp;<td align=right>305<td>&nbsp;<td align=right>457<td>&nbsp;<td align=right>864<td>&nbsp;<td align=right>1296<td>&nbsp;<td>&nbsp;
+<tr> <td>archA
+ <td>&nbsp;<td align=right>9.0<td>&nbsp;<td align=right>12.0<td>&nbsp;<td align=right>229<td>&nbsp;<td align=right>305<td>&nbsp;<td align=right>648<td>&nbsp;<td align=right>864<td>&nbsp;<td>&nbsp;
+<tr> <td colspan=13><hr>
+<tr><th colspan=13>ISO standard
+<tr> <td colspan=13><hr>
+<tr> <td>a0
+ <td>&nbsp;<td align=right>33.1<td>&nbsp;<td align=right>46.8<td>&nbsp;<td align=right>841<td>&nbsp;<td align=right>1189<td>&nbsp;<td align=right>2384<td>&nbsp;<td align=right>3370<td>&nbsp;<td>&nbsp;
+<tr> <td>a1
+ <td>&nbsp;<td align=right>23.4<td>&nbsp;<td align=right>33.1<td>&nbsp;<td align=right>594<td>&nbsp;<td align=right>841<td>&nbsp;<td align=right>1684<td>&nbsp;<td align=right>2384<td>&nbsp;<td>&nbsp;
+<tr> <td>a2
+ <td>&nbsp;<td align=right>16.5<td>&nbsp;<td align=right>23.4<td>&nbsp;<td align=right>420<td>&nbsp;<td align=right>594<td>&nbsp;<td align=right>1191<td>&nbsp;<td align=right>1684<td>&nbsp;<td>&nbsp;
+<tr> <td>a3
+ <td>&nbsp;<td align=right>11.7<td>&nbsp;<td align=right>16.5<td>&nbsp;<td align=right>297<td>&nbsp;<td align=right>420<td>&nbsp;<td align=right>842<td>&nbsp;<td align=right>1191<td>&nbsp;<td>&nbsp;
+<tr> <td>a4
+ <td>&nbsp;<td align=right>8.3<td>&nbsp;<td align=right>11.7<td>&nbsp;<td align=right>210<td>&nbsp;<td align=right>297<td>&nbsp;<td align=right>595<td>&nbsp;<td align=right>842<td>&nbsp;<td>&nbsp;
+<tr> <td>a4small
+ <td>&nbsp;<td align=right>8.3<td>&nbsp;<td align=right>11.7<td>&nbsp;<td align=right>210<td>&nbsp;<td align=right>297<td>&nbsp;<td align=right>595<td>&nbsp;<td align=right>842<td>&nbsp;<td>&nbsp;
+<tr> <td>a5
+ <td>&nbsp;<td align=right>5.8<td>&nbsp;<td align=right>8.3<td>&nbsp;<td align=right>148<td>&nbsp;<td align=right>210<td>&nbsp;<td align=right>420<td>&nbsp;<td align=right>595<td>&nbsp;<td>&nbsp;
+<tr> <td>a6
+ <td>&nbsp;<td align=right>4.1<td>&nbsp;<td align=right>5.8<td>&nbsp;<td align=right>105<td>&nbsp;<td align=right>148<td>&nbsp;<td align=right>297<td>&nbsp;<td align=right>420<td>&nbsp;<td>&nbsp;
+<tr> <td>a7
+ <td>&nbsp;<td align=right>2.9<td>&nbsp;<td align=right>4.1<td>&nbsp;<td align=right>74<td>&nbsp;<td align=right>105<td>&nbsp;<td align=right>210<td>&nbsp;<td align=right>297<td>&nbsp;<td>&nbsp;
+<tr> <td>a8
+ <td>&nbsp;<td align=right>2.1<td>&nbsp;<td align=right>2.9<td>&nbsp;<td align=right>52<td>&nbsp;<td align=right>74<td>&nbsp;<td align=right>148<td>&nbsp;<td align=right>210<td>&nbsp;<td>&nbsp;
+<tr> <td>a9
+ <td>&nbsp;<td align=right>1.5<td>&nbsp;<td align=right>2.1<td>&nbsp;<td align=right>37<td>&nbsp;<td align=right>52<td>&nbsp;<td align=right>105<td>&nbsp;<td align=right>148<td>&nbsp;<td>&nbsp;
+<tr> <td>a10
+ <td>&nbsp;<td align=right>1.0<td>&nbsp;<td align=right>1.5<td>&nbsp;<td align=right>26<td>&nbsp;<td align=right>37<td>&nbsp;<td align=right>73<td>&nbsp;<td align=right>105<td>&nbsp;<td>&nbsp;
+<tr> <td>isob0
+ <td>&nbsp;<td align=right>39.4<td>&nbsp;<td align=right>55.7<td>&nbsp;<td align=right>1000<td>&nbsp;<td align=right>1414<td>&nbsp;<td align=right>2835<td>&nbsp;<td align=right>4008<td>&nbsp;<td>&nbsp;
+<tr> <td>isob1
+ <td>&nbsp;<td align=right>27.8<td>&nbsp;<td align=right>39.4<td>&nbsp;<td align=right>707<td>&nbsp;<td align=right>1000<td>&nbsp;<td align=right>2004<td>&nbsp;<td align=right>2835<td>&nbsp;<td>&nbsp;
+<tr> <td>isob2
+ <td>&nbsp;<td align=right>19.7<td>&nbsp;<td align=right>27.8<td>&nbsp;<td align=right>500<td>&nbsp;<td align=right>707<td>&nbsp;<td align=right>1417<td>&nbsp;<td align=right>2004<td>&nbsp;<td>&nbsp;
+<tr> <td>isob3
+ <td>&nbsp;<td align=right>13.9<td>&nbsp;<td align=right>19.7<td>&nbsp;<td align=right>353<td>&nbsp;<td align=right>500<td>&nbsp;<td align=right>1001<td>&nbsp;<td align=right>1417<td>&nbsp;<td>&nbsp;
+<tr> <td>isob4
+ <td>&nbsp;<td align=right>9.8<td>&nbsp;<td align=right>13.9<td>&nbsp;<td align=right>250<td>&nbsp;<td align=right>353<td>&nbsp;<td align=right>709<td>&nbsp;<td align=right>1001<td>&nbsp;<td>&nbsp;
+<tr> <td>isob5
+ <td>&nbsp;<td align=right>6.9<td>&nbsp;<td align=right>9.8<td>&nbsp;<td align=right>176<td>&nbsp;<td align=right>250<td>&nbsp;<td align=right>499<td>&nbsp;<td align=right>709<td>&nbsp;<td>&nbsp;
+<tr> <td>isob6
+ <td>&nbsp;<td align=right>4.9<td>&nbsp;<td align=right>6.9<td>&nbsp;<td align=right>125<td>&nbsp;<td align=right>176<td>&nbsp;<td align=right>354<td>&nbsp;<td align=right>499<td>&nbsp;<td>&nbsp;
+<tr> <td>c0
+ <td>&nbsp;<td align=right>36.1<td>&nbsp;<td align=right>51.1<td>&nbsp;<td align=right>917<td>&nbsp;<td align=right>1297<td>&nbsp;<td align=right>2599<td>&nbsp;<td align=right>3677<td>&nbsp;<td>&nbsp;
+<tr> <td>c1
+ <td>&nbsp;<td align=right>25.5<td>&nbsp;<td align=right>36.1<td>&nbsp;<td align=right>648<td>&nbsp;<td align=right>917<td>&nbsp;<td align=right>1837<td>&nbsp;<td align=right>2599<td>&nbsp;<td>&nbsp;
+<tr> <td>c2
+ <td>&nbsp;<td align=right>18.0<td>&nbsp;<td align=right>25.5<td>&nbsp;<td align=right>458<td>&nbsp;<td align=right>648<td>&nbsp;<td align=right>1298<td>&nbsp;<td align=right>1837<td>&nbsp;<td>&nbsp;
+<tr> <td>c3
+ <td>&nbsp;<td align=right>12.8<td>&nbsp;<td align=right>18.0<td>&nbsp;<td align=right>324<td>&nbsp;<td align=right>458<td>&nbsp;<td align=right>918<td>&nbsp;<td align=right>1298<td>&nbsp;<td>&nbsp;
+<tr> <td>c4
+ <td>&nbsp;<td align=right>9.0<td>&nbsp;<td align=right>12.8<td>&nbsp;<td align=right>229<td>&nbsp;<td align=right>324<td>&nbsp;<td align=right>649<td>&nbsp;<td align=right>918<td>&nbsp;<td>&nbsp;
+<tr> <td>c5
+ <td>&nbsp;<td align=right>6.4<td>&nbsp;<td align=right>9.0<td>&nbsp;<td align=right>162<td>&nbsp;<td align=right>229<td>&nbsp;<td align=right>459<td>&nbsp;<td align=right>649<td>&nbsp;<td>&nbsp;
+<tr> <td>c6
+ <td>&nbsp;<td align=right>4.5<td>&nbsp;<td align=right>6.4<td>&nbsp;<td align=right>114<td>&nbsp;<td align=right>162<td>&nbsp;<td align=right>323<td>&nbsp;<td align=right>459<td>&nbsp;<td>&nbsp;
+<tr> <td colspan=13><hr>
+<tr><th colspan=13>JIS standard
+<tr> <td colspan=13><hr>
+<tr> <td>jisb0
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>1030<td>&nbsp;<td align=right>1456<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td>jisb1
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>728<td>&nbsp;<td align=right>1030<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td>jisb2
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>515<td>&nbsp;<td align=right>728<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td>jisb3
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>364<td>&nbsp;<td align=right>515<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td>jisb4
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>257<td>&nbsp;<td align=right>364<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td>jisb5
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>182<td>&nbsp;<td align=right>257<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td>jisb6
+ <td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td align=right>128<td>&nbsp;<td align=right>182<td>&nbsp;<td align=right><td>&nbsp;<td align=right><td>&nbsp;<td>&nbsp;
+<tr> <td colspan=13><hr>
+<tr><th colspan=13>ISO/JIS switchable
+<tr> <td colspan=13><hr>
+<tr> <td>b0 (see * below)
+<tr> <td>b1 (see * below)
+<tr> <td>b2 (see * below)
+<tr> <td>b3 (see * below)
+<tr> <td>b4 (see * below)
+<tr> <td>b5 (see * below)
+<tr> <td colspan=13><hr>
+<tr><th colspan=13>Other
+<tr> <td colspan=13><hr>
+<tr> <td>flsa
+ <td>&nbsp;<td align=right>8.5<td>&nbsp;<td align=right>13.0<td>&nbsp;<td align=right>216<td>&nbsp;<td align=right>330<td>&nbsp;<td align=right>612<td>&nbsp;<td align=right>936<td>&nbsp;<td>U.S. foolscap
+<tr> <td>flse
+ <td>&nbsp;<td align=right>8.5<td>&nbsp;<td align=right>13.0<td>&nbsp;<td align=right>216<td>&nbsp;<td align=right>330<td>&nbsp;<td align=right>612<td>&nbsp;<td align=right>936<td>&nbsp;<td>European foolscap
+<tr> <td>halfletter
+ <td>&nbsp;<td align=right>5.5<td>&nbsp;<td align=right>8.5<td>&nbsp;<td align=right>140<td>&nbsp;<td align=right>216<td>&nbsp;<td align=right>396<td>&nbsp;<td align=right>612<td>&nbsp;<td>&nbsp;
+</table>
+
+<p>
+*<em>Note:</em> Initially the B paper sizes are the ISO sizes, e.g.,
+<b><tt>b0</tt></b> is the same as <b><tt>isob0</tt></b>. Running the file
+<b><tt>lib/jispaper.ps</tt></b> makes the B paper sizes be the JIS sizes,
+e.g., <b><tt>b0</tt></b> becomes the same as <b><tt>jisb0</tt></b>.
+
+<hr>
+
+<h2><a name="X_font_mappings"></a>Appendix: X default font mappings</h2>
+
+<h3><a name="Standard_X_server_fonts"></a>Standard X servers</h3>
+
+<h4><a name="X_regular_fonts"></a>Regular fonts</h4>
+
+<pre> AvantGarde-Book: -Adobe-ITC Avant Garde Gothic-Book-R-Normal--\n\
+ AvantGarde-BookOblique: -Adobe-ITC Avant Garde Gothic-Book-O-Normal--\n\
+ AvantGarde-Demi: -Adobe-ITC Avant Garde Gothic-Demi-R-Normal--\n\
+ AvantGarde-DemiOblique: -Adobe-ITC Avant Garde Gothic-Demi-O-Normal--\n\
+ Bookman-Demi: -Adobe-ITC Bookman-Demi-R-Normal--\n\
+ Bookman-DemiItalic: -Adobe-ITC Bookman-Demi-I-Normal--\n\
+ Bookman-Light: -Adobe-ITC Bookman-Light-R-Normal--\n\
+ Bookman-LightItalic: -Adobe-ITC Bookman-Light-I-Normal--\n\
+ Courier: -Adobe-Courier-Medium-R-Normal--\n\
+ Courier-Bold: -Adobe-Courier-Bold-R-Normal--\n\
+ Courier-BoldOblique: -Adobe-Courier-Bold-O-Normal--\n\
+ Courier-Oblique: -Adobe-Courier-Medium-O-Normal--\n\
+ Helvetica: -Adobe-Helvetica-Medium-R-Normal--\n\
+ Helvetica-Bold: -Adobe-Helvetica-Bold-R-Normal--\n\
+ Helvetica-BoldOblique: -Adobe-Helvetica-Bold-O-Normal--\n\
+ Helvetica-Narrow: -Adobe-Helvetica-Medium-R-Narrow--\n\
+ Helvetica-Narrow-Bold: -Adobe-Helvetica-Bold-R-Narrow--\n\
+ Helvetica-Narrow-BoldOblique: -Adobe-Helvetica-Bold-O-Narrow--\n\
+ Helvetica-Narrow-Oblique: -Adobe-Helvetica-Medium-O-Narrow--\n\
+ Helvetica-Oblique: -Adobe-Helvetica-Medium-O-Normal--\n\
+ NewCenturySchlbk-Bold: -Adobe-New Century Schoolbook-Bold-R-Normal--\n\
+ NewCenturySchlbk-BoldItalic: -Adobe-New Century Schoolbook-Bold-I-Normal--\n\
+ NewCenturySchlbk-Italic: -Adobe-New Century Schoolbook-Medium-I-Normal--\n\
+ NewCenturySchlbk-Roman: -Adobe-New Century Schoolbook-Medium-R-Normal--\n\
+ Palatino-Bold: -Adobe-Palatino-Bold-R-Normal--\n\
+ Palatino-BoldItalic: -Adobe-Palatino-Bold-I-Normal--\n\
+ Palatino-Italic: -Adobe-Palatino-Medium-I-Normal--\n\
+ Palatino-Roman: -Adobe-Palatino-Medium-R-Normal--\n\
+ Times-Bold: -Adobe-Times-Bold-R-Normal--\n\
+ Times-BoldItalic: -Adobe-Times-Bold-I-Normal--\n\
+ Times-Italic: -Adobe-Times-Medium-I-Normal--\n\
+ Times-Roman: -Adobe-Times-Medium-R-Normal--\n\
+ ZapfChancery-MediumItalic: -Adobe-ITC Zapf Chancery-Medium-I-Normal--
+</pre>
+
+<h4><a name="X_symbol_fonts"></a>Symbol fonts</h4>
+
+<pre> Symbol: -Adobe-Symbol-Medium-R-Normal--
+</pre>
+
+<h4><a name="X_dingbat_fonts"></a>Dingbat fonts</h4>
+
+<pre> ZapfDingbats: -Adobe-ITC Zapf Dingbats-Medium-R-Normal--
+</pre>
+
+<h3><a name="OpenWindows_fonts"></a>Sun OpenWindows</h3>
+
+<p>
+For Sun's X11/NeWS one can use the OpenWindows scalable fonts instead,
+which gives good output for any point size. In this environment, the
+relevant section of the resource file should look like this:
+
+<pre>Ghostscript.regularFonts: \
+ AvantGarde-Book: -itc-avantgarde-book-r-normal-- \n\
+ AvantGarde-BookOblique: -itc-avantgarde-book-o-normal-- \n\
+ AvantGarde-Demi: -itc-avantgarde-demi-r-normal-- \n\
+ AvantGarde-DemiOblique: -itc-avantgarde-demi-o-normal-- \n\
+ Bembo: -monotype-bembo-medium-r-normal-- \n\
+ Bembo-Bold: -monotype-bembo-bold-r-normal-- \n\
+ Bembo-BoldItalic: -monotype-bembo-bold-i-normal-- \n\
+ Bembo-Italic: -monotype-bembo-medium-i-normal-- \n\
+ Bookman-Demi: -itc-bookman-demi-r-normal-- \n\
+ Bookman-DemiItalic: -itc-bookman-demi-i-normal-- \n\
+ Bookman-Light: -itc-bookman-light-r-normal-- \n\
+ Bookman-LightItalic: -itc-bookman-light-i-normal-- \n\
+ Courier: -itc-courier-medium-r-normal-- \n\
+ Courier-Bold: -itc-courier-bold-r-normal-- \n\
+ Courier-BoldOblique: -itc-courier-bold-o-normal-- \n\
+ Courier-Oblique: -itc-courier-medium-o-normal-- \n\
+ GillSans: -monotype-gill-medium-r-normal-sans- \n\
+ GillSans-Bold: -monotype-gill-bold-r-normal-sans- \n\
+ GillSans-BoldItalic: -monotype-gill-bold-i-normal-sans- \n\
+ GillSans-Italic: -monotype-gill-normal-i-normal-sans- \n\
+ Helvetica: -linotype-helvetica-medium-r-normal-- \n\
+ Helvetica-Bold: -linotype-helvetica-bold-r-normal-- \n\
+ Helvetica-BoldOblique: -linotype-helvetica-bold-o-normal-- \n\
+ Helvetica-Narrow: -linotype-helvetica-medium-r-narrow-- \n\
+ Helvetica-Narrow-Bold: -linotype-helvetica-bold-r-narrow-- \n\
+ Helvetica-Narrow-BoldOblique: -linotype-helvetica-bold-o-narrow-- \n\
+ Helvetica-Narrow-Oblique: -linotype-helvetica-medium-o-narrow-- \n\
+ Helvetica-Oblique: -linotype-helvetica-medium-o-normal-- \n\
+ LucidaBright: -b&amp;h-lucidabright-medium-r-normal-- \n\
+ LucidaBright-Demi: -b&amp;h-lucidabright-demibold-r-normal-- \n\
+ LucidaBright-DemiItalic: -b&amp;h-lucidabright-demibold-i-normal-- \n\
+ LucidaBright-Italic: -b&amp;h-lucidabright-medium-i-normal-- \n\
+ LucidaSans: -b&amp;h-lucida-medium-r-normal-sans- \n\
+ LucidaSans-Bold: -b&amp;h-lucida-bold-r-normal-sans- \n\
+ LucidaSans-BoldItalic: -b&amp;h-lucida-bold-i-normal-sans- \n\
+ LucidaSans-Italic: -b&amp;h-lucida-medium-i-normal-sans- \n\
+ LucidaSans-Typewriter: -b&amp;h-lucidatypewriter-medium-r-normal-sans- \n\
+ LucidaSans-TypewriterBold: -b&amp;h-lucidatypewriter-bold-r-normal-sans- \n\
+ NewCenturySchlbk-BoldItalic: -linotype-new century schoolbook-bold-i-normal-- \n\
+ NewCenturySchlbk-Bold: -linotype-new century schoolbook-bold-r-normal-- \n\
+ NewCenturySchlbk-Italic: -linotype-new century schoolbook-medium-i-normal-- \n\
+ NewCenturySchlbk-Roman: -linotype-new century schoolbook-medium-r-normal-- \n\
+ Palatino-Bold: -linotype-palatino-bold-r-normal-- \n\
+ Palatino-BoldItalic: -linotype-palatino-bold-i-normal-- \n\
+ Palatino-Italic: -linotype-palatino-medium-i-normal-- \n\
+ Palatino-Roman: -linotype-palatino-medium-r-normal-- \n\
+ Rockwell: -monotype-rockwell-medium-r-normal-- \n\
+ Rockwell-Bold: -monotype-rockwell-bold-r-normal-- \n\
+ Rockwell-BoldItalic: -monotype-rockwell-bold-i-normal-- \n\
+ Rockwell-Italic: -monotype-rockwell-medium-i-normal-- \n\
+ Times-Bold: -linotype-times-bold-r-normal-- \n\
+ Times-BoldItalic: -linotype-times-bold-i-normal-- \n\
+ Times-Italic: -linotype-times-medium-i-normal-- \n\
+ Times-Roman: -linotype-times-medium-r-normal-- \n\
+ Utopia-Bold: -adobe-utopia-bold-r-normal-- \n\
+ Utopia-BoldItalic: -adobe-utopia-bold-i-normal-- \n\
+ Utopia-Italic: -adobe-utopia-regular-i-normal-- \n\
+ Utopia-Regular: -adobe-utopia-regular-r-normal-- \n\
+ ZapfChancery-MediumItalic: -itc-zapfchancery-medium-i-normal-- \n
+Ghostscript.dingbatFonts: \
+ ZapfDingbats: -itc-zapfdingbats-medium-r-normal--
+Ghostscript.symbolFonts: \
+ Symbol: --symbol-medium-r-normal--
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 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>
diff --git a/Master/xemtex/doc/ghostscript/Xfonts.htm b/Master/xemtex/doc/ghostscript/Xfonts.htm
new file mode 100644
index 00000000000..d86653143ab
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Xfonts.htm
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript's external font and text interface</title>
+<!-- $Id: Xfonts.htm,v 1.13.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: xfonts.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript's external font and text interface</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#Types">Types</a>
+<li><a href="#Implementation_procedures">Implementation procedures</a>
+<li><a href="#Font_level_procedures">Font-level procedures</a>
+<ul>
+<li><a href="#lookup_font"><b><tt>lookup_font</tt></b></a>
+<li><a href="#char_xglyph"><b><tt>char_xglyph</tt></b></a>
+<li><a href="#char_metrics"><b><tt>char_metrics</tt></b></a>
+<li><a href="#render_char"><b><tt>render_char</tt></b></a>
+<li><a href="#release"><b><tt>release</tt></b></a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<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] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+Ghostscript can use the character rasterizer provided by the underlying
+operating system and window system; specifically, Adobe Type Manager (ATM)
+or a TrueType rasterizer under MS Windows, or the facilities provided by X
+Windows. This ability augments, but does not replace, Ghostscript's own
+Type 1 rasterizer: Ghostscript may still use its own rasterizer for very
+large characters, characters that are clipped or transformed in unusual
+ways, and for output to devices other than the screen.
+
+<p>
+Ghostscript connects to these platform facilities through a driver-like
+interface called the xfont (external font) interface. Current xfont
+implementations are associated directly with device drivers; in a future
+release, Ghostscript may separate them, so that (for example) it will be
+possible to use the platform rasterizer when writing to a file.
+
+<p>
+Please note that from this point, this file is likely to be useful only
+to a small number of Ghostscript porters and implementors.
+
+<hr>
+
+<h2><a name="Types"></a>Types</h2>
+
+<table cellpadding=0 cellspacing=0>
+<tr> <th valign=bottom align=left>Type
+ <td>&nbsp;&nbsp;
+ <th valign=bottom align=left>Declared /<br>defined in
+ <td>&nbsp;
+ <th valign=bottom align=left>Represents
+<tr> <td colspan=5><hr>
+<tr> <td valign=top><b><tt>gs_char</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsccode.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A character code that appears in a string. Currently
+ it is always a single byte, but composite fonts or Unicode may
+ require it to be wider in the future.
+<tr> <td valign=top><b><tt>gs_glyph</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsccode.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A character name like "period" or "epsilon". From
+ the xfont implementation's point of view, it is just a handle;
+ when necessary, Ghostscript provides a
+ <b><tt>gs_proc_glyph_name_t</tt></b> procedure to
+ convert it to a string name.
+<tr> <td valign=top><b><tt>gs_proc_glyph_name_t</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsccode.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A procedure that maps a <b><tt>gs_glyph</tt></b> to
+ its string name; see the <b><tt>char_xglyph</tt></b> procedure.
+<tr> <td valign=top><b><tt>gx_xglyph</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsxfont.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A character or glyph code that can be used with a
+ specific platform font. Normally it will be a character code
+ that the implementation of <b><tt>render_char</tt></b> will
+ turn into a 1-character string and give to the platform's
+ "display string" operation.
+<tr> <td valign=top><b><tt>gx_xfont_procs</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsxfont.h</tt></b>, <b><tt>gxxfont.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>The xfont analogue of
+ <b><tt>gx_device_procs</tt></b>, the type of the
+ procedure record that defines an xfont implementation.
+<tr> <td valign=top><b><tt>gx_xfont</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsxfont.h</tt></b>, <b><tt>gxxfont.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>The gxfont analogue of <b><tt>gx_device</tt></b>,
+ the type of the basic structure for an xfont.
+<tr> <td valign=top>(<b><tt>encoding_index</tt></b>)
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>Not really a type, although it probably should be:
+ an <b><tt>int</tt></b> used to indicate the
+ <b><tt>Encoding</tt></b> used by a font. Defined values are
+ <dl compact>
+ <dt>0<dd><b><tt>StandardEncoding</tt></b>
+ <dt>1<dd><b><tt>ISOLatin1Encoding</tt></b>
+ <dt>2<dd><b><tt>SymbolEncoding</tt></b>
+ <dt>3<dd><b><tt>DingbatsEncoding</tt></b>
+ <dt>-1<dd>Other encoding
+ </dl>
+</table>
+
+<hr>
+
+<h2><a name="Implementation_procedures"></a>Implementation
+procedures</h2>
+
+<p>
+All the procedures that return <b><tt>int</tt></b> results return 0 on
+success, or an appropriate negative error code for error conditions; these
+error codes are defined in <b><tt>gserrors.h</tt></b>. The relevant ones
+are the same as for <a href="Drivers.htm">drivers</a>, and as with drivers,
+if an implementation procedure returns an error, it should use the
+<b><tt>return_error</tt></b> macro -- defined in <b><tt>gx.h</tt></b>,
+which is automatically included by <b><tt>gdevprn.h</tt></b> but not by
+<b><tt>gserrors.h</tt></b> -- rather than a simple <b><tt>return</tt></b>
+statement, for instance
+
+<blockquote>
+<b><tt>return_error(gs_error_VMerror);</tt></b>
+</blockquote>
+
+<h2><a name="Font_level_procedures"></a>Font-level procedures</h2>
+
+<h3><a name="lookup_font"></a><b><tt>lookup_font</tt></b></h3>
+
+<dl>
+<dt><b><tt>gx_xfont *(*lookup_font)(P7(gx_device&nbsp;*dev,
+const&nbsp;byte&nbsp;*fname, uint&nbsp;len, int&nbsp;encoding_index,
+const&nbsp;gs_uid&nbsp;*puid, const&nbsp;gs_matrix&nbsp;*pmat,
+const&nbsp;gs_memory_procs&nbsp;*mprocs))</tt></b>
+<dd>Look up a font name, <b><tt>UniqueID</tt></b>, and matrix, and return
+an xfont, or <b><tt>NULL</tt></b> if no suitable xfont exists. Use
+<b><tt>mprocs</tt></b> to allocate the xfont and any subsidiary data
+structures. The matrix is the <b><tt>FontMatrix</tt></b> concatenated with
+the CTM, so (roughly speaking) the font size in pixels is
+<b><tt>pmat&nbsp;-&gt;&nbsp;yy</tt></b>&nbsp;&times;&nbsp;1000 for a normal
+Type 1 font.
+
+<p>
+Note that this is the only implementation procedure that does not take an
+xfont * as its first argument. In fact, callers of
+<b><tt>lookup_font</tt></b> must use the <b><tt>get_xfont_device</tt></b>
+driver procedure to get the correct device to pass as the first argument to
+<b><tt>lookup_font</tt></b>.
+</dl>
+
+<h3><a name="char_xglyph"></a><b><tt>char_xglyph</tt></b></h3>
+
+<dl>
+<dt><b><tt>gx_xglyph (*char_xglyph)(P5(gx_xfont&nbsp;*xf, gs_char&nbsp;chr,
+int&nbsp;encoding_index, gs_glyph&nbsp;glyph,
+gs_proc_glyph_name_t&nbsp;glyph_name))</tt></b>
+<dd>Convert a character name to an xglyph code. In the case of
+<b><tt>glyphshow</tt></b>, <b><tt>chr</tt></b> may be
+<b><tt>gs_no_char</tt></b>; for an ordinary <b><tt>show</tt></b> operation,
+if the character code is invalid, <b><tt>glyph</tt></b> may be
+<b><tt>gs_no_glyph</tt></b>.
+</dl>
+
+<h3><a name="char_metrics"></a><b><tt>char_metrics</tt></b></h3>
+
+<dl>
+<dt><b><tt>int (*char_metrics)(P5(gx_xfont&nbsp;*xf, gx_xglyph&nbsp;xg,
+int&nbsp;wmode, gs_int_point&nbsp;*pwidth,
+gs_int_rect&nbsp;*pbbox))</tt></b>
+<dd>Get the metrics for a character. If the metrics are unavailable,
+return 1.
+</dl>
+
+<h3><a name="render_char"></a><b><tt>render_char</tt></b></h3>
+
+<dl>
+<dt><b><tt>int (*render_char)(P7(gx_xfont&nbsp;*xf, gx_xglyph&nbsp;xg,
+gx_device&nbsp;*target, int&nbsp;x, int&nbsp;y, gx_color_index&nbsp;color,
+int&nbsp;required))</tt></b>
+<dd>Render a character. <em>(x,y)</em> corresponds to the character
+origin. The target may be any Ghostscript device. A good implementation
+will check whether the target can handle this type of xfont directly (for
+instance by checking the target name), and if so, will render the character
+directly; otherwise, it will do what has to be done in the general case,
+namely, get a bitmap for the character and use the target's
+<b><tt>copy_mono</tt></b> operation. If <b><tt>required</tt></b> is false,
+the procedure should return an error if the rendering operation would be
+expensive, since in this case Ghostscript has already cached the bitmap and
+metrics from a previous call with <b><tt>required</tt></b>=true. If the
+operation cannot be done, return 1.
+</dl>
+
+<h3><a name="release"></a><b><tt>release</tt></b></h3>
+
+<dl>
+<dt><b><tt>int (*release)(P2(gx_xfont&nbsp;*xf,
+const&nbsp;gs_memory_procs&nbsp;*mprocs))</tt></b>
+<dd>Release any external resources associated with an xfont. If
+<b><tt>mprocs</tt></b> is not <b><tt>NULL</tt></b>, also free any storage
+allocated by <b><tt>lookup_font</tt></b> (including the xfont itself).
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 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>
diff --git a/Master/xemtex/doc/ghostscript/examples/alphabet.ps b/Master/xemtex/doc/ghostscript/examples/alphabet.ps
new file mode 100644
index 00000000000..95137585b25
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/alphabet.ps
@@ -0,0 +1,62 @@
+%!
+% Check for command line parameters:
+% Name, FirstSize, Ratio, NumSizes, UseOutline.
+
+/alphabetsave save def % prevent left over effects
+
+/FontName where { pop } { /FontName (Palatino-Italic) def } ifelse
+/FirstSize where { pop } { /FirstSize 15 def } ifelse
+/Ratio where { pop } { /Ratio 1.6 def } ifelse
+/NumSizes where { pop } { /NumSizes 3 def } ifelse
+/UseOutline where { pop } { /UseOutline false def } ifelse
+
+/Strings FirstSize 20 gt
+ { [
+ (ABCDEFGHIJ) (KLMNOPQR) (STUVWXYZ)
+ (abcdefghijklm) (nopqrstuvwxyz)
+ (0123456789<=>) (:;?@ !"#$%&')
+ (\(\)*+,-./[\\]^_) (`{|}~)
+ ] }
+ { [
+ (ABCDEFGHIJKLMNOPQRSTUVWXYZ)
+ (abcdefghijklmnopqrstuvwxyz)
+ (0123456789<=>:;?@ !"#$%&')
+ (\(\)*+,-./ [\\]^_ `{|}~)
+ ] }
+ifelse def
+
+/sshow
+ { gsave UseOutline
+ { { gsave ( ) dup 0 4 -1 roll put
+ false charpath pathbbox 0 setlinewidth stroke grestore
+ pop 8 add currentpoint exch pop moveto pop
+ } forall
+ }
+ { 2 0 3 -1 roll ashow }
+ ifelse grestore
+ } def
+
+FontName findfont FirstSize scalefont setfont
+
+clippath pathbbox /top exch def pop pop pop newpath
+10 10 moveto
+NumSizes
+ { gsave nulldevice (Q) false charpath pathbbox grestore
+ exch pop exch sub exch pop 1.25 mul /height exch def
+ Strings
+ { currentpoint exch pop top height 3 mul sub gt
+ { showpage 10 10 height sub moveto
+ }
+ if
+ dup sshow
+ UseOutline not
+ { 0 height rmoveto gsave 0.01 rotate sshow grestore }
+ if
+ 0 height rmoveto
+ } forall
+ Ratio dup scale
+ } repeat
+showpage
+
+clear cleardictstack
+alphabetsave restore
diff --git a/Master/xemtex/doc/ghostscript/examples/annots.pdf b/Master/xemtex/doc/ghostscript/examples/annots.pdf
new file mode 100644
index 00000000000..467926df379
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/annots.pdf
Binary files differ
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/all_ac1.ps b/Master/xemtex/doc/ghostscript/examples/cjk/all_ac1.ps
new file mode 100644
index 00000000000..bb038b640e5
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/all_ac1.ps
@@ -0,0 +1,221 @@
+%!PS-Adobe-3.0
+%%Title: Adobe-CNS1 CID-Keyed Fonts Character List
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%Version: 1.0
+%
+% Usage:
+% gs [-sF=MOESung-Regular] [-daffix [-sAF=MSung-Light]] \
+% [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_ac1.ps
+%
+%%DocumentMedia: A4 595 842 0 white ()
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/*CIDFont*findresource {
+ dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
+ notice*page begin
+ *open
+ (Error in /CIDFont findresource: ) *echo-n dup *echo
+ *close
+ end
+ /CIDFont findresource
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+
+/title (Adobe-CNS1 CID-Keyed Fonts Character List) def
+/PW 595 def
+/PH 842 def
+/LM 78 def
+/TM 130 def
+/RM 47 def
+/BM 76 def
+/NH 10 def
+/NV 12 def
+/RW PW LM RM add sub NH div def
+/RH PH TM BM add sub NV div def
+/FS RW 3 mul 4 div def
+/AFS RW 1 mul 4 div def
+/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
+/F (MKai-Medium) unknowndef
+/affix false unknowndef
+%/AF (MOESung-Regular) unknowndef
+%/AF (MOEKai-Regular) unknowndef
+/AF (MSung-Light) unknowndef
+%/AF (MHei-Medium) unknowndef
+/descent 130 unknowndef
+/glyphshow- false unknowndef
+/fss { exch /CIDFont findresource exch scalefont setfont } bind def
+/concats { % [str ...] concats str
+ () exch dup length 1 sub -1 0 {
+ 1 index exch get dup type /stringtype ne { dup length string cvs } if
+ 3 -1 roll exch dup length 2 index length add string
+ dup dup 4 2 roll copy length 4 -1 roll putinterval exch
+ } for pop
+} bind def
+/composefontname { % font cmap composefontname font--cmap
+ [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
+} bind def
+glyphshow- {
+ /I (Identity-H) unknowndef
+ /F F I composefontname def
+ affix { /AF AF I composefontname def } if
+ /fss { exch findfont exch scalefont setfont } bind def
+ /s 2 string def
+} if
+/glyphframe { % h oldx glyphframe -
+ gsave 0 setlinewidth
+ currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/box { % llx lly urx ury box -
+ 3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
+ currentpoint 4 -2 roll rectstroke
+} bind def
+/charframe { % h string charframe -
+ gsave 0 setlinewidth
+ stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/pathframe { % string pathframe -
+ gsave 0 setlinewidth
+ true charpath flattenpath pathbbox box grestore
+} bind def
+/np {
+ /Helvetica findfont 11 scalefont setfont
+ LM BM 11 2 mul sub moveto title show ( - ) show F show
+ affix {
+ gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
+ } if
+ PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
+ /p p 1 add def
+ showpage
+ /x LM def
+ /y PH TM sub def
+} bind def
+/nb {
+ /x x RW add def
+ x PW RM sub ge {
+ /x LM def
+ /y y RH sub def
+ y BM le {
+ np
+ /y PH TM sub def
+ } if
+ } if
+} bind def
+%%EndProlog
+/x LM def
+/y PH TM sub def
+/p 1 def
+[
+ %[0 14098] % Adobe-CNS1-0
+ %[0 17407] % Adobe-CNS1-0,1
+ %[0 17600] % Adobe-CNS1-0,1,2
+ %[0 18845] % Adobe-CNS1-0,1,2,3
+ [0 18961] % Adobe-CNS1-0,1,2,3,4
+] {
+ cvx exec 1 exch {
+ /id exch def
+ F FS fss
+ x y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ FS x glyphframe
+ } {
+ s 0 id 256 idiv put s 1 id 256 mod put
+ FS s charframe
+ s pathframe
+ s show
+ } ifelse
+ affix {
+ AF AFS fss
+ x FS add y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ AFS x FS add glyphframe
+ } {
+ AFS s charframe
+ s pathframe
+ s show
+ } ifelse
+ } if
+ %
+ /Times-Roman findfont 7 scalefont setfont
+ x y FS sub FS descent mul 1000 div sub 7 sub moveto
+ id 5 string cvs show
+ nb
+ } for
+ np
+} forall
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/all_ag1.ps b/Master/xemtex/doc/ghostscript/examples/cjk/all_ag1.ps
new file mode 100644
index 00000000000..26d8178959f
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/all_ag1.ps
@@ -0,0 +1,218 @@
+%!PS-Adobe-3.0
+%%Title: Adobe-GB1 CID-Keyed Fonts Character List
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%Version: 1.0
+%
+% Usage:
+% gs [-sF=BousungEG-Light-GB] [-daffix [-sAF=STSong-Light]] \
+% [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_ag1.ps
+%
+%%DocumentMedia: A4 595 842 0 white ()
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/*CIDFont*findresource {
+ dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
+ notice*page begin
+ *open
+ (Error in /CIDFont findresource: ) *echo-n dup *echo
+ *close
+ end
+ /CIDFont findresource
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+
+/title (Adobe-GB1 CID-Keyed Fonts Character List) def
+/PW 595 def
+/PH 842 def
+/LM 78 def
+/TM 130 def
+/RM 47 def
+/BM 76 def
+/NH 10 def
+/NV 12 def
+/RW PW LM RM add sub NH div def
+/RH PH TM BM add sub NV div def
+/FS RW 3 mul 4 div def
+/AFS RW 1 mul 4 div def
+/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
+/F (STHeiti-Regular) unknowndef
+/affix false unknowndef
+/AF (STSong-Light) unknowndef
+/descent 130 unknowndef
+/glyphshow- false unknowndef
+/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
+/concats { % [str ...] concats str
+ () exch dup length 1 sub -1 0 {
+ 1 index exch get dup type /stringtype ne { dup length string cvs } if
+ 3 -1 roll exch dup length 2 index length add string
+ dup dup 4 2 roll copy length 4 -1 roll putinterval exch
+ } for pop
+} bind def
+/composefontname { % font cmap composefontname font--cmap
+ [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
+} bind def
+glyphshow- {
+ /I (Identity-H) unknowndef
+ /F F I composefontname def
+ affix { /AF AF I composefontname def } if
+ /fss { exch *findfont exch scalefont setfont } bind def
+ /s 2 string def
+} if
+/glyphframe { % h oldx glyphframe -
+ gsave 0 setlinewidth
+ currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/box { % llx lly urx ury box -
+ 3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
+ currentpoint 4 -2 roll rectstroke
+} bind def
+/charframe { % h string charframe -
+ gsave 0 setlinewidth
+ stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/pathframe { % string pathframe -
+ gsave 0 setlinewidth
+ true charpath flattenpath pathbbox box grestore
+} bind def
+/np {
+ /Helvetica findfont 11 scalefont setfont
+ LM BM 11 2 mul sub moveto title show ( - ) show F show
+ affix {
+ gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
+ } if
+ PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
+ /p p 1 add def
+ showpage
+ /x LM def
+ /y PH TM sub def
+} bind def
+/nb {
+ /x x RW add def
+ x PW RM sub ge {
+ /x LM def
+ /y y RH sub def
+ y BM le {
+ np
+ /y PH TM sub def
+ } if
+ } if
+} bind def
+%%EndProlog
+/x LM def
+/y PH TM sub def
+/p 1 def
+[
+ %[0 7716] % Adobe-GB1-0
+ %[0 9896] % Adobe-GB1-0,1
+ %[0 22126] % Adobe-GB1-0,1,2
+ %[0 22352] % Adobe-GB1-0,1,2,3
+ [0 29063] % Adobe-GB1-0,1,2,3,4
+] {
+ cvx exec 1 exch {
+ /id exch def
+ F FS fss
+ x y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ FS x glyphframe
+ } {
+ s 0 id 256 idiv put s 1 id 256 mod put
+ FS s charframe
+ s pathframe
+ s show
+ } ifelse
+ affix {
+ AF AFS fss
+ x FS add y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ AFS x FS add glyphframe
+ } {
+ AFS s charframe
+ s pathframe
+ s show
+ } ifelse
+ } if
+ %
+ /Times-Roman findfont 7 scalefont setfont
+ x y FS sub FS descent mul 1000 div sub 7 sub moveto
+ id 5 string cvs show
+ nb
+ } for
+ np
+} forall
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/all_aj1.ps b/Master/xemtex/doc/ghostscript/examples/cjk/all_aj1.ps
new file mode 100644
index 00000000000..9dd2f4d3d5c
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/all_aj1.ps
@@ -0,0 +1,218 @@
+%!PS-Adobe-3.0
+%%Title: Adobe-Japan1 CID-Keyed Fonts Character List
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%Version: 1.0
+%
+% Usage:
+% gs [-sF=WadaMin-Regular] [-daffix [-sAF=HeiseiMin-W3]] \
+% [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_aj1.ps
+%
+%%DocumentMedia: A4 595 842 0 white ()
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/*CIDFont*findresource {
+ dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
+ notice*page begin
+ *open
+ (Error in /CIDFont findresource: ) *echo-n dup *echo
+ *close
+ end
+ /CIDFont findresource
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+
+/title (Adobe-Japan1 CID-Keyed Fonts Character List) def
+/PW 595 def
+/PH 842 def
+/LM 78 def
+/TM 130 def
+/RM 47 def
+/BM 76 def
+/NH 10 def
+/NV 12 def
+/RW PW LM RM add sub NH div def
+/RH PH TM BM add sub NV div def
+/FS RW 3 mul 4 div def
+/AFS RW 1 mul 4 div def
+/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
+/F (HeiseiKakuGo-W5) unknowndef
+/affix false unknowndef
+/AF (HeiseiMin-W3) unknowndef
+/descent 130 unknowndef
+/glyphshow- false unknowndef
+/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
+/concats { % [str ...] concats str
+ () exch dup length 1 sub -1 0 {
+ 1 index exch get dup type /stringtype ne { dup length string cvs } if
+ 3 -1 roll exch dup length 2 index length add string
+ dup dup 4 2 roll copy length 4 -1 roll putinterval exch
+ } for pop
+} bind def
+/composefontname { % font cmap composefontname font--cmap
+ [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
+} bind def
+glyphshow- {
+ /I (Identity-H) unknowndef
+ /F F I composefontname def
+ affix { /AF AF I composefontname def } if
+ /fss { exch *findfont exch scalefont setfont } bind def
+ /s 2 string def
+} if
+/glyphframe { % h oldx glyphframe -
+ gsave 0 setlinewidth
+ currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/box { % llx lly urx ury box -
+ 3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
+ currentpoint 4 -2 roll rectstroke
+} bind def
+/charframe { % h string charframe -
+ gsave 0 setlinewidth
+ stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/pathframe { % string pathframe -
+ gsave 0 setlinewidth
+ true charpath flattenpath pathbbox box grestore
+} bind def
+/np {
+ /Helvetica findfont 11 scalefont setfont
+ LM BM 11 2 mul sub moveto title show ( - ) show F show
+ affix {
+ gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
+ } if
+ PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
+ /p p 1 add def
+ showpage
+ /x LM def
+ /y PH TM sub def
+} bind def
+/nb {
+ /x x RW add def
+ x PW RM sub ge {
+ /x LM def
+ /y y RH sub def
+ y BM le {
+ np
+ /y PH TM sub def
+ } if
+ } if
+} bind def
+%%EndProlog
+/x LM def
+/y PH TM sub def
+/p 1 def
+[
+ [0 8283] % Adobe-Japan1-0
+ [8284 8358] % Adobe-Japan1-1
+ [8359 8719] % Adobe-Japan1-2
+ [8720 9353] % Adobe-Japan1-3
+ [9354 15443] % Adobe-Japan1-4
+] {
+ cvx exec 1 exch {
+ /id exch def
+ F FS fss
+ x y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ FS x glyphframe
+ } {
+ s 0 id 256 idiv put s 1 id 256 mod put
+ FS s charframe
+ s pathframe
+ s show
+ } ifelse
+ affix {
+ AF AFS fss
+ x FS add y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ AFS x FS add glyphframe
+ } {
+ AFS s charframe
+ s pathframe
+ s show
+ } ifelse
+ } if
+ %
+ /Times-Roman findfont 7 scalefont setfont
+ x y FS sub FS descent mul 1000 div sub 7 sub moveto
+ id 5 string cvs show
+ nb
+ } for
+ np
+} forall
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/all_aj2.ps b/Master/xemtex/doc/ghostscript/examples/cjk/all_aj2.ps
new file mode 100644
index 00000000000..7e6019eb83b
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/all_aj2.ps
@@ -0,0 +1,214 @@
+%!PS-Adobe-3.0
+%%Title: Adobe-Japan2 CID-Keyed Fonts Character List
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%Version: 1.0
+%
+% Usage:
+% gs [-sF=HeiseiMin-W3H] [-daffix [-sAF=WadaMin-RegularH]] \
+% [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_aj2.ps
+%
+%%DocumentMedia: A4 595 842 0 white ()
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/*CIDFont*findresource {
+ dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
+ notice*page begin
+ *open
+ (Error in /CIDFont findresource: ) *echo-n dup *echo
+ *close
+ end
+ /CIDFont findresource
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+
+/title (Adobe-Japan2 CID-Keyed Fonts Character List) def
+/PW 595 def
+/PH 842 def
+/LM 78 def
+/TM 130 def
+/RM 47 def
+/BM 76 def
+/NH 10 def
+/NV 12 def
+/RW PW LM RM add sub NH div def
+/RH PH TM BM add sub NV div def
+/FS RW 3 mul 4 div def
+/AFS RW 1 mul 4 div def
+/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
+/F (WadaMin-RegularH) unknowndef
+/affix false unknowndef
+/AF (HeiseiMin-W3H) unknowndef
+/descent 130 unknowndef
+/glyphshow- false unknowndef
+/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
+/concats { % [str ...] concats str
+ () exch dup length 1 sub -1 0 {
+ 1 index exch get dup type /stringtype ne { dup length string cvs } if
+ 3 -1 roll exch dup length 2 index length add string
+ dup dup 4 2 roll copy length 4 -1 roll putinterval exch
+ } for pop
+} bind def
+/composefontname { % font cmap composefontname font--cmap
+ [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
+} bind def
+glyphshow- {
+ /I (Identity-H) unknowndef
+ /F F I composefontname def
+ affix { /AF AF I composefontname def } if
+ /fss { exch *findfont exch scalefont setfont } bind def
+ /s 2 string def
+} if
+/glyphframe { % h oldx glyphframe -
+ gsave 0 setlinewidth
+ currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/box { % llx lly urx ury box -
+ 3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
+ currentpoint 4 -2 roll rectstroke
+} bind def
+/charframe { % h string charframe -
+ gsave 0 setlinewidth
+ stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/pathframe { % string pathframe -
+ gsave 0 setlinewidth
+ true charpath flattenpath pathbbox box grestore
+} bind def
+/np {
+ /Helvetica findfont 11 scalefont setfont
+ LM BM 11 2 mul sub moveto title show ( - ) show F show
+ affix {
+ gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
+ } if
+ PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
+ /p p 1 add def
+ showpage
+ /x LM def
+ /y PH TM sub def
+} bind def
+/nb {
+ /x x RW add def
+ x PW RM sub ge {
+ /x LM def
+ /y y RH sub def
+ y BM le {
+ np
+ /y PH TM sub def
+ } if
+ } if
+} bind def
+%%EndProlog
+/x LM def
+/y PH TM sub def
+/p 1 def
+[
+ [0 6067] % Adobe-Japan2-0
+] {
+ cvx exec 1 exch {
+ /id exch def
+ F FS fss
+ x y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ FS x glyphframe
+ } {
+ s 0 id 256 idiv put s 1 id 256 mod put
+ FS s charframe
+ s pathframe
+ s show
+ } ifelse
+ affix {
+ AF AFS fss
+ x FS add y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ AFS x FS add glyphframe
+ } {
+ AFS s charframe
+ s pathframe
+ s show
+ } ifelse
+ } if
+ %
+ /Times-Roman findfont 7 scalefont setfont
+ x y FS sub FS descent mul 1000 div sub 7 sub moveto
+ id 5 string cvs show
+ nb
+ } for
+ np
+} forall
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/all_ak1.ps b/Master/xemtex/doc/ghostscript/examples/cjk/all_ak1.ps
new file mode 100644
index 00000000000..b3e138e7381
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/all_ak1.ps
@@ -0,0 +1,215 @@
+%!PS-Adobe-3.0
+%%Title: Adobe-Korea1 CID-Keyed Fonts Character List
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%Version: 1.0
+%
+% Usage:
+% gs [-sF=MunhwaGothic-Regular] [-daffix [-sAF=HYGoThic-Medium]] \
+% [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_ak1.ps
+%
+%%DocumentMedia: A4 595 842 0 white ()
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/*CIDFont*findresource {
+ dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
+ notice*page begin
+ *open
+ (Error in /CIDFont findresource: ) *echo-n dup *echo
+ *close
+ end
+ /CIDFont findresource
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+
+/title (Adobe-Korea1 CID-Keyed Fonts Character List) def
+/PW 595 def
+/PH 842 def
+/LM 78 def
+/TM 130 def
+/RM 47 def
+/BM 76 def
+/NH 10 def
+/NV 12 def
+/RW PW LM RM add sub NH div def
+/RH PH TM BM add sub NV div def
+/FS RW 3 mul 4 div def
+/AFS RW 1 mul 4 div def
+/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
+/F (HYGoThic-Medium) unknowndef
+/affix false unknowndef
+/AF (HYSMyeongJo-Medium) unknowndef
+/descent 130 unknowndef
+/glyphshow- false unknowndef
+/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
+/concats { % [str ...] concats str
+ () exch dup length 1 sub -1 0 {
+ 1 index exch get dup type /stringtype ne { dup length string cvs } if
+ 3 -1 roll exch dup length 2 index length add string
+ dup dup 4 2 roll copy length 4 -1 roll putinterval exch
+ } for pop
+} bind def
+/composefontname { % font cmap composefontname font--cmap
+ [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
+} bind def
+glyphshow- {
+ /I (Identity-H) unknowndef
+ /F F I composefontname def
+ affix { /AF AF I composefontname def } if
+ /fss { exch *findfont exch scalefont setfont } bind def
+ /s 2 string def
+} if
+/glyphframe { % h oldx glyphframe -
+ gsave 0 setlinewidth
+ currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/box { % llx lly urx ury box -
+ 3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
+ currentpoint 4 -2 roll rectstroke
+} bind def
+/charframe { % h string charframe -
+ gsave 0 setlinewidth
+ stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
+ currentpoint 4 -2 roll rectstroke grestore
+} bind def
+/pathframe { % string pathframe -
+ gsave 0 setlinewidth
+ true charpath flattenpath pathbbox box grestore
+} bind def
+/np {
+ /Helvetica findfont 11 scalefont setfont
+ LM BM 11 2 mul sub moveto title show ( - ) show F show
+ affix {
+ gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
+ } if
+ PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
+ /p p 1 add def
+ showpage
+ /x LM def
+ /y PH TM sub def
+} bind def
+/nb {
+ /x x RW add def
+ x PW RM sub ge {
+ /x LM def
+ /y y RH sub def
+ y BM le {
+ np
+ /y PH TM sub def
+ } if
+ } if
+} bind def
+%%EndProlog
+/x LM def
+/y PH TM sub def
+/p 1 def
+[
+ [0 9332] % Adobe-Korea1-0
+ [9333 18351] % Adobe-Korea1-1,2
+] {
+ cvx exec 1 exch {
+ /id exch def
+ F FS fss
+ x y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ FS x glyphframe
+ } {
+ s 0 id 256 idiv put s 1 id 256 mod put
+ FS s charframe
+ s pathframe
+ s show
+ } ifelse
+ affix {
+ AF AFS fss
+ x FS add y FS sub moveto
+ glyphshow- not {
+ id glyphshow
+ AFS x FS add glyphframe
+ } {
+ AFS s charframe
+ s pathframe
+ s show
+ } ifelse
+ } if
+ %
+ /Times-Roman findfont 7 scalefont setfont
+ x y FS sub FS descent mul 1000 div sub 7 sub moveto
+ id 5 string cvs show
+ nb
+ } for
+ np
+} forall
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ac.ps b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ac.ps
new file mode 100644
index 00000000000..dfc6230bd93
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ac.ps
@@ -0,0 +1,120 @@
+%!PS-Adobe-3.0
+%%Title: chinese-big5 encoding
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%BoundingBox: 30 150 530 650
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+%%EndProlog
+/MSung-Light--B5-V *findfont 25 scalefont setfont
+500 625 moveto
+(ÆFµ§¤¤¤åÁcÅé¦rª½¼g¦L¨ê) show
+/MSung-Light--B5-H *findfont 25 scalefont setfont
+50 600 moveto
+(ÆFµ§ Ghostscript) show
+50 550 moveto
+(¤¤¤åÁcÅé¦r Traditional Chinese) show
+50 500 moveto
+(¾î¼g horizontal writing) show
+50 450 moveto
+(¦L¨ê Print) show
+%
+/MSung-Light--B5-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
+100 275 moveto 20 2 div 0 rmoveto
+(±×Åé) dup stringwidth neg rmoveto show
+/MSung-Light--B5-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
+100 250 moveto
+(±×Åé Italic transformation) show
+%
+/MSung-Light--B5-H *findfont 20 scalefont setfont
+150 400 moveto
+(Sung Typeface §ºÅé) show
+/MSung-Medium--B5-H *findfont 20 scalefont setfont
+150 375 moveto
+(Sung Medium Typeface ¤¤§ºÅé) show
+/MHei-Medium--B5-H *findfont 20 scalefont setfont
+150 350 moveto
+(Hei Typeface ¶ÂÅé) show
+/MKai-Medium--B5-H *findfont 20 scalefont setfont
+150 325 moveto
+(Kai Typeface ´{Åé) show
+%
+/Times-Roman findfont 13 scalefont setfont
+50 200 moveto
+(* Chinese translation of "Ghostscript" is merely associative \
+characters of these meanings.) show
+50 200 13 sub moveto
+(In Traditional Chinese articles, customarily we use just \
+"Ghostscript" as it is.) show
+showpage
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ag.ps b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ag.ps
new file mode 100644
index 00000000000..02568b64f8d
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ag.ps
@@ -0,0 +1,120 @@
+%!PS-Adobe-3.0
+%%Title: euc-china encoding
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%BoundingBox: 30 150 530 650
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+%%EndProlog
+/STSong-Light--GB-EUC-V *findfont 25 scalefont setfont
+500 625 moveto
+(Áé±ÊÖÐÎļòÌå×Öֱдӡˢ) show
+/STSong-Light--GB-EUC-H *findfont 25 scalefont setfont
+50 600 moveto
+(Áé±Ê Ghostscript) show
+50 550 moveto
+(ÖÐÎļòÌå×Ö Simplified Chinese) show
+50 500 moveto
+(ºáд horizontal writing) show
+50 450 moveto
+(Ó¡Ë¢ Print) show
+%
+/STSong-Light--GB-EUC-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
+100 275 moveto 20 2 div 0 rmoveto
+(бÌå) dup stringwidth neg rmoveto show
+/STSong-Light--GB-EUC-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
+100 250 moveto
+(бÌå Italic transformation) show
+%
+/STSong-Light--GB-EUC-H *findfont 20 scalefont setfont
+150 400 moveto
+(Song Typeface ËÎÌå) show
+/STFangsong-Light--GB-EUC-H *findfont 20 scalefont setfont
+150 375 moveto
+(Fangsong Typeface ·ÂËÎÌå) show
+/STHeiti-Regular--GB-EUC-H *findfont 20 scalefont setfont
+150 350 moveto
+(Hei Typeface ºÚÌå) show
+/STKaiti-Regular--GB-EUC-H *findfont 20 scalefont setfont
+150 325 moveto
+(Kai Typeface ¿«Ìå) show
+%
+/Times-Roman findfont 13 scalefont setfont
+50 200 moveto
+(* Chinese translation of "Ghostscript" is merely associative \
+characters of these meanings.) show
+50 200 13 sub moveto
+(In Simplified Chinese articles, customarily we use just "Ghostscript" \
+as it is.) show
+showpage
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_aj.ps b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_aj.ps
new file mode 100644
index 00000000000..42d98bcdbb1
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_aj.ps
@@ -0,0 +1,114 @@
+%!PS-Adobe-3.0
+%%Title: japanese-shift-jis encoding
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%BoundingBox: 30 150 530 650
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+%%EndProlog
+/Ryumin-Light-RKSJ-V *findfont 25 scalefont setfont
+500 625 moveto
+(—ì•M “ú–{Œê c‘‚« ˆóü) show
+/Ryumin-Light-RKSJ-H *findfont 25 scalefont setfont
+50 600 moveto
+(—ì•M Ghostscript) show
+50 550 moveto
+(“ú–{Œê Japanese) show
+50 500 moveto
+(‰¡‘‚« horizontal writing) show
+50 450 moveto
+(ˆóü Print) show
+%
+/Ryumin-Light-RKSJ-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
+100 275 moveto 20 2 div 0 rmoveto
+(ŽÎ‘Ì) dup stringwidth neg rmoveto show
+/Ryumin-Light-RKSJ-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
+100 250 moveto
+(ŽÎ‘Ì Italic transformation) show
+%
+/Ryumin-Light-RKSJ-H *findfont 20 scalefont setfont
+150 400 moveto
+(Mincho Typeface –¾’©‘Ì) show
+/GothicBBB-Medium-RKSJ-H *findfont 20 scalefont setfont
+150 375 moveto
+(Gothic Typeface ƒSƒVƒbƒN‘Ì) show
+%
+/Times-Roman findfont 13 scalefont setfont
+50 200 moveto
+(* Japanese translation of "Ghostscript" is merely associative \
+characters of these meanings.) show
+50 200 13 sub moveto
+(In Japanese articles, customarily we use just "Ghostscript" as it \
+is.) show
+showpage
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ak.ps b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ak.ps
new file mode 100644
index 00000000000..78ce81876b2
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/gscjk_ak.ps
@@ -0,0 +1,116 @@
+%!PS-Adobe-3.0
+%%Title: euc-korea encoding
+%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU General Public License. See the file COPYING
+%%+ for more information.
+%%BoundingBox: 30 150 530 650
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+%%EndProlog
+/HYSMyeongJo-Medium--KSC-EUC-V *findfont 25 scalefont setfont
+500 625 moveto
+(ÖÄù¶ Çѱ¹¾î ¼¼·Î¾²±â Àμâ) show
+/HYSMyeongJo-Medium--KSC-EUC-H *findfont 25 scalefont setfont
+50 600 moveto
+(ÖÄù¶ Ghostscript) show
+50 550 moveto
+(Çѱ¹¾î Korean) show
+50 500 moveto
+(°¡·Î¾²±â horizontal writing) show
+50 450 moveto
+(Àμâ Print) show
+%
+/HYSMyeongJo-Medium--KSC-EUC-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
+100 275 moveto 20 2 div 0 rmoveto
+(±â¿ïÀÓ²Ã) dup stringwidth neg rmoveto show
+/HYSMyeongJo-Medium--KSC-EUC-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
+100 250 moveto
+(±â¿ïÀӲà Italic transformation) show
+%
+/HYSMyeongJo-Medium--KSC-EUC-H *findfont 20 scalefont setfont
+150 400 moveto
+(MyeongJo Typeface ¸íÁ¶) show
+/HYGoThic-Medium--KSC-EUC-H *findfont 20 scalefont setfont
+150 375 moveto
+(Gothic Typeface °íµñ) show
+/HYRGoThic-Medium--KSC-EUC-H *findfont 20 scalefont setfont
+150 350 moveto
+(Rounded Gothic Typeface µÕ±Ù°íµñ) show
+%
+/Times-Roman findfont 13 scalefont setfont
+50 200 moveto
+(* Korean translation of "Ghostscript" is merely associative \
+characters of these meanings.) show
+50 200 13 sub moveto
+(In Korean articles, customarily we use just "Ghostscript" as it is.) show
+showpage
+%%Trailer
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/cjk/iso2022.ps b/Master/xemtex/doc/ghostscript/examples/cjk/iso2022.ps
new file mode 100644
index 00000000000..9edb39bd6c5
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/cjk/iso2022.ps
@@ -0,0 +1,1256 @@
+%!PS-Adobe-3.0
+%%Creator: tops by Taiji Yamada <taiji@aihara.co.jp>
+%%Copyright: 2001 Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
+%%+ This script is part of GNU Ghostscript and is distributed under
+%%+ the terms of the GNU GPL. See the file COPYING for more information.
+%%+ It is also part of tops, a text filter into PostScript for various
+%%+ languages. To get it, visit http://www.aihara.co.jp/~taiji/tops/#tops
+%%DocumentData: Clean7Bit
+%%DocumentMedia: A4 595 842 0 white ()
+%%Extensions: Composite
+%%Orientation: Portrait
+%%Title: iso-2022-7bit - Emacs/Mule editable PostScript file
+%%Version: 1.0
+%
+% Usage:
+% gs [-dverttext] iso2022.ps
+%
+%%EndComments
+%%BeginProlog
+
+/*gs-cjk (\
+------------------------------------------------------------------------\n\
+This is a script to test CJK fonts such as CID-keyed fonts.\n\
+If you have not done CID-keyed fonts installation and definitions at\n\
+/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
+this script can't work correctly.\n\
+For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
+
+If you throw this script into a printer, it requires PostScript 3\n\
+printer and CID-keyed fonts specified in this script.\n\
+------------------------------------------------------------------------\n) def
+
+/notice*stdout 4 dict begin
+ /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
+ currentdict
+end def
+
+/notice*page 5 dict begin
+ /*y 750 def
+ /*open {
+ gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
+ *y 750 eq {
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ } if
+ } def
+ /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
+ /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
+ /*close { grestore } def
+ currentdict
+end def
+
+/greeting*gs-cjk {
+ product (Ghostscript) search not { pop } { pop pop pop QUIET not {
+ notice*stdout begin
+ *open
+ *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
+ *close
+ end
+ } if } ifelse
+} bind def
+greeting*gs-cjk
+
+/*findfont {
+ dup /Font resourcestatus { pop pop findfont } {
+ notice*page begin
+ *open
+ (Error in findfont: ) *echo-n dup *echo
+ *close
+ end
+ findfont
+ } ifelse
+} bind def
+
+/orighandleerror errordict /handleerror get def
+errordict begin
+ /handleerror {
+ notice*page begin errordict begin $error begin
+ *open
+ (Error of ) *echo-n errorname dup length string cvs *echo
+ *close
+ showpage
+ end end end
+ orighandleerror
+ } bind def
+end
+
+/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
+
+/ISOLatin1Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin1Encoding)
+%%EndComments
+/ISOLatin1Encoding [ % iso-8859-1
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
+/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
+/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
+/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
+% 0xc0
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
+/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
+/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
+% 0xe0
+/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
+/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin2Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin2Encoding)
+%%EndComments
+/ISOLatin2Encoding [ % iso-8859-2
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/Aogonek/breve/Lslash/currency/Lcaron/Sacute/section
+/dieresis/Scaron/Scedilla/Tcaron/Zacute/hyphen/Zcaron/Zdotaccent
+/degree/aogonek/ogonek/lslash/acute/lcaron/sacute/caron
+/cedilla/scaron/scedilla/tcaron/zacute/hungarumlaut/zcaron/zdotaccent
+% 0xc0
+/Racute/Aacute/Acircumflex/Abreve/Adieresis/Lacute/Cacute/Ccedilla
+/Ccaron/Eacute/Eogonek/Edieresis/Ecaron/Iacute/Icircumflex/Dcaron
+/Dcroat/Nacute/Ncaron/Oacute/Ocircumflex/Ohungarumlaut/Odieresis/multiply
+/Rcaron/Uring/Uacute/Uhungarumlaut/Udieresis/Yacute/Tcommaaccent/germandbls
+% 0xe0
+/racute/aacute/acircumflex/abreve/adieresis/lacute/cacute/ccedilla
+/ccaron/eacute/eogonek/edieresis/ecaron/iacute/icircumflex/dcaron
+/dcroat/nacute/ncaron/oacute/ocircumflex/ohungarumlaut/odieresis/divide
+/rcaron/uring/uacute/uhungarumlaut/udieresis/yacute/tcommaaccent/dotaccent
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin3Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin3Encoding)
+%%EndComments
+/ISOLatin3Encoding [ % iso-8859-3
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/Hbar/breve/sterling/currency/.notdef/Hcircumflex/section
+/dieresis/Idotaccent/Scedilla/Gbreve/Jcircumflex/hyphen/.notdef/Zdotaccent
+/degree/hbar/twosuperior/threesuperior/acute/mu/hcircumflex/periodcentered
+/cedilla/dotlessi/scedilla/gbreve/jcircumflex/onehalf/.notdef/zdotaccent
+% 0xc0
+/Agrave/Aacute/Acircumflex/.notdef/Adieresis/Cdotaccent/Ccircumflex/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
+/.notdef/Ntilde/Ograve/Oacute/Ocircumflex/Gdotaccent/Odieresis/multiply
+/Gcircumflex/Ugrave/Uacute/Ucircumflex/Udieresis/Ubreve/Scircumflex/germandbls
+% 0xe0
+/agrave/aacute/acircumflex/.notdef/adieresis/cdotaccent/ccircumflex/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/.notdef/ntilde/ograve/oacute/ocircumflex/gdotaccent/odieresis/divide
+/gcircumflex/ugrave/uacute/ucircumflex/udieresis/ubreve/scircumflex/dotaccent
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin4Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin4Encoding)
+%%EndComments
+/ISOLatin4Encoding [ % iso-8859-4
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/Aogonek/kgreenlandic/Rcommaaccent/currency/Itilde/Lcommaaccent/section
+/dieresis/Scaron/Emacron/Gcommaaccent/Tbar/hyphen/Zcaron/macron
+/degree/aogonek/ogonek/rcommaaccent/acute/itilde/lcommaaccent/caron
+/cedilla/scaron/emacron/gcommaaccent/tbar/Eng/zcaron/eng
+% 0xc0
+/Amacron/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Iogonek
+/Ccaron/Eacute/Eogonek/Edieresis/Edotaccent/Iacute/Icircumflex/Imacron
+/Dcroat/Ncommaaccent/Omacron/Kcommaaccent/Ocircumflex/Otilde/Odieresis/multiply
+/Oslash/Uogonek/Uacute/Ucircumflex/Udieresis/Utilde/Umacron/germandbls
+% 0xe0
+/amacron/aacute/acircumflex/atilde/adieresis/aring/ae/iogonek
+/ccaron/eacute/eogonek/edieresis/edotaccent/iacute/icircumflex/imacron
+/dcroat/ncommaaccent/omacron/kcommaaccent/ocircumflex/otilde/odieresis/divide
+/oslash/uogonek/uacute/ucircumflex/udieresis/utilde/umacron/dotaccent
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOCyrillicEncoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOCyrillicEncoding)
+%%EndComments
+/ISOCyrillicEncoding [ % iso-8859-5
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/afii10023/afii10051/afii10052/afii10053/afii10054/afii10055/afii10056
+/afii10057/afii10058/afii10059/afii10060/afii10061/hyphen/afii10062/afii10145
+/afii10017/afii10018/afii10019/afii10020/afii10021/afii10022/afii10024/afii10025
+/afii10026/afii10027/afii10028/afii10029/afii10030/afii10031/afii10032/afii10033
+% 0xc0
+/afii10034/afii10035/afii10036/afii10037/afii10038/afii10039/afii10040/afii10041
+/afii10042/afii10043/afii10044/afii10045/afii10046/afii10047/afii10048/afii10049
+/afii10065/afii10066/afii10067/afii10068/afii10069/afii10070/afii10072/afii10073
+/afii10074/afii10075/afii10076/afii10077/afii10078/afii10079/afii10080/afii10081
+% 0xe0
+/afii10082/afii10083/afii10084/afii10085/afii10086/afii10087/afii10088/afii10089
+/afii10090/afii10091/afii10092/afii10093/afii10094/afii10095/afii10096/afii10097
+/afii61352/afii10071/afii10099/afii10100/afii10101/afii10102/afii10103/afii10104
+/afii10105/afii10106/afii10107/afii10108/afii10109/section/afii10110/afii10193
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOGreekEncoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOGreekEncoding)
+%%EndComments
+/ISOGreekEncoding [ % iso-8859-7
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/quoteleft/quoteright/sterling/.notdef/.notdef/brokenbar/section
+/dieresis/copyright/.notdef/guillemotleft/logicalnot/hyphen/.notdef/afii00208
+/degree/plusminus/twosuperior/threesuperior/tonos/dieresistonos/Alphatonos/periodcentered
+/Epsilontonos/Etatonos/Iotatonos/guillemotright/Omicrontonos/onehalf/Upsilontonos/Omegatonos
+% 0xc0
+/iotadieresistonos/Alpha/Beta/Gamma/Delta/Epsilon/Zeta/Eta
+/Theta/Iota/Kappa/Lambda/Mu/Nu/Xi/Omicron
+/Pi/Rho/.notdef/Sigma/Tau/Upsilon/Phi/Chi
+/Psi/Omega/Iotadieresis/Upsilondieresis/alphatonos/epsilontonos/etatonos/iotatonos
+% 0xe0
+/upsilondieresistonos/alpha/beta/gamma/delta/epsilon/zeta/eta
+/theta/iota/kappa/lambda/mu/nu/xi/omicron
+/pi/rho/sigma1/sigma/tau/upsilon/phi/chi
+/psi/omega/iotadieresis/upsilondieresis/omicrontonos/upsilontonos/omegatonos/.notdef
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin5Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin5Encoding)
+%%EndComments
+/ISOLatin5Encoding [ % iso-8859-9
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
+/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
+/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
+/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
+% 0xc0
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
+/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
+/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent/Scedilla/germandbls
+% 0xe0
+/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/gbreve/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
+/oslash/ugrave/uacute/ucircumflex/udieresis/dotlessi/scedilla/ydieresis
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin6Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin6Encoding)
+%%EndComments
+/ISOLatin6Encoding [ % iso-8859-10
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/Aogonek/Emacron/Gcommaaccent/Imacron/Itilde/Kcommaaccent/section
+/Lcommaaccent/Dcroat/Scaron/Tbar/Zcaron/hyphen/Umacron/Eng
+/degree/aogonek/emacron/gcommaaccent/imacron/itilde/kcommaaccent/periodcentered
+/lcommaaccent/dcroat/scaron/tbar/zcaron/afii00208/umacron/eng
+% 0xc0
+/Amacron/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Iogonek
+/Ccaron/Eacute/Eogonek/Edieresis/Edotaccent/Iacute/Icircumflex/Idieresis
+/Eth/Ncommaaccent/Omacron/Oacute/Ocircumflex/Otilde/Odieresis/Utilde
+/Oslash/Uogonek/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
+% 0xe0
+/amacron/aacute/acircumflex/atilde/adieresis/aring/ae/iogonek
+/ccaron/eacute/eogonek/edieresis/edotaccent/iacute/icircumflex/idieresis
+/eth/ncommaaccent/omacron/oacute/ocircumflex/otilde/odieresis/utilde
+/oslash/uogonek/uacute/ucircumflex/udieresis/yacute/thorn/kgreenlandic
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin7Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin7Encoding)
+%%EndComments
+/ISOLatin7Encoding [ % iso-8859-13
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/quotedblright/cent/sterling/currency/quotedblbase/brokenbar/section
+/Oslash/copyright/Rcommaaccent/guillemotleft/logicalnot/hyphen/registered/AE
+/degree/plusminus/twosuperior/threesuperior/quotedblleft/mu/paragraph/periodcentered
+/oslash/onesuperior/rcommaaccent/guillemotright/onequarter/onehalf/threequarters/ae
+% 0xc0
+/Aogonek/Iogonek/Amacron/Cacute/Adieresis/Aring/Eogonek/Emacron
+/Ccaron/Eacute/Zacute/Edotaccent/Gcommaaccent/Kcommaaccent/Imacron/Lcommaaccent
+/Scaron/Nacute/Ncommaaccent/Oacute/Omacron/Otilde/Odieresis/multiply
+/Uogonek/Lslash/Sacute/Umacron/Udieresis/Zdotaccent/Zcaron/germandbls
+% 0xe0
+/aogonek/iogonek/amacron/cacute/adieresis/aring/eogonek/emacron
+/ccaron/eacute/zacute/edotaccent/gcommaaccent/kcommaaccent/imacron/lcommaaccent
+/scaron/nacute/ncommaaccent/oacute/omacron/otilde/odieresis/divide
+/uogonek/lslash/sacute/umacron/udieresis/zdotaccent/zcaron/quoteright
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/ISOLatin9Encoding /Encoding resourcestatus { pop pop } {
+%!PS-Adobe-3.0 Resource-Encoding
+%%BeginResource: Encoding (ISOLatin9Encoding)
+%%EndComments
+/ISOLatin9Encoding [ % iso-8859-15
+% 0x00
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0x20
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven
+/eight/nine/colon/semicolon/less/equal/greater/question
+% 0x40
+/at/A/B/C/D/E/F/G
+/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W
+/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore
+% 0x60
+/grave/a/b/c/d/e/f/g
+/h/i/j/k/l/m/n/o
+/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+% 0x80
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+% 0xa0
+/space/exclamdown/cent/sterling/Euro/yen/Scaron/section
+/scaron/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
+/degree/plusminus/twosuperior/threesuperior/Zcaron/mu/paragraph/periodcentered
+/zcaron/onesuperior/ordmasculine/guillemotright/OE/oe/Ydieresis/questiondown
+% 0xc0
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
+/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
+/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
+% 0xe0
+/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
+/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
+] /Encoding defineresource pop
+%%EndResource
+} ifelse
+
+/reencode-font { % fontname font encoding reencode-font font
+ exch dup type dup /nametype eq exch /stringtype eq or { findfont } if
+ dup length dict begin
+ {
+ 1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse
+ } forall
+ /Encoding exch dup type /nametype eq { /Encoding findresource } if def
+ dup /FontName exch def
+ currentdict
+ end
+ definefont
+} bind def
+
+/vertical-font { % fontname font vertical-font font
+ dup type dup /nametype eq exch /stringtype eq or { *findfont } if
+ dup length 1 add dict begin {
+ 1 index /FontName eq { pop 1 index def } {
+ 1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse
+ } ifelse
+ } forall /WMode 1 def currentdict end
+ definefont
+} bind def
+
+%
+% fontname [font ...] compose-fontset font
+%
+% References:
+% [1] kanno@jn1jdz.ymt.prug.or.jp, ``jisfont.ps,''
+% in Japanesized Tgif(Tgif-3.0J-p17 JIS patch version), 7 1997.
+%
+/compose-fontset {
+ 12 dict begin
+ /FontType 0 def
+ /FontMatrix matrix def
+ /FontBBox { 0 0 0 0 } def
+ /FMapType 3 def
+ %/EscChar 255 def
+ /FDepVector [
+ 2 index {
+ dup type dup /nametype eq exch /stringtype eq or { *findfont } if
+ dup /WMode known {
+ dup /WMode get /WMode exch def
+ WMode 1 eq {
+ [ 0 1 -1 0 0 .3 ] makefont
+ } if
+ } if
+ } forall
+ ] def
+ /Encoding [ 0 1 4 index length 1 sub {} for ] def
+ pop
+ dup /FontName exch def
+ currentdict
+ end
+ definefont
+} bind def
+
+/decode-mule-big5 { % R1 R2 1|2 decode-mule-big5 R1 R2
+ 2 dict begin
+ 3 1 roll
+ /r2 exch def
+ /r1 exch def
+ /r2 r1 16#21 sub 94 mul r2 add 16#21 sub def
+ 2 eq { /r2 r2 6280 add def } if
+ /r1 r2 157 idiv 16#a1 add def
+ /r2 r2 157 mod def
+ /r2 r2 r2 16#3f lt { 16#40 } { 16#62 } ifelse add def
+ r1 r2
+ end
+} bind def
+/decode-mule-big5-l1 { % str idx decode-mule-big5-l1 str idx
+ 2 copy get exch 1 add exch 2 index 2 index get
+ 1 decode-mule-big5
+ buffer size 4 -1 roll put /size size 1 add store
+ buffer size 3 -1 roll put /size size 1 add store
+} bind def
+/decode-mule-big5-l2 { % str idx decode-mule-big5-l2 str idx
+ 2 copy get exch 1 add exch 2 index 2 index get
+ 2 decode-mule-big5
+ buffer size 4 -1 roll put /size size 1 add store
+ buffer size 3 -1 roll put /size size 1 add store
+} bind def
+/decode-gl { % str idx decode-gl str idx
+ 2 copy get buffer size 3 -1 roll put
+ /size size 1 add store
+} bind def
+/decode-gr { % str idx decode-gr str idx
+ 2 copy get 16#80 add buffer size 3 -1 roll put
+ /size size 1 add store
+} bind def
+/iso-2022-set [
+ [ (\033\(B) {decode-gl} ] % iso-2022:ascii
+ [ (\033,A) {decode-gr} ] % iso-2022:iso-8859-1,iso-latin1
+ [ (\033,B) {decode-gr} ] % iso-2022:iso-8859-2,iso-latin2
+% [ (\033,C) {decode-gr} ] % iso-2022:iso-8859-3,iso-latin3
+% [ (\033,D) {decode-gr} ] % iso-2022:iso-8859-4,iso-latin4
+% [ (\033,F) {decode-gr} ] % iso-2022:iso-8859-7,iso-greek
+% [ (\033,G) {decode-gr} ] % iso-2022:iso-8859-6,iso-arabic
+% [ (\033,H) {decode-gr} ] % iso-2022:iso-8859-8,iso-hebrew
+% [ (\033,L) {decode-gr} ] % iso-2022:iso-8859-5,iso-cyrillic
+ [ (\033,M) {decode-gr} ] % iso-2022:iso-8859-9,iso-latin5
+% [ (\033,T) {decode-gr} ] % iso-2022:iso-8859-11,iso-thai
+% [ (\033,V) {decode-gr} ] % iso-2022:iso-8859-10,iso-latin6
+ [ (\033\(I) {decode-gl} ] % iso-2022:jis-x-0201-kana
+ [ (\033\(J) {decode-gl} ] % iso-2022:jis-x-0201-roman
+% [ (\033\(T) {decode-gl} ] % iso-2022:gb-1988-roman
+ [ (\033$@) {decode-gl} ] % iso-2022:jis-x-0208-1978
+ [ [ (\033$A) (\033$\(A) ] {decode-gl} ] % iso-2022:gb-2312-1980
+ [ [ (\033$B) (\033$\(B) (\033&@\033$B) ] {decode-gl} ] % iso-2022:jis-x-0208-1983&1990
+ [ (\033$\(C) {decode-gl} ] % iso-2022:ks-x-1001-1992
+ [ (\033$\(D) {decode-gl} ] % iso-2022:jis-x-0212-1990
+ [ (\033$\(?) {decode-gl} ] % iso-2022:gbt-12345-1990,private-iso-gbt
+ [ (\033$\(G) {decode-gl} ] % iso-2022:cns-11643-1992-p1
+ [ (\033$\(H) {decode-gl} ] % iso-2022:cns-11643-1992-p2
+ [ (\033$\(0) {decode-mule-big5-l1} ] % iso-2022:big5,mule-big5
+ [ (\033$\(1) {decode-mule-big5-l2} ] % iso-2022:big5,mule-big5
+] def
+/iso-2022-translate { % str idx iso-2022-translate str idx
+ 2 copy get 16#20 lt {
+ iso-2022-set length 1 sub 0 1 3 -1 roll { % str idx j
+ iso-2022-set 1 index get 0 get dup % str idx j ()|[] ()|[]
+ dup type /stringtype eq { % str idx j () ()
+ dup length 5 index 5 index 3 -1 roll 7 index length 7 index sub
+ 2 copy lt { pop } { exch pop } ifelse
+ getinterval eq % str idx j () true|false
+ } { % str idx j [] []
+ pop () false 3 -1 roll {
+ dup 4 -1 roll pop 3 1 roll
+ dup length 6 index 6 index 3 -1 roll 8 index length 8 index sub
+ 2 copy lt { pop } { exch pop } ifelse
+ getinterval eq or dup { exit } if % str idx j () true|false
+ } forall
+ } ifelse
+ { exch /iso-2022-state exch store length 1 sub add exit } { pop } ifelse
+ pop
+ } for
+ } if
+} bind def
+/iso-2022-show { % str iso-2022-show -
+ 10 dict begin
+ /iso-6429-state null def
+ /iso-2022-state 0 def
+ /iso-2022-current iso-2022-state def
+ /buffer 65535 string def
+ /size 0 def
+ /width 0 def
+ /BoldFont false def /Underscore false def /BackColor 1 def
+ /foldline dup where { pop foldline } { false } ifelse def
+ 0 { % idx {} loop
+ dup 2 index length lt {
+ iso-2022-translate
+ iso-2022-state iso-2022-current ne {
+ buffer size 8#377 put
+ /size size 1 add store
+ buffer size iso-2022-state put
+ /size size 1 add store
+ } {
+ iso-6429-translate
+ iso-6429-state null ne {
+ iso-6429-set iso-6429-state get 1 get exec
+ } {
+ iso-2022-set iso-2022-current get 1 get exec
+ } ifelse
+ } ifelse
+ } {
+ exit
+ } ifelse
+ /iso-2022-current iso-2022-state store
+ 1 add
+ } loop
+ pop pop
+ iflush
+ end
+} bind def
+/ichop { % required for some Adobe-official PostScript interpreters
+ dup length dup 2 sub -2 0 { % str len len-2 -2 0 {} for
+ 2 index 1 index get 8#377 eq % str len idx c(str idx get) 8#377 eq
+ { exch pop } { pop exit } ifelse % str len|idx
+ } for 0 exch getinterval % str'(str 0 len|idx getinterval)
+} bind def
+
+/iso-6429-set [
+ [ (\t)
+ { buffer 0 size getinterval ichop % ``ichop'' is not required for GS
+ stringwidth pop ( ) stringwidth pop div round cvi width add
+ 8 dup 3 1 roll mod sub {
+ buffer size ( ) putinterval /size size 1 add store
+ } repeat } bind
+ ]
+ [ (\f) { iflush margin 0 get margin 3 get moveto } bind ]
+ [ [ (\033[m) (\033[0m) ]
+ { iflush
+ /BoldFont false textfont
+ /Underscore false textfont
+ 0 textcolor
+ 1 backcolor
+ } bind
+ ] % All Off
+ [ (\033[1m) { iflush /BoldFont true textfont } bind ]
+ [ (\033[4m) { iflush /Underscore true textfont } bind ]
+ [ (\033[22m) { iflush /BoldFont false textfont } bind ]
+ [ (\033[24m) { iflush /Underscore false textfont } bind ]
+ [ (\033[30m) { iflush 0 textcolor } bind ]
+ [ (\033[31m) { iflush [ 1 0 0 ] textcolor } bind ]
+ [ (\033[32m) { iflush [ 0 1 0 ] textcolor } bind ]
+ [ (\033[33m) { iflush [ 1 1 0 ] textcolor } bind ]
+ [ (\033[34m) { iflush [ 0 0 1 ] textcolor } bind ]
+ [ (\033[35m) { iflush [ 1 0 1 ] textcolor } bind ]
+ [ (\033[36m) { iflush [ 0 1 1 ] textcolor } bind ]
+ [ (\033[37m) { iflush 1 textcolor } bind ]
+ [ (\033[39m) { iflush 0 textcolor } bind ]
+ [ (\033[40m) { iflush 0 backcolor } bind ]
+ [ (\033[41m) { iflush [ 1 0 0 ] backcolor } bind ]
+ [ (\033[42m) { iflush [ 0 1 0 ] backcolor } bind ]
+ [ (\033[43m) { iflush [ 1 1 0 ] backcolor } bind ]
+ [ (\033[44m) { iflush [ 0 0 1 ] backcolor } bind ]
+ [ (\033[45m) { iflush [ 1 0 1 ] backcolor } bind ]
+ [ (\033[46m) { iflush [ 0 1 1 ] backcolor } bind ]
+ [ (\033[47m) { iflush 1 backcolor } bind ]
+ [ (\033[49m) { iflush 1 backcolor } bind ]
+] def
+/iso-6429-translate { % str idx iso-6429-translate str idx
+ /iso-6429-state null store
+ 2 copy get 16#20 lt {
+ iso-6429-set length 1 sub 0 1 3 -1 roll { % str idx j
+ iso-6429-set 1 index get 0 get dup % str idx j ()|[] ()|[]
+ dup type /stringtype eq { % str idx j () ()
+ dup length 5 index 5 index 3 -1 roll 7 index length 7 index sub
+ 2 copy lt { pop } { exch pop } ifelse
+ getinterval eq % str idx j () true|false
+ } { % str idx j [] []
+ pop () false 3 -1 roll {
+ dup 4 -1 roll pop 3 1 roll
+ dup length 6 index 6 index 3 -1 roll 8 index length 8 index sub
+ 2 copy lt { pop } { exch pop } ifelse
+ getinterval eq or dup { exit } if % str idx j () true|false
+ } forall
+ } ifelse
+ { exch /iso-6429-state exch store length 1 sub add exit } { pop } ifelse
+ pop
+ } for
+ } if
+} bind def
+/show-attribute {
+ BackColor dup type dup /integertype eq exch /realtype eq or {
+ dup 1 eq { pop } {
+ gsave setgray BoldFont { setboldfont } if textfill grestore
+ } ifelse
+ } {
+ gsave cvx exec setrgbcolor BoldFont { setboldfont } if textfill grestore
+ } ifelse
+ Underscore {
+ gsave .2 setlinewidth currentpoint fontsize .1 mul sub moveto
+ BoldFont { setboldfont } if dup stringwidth pop 0 rlineto stroke grestore
+ } if
+ BoldFont {
+ gsave setboldfont show currentpoint grestore moveto
+ } {
+ show
+ } ifelse
+} bind def
+/cshow-attribute {
+ pop currentpoint pop add pagesize 0 get margin 2 get sub lt {
+ 1 string dup 0 4 -1 roll put show-attribute
+ } {
+ currentpoint exch pop fontsize sub round margin 3 get lt {
+ gsave
+ nextpage preparepage
+ currentpoint matrix currentmatrix grestore setmatrix moveto
+ } {
+ origin 0 get currentpoint exch pop fontsize sub moveto
+ } ifelse
+ 1 string dup 0 4 -1 roll put show-attribute
+ } ifelse
+} bind def
+/iflush {
+ size 0 gt {
+ buffer 0 size getinterval ichop % ``ichop'' is not required for GS
+ dup stringwidth pop ( ) stringwidth pop div round cvi /width exch store
+ foldline not {
+ show-attribute
+ } {
+ dup stringwidth
+ pop currentpoint pop add pagesize 0 get margin 2 get sub lt {
+ show-attribute
+ } {
+ BoldFont { /BoldFont false store
+ gsave setboldfont
+ { cshow-attribute } exch cshow
+ currentpoint grestore moveto
+ } {
+ { cshow-attribute } exch cshow
+ } ifelse
+ } ifelse
+ } ifelse
+ /size 0 store
+ } if
+} bind def
+/textfont { % /BoldFont|/Underscore any textfont -
+ store
+} bind def
+/textcolor {
+ dup type dup /integertype eq exch /realtype eq or { setgray }
+ { cvx exec setrgbcolor } ifelse
+} bind def
+/backcolor {
+ /BackColor exch store
+} bind def
+/textfill {
+ currentpoint fontsize .2 mul sub 2 index stringwidth pop fontsize
+ 4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto
+ closepath fill
+} bind def
+/setboldfont {
+ currentfont /FontName get dup length string cvs (-Bold)
+ exch dup length 2 index length add string
+ dup dup 4 2 roll copy length 4 -1 roll putinterval cvn
+ findfont [fontwidth 0 0 fontsize 0 0] makefont setfont
+} bind def
+/iso-6429-show { % str iso-6429-show -
+ 8 dict begin
+ /iso-6429-state null def
+ /buffer 65535 string def
+ /size 0 def
+ /width 0 def
+ /BoldFont false def /Underscore false def /BackColor 1 def
+ /foldline dup where { pop foldline } { false } ifelse def
+ 0 { % idx {} loop
+ dup 2 index length lt {
+ iso-6429-translate
+ iso-6429-state null ne {
+ iso-6429-set iso-6429-state get 1 get exec
+ } {
+ 2 copy get buffer size 3 -1 roll put
+ /size size 1 add store
+ } ifelse
+ } {
+ exit
+ } ifelse
+ 1 add
+ } loop
+ pop pop
+ iflush
+ end
+} bind def
+/shown-init {
+ /inshow exch def
+ /mediasize [ 595 842 ] def
+ /mediamargin [ 30 30 30 30 ] def
+ /pagesize [
+ mediasize cvx exec mediamargin cvx exec
+ 3 -1 roll add 3 1 roll add 3 1 roll sub 3 1 roll sub exch
+ ] def
+ /margin [ 20 28 20 28 ] def
+ /division [ 1 1 ] def
+ /landscape false def
+ /landscale false def
+ /evenscale true def
+ /pagescale false def
+ pagescale not {
+ /pagesize [
+ pagesize 0 get division 0 get div pagesize 1 get division 1 get div
+ ] store
+ } if
+ landscape {
+ /pagesize [ pagesize cvx exec exch ] store
+ /margin [ margin cvx exec 4 1 roll ] store
+ } if
+ /verttext dup where { pop verttext } { false } ifelse def
+ /foldline true def
+ /header true def /footer true def /border true def
+ /origin [ margin 0 get pagesize 1 get margin 1 get sub fontsize sub ] def
+ /position [ 0 0 ] def
+ /preparepage { initmatrix
+ landscape landscale xor not {
+ mediasize cvx exec exch mediamargin 0 get mediamargin 2 get add sub
+ division 0 get div position 0 get mul mediamargin 0 get add
+ exch dup mediamargin 1 get mediamargin 3 get add sub
+ division 1 get div position 1 get 1 add mul sub mediamargin 1 get sub
+ translate
+ pagescale { landscale not { 1 } { pagesize cvx exec div } ifelse
+ division 1 get div evenscale { dup } {
+ landscale not { 1 } { pagesize cvx exec exch div } ifelse
+ division 0 get div exch
+ } ifelse scale
+ } if
+ } {
+ verttext {
+ 180 rotate mediasize { neg } forall translate
+ } if
+ mediasize cvx exec exch mediamargin 0 get mediamargin 2 get add sub
+ division 0 get div position 0 get mul mediamargin 0 get add
+ exch mediamargin 1 get mediamargin 3 get add sub
+ division 1 get div position 1 get mul mediamargin 3 get add
+ translate
+ pagescale { landscale not { 1 } { pagesize cvx exec div } ifelse
+ division 0 get div evenscale { dup } {
+ landscale not { 1 } { pagesize cvx exec exch div } ifelse
+ division 1 get div
+ } ifelse scale
+ } if
+ 90 rotate 0 pagesize 1 get neg translate
+ } ifelse
+ origin cvx exec moveto
+ } bind def
+ /gssafe false def % GS-safe but not always perfect at decoratepage
+ /nextpage { gssafe { /decorated false store } { decoratepage } ifelse
+ position landscape landscale or not { 0 } { 1 } ifelse 2 copy get 1 add
+ dup 4 1 roll put
+ division landscape landscale or not { 0 } { 1 } ifelse get eq {
+ position landscape landscale or not { 0 } { 1 } ifelse 0 put
+ position landscape landscale or not { 1 } { 0 } ifelse 2 copy get 1 add
+ dup 4 1 roll put
+ division landscape landscale or not { 1 } { 0 } ifelse get eq {
+ position landscape landscale or not { 1 } { 0 } ifelse 0 put
+ showpage
+ } if
+ } if
+ } bind def
+ /lastpage { gssafe {} { decoratepage } ifelse showpage } bind def
+ /nextline {
+ currentpoint exch pop fontsize sub round margin 3 get lt {
+ nextpage preparepage /empty true store
+ } {
+ origin 0 get currentpoint exch pop fontsize sub moveto
+ } ifelse
+ } bind def
+ %
+ /page 0 def
+ /infofont /Helvetica findfont [fontwidth 0 0 fontsize 0 0] makefont def
+ /head (gs-cjk project: iso-2022-7bit - Emacs/Mule editable PostScript file) def
+ /showheader {
+ header {
+ gsave
+ verttext not {
+ margin 0 get pagesize 1 get margin 1 get sub fontsize add moveto
+ } {
+ margin 0 get fontsize sub margin 3 get translate 90 rotate
+ fontsize fontwidth div fontwidth fontsize div scale 0 0 moveto
+ } ifelse
+ 1 dict dup /foldline false put begin
+ infofont setfont head inshow
+ end
+ grestore
+ } if
+ } bind def
+ /foot 64 string def
+ /showfooter {
+ /page page 1 add store
+ footer {
+ gsave
+ verttext not {
+ pagesize 0 get margin 2 get sub margin 3 get fontsize 2 mul sub moveto
+ } {
+ pagesize 0 get margin 2 get sub fontsize 2 mul add
+ pagesize 1 get margin 1 get sub translate 90 rotate
+ fontsize fontwidth div fontwidth fontsize div scale 0 0 moveto
+ } ifelse
+ 1 dict dup /foldline false put begin
+ infofont setfont page foot cvs dup stringwidth pop neg 0 rmoveto inshow
+ end
+ grestore
+ } if
+ } bind def
+ /bord {
+ pagesize cvx exec margin { fontsize 2 div sub } forall
+ 3 1 roll exch 5 -1 roll exch sub exch 5 -1 roll exch sub exch
+ 4 copy 3 1 roll exch 8 -2 roll moveto lineto 4 2 roll lineto lineto
+ closepath
+ } bind def
+ /showborder {
+ border {
+ gsave .25 setlinewidth bord stroke grestore
+ } if
+ } bind def
+ /decoratepage { showheader showfooter showborder } bind def
+ %
+ preparepage /empty true def
+ gssafe { /decorated false def } if
+} bind def
+/shown {
+ gssafe { decorated not { decoratepage /decorated true store } if } if
+ inshow /empty false store nextline
+} bind def
+/shown-close { empty not { lastpage } if } bind def
+/shown-readlines {
+ /shown-buffer 65535 string def
+ shown-init
+ {
+ currentfile shown-buffer readline not { pop exit } if
+ shown
+ } loop
+ shown-close
+} bind def
+/shown-readhexstrings {
+ /shown-buffer 65535 string def
+ /shown-size 0 def
+ /previous-char (\000) def
+ shown-init
+ {
+ currentfile 1 string readhexstring not { pop exit } if
+ dup (\n) ne {
+ dup (\r) ne {
+ shown-buffer shown-size 2 index putinterval
+ /shown-size shown-size 1 add store
+ } { % mac
+ shown-buffer 0 shown-size getinterval shown
+ /shown-size 0 store
+ } ifelse
+ } { % unix
+ previous-char (\r) ne {
+ shown-buffer 0 shown-size getinterval shown
+ } { % dos
+ } ifelse
+ /shown-size 0 store
+ } ifelse
+ previous-char 0 3 -1 roll putinterval
+ } loop
+ shown-close
+} bind def
+
+/fitfont { [ .8335276 0 0 .8335276 0 .1 ] makefont } bind def
+
+/verttext false unknowndef
+/iso-2022-fontset [
+ /Courier findfont fitfont % iso-2022:ascii
+ /Courier-Latin1 /Courier /ISOLatin1Encoding reencode-font fitfont % iso-2022:iso-8859-1,iso-latin1
+ /Courier-Latin2 /Courier /ISOLatin2Encoding reencode-font fitfont % iso-2022:iso-8859-2,iso-latin2
+% /CourierNewLatin3 findfont fitfont % iso-2022:iso-8859-3,iso-latin3
+% /CourierNewLatin4 findfont fitfont % iso-2022:iso-8859-4,iso-latin4
+% /CourierNewGreek findfont fitfont % iso-2022:iso-8859-7,iso-greek
+% /CourierNewArabic findfont fitfont % iso-2022:iso-8859-6,iso-arabic
+% /CourierNewHebrew findfont fitfont % iso-2022:iso-8859-8,iso-hebrew
+% /Courier-Cyrillic /CourierNewCyrillic /ISOCyrillicEncoding reencode-font fitfont % iso-2022:iso-8859-5,iso-cyrillic
+ /Courier-Latin5 /Courier /ISOLatin5Encoding reencode-font fitfont % iso-2022:iso-8859-9,iso-latin5
+% /CourierNewThai findfont fitfont % iso-2022:iso-8859-11,iso-thai
+% /CourierNewLatin6 findfont fitfont % iso-2022:iso-8859-10,iso-latin6
+ verttext not {
+ /Ryumin-Light.Katakana % iso-2022:jis-x-0201-kana
+ /Ryumin-Light.Roman % iso-2022:jis-x-0201-roman
+% /STSong-Light-GBK-EUC-H % iso-2022:gb-1988-roman
+ /Ryumin-Light-78-H % iso-2022:jis-x-0208-1978
+ /STSong-Light-GB-H % iso-2022:gb-2312-1980
+ /Ryumin-Light-H % iso-2022:jis-x-0208-1983&1990
+ /HYSMyeongJo-Medium-KSC-H % iso-2022:ks-x-1001-1992
+ /HeiseiMin-W3H-Hojo-H % iso-2022:jis-x-0212-1990
+ /STSong-Light-GBT-H % iso-2022:gbt-12345-1990,private-iso-gbt
+ /MSung-Light-CNS1-H % iso-2022:cns-11643-1992-p1
+ /MSung-Light-CNS2-H % iso-2022:cns-11643-1992-p2
+ /MSung-Light-ETen-B5-H % iso-2022:big5,mule-big5
+ /MSung-Light-ETen-B5-H % iso-2022:big5,mule-big5
+ } {
+ /Ryumin-Light.Katakana-V /Ryumin-Light.Katakana vertical-font % iso-2022:jis-x-0201-kana
+ /Ryumin-Light.Roman-V /Ryumin-Light.Roman vertical-font % iso-2022:jis-x-0201-roman
+% /STSong-Light-GBK-EUC-V % iso-2022:gb-1988-roman
+ /Ryumin-Light-78-V % iso-2022:jis-x-0208-1978
+ /STSong-Light-GB-V % iso-2022:gb-2312-1980
+ /Ryumin-Light-V % iso-2022:jis-x-0208-1983&1990
+ /HYSMyeongJo-Medium-KSC-V % iso-2022:ks-x-1001-1992
+ /HeiseiMin-W3H-Hojo-V % iso-2022:jis-x-0212-1990
+ /STSong-Light-GBT-V % iso-2022:gbt-12345-1990,private-iso-gbt
+ /MSung-Light-CNS1-V % iso-2022:cns-11643-1992-p1
+ /MSung-Light-CNS2-V % iso-2022:cns-11643-1992-p2
+ /MSung-Light-ETen-B5-V % iso-2022:big5,mule-big5
+ /MSung-Light-ETen-B5-V % iso-2022:big5,mule-big5
+ } ifelse
+] def
+/iso-2022-bold-fontset [
+ /Courier-Bold findfont fitfont % iso-2022:ascii
+ /Courier-Bold-Latin1 /Courier-Bold /ISOLatin1Encoding reencode-font fitfont % iso-2022:iso-8859-1,iso-latin1
+ /Courier-Bold-Latin2 /Courier-Bold /ISOLatin2Encoding reencode-font fitfont % iso-2022:iso-8859-2,iso-latin2
+% /CourierNewLatin3-Bold findfont fitfont % iso-2022:iso-8859-3,iso-latin3
+% /CourierNewLatin4-Bold findfont fitfont % iso-2022:iso-8859-4,iso-latin4
+% /CourierNewGreek-Bold findfont fitfont % iso-2022:iso-8859-7,iso-greek
+% /CourierNewArabic-Bold findfont fitfont % iso-2022:iso-8859-6,iso-arabic
+% /CourierNewHebrew-Bold findfont fitfont % iso-2022:iso-8859-8,iso-hebrew
+% /Courier-Bold-Cyrillic /CourierNewCyrillic-Bold /ISOCyrillicEncoding reencode-font fitfont % iso-2022:iso-8859-5,iso-cyrillic
+ /Courier-Bold-Latin5 /Courier-Bold /ISOLatin5Encoding reencode-font fitfont % iso-2022:iso-8859-9,iso-latin5
+% /CourierNewThai-Bold findfont fitfont % iso-2022:iso-8859-11,iso-thai
+% /CourierNewLatin6-Bold findfont fitfont % iso-2022:iso-8859-10,iso-latin6
+ verttext not {
+ /GothicBBB-Medium.Katakana % iso-2022:jis-x-0201-kana
+ /GothicBBB-Medium.Roman % iso-2022:jis-x-0201-roman
+% /STHeiti-Regular-GBK-EUC-H % iso-2022:gb-1988-roman
+ /GothicBBB-Medium-78-H % iso-2022:jis-x-0208-1978
+ /STHeiti-Regular-GB-H % iso-2022:gb-2312-1980
+ /GothicBBB-Medium-H % iso-2022:jis-x-0208-1983&1990
+ /HYGoThic-Medium-KSC-H % iso-2022:ks-x-1001-1992
+ /HeiseiKakuGo-W5H-Hojo-H % iso-2022:jis-x-0212-1990
+ /STHeiti-Regular-GBT-H % iso-2022:gbt-12345-1990,private-iso-gbt
+ /MHei-Medium-CNS1-H % iso-2022:cns-11643-1992-p1
+ /MHei-Medium-CNS2-H % iso-2022:cns-11643-1992-p2
+ /MHei-Medium-ETen-B5-H % iso-2022:big5,mule-big5
+ /MHei-Medium-ETen-B5-H % iso-2022:big5,mule-big5
+ } {
+ /GothicBBB-Medium.Katakana-V /GothicBBB-Medium.Katakana vertical-font % iso-2022:jis-x-0201-kana
+ /GothicBBB-Medium.Roman-V /GothicBBB-Medium.Roman vertical-font % iso-2022:jis-x-0201-roman
+% /STHeiti-Regular-GBK-EUC-V % iso-2022:gb-1988-roman
+ /GothicBBB-Medium-78-V % iso-2022:jis-x-0208-1978
+ /STHeiti-Regular-GB-V % iso-2022:gb-2312-1980
+ /GothicBBB-Medium-V % iso-2022:jis-x-0208-1983&1990
+ /HYGoThic-Medium-KSC-V % iso-2022:ks-x-1001-1992
+ /HeiseiKakuGo-W5H-Hojo-V % iso-2022:jis-x-0212-1990
+ /STHeiti-Regular-GBT-V % iso-2022:gbt-12345-1990,private-iso-gbt
+ /MHei-Medium-CNS1-V % iso-2022:cns-11643-1992-p1
+ /MHei-Medium-CNS2-V % iso-2022:cns-11643-1992-p2
+ /MHei-Medium-ETen-B5-V % iso-2022:big5,mule-big5
+ /MHei-Medium-ETen-B5-V % iso-2022:big5,mule-big5
+ } ifelse
+] def
+/fontset-iso-2022 iso-2022-fontset compose-fontset pop
+/fontset-iso-2022-Bold iso-2022-bold-fontset compose-fontset pop
+%%EndProlog
+/fontsize 11 def /fontwidth 11 def
+/fontset-iso-2022 findfont [fontwidth 0 0 fontsize 0 0] makefont setfont
+{ iso-2022-show } shown-readlines
+A list of ways to say hello in various languages.
+
+Czech (,Bh(Besky) Dobr,B}(B den
+Danish (Dansk) Hej, Goddag
+English Hello
+Esperanto Saluton
+Estonian Tere, Tervist
+PostScript (Hello) =
+Finnish (Suomi) Hei
+French (Fran,Ag(Bais) Bonjour, Salut
+German (Deutsch Nord) Guten Tag
+
+Italiano Ciao, Buon giorno
+
+Maltese Ciao
+Nederlands, Vlaams Hallo, Dag
+Norwegian (Norsk) Hei, God dag
+Polish Dzie,Bq(B dobry, Hej
+
+Slovak Dobr,B}(B de,Br(B
+Spanish (Espa,Aq(Bol) ,A!(BHola!
+Swedish (Svenska) Hej, Goddag
+
+Turkish (T,M|(Brk,Mg(Be) Merhaba
+
+Chinese ($(GDcEF$(0!.$(GiGk#$(0!.Vn^V)t(B) $(0<@)p$(G!$I#Go!$$(0'*)y!$(B
+Chinese ($AVPND#,::So#,<rLeWV(B) $ADz:C!#Dc:C!#(B
+Japanese ($BF|K\8l!"4A;z!"J?2>L>!"JR2>L>(B) $B$3$s$K$A$O!#(I:]FAJ(B.
+Korean ($(CGQ1[#,ySm.(B) $(C>H3gGO=J4O1n#.>H3gGO<<?d#.(B
+
+Difference among chinese characters in GB, JIS, KSC, BIG5:
+ GB -- $AT*Fx(B $A?*7"(B
+ JIS -- $B855$(B $B3+H/(B
+ KSC -- $(Cj*Q((B $(CKR[!(B
+ BIG5 -- $(0&x86(B $(0DeBv(B
+
+Just for a test of JISX0212: $BqV$(DiQ(B (the second character is of JISX0212)
+
+Just for a test of JISX0201: (I123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\&]_^(B
+
+Difference between JISX0208.1978 and 1983:
+
+ \x1b$@ $@032)3B3I3v4C4R6F7[979\<I?YA(D[EWEnEsFvGhI0KjKyLyMZO6(B
+ \x1b$B $B032)3B3I3v4C4R6F7[979\<I?YA(D[EWEnEsFvGhI0KjKyLyMZO6(B
+
+Difference between GB2312.1980 and GBT12345.1990
+
+ \x1b$A $AMrLuP4;-8v:s<8;z@oTS@kRuQt4SQyJ&8IO0?*Fx5g9X6T;6<&Gl(B
+ $A1_9};9=xT6Ub;*0.HHME4&RURdRZSJ(B
+ $AJiN*3$J1S&6+35K-8xAeR{CE<dNJM7BrBt(B
+ \x1b$(? $(?MrLuP4;-8v:s<8;z@oTS@kRuQt4SQyJ&8IO0?*Fx5g9X6T;6<&Gl(B
+ $(?1_9};9=xT6Ub;*0.HHME4&RURdRZSJ(B
+ $(?JiN*3$J1S&6+35K-8xAeR{CE<dNJM7BrBt(B
+
+Color names:
+ BLACK $(0E**d(B $A:ZI+(B $B9u?'(B $(C0KA$;v(B 
+ RED $(04y*d(B $A:lI+(B $B@V?'(B $(C;!0-;v(B 
+ GREEN $(0L;*d(B $ABLI+(B $BNP?'(B $(C3k6{;v(B 
+ YELLOW $(0E(Yn*d(B $A;FI+(B $B2+?'(B $(CH2;v(B 
+ BLUE $(0Y1*d(B $A@6I+(B $B@D?'(B $(CFD6{;v(B 
+ MAGENTA $(0C<*d(B $AWOI+(B $B;g?'(B $(C:86s;v(B 
+ CYAN $(0LJL;*d(B $A4dBLI+(B $B@DNP?'(B $(CC;7O;v(B 
+ WHITE $(0(v*d(B $A0WI+(B $BGr?'(B $(CGO>a;v(B 
diff --git a/Master/xemtex/doc/ghostscript/examples/colorcir.ps b/Master/xemtex/doc/ghostscript/examples/colorcir.ps
new file mode 100644
index 00000000000..cf4a49e537c
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/colorcir.ps
@@ -0,0 +1,125 @@
+%!
+/colorcirsave save def % prevent left over effects
+
+gsave
+/Times-Roman findfont 24 scalefont setfont
+72 72 translate 0 0 moveto 1 0 0 setrgbcolor (Red) show
+72 0 translate 0 0 moveto 0 1 0 setrgbcolor (Green) show
+72 0 translate 0 0 moveto 0 0 1 setrgbcolor (Blue) show
+72 0 translate 0 0 moveto 1 1 0 setrgbcolor (Yellow) show
+72 0 translate 0 0 moveto 1 0 1 setrgbcolor (Pink) show
+72 0 translate 0 0 moveto 0 1 1 setrgbcolor (Cyan) show
+72 0 translate 0 0 moveto 0.9 0.9 0.9 setrgbcolor ('White') show
+grestore
+
+0.0 setlinewidth
+
+/length 0.1 def
+/width 0.02 def
+/hsvcircle {
+gsave
+ /h 0.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ length 0.0 lineto
+ length width lineto
+ 0.0 width lineto
+ closepath
+ h 1.0 1.0 sethsbcolor
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %length 0.0 lineto
+ %length width lineto
+ %0.0 width lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+
+ grestore
+ /h h 4 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+/graycircle {
+gsave
+ /h -1.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ length 0.0 lineto
+ length width lineto
+ 0.0 width lineto
+ closepath
+
+ h abs setgray
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %length 0.0 lineto
+ %length width lineto
+ %0.0 width lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+ grestore
+
+ /h h 8 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+0.0 setlinewidth
+0.0 setgray
+300 400 translate
+500 500 scale
+
+30 rotate
+1.0 0.7 scale
+-30 rotate
+
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+
+showpage
+clear cleardictstack
+colorcirsave restore
diff --git a/Master/xemtex/doc/ghostscript/examples/doretree.ps b/Master/xemtex/doc/ghostscript/examples/doretree.ps
new file mode 100644
index 00000000000..23157fabdd8
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/doretree.ps
@@ -0,0 +1,2485 @@
+%!PS-Adobe-1.0
+%%Title: dore.ps
+%%Creator: Dore' Postscript Device Driver
+%%For: Jesse Don Hickson III
+%%CreationDate: Sat Apr 11 18:26:44 1998
+%%Pages: (atend)
+%%DocumentFonts:
+%%BoundingBox: 0 0 612 612
+%%EndComments
+/doretreesave save def % prevent left over effects
+% The author, Jesse Don Hickson III, hereby places this file into
+% the public domain on this day 23 Feb 2000.
+/Dore 20 dict def
+Dore begin
+/Prgb { moveto -1 -1 rmoveto 2 0 rlineto
+ 0 2 rlineto -2 0 rlineto
+ closepath setrgbcolor fill } def
+/Lrgb { moveto lineto setrgbcolor stroke } def
+/Trgb { moveto lineto lineto closepath
+ setrgbcolor fill } def
+/BGrgb { dup 3 -1 roll dup 5 -1 roll dup
+ 7 -1 roll dup 3 -1 roll moveto
+ 6 -1 roll lineto exch 4 -1 roll
+ lineto lineto closepath
+ setrgbcolor
+ fill } def
+/Pgray { moveto -1 -1 rmoveto 2 0 rlineto
+ 0 2 rlineto -2 0 rlineto
+ closepath setgray fill } def
+/Lgray { moveto lineto setgray stroke } def
+/Tgray { moveto lineto lineto closepath
+ setgray fill } def
+/BGgray { dup 3 -1 roll dup 5 -1 roll dup
+ 7 -1 roll dup 3 -1 roll moveto
+ 6 -1 roll lineto exch 4 -1 roll
+ lineto lineto closepath setgray
+ fill } def
+/BDR { dup 3 -1 roll dup 5 -1 roll dup
+ 7 -1 roll dup 3 -1 roll moveto
+ 6 -1 roll lineto exch 4 -1 roll
+ lineto lineto closepath
+ setgray 40 setlinewidth
+ stroke } def
+%%EndProlog
+%%Page: 1 1
+
+gsave
+0.400000 0.400000 0.400000 0 0 612 612 BGrgb
+
+0.25028 0.20022 0.15028 66 73 545 73 478 350 Trgb
+0.25028 0.20022 0.15028 66 73 478 350 133 350 Trgb
+0.312849 0.250279 0.312849 69 61 542 61 545 73 Trgb
+0.312849 0.250279 0.312849 69 61 545 73 66 73 Trgb
+
+0.000000 0.699172 0.209751 308 254 305 260 302 254 Trgb
+0.000000 0.699172 0.209751 305 260 299 260 302 254 Trgb
+0.000000 0.699172 0.209751 299 260 296 255 302 254 Trgb
+0.000000 0.699172 0.209751 296 255 299 249 302 254 Trgb
+0.000000 0.699172 0.209751 299 249 305 249 302 254 Trgb
+0.000000 0.699172 0.209751 305 249 308 254 302 254 Trgb
+0.000000 0.000000 0.000000 303 225 299 249 296 255 Trgb
+0.000000 0.000000 0.000000 303 225 296 255 300 230 Trgb
+0.000000 0.006800 0.002040 308 225 305 249 299 249 Trgb
+0.000000 0.003400 0.001020 308 225 299 249 303 225 Trgb
+0.000000 0.025554 0.007666 311 230 308 254 305 249 Trgb
+0.000000 0.017877 0.005363 311 230 305 249 308 225 Trgb
+0.000000 0.698504 0.209551 318 220 315 223 313 218 Trgb
+0.000000 0.698504 0.209551 315 223 310 222 313 218 Trgb
+0.000000 0.698504 0.209551 310 222 309 217 313 218 Trgb
+0.000000 0.698504 0.209551 309 217 312 214 313 218 Trgb
+0.000000 0.698504 0.209551 312 214 317 215 313 218 Trgb
+0.000000 0.698504 0.209551 317 215 318 220 313 218 Trgb
+0.000000 0.039441 0.011832 303 258 315 223 318 220 Trgb
+0.000000 0.039755 0.011926 303 258 318 220 306 256 Trgb
+0.000000 0.013042 0.003913 299 257 310 222 315 223 Trgb
+0.000000 0.026084 0.007825 299 257 315 223 303 258 Trgb
+0.000000 0.000000 0.000000 298 253 309 217 310 222 Trgb
+0.000000 0.000000 0.000000 298 253 310 222 299 257 Trgb
+0.000000 0.696509 0.208953 351 168 348 168 348 166 Trgb
+0.000000 0.696509 0.208953 348 168 346 166 348 166 Trgb
+0.000000 0.696509 0.208953 346 166 345 164 348 166 Trgb
+0.000000 0.696509 0.208953 345 164 348 164 348 166 Trgb
+0.000000 0.696509 0.208953 348 164 351 166 348 166 Trgb
+0.000000 0.696509 0.208953 351 166 351 168 348 166 Trgb
+0.000000 0.059893 0.017968 314 220 348 168 351 168 Trgb
+0.000000 0.060927 0.018278 314 220 351 168 316 221 Trgb
+0.000000 0.019620 0.005886 311 218 346 166 348 168 Trgb
+0.000000 0.039239 0.011772 311 218 348 168 314 220 Trgb
+0.000000 0.000000 0.000000 311 216 345 164 346 166 Trgb
+0.000000 0.000000 0.000000 311 216 346 166 311 218 Trgb
+0.000000 0.000000 0.000000 350 168 349 168 348 166 Trgb
+0.000000 0.000000 0.000000 349 168 347 166 348 166 Trgb
+0.000000 0.000000 0.000000 347 166 346 164 348 166 Trgb
+0.000000 0.000000 0.000000 346 164 347 164 348 166 Trgb
+0.000000 0.000000 0.000000 347 164 349 166 348 166 Trgb
+0.000000 0.000000 0.000000 349 166 350 168 348 166 Trgb
+0.000000 0.238723 0.071617 349 166 385 141 386 143 Trgb
+0.000000 0.241460 0.072438 349 166 386 143 350 168 Trgb
+0.000000 0.078662 0.023599 347 164 384 140 385 141 Trgb
+0.000000 0.157324 0.047197 347 164 385 141 349 166 Trgb
+0.000000 0.000000 0.000000 346 164 383 140 384 140 Trgb
+0.000000 0.000000 0.000000 346 164 384 140 347 164 Trgb
+0.340732 0.248642 0.117875 397 153 395 142 402 143 Trgb
+0.278657 0.203344 0.096400 395 127 402 143 395 142 Trgb
+0.247789 0.180819 0.085722 395 142 386 130 395 127 Trgb
+0.119439 0.087158 0.041319 386 130 377 126 395 127 Trgb
+0.106393 0.077638 0.036806 376 140 383 156 371 151 Trgb
+0.318775 0.232620 0.110279 395 142 397 153 383 156 Trgb
+0.234743 0.171299 0.081209 383 156 376 140 395 142 Trgb
+0.225832 0.164797 0.078126 386 130 395 142 376 140 Trgb
+0.033948 0.024773 0.011744 366 140 376 140 371 151 Trgb
+0.000000 0.000000 0.000000 372 130 377 126 366 140 Trgb
+0.033948 0.024773 0.011744 376 140 366 140 377 126 Trgb
+0.097482 0.071136 0.033724 377 126 386 130 376 140 Trgb
+0.072446 0.052866 0.025062 383 156 373 156 371 151 Trgb
+0.228924 0.167052 0.079195 397 153 391 158 383 156 Trgb
+0.110944 0.080959 0.038381 373 156 383 156 391 158 Trgb
+0.000000 0.699929 0.209979 390 172 391 170 391 172 Trgb
+0.000000 0.699929 0.209979 391 170 392 170 391 172 Trgb
+0.000000 0.699929 0.209979 392 170 393 172 391 172 Trgb
+0.000000 0.699929 0.209979 393 172 392 174 391 172 Trgb
+0.000000 0.699929 0.209979 392 174 391 174 391 172 Trgb
+0.000000 0.699929 0.209979 391 174 390 172 391 172 Trgb
+0.000000 0.004526 0.001358 348 164 391 170 390 172 Trgb
+0.000000 0.006998 0.002099 348 164 390 172 347 166 Trgb
+0.000000 0.000685 0.000205 349 164 392 170 391 170 Trgb
+0.000000 0.001370 0.000411 349 164 391 170 348 164 Trgb
+0.000000 0.008785 0.002635 347 166 390 172 391 174 Trgb
+0.000000 0.008100 0.002430 347 166 391 174 347 168 Trgb
+0.315444 0.255254 0.114140 397 175 404 160 408 174 Trgb
+0.160986 0.130268 0.058251 383 174 386 160 397 175 Trgb
+0.207378 0.167808 0.075037 404 160 397 175 386 160 Trgb
+0.095933 0.077628 0.034712 386 160 393 153 404 160 Trgb
+0.267978 0.216844 0.096964 404 160 409 172 408 174 Trgb
+0.330957 0.267806 0.119752 402 187 397 175 408 174 Trgb
+0.176499 0.142820 0.063864 384 186 383 174 397 175 Trgb
+0.238403 0.192912 0.086263 397 175 402 187 384 186 Trgb
+0.137926 0.111608 0.049907 390 190 384 186 402 187 Trgb
+0.049541 0.040088 0.017926 386 160 383 174 374 172 Trgb
+0.015977 0.012928 0.005781 374 172 381 157 386 160 Trgb
+0.015977 0.012928 0.005781 393 153 386 160 381 157 Trgb
+0.283490 0.229397 0.102577 409 172 402 187 408 174 Trgb
+0.065053 0.052640 0.023539 383 174 384 186 374 172 Trgb
+0.031489 0.025481 0.011394 379 183 374 172 384 186 Trgb
+0.042458 0.034357 0.015363 384 186 390 190 379 183 Trgb
+0.000000 0.697723 0.209317 341 150 344 149 343 152 Trgb
+0.000000 0.697723 0.209317 344 149 346 151 343 152 Trgb
+0.000000 0.697723 0.209317 346 151 345 153 343 152 Trgb
+0.000000 0.697723 0.209317 345 153 343 154 343 152 Trgb
+0.000000 0.697723 0.209317 343 154 341 152 343 152 Trgb
+0.000000 0.697723 0.209317 341 152 341 150 343 152 Trgb
+0.000000 0.049494 0.014848 350 168 345 153 346 151 Trgb
+0.000000 0.044068 0.013220 350 168 346 151 350 165 Trgb
+0.000000 0.029160 0.008748 348 168 343 154 345 153 Trgb
+0.000000 0.042040 0.012612 348 168 345 153 350 168 Trgb
+0.000000 0.005426 0.001628 346 167 341 152 343 154 Trgb
+0.000000 0.010853 0.003256 346 167 343 154 348 168 Trgb
+0.041998 0.199607 0.048321 336 144 348 143 342 148 Trgb
+0.000000 0.000000 0.000000 334 144 343 140 336 144 Trgb
+0.020666 0.098222 0.023778 348 143 336 144 343 140 Trgb
+0.028561 0.135744 0.032861 343 140 351 143 348 143 Trgb
+0.080827 0.384157 0.092997 348 143 349 154 342 148 Trgb
+0.101740 0.483551 0.117058 356 151 352 159 349 154 Trgb
+0.088824 0.422164 0.102198 349 154 348 143 356 151 Trgb
+0.057889 0.275137 0.066605 351 143 356 151 348 143 Trgb
+0.030833 0.146542 0.035475 337 155 336 144 342 148 Trgb
+0.000000 0.000000 0.000000 331 153 334 144 336 144 Trgb
+0.009501 0.045158 0.010932 336 144 337 155 331 153 Trgb
+0.009501 0.045158 0.010932 335 161 331 153 337 155 Trgb
+0.069662 0.331092 0.080151 349 154 337 155 342 148 Trgb
+0.090575 0.430486 0.104212 352 159 344 163 349 154 Trgb
+0.066494 0.316036 0.076506 337 155 349 154 344 163 Trgb
+0.027665 0.131486 0.031830 344 163 335 161 337 155 Trgb
+0.000000 0.699775 0.209933 370 210 368 207 370 207 Trgb
+0.000000 0.699775 0.209933 368 207 369 204 370 207 Trgb
+0.000000 0.699775 0.209933 369 204 370 203 370 207 Trgb
+0.000000 0.699775 0.209933 370 203 372 206 370 207 Trgb
+0.000000 0.699775 0.209933 372 206 372 209 370 207 Trgb
+0.000000 0.699775 0.209933 372 209 370 210 370 207 Trgb
+0.000000 0.011674 0.003502 312 219 368 207 370 210 Trgb
+0.000000 0.014707 0.004412 312 219 370 210 313 222 Trgb
+0.000000 0.002881 0.000864 312 216 369 204 368 207 Trgb
+0.000000 0.005761 0.001728 312 216 368 207 312 219 Trgb
+0.000000 0.014859 0.004458 313 222 370 210 372 209 Trgb
+0.000000 0.011978 0.003594 313 222 372 209 315 221 Trgb
+0.000000 0.000000 0.000000 369 208 369 209 370 207 Trgb
+0.000000 0.000000 0.000000 369 209 369 207 370 207 Trgb
+0.000000 0.000000 0.000000 369 207 371 205 370 207 Trgb
+0.000000 0.000000 0.000000 371 205 372 205 370 207 Trgb
+0.000000 0.000000 0.000000 372 205 371 206 370 207 Trgb
+0.000000 0.000000 0.000000 371 206 369 208 370 207 Trgb
+0.000000 0.033825 0.010148 371 206 410 235 409 237 Trgb
+0.000000 0.027366 0.008210 371 206 409 237 369 208 Trgb
+0.000000 0.026347 0.007904 372 205 411 234 410 235 Trgb
+0.000000 0.033316 0.009995 372 205 410 235 371 206 Trgb
+0.000000 0.013938 0.004181 369 208 409 237 408 237 Trgb
+0.000000 0.006969 0.002091 369 208 408 237 369 209 Trgb
+0.402052 0.138238 0.108058 417 254 429 236 426 248 Trgb
+0.324052 0.111419 0.087094 402 249 413 237 417 254 Trgb
+0.415721 0.142938 0.111732 429 236 417 254 413 237 Trgb
+0.399297 0.137291 0.107317 413 237 421 224 429 236 Trgb
+0.303041 0.104195 0.081447 421 224 422 218 429 236 Trgb
+0.196628 0.067607 0.052847 397 253 402 249 417 254 Trgb
+0.000000 0.000000 0.000000 405 218 392 236 392 223 Trgb
+0.195487 0.067215 0.052540 413 237 402 249 392 236 Trgb
+0.127423 0.043812 0.034247 392 236 405 218 413 237 Trgb
+0.239564 0.082370 0.064387 421 224 413 237 405 218 Trgb
+0.000000 0.000000 0.000000 402 218 405 218 392 223 Trgb
+0.031167 0.010716 0.008377 405 218 402 218 422 218 Trgb
+0.143308 0.049274 0.038516 422 218 421 224 405 218 Trgb
+0.000000 0.000000 0.000000 392 236 390 235 392 223 Trgb
+0.068063 0.023402 0.018293 402 249 397 253 392 236 Trgb
+0.000000 0.000000 0.000000 390 235 392 236 397 253 Trgb
+0.000000 0.699725 0.209917 388 238 390 237 389 239 Trgb
+0.000000 0.699725 0.209917 390 237 392 238 389 239 Trgb
+0.000000 0.699725 0.209917 392 238 391 240 389 239 Trgb
+0.000000 0.699725 0.209917 391 240 388 241 389 239 Trgb
+0.000000 0.699725 0.209917 388 241 387 240 389 239 Trgb
+0.000000 0.699725 0.209917 387 240 388 238 389 239 Trgb
+0.000000 0.011031 0.003309 371 205 390 237 388 238 Trgb
+0.000000 0.005515 0.001655 371 205 388 238 369 206 Trgb
+0.000000 0.017121 0.005136 372 206 392 238 390 237 Trgb
+0.000000 0.016834 0.005050 372 206 390 237 371 205 Trgb
+0.000000 0.000000 0.000000 369 206 388 238 387 240 Trgb
+0.000000 0.000000 0.000000 369 206 387 240 368 207 Trgb
+0.349698 0.218700 0.113680 387 242 406 239 397 252 Trgb
+0.133776 0.083663 0.043488 379 231 393 224 387 242 Trgb
+0.271918 0.170056 0.088395 406 239 387 242 393 224 Trgb
+0.255724 0.159929 0.083131 393 224 405 226 406 239 Trgb
+0.354064 0.221431 0.115099 406 239 402 254 397 252 Trgb
+0.280651 0.175518 0.091234 402 254 406 239 407 236 Trgb
+0.260091 0.162660 0.084550 405 226 407 236 406 239 Trgb
+0.250481 0.156650 0.081426 384 257 387 242 397 252 Trgb
+0.086350 0.054003 0.028071 371 242 379 231 387 242 Trgb
+0.125275 0.078347 0.040724 387 242 384 257 371 242 Trgb
+0.038925 0.024344 0.012654 374 251 371 242 384 257 Trgb
+0.047425 0.029660 0.015417 393 224 379 231 376 224 Trgb
+0.047425 0.029660 0.015417 376 224 394 221 393 224 Trgb
+0.117582 0.073536 0.038224 405 226 393 224 394 221 Trgb
+0.254847 0.159381 0.082846 402 254 384 257 397 252 Trgb
+0.000000 0.000000 0.000000 379 231 371 242 376 224 Trgb
+0.000000 0.682373 0.204712 391 162 392 163 390 162 Trgb
+0.000000 0.682373 0.204712 392 163 391 163 390 162 Trgb
+0.000000 0.682373 0.204712 391 163 389 162 390 162 Trgb
+0.000000 0.682373 0.204712 389 162 388 161 390 162 Trgb
+0.000000 0.682373 0.204712 388 161 389 161 390 162 Trgb
+0.000000 0.682373 0.204712 389 161 391 162 390 162 Trgb
+0.000000 0.137665 0.041299 371 208 391 163 392 163 Trgb
+0.000000 0.128141 0.038442 371 208 392 163 372 208 Trgb
+0.000000 0.068110 0.020433 369 207 389 162 391 163 Trgb
+0.000000 0.107649 0.032295 369 207 391 163 371 208 Trgb
+0.000000 0.009524 0.002857 368 206 388 161 389 162 Trgb
+0.000000 0.019047 0.005714 368 206 389 162 369 207 Trgb
+0.163081 0.086165 0.049849 403 150 407 155 399 143 Trgb
+0.357741 0.189016 0.109351 408 169 406 171 407 155 Trgb
+0.201687 0.106563 0.061650 407 155 389 148 399 143 Trgb
+0.192638 0.101782 0.058884 394 168 380 161 389 148 Trgb
+0.292072 0.154319 0.089278 389 148 407 155 394 168 Trgb
+0.396347 0.209413 0.121152 406 171 394 168 407 155 Trgb
+0.311639 0.164657 0.095259 406 171 408 169 395 181 Trgb
+0.074953 0.039602 0.022911 389 148 385 143 399 143 Trgb
+0.069652 0.036801 0.021291 380 161 372 155 389 148 Trgb
+0.042354 0.022378 0.012946 385 143 389 148 372 155 Trgb
+0.080631 0.042602 0.024647 377 174 395 181 382 180 Trgb
+0.150284 0.079404 0.045937 380 161 394 168 377 174 Trgb
+0.203616 0.107582 0.062240 395 181 377 174 394 168 Trgb
+0.350245 0.185055 0.107060 394 168 406 171 395 181 Trgb
+0.027298 0.014423 0.008344 372 155 380 161 377 174 Trgb
+0.000000 0.000000 0.000000 377 174 374 169 372 155 Trgb
+0.000000 0.697969 0.209391 293 250 295 248 296 251 Trgb
+0.000000 0.697969 0.209391 295 248 299 249 296 251 Trgb
+0.000000 0.697969 0.209391 299 249 299 253 296 251 Trgb
+0.000000 0.697969 0.209391 299 253 297 254 296 251 Trgb
+0.000000 0.697969 0.209391 297 254 293 253 296 251 Trgb
+0.000000 0.697969 0.209391 293 253 293 250 296 251 Trgb
+0.000000 0.000000 0.000000 313 215 295 248 293 250 Trgb
+0.000000 0.000000 0.000000 313 215 293 250 310 217 Trgb
+0.000000 0.029354 0.008806 316 217 299 249 295 248 Trgb
+0.000000 0.014677 0.004403 316 217 295 248 313 215 Trgb
+0.000000 0.046680 0.014004 317 220 299 253 299 249 Trgb
+0.000000 0.045355 0.013607 317 220 299 249 316 217 Trgb
+0.156998 0.121144 0.055628 280 252 297 247 291 260 Trgb
+0.000000 0.000000 0.000000 279 244 288 235 280 252 Trgb
+0.084838 0.065463 0.030060 297 247 280 252 288 235 Trgb
+0.132657 0.102362 0.047004 288 235 302 236 297 247 Trgb
+0.278211 0.214675 0.098577 297 247 305 263 291 260 Trgb
+0.324474 0.250373 0.114969 312 246 313 259 305 263 Trgb
+0.310052 0.239244 0.109859 305 263 297 247 312 246 Trgb
+0.236658 0.182612 0.083854 302 236 312 246 297 247 Trgb
+0.089372 0.068962 0.031667 289 268 280 252 291 260 Trgb
+0.000000 0.000000 0.000000 280 256 279 244 280 252 Trgb
+0.017212 0.013281 0.006099 280 252 289 268 280 256 Trgb
+0.047819 0.036898 0.016943 302 236 288 235 303 235 Trgb
+0.210585 0.162493 0.074615 305 263 289 268 291 260 Trgb
+0.256848 0.198191 0.091008 313 259 304 267 305 263 Trgb
+0.174799 0.134880 0.061936 289 268 305 263 304 267 Trgb
+0.151820 0.117148 0.053794 312 246 302 236 303 235 Trgb
+0.000000 0.699942 0.209983 348 304 347 302 351 301 Trgb
+0.000000 0.699942 0.209983 347 302 349 298 351 301 Trgb
+0.000000 0.699942 0.209983 349 298 353 297 351 301 Trgb
+0.000000 0.699942 0.209983 353 297 355 300 351 301 Trgb
+0.000000 0.699942 0.209983 355 300 352 303 351 301 Trgb
+0.000000 0.699942 0.209983 352 303 348 304 351 301 Trgb
+0.000000 0.000000 0.000000 298 255 347 302 348 304 Trgb
+0.000000 0.000000 0.000000 298 255 348 304 300 258 Trgb
+0.000000 0.001821 0.000546 301 252 349 298 347 302 Trgb
+0.000000 0.000911 0.000273 301 252 347 302 298 255 Trgb
+0.000000 0.006793 0.002038 304 251 353 297 349 298 Trgb
+0.000000 0.004762 0.001429 304 251 349 298 301 252 Trgb
+0.000000 0.018322 0.005497 350 301 386 356 384 357 Trgb
+0.000000 0.009161 0.002748 350 301 384 357 348 302 Trgb
+0.000000 0.035636 0.010691 353 299 389 354 386 356 Trgb
+0.000000 0.031560 0.009468 353 299 386 356 350 301 Trgb
+0.000000 0.021390 0.006417 353 299 390 354 389 354 Trgb
+0.000000 0.030551 0.009165 353 299 389 354 353 299 Trgb
+0.000000 0.677885 0.203366 386 356 385 355 387 356 Trgb
+0.000000 0.677885 0.203366 385 355 386 354 387 356 Trgb
+0.000000 0.677885 0.203366 386 354 388 355 387 356 Trgb
+0.000000 0.677885 0.203366 388 355 389 356 387 356 Trgb
+0.000000 0.677885 0.203366 389 356 388 357 387 356 Trgb
+0.000000 0.677885 0.203366 388 357 386 356 387 356 Trgb
+0.000000 0.144797 0.043439 388 357 369 396 367 395 Trgb
+0.000000 0.115047 0.034514 388 357 367 395 386 356 Trgb
+0.000000 0.117682 0.035305 389 356 369 395 369 396 Trgb
+0.000000 0.146114 0.043834 389 356 369 396 388 357 Trgb
+0.000000 0.056865 0.017059 386 356 367 395 365 394 Trgb
+0.000000 0.028432 0.008530 386 356 365 394 385 355 Trgb
+0.009232 0.148327 0.031512 363 401 370 403 364 402 Trgb
+0.022270 0.357806 0.076015 365 397 371 399 363 401 Trgb
+0.022149 0.355867 0.075603 370 403 363 401 371 399 Trgb
+0.031065 0.499105 0.106034 371 399 375 399 370 403 Trgb
+0.009353 0.150267 0.031924 360 393 365 397 363 401 Trgb
+0.002795 0.044900 0.009539 363 401 359 396 360 393 Trgb
+0.000000 0.000000 0.000000 360 390 360 393 359 396 Trgb
+0.019209 0.308621 0.065566 376 392 369 391 371 387 Trgb
+0.025955 0.417018 0.088595 371 399 365 397 369 391 Trgb
+0.029520 0.474291 0.100762 369 391 376 392 371 399 Trgb
+0.034750 0.558317 0.118613 375 399 371 399 376 392 Trgb
+0.009086 0.145981 0.031013 369 391 365 386 371 387 Trgb
+0.013038 0.209479 0.044503 365 397 360 393 369 391 Trgb
+0.006480 0.104112 0.022118 365 386 369 391 360 393 Trgb
+0.000000 0.000000 0.000000 360 393 360 390 365 386 Trgb
+0.000000 0.698602 0.209581 389 395 390 396 387 396 Trgb
+0.000000 0.698602 0.209581 390 396 388 397 387 396 Trgb
+0.000000 0.698602 0.209581 388 397 386 397 387 396 Trgb
+0.000000 0.698602 0.209581 386 397 385 396 387 396 Trgb
+0.000000 0.698602 0.209581 385 396 387 395 387 396 Trgb
+0.000000 0.698602 0.209581 387 395 389 395 387 396 Trgb
+0.000000 0.037233 0.011170 389 356 390 396 389 395 Trgb
+0.000000 0.038872 0.011662 389 356 389 395 389 355 Trgb
+0.000000 0.003278 0.000983 386 354 387 395 385 396 Trgb
+0.000000 0.001639 0.000492 386 354 385 396 385 355 Trgb
+0.000000 0.028646 0.008594 389 355 389 395 387 395 Trgb
+0.000000 0.016781 0.005034 389 355 387 395 386 354 Trgb
+0.404995 0.114698 0.103939 398 404 399 414 388 415 Trgb
+0.435739 0.123405 0.111829 402 388 409 395 398 404 Trgb
+0.425131 0.120400 0.109106 399 414 398 404 409 395 Trgb
+0.324162 0.091805 0.083193 376 404 398 404 388 415 Trgb
+0.354905 0.100512 0.091083 386 385 402 388 398 404 Trgb
+0.263463 0.074615 0.067616 398 404 376 404 386 385 Trgb
+0.091315 0.025861 0.023435 371 389 386 385 376 404 Trgb
+0.276324 0.078257 0.070916 409 395 402 388 397 377 Trgb
+0.152013 0.043051 0.039013 377 414 376 404 388 415 Trgb
+0.039290 0.011127 0.010084 376 404 377 414 366 396 Trgb
+0.039290 0.011127 0.010084 366 396 371 389 376 404 Trgb
+0.195491 0.055364 0.050171 402 388 386 385 397 377 Trgb
+0.064759 0.018340 0.016620 376 378 397 377 386 385 Trgb
+0.052024 0.014734 0.013352 386 385 371 389 376 378 Trgb
+0.000000 0.000000 0.000000 371 389 366 396 376 378 Trgb
+0.000000 0.699996 0.209999 421 374 420 376 419 375 Trgb
+0.000000 0.699996 0.209999 420 376 419 377 419 375 Trgb
+0.000000 0.699996 0.209999 419 377 418 376 419 375 Trgb
+0.000000 0.699996 0.209999 418 376 418 374 419 375 Trgb
+0.000000 0.699996 0.209999 418 374 420 373 419 375 Trgb
+0.000000 0.699996 0.209999 420 373 421 374 419 375 Trgb
+0.000000 0.000000 0.000000 385 357 418 376 419 377 Trgb
+0.000000 0.000000 0.000000 385 357 419 377 386 358 Trgb
+0.000000 0.000000 0.000000 386 355 418 374 418 376 Trgb
+0.000000 0.000000 0.000000 386 355 418 376 385 357 Trgb
+0.000000 0.001176 0.000353 388 354 420 373 418 374 Trgb
+0.000000 0.000588 0.000176 388 354 418 374 386 355 Trgb
+0.289362 0.280459 0.113964 436 374 429 389 431 382 Trgb
+0.278122 0.269564 0.109537 429 389 419 386 431 382 Trgb
+0.077960 0.075561 0.030704 412 390 407 384 419 386 Trgb
+0.159921 0.155000 0.062984 419 386 429 389 412 390 Trgb
+0.292601 0.283598 0.115240 426 371 436 374 431 382 Trgb
+0.104389 0.101177 0.041113 426 360 431 366 436 374 Trgb
+0.181640 0.176051 0.071538 436 374 426 371 426 360 Trgb
+0.094729 0.091814 0.037309 417 362 426 360 426 371 Trgb
+0.281360 0.272703 0.110813 419 386 426 371 431 382 Trgb
+0.077960 0.075561 0.030704 407 384 409 372 419 386 Trgb
+0.163159 0.158139 0.064260 426 371 419 386 409 372 Trgb
+0.087489 0.084798 0.034457 409 372 417 362 426 371 Trgb
+0.009530 0.009236 0.003753 426 360 417 362 410 361 Trgb
+0.000000 0.000000 0.000000 409 372 407 384 403 376 Trgb
+0.000000 0.000000 0.000000 403 376 410 361 409 372 Trgb
+0.002290 0.002219 0.000902 417 362 409 372 410 361 Trgb
+0.000000 0.697280 0.209184 347 363 350 363 349 364 Trgb
+0.000000 0.697280 0.209184 350 363 352 364 349 364 Trgb
+0.000000 0.697280 0.209184 352 364 351 365 349 364 Trgb
+0.000000 0.697280 0.209184 351 365 348 365 349 364 Trgb
+0.000000 0.697280 0.209184 348 365 346 364 349 364 Trgb
+0.000000 0.697280 0.209184 346 364 347 363 349 364 Trgb
+0.000000 0.034648 0.010394 352 300 350 363 347 363 Trgb
+0.000000 0.017324 0.005197 352 300 347 363 349 300 Trgb
+0.000000 0.053795 0.016138 354 301 352 364 350 363 Trgb
+0.000000 0.052883 0.015865 354 301 350 363 352 300 Trgb
+0.000000 0.000000 0.000000 349 300 347 363 346 364 Trgb
+0.000000 0.000000 0.000000 349 300 346 364 348 301 Trgb
+0.308371 0.106028 0.082880 340 375 360 376 349 384 Trgb
+0.157725 0.054231 0.042391 336 359 352 359 340 375 Trgb
+0.324928 0.111721 0.087330 360 376 340 375 352 359 Trgb
+0.420222 0.144486 0.112941 352 359 366 361 360 376 Trgb
+0.317849 0.109287 0.085427 360 376 358 381 349 384 Trgb
+0.343885 0.118239 0.092425 358 381 360 376 369 365 Trgb
+0.429700 0.147745 0.115489 366 361 369 365 360 376 Trgb
+0.141167 0.048538 0.037941 337 380 340 375 349 384 Trgb
+0.055697 0.019150 0.014970 329 363 336 359 340 375 Trgb
+0.055697 0.019150 0.014970 340 375 337 380 329 363 Trgb
+0.046330 0.015930 0.012452 361 348 341 347 350 344 Trgb
+0.102027 0.035080 0.027422 352 359 336 359 341 347 Trgb
+0.148358 0.051010 0.039874 341 347 361 348 352 359 Trgb
+0.299349 0.102926 0.080455 366 361 352 359 361 348 Trgb
+0.308827 0.106185 0.083002 369 365 366 361 361 348 Trgb
+0.000000 0.000000 0.000000 336 359 329 363 341 347 Trgb
+0.000000 0.698661 0.209598 356 291 357 294 353 293 Trgb
+0.000000 0.698661 0.209598 357 294 354 296 353 293 Trgb
+0.000000 0.698661 0.209598 354 296 351 295 353 293 Trgb
+0.000000 0.698661 0.209598 351 295 350 292 353 293 Trgb
+0.000000 0.698661 0.209598 350 292 353 290 353 293 Trgb
+0.000000 0.698661 0.209598 353 290 356 291 353 293 Trgb
+0.000000 0.033302 0.009991 352 304 354 296 357 294 Trgb
+0.000000 0.037838 0.011351 352 304 357 294 354 302 Trgb
+0.000000 0.009589 0.002877 348 303 351 295 354 296 Trgb
+0.000000 0.019177 0.005753 348 303 354 296 352 304 Trgb
+0.000000 0.000000 0.000000 348 300 350 292 351 295 Trgb
+0.000000 0.000000 0.000000 348 300 351 295 348 303 Trgb
+0.000000 0.000000 0.000000 328 260 328 261 326 261 Trgb
+0.000000 0.000000 0.000000 328 261 326 263 326 261 Trgb
+0.000000 0.000000 0.000000 326 263 324 263 326 261 Trgb
+0.000000 0.000000 0.000000 324 263 324 262 326 261 Trgb
+0.000000 0.000000 0.000000 324 262 326 260 326 261 Trgb
+0.000000 0.000000 0.000000 326 260 328 260 326 261 Trgb
+0.000000 0.115033 0.034510 355 293 328 261 328 260 Trgb
+0.000000 0.073975 0.022192 355 293 328 260 355 291 Trgb
+0.000000 0.134147 0.040244 354 295 326 263 328 261 Trgb
+0.000000 0.145119 0.043536 354 295 328 261 355 293 Trgb
+0.000000 0.041058 0.012317 352 295 324 263 326 263 Trgb
+0.000000 0.082116 0.024635 352 295 326 263 354 295 Trgb
+0.012930 0.111978 0.024982 327 251 325 259 320 255 Trgb
+0.024464 0.211872 0.047267 334 254 335 258 327 251 Trgb
+0.032663 0.282874 0.063107 325 259 327 251 335 258 Trgb
+0.055838 0.483582 0.107884 335 258 331 265 325 259 Trgb
+0.012930 0.111978 0.024982 325 259 317 262 320 255 Trgb
+0.013042 0.112948 0.025198 324 269 319 269 317 262 Trgb
+0.025972 0.224926 0.050180 317 262 325 259 324 269 Trgb
+0.049147 0.425634 0.094956 331 265 324 269 325 259 Trgb
+0.000000 0.000000 0.000000 319 254 327 251 320 255 Trgb
+0.046381 0.401681 0.089613 336 261 334 269 335 258 Trgb
+0.062754 0.543471 0.121245 331 265 335 258 334 269 Trgb
+0.000000 0.000000 0.000000 317 262 319 254 320 255 Trgb
+0.013154 0.113918 0.025414 319 269 324 269 325 272 Trgb
+0.032999 0.285785 0.063757 334 269 325 272 324 269 Trgb
+0.056063 0.485523 0.108317 324 269 331 265 334 269 Trgb
+0.000000 0.677401 0.203220 372 250 370 250 370 249 Trgb
+0.000000 0.677401 0.203220 370 250 368 249 370 249 Trgb
+0.000000 0.677401 0.203220 368 249 367 248 370 249 Trgb
+0.000000 0.677401 0.203220 367 248 369 248 370 249 Trgb
+0.000000 0.677401 0.203220 369 248 371 249 370 249 Trgb
+0.000000 0.677401 0.203220 371 249 372 250 370 249 Trgb
+0.000000 0.155473 0.046642 354 294 370 250 372 250 Trgb
+0.000000 0.146657 0.043997 354 294 372 250 356 294 Trgb
+0.000000 0.072397 0.021719 352 293 368 249 370 250 Trgb
+0.000000 0.118344 0.035503 352 293 370 250 354 294 Trgb
+0.000000 0.008817 0.002645 351 292 367 248 368 249 Trgb
+0.000000 0.017634 0.005290 351 292 368 249 352 293 Trgb
+0.253712 0.080223 0.066787 390 240 373 240 377 229 Trgb
+0.428856 0.135602 0.112892 390 257 383 259 390 240 Trgb
+0.393311 0.124363 0.103535 373 240 390 240 383 259 Trgb
+0.382168 0.120840 0.100601 383 259 367 256 373 240 Trgb
+0.133898 0.042338 0.035247 373 240 360 230 377 229 Trgb
+0.000000 0.000000 0.000000 353 248 349 241 360 230 Trgb
+0.100475 0.031770 0.026449 360 230 373 240 353 248 Trgb
+0.209145 0.066131 0.055055 367 256 353 248 373 240 Trgb
+0.125755 0.039763 0.033104 363 268 379 268 362 269 Trgb
+0.381589 0.120657 0.100449 383 259 390 257 379 268 Trgb
+0.298777 0.094472 0.078650 379 268 363 268 383 259 Trgb
+0.334900 0.105894 0.088159 367 256 383 259 363 268 Trgb
+0.053208 0.016824 0.014006 350 258 363 268 362 269 Trgb
+0.000000 0.000000 0.000000 349 241 353 248 350 258 Trgb
+0.053208 0.016824 0.014006 363 268 350 258 353 248 Trgb
+0.161878 0.051185 0.042613 353 248 367 256 363 268 Trgb
+0.000000 0.699775 0.209932 374 329 375 328 376 328 Trgb
+0.000000 0.699775 0.209932 375 328 377 327 376 328 Trgb
+0.000000 0.699775 0.209932 377 327 378 327 376 328 Trgb
+0.000000 0.699775 0.209932 378 327 378 329 376 328 Trgb
+0.000000 0.699775 0.209932 378 329 375 330 376 328 Trgb
+0.000000 0.699775 0.209932 375 330 374 329 376 328 Trgb
+0.000000 0.000000 0.000000 352 292 375 328 374 329 Trgb
+0.000000 0.000000 0.000000 352 292 374 329 351 294 Trgb
+0.000000 0.010089 0.003027 354 291 377 327 375 328 Trgb
+0.000000 0.005044 0.001513 354 291 375 328 352 292 Trgb
+0.000000 0.015452 0.004635 356 292 378 327 377 327 Trgb
+0.000000 0.015292 0.004588 356 292 377 327 354 291 Trgb
+0.251815 0.220453 0.094454 371 344 380 331 385 342 Trgb
+0.043448 0.038037 0.016297 360 337 362 328 371 344 Trgb
+0.140870 0.123326 0.052839 380 331 371 344 362 328 Trgb
+0.124253 0.108778 0.046606 362 328 373 319 380 331 Trgb
+0.321818 0.281738 0.120711 380 331 393 331 385 342 Trgb
+0.216925 0.189909 0.081367 385 315 392 319 393 331 Trgb
+0.264847 0.231862 0.099342 393 331 380 331 385 315 Trgb
+0.178226 0.156030 0.066851 373 319 385 315 380 331 Trgb
+0.213871 0.187235 0.080221 384 344 371 344 385 342 Trgb
+0.000000 0.000000 0.000000 362 328 360 337 359 325 Trgb
+0.000000 0.000000 0.000000 359 325 368 312 362 328 Trgb
+0.026831 0.023489 0.010064 373 319 362 328 368 312 Trgb
+0.283874 0.248520 0.106479 393 331 384 344 385 342 Trgb
+0.103473 0.090587 0.038812 392 319 385 315 381 313 Trgb
+0.053974 0.047252 0.020245 368 312 381 313 385 315 Trgb
+0.080804 0.070741 0.030309 385 315 373 319 368 312 Trgb
+0.000000 0.665402 0.199621 241 278 244 280 242 282 Trgb
+0.000000 0.665402 0.199621 244 280 245 284 242 282 Trgb
+0.000000 0.665402 0.199621 245 284 243 286 242 282 Trgb
+0.000000 0.665402 0.199621 243 286 240 284 242 282 Trgb
+0.000000 0.665402 0.199621 240 284 239 280 242 282 Trgb
+0.000000 0.665402 0.199621 239 280 241 278 242 282 Trgb
+0.000000 0.101649 0.030495 305 252 244 280 241 278 Trgb
+0.000000 0.050824 0.015247 305 252 241 278 301 250 Trgb
+0.000000 0.191076 0.057323 305 257 245 284 244 280 Trgb
+0.000000 0.171775 0.051532 305 257 244 280 305 252 Trgb
+0.000000 0.108729 0.032619 303 259 243 286 245 284 Trgb
+0.000000 0.159553 0.047866 303 259 245 284 305 257 Trgb
+0.000000 0.000000 0.000000 183 257 182 260 181 259 Trgb
+0.000000 0.000000 0.000000 182 260 180 262 181 259 Trgb
+0.000000 0.000000 0.000000 180 262 180 261 181 259 Trgb
+0.000000 0.000000 0.000000 180 261 181 258 181 259 Trgb
+0.000000 0.000000 0.000000 181 258 182 256 181 259 Trgb
+0.000000 0.000000 0.000000 182 256 183 257 181 259 Trgb
+0.000000 0.058545 0.017564 243 283 182 260 183 257 Trgb
+0.000000 0.052058 0.015618 243 283 183 257 243 280 Trgb
+0.000000 0.034650 0.010395 241 285 180 262 182 260 Trgb
+0.000000 0.049841 0.014952 241 285 182 260 243 283 Trgb
+0.000000 0.030381 0.009114 243 280 183 257 182 256 Trgb
+0.000000 0.015191 0.004557 243 280 182 256 243 279 Trgb
+0.000000 0.699531 0.209859 182 258 183 258 181 259 Trgb
+0.000000 0.699531 0.209859 183 258 182 259 181 259 Trgb
+0.000000 0.699531 0.209859 182 259 180 260 181 259 Trgb
+0.000000 0.699531 0.209859 180 260 179 260 181 259 Trgb
+0.000000 0.699531 0.209859 179 260 180 259 181 259 Trgb
+0.000000 0.699531 0.209859 180 259 182 258 181 259 Trgb
+0.000000 0.018127 0.005438 180 259 158 222 160 221 Trgb
+0.000000 0.021833 0.006550 180 259 160 221 182 258 Trgb
+0.000000 0.004807 0.001442 179 260 157 224 158 222 Trgb
+0.000000 0.009615 0.002884 179 260 158 222 180 259 Trgb
+0.000000 0.020731 0.006219 182 258 160 221 161 221 Trgb
+0.000000 0.015923 0.004777 182 258 161 221 183 258 Trgb
+0.000000 0.000000 0.000000 158 206 144 215 151 210 Trgb
+0.125687 0.116237 0.048385 165 212 154 217 158 206 Trgb
+0.054272 0.050191 0.020893 144 215 158 206 154 217 Trgb
+0.059609 0.055128 0.022947 154 217 145 225 144 215 Trgb
+0.005337 0.004936 0.002055 145 225 145 232 144 215 Trgb
+0.118139 0.109256 0.045479 173 213 165 212 158 206 Trgb
+0.290405 0.268570 0.111795 155 233 169 224 167 235 Trgb
+0.245347 0.226900 0.094449 154 217 165 212 169 224 Trgb
+0.246867 0.228306 0.095035 169 224 155 233 154 217 Trgb
+0.132545 0.122579 0.051025 145 225 154 217 155 233 Trgb
+0.189409 0.175168 0.072915 160 239 155 233 167 235 Trgb
+0.091599 0.084712 0.035262 155 233 160 239 145 232 Trgb
+0.078273 0.072388 0.030132 145 232 145 225 155 233 Trgb
+0.282857 0.261589 0.108889 169 224 174 230 167 235 Trgb
+0.237798 0.219919 0.091543 165 212 173 213 169 224 Trgb
+0.231771 0.214345 0.089223 174 230 169 224 173 213 Trgb
+0.000000 0.687742 0.206322 155 248 154 246 156 245 Trgb
+0.000000 0.687742 0.206322 154 246 155 244 156 245 Trgb
+0.000000 0.687742 0.206322 155 244 157 243 156 245 Trgb
+0.000000 0.687742 0.206322 157 243 158 244 156 245 Trgb
+0.000000 0.687742 0.206322 158 244 157 247 156 245 Trgb
+0.000000 0.687742 0.206322 157 247 155 248 156 245 Trgb
+0.000000 0.066457 0.019937 183 258 158 244 157 243 Trgb
+0.000000 0.033228 0.009969 183 258 157 243 182 257 Trgb
+0.000000 0.115018 0.034505 183 261 157 247 158 244 Trgb
+0.000000 0.107351 0.032205 183 261 158 244 183 258 Trgb
+0.000000 0.056227 0.016868 181 261 155 248 157 247 Trgb
+0.000000 0.089455 0.026837 181 261 157 247 183 261 Trgb
+0.095233 0.034446 0.025936 143 255 136 238 145 239 Trgb
+0.080765 0.029213 0.021996 149 265 139 256 143 255 Trgb
+0.051549 0.018645 0.014039 136 238 143 255 139 256 Trgb
+0.053915 0.019501 0.014683 136 238 153 226 145 239 Trgb
+0.010230 0.003700 0.002786 153 226 136 238 149 228 Trgb
+0.241449 0.087332 0.065756 160 244 143 255 145 239 Trgb
+0.216750 0.078399 0.059030 163 263 149 265 143 255 Trgb
+0.333750 0.120718 0.090894 143 255 160 244 163 263 Trgb
+0.445297 0.161065 0.121272 173 250 163 263 160 244 Trgb
+0.200131 0.072388 0.054504 153 226 160 244 145 239 Trgb
+0.104898 0.037942 0.028568 163 225 173 234 153 226 Trgb
+0.251114 0.090828 0.068388 160 244 153 226 173 234 Trgb
+0.403979 0.146120 0.110020 173 234 173 250 160 244 Trgb
+0.165202 0.059754 0.044991 149 265 163 263 159 264 Trgb
+0.383518 0.138719 0.104448 163 263 173 250 176 253 Trgb
+0.342200 0.123775 0.093195 173 250 173 234 176 253 Trgb
+0.000000 0.000000 0.000000 138 279 137 277 139 279 Trgb
+0.000000 0.000000 0.000000 137 277 138 277 139 279 Trgb
+0.000000 0.000000 0.000000 138 277 139 279 139 279 Trgb
+0.000000 0.000000 0.000000 139 279 140 281 139 279 Trgb
+0.000000 0.000000 0.000000 140 281 139 281 139 279 Trgb
+0.000000 0.000000 0.000000 139 281 138 279 139 279 Trgb
+0.000000 0.007901 0.002370 181 257 138 277 137 277 Trgb
+0.000000 0.003951 0.001185 181 257 137 277 180 257 Trgb
+0.000000 0.086361 0.025908 182 259 139 279 138 277 Trgb
+0.000000 0.049106 0.014732 182 259 138 277 181 257 Trgb
+0.000000 0.115714 0.034714 182 261 140 281 139 279 Trgb
+0.000000 0.119664 0.035899 182 261 139 279 182 259 Trgb
+0.103705 0.001023 0.020945 115 270 125 287 116 290 Trgb
+0.383332 0.003780 0.077422 134 263 143 280 125 287 Trgb
+0.180283 0.001778 0.036412 125 287 115 270 134 263 Trgb
+0.076578 0.000755 0.015467 128 256 134 263 115 270 Trgb
+0.130831 0.001290 0.026424 125 287 130 303 116 290 Trgb
+0.517330 0.005102 0.104486 143 280 149 296 125 287 Trgb
+0.341407 0.003367 0.068955 130 303 125 287 149 296 Trgb
+0.332454 0.003279 0.067146 149 296 149 301 130 303 Trgb
+0.239839 0.002365 0.048441 158 272 147 256 161 269 Trgb
+0.463077 0.004567 0.093529 143 280 134 263 158 272 Trgb
+0.260028 0.002564 0.052519 147 256 158 272 134 263 Trgb
+0.076578 0.000755 0.015467 134 263 128 256 147 256 Trgb
+0.346710 0.003419 0.070026 162 287 158 272 161 269 Trgb
+0.597075 0.005888 0.120593 149 296 143 280 158 272 Trgb
+0.500898 0.004940 0.101168 158 272 162 287 149 296 Trgb
+0.412199 0.004065 0.083253 149 301 149 296 162 287 Trgb
+0.000000 0.698970 0.209691 239 286 235 285 237 282 Trgb
+0.000000 0.698970 0.209691 235 285 233 282 237 282 Trgb
+0.000000 0.698970 0.209691 233 282 235 279 237 282 Trgb
+0.000000 0.698970 0.209691 235 279 239 279 237 282 Trgb
+0.000000 0.698970 0.209691 239 279 241 283 237 282 Trgb
+0.000000 0.698970 0.209691 241 283 239 286 237 282 Trgb
+0.000000 0.004282 0.001285 244 279 239 279 235 279 Trgb
+0.000000 0.002141 0.000642 244 279 235 279 241 279 Trgb
+0.000000 0.025877 0.007763 245 282 241 283 239 279 Trgb
+0.000000 0.016150 0.004845 245 282 239 279 244 279 Trgb
+0.000000 0.031322 0.009397 244 285 239 286 241 283 Trgb
+0.000000 0.033463 0.010039 244 285 241 283 245 282 Trgb
+0.000000 0.699983 0.209995 269 294 268 292 270 291 Trgb
+0.000000 0.699983 0.209995 268 292 269 290 270 291 Trgb
+0.000000 0.699983 0.209995 269 290 270 289 270 291 Trgb
+0.000000 0.699983 0.209995 270 289 272 290 270 291 Trgb
+0.000000 0.699983 0.209995 272 290 271 293 270 291 Trgb
+0.000000 0.699983 0.209995 271 293 269 294 270 291 Trgb
+0.000000 0.002735 0.000821 235 283 268 292 269 294 Trgb
+0.000000 0.003769 0.001131 235 283 269 294 236 285 Trgb
+0.000000 0.000567 0.000170 236 281 269 290 268 292 Trgb
+0.000000 0.001134 0.000340 236 281 268 292 235 283 Trgb
+0.000000 0.000000 0.000000 238 280 270 289 269 290 Trgb
+0.000000 0.000000 0.000000 238 280 269 290 236 281 Trgb
+0.376135 0.200455 0.115318 276 308 269 291 284 295 Trgb
+0.154087 0.082118 0.047241 265 311 256 303 276 308 Trgb
+0.237541 0.126594 0.072827 269 291 276 308 256 303 Trgb
+0.116308 0.061985 0.035659 256 303 255 288 269 291 Trgb
+0.346879 0.184863 0.106348 269 291 283 279 284 295 Trgb
+0.091976 0.049017 0.028199 263 274 275 271 283 279 Trgb
+0.196118 0.104518 0.060127 283 279 269 291 263 274 Trgb
+0.104142 0.055501 0.031929 255 288 263 274 269 291 Trgb
+0.381060 0.203080 0.116828 290 296 276 308 284 295 Trgb
+0.012166 0.006484 0.003730 255 288 256 303 250 286 Trgb
+0.351803 0.187488 0.107858 283 279 290 296 284 295 Trgb
+0.091976 0.049017 0.028199 275 271 284 279 283 279 Trgb
+0.201042 0.107142 0.061637 290 296 283 279 284 279 Trgb
+0.000000 0.000000 0.000000 263 274 255 288 250 286 Trgb
+0.000000 0.696680 0.209004 220 322 221 321 222 322 Trgb
+0.000000 0.696680 0.209004 221 321 224 322 222 322 Trgb
+0.000000 0.696680 0.209004 224 322 225 323 222 322 Trgb
+0.000000 0.696680 0.209004 225 323 223 324 222 322 Trgb
+0.000000 0.696680 0.209004 223 324 221 323 222 322 Trgb
+0.000000 0.696680 0.209004 221 323 220 322 222 322 Trgb
+0.000000 0.003836 0.001151 236 281 221 321 220 322 Trgb
+0.000000 0.001918 0.000575 236 281 220 322 235 282 Trgb
+0.000000 0.043010 0.012903 238 282 224 322 221 321 Trgb
+0.000000 0.024382 0.007315 238 282 221 321 236 281 Trgb
+0.000000 0.057802 0.017341 239 283 225 323 224 322 Trgb
+0.000000 0.059720 0.017916 239 283 224 322 238 282 Trgb
+0.032130 0.233204 0.053067 212 326 221 325 219 331 Trgb
+0.000000 0.000000 0.000000 212 319 216 316 212 326 Trgb
+0.019262 0.139807 0.031814 221 325 212 326 216 316 Trgb
+0.033635 0.244129 0.055553 216 316 223 317 221 325 Trgb
+0.055827 0.405196 0.092205 221 325 227 331 219 331 Trgb
+0.069102 0.501547 0.114130 231 321 233 326 227 331 Trgb
+0.067720 0.491517 0.111847 227 331 221 325 231 321 Trgb
+0.058397 0.423846 0.096448 223 317 231 321 221 325 Trgb
+0.012868 0.093396 0.021253 219 333 212 326 219 331 Trgb
+0.000000 0.000000 0.000000 216 316 212 319 217 314 Trgb
+0.001064 0.007725 0.001758 217 314 225 312 216 316 Trgb
+0.015437 0.112046 0.025497 223 317 216 316 225 312 Trgb
+0.036565 0.265389 0.060391 227 331 219 333 219 331 Trgb
+0.050904 0.369464 0.084074 233 326 231 321 232 318 Trgb
+0.031324 0.227352 0.051735 225 312 232 318 231 321 Trgb
+0.040198 0.291763 0.066392 231 321 223 317 225 312 Trgb
+0.000000 0.000000 0.000000 194 295 195 296 195 297 Trgb
+0.000000 0.000000 0.000000 195 296 196 298 195 297 Trgb
+0.000000 0.000000 0.000000 196 298 196 299 195 297 Trgb
+0.000000 0.000000 0.000000 196 299 194 299 195 297 Trgb
+0.000000 0.000000 0.000000 194 299 193 296 195 297 Trgb
+0.000000 0.000000 0.000000 193 296 194 295 195 297 Trgb
+0.000000 0.120080 0.036024 238 281 195 296 194 295 Trgb
+0.000000 0.060040 0.018012 238 281 194 295 236 280 Trgb
+0.000000 0.307224 0.092167 238 283 196 298 195 296 Trgb
+0.000000 0.243672 0.073102 238 283 195 296 238 281 Trgb
+0.000000 0.250695 0.075208 238 285 196 299 196 298 Trgb
+0.000000 0.310735 0.093220 238 285 196 298 238 283 Trgb
+0.017736 0.110162 0.025580 185 292 191 298 185 301 Trgb
+0.007836 0.048670 0.011301 191 286 195 288 185 292 Trgb
+0.025572 0.158832 0.036881 191 298 185 292 195 288 Trgb
+0.053236 0.330662 0.076779 195 288 199 295 191 298 Trgb
+0.027636 0.171654 0.039858 191 298 191 307 185 301 Trgb
+0.057770 0.358825 0.083319 201 303 199 308 191 307 Trgb
+0.058923 0.365987 0.084982 191 307 191 298 201 303 Trgb
+0.076687 0.476325 0.110603 199 295 201 303 191 298 Trgb
+0.000000 0.000000 0.000000 185 301 185 292 185 301 Trgb
+0.007836 0.048670 0.011301 195 288 191 286 199 287 Trgb
+0.029223 0.181512 0.042147 199 287 205 293 195 288 Trgb
+0.056887 0.353342 0.082046 199 295 195 288 205 293 Trgb
+0.009900 0.061492 0.014278 191 307 185 301 185 301 Trgb
+0.061421 0.381505 0.088585 199 308 201 303 204 302 Trgb
+0.066226 0.411348 0.095515 205 293 204 302 201 303 Trgb
+0.080339 0.499005 0.115869 201 303 199 295 205 293 Trgb
+0.000000 0.000000 0.000000 204 336 203 336 206 337 Trgb
+0.000000 0.000000 0.000000 203 336 206 337 206 337 Trgb
+0.000000 0.000000 0.000000 206 337 208 339 206 337 Trgb
+0.000000 0.000000 0.000000 208 339 208 339 206 337 Trgb
+0.000000 0.000000 0.000000 208 339 206 337 206 337 Trgb
+0.000000 0.000000 0.000000 206 337 204 336 206 337 Trgb
+0.000000 0.287100 0.086130 242 282 206 337 203 336 Trgb
+0.000000 0.143550 0.043065 242 282 203 336 240 280 Trgb
+0.000000 0.549999 0.165000 244 283 208 339 206 337 Trgb
+0.000000 0.490325 0.147098 244 283 206 337 242 282 Trgb
+0.000000 0.322574 0.096772 244 284 208 339 208 339 Trgb
+0.000000 0.466124 0.139837 244 284 208 339 244 283 Trgb
+0.000000 0.698197 0.209459 204 336 205 335 206 337 Trgb
+0.000000 0.698197 0.209459 205 335 207 337 206 337 Trgb
+0.000000 0.698197 0.209459 207 337 208 339 206 337 Trgb
+0.000000 0.698197 0.209459 208 339 206 339 206 337 Trgb
+0.000000 0.698197 0.209459 206 339 204 338 206 337 Trgb
+0.000000 0.698197 0.209459 204 338 204 336 206 337 Trgb
+0.000000 0.008040 0.002412 204 338 183 364 182 362 Trgb
+0.000000 0.004020 0.001206 204 338 182 362 204 336 Trgb
+0.000000 0.036178 0.010854 206 339 185 365 183 364 Trgb
+0.000000 0.024119 0.007236 206 339 183 364 204 338 Trgb
+0.000000 0.040198 0.012059 208 339 186 364 185 365 Trgb
+0.000000 0.044218 0.013265 208 339 185 365 206 339 Trgb
+0.000000 0.000000 0.000000 166 351 166 365 164 363 Trgb
+0.000000 0.000000 0.000000 172 382 164 363 166 365 Trgb
+0.121419 0.011415 0.026567 166 365 177 378 172 382 Trgb
+0.296498 0.027876 0.064875 177 378 193 382 172 382 Trgb
+0.293709 0.027614 0.064265 187 364 178 346 195 351 Trgb
+0.000000 0.000000 0.000000 166 365 166 351 178 346 Trgb
+0.171952 0.016166 0.037624 178 346 187 364 166 365 Trgb
+0.293371 0.027582 0.064191 177 378 166 365 187 364 Trgb
+0.469028 0.044097 0.102625 205 363 187 364 195 351 Trgb
+0.476578 0.044806 0.104277 203 375 193 382 205 363 Trgb
+0.522349 0.049110 0.114292 187 364 205 363 193 382 Trgb
+0.468450 0.044042 0.102498 193 382 177 378 187 364 Trgb
+0.121997 0.011470 0.026693 178 346 197 344 195 351 Trgb
+0.000000 0.000000 0.000000 166 351 176 345 178 346 Trgb
+0.000239 0.000023 0.000052 197 344 178 346 176 345 Trgb
+0.297315 0.027953 0.065054 197 344 205 363 195 351 Trgb
+0.000000 0.699742 0.209923 205 337 206 335 206 337 Trgb
+0.000000 0.699742 0.209923 206 335 207 336 206 337 Trgb
+0.000000 0.699742 0.209923 207 336 207 338 206 337 Trgb
+0.000000 0.699742 0.209923 207 338 206 340 206 337 Trgb
+0.000000 0.699742 0.209923 206 340 205 339 206 337 Trgb
+0.000000 0.699742 0.209923 205 339 205 337 206 337 Trgb
+0.000000 0.015210 0.004563 205 339 165 339 165 337 Trgb
+0.000000 0.011503 0.003451 205 339 165 337 205 337 Trgb
+0.000000 0.013720 0.004116 206 340 167 340 165 339 Trgb
+0.000000 0.016319 0.004896 206 340 165 339 205 339 Trgb
+0.000000 0.005197 0.001559 205 337 165 337 166 335 Trgb
+0.000000 0.002599 0.000780 205 337 166 335 206 335 Trgb
+0.058239 0.091602 0.029968 159 333 159 344 153 334 Trgb
+0.040484 0.063676 0.020832 156 347 153 334 159 344 Trgb
+0.079983 0.125802 0.041157 159 344 164 351 156 347 Trgb
+0.017755 0.027926 0.009136 163 325 159 333 153 334 Trgb
+0.232855 0.366250 0.119821 173 347 170 334 178 337 Trgb
+0.127138 0.199970 0.065422 159 344 159 333 170 334 Trgb
+0.193657 0.304596 0.099650 170 334 173 347 159 344 Trgb
+0.164256 0.258353 0.084522 164 351 159 344 173 347 Trgb
+0.207746 0.326757 0.106901 180 341 173 347 178 337 Trgb
+0.139147 0.218860 0.071601 170 350 164 351 173 347 Trgb
+0.176996 0.278391 0.091077 170 334 177 328 178 337 Trgb
+0.086654 0.136294 0.044590 159 333 163 325 170 334 Trgb
+0.097313 0.153061 0.050075 177 328 170 334 163 325 Trgb
+0.028415 0.044692 0.014621 163 325 169 324 177 328 Trgb
+0.151887 0.238897 0.078157 177 328 180 341 178 337 Trgb
+0.000000 0.698962 0.209689 220 381 218 381 220 381 Trgb
+0.000000 0.698962 0.209689 218 381 217 381 220 381 Trgb
+0.000000 0.698962 0.209689 217 381 219 380 220 381 Trgb
+0.000000 0.698962 0.209689 219 380 221 380 220 381 Trgb
+0.000000 0.698962 0.209689 221 380 222 380 220 381 Trgb
+0.000000 0.698962 0.209689 222 380 220 381 220 381 Trgb
+0.000000 0.016514 0.004954 205 337 219 380 217 381 Trgb
+0.000000 0.008257 0.002477 205 337 217 381 204 338 Trgb
+0.000000 0.033230 0.009969 207 336 221 380 219 380 Trgb
+0.000000 0.029001 0.008700 207 336 219 380 205 337 Trgb
+0.000000 0.020944 0.006283 208 337 222 380 221 380 Trgb
+0.000000 0.029201 0.008760 208 337 221 380 207 336 Trgb
+0.307148 0.060281 0.073486 210 400 221 393 226 401 Trgb
+0.252761 0.049607 0.060474 201 384 214 377 221 393 Trgb
+0.175305 0.034406 0.041942 221 393 210 400 201 384 Trgb
+0.015997 0.003140 0.003827 199 388 201 384 210 400 Trgb
+0.461610 0.090596 0.110441 221 393 239 390 226 401 Trgb
+0.396072 0.077734 0.094761 214 377 231 373 221 393 Trgb
+0.473078 0.092847 0.113185 239 390 221 393 231 373 Trgb
+0.422991 0.083017 0.101202 231 373 240 373 239 390 Trgb
+0.000000 0.000000 0.000000 211 364 201 371 213 360 Trgb
+0.093452 0.018341 0.022359 214 377 201 384 211 364 Trgb
+0.000000 0.000000 0.000000 201 371 211 364 201 384 Trgb
+0.000000 0.000000 0.000000 201 384 199 388 201 371 Trgb
+0.000000 0.000000 0.000000 229 361 211 364 213 360 Trgb
+0.236764 0.046468 0.056646 231 373 214 377 211 364 Trgb
+0.143312 0.028127 0.034288 211 364 229 361 231 373 Trgb
+0.252533 0.049563 0.060419 240 373 231 373 229 361 Trgb
+0.000000 0.699663 0.209899 381 310 379 311 383 307 Trgb
+0.000000 0.699663 0.209899 379 311 381 307 383 307 Trgb
+0.000000 0.699663 0.209899 381 307 385 304 383 307 Trgb
+0.000000 0.699663 0.209899 385 304 387 303 383 307 Trgb
+0.000000 0.699663 0.209899 387 303 385 307 383 307 Trgb
+0.000000 0.699663 0.209899 385 307 381 310 383 307 Trgb
+0.000000 0.009326 0.002798 303 230 381 307 379 311 Trgb
+0.000000 0.004663 0.001399 303 230 379 311 301 233 Trgb
+0.000000 0.018911 0.005673 307 226 385 304 381 307 Trgb
+0.000000 0.016450 0.004935 307 226 381 307 303 230 Trgb
+0.000000 0.012047 0.003614 310 226 387 303 385 304 Trgb
+0.000000 0.016710 0.005013 310 226 385 304 307 226 Trgb
+0.000000 0.000000 0.000000 381 310 381 307 383 307 Trgb
+0.000000 0.000000 0.000000 381 307 384 304 383 307 Trgb
+0.000000 0.000000 0.000000 384 304 386 304 383 307 Trgb
+0.000000 0.000000 0.000000 386 304 385 307 383 307 Trgb
+0.000000 0.000000 0.000000 385 307 383 310 383 307 Trgb
+0.000000 0.000000 0.000000 383 310 381 310 383 307 Trgb
+0.000000 0.025647 0.007694 383 310 439 357 437 357 Trgb
+0.000000 0.012824 0.003847 383 310 437 357 381 310 Trgb
+0.000000 0.054647 0.016394 385 307 442 354 439 357 Trgb
+0.000000 0.046559 0.013968 385 307 439 357 383 310 Trgb
+0.000000 0.037089 0.011127 386 304 442 352 442 354 Trgb
+0.000000 0.049912 0.014974 386 304 442 354 385 307 Trgb
+0.000000 0.687787 0.206336 438 356 437 353 440 355 Trgb
+0.000000 0.687787 0.206336 437 353 439 352 440 355 Trgb
+0.000000 0.687787 0.206336 439 352 442 353 440 355 Trgb
+0.000000 0.687787 0.206336 442 353 442 356 440 355 Trgb
+0.000000 0.687787 0.206336 442 356 440 357 440 355 Trgb
+0.000000 0.687787 0.206336 440 357 438 356 440 355 Trgb
+0.000000 0.101740 0.030522 442 356 464 346 462 348 Trgb
+0.000000 0.074722 0.022417 442 356 462 348 440 357 Trgb
+0.000000 0.096953 0.029086 442 353 463 344 464 346 Trgb
+0.000000 0.112855 0.033857 442 353 464 346 442 356 Trgb
+0.000000 0.027017 0.008105 439 352 461 343 463 344 Trgb
+0.000000 0.054034 0.016210 439 352 463 344 442 353 Trgb
+0.000000 0.691825 0.207548 460 345 460 344 461 345 Trgb
+0.000000 0.691825 0.207548 460 344 462 345 461 345 Trgb
+0.000000 0.691825 0.207548 462 345 463 345 461 345 Trgb
+0.000000 0.691825 0.207548 463 345 463 346 461 345 Trgb
+0.000000 0.691825 0.207548 463 346 461 346 461 345 Trgb
+0.000000 0.691825 0.207548 461 346 460 345 461 345 Trgb
+0.000000 0.075590 0.022677 462 345 472 314 474 314 Trgb
+0.000000 0.090975 0.027293 462 345 474 314 463 345 Trgb
+0.000000 0.020068 0.006020 460 344 471 313 472 314 Trgb
+0.000000 0.040137 0.012041 460 344 472 314 462 345 Trgb
+0.000000 0.000000 0.000000 460 345 470 314 471 313 Trgb
+0.000000 0.000000 0.000000 460 345 471 313 460 344 Trgb
+0.009659 0.007219 0.003376 468 307 460 308 472 301 Trgb
+0.060429 0.045167 0.021119 484 307 472 301 476 303 Trgb
+0.283462 0.211871 0.099067 485 316 478 310 484 307 Trgb
+0.156813 0.117208 0.054804 472 301 484 307 478 310 Trgb
+0.106043 0.079261 0.037061 478 310 468 307 472 301 Trgb
+0.182166 0.136158 0.063665 478 324 472 327 468 326 Trgb
+0.328054 0.245201 0.114651 485 316 483 320 478 324 Trgb
+0.077145 0.057661 0.026961 460 321 467 317 468 326 Trgb
+0.000000 0.000000 0.000000 459 313 460 308 460 321 Trgb
+0.035955 0.026874 0.012566 467 317 460 321 460 308 Trgb
+0.045614 0.034094 0.015942 460 308 468 307 467 317 Trgb
+0.195825 0.146368 0.068439 467 317 478 324 468 326 Trgb
+0.341713 0.255410 0.119425 478 310 485 316 478 324 Trgb
+0.251020 0.187622 0.087728 478 324 467 317 478 310 Trgb
+0.141998 0.106135 0.049627 468 307 478 310 467 317 Trgb
+0.000000 0.000000 0.000000 463 344 462 346 461 345 Trgb
+0.000000 0.000000 0.000000 462 346 461 347 461 345 Trgb
+0.000000 0.000000 0.000000 461 347 460 346 461 345 Trgb
+0.000000 0.000000 0.000000 460 346 460 345 461 345 Trgb
+0.000000 0.000000 0.000000 460 345 462 344 461 345 Trgb
+0.000000 0.000000 0.000000 462 344 463 344 461 345 Trgb
+0.000000 0.014411 0.004323 461 347 485 367 485 366 Trgb
+0.000000 0.007206 0.002162 461 347 485 366 460 346 Trgb
+0.000000 0.054003 0.016201 462 346 487 366 485 367 Trgb
+0.000000 0.037810 0.011343 462 346 485 367 461 347 Trgb
+0.000000 0.055784 0.016735 463 344 487 364 487 366 Trgb
+0.000000 0.062990 0.018897 463 344 487 366 462 346 Trgb
+0.117681 0.406254 0.104787 491 366 493 361 495 366 Trgb
+0.126551 0.436877 0.112686 495 366 491 373 491 366 Trgb
+0.122641 0.423379 0.109204 487 372 491 366 491 373 Trgb
+0.006385 0.022042 0.005685 481 358 487 358 480 360 Trgb
+0.038254 0.132061 0.034063 491 358 493 361 487 358 Trgb
+0.006385 0.022042 0.005685 487 358 481 358 491 358 Trgb
+0.077571 0.267788 0.069072 481 373 487 372 491 373 Trgb
+0.000000 0.000000 0.000000 477 365 481 358 480 360 Trgb
+0.014824 0.051177 0.013200 487 358 482 366 480 360 Trgb
+0.085380 0.294746 0.076025 493 361 491 366 487 358 Trgb
+0.061950 0.213861 0.055162 482 366 487 358 491 366 Trgb
+0.090341 0.311871 0.080442 491 366 487 372 482 366 Trgb
+0.008440 0.029135 0.007515 482 366 477 365 480 360 Trgb
+0.002055 0.007094 0.001830 481 373 479 370 477 365 Trgb
+0.010495 0.036229 0.009345 477 365 482 366 481 373 Trgb
+0.045270 0.156280 0.040310 487 372 481 373 482 366 Trgb
+0.000000 0.000000 0.000000 461 344 461 344 461 345 Trgb
+0.000000 0.000000 0.000000 461 344 462 346 461 345 Trgb
+0.000000 0.000000 0.000000 462 346 462 347 461 345 Trgb
+0.000000 0.000000 0.000000 462 347 461 346 461 345 Trgb
+0.000000 0.000000 0.000000 461 346 460 344 461 345 Trgb
+0.000000 0.000000 0.000000 460 344 461 344 461 345 Trgb
+0.000000 0.074013 0.022204 462 346 495 335 494 336 Trgb
+0.000000 0.062494 0.018748 462 346 494 336 462 347 Trgb
+0.000000 0.051548 0.015464 461 344 494 333 495 335 Trgb
+0.000000 0.068539 0.020562 461 344 495 335 462 346 Trgb
+0.000000 0.011519 0.003456 461 344 493 332 494 333 Trgb
+0.000000 0.023037 0.006911 461 344 494 333 461 344 Trgb
+0.094155 0.178202 0.054471 504 331 498 324 503 331 Trgb
+0.011283 0.021354 0.006527 494 326 490 324 498 324 Trgb
+0.075245 0.142413 0.043532 498 324 504 331 494 326 Trgb
+0.135510 0.256474 0.078397 498 333 494 326 504 331 Trgb
+0.000000 0.000000 0.000000 484 337 485 329 484 337 Trgb
+0.170934 0.323519 0.098891 497 344 499 341 503 339 Trgb
+0.190588 0.360716 0.110261 504 331 503 339 499 341 Trgb
+0.198172 0.375072 0.114649 499 341 498 333 504 331 Trgb
+0.021265 0.040247 0.012302 485 329 490 336 484 337 Trgb
+0.011283 0.021354 0.006527 490 324 494 326 485 329 Trgb
+0.032547 0.061601 0.018830 490 336 485 329 494 326 Trgb
+0.092812 0.175662 0.053695 494 326 498 333 490 336 Trgb
+0.031247 0.059140 0.018077 490 336 490 344 484 337 Trgb
+0.128236 0.242707 0.074189 499 341 497 344 490 344 Trgb
+0.105192 0.199092 0.060857 490 344 490 336 499 341 Trgb
+0.155475 0.294260 0.089947 498 333 499 341 490 336 Trgb
+0.000000 0.698488 0.209546 453 408 454 408 451 408 Trgb
+0.000000 0.698488 0.209546 454 408 452 409 451 408 Trgb
+0.000000 0.698488 0.209546 452 409 449 409 451 408 Trgb
+0.000000 0.698488 0.209546 449 409 448 409 451 408 Trgb
+0.000000 0.698488 0.209546 448 409 450 408 451 408 Trgb
+0.000000 0.698488 0.209546 450 408 453 408 451 408 Trgb
+0.000000 0.035029 0.010509 442 354 454 408 453 408 Trgb
+0.000000 0.040113 0.012034 442 354 453 408 441 354 Trgb
+0.000000 0.010168 0.003050 439 354 450 408 448 409 Trgb
+0.000000 0.005084 0.001525 439 354 448 409 437 355 Trgb
+0.000000 0.035216 0.010565 441 354 453 408 450 408 Trgb
+0.000000 0.025234 0.007570 441 354 450 408 439 354 Trgb
+0.000000 0.696558 0.208967 443 433 443 434 441 433 Trgb
+0.000000 0.696558 0.208967 443 434 441 435 441 433 Trgb
+0.000000 0.696558 0.208967 441 435 439 434 441 433 Trgb
+0.000000 0.696558 0.208967 439 434 439 432 441 433 Trgb
+0.000000 0.696558 0.208967 439 432 441 432 441 433 Trgb
+0.000000 0.696558 0.208967 441 432 443 433 441 433 Trgb
+0.000000 0.059446 0.017834 453 409 443 434 443 433 Trgb
+0.000000 0.060519 0.018156 453 409 443 433 453 408 Trgb
+0.000000 0.002147 0.000644 451 407 441 432 439 432 Trgb
+0.000000 0.001074 0.000322 451 407 439 432 449 407 Trgb
+0.000000 0.042136 0.012641 453 408 443 433 441 432 Trgb
+0.000000 0.022679 0.006804 453 408 441 432 451 407 Trgb
+0.329826 0.121701 0.090305 449 438 444 450 437 444 Trgb
+0.430194 0.158735 0.117786 456 429 458 440 449 438 Trgb
+0.398450 0.147022 0.109094 444 450 449 438 458 440 Trgb
+0.318627 0.117568 0.087239 458 440 450 446 444 450 Trgb
+0.180059 0.066439 0.049300 444 450 428 444 437 444 Trgb
+0.230910 0.085202 0.063223 432 432 449 438 437 444 Trgb
+0.331278 0.122236 0.090703 445 421 456 429 449 438 Trgb
+0.200618 0.074025 0.054929 449 438 432 432 445 421 Trgb
+0.050851 0.018763 0.013923 432 420 445 421 432 432 Trgb
+0.081143 0.029941 0.022217 428 444 432 432 437 444 Trgb
+0.004639 0.001712 0.001270 432 432 428 444 425 427 Trgb
+0.004639 0.001712 0.001270 425 427 432 420 432 432 Trgb
+0.223084 0.082315 0.061080 456 429 445 421 455 423 Trgb
+0.087786 0.032392 0.024036 438 416 455 423 445 421 Trgb
+0.046212 0.017052 0.012653 445 421 432 420 438 416 Trgb
+0.000000 0.699959 0.209988 485 427 484 429 484 427 Trgb
+0.000000 0.699959 0.209988 484 429 483 429 484 427 Trgb
+0.000000 0.699959 0.209988 483 429 484 427 484 427 Trgb
+0.000000 0.699959 0.209988 484 427 485 425 484 427 Trgb
+0.000000 0.699959 0.209988 485 425 485 426 484 427 Trgb
+0.000000 0.699959 0.209988 485 426 485 427 484 427 Trgb
+0.000000 0.005578 0.001673 450 408 484 427 483 429 Trgb
+0.000000 0.003816 0.001145 450 408 483 429 450 410 Trgb
+0.000000 0.005972 0.001792 451 407 485 425 484 427 Trgb
+0.000000 0.006656 0.001997 451 407 484 427 450 408 Trgb
+0.000000 0.001762 0.000529 452 407 485 426 485 425 Trgb
+0.000000 0.003525 0.001057 452 407 485 425 451 407 Trgb
+0.371114 0.204675 0.115158 489 443 491 432 498 435 Trgb
+0.172821 0.095313 0.053627 475 436 479 426 491 432 Trgb
+0.240382 0.132574 0.074591 491 432 489 443 475 436 Trgb
+0.114646 0.063229 0.035575 477 441 475 436 489 443 Trgb
+0.382205 0.210792 0.118599 491 432 499 422 498 435 Trgb
+0.183911 0.101430 0.057068 479 426 486 416 491 432 Trgb
+0.262562 0.144807 0.081474 499 422 491 432 486 416 Trgb
+0.144668 0.079787 0.044891 486 416 492 413 499 422 Trgb
+0.000000 0.000000 0.000000 471 421 470 432 471 419 Trgb
+0.047085 0.025968 0.014611 479 426 475 436 471 421 Trgb
+0.016255 0.008965 0.005044 470 432 471 421 475 436 Trgb
+0.016255 0.008965 0.005044 475 436 477 441 470 432 Trgb
+0.000000 0.000000 0.000000 480 412 471 421 471 419 Trgb
+0.058175 0.032084 0.018052 486 416 479 426 471 421 Trgb
+0.027345 0.015081 0.008485 471 421 480 412 486 416 Trgb
+0.035187 0.019406 0.010919 492 413 486 416 480 412 Trgb
+0.000000 0.668910 0.200673 449 408 449 407 451 408 Trgb
+0.000000 0.668910 0.200673 449 407 451 407 451 408 Trgb
+0.000000 0.668910 0.200673 451 407 452 408 451 408 Trgb
+0.000000 0.668910 0.200673 452 408 453 409 451 408 Trgb
+0.000000 0.668910 0.200673 453 409 451 409 451 408 Trgb
+0.000000 0.668910 0.200673 451 409 449 408 451 408 Trgb
+0.000000 0.099272 0.029782 451 409 439 442 437 441 Trgb
+0.000000 0.049636 0.014891 451 409 437 441 449 408 Trgb
+0.000000 0.181706 0.054512 453 409 441 441 439 442 Trgb
+0.000000 0.165307 0.049592 453 409 439 442 451 409 Trgb
+0.000000 0.000000 0.000000 449 408 437 441 437 440 Trgb
+0.000000 0.000000 0.000000 449 408 437 440 449 407 Trgb
+0.004375 0.127388 0.026353 433 445 440 448 437 446 Trgb
+0.003962 0.115366 0.023866 433 441 438 444 433 445 Trgb
+0.008337 0.242754 0.050218 440 448 433 445 438 444 Trgb
+0.015764 0.459008 0.094954 438 444 443 445 440 448 Trgb
+0.018343 0.534106 0.110490 443 445 446 443 440 448 Trgb
+0.000000 0.000000 0.000000 432 438 433 441 433 445 Trgb
+0.007368 0.214543 0.044382 443 439 436 437 441 435 Trgb
+0.003962 0.115366 0.023866 438 444 433 441 436 437 Trgb
+0.010090 0.293808 0.060780 436 437 443 439 438 444 Trgb
+0.017517 0.510062 0.105516 443 445 438 444 443 439 Trgb
+0.009534 0.277619 0.057431 445 436 443 439 441 435 Trgb
+0.014836 0.431982 0.089364 443 439 445 436 446 443 Trgb
+0.020096 0.585160 0.121051 446 443 443 445 443 439 Trgb
+0.001240 0.036101 0.007468 436 437 438 433 441 435 Trgb
+0.000000 0.000000 0.000000 433 441 432 438 436 437 Trgb
+0.000000 0.000000 0.000000 438 433 436 437 432 438 Trgb
+0.000000 0.699421 0.209826 496 351 496 354 496 353 Trgb
+0.000000 0.699421 0.209826 496 354 496 355 496 353 Trgb
+0.000000 0.699421 0.209826 496 355 496 354 496 353 Trgb
+0.000000 0.699421 0.209826 496 354 496 351 496 353 Trgb
+0.000000 0.699421 0.209826 496 351 496 350 496 353 Trgb
+0.000000 0.699421 0.209826 496 350 496 351 496 353 Trgb
+0.000000 0.023624 0.007087 439 356 496 354 496 355 Trgb
+0.000000 0.018777 0.005633 439 356 496 355 440 357 Trgb
+0.000000 0.019183 0.005755 439 354 496 351 496 354 Trgb
+0.000000 0.023827 0.007148 439 354 496 354 439 356 Trgb
+0.000000 0.004847 0.001454 439 352 496 350 496 351 Trgb
+0.000000 0.009693 0.002908 439 352 496 351 439 354 Trgb
+0.000000 0.172605 0.051782 496 353 494 352 496 353 Trgb
+0.000000 0.172605 0.051782 494 352 494 351 496 353 Trgb
+0.000000 0.172605 0.051782 494 351 496 352 496 353 Trgb
+0.000000 0.172605 0.051782 496 352 497 353 496 353 Trgb
+0.000000 0.172605 0.051782 497 353 497 354 496 353 Trgb
+0.000000 0.172605 0.051782 497 354 496 353 496 353 Trgb
+0.000000 0.589120 0.176736 497 353 517 321 517 322 Trgb
+0.000000 0.508333 0.152500 497 353 517 322 497 354 Trgb
+0.000000 0.384877 0.115463 496 352 516 320 517 321 Trgb
+0.000000 0.527393 0.158218 496 352 517 321 497 353 Trgb
+0.000000 0.080787 0.024236 494 351 515 320 516 320 Trgb
+0.000000 0.161575 0.048472 494 351 516 320 496 352 Trgb
+0.147652 0.061182 0.041767 532 317 522 307 524 308 Trgb
+0.249743 0.103485 0.070645 526 322 516 315 522 307 Trgb
+0.298271 0.123593 0.084373 522 307 532 317 526 322 Trgb
+0.412156 0.170783 0.116588 531 329 526 322 532 317 Trgb
+0.040189 0.016653 0.011368 522 307 512 306 524 308 Trgb
+0.099123 0.041073 0.028039 516 315 506 311 522 307 Trgb
+0.040189 0.016653 0.011368 512 306 522 307 506 311 Trgb
+0.000000 0.000000 0.000000 506 311 502 313 512 306 Trgb
+0.155686 0.064511 0.044039 510 326 520 336 507 334 Trgb
+0.252711 0.104714 0.071485 516 315 526 322 510 326 Trgb
+0.304207 0.126053 0.086052 520 336 510 326 526 322 Trgb
+0.415124 0.172013 0.117427 526 322 531 329 520 336 Trgb
+0.045255 0.018752 0.012802 500 325 510 326 507 334 Trgb
+0.102091 0.042303 0.028879 506 311 516 315 510 326 Trgb
+0.043157 0.017883 0.012208 510 326 500 325 506 311 Trgb
+0.000000 0.000000 0.000000 502 313 506 311 500 325 Trgb
+0.000000 0.000000 0.000000 496 354 495 352 496 353 Trgb
+0.000000 0.000000 0.000000 495 352 494 351 496 353 Trgb
+0.000000 0.000000 0.000000 494 351 496 351 496 353 Trgb
+0.000000 0.000000 0.000000 496 351 497 353 496 353 Trgb
+0.000000 0.000000 0.000000 497 353 497 354 496 353 Trgb
+0.000000 0.000000 0.000000 497 354 496 354 496 353 Trgb
+0.000000 0.192098 0.057629 497 353 525 330 525 331 Trgb
+0.000000 0.177366 0.053210 497 353 525 331 497 354 Trgb
+0.000000 0.098407 0.029522 496 351 523 328 525 330 Trgb
+0.000000 0.152618 0.045785 496 351 525 330 497 353 Trgb
+0.000000 0.014732 0.004420 494 351 522 328 523 328 Trgb
+0.000000 0.029463 0.008839 494 351 523 328 496 351 Trgb
+0.180153 0.097673 0.055565 540 329 531 317 535 320 Trgb
+0.192968 0.104621 0.059518 532 329 523 320 531 317 Trgb
+0.282334 0.153073 0.087081 531 317 540 329 532 329 Trgb
+0.391187 0.212089 0.120655 535 338 532 329 540 329 Trgb
+0.087413 0.047393 0.026961 524 342 516 342 512 339 Trgb
+0.315976 0.171312 0.097458 535 338 532 342 524 342 Trgb
+0.067950 0.036840 0.020958 523 320 515 317 531 317 Trgb
+0.092721 0.050270 0.028598 515 330 524 342 512 339 Trgb
+0.160670 0.087110 0.049556 523 320 532 329 515 330 Trgb
+0.217739 0.118051 0.067158 524 342 515 330 532 329 Trgb
+0.358889 0.194578 0.110694 532 329 535 338 524 342 Trgb
+0.005308 0.002878 0.001637 508 330 515 330 512 339 Trgb
+0.035652 0.019330 0.010996 515 317 523 320 515 330 Trgb
+0.005308 0.002878 0.001637 515 330 508 330 515 317 Trgb
+0.000000 0.000000 0.000000 512 321 515 317 508 330 Trgb
+0.000000 0.000000 0.000000 496 353 495 354 496 353 Trgb
+0.000000 0.000000 0.000000 495 354 495 354 496 353 Trgb
+0.000000 0.000000 0.000000 495 354 496 352 496 353 Trgb
+0.000000 0.000000 0.000000 496 352 497 351 496 353 Trgb
+0.000000 0.000000 0.000000 497 351 497 352 496 353 Trgb
+0.000000 0.000000 0.000000 497 352 496 353 496 353 Trgb
+0.000000 0.028228 0.008468 497 352 526 379 524 380 Trgb
+0.000000 0.027588 0.008276 497 352 524 380 496 353 Trgb
+0.000000 0.010903 0.003271 497 351 526 378 526 379 Trgb
+0.000000 0.019885 0.005966 497 351 526 379 497 352 Trgb
+0.000000 0.017965 0.005390 496 353 524 380 523 381 Trgb
+0.000000 0.008983 0.002695 496 353 523 381 495 354 Trgb
+0.553377 0.015557 0.113787 535 393 545 380 539 394 Trgb
+0.488126 0.013722 0.100370 525 384 535 373 535 393 Trgb
+0.537456 0.015109 0.110513 545 380 535 393 535 373 Trgb
+0.413448 0.011623 0.085014 535 373 539 366 545 380 Trgb
+0.433488 0.012186 0.089135 525 399 535 393 539 394 Trgb
+0.368237 0.010352 0.075718 514 393 525 384 535 393 Trgb
+0.297677 0.008368 0.061209 535 393 525 399 514 393 Trgb
+0.088894 0.002499 0.018279 510 393 514 393 525 399 Trgb
+0.000000 0.000000 0.000000 524 360 514 373 510 366 Trgb
+0.279343 0.007853 0.057439 535 373 525 384 514 373 Trgb
+0.150823 0.004240 0.031012 514 373 524 360 535 373 Trgb
+0.235597 0.006623 0.048444 539 366 535 373 524 360 Trgb
+0.000000 0.000000 0.000000 514 373 504 380 510 366 Trgb
+0.159453 0.004483 0.032787 525 384 514 393 514 373 Trgb
+0.030933 0.000870 0.006360 504 380 514 373 514 393 Trgb
+0.030933 0.000870 0.006360 514 393 510 393 504 380 Trgb
+0.000000 0.698638 0.209592 397 383 401 383 397 384 Trgb
+0.000000 0.698638 0.209592 401 383 400 384 397 384 Trgb
+0.000000 0.698638 0.209592 400 384 396 385 397 384 Trgb
+0.000000 0.698638 0.209592 396 385 393 385 397 384 Trgb
+0.000000 0.698638 0.209592 393 385 393 384 397 384 Trgb
+0.000000 0.698638 0.209592 393 384 397 383 397 384 Trgb
+0.000000 0.038092 0.011428 387 306 401 383 397 383 Trgb
+0.000000 0.033330 0.009999 387 306 397 383 384 306 Trgb
+0.000000 0.000000 0.000000 380 307 393 384 393 385 Trgb
+0.000000 0.000000 0.000000 380 307 393 385 380 308 Trgb
+0.000000 0.019045 0.005714 384 306 397 383 393 384 Trgb
+0.000000 0.009523 0.002857 384 306 393 384 380 307 Trgb
+0.000000 0.617376 0.185213 369 434 371 436 369 435 Trgb
+0.000000 0.617376 0.185213 371 436 371 437 369 435 Trgb
+0.000000 0.617376 0.185213 371 437 369 436 369 435 Trgb
+0.000000 0.617376 0.185213 369 436 367 434 369 435 Trgb
+0.000000 0.617376 0.185213 367 434 367 434 369 435 Trgb
+0.000000 0.617376 0.185213 367 434 369 434 369 435 Trgb
+0.000000 0.264623 0.079387 399 385 371 436 369 434 Trgb
+0.000000 0.200825 0.060247 399 385 369 434 397 383 Trgb
+0.000000 0.237071 0.071121 399 386 371 437 371 436 Trgb
+0.000000 0.282747 0.084824 399 386 371 436 399 385 Trgb
+0.000000 0.091351 0.027405 397 383 369 434 367 434 Trgb
+0.000000 0.045675 0.013703 397 383 367 434 394 383 Trgb
+0.000000 0.698748 0.209624 369 435 369 433 369 435 Trgb
+0.000000 0.698748 0.209624 369 433 369 434 369 435 Trgb
+0.000000 0.698748 0.209624 369 434 369 435 369 435 Trgb
+0.000000 0.698748 0.209624 369 435 370 437 369 435 Trgb
+0.000000 0.698748 0.209624 370 437 369 437 369 435 Trgb
+0.000000 0.698748 0.209624 369 437 369 435 369 435 Trgb
+0.000000 0.035263 0.010579 369 437 329 445 329 443 Trgb
+0.000000 0.028701 0.008610 369 437 329 443 369 435 Trgb
+0.000000 0.027065 0.008120 370 437 329 445 329 445 Trgb
+0.000000 0.034445 0.010334 370 437 329 445 369 437 Trgb
+0.000000 0.014759 0.004428 369 435 329 443 328 442 Trgb
+0.000000 0.007380 0.002214 369 435 328 442 369 433 Trgb
+0.000793 0.000950 0.000349 318 443 321 455 315 446 Trgb
+0.122526 0.146716 0.053848 327 441 329 451 318 443 Trgb
+0.080197 0.096030 0.035245 321 455 318 443 329 451 Trgb
+0.149369 0.178859 0.065646 329 451 331 457 321 455 Trgb
+0.000000 0.000000 0.000000 318 436 318 443 315 446 Trgb
+0.043122 0.051635 0.018951 326 432 327 441 318 443 Trgb
+0.000000 0.000000 0.000000 318 443 318 436 326 432 Trgb
+0.000000 0.000000 0.000000 326 430 326 432 318 436 Trgb
+0.243693 0.291804 0.107100 340 451 337 439 342 441 Trgb
+0.201137 0.240847 0.088397 329 451 327 441 337 439 Trgb
+0.255047 0.305399 0.112089 337 439 340 451 329 451 Trgb
+0.245608 0.294097 0.107941 331 457 329 451 340 451 Trgb
+0.146662 0.175617 0.064456 337 439 337 432 342 441 Trgb
+0.121733 0.145766 0.053500 327 441 326 432 337 439 Trgb
+0.078611 0.094131 0.034548 337 432 337 439 326 432 Trgb
+0.000000 0.000000 0.000000 326 432 326 430 337 432 Trgb
+0.000000 0.696899 0.209070 360 448 358 449 358 447 Trgb
+0.000000 0.696899 0.209070 358 449 356 448 358 447 Trgb
+0.000000 0.696899 0.209070 356 448 356 446 358 447 Trgb
+0.000000 0.696899 0.209070 356 446 358 445 358 447 Trgb
+0.000000 0.696899 0.209070 358 445 360 446 358 447 Trgb
+0.000000 0.696899 0.209070 360 446 360 448 358 447 Trgb
+0.000000 0.000000 0.000000 369 433 358 445 356 446 Trgb
+0.000000 0.000000 0.000000 369 433 356 446 367 434 Trgb
+0.000000 0.028512 0.008554 371 434 360 446 358 445 Trgb
+0.000000 0.014256 0.004277 371 434 358 445 369 433 Trgb
+0.000000 0.057393 0.017218 371 436 360 448 360 446 Trgb
+0.000000 0.050081 0.015024 371 436 360 446 371 434 Trgb
+0.031196 0.349100 0.076059 362 452 354 455 356 450 Trgb
+0.044298 0.495717 0.108003 366 452 361 456 362 452 Trgb
+0.031814 0.356014 0.077566 354 455 362 452 361 456 Trgb
+0.013721 0.153545 0.033453 361 456 355 455 354 455 Trgb
+0.013103 0.146631 0.031947 354 455 351 446 356 450 Trgb
+0.000000 0.000000 0.000000 350 450 350 443 351 446 Trgb
+0.004147 0.046407 0.010111 351 446 354 455 350 450 Trgb
+0.035568 0.398023 0.086718 359 444 362 452 356 450 Trgb
+0.048670 0.544640 0.118662 366 445 366 452 362 452 Trgb
+0.040558 0.453861 0.098884 362 452 359 444 366 445 Trgb
+0.025556 0.285986 0.062308 362 440 366 445 359 444 Trgb
+0.017475 0.195555 0.042606 351 446 359 444 356 450 Trgb
+0.000000 0.000000 0.000000 350 443 355 439 351 446 Trgb
+0.008519 0.095331 0.020770 359 444 351 446 355 439 Trgb
+0.011610 0.129925 0.028307 355 439 362 440 359 444 Trgb
+0.017037 0.190656 0.041539 366 445 362 440 362 440 Trgb
+0.000000 0.000000 0.000000 367 434 369 434 369 435 Trgb
+0.000000 0.000000 0.000000 369 434 371 435 369 435 Trgb
+0.000000 0.000000 0.000000 371 435 371 436 369 435 Trgb
+0.000000 0.000000 0.000000 371 436 369 436 369 435 Trgb
+0.000000 0.000000 0.000000 369 436 367 436 369 435 Trgb
+0.000000 0.000000 0.000000 367 436 367 434 369 435 Trgb
+0.000000 0.242861 0.072858 369 436 372 469 370 468 Trgb
+0.000000 0.121430 0.036429 369 436 370 468 367 436 Trgb
+0.000000 0.537282 0.161185 371 436 374 468 372 469 Trgb
+0.000000 0.450787 0.135236 371 436 372 469 369 436 Trgb
+0.000000 0.380917 0.114275 371 435 374 467 374 468 Trgb
+0.000000 0.502347 0.150704 371 435 374 468 371 436 Trgb
+0.023187 0.019364 0.008510 357 469 363 475 366 481 Trgb
+0.316349 0.264191 0.116108 374 477 384 473 381 480 Trgb
+0.200748 0.167650 0.073679 381 480 366 481 374 477 Trgb
+0.121324 0.101321 0.044529 363 475 374 477 366 481 Trgb
+0.006442 0.005380 0.002364 365 465 363 456 371 456 Trgb
+0.006442 0.005380 0.002364 363 456 365 465 357 469 Trgb
+0.018714 0.015629 0.006869 363 475 357 469 365 465 Trgb
+0.298993 0.249697 0.109738 384 473 387 466 381 480 Trgb
+0.093666 0.078222 0.034378 379 463 365 465 371 456 Trgb
+0.311877 0.260456 0.114467 384 473 374 477 379 463 Trgb
+0.191803 0.160180 0.070397 365 465 379 463 374 477 Trgb
+0.116852 0.097586 0.042888 374 477 363 475 365 465 Trgb
+0.000000 0.000000 0.000000 363 456 378 454 371 456 Trgb
+0.087224 0.072843 0.032013 378 454 379 463 371 456 Trgb
+0.294521 0.245962 0.108097 387 466 384 473 379 463 Trgb
+0.168006 0.140306 0.061662 379 463 378 454 387 466 Trgb
+0.000000 0.699893 0.209968 443 419 441 421 443 419 Trgb
+0.000000 0.699893 0.209968 441 421 441 420 443 419 Trgb
+0.000000 0.699893 0.209968 441 420 442 418 443 419 Trgb
+0.000000 0.699893 0.209968 442 418 444 416 443 419 Trgb
+0.000000 0.699893 0.209968 444 416 444 417 443 419 Trgb
+0.000000 0.699893 0.209968 444 417 443 419 443 419 Trgb
+0.000000 0.001169 0.000351 395 386 441 420 441 421 Trgb
+0.000000 0.000585 0.000175 395 386 441 421 396 386 Trgb
+0.000000 0.008146 0.002444 396 383 442 418 441 420 Trgb
+0.000000 0.004950 0.001485 396 383 441 420 395 386 Trgb
+0.000000 0.010173 0.003052 398 382 444 416 442 418 Trgb
+0.000000 0.010758 0.003227 398 382 442 418 396 383 Trgb
+0.000000 0.699690 0.209907 475 413 475 415 474 414 Trgb
+0.000000 0.699690 0.209907 475 415 474 416 474 414 Trgb
+0.000000 0.699690 0.209907 474 416 473 415 474 414 Trgb
+0.000000 0.699690 0.209907 473 415 473 412 474 414 Trgb
+0.000000 0.699690 0.209907 473 412 474 412 474 414 Trgb
+0.000000 0.699690 0.209907 474 412 475 413 474 414 Trgb
+0.000000 0.009727 0.002918 441 419 473 415 474 416 Trgb
+0.000000 0.014819 0.004446 441 419 474 416 443 421 Trgb
+0.000000 0.001545 0.000463 441 417 473 412 473 415 Trgb
+0.000000 0.003090 0.000927 441 417 473 415 441 419 Trgb
+0.000000 0.000000 0.000000 442 416 474 412 473 412 Trgb
+0.000000 0.000000 0.000000 442 416 473 412 441 417 Trgb
+0.444852 0.102658 0.109502 492 406 490 425 489 411 Trgb
+0.475371 0.109701 0.117014 490 425 477 419 489 411 Trgb
+0.234152 0.054035 0.057637 472 433 463 423 477 419 Trgb
+0.394626 0.091068 0.097139 477 419 490 425 472 433 Trgb
+0.358772 0.082794 0.088313 482 431 472 433 490 425 Trgb
+0.311095 0.071791 0.076577 479 399 492 406 489 411 Trgb
+0.148213 0.034203 0.036483 492 406 479 399 476 395 Trgb
+0.048297 0.011145 0.011888 466 396 476 395 479 399 Trgb
+0.341613 0.078834 0.084089 477 419 479 399 489 411 Trgb
+0.152014 0.035080 0.037419 463 423 461 407 477 419 Trgb
+0.178731 0.041246 0.043995 479 399 477 419 461 407 Trgb
+0.048297 0.011145 0.011888 461 407 466 396 479 399 Trgb
+0.103718 0.023935 0.025530 463 423 472 433 456 422 Trgb
+0.021580 0.004980 0.005312 461 407 463 423 456 422 Trgb
+0.000000 0.000000 0.000000 456 422 458 403 461 407 Trgb
+0.000000 0.000000 0.000000 466 396 461 407 458 403 Trgb
+0.000000 0.000000 0.000000 442 419 441 419 443 419 Trgb
+0.000000 0.000000 0.000000 441 419 441 419 443 419 Trgb
+0.000000 0.000000 0.000000 441 419 443 418 443 419 Trgb
+0.000000 0.000000 0.000000 443 418 445 418 443 419 Trgb
+0.000000 0.000000 0.000000 445 418 444 418 443 419 Trgb
+0.000000 0.000000 0.000000 444 418 442 419 443 419 Trgb
+0.000000 0.045400 0.013620 444 418 452 460 450 460 Trgb
+0.000000 0.030855 0.009257 444 418 450 460 442 419 Trgb
+0.000000 0.049070 0.014721 445 418 453 460 452 460 Trgb
+0.000000 0.054507 0.016352 445 418 452 460 444 418 Trgb
+0.000000 0.010874 0.003262 442 419 450 460 449 460 Trgb
+0.000000 0.005437 0.001631 442 419 449 460 441 419 Trgb
+0.353693 0.099034 0.090545 448 476 466 472 455 479 Trgb
+0.272514 0.076304 0.069763 443 463 458 461 448 476 Trgb
+0.402283 0.112639 0.102985 466 472 448 476 458 461 Trgb
+0.462817 0.129589 0.118481 458 461 468 458 466 472 Trgb
+0.182115 0.050992 0.046621 442 475 448 476 455 479 Trgb
+0.134561 0.037677 0.034448 434 464 443 463 448 476 Trgb
+0.092752 0.025971 0.023745 448 476 442 475 434 464 Trgb
+0.045201 0.012656 0.011571 461 445 443 449 447 441 Trgb
+0.179761 0.050333 0.046019 458 461 443 463 443 449 Trgb
+0.183153 0.051283 0.046887 443 449 461 445 458 461 Trgb
+0.336439 0.094203 0.086129 468 458 458 461 461 445 Trgb
+0.277313 0.077648 0.070992 469 456 468 458 461 445 Trgb
+0.000000 0.000000 0.000000 443 449 437 448 447 441 Trgb
+0.041809 0.011706 0.010703 443 463 434 464 443 449 Trgb
+0.000000 0.000000 0.000000 437 448 443 449 434 464 Trgb
+0.000000 0.698795 0.209638 443 439 445 440 442 440 Trgb
+0.000000 0.698795 0.209638 445 440 444 442 442 440 Trgb
+0.000000 0.698795 0.209638 444 442 441 442 442 440 Trgb
+0.000000 0.698795 0.209638 441 442 440 440 442 440 Trgb
+0.000000 0.698795 0.209638 440 440 441 439 442 440 Trgb
+0.000000 0.698795 0.209638 441 439 443 439 442 440 Trgb
+0.000000 0.031657 0.009497 445 418 445 440 443 439 Trgb
+0.000000 0.022869 0.006861 445 418 443 439 444 417 Trgb
+0.000000 0.000000 0.000000 441 417 441 439 440 440 Trgb
+0.000000 0.000000 0.000000 441 417 440 440 440 419 Trgb
+0.000000 0.009388 0.002816 444 417 443 439 441 439 Trgb
+0.000000 0.004694 0.001408 444 417 441 439 441 417 Trgb
+0.464524 0.061662 0.105237 449 436 456 454 442 452 Trgb
+0.328483 0.043604 0.074417 452 424 463 435 449 436 Trgb
+0.473280 0.062825 0.107221 456 454 449 436 463 435 Trgb
+0.488213 0.064807 0.110604 463 435 462 449 456 454 Trgb
+0.388439 0.051563 0.088000 456 454 436 460 442 452 Trgb
+0.321110 0.042625 0.072747 436 460 456 454 449 458 Trgb
+0.265926 0.035300 0.060245 428 442 449 436 442 452 Trgb
+0.186236 0.024722 0.042191 435 423 452 424 449 436 Trgb
+0.132435 0.017580 0.030003 449 436 428 442 435 423 Trgb
+0.000000 0.000000 0.000000 423 432 435 423 428 442 Trgb
+0.196048 0.026024 0.044414 463 435 452 424 449 421 Trgb
+0.189841 0.025200 0.043008 436 460 428 442 442 452 Trgb
+0.056350 0.007480 0.012766 428 442 436 460 422 446 Trgb
+0.000000 0.000000 0.000000 422 446 423 432 428 442 Trgb
+0.053800 0.007142 0.012188 452 424 435 423 449 421 Trgb
+0.000000 0.000000 0.000000 435 423 423 432 429 427 Trgb
+0.000000 0.000000 0.000000 394 385 396 383 397 384 Trgb
+0.000000 0.000000 0.000000 396 383 398 382 397 384 Trgb
+0.000000 0.000000 0.000000 398 382 399 383 397 384 Trgb
+0.000000 0.000000 0.000000 399 383 398 385 397 384 Trgb
+0.000000 0.000000 0.000000 398 385 395 386 397 384 Trgb
+0.000000 0.000000 0.000000 395 386 394 385 397 384 Trgb
+0.000000 0.009095 0.002729 395 386 418 431 417 430 Trgb
+0.000000 0.004548 0.001364 395 386 417 430 394 385 Trgb
+0.000000 0.072128 0.021639 398 385 420 430 418 431 Trgb
+0.000000 0.042886 0.012866 398 385 418 431 395 386 Trgb
+0.000000 0.092276 0.027683 399 383 422 429 420 430 Trgb
+0.000000 0.096823 0.029047 399 383 420 430 398 385 Trgb
+0.000000 0.697133 0.209140 418 430 418 428 419 429 Trgb
+0.000000 0.697133 0.209140 418 428 419 427 419 429 Trgb
+0.000000 0.697133 0.209140 419 427 421 428 419 429 Trgb
+0.000000 0.697133 0.209140 421 428 421 430 419 429 Trgb
+0.000000 0.697133 0.209140 421 430 419 431 419 429 Trgb
+0.000000 0.697133 0.209140 419 431 418 430 419 429 Trgb
+0.000000 0.020589 0.006177 419 431 420 435 418 434 Trgb
+0.000000 0.010295 0.003088 419 431 418 434 418 430 Trgb
+0.000000 0.052480 0.015744 421 430 422 435 420 435 Trgb
+0.000000 0.041682 0.012505 421 430 420 435 419 431 Trgb
+0.000000 0.042689 0.012807 421 428 422 433 422 435 Trgb
+0.000000 0.052984 0.015895 421 428 422 435 421 430 Trgb
+0.291762 0.030182 0.064389 426 444 408 438 420 431 Trgb
+0.050562 0.005231 0.011159 415 452 403 442 408 438 Trgb
+0.235211 0.024332 0.051909 408 438 426 444 415 452 Trgb
+0.389230 0.040265 0.085899 429 450 415 452 426 444 Trgb
+0.425848 0.044053 0.093980 432 426 426 444 420 431 Trgb
+0.413548 0.042781 0.091266 437 425 438 439 432 426 Trgb
+0.503383 0.052074 0.111092 426 444 432 426 438 439 Trgb
+0.523316 0.054136 0.115491 438 439 429 450 426 444 Trgb
+0.107113 0.011081 0.023639 408 438 413 420 420 431 Trgb
+0.005095 0.000527 0.001124 403 442 402 428 408 438 Trgb
+0.005095 0.000527 0.001124 413 420 408 438 402 428 Trgb
+0.000000 0.000000 0.000000 402 428 411 417 413 420 Trgb
+0.241200 0.024952 0.053230 413 420 432 426 420 431 Trgb
+0.233994 0.024206 0.051640 426 416 437 425 432 426 Trgb
+0.139181 0.014398 0.030716 432 426 413 420 426 416 Trgb
+0.000000 0.000000 0.000000 411 417 426 416 413 420 Trgb
+0.000000 0.697171 0.209151 417 467 417 468 415 467 Trgb
+0.000000 0.697171 0.209151 417 468 415 468 415 467 Trgb
+0.000000 0.697171 0.209151 415 468 414 467 415 467 Trgb
+0.000000 0.697171 0.209151 414 467 414 467 415 467 Trgb
+0.000000 0.697171 0.209151 414 467 415 467 415 467 Trgb
+0.000000 0.697171 0.209151 415 467 417 467 415 467 Trgb
+0.000000 0.044776 0.013433 421 430 417 468 417 467 Trgb
+0.000000 0.053715 0.016115 421 430 417 467 421 429 Trgb
+0.000000 0.017878 0.005364 419 428 415 467 414 467 Trgb
+0.000000 0.008939 0.002682 419 428 414 467 418 429 Trgb
+0.000000 0.050709 0.015213 421 429 417 467 415 467 Trgb
+0.000000 0.038763 0.011629 421 429 415 467 419 428 Trgb
+0.398748 0.030157 0.085781 427 480 421 486 413 487 Trgb
+0.541936 0.040987 0.116584 433 466 435 471 427 480 Trgb
+0.376526 0.028477 0.081001 407 476 427 480 413 487 Trgb
+0.519713 0.039306 0.111804 421 461 433 466 427 480 Trgb
+0.393916 0.029792 0.084742 427 480 407 476 421 461 Trgb
+0.185847 0.014056 0.039980 405 460 421 461 407 476 Trgb
+0.393176 0.029736 0.084582 435 471 433 466 429 453 Trgb
+0.168457 0.012740 0.036239 401 482 407 476 413 487 Trgb
+0.063268 0.004785 0.013611 407 476 401 482 396 463 Trgb
+0.063268 0.004785 0.013611 396 463 405 460 407 476 Trgb
+0.059310 0.004486 0.012759 429 453 410 449 417 448 Trgb
+0.370954 0.028055 0.079802 433 466 421 461 429 453 Trgb
+0.181888 0.013756 0.039129 410 449 429 453 421 461 Trgb
+0.122578 0.009271 0.026370 421 461 405 460 410 449 Trgb
+0.000000 0.000000 0.000000 405 460 396 463 410 449 Trgb
+0.000000 0.013103 0.003931 419 430 457 446 456 446 Trgb
+0.000000 0.006551 0.001965 419 430 456 446 419 431 Trgb
+0.000000 0.020230 0.006069 420 429 457 444 457 446 Trgb
+0.000000 0.019942 0.005983 420 429 457 446 419 430 Trgb
+0.000000 0.007416 0.002225 420 427 458 443 457 444 Trgb
+0.000000 0.013967 0.004190 420 427 457 444 420 429 Trgb
+0.105394 0.247297 0.070538 453 455 455 452 463 453 Trgb
+0.099335 0.233080 0.066483 463 453 462 453 453 455 Trgb
+0.076087 0.178532 0.050924 460 437 461 434 467 442 Trgb
+0.177850 0.417308 0.119032 463 453 467 442 468 449 Trgb
+0.134392 0.315339 0.089946 455 452 458 444 463 453 Trgb
+0.157331 0.369162 0.105299 467 442 463 453 458 444 Trgb
+0.113669 0.266714 0.076077 458 444 460 437 467 442 Trgb
+0.000000 0.000000 0.000000 448 446 447 447 447 440 Trgb
+0.041228 0.096737 0.027593 455 452 453 455 448 446 Trgb
+0.008584 0.020141 0.005745 447 447 448 446 453 455 Trgb
+0.000000 0.000000 0.000000 451 436 452 436 447 440 Trgb
+0.020505 0.048112 0.013723 461 434 460 437 452 436 Trgb
+0.000000 0.000000 0.000000 452 436 448 446 447 440 Trgb
+0.070226 0.164778 0.047001 458 444 455 452 448 446 Trgb
+0.037582 0.088182 0.025153 448 446 452 436 458 444 Trgb
+0.058087 0.136295 0.038876 460 437 458 444 452 436 Trgb
+0.000000 0.699414 0.209824 398 361 400 364 396 364 Trgb
+0.000000 0.699414 0.209824 400 364 398 366 396 364 Trgb
+0.000000 0.699414 0.209824 398 366 394 367 396 364 Trgb
+0.000000 0.699414 0.209824 394 367 392 364 396 364 Trgb
+0.000000 0.699414 0.209824 392 364 394 361 396 364 Trgb
+0.000000 0.699414 0.209824 394 361 398 361 396 364 Trgb
+0.000000 0.025252 0.007576 387 307 400 364 398 361 Trgb
+0.000000 0.023246 0.006974 387 307 398 361 385 304 Trgb
+0.000000 0.000000 0.000000 381 305 394 361 392 364 Trgb
+0.000000 0.000000 0.000000 381 305 392 364 379 307 Trgb
+0.000000 0.014159 0.004248 385 304 398 361 394 361 Trgb
+0.000000 0.007080 0.002124 385 304 394 361 381 305 Trgb
+0.000000 0.670057 0.201017 363 403 365 405 363 405 Trgb
+0.000000 0.670057 0.201017 365 405 366 407 363 405 Trgb
+0.000000 0.670057 0.201017 366 407 364 407 363 405 Trgb
+0.000000 0.670057 0.201017 364 407 361 406 363 405 Trgb
+0.000000 0.670057 0.201017 361 406 361 404 363 405 Trgb
+0.000000 0.670057 0.201017 361 404 363 403 363 405 Trgb
+0.000000 0.126608 0.037982 398 364 365 405 363 403 Trgb
+0.000000 0.070797 0.021239 398 364 363 403 396 362 Trgb
+0.000000 0.172428 0.051728 399 366 366 407 365 405 Trgb
+0.000000 0.177423 0.053227 399 366 365 405 398 364 Trgb
+0.000000 0.009991 0.002997 396 362 363 403 361 404 Trgb
+0.000000 0.004996 0.001499 396 362 361 404 394 362 Trgb
+0.000000 0.000000 0.000000 321 398 321 400 321 399 Trgb
+0.000000 0.000000 0.000000 321 400 320 401 321 399 Trgb
+0.000000 0.000000 0.000000 320 401 320 400 321 399 Trgb
+0.000000 0.000000 0.000000 320 400 320 397 321 399 Trgb
+0.000000 0.000000 0.000000 320 397 321 396 321 399 Trgb
+0.000000 0.000000 0.000000 321 396 321 398 321 399 Trgb
+0.000000 0.039172 0.011752 363 407 321 400 321 398 Trgb
+0.000000 0.034938 0.010481 363 407 321 398 364 405 Trgb
+0.000000 0.022937 0.006881 363 408 320 401 321 400 Trgb
+0.000000 0.033171 0.009951 363 408 321 400 363 407 Trgb
+0.000000 0.020469 0.006141 364 405 321 398 321 396 Trgb
+0.000000 0.010235 0.003070 364 405 321 396 363 403 Trgb
+0.000000 0.000000 0.000000 316 395 314 403 312 397 Trgb
+0.027860 0.282235 0.062019 323 395 322 402 316 395 Trgb
+0.016503 0.167185 0.036738 314 403 316 395 322 402 Trgb
+0.028485 0.288569 0.063411 322 402 320 407 314 403 Trgb
+0.012424 0.125863 0.027657 320 407 319 407 314 403 Trgb
+0.000000 0.000000 0.000000 315 392 316 395 312 397 Trgb
+0.011357 0.115051 0.025282 322 390 323 395 316 395 Trgb
+0.000000 0.000000 0.000000 316 395 315 392 322 390 Trgb
+0.047694 0.483162 0.106171 326 405 328 397 329 400 Trgb
+0.045026 0.456136 0.100232 322 402 323 395 328 397 Trgb
+0.051278 0.519465 0.114148 328 397 326 405 322 402 Trgb
+0.046094 0.466948 0.102608 320 407 322 402 326 405 Trgb
+0.030749 0.311499 0.068450 328 397 327 394 329 400 Trgb
+0.028523 0.288951 0.063495 323 395 322 390 328 397 Trgb
+0.017829 0.180617 0.039689 327 394 328 397 322 390 Trgb
+0.000000 0.699487 0.209846 371 439 368 439 370 437 Trgb
+0.000000 0.699487 0.209846 368 439 368 437 370 437 Trgb
+0.000000 0.699487 0.209846 368 437 370 436 370 437 Trgb
+0.000000 0.699487 0.209846 370 436 372 436 370 437 Trgb
+0.000000 0.699487 0.209846 372 436 372 438 370 437 Trgb
+0.000000 0.699487 0.209846 372 438 371 439 370 437 Trgb
+0.000000 0.000605 0.000182 363 404 370 436 368 437 Trgb
+0.000000 0.000303 0.000091 363 404 368 437 361 405 Trgb
+0.000000 0.016071 0.004821 365 404 372 436 370 436 Trgb
+0.000000 0.008489 0.002547 365 404 370 436 363 404 Trgb
+0.000000 0.023048 0.006914 365 406 372 438 372 436 Trgb
+0.000000 0.023350 0.007005 365 406 372 436 365 404 Trgb
+0.065732 0.277683 0.068683 373 448 364 445 372 445 Trgb
+0.067033 0.283180 0.070043 364 445 370 438 372 445 Trgb
+0.026637 0.112527 0.027833 361 434 368 430 370 438 Trgb
+0.031584 0.133427 0.033002 370 438 364 445 361 434 Trgb
+0.005867 0.024787 0.006131 360 440 361 434 364 445 Trgb
+0.104129 0.439892 0.108804 379 441 373 448 372 445 Trgb
+0.089964 0.380052 0.094003 381 435 379 440 379 441 Trgb
+0.105430 0.445389 0.110164 370 438 379 441 372 445 Trgb
+0.046486 0.196380 0.048573 368 430 376 430 370 438 Trgb
+0.089831 0.379489 0.093864 379 441 370 438 376 430 Trgb
+0.091265 0.385549 0.095363 376 430 381 435 379 441 Trgb
+0.000920 0.003887 0.000961 368 430 361 434 367 427 Trgb
+0.000000 0.000000 0.000000 361 434 367 427 361 434 Trgb
+0.020769 0.087740 0.021702 376 430 368 430 367 427 Trgb
+0.019849 0.083853 0.020740 367 427 376 430 376 430 Trgb
+0.047000 0.198553 0.049111 381 435 376 430 376 430 Trgb
+0.000000 0.699497 0.209849 381 445 379 445 381 444 Trgb
+0.000000 0.699497 0.209849 379 445 380 444 381 444 Trgb
+0.000000 0.699497 0.209849 380 444 382 443 381 444 Trgb
+0.000000 0.699497 0.209849 382 443 383 443 381 444 Trgb
+0.000000 0.699497 0.209849 383 443 383 444 381 444 Trgb
+0.000000 0.699497 0.209849 383 444 381 445 381 444 Trgb
+0.000000 0.000696 0.000209 362 406 380 444 379 445 Trgb
+0.000000 0.000348 0.000104 362 406 379 445 361 406 Trgb
+0.000000 0.016007 0.004802 364 405 382 443 380 444 Trgb
+0.000000 0.008525 0.002558 364 405 380 444 362 406 Trgb
+0.000000 0.022792 0.006838 365 404 383 443 382 443 Trgb
+0.000000 0.023140 0.006942 365 404 382 443 364 405 Trgb
+0.310982 0.003067 0.062810 384 465 374 464 391 465 Trgb
+0.084174 0.000830 0.017001 363 455 361 451 374 464 Trgb
+0.485793 0.004791 0.098117 374 464 393 453 391 465 Trgb
+0.382596 0.003773 0.077274 371 443 388 435 393 453 Trgb
+0.343159 0.003384 0.069309 393 453 374 464 371 443 Trgb
+0.125602 0.001239 0.025368 361 451 371 443 374 464 Trgb
+0.577749 0.005698 0.116689 393 453 403 454 391 465 Trgb
+0.474551 0.004680 0.095846 388 435 400 433 393 453 Trgb
+0.527070 0.005198 0.106454 403 454 393 453 400 433 Trgb
+0.374535 0.003694 0.075646 400 433 401 437 403 454 Trgb
+0.000000 0.000000 0.000000 379 423 360 435 372 424 Trgb
+0.165038 0.001628 0.033333 388 435 371 443 379 423 Trgb
+0.041428 0.000409 0.008367 360 435 379 423 371 443 Trgb
+0.041428 0.000409 0.008367 371 443 361 451 360 435 Trgb
+0.256994 0.002534 0.051906 400 433 388 435 379 423 Trgb
+0.133383 0.001315 0.026940 379 423 389 425 400 433 Trgb
+0.000000 0.699868 0.209960 440 368 438 370 438 367 Trgb
+0.000000 0.699868 0.209960 438 370 436 368 438 367 Trgb
+0.000000 0.699868 0.209960 436 368 436 365 438 367 Trgb
+0.000000 0.699868 0.209960 436 365 438 363 438 367 Trgb
+0.000000 0.699868 0.209960 438 363 440 365 438 367 Trgb
+0.000000 0.699868 0.209960 440 365 440 368 438 367 Trgb
+0.000000 0.005175 0.001553 394 366 436 368 438 370 Trgb
+0.000000 0.008820 0.002646 394 366 438 370 396 367 Trgb
+0.000000 0.000510 0.000153 394 363 436 365 436 368 Trgb
+0.000000 0.001020 0.000306 394 363 436 368 394 366 Trgb
+0.000000 0.000000 0.000000 396 361 438 363 436 365 Trgb
+0.000000 0.000000 0.000000 396 361 436 365 394 363 Trgb
+0.130763 0.477881 0.121729 448 370 441 374 446 367 Trgb
+0.101991 0.372731 0.094944 441 374 448 370 440 377 Trgb
+0.069415 0.253681 0.064619 440 377 434 377 441 374 Trgb
+0.110114 0.402415 0.102506 441 374 438 363 446 367 Trgb
+0.022716 0.083017 0.021147 430 370 431 362 438 363 Trgb
+0.063387 0.231649 0.059007 438 363 441 374 430 370 Trgb
+0.051461 0.188065 0.047905 434 377 430 370 441 374 Trgb
+0.115504 0.422115 0.107524 446 360 448 370 446 367 Trgb
+0.094854 0.346649 0.088301 438 363 446 360 446 367 Trgb
+0.022716 0.083017 0.021147 431 362 435 356 438 363 Trgb
+0.048127 0.175883 0.044802 446 360 438 363 435 356 Trgb
+0.025411 0.092867 0.023656 435 356 442 357 446 360 Trgb
+0.000000 0.000000 0.000000 431 362 430 370 427 363 Trgb
+0.000000 0.000000 0.000000 430 373 427 363 430 370 Trgb
+0.010790 0.039432 0.010044 430 370 434 377 430 373 Trgb
+0.000000 0.000000 0.000000 435 356 431 362 427 363 Trgb
+0.000000 0.697531 0.209259 400 424 402 424 403 424 Trgb
+0.000000 0.697531 0.209259 402 424 405 424 403 424 Trgb
+0.000000 0.697531 0.209259 405 424 406 424 403 424 Trgb
+0.000000 0.697531 0.209259 406 424 404 424 403 424 Trgb
+0.000000 0.697531 0.209259 404 424 401 425 403 424 Trgb
+0.000000 0.697531 0.209259 401 425 400 424 403 424 Trgb
+0.000000 0.010115 0.003035 395 364 402 424 400 424 Trgb
+0.000000 0.005058 0.001517 395 364 400 424 393 364 Trgb
+0.000000 0.042881 0.012864 398 363 405 424 402 424 Trgb
+0.000000 0.029027 0.008708 398 363 402 424 395 364 Trgb
+0.000000 0.046621 0.013986 399 364 406 424 405 424 Trgb
+0.000000 0.051678 0.015503 399 364 405 424 398 363 Trgb
+0.000000 0.692681 0.207804 401 424 402 423 403 424 Trgb
+0.000000 0.692681 0.207804 402 423 404 423 403 424 Trgb
+0.000000 0.692681 0.207804 404 423 405 424 403 424 Trgb
+0.000000 0.692681 0.207804 405 424 405 426 403 424 Trgb
+0.000000 0.692681 0.207804 405 426 403 426 403 424 Trgb
+0.000000 0.692681 0.207804 403 426 401 424 403 424 Trgb
+0.000000 0.033284 0.009985 403 426 395 452 393 450 Trgb
+0.000000 0.016642 0.004993 403 426 393 450 401 424 Trgb
+0.000000 0.083949 0.025185 405 426 397 451 395 452 Trgb
+0.000000 0.066938 0.020081 405 426 395 452 403 426 Trgb
+0.000000 0.067677 0.020303 405 424 397 450 397 451 Trgb
+0.000000 0.084319 0.025296 405 424 397 451 405 426 Trgb
+0.009477 0.046295 0.011154 386 451 390 456 387 455 Trgb
+0.023261 0.113633 0.027379 396 460 387 455 390 456 Trgb
+0.055621 0.271710 0.065466 390 456 398 458 396 460 Trgb
+0.082430 0.402675 0.097021 398 458 403 455 396 460 Trgb
+0.044843 0.219063 0.052781 398 451 390 446 397 444 Trgb
+0.009477 0.046295 0.011154 390 456 386 451 390 446 Trgb
+0.041455 0.202511 0.048793 390 446 398 451 390 456 Trgb
+0.073815 0.360588 0.086881 398 458 390 456 398 451 Trgb
+0.067345 0.328984 0.079266 403 445 398 451 397 444 Trgb
+0.077745 0.379787 0.091506 404 449 403 455 403 445 Trgb
+0.090766 0.443397 0.106833 398 451 403 445 403 455 Trgb
+0.100624 0.491553 0.118435 403 455 398 458 398 451 Trgb
+0.012865 0.062846 0.015142 390 446 395 440 397 444 Trgb
+0.000000 0.000000 0.000000 386 451 387 445 390 446 Trgb
+0.000000 0.000000 0.000000 395 440 390 446 387 445 Trgb
+0.035367 0.172767 0.041627 395 440 403 445 397 444 Trgb
+0.000000 0.637740 0.191322 379 451 379 452 377 451 Trgb
+0.000000 0.637740 0.191322 379 452 378 452 377 451 Trgb
+0.000000 0.637740 0.191322 378 452 376 451 377 451 Trgb
+0.000000 0.637740 0.191322 376 451 376 449 377 451 Trgb
+0.000000 0.637740 0.191322 376 449 377 449 377 451 Trgb
+0.000000 0.637740 0.191322 377 449 379 451 377 451 Trgb
+0.000000 0.252303 0.075691 405 426 379 452 379 451 Trgb
+0.000000 0.246714 0.074014 405 426 379 451 404 424 Trgb
+0.000000 0.000000 0.000000 403 423 377 449 376 449 Trgb
+0.000000 0.000000 0.000000 403 423 376 449 402 423 Trgb
+0.000000 0.160749 0.048225 404 424 379 451 377 449 Trgb
+0.000000 0.080375 0.024112 404 424 377 449 403 423 Trgb
+0.017498 0.271496 0.057799 377 454 377 459 372 456 Trgb
+0.034877 0.541162 0.115208 382 450 384 455 377 454 Trgb
+0.029698 0.460799 0.098099 377 459 377 454 384 455 Trgb
+0.028021 0.434774 0.092559 384 455 382 458 377 459 Trgb
+0.008105 0.125751 0.026771 377 459 370 455 372 456 Trgb
+0.010945 0.169818 0.036153 370 450 377 454 372 456 Trgb
+0.023966 0.371853 0.079164 378 445 382 450 377 454 Trgb
+0.012233 0.189812 0.040409 377 454 370 450 378 445 Trgb
+0.002840 0.044067 0.009382 373 444 378 445 370 450 Trgb
+0.032683 0.507117 0.107960 384 455 382 450 385 447 Trgb
+0.025310 0.392708 0.083604 385 447 384 452 384 455 Trgb
+0.001552 0.024074 0.005125 370 455 370 450 372 456 Trgb
+0.000000 0.000000 0.000000 371 447 373 444 370 450 Trgb
+0.021771 0.337807 0.071916 382 450 378 445 385 447 Trgb
+0.010039 0.155767 0.033161 378 442 385 447 378 445 Trgb
+0.002840 0.044067 0.009382 378 445 373 444 378 442 Trgb
+0.000000 0.699962 0.209989 436 449 434 451 435 449 Trgb
+0.000000 0.699962 0.209989 434 451 433 451 435 449 Trgb
+0.000000 0.699962 0.209989 433 451 434 449 435 449 Trgb
+0.000000 0.699962 0.209989 434 449 435 447 435 449 Trgb
+0.000000 0.699962 0.209989 435 447 436 447 435 449 Trgb
+0.000000 0.699962 0.209989 436 447 436 449 435 449 Trgb
+0.000000 0.002331 0.000699 402 424 434 449 433 451 Trgb
+0.000000 0.001165 0.000350 402 424 433 451 402 426 Trgb
+0.000000 0.006038 0.001812 404 423 435 447 434 449 Trgb
+0.000000 0.004767 0.001430 404 423 434 449 402 424 Trgb
+0.000000 0.004978 0.001494 405 423 436 447 435 447 Trgb
+0.000000 0.006144 0.001843 405 423 435 447 404 423 Trgb
+0.240590 0.297323 0.107583 437 464 437 455 445 458 Trgb
+0.089658 0.110800 0.040092 424 458 427 449 437 455 Trgb
+0.138434 0.171078 0.061902 437 455 437 464 424 458 Trgb
+0.058982 0.072890 0.026374 428 461 424 458 437 464 Trgb
+0.252665 0.312245 0.112982 447 446 447 455 445 458 Trgb
+0.110270 0.136273 0.049309 442 437 445 440 447 446 Trgb
+0.267098 0.330082 0.119436 437 455 447 446 445 458 Trgb
+0.110128 0.136097 0.049245 427 449 434 441 437 455 Trgb
+0.185412 0.229133 0.082909 447 446 437 455 434 441 Trgb
+0.124703 0.154109 0.055763 434 441 442 437 447 446 Trgb
+0.010206 0.012612 0.004564 427 449 424 458 422 443 Trgb
+0.000000 0.000000 0.000000 422 452 422 443 424 458 Trgb
+0.000000 0.000000 0.000000 432 435 422 443 424 441 Trgb
+0.030676 0.037910 0.013717 434 441 427 449 422 443 Trgb
+0.020470 0.025297 0.009154 422 443 432 435 434 441 Trgb
+0.039214 0.048461 0.017535 442 437 434 441 432 435 Trgb
+0.000000 0.675208 0.202562 239 301 244 305 240 305 Trgb
+0.000000 0.675208 0.202562 244 305 244 309 240 305 Trgb
+0.000000 0.675208 0.202562 244 309 241 309 240 305 Trgb
+0.000000 0.675208 0.202562 241 309 236 305 240 305 Trgb
+0.000000 0.675208 0.202562 236 305 236 301 240 305 Trgb
+0.000000 0.675208 0.202562 236 301 239 301 240 305 Trgb
+0.000000 0.139589 0.041877 309 230 244 305 239 301 Trgb
+0.000000 0.098494 0.029548 309 230 239 301 305 226 Trgb
+0.000000 0.142419 0.042726 310 234 244 309 244 305 Trgb
+0.000000 0.161552 0.048465 310 234 244 305 309 230 Trgb
+0.000000 0.038266 0.011480 305 226 239 301 236 301 Trgb
+0.000000 0.019133 0.005740 305 226 236 301 301 226 Trgb
+0.000000 0.697893 0.209368 237 302 239 302 240 305 Trgb
+0.000000 0.697893 0.209368 239 302 242 305 240 305 Trgb
+0.000000 0.697893 0.209368 242 305 243 308 240 305 Trgb
+0.000000 0.697893 0.209368 243 308 241 308 240 305 Trgb
+0.000000 0.697893 0.209368 241 308 238 305 240 305 Trgb
+0.000000 0.697893 0.209368 238 305 237 302 240 305 Trgb
+0.000000 0.017023 0.005107 238 305 176 350 175 346 Trgb
+0.000000 0.008512 0.002553 238 305 175 346 237 302 Trgb
+0.000000 0.044670 0.013401 241 308 179 352 176 350 Trgb
+0.000000 0.035103 0.010531 241 308 176 350 238 305 Trgb
+0.000000 0.037215 0.011165 243 308 181 352 179 352 Trgb
+0.000000 0.045727 0.013718 243 308 179 352 241 308 Trgb
+0.000000 0.699920 0.209976 176 348 178 347 178 349 Trgb
+0.000000 0.699920 0.209976 178 347 180 348 178 349 Trgb
+0.000000 0.699920 0.209976 180 348 180 351 178 349 Trgb
+0.000000 0.699920 0.209976 180 351 178 352 178 349 Trgb
+0.000000 0.699920 0.209976 178 352 176 351 178 349 Trgb
+0.000000 0.699920 0.209976 176 351 176 348 178 349 Trgb
+0.000000 0.001914 0.000574 176 351 145 347 145 344 Trgb
+0.000000 0.000957 0.000287 176 351 145 344 176 348 Trgb
+0.000000 0.007792 0.002337 178 352 147 348 145 347 Trgb
+0.000000 0.005332 0.001599 178 352 145 347 176 351 Trgb
+0.000000 0.000000 0.000000 176 348 145 344 147 343 Trgb
+0.000000 0.000000 0.000000 176 348 147 343 178 347 Trgb
+0.000000 0.699197 0.209759 146 344 148 344 147 345 Trgb
+0.000000 0.699197 0.209759 148 344 149 345 147 345 Trgb
+0.000000 0.699197 0.209759 149 345 148 347 147 345 Trgb
+0.000000 0.699197 0.209759 148 347 146 347 147 345 Trgb
+0.000000 0.699197 0.209759 146 347 145 345 147 345 Trgb
+0.000000 0.699197 0.209759 145 345 146 344 147 345 Trgb
+0.000000 0.000000 0.000000 145 345 151 323 151 321 Trgb
+0.000000 0.000000 0.000000 145 345 151 321 146 344 Trgb
+0.000000 0.025417 0.007625 148 344 153 321 154 322 Trgb
+0.000000 0.029199 0.008760 148 344 154 322 149 345 Trgb
+0.000000 0.007212 0.002163 146 344 151 321 153 321 Trgb
+0.000000 0.014423 0.004327 146 344 153 321 148 344 Trgb
+0.041504 0.027267 0.013754 155 311 144 313 148 310 Trgb
+0.041504 0.027267 0.013754 148 310 162 312 155 311 Trgb
+0.133196 0.087504 0.044140 164 317 155 311 162 312 Trgb
+0.157254 0.103310 0.052113 143 333 145 322 150 331 Trgb
+0.048551 0.031896 0.016089 138 320 144 313 145 322 Trgb
+0.055597 0.036525 0.018424 145 322 143 333 138 320 Trgb
+0.007046 0.004629 0.002335 141 328 138 320 143 333 Trgb
+0.203918 0.133965 0.067577 157 336 143 333 150 331 Trgb
+0.286927 0.188499 0.095085 145 322 159 325 150 331 Trgb
+0.090055 0.059162 0.029843 144 313 155 311 145 322 Trgb
+0.226774 0.148981 0.075151 159 325 145 322 155 311 Trgb
+0.269915 0.177323 0.089448 155 311 164 317 159 325 Trgb
+0.333590 0.219155 0.110549 159 325 157 336 150 331 Trgb
+0.216378 0.142151 0.071706 167 325 161 332 157 336 Trgb
+0.320101 0.210293 0.106079 157 336 159 325 167 325 Trgb
+0.316578 0.207979 0.104911 164 317 167 325 159 325 Trgb
+0.000000 0.698678 0.209603 147 347 147 346 147 345 Trgb
+0.000000 0.698678 0.209603 147 346 147 344 147 345 Trgb
+0.000000 0.698678 0.209603 147 344 147 344 147 345 Trgb
+0.000000 0.698678 0.209603 147 344 147 345 147 345 Trgb
+0.000000 0.698678 0.209603 147 345 147 346 147 345 Trgb
+0.000000 0.698678 0.209603 147 346 147 347 147 345 Trgb
+0.000000 0.018415 0.005524 147 344 109 337 110 336 Trgb
+0.000000 0.009207 0.002762 147 344 110 336 147 344 Trgb
+0.000000 0.037448 0.011234 147 346 109 338 109 337 Trgb
+0.000000 0.032535 0.009761 147 346 109 337 147 344 Trgb
+0.000000 0.023946 0.007184 147 347 109 339 109 338 Trgb
+0.000000 0.033154 0.009946 147 347 109 338 147 346 Trgb
+0.013745 0.002545 0.003258 96 334 94 347 91 334 Trgb
+0.190914 0.035354 0.045254 106 349 105 355 94 347 Trgb
+0.152290 0.028202 0.036098 94 347 96 334 106 349 Trgb
+0.295853 0.054788 0.070128 108 336 106 349 96 334 Trgb
+0.013745 0.002545 0.003258 99 323 96 334 91 334 Trgb
+0.064484 0.011941 0.015285 113 320 111 324 99 323 Trgb
+0.078229 0.014487 0.018543 96 334 99 323 111 324 Trgb
+0.221792 0.041073 0.052573 111 324 108 336 96 334 Trgb
+0.438208 0.081150 0.103872 119 353 121 339 127 341 Trgb
+0.315714 0.058466 0.074836 105 355 106 349 119 353 Trgb
+0.452629 0.083820 0.107290 121 339 119 353 106 349 Trgb
+0.471392 0.087295 0.111737 106 349 108 336 121 339 Trgb
+0.364147 0.067435 0.086316 121 339 125 328 127 341 Trgb
+0.115222 0.021337 0.027312 111 324 113 320 125 328 Trgb
+0.304506 0.056390 0.072179 125 328 121 339 111 324 Trgb
+0.397330 0.073580 0.094182 108 336 111 324 121 339 Trgb
+0.000000 0.691781 0.207534 149 346 148 347 147 345 Trgb
+0.000000 0.691781 0.207534 148 347 147 346 147 345 Trgb
+0.000000 0.691781 0.207534 147 346 145 345 147 345 Trgb
+0.000000 0.691781 0.207534 145 345 146 344 147 345 Trgb
+0.000000 0.691781 0.207534 146 344 147 345 147 345 Trgb
+0.000000 0.691781 0.207534 147 345 149 346 147 345 Trgb
+0.000000 0.000000 0.000000 145 345 131 375 131 374 Trgb
+0.000000 0.000000 0.000000 145 345 131 374 146 344 Trgb
+0.000000 0.058813 0.017644 147 346 132 376 131 375 Trgb
+0.000000 0.029406 0.008822 147 346 131 375 145 345 Trgb
+0.000000 0.093726 0.028118 148 347 134 376 132 376 Trgb
+0.000000 0.090973 0.027292 148 347 132 376 147 346 Trgb
+0.000000 0.000000 0.000000 124 370 125 375 124 380 Trgb
+0.107475 0.388264 0.099148 136 381 141 379 133 384 Trgb
+0.029201 0.105490 0.026938 133 366 141 370 136 368 Trgb
+0.031304 0.113090 0.028879 125 375 130 379 124 380 Trgb
+0.054230 0.195912 0.050028 133 384 124 380 130 379 Trgb
+0.102218 0.369274 0.094298 130 379 136 381 133 384 Trgb
+0.023944 0.086500 0.022089 129 369 133 366 136 368 Trgb
+0.008378 0.030267 0.007729 125 375 124 370 129 369 Trgb
+0.008378 0.030267 0.007729 133 366 129 369 124 370 Trgb
+0.074140 0.267838 0.068396 141 370 138 374 136 368 Trgb
+0.095135 0.343686 0.087764 138 374 141 370 141 379 Trgb
+0.129488 0.467789 0.119455 141 379 136 381 138 374 Trgb
+0.068883 0.248847 0.063546 138 374 129 369 136 368 Trgb
+0.039682 0.143357 0.036608 130 379 125 375 129 369 Trgb
+0.084621 0.305704 0.078065 129 369 138 374 130 379 Trgb
+0.124231 0.448798 0.114606 136 381 130 379 138 374 Trgb
+0.000000 0.000000 0.000000 133 384 131 383 131 381 Trgb
+0.000000 0.000000 0.000000 131 383 130 380 131 381 Trgb
+0.000000 0.000000 0.000000 130 380 129 379 131 381 Trgb
+0.000000 0.000000 0.000000 129 379 131 380 131 381 Trgb
+0.000000 0.000000 0.000000 131 380 132 382 131 381 Trgb
+0.000000 0.000000 0.000000 132 382 133 384 131 381 Trgb
+0.000000 0.087931 0.026379 178 348 131 380 129 379 Trgb
+0.000000 0.043965 0.013190 178 348 129 379 176 347 Trgb
+0.000000 0.299857 0.089957 179 350 132 382 131 380 Trgb
+0.000000 0.215876 0.064763 179 350 131 380 178 348 Trgb
+0.000000 0.295907 0.088772 179 352 133 384 132 382 Trgb
+0.000000 0.339872 0.101962 179 352 132 382 179 350 Trgb
+0.000000 0.691585 0.207476 106 387 105 387 105 385 Trgb
+0.000000 0.691585 0.207476 105 387 103 386 105 385 Trgb
+0.000000 0.691585 0.207476 103 386 104 384 105 385 Trgb
+0.000000 0.691585 0.207476 104 384 105 383 105 385 Trgb
+0.000000 0.691585 0.207476 105 383 107 385 105 385 Trgb
+0.000000 0.691585 0.207476 107 385 106 387 105 385 Trgb
+0.000000 0.038905 0.011671 131 383 105 387 106 387 Trgb
+0.000000 0.068470 0.020541 131 383 106 387 132 383 Trgb
+0.000000 0.059130 0.017739 133 381 107 385 105 383 Trgb
+0.000000 0.029565 0.008870 133 381 105 383 131 379 Trgb
+0.000000 0.094922 0.028477 132 383 106 387 107 385 Trgb
+0.000000 0.091809 0.027543 132 383 107 385 133 381 Trgb
+0.036557 0.227068 0.052725 105 391 97 391 99 386 Trgb
+0.065148 0.404652 0.093960 111 392 105 395 105 391 Trgb
+0.037225 0.231217 0.053688 97 391 105 391 105 395 Trgb
+0.009849 0.061174 0.014205 97 391 97 381 99 386 Trgb
+0.052749 0.327638 0.076077 104 381 105 391 99 386 Trgb
+0.083603 0.519279 0.120576 113 385 111 392 105 391 Trgb
+0.071872 0.446414 0.103657 105 391 104 381 113 385 Trgb
+0.058213 0.361574 0.083957 110 379 113 385 104 381 Trgb
+0.026041 0.161745 0.037557 97 381 104 381 99 386 Trgb
+0.000000 0.000000 0.000000 100 378 105 376 97 381 Trgb
+0.016192 0.100570 0.023352 104 381 97 381 105 376 Trgb
+0.029241 0.181624 0.042173 105 376 110 379 104 381 Trgb
+0.069674 0.432765 0.100488 111 392 113 385 113 389 Trgb
+0.044015 0.273387 0.063480 113 380 113 389 113 385 Trgb
+0.044284 0.275061 0.063869 113 385 110 379 113 380 Trgb
+0.015313 0.095110 0.022085 110 379 105 376 113 380 Trgb
+0.000000 0.698498 0.209550 130 380 132 380 131 381 Trgb
+0.000000 0.698498 0.209550 132 380 133 381 131 381 Trgb
+0.000000 0.698498 0.209550 133 381 132 383 131 381 Trgb
+0.000000 0.698498 0.209550 132 383 130 383 131 381 Trgb
+0.000000 0.698498 0.209550 130 383 129 381 131 381 Trgb
+0.000000 0.698498 0.209550 129 381 130 380 131 381 Trgb
+0.000000 0.000000 0.000000 129 381 111 401 111 400 Trgb
+0.000000 0.000000 0.000000 129 381 111 400 130 380 Trgb
+0.000000 0.023294 0.006988 130 383 112 403 111 401 Trgb
+0.000000 0.011647 0.003494 130 383 111 401 129 381 Trgb
+0.000000 0.040413 0.012124 132 383 113 403 112 403 Trgb
+0.000000 0.037677 0.011303 132 383 112 403 130 383 Trgb
+0.019290 0.043219 0.012502 102 398 104 406 103 408 Trgb
+0.112959 0.253086 0.073209 111 411 119 410 113 412 Trgb
+0.059036 0.132271 0.038261 113 412 103 408 111 411 Trgb
+0.071059 0.159208 0.046053 104 406 111 411 103 408 Trgb
+0.088148 0.197496 0.057129 110 400 111 391 118 396 Trgb
+0.000000 0.000000 0.000000 102 398 106 393 111 391 Trgb
+0.044502 0.099707 0.028842 111 391 110 400 102 398 Trgb
+0.063792 0.142926 0.041344 104 406 102 398 110 400 Trgb
+0.157140 0.352073 0.101843 121 404 110 400 118 396 Trgb
+0.174684 0.391380 0.113213 119 410 111 411 121 404 Trgb
+0.165263 0.370273 0.107107 110 400 121 404 111 411 Trgb
+0.115561 0.258915 0.074895 111 411 104 406 110 400 Trgb
+0.060868 0.136376 0.039449 111 391 121 395 118 396 Trgb
+0.129860 0.290952 0.084162 121 395 121 404 118 396 Trgb
+0.147404 0.330260 0.095533 122 405 119 410 121 404 Trgb
+0.110704 0.248032 0.071747 121 404 121 395 122 405 Trgb
+0.000000 0.699554 0.209866 131 380 131 379 131 381 Trgb
+0.000000 0.699554 0.209866 131 379 132 380 131 381 Trgb
+0.000000 0.699554 0.209866 132 380 132 382 131 381 Trgb
+0.000000 0.699554 0.209866 132 382 131 383 131 381 Trgb
+0.000000 0.699554 0.209866 131 383 130 382 131 381 Trgb
+0.000000 0.699554 0.209866 130 382 131 380 131 381 Trgb
+0.000000 0.019279 0.005784 130 382 92 378 93 376 Trgb
+0.000000 0.013935 0.004181 130 382 93 376 131 380 Trgb
+0.000000 0.018894 0.005668 131 383 93 380 92 378 Trgb
+0.000000 0.021758 0.006527 131 383 92 378 130 382 Trgb
+0.000000 0.005728 0.001718 131 380 93 376 94 376 Trgb
+0.000000 0.002864 0.000859 131 380 94 376 131 379 Trgb
+0.000000 0.000000 0.000000 83 371 82 384 82 377 Trgb
+0.062639 0.107049 0.033938 90 370 88 379 83 371 Trgb
+0.045424 0.077629 0.024611 82 384 83 371 88 379 Trgb
+0.092448 0.157993 0.050088 88 379 89 387 82 384 Trgb
+0.068102 0.116386 0.036898 89 387 93 390 82 384 Trgb
+0.017215 0.029420 0.009327 94 365 90 370 83 371 Trgb
+0.214613 0.366772 0.116277 98 385 99 373 105 379 Trgb
+0.124366 0.212540 0.067381 88 379 90 370 99 373 Trgb
+0.189956 0.324634 0.102918 99 373 98 385 88 379 Trgb
+0.175253 0.299506 0.094952 89 387 88 379 98 385 Trgb
+0.190267 0.325166 0.103087 104 384 98 385 105 379 Trgb
+0.141265 0.241421 0.076537 98 385 104 384 93 390 Trgb
+0.150908 0.257900 0.081762 93 390 89 387 98 385 Trgb
+0.148111 0.253120 0.080246 99 373 104 372 105 379 Trgb
+0.078942 0.134911 0.042771 90 370 94 365 99 373 Trgb
+0.078030 0.133353 0.042277 104 372 99 373 94 365 Trgb
+0.000000 0.651830 0.195549 178 348 180 348 178 349 Trgb
+0.000000 0.651830 0.195549 180 348 180 350 178 349 Trgb
+0.000000 0.651830 0.195549 180 350 178 351 178 349 Trgb
+0.000000 0.651830 0.195549 178 351 175 350 178 349 Trgb
+0.000000 0.651830 0.195549 175 350 175 349 178 349 Trgb
+0.000000 0.651830 0.195549 175 349 178 348 178 349 Trgb
+0.000000 0.136743 0.041023 178 351 181 395 179 394 Trgb
+0.000000 0.068371 0.020511 178 351 179 394 175 350 Trgb
+0.000000 0.224390 0.067317 180 350 184 394 181 395 Trgb
+0.000000 0.214752 0.064426 180 350 181 395 178 351 Trgb
+0.000000 0.097284 0.029185 180 348 184 392 184 394 Trgb
+0.000000 0.165656 0.049697 180 348 184 394 180 350 Trgb
+0.000000 0.000000 0.000000 181 392 182 391 181 393 Trgb
+0.000000 0.000000 0.000000 182 391 183 393 181 393 Trgb
+0.000000 0.000000 0.000000 183 393 182 394 181 393 Trgb
+0.000000 0.000000 0.000000 182 394 181 395 181 393 Trgb
+0.000000 0.000000 0.000000 181 395 180 394 181 393 Trgb
+0.000000 0.000000 0.000000 180 394 181 392 181 393 Trgb
+0.000000 0.098567 0.029570 182 394 210 409 209 410 Trgb
+0.000000 0.058014 0.017404 182 394 209 410 181 395 Trgb
+0.000000 0.127481 0.038244 183 393 211 408 210 409 Trgb
+0.000000 0.133301 0.039990 183 393 210 409 182 394 Trgb
+0.000000 0.040554 0.012166 182 391 211 407 211 408 Trgb
+0.000000 0.081108 0.024332 182 391 211 408 183 393 Trgb
+0.449781 0.027005 0.095357 204 426 214 420 223 422 Trgb
+0.000000 0.000000 0.000000 191 412 197 394 196 401 Trgb
+0.570312 0.034242 0.120911 214 420 222 408 223 422 Trgb
+0.467717 0.028082 0.099160 228 405 223 422 222 408 Trgb
+0.379352 0.022777 0.080426 222 408 222 395 228 405 Trgb
+0.105134 0.006312 0.022289 203 412 191 412 196 401 Trgb
+0.381323 0.022895 0.080844 214 420 204 426 203 412 Trgb
+0.184233 0.011062 0.039059 191 412 203 412 204 426 Trgb
+0.079098 0.004749 0.016769 204 426 198 421 191 412 Trgb
+0.026036 0.001563 0.005520 197 394 209 394 196 401 Trgb
+0.026036 0.001563 0.005520 209 394 197 394 216 391 Trgb
+0.111265 0.006680 0.023589 216 391 222 395 209 394 Trgb
+0.131171 0.007876 0.027809 209 394 203 412 196 401 Trgb
+0.501854 0.030132 0.106397 222 408 214 420 203 412 Trgb
+0.330800 0.019862 0.070132 203 412 209 394 222 408 Trgb
+0.310894 0.018666 0.065912 222 395 222 408 209 394 Trgb
+0.000000 0.699809 0.209943 180 394 180 392 181 393 Trgb
+0.000000 0.699809 0.209943 180 392 182 391 181 393 Trgb
+0.000000 0.699809 0.209943 182 391 183 392 181 393 Trgb
+0.000000 0.699809 0.209943 183 392 183 394 181 393 Trgb
+0.000000 0.699809 0.209943 183 394 181 395 181 393 Trgb
+0.000000 0.699809 0.209943 181 395 180 394 181 393 Trgb
+0.000000 0.006766 0.002030 181 395 168 392 166 391 Trgb
+0.000000 0.003383 0.001015 181 395 166 391 180 394 Trgb
+0.000000 0.000000 0.000000 180 392 167 389 168 388 Trgb
+0.000000 0.000000 0.000000 180 392 168 388 182 391 Trgb
+0.000000 0.000000 0.000000 180 394 166 391 167 389 Trgb
+0.000000 0.000000 0.000000 180 394 167 389 180 392 Trgb
+0.168457 0.380906 0.109873 173 398 164 393 172 391 Trgb
+0.049902 0.112835 0.032547 164 400 159 394 164 393 Trgb
+0.115650 0.261502 0.075430 164 393 173 398 164 400 Trgb
+0.105923 0.239508 0.069086 171 400 164 400 173 398 Trgb
+0.184304 0.416738 0.120208 177 388 173 398 172 391 Trgb
+0.147343 0.333164 0.096101 173 398 177 388 177 395 Trgb
+0.121770 0.275339 0.079422 177 395 171 400 173 398 Trgb
+0.128611 0.290809 0.083884 164 393 169 384 172 391 Trgb
+0.037902 0.085702 0.024721 159 394 159 386 164 393 Trgb
+0.063804 0.144271 0.041615 169 384 164 393 159 386 Trgb
+0.025902 0.058569 0.016894 159 386 165 380 169 384 Trgb
+0.144458 0.326640 0.094220 169 384 177 388 172 391 Trgb
+0.064954 0.146870 0.042365 173 381 177 387 177 388 Trgb
+0.079651 0.180103 0.051951 177 388 169 384 173 381 Trgb
+0.025902 0.058569 0.016894 165 380 173 381 169 384 Trgb
+0.000000 0.694743 0.208423 182 394 181 393 181 393 Trgb
+0.000000 0.694743 0.208423 181 393 180 392 181 393 Trgb
+0.000000 0.694743 0.208423 180 392 181 392 181 393 Trgb
+0.000000 0.694743 0.208423 181 392 182 393 181 393 Trgb
+0.000000 0.694743 0.208423 182 393 183 394 181 393 Trgb
+0.000000 0.694743 0.208423 183 394 182 394 181 393 Trgb
+0.000000 0.065286 0.019586 183 394 157 420 156 420 Trgb
+0.000000 0.074712 0.022413 183 394 156 420 182 394 Trgb
+0.000000 0.018852 0.005655 181 393 154 418 154 417 Trgb
+0.000000 0.009426 0.002828 181 393 154 417 180 392 Trgb
+0.000000 0.065517 0.019655 182 394 156 420 154 418 Trgb
+0.000000 0.046897 0.014069 182 394 154 418 181 393 Trgb
+0.365097 0.114210 0.095861 159 429 167 431 150 434 Trgb
+0.067185 0.021017 0.017640 139 421 150 434 144 430 Trgb
+0.321781 0.100660 0.084488 149 421 159 429 150 434 Trgb
+0.159955 0.050037 0.041999 150 434 139 421 149 421 Trgb
+0.092770 0.029020 0.024358 143 411 149 421 139 421 Trgb
+0.297384 0.093028 0.078082 172 416 166 418 167 407 Trgb
+0.459583 0.143767 0.120670 167 431 159 429 166 418 Trgb
+0.366658 0.114698 0.096271 166 418 172 416 167 431 Trgb
+0.000000 0.000000 0.000000 144 406 143 411 139 421 Trgb
+0.254068 0.079478 0.066709 166 418 155 406 167 407 Trgb
+0.416267 0.130217 0.109297 159 429 149 421 166 418 Trgb
+0.280026 0.087598 0.073525 155 406 166 418 149 421 Trgb
+0.118355 0.037024 0.031076 149 421 143 411 155 406 Trgb
+0.092397 0.028904 0.024260 155 406 161 403 167 407 Trgb
+0.025585 0.008004 0.006718 161 403 155 406 144 406 Trgb
+0.025585 0.008004 0.006718 143 411 144 406 155 406 Trgb
+0.000000 0.699458 0.209837 243 351 238 351 240 348 Trgb
+0.000000 0.699458 0.209837 238 351 236 348 240 348 Trgb
+0.000000 0.699458 0.209837 236 348 238 345 240 348 Trgb
+0.000000 0.699458 0.209837 238 345 243 345 240 348 Trgb
+0.000000 0.699458 0.209837 243 345 245 348 240 348 Trgb
+0.000000 0.699458 0.209837 245 348 243 351 240 348 Trgb
+0.000000 0.000000 0.000000 238 302 238 345 236 348 Trgb
+0.000000 0.000000 0.000000 238 302 236 348 236 305 Trgb
+0.000000 0.010118 0.003035 242 302 243 345 238 345 Trgb
+0.000000 0.005059 0.001518 242 302 238 345 238 302 Trgb
+0.000000 0.023392 0.007018 244 305 245 348 243 345 Trgb
+0.000000 0.019284 0.005785 244 305 243 345 242 302 Trgb
+0.000000 0.699769 0.209931 279 344 276 345 277 342 Trgb
+0.000000 0.699769 0.209931 276 345 274 343 277 342 Trgb
+0.000000 0.699769 0.209931 274 343 274 340 277 342 Trgb
+0.000000 0.699769 0.209931 274 340 277 338 277 342 Trgb
+0.000000 0.699769 0.209931 277 338 279 340 277 342 Trgb
+0.000000 0.699769 0.209931 279 340 279 344 277 342 Trgb
+0.000000 0.006306 0.001892 238 349 274 343 276 345 Trgb
+0.000000 0.011255 0.003376 238 349 276 345 240 351 Trgb
+0.000000 0.000452 0.000136 238 346 274 340 274 343 Trgb
+0.000000 0.000904 0.000271 238 346 274 343 238 349 Trgb
+0.000000 0.000000 0.000000 241 345 277 338 274 340 Trgb
+0.000000 0.000000 0.000000 241 345 274 340 238 346 Trgb
+0.000000 0.582895 0.174869 282 300 282 301 280 301 Trgb
+0.000000 0.582895 0.174869 282 301 280 302 280 301 Trgb
+0.000000 0.582895 0.174869 280 302 278 301 280 301 Trgb
+0.000000 0.582895 0.174869 278 301 278 300 280 301 Trgb
+0.000000 0.582895 0.174869 278 300 279 299 280 301 Trgb
+0.000000 0.582895 0.174869 279 299 282 300 280 301 Trgb
+0.000000 0.335109 0.100533 277 343 280 302 282 301 Trgb
+0.000000 0.336208 0.100862 277 343 282 301 279 342 Trgb
+0.000000 0.111337 0.033401 275 342 278 301 280 302 Trgb
+0.000000 0.222674 0.066802 275 342 280 302 277 343 Trgb
+0.000000 0.000000 0.000000 275 341 278 300 278 301 Trgb
+0.000000 0.000000 0.000000 275 341 278 301 275 342 Trgb
+0.156119 0.052040 0.041632 292 284 290 293 281 282 Trgb
+0.267437 0.089146 0.071317 290 293 292 284 300 303 Trgb
+0.431611 0.143870 0.115096 300 303 293 309 290 293 Trgb
+0.154020 0.051340 0.041072 290 293 269 291 281 282 Trgb
+0.130571 0.043524 0.034819 278 310 264 306 269 291 Trgb
+0.263240 0.087747 0.070197 269 291 290 293 278 310 Trgb
+0.429512 0.143171 0.114537 293 309 278 310 290 293 Trgb
+0.413054 0.137685 0.110148 293 309 300 303 288 319 Trgb
+0.021351 0.007117 0.005694 269 291 271 282 281 282 Trgb
+0.008229 0.002743 0.002194 264 306 259 298 269 291 Trgb
+0.008229 0.002743 0.002194 271 282 269 291 259 298 Trgb
+0.114112 0.038037 0.030430 267 317 288 319 278 319 Trgb
+0.122342 0.040781 0.032624 264 306 278 310 267 317 Trgb
+0.236454 0.078818 0.063054 288 319 267 317 278 310 Trgb
+0.410955 0.136985 0.109588 278 310 293 309 288 319 Trgb
+0.000000 0.000000 0.000000 259 298 264 306 267 317 Trgb
+0.000000 0.699650 0.209895 320 357 320 355 320 355 Trgb
+0.000000 0.699650 0.209895 320 355 321 353 320 355 Trgb
+0.000000 0.699650 0.209895 321 353 321 353 320 355 Trgb
+0.000000 0.699650 0.209895 321 353 321 355 320 355 Trgb
+0.000000 0.699650 0.209895 321 355 320 357 320 355 Trgb
+0.000000 0.699650 0.209895 320 357 320 357 320 355 Trgb
+0.000000 0.019057 0.005717 276 342 320 355 320 357 Trgb
+0.000000 0.016121 0.004836 276 342 320 357 276 344 Trgb
+0.000000 0.013204 0.003961 277 340 321 353 320 355 Trgb
+0.000000 0.017599 0.005280 277 340 320 355 276 342 Trgb
+0.000000 0.002937 0.000881 277 340 321 353 321 353 Trgb
+0.000000 0.005873 0.001762 277 340 321 353 277 340 Trgb
+0.051513 0.547915 0.119886 325 363 327 354 330 358 Trgb
+0.033489 0.356204 0.077939 317 363 318 358 325 363 Trgb
+0.045176 0.480506 0.105136 327 354 325 363 318 358 Trgb
+0.037293 0.396663 0.086791 318 358 320 351 327 354 Trgb
+0.042482 0.451858 0.098868 327 354 329 351 330 358 Trgb
+0.009041 0.096168 0.021042 322 346 324 347 329 351 Trgb
+0.027114 0.288393 0.063101 329 351 327 354 322 346 Trgb
+0.028262 0.300606 0.065774 320 351 322 346 327 354 Trgb
+0.022883 0.243388 0.053254 319 364 317 363 325 363 Trgb
+0.000000 0.000000 0.000000 314 350 312 359 311 352 Trgb
+0.016992 0.180738 0.039546 318 358 317 363 312 359 Trgb
+0.010607 0.112815 0.024684 312 359 314 350 318 358 Trgb
+0.019221 0.204438 0.044732 320 351 318 358 314 350 Trgb
+0.000000 0.000000 0.000000 316 347 314 350 311 352 Trgb
+0.001576 0.016759 0.003667 314 350 316 347 322 346 Trgb
+0.010190 0.108381 0.023714 322 346 320 351 314 350 Trgb
+0.000000 0.698163 0.209449 265 347 268 347 266 349 Trgb
+0.000000 0.698163 0.209449 268 347 268 350 266 349 Trgb
+0.000000 0.698163 0.209449 268 350 267 351 266 349 Trgb
+0.000000 0.698163 0.209449 267 351 265 351 266 349 Trgb
+0.000000 0.698163 0.209449 265 351 264 348 266 349 Trgb
+0.000000 0.698163 0.209449 264 348 265 347 266 349 Trgb
+0.000000 0.014969 0.004491 278 340 268 347 265 347 Trgb
+0.000000 0.007485 0.002245 278 340 265 347 276 339 Trgb
+0.000000 0.041203 0.012361 279 342 268 350 268 347 Trgb
+0.000000 0.031829 0.009549 279 342 268 347 278 340 Trgb
+0.000000 0.035609 0.010683 277 344 267 351 268 350 Trgb
+0.000000 0.043093 0.012928 277 344 268 350 279 342 Trgb
+0.005581 0.351590 0.071434 263 344 271 348 264 350 Trgb
+0.000872 0.054960 0.011166 264 340 270 341 263 344 Trgb
+0.004101 0.258361 0.052492 271 348 263 344 270 341 Trgb
+0.006315 0.397826 0.080828 270 341 274 347 271 348 Trgb
+0.007937 0.500031 0.101594 271 348 267 356 264 350 Trgb
+0.007251 0.456807 0.092812 274 353 269 357 267 356 Trgb
+0.008813 0.555244 0.112812 267 356 271 348 274 353 Trgb
+0.008671 0.546267 0.110988 274 347 274 353 271 348 Trgb
+0.002352 0.148188 0.030108 259 351 263 344 264 350 Trgb
+0.000284 0.017904 0.003638 259 345 264 340 263 344 Trgb
+0.000284 0.017904 0.003638 263 344 259 351 259 345 Trgb
+0.000000 0.000000 0.000000 258 351 259 345 259 351 Trgb
+0.004708 0.296630 0.060268 267 356 259 351 264 350 Trgb
+0.004307 0.271310 0.055123 269 357 262 356 267 356 Trgb
+0.002640 0.166346 0.033797 259 351 267 356 262 356 Trgb
+0.000000 0.000000 0.000000 262 356 258 351 259 351 Trgb
+0.000000 0.699555 0.209867 274 400 274 399 276 398 Trgb
+0.000000 0.699555 0.209867 274 399 276 397 276 398 Trgb
+0.000000 0.699555 0.209867 276 397 279 396 276 398 Trgb
+0.000000 0.699555 0.209867 279 396 279 397 276 398 Trgb
+0.000000 0.699555 0.209867 279 397 276 399 276 398 Trgb
+0.000000 0.699555 0.209867 276 399 274 400 276 398 Trgb
+0.000000 0.001828 0.000548 238 349 274 399 274 400 Trgb
+0.000000 0.000914 0.000274 238 349 274 400 238 350 Trgb
+0.000000 0.016145 0.004843 240 347 276 397 274 399 Trgb
+0.000000 0.009443 0.002833 240 347 274 399 238 349 Trgb
+0.000000 0.021019 0.006306 243 346 279 396 276 397 Trgb
+0.000000 0.021933 0.006580 243 346 276 397 240 347 Trgb
+0.000000 0.000000 0.000000 275 399 275 398 276 398 Trgb
+0.000000 0.000000 0.000000 275 398 277 396 276 398 Trgb
+0.000000 0.000000 0.000000 277 396 278 397 276 398 Trgb
+0.000000 0.000000 0.000000 278 397 278 398 276 398 Trgb
+0.000000 0.000000 0.000000 278 398 276 400 276 398 Trgb
+0.000000 0.000000 0.000000 276 400 275 399 276 398 Trgb
+0.000000 0.040083 0.012025 276 400 304 426 303 425 Trgb
+0.000000 0.020042 0.006012 276 400 303 425 275 399 Trgb
+0.000000 0.090960 0.027288 278 398 305 424 304 426 Trgb
+0.000000 0.075542 0.022663 278 398 304 426 276 400 Trgb
+0.000000 0.066294 0.019888 278 397 306 422 305 424 Trgb
+0.000000 0.086336 0.025901 278 397 305 424 278 398 Trgb
+0.082512 0.183187 0.053140 311 434 303 434 299 434 Trgb
+0.144624 0.321084 0.093142 299 434 307 431 311 434 Trgb
+0.131873 0.292775 0.084930 313 423 314 416 316 424 Trgb
+0.161712 0.359021 0.104147 316 424 311 434 313 423 Trgb
+0.186888 0.414915 0.120361 307 431 313 423 311 434 Trgb
+0.028116 0.062421 0.018107 300 424 292 424 296 417 Trgb
+0.022788 0.050592 0.014676 299 434 295 431 292 424 Trgb
+0.050904 0.113013 0.032783 292 424 300 424 299 434 Trgb
+0.113016 0.250910 0.072785 307 431 299 434 300 424 Trgb
+0.033444 0.074249 0.021539 305 413 300 424 296 417 Trgb
+0.100265 0.222601 0.064573 314 416 313 423 305 413 Trgb
+0.098496 0.218673 0.063434 300 424 305 413 313 423 Trgb
+0.155280 0.344741 0.100004 313 423 307 431 300 424 Trgb
+0.000000 0.000000 0.000000 292 424 297 414 296 417 Trgb
+0.005328 0.011829 0.003431 297 414 305 413 296 417 Trgb
+0.035213 0.078177 0.022678 309 414 314 416 305 413 Trgb
+0.000000 0.000000 0.000000 276 398 274 397 276 398 Trgb
+0.000000 0.000000 0.000000 274 397 275 397 276 398 Trgb
+0.000000 0.000000 0.000000 275 397 277 398 276 398 Trgb
+0.000000 0.000000 0.000000 277 398 278 399 276 398 Trgb
+0.000000 0.000000 0.000000 278 399 278 399 276 398 Trgb
+0.000000 0.000000 0.000000 278 399 276 398 276 398 Trgb
+0.000000 0.456347 0.136904 278 399 262 440 260 440 Trgb
+0.000000 0.340193 0.102058 278 399 260 440 276 398 Trgb
+0.000000 0.423140 0.126942 278 399 263 440 262 440 Trgb
+0.000000 0.497820 0.149346 278 399 262 440 278 399 Trgb
+0.000000 0.149360 0.044808 276 398 260 440 259 439 Trgb
+0.000000 0.074680 0.022404 276 398 259 439 274 397 Trgb
+0.212339 0.022980 0.047064 249 455 269 460 253 460 Trgb
+0.339481 0.036740 0.075244 252 441 268 447 249 455 Trgb
+0.400003 0.043290 0.088659 269 460 249 455 268 447 Trgb
+0.531030 0.057471 0.117700 268 447 280 448 269 460 Trgb
+0.070112 0.007588 0.015540 242 448 249 455 253 460 Trgb
+0.144590 0.015648 0.032048 241 434 252 441 249 455 Trgb
+0.062885 0.006806 0.013938 249 455 242 448 241 434 Trgb
+0.184671 0.019986 0.040931 280 431 260 426 268 419 Trgb
+0.329260 0.035634 0.072979 268 447 252 441 260 426 Trgb
+0.379562 0.041078 0.084128 260 426 280 431 268 447 Trgb
+0.520810 0.056365 0.115435 280 448 268 447 280 431 Trgb
+0.052664 0.005700 0.011673 260 426 253 419 268 419 Trgb
+0.134369 0.014542 0.029782 252 441 241 434 260 426 Trgb
+0.052664 0.005700 0.011673 253 419 260 426 241 434 Trgb
+0.000000 0.000000 0.000000 241 434 242 431 253 419 Trgb
+0.000000 0.699838 0.209951 305 398 304 400 303 399 Trgb
+0.000000 0.699838 0.209951 304 400 303 401 303 399 Trgb
+0.000000 0.699838 0.209951 303 401 301 400 303 399 Trgb
+0.000000 0.699838 0.209951 301 400 301 398 303 399 Trgb
+0.000000 0.699838 0.209951 301 398 303 397 303 399 Trgb
+0.000000 0.699838 0.209951 303 397 305 398 303 399 Trgb
+0.000000 0.004567 0.001370 275 399 301 400 303 401 Trgb
+0.000000 0.008870 0.002661 275 399 303 401 276 400 Trgb
+0.000000 0.000088 0.000026 275 397 301 398 301 400 Trgb
+0.000000 0.000176 0.000053 275 397 301 400 275 399 Trgb
+0.000000 0.000000 0.000000 277 396 303 397 301 398 Trgb
+0.000000 0.000000 0.000000 277 396 301 398 275 397 Trgb
+0.222606 0.358895 0.116300 316 395 312 409 312 399 Trgb
+0.223481 0.360306 0.116757 312 409 301 403 312 399 Trgb
+0.084475 0.136195 0.044134 299 413 292 405 301 403 Trgb
+0.166838 0.268984 0.087164 301 403 312 409 299 413 Trgb
+0.143692 0.231666 0.075072 307 412 299 413 312 409 Trgb
+0.172674 0.278393 0.090214 306 390 316 395 312 399 Trgb
+0.090628 0.146114 0.047348 316 395 306 390 307 386 Trgb
+0.033050 0.053284 0.017267 298 386 307 386 306 390 Trgb
+0.173550 0.279804 0.090671 301 403 306 390 312 399 Trgb
+0.059072 0.095239 0.030862 292 405 292 394 301 403 Trgb
+0.091503 0.147525 0.047806 306 390 301 403 292 394 Trgb
+0.033050 0.053284 0.017267 292 394 298 386 306 390 Trgb
+0.026022 0.041954 0.013595 292 405 299 413 289 403 Trgb
+0.000619 0.000998 0.000323 292 394 292 405 289 403 Trgb
+0.000000 0.000000 0.000000 298 386 292 394 294 389 Trgb
+0.000000 0.683893 0.205168 199 372 201 375 199 375 Trgb
+0.000000 0.683893 0.205168 201 375 201 378 199 375 Trgb
+0.000000 0.683893 0.205168 201 378 199 378 199 375 Trgb
+0.000000 0.683893 0.205168 199 378 197 376 199 375 Trgb
+0.000000 0.683893 0.205168 197 376 197 373 199 375 Trgb
+0.000000 0.683893 0.205168 197 373 199 372 199 375 Trgb
+0.000000 0.091401 0.027420 243 347 201 375 199 372 Trgb
+0.000000 0.049695 0.014909 243 347 199 372 240 345 Trgb
+0.000000 0.127779 0.038334 243 350 201 378 201 375 Trgb
+0.000000 0.130442 0.039133 243 350 201 375 243 347 Trgb
+0.000000 0.005327 0.001598 240 345 199 372 197 373 Trgb
+0.000000 0.002663 0.000799 240 345 197 373 238 346 Trgb
+0.144027 0.150940 0.058993 191 371 200 384 189 382 Trgb
+0.110751 0.116067 0.045364 199 362 207 369 191 371 Trgb
+0.201210 0.210868 0.082416 200 384 191 371 207 369 Trgb
+0.289919 0.303835 0.118751 207 369 211 381 200 384 Trgb
+0.135622 0.142131 0.055551 200 384 192 390 189 382 Trgb
+0.184399 0.193250 0.075530 192 390 200 384 208 388 Trgb
+0.281513 0.295026 0.115308 211 381 208 388 200 384 Trgb
+0.047625 0.049911 0.019507 183 377 191 371 189 382 Trgb
+0.028132 0.029483 0.011523 190 362 199 362 191 371 Trgb
+0.022189 0.023254 0.009088 191 371 183 377 190 362 Trgb
+0.088563 0.092814 0.036275 207 369 199 362 206 361 Trgb
+0.143049 0.149916 0.058593 206 361 215 374 207 369 Trgb
+0.253947 0.266136 0.104017 211 381 207 369 215 374 Trgb
+0.039219 0.041102 0.016064 192 390 183 377 189 382 Trgb
+0.245542 0.257328 0.100574 208 388 211 381 215 374 Trgb
+0.005944 0.006229 0.002434 199 362 190 362 206 361 Trgb
+0.000000 0.663069 0.198921 237 303 239 304 240 305 Trgb
+0.000000 0.663069 0.198921 239 304 243 306 240 305 Trgb
+0.000000 0.663069 0.198921 243 306 243 307 240 305 Trgb
+0.000000 0.663069 0.198921 243 307 241 306 240 305 Trgb
+0.000000 0.663069 0.198921 241 306 237 304 240 305 Trgb
+0.000000 0.663069 0.198921 237 304 237 303 240 305 Trgb
+0.000000 0.004603 0.001381 237 304 193 373 193 372 Trgb
+0.000000 0.002302 0.000690 237 304 193 372 237 303 Trgb
+0.000000 0.134078 0.040224 241 306 197 375 193 373 Trgb
+0.000000 0.070492 0.021148 241 306 193 373 237 304 Trgb
+0.000000 0.193062 0.057919 243 307 199 376 197 375 Trgb
+0.000000 0.195363 0.058609 243 307 197 375 241 306 Trgb
+0.000000 0.000000 0.000000 195 373 198 373 196 374 Trgb
+0.000000 0.000000 0.000000 198 373 199 374 196 374 Trgb
+0.000000 0.000000 0.000000 199 374 197 375 196 374 Trgb
+0.000000 0.000000 0.000000 197 375 194 376 196 374 Trgb
+0.000000 0.000000 0.000000 194 376 193 374 196 374 Trgb
+0.000000 0.000000 0.000000 193 374 195 373 196 374 Trgb
+0.000000 0.116215 0.034865 194 376 202 423 201 422 Trgb
+0.000000 0.058108 0.017432 194 376 201 422 193 374 Trgb
+0.000000 0.468066 0.140420 197 375 204 423 202 423 Trgb
+0.000000 0.321194 0.096358 197 375 202 423 194 376 Trgb
+0.000000 0.498723 0.149617 199 374 206 422 204 423 Trgb
+0.000000 0.556831 0.167049 199 374 204 423 197 375 Trgb
+0.000000 0.011484 0.003445 202 423 231 450 230 451 Trgb
+0.000000 0.005742 0.001723 202 423 230 451 202 423 Trgb
+0.000000 0.027990 0.008397 204 422 232 449 231 450 Trgb
+0.000000 0.022608 0.006782 204 422 231 450 202 423 Trgb
+0.000000 0.021887 0.006566 205 420 233 448 232 449 Trgb
+0.000000 0.027629 0.008289 205 420 232 449 204 422 Trgb
+0.140855 0.120441 0.052259 222 460 224 457 234 462 Trgb
+0.240544 0.205683 0.089245 244 451 244 451 242 459 Trgb
+0.170476 0.145769 0.063249 244 451 244 451 242 439 Trgb
+0.212239 0.181480 0.078744 238 442 242 439 244 451 Trgb
+0.303940 0.259891 0.112766 234 462 244 451 242 459 Trgb
+0.225159 0.192527 0.083537 224 457 231 450 234 462 Trgb
+0.297267 0.254185 0.110290 244 451 234 462 231 450 Trgb
+0.275635 0.235688 0.102265 231 450 238 442 244 451 Trgb
+0.044827 0.038331 0.016632 224 457 222 460 219 448 Trgb
+0.000000 0.000000 0.000000 230 437 229 437 221 439 Trgb
+0.020908 0.017878 0.007757 229 437 230 437 242 439 Trgb
+0.095304 0.081492 0.035359 242 439 238 442 229 437 Trgb
+0.000000 0.000000 0.000000 229 437 219 448 221 439 Trgb
+0.129131 0.110416 0.047909 231 450 224 457 219 448 Trgb
+0.084303 0.072086 0.031278 219 448 229 437 231 450 Trgb
+0.158699 0.135699 0.058880 238 442 231 450 229 437 Trgb
+0.000000 0.697205 0.209161 203 423 202 421 203 422 Trgb
+0.000000 0.697205 0.209161 202 421 202 420 203 422 Trgb
+0.000000 0.697205 0.209161 202 420 203 421 203 422 Trgb
+0.000000 0.697205 0.209161 203 421 205 422 203 422 Trgb
+0.000000 0.697205 0.209161 205 422 205 423 203 422 Trgb
+0.000000 0.697205 0.209161 205 423 203 423 203 422 Trgb
+0.000000 0.053582 0.016075 205 423 177 446 175 445 Trgb
+0.000000 0.054544 0.016363 205 423 175 445 203 423 Trgb
+0.000000 0.001924 0.000577 202 421 174 444 174 443 Trgb
+0.000000 0.000962 0.000289 202 421 174 443 202 420 Trgb
+0.000000 0.037965 0.011390 203 423 175 445 174 444 Trgb
+0.000000 0.020425 0.006128 203 423 174 444 202 421 Trgb
+0.316256 0.106519 0.084555 174 454 183 458 166 458 Trgb
+0.035608 0.011993 0.009520 158 444 166 458 164 454 Trgb
+0.217204 0.073158 0.058072 166 444 174 454 166 458 Trgb
+0.081816 0.027557 0.021875 166 458 158 444 166 444 Trgb
+0.046208 0.015564 0.012354 163 434 166 444 158 444 Trgb
+0.350542 0.118068 0.093722 193 445 183 444 188 434 Trgb
+0.436507 0.147022 0.116706 183 458 174 454 183 444 Trgb
+0.410770 0.138353 0.109825 183 444 193 445 183 458 Trgb
+0.324951 0.109448 0.086880 188 454 183 458 193 445 Trgb
+0.251490 0.084706 0.067239 183 444 175 430 188 434 Trgb
+0.337456 0.113660 0.090223 174 454 166 444 183 444 Trgb
+0.212668 0.071630 0.056859 175 430 183 444 166 444 Trgb
+0.056808 0.019134 0.015188 166 444 163 434 175 430 Trgb
+0.095631 0.032210 0.025568 175 430 185 430 188 434 Trgb
+0.010600 0.003570 0.002834 163 434 168 430 175 430 Trgb
+0.000000 0.699705 0.209912 228 451 227 452 227 452 Trgb
+0.000000 0.699705 0.209912 227 452 226 453 227 452 Trgb
+0.000000 0.699705 0.209912 226 453 225 453 227 452 Trgb
+0.000000 0.699705 0.209912 225 453 226 451 227 452 Trgb
+0.000000 0.699705 0.209912 226 451 228 450 227 452 Trgb
+0.000000 0.699705 0.209912 228 450 228 451 227 452 Trgb
+0.000000 0.012277 0.003683 203 421 226 451 225 453 Trgb
+0.000000 0.006561 0.001968 203 421 225 453 202 423 Trgb
+0.000000 0.017430 0.005229 204 421 228 450 226 451 Trgb
+0.000000 0.017712 0.005313 204 421 226 451 203 421 Trgb
+0.000000 0.005716 0.001715 205 421 228 451 228 450 Trgb
+0.000000 0.011432 0.003430 205 421 228 450 204 421 Trgb
+0.039036 0.368851 0.081578 229 459 226 459 232 458 Trgb
+0.014453 0.136564 0.030203 221 457 220 456 226 459 Trgb
+0.054216 0.512286 0.113300 232 453 235 454 232 458 Trgb
+0.042493 0.401514 0.088801 235 454 232 453 233 446 Trgb
+0.040366 0.381422 0.084358 229 448 233 446 232 453 Trgb
+0.054876 0.518519 0.114679 226 459 232 453 232 458 Trgb
+0.022702 0.214515 0.047443 220 456 223 452 226 459 Trgb
+0.043812 0.413980 0.091559 232 453 226 459 223 452 Trgb
+0.041026 0.387655 0.085736 223 452 229 448 232 453 Trgb
+0.007590 0.071717 0.015861 225 444 228 445 233 446 Trgb
+0.018790 0.177548 0.039268 233 446 229 448 225 444 Trgb
+0.000000 0.000000 0.000000 225 444 219 450 222 445 Trgb
+0.008716 0.082358 0.018215 223 452 220 456 219 450 Trgb
+0.008250 0.077951 0.017240 219 450 225 444 223 452 Trgb
+0.019450 0.183782 0.040646 229 448 223 452 225 444 Trgb
+0.000000 0.675852 0.202756 157 401 155 402 154 399 Trgb
+0.000000 0.675852 0.202756 155 402 153 400 154 399 Trgb
+0.000000 0.675852 0.202756 153 400 152 397 154 399 Trgb
+0.000000 0.675852 0.202756 152 397 154 396 154 399 Trgb
+0.000000 0.675852 0.202756 154 396 156 398 154 399 Trgb
+0.000000 0.675852 0.202756 156 398 157 401 154 399 Trgb
+0.000000 0.082884 0.024865 197 377 155 402 157 401 Trgb
+0.000000 0.128084 0.038425 197 377 157 401 198 376 Trgb
+0.000000 0.090401 0.027120 198 373 156 398 154 396 Trgb
+0.000000 0.045200 0.013560 198 373 154 396 195 371 Trgb
+0.000000 0.160724 0.048217 198 376 157 401 156 398 Trgb
+0.000000 0.148162 0.044449 198 376 156 398 198 373 Trgb
+0.000000 0.624566 0.187370 133 381 132 382 132 381 Trgb
+0.000000 0.624566 0.187370 132 382 130 382 132 381 Trgb
+0.000000 0.624566 0.187370 130 382 130 380 132 381 Trgb
+0.000000 0.624566 0.187370 130 380 132 379 132 381 Trgb
+0.000000 0.624566 0.187370 132 379 134 379 132 381 Trgb
+0.000000 0.624566 0.187370 134 379 133 381 132 381 Trgb
+0.000000 0.236481 0.070944 154 401 132 382 133 381 Trgb
+0.000000 0.274378 0.082313 154 401 133 381 156 400 Trgb
+0.000000 0.066195 0.019858 153 400 130 382 132 382 Trgb
+0.000000 0.132389 0.039717 153 400 132 382 154 401 Trgb
+0.000000 0.246080 0.073824 156 400 133 381 134 379 Trgb
+0.000000 0.179885 0.053966 156 400 134 379 156 398 Trgb
+0.190356 0.052692 0.048610 134 378 117 386 121 372 Trgb
+0.466388 0.129100 0.119098 146 386 134 397 134 378 Trgb
+0.319369 0.088404 0.081555 117 386 134 378 134 397 Trgb
+0.207824 0.057527 0.053070 134 397 122 397 117 386 Trgb
+0.050611 0.014010 0.012924 117 386 115 370 121 372 Trgb
+0.032644 0.009036 0.008336 115 370 117 386 115 388 Trgb
+0.060843 0.016842 0.015537 122 397 115 388 117 386 Trgb
+0.157712 0.043656 0.040274 132 362 134 378 121 372 Trgb
+0.426508 0.118061 0.108914 149 373 146 386 134 378 Trgb
+0.246846 0.068329 0.063035 134 378 132 362 149 373 Trgb
+0.107101 0.029646 0.027349 142 364 149 373 132 362 Trgb
+0.440979 0.122066 0.112609 134 397 146 386 149 391 Trgb
+0.268552 0.074337 0.068578 149 391 132 398 134 397 Trgb
+0.182415 0.050494 0.046582 122 397 134 397 132 398 Trgb
+0.017967 0.004973 0.004588 115 370 132 362 121 372 Trgb
+0.401099 0.111028 0.102425 146 386 149 373 149 391 Trgb
+0.000000 0.696208 0.208862 150 441 149 441 152 441 Trgb
+0.000000 0.696208 0.208862 149 441 151 441 152 441 Trgb
+0.000000 0.696208 0.208862 151 441 153 441 152 441 Trgb
+0.000000 0.696208 0.208862 153 441 154 441 152 441 Trgb
+0.000000 0.696208 0.208862 154 441 152 441 152 441 Trgb
+0.000000 0.696208 0.208862 152 441 150 441 152 441 Trgb
+0.000000 0.021860 0.006558 154 399 151 441 149 441 Trgb
+0.000000 0.010930 0.003279 154 399 149 441 152 399 Trgb
+0.000000 0.059363 0.017809 156 399 153 441 151 441 Trgb
+0.000000 0.046076 0.013823 156 399 151 441 154 399 Trgb
+0.000000 0.050790 0.015237 157 399 154 441 153 441 Trgb
+0.000000 0.061719 0.018516 157 399 153 441 156 399 Trgb
+0.039530 0.023325 0.012571 135 441 138 440 141 452 Trgb
+0.241096 0.142261 0.076671 141 452 158 453 150 458 Trgb
+0.358611 0.211603 0.114043 149 440 162 441 158 453 Trgb
+0.265973 0.156940 0.084583 158 453 141 452 149 440 Trgb
+0.127736 0.075372 0.040622 138 440 149 440 141 452 Trgb
+0.000000 0.000000 0.000000 138 440 135 441 143 428 Trgb
+0.251597 0.148458 0.080011 158 453 160 454 150 458 Trgb
+0.369112 0.217799 0.117382 162 441 168 442 158 453 Trgb
+0.286976 0.169334 0.091262 160 454 158 453 168 442 Trgb
+0.048676 0.028722 0.015480 160 429 143 428 153 424 Trgb
+0.269050 0.158756 0.085561 162 441 149 440 160 429 Trgb
+0.136882 0.080769 0.043530 143 428 160 429 149 440 Trgb
+0.088206 0.052047 0.028051 149 440 138 440 143 428 Trgb
+0.279552 0.164953 0.088901 168 442 162 441 160 429 Trgb
+0.147384 0.086966 0.046870 160 429 162 430 168 442 Trgb
+0.000000 0.698453 0.209536 154 397 154 397 154 399 Trgb
+0.000000 0.698453 0.209536 154 397 155 399 154 399 Trgb
+0.000000 0.698453 0.209536 155 399 155 401 154 399 Trgb
+0.000000 0.698453 0.209536 155 401 155 401 154 399 Trgb
+0.000000 0.698453 0.209536 155 401 154 399 154 399 Trgb
+0.000000 0.698453 0.209536 154 399 154 397 154 399 Trgb
+0.000000 0.024988 0.007496 154 399 112 404 112 402 Trgb
+0.000000 0.012494 0.003748 154 399 112 402 154 397 Trgb
+0.000000 0.040894 0.012268 155 401 112 406 112 404 Trgb
+0.000000 0.039188 0.011756 155 401 112 404 154 399 Trgb
+0.000000 0.017612 0.005284 155 401 113 406 112 406 Trgb
+0.000000 0.030106 0.009032 155 401 112 406 155 401 Trgb
+0.013474 0.018613 0.006417 101 396 102 410 99 405 Trgb
+0.048974 0.067653 0.023325 110 392 110 400 101 396 Trgb
+0.062448 0.086266 0.029743 102 410 101 396 110 400 Trgb
+0.140330 0.193851 0.066836 110 400 111 410 102 410 Trgb
+0.074641 0.103109 0.035550 104 413 102 410 113 417 Trgb
+0.152523 0.210694 0.072643 111 410 113 417 102 410 Trgb
+0.000000 0.000000 0.000000 112 391 110 392 101 396 Trgb
+0.190994 0.263838 0.090966 121 407 120 394 126 402 Trgb
+0.084474 0.116692 0.040233 110 400 110 392 120 394 Trgb
+0.181141 0.250228 0.086274 120 394 121 407 110 400 Trgb
+0.223523 0.308773 0.106459 111 410 110 400 121 407 Trgb
+0.203187 0.280681 0.096774 123 411 121 407 126 402 Trgb
+0.205527 0.283915 0.097888 121 407 123 411 113 417 Trgb
+0.235716 0.325617 0.112267 113 417 111 410 121 407 Trgb
+0.035500 0.049040 0.016908 110 392 112 391 120 394 Trgb
+0.000000 0.000000 0.000000 196 373 198 373 196 374 Trgb
+0.000000 0.000000 0.000000 198 373 199 374 196 374 Trgb
+0.000000 0.000000 0.000000 199 374 196 375 196 374 Trgb
+0.000000 0.000000 0.000000 196 375 194 375 196 374 Trgb
+0.000000 0.000000 0.000000 194 375 194 374 196 374 Trgb
+0.000000 0.000000 0.000000 194 374 196 373 196 374 Trgb
+0.000000 0.058250 0.017475 196 375 211 428 209 428 Trgb
+0.000000 0.029125 0.008737 196 375 209 428 194 375 Trgb
+0.000000 0.089543 0.026863 199 374 214 427 211 428 Trgb
+0.000000 0.088459 0.026538 199 374 211 428 196 375 Trgb
+0.000000 0.032377 0.009713 198 373 213 426 214 427 Trgb
+0.000000 0.061502 0.018451 198 373 214 427 199 374 Trgb
+0.000000 0.030777 0.009233 211 428 250 437 250 438 Trgb
+0.000000 0.024674 0.007402 211 428 250 438 211 429 Trgb
+0.000000 0.024499 0.007350 211 426 250 435 250 437 Trgb
+0.000000 0.030690 0.009207 211 426 250 437 211 428 Trgb
+0.000000 0.006103 0.001831 212 425 250 434 250 435 Trgb
+0.000000 0.012206 0.003662 212 425 250 435 211 426 Trgb
+0.191392 0.316343 0.101547 257 446 258 441 262 439 Trgb
+0.197092 0.325763 0.104571 248 447 249 440 258 441 Trgb
+0.176218 0.291262 0.093496 258 441 257 446 248 447 Trgb
+0.088556 0.146370 0.046985 247 447 248 447 257 446 Trgb
+0.191022 0.315731 0.101350 258 441 260 430 262 439 Trgb
+0.196721 0.325151 0.104374 249 440 251 431 258 441 Trgb
+0.175477 0.290037 0.093103 260 430 258 441 251 431 Trgb
+0.087553 0.144712 0.046453 251 431 253 425 260 430 Trgb
+0.002361 0.003902 0.001253 241 437 240 442 238 433 Trgb
+0.111529 0.184341 0.059174 249 440 248 447 241 437 Trgb
+0.047688 0.078822 0.025302 240 442 241 437 248 447 Trgb
+0.045589 0.075353 0.024188 248 447 247 447 240 442 Trgb
+0.002361 0.003902 0.001253 243 426 241 437 238 433 Trgb
+0.111158 0.183728 0.058977 251 431 249 440 241 437 Trgb
+0.047318 0.078209 0.025105 241 437 243 426 251 431 Trgb
+0.044957 0.074307 0.023853 253 425 251 431 243 426 Trgb
+0.000000 0.696159 0.208848 210 428 209 426 211 427 Trgb
+0.000000 0.696159 0.208848 209 426 211 426 211 427 Trgb
+0.000000 0.696159 0.208848 211 426 212 426 211 427 Trgb
+0.000000 0.696159 0.208848 212 426 213 428 211 427 Trgb
+0.000000 0.696159 0.208848 213 428 212 429 211 427 Trgb
+0.000000 0.696159 0.208848 212 429 210 428 211 427 Trgb
+0.000000 0.053681 0.016104 212 429 198 454 197 453 Trgb
+0.000000 0.036521 0.010956 212 429 197 453 210 428 Trgb
+0.000000 0.057934 0.017380 213 428 200 453 198 454 Trgb
+0.000000 0.064388 0.019316 213 428 198 454 212 429 Trgb
+0.000000 0.012907 0.003872 210 428 197 453 196 451 Trgb
+0.000000 0.006454 0.001936 210 428 196 451 209 426 Trgb
+0.154398 0.084429 0.047765 188 459 198 464 187 464 Trgb
+0.165493 0.090496 0.051198 202 466 187 464 198 464 Trgb
+0.296883 0.162344 0.091845 198 464 209 463 202 466 Trgb
+0.036020 0.019697 0.011143 183 449 188 459 187 464 Trgb
+0.274719 0.150224 0.084989 209 453 194 450 203 442 Trgb
+0.225659 0.123397 0.069811 198 464 188 459 194 450 Trgb
+0.328338 0.179544 0.101576 194 450 209 453 198 464 Trgb
+0.388466 0.212424 0.120178 209 463 198 464 209 453 Trgb
+0.223779 0.122368 0.069229 209 440 209 453 203 442 Trgb
+0.226457 0.123833 0.070058 209 453 209 440 213 455 Trgb
+0.337526 0.184568 0.104419 213 455 209 463 209 453 Trgb
+0.136021 0.074380 0.042080 194 450 194 438 203 442 Trgb
+0.107282 0.058665 0.033189 188 459 183 449 194 450 Trgb
+0.071262 0.038968 0.022046 194 438 194 450 183 449 Trgb
+0.000000 0.000000 0.000000 183 449 187 441 194 438 Trgb
+0.085080 0.046524 0.026321 194 438 209 440 203 442 Trgb
+0.000000 0.695760 0.208728 202 465 202 466 200 465 Trgb
+0.000000 0.695760 0.208728 202 466 201 466 200 465 Trgb
+0.000000 0.695760 0.208728 201 466 199 465 200 465 Trgb
+0.000000 0.695760 0.208728 199 465 198 464 200 465 Trgb
+0.000000 0.695760 0.208728 198 464 200 465 200 465 Trgb
+0.000000 0.695760 0.208728 200 465 202 465 200 465 Trgb
+0.000000 0.053534 0.016060 213 428 202 466 202 465 Trgb
+0.000000 0.065180 0.019554 213 428 202 465 213 427 Trgb
+0.000000 0.023293 0.006988 211 427 200 465 198 464 Trgb
+0.000000 0.011646 0.003494 211 427 198 464 209 427 Trgb
+0.000000 0.062864 0.018859 213 427 202 465 200 465 Trgb
+0.000000 0.048901 0.014670 213 427 200 465 211 427 Trgb
+0.375597 0.014475 0.078015 207 480 205 484 195 485 Trgb
+0.566565 0.021835 0.117680 216 466 220 471 207 480 Trgb
+0.435134 0.016770 0.090381 205 484 207 480 220 471 Trgb
+0.360499 0.013893 0.074879 187 474 207 480 195 485 Trgb
+0.551467 0.021253 0.114544 202 460 216 466 207 480 Trgb
+0.404938 0.015606 0.084109 207 480 187 474 202 460 Trgb
+0.194920 0.007512 0.040486 187 458 202 460 187 474 Trgb
+0.435649 0.016790 0.090488 220 471 216 466 215 452 Trgb
+0.150481 0.005799 0.031256 185 479 187 474 195 485 Trgb
+0.057909 0.002232 0.012028 187 474 185 479 180 460 Trgb
+0.057909 0.002232 0.012028 180 460 187 458 187 474 Trgb
+0.079101 0.003049 0.016430 215 452 195 446 206 446 Trgb
+0.420551 0.016208 0.087352 216 466 202 460 215 452 Trgb
+0.216112 0.008329 0.044888 195 446 215 452 202 460 Trgb
+0.137011 0.005280 0.028458 202 460 187 458 195 446 Trgb
+0.000000 0.000000 0.000000 187 458 180 460 195 446 Trgb
+
+0.2 20 20 592 592 BDR
+
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+end
+clear cleardictstack
+doretreesave restore
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/escher.ps b/Master/xemtex/doc/ghostscript/examples/escher.ps
new file mode 100644
index 00000000000..74b3e92d6de
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/escher.ps
@@ -0,0 +1,384 @@
+%!
+% If you're concerned that the cpu in your PostScript printer will atrophy
+% from disuse, here is another Escher-like contribution to to keep it busy
+% for a while. It uses PostScript color commands, but will still work on
+% a monochrome printer (but isn't very pretty in black & white).
+%
+% The butterflies are arranged in a hexagonal grid (wallpaper group p6),
+% and the moveto, lineto, curveto commands used to render the tesselation
+% are redefined so as to impose a nonlinear transform that shrinks the
+% infinite plane to an ellipse. This is a sleazy way to mimic Escher's
+% "circle limit" sorts of things.
+%
+% The butterfly permimeter was made by imposing all the symmetry constraints
+% on a path, and then that path was filled in using Adobe Illustrator
+%
+% The routines Xform and next_color are easy to change if you want to hack
+% with them. The code was written to sacrifice efficiency for readability.
+%
+% Bob Wallis
+%
+% UUCP {sun,pyramid,cae780,apple}!weitek!wallis
+
+/eschersave save def % prevent left over side effects
+
+%statusdict begin waittimeout 6000 lt % if you have a slow printer, you
+% {0 60 6000 setdefaulttimeouts} % might need to uncomment this
+%if end
+
+/nlayers 1 def % 1 takes about 10 minutes on a LW+; 2 takes 4x longer
+/warp 1 def % 1 -> ellipsoidal distortion; 0 -> flat Euclidean
+/inch {72 mul} def
+
+/x4 152 def /y4 205.6 def % 6 fold rotation center of bfly
+/x12 387.20 def /y12 403.84 def % 3 fold center of bfly
+
+/dx x4 x12 sub def % [dx,dy] = distance between the
+/dy y4 y12 sub def % two fixed points above
+
+/Dm dx dup mul dy dup mul % magnitude of basis vectors of
+ add sqrt 3 sqrt mul % parallelogram lattice
+def % = |dx,dy| * sqrt(3)
+
+/Da dy dx atan 30 add def
+/D1x Dm Da cos mul def % [D1x, D1y] = basis vector vector #1
+/D1y Dm Da sin mul def % = [Dm,0] exp(j30)
+
+/Da dy dx atan 30 sub def
+/D2x Dm Da cos mul def % [D2x, D2y] = basis vector vector #2
+/D2y Dm Da sin mul def % = [Dm,0] exp(-j30)
+
+/m { moveto} def
+/L {lineto} def
+/S {stroke} def
+/c {curveto} def
+/f {closepath fill} def
+/F {closepath fill} def
+/g { setgray} def
+
+/FillStroke { % fill interior & stroke black border
+ closepath gsave fill grestore 0 setgray stroke
+} def
+
+%
+% Description of 1 butterfly
+%
+/body {
+ 314.96 280.19 m
+ 383.4 261.71 445.11 243.23 513.52 224.68 c
+ 463.68 256.59 490.26 328.83 446.99 360.76 c
+ 423.71 347.32 397.08 339.7 367.07 337.9 c
+ 388.93 358.28 414.14 372.84 442.73 381.58 c
+ 426.68 398.18 394.07 389.7 387.2 403.84 c
+ 371.52 404.96 362.56 372.48 340.16 366.88 c
+ 346.88 396.01 346.88 425.12 340.16 454.24 c
+ 326.72 427.35 320 400.48 320 373.6 c
+ 270.71 352.1 221.44 411.23 168.88 384.02 c
+ 189.04 388.03 202.48 380.4 212.57 366.95 c
+ 216.72 350.85 209.23 341.46 190.1 338.79 c
+ 177.34 343.57 167.94 354.17 161.9 370.59 c
+ 176.06 305.52 132.02 274.05 152 205.6 c
+ 201.29 257.12 250.56 234.72 299.84 279.52 c
+ 288.64 266.08 284.16 252.64 286.4 239.2 c
+ 298.27 223.97 310.15 222.18 322.02 233.82 c
+ 328.62 249.28 328.51 264.74 314.96 280.19 c
+ FillStroke
+} def
+
+/eyes {
+ 294.8125 238.3246 m
+ 296.9115 238.3246 298.6132 242.7964 298.6132 248.3125 c
+ 298.6132 253.8286 296.9115 258.3004 294.8125 258.3004 c
+ 292.7135 258.3004 291.0118 253.8286 291.0118 248.3125 c
+ 291.0118 242.7964 292.7135 238.3246 294.8125 238.3246 c
+ closepath gsave 1 g fill grestore 0 g S
+
+ 319.5 241.1782 m
+ 321.7455 241.1782 323.5659 245.4917 323.5659 250.8125 c
+ 323.5659 256.1333 321.7455 260.4468 319.5 260.4468 c
+ 317.2545 260.4468 315.4341 256.1333 315.4341 250.8125 c
+ 315.4341 245.4917 317.2545 241.1782 319.5 241.1782 c
+ closepath gsave 1 g fill grestore 0 g S
+ 0 g
+ 296.875 242.0939 m
+ 297.4608 242.0939 297.9356 243.479 297.9356 245.1875 c
+ 297.9356 246.896 297.4608 248.2811 296.875 248.2811 c
+ 296.2892 248.2811 295.8143 246.896 295.8143 245.1875 c
+ 295.8143 243.479 296.2892 242.0939 296.875 242.0939 c
+ f
+ 0 g
+ 318.5 243.7707 m
+ 319.281 243.7707 319.9142 245.0766 319.9142 246.6875 c
+ 319.9142 248.2984 319.281 249.6043 318.5 249.6043 c
+ 317.719 249.6043 317.0858 248.2984 317.0858 246.6875 c
+ 317.0858 245.0766 317.719 243.7707 318.5 243.7707 c
+ f
+} def
+
+/stripes {
+ 292 289 m
+ 252 294 241 295 213 279 c
+ 185 263 175 252 159 222 c
+ S
+ 285 313 m
+ 239 326 226 325 206 315 c
+ 186 305 164 278 161 267 c
+ S
+ 298 353 m
+ 262 342 251 339 237 355 c
+ 223 371 213 380 201 383 c
+ S
+ 330 288 m
+ 384 293 385 292 418 280 c
+ 451 268 452 264 473 247 c
+ S
+ 342 306 m
+ 381 311 386 317 410 311 c
+ 434 305 460 287 474 262 c
+ S
+ 345 321 m
+ 352 357 359 367 379 377 c
+ 399 387 409 385 426 382 c
+ S
+ 327.75 367.75 m
+ 336.5 392.25 333.682 403.348 335.25 415.5 c
+ S
+ 320 364.75 m
+ 322 361.75 323.5 360.5 326.25 360 c
+ 329 359.5 332 360.5 334 362.75 c
+ S
+ 316.25 356.5 m
+ 318.75 353.25 320 353 323.25 352.25 c
+ 326.5 351.5 329 352 331.5 353.25 c
+ S
+ 312.5 349 m
+ 316.75 345.5 318.25 344.5 321.25 343.75 c
+ 324.25 343 327 344 329.75 346 c
+ S
+ 310.75 340.75 m
+ 314.25 336.5 316.25 335.25 320 335.25 c
+ 323.75 335.25 327 336.5 329.25 338 c
+ S
+ 308.5 332 m
+ 311.75 328.5 312.5 327.25 317 327 c
+ 321.5 326.75 325.75 328.25 327.75 329.75 c
+ S
+ 305 322 m
+ 309.5 317.75 310.75 317 315 316.5 c
+ 319.25 316 322.25 318 324.75 320 c
+ S
+ 302.25 311 m
+ 307 307.5 307.75 306.25 312.75 306 c
+ 317.75 305.75 320 307.25 323.75 309.5 c
+ S
+ 301.25 298.25 m
+ 304.5 292.75 305.25 292 308.25 292 c
+ 311.25 292 313.75 293.75 315.75 295.75 c
+ S
+} def
+/nostrils {
+ 0 g
+ 304.062 227.775 m
+ 304.599 227.775 305.034 228.883 305.034 230.25 c
+ 305.034 231.616 304.599 232.724 304.062 232.724 c
+ 303.525 232.724 303.09 231.616 303.09 230.25 c
+ 303.09 228.883 303.525 227.775 304.062 227.775 c
+ f
+ 304.062 230.25 m
+ F
+ 309.562 228.275 m
+ 310.099 228.275 310.534 229.383 310.534 230.75 c
+ 310.534 232.116 310.099 233.224 309.562 233.224 c
+ 309.025 233.224 308.59 232.116 308.59 230.75 c
+ 308.59 229.383 309.025 228.275 309.562 228.275 c
+ f
+} def
+/thorax
+{
+ 327.5 300 m
+ 316.5 283 315.5 275.5 308 277.5 c
+ 294 311.5 299 313.5 304 334 c
+ 309 354.5 315.5 362 322.5 372 c
+ 329.5 382 327.5 376.5 331 376 c
+ 334.5 375.5 339.1367 379.1109 339 369 c
+ 338.5 332 333.4999 324.5 330.5 311.5 c
+ 0 g S
+} def
+/spots {
+ next_color
+ 192 242.201 m
+ 202.1535 242.201 210.3848 251.0655 210.3848 262 c
+ 210.3848 272.9345 202.1535 281.799 192 281.799 c
+ 181.8465 281.799 173.6152 272.9345 173.6152 262 c
+ 173.6152 251.0655 181.8465 242.201 192 242.201 c
+ FillStroke
+ next_color
+ 447.5 250.2365 m
+ 459.6061 250.2365 469.4203 257.5181 469.4203 266.5 c
+ 469.4203 275.4819 459.6061 282.7635 447.5 282.7635 c
+ 435.3939 282.7635 425.5797 275.4819 425.5797 266.5 c
+ 425.5797 257.5181 435.3939 250.2365 447.5 250.2365 c
+ FillStroke
+ next_color
+ 401 369.1005 m
+ 409.5914 369.1005 416.5563 373.5327 416.5563 379 c
+ 416.5563 384.4673 409.5914 388.8995 401 388.8995 c
+ 392.4086 388.8995 385.4436 384.4673 385.4436 379 c
+ 385.4436 373.5327 392.4086 369.1005 401 369.1005 c
+ FillStroke
+ next_color
+ 249 348.2721 m
+ 261.4966 348.2721 271.6274 353.9707 271.6274 361 c
+ 271.6274 368.0293 261.4966 373.7279 249 373.7279 c
+ 236.5034 373.7279 226.3726 368.0293 226.3726 361 c
+ 226.3726 353.9707 236.5034 348.2721 249 348.2721 c
+ FillStroke
+} def
+
+/ncolor 6 def
+/cidx 0 def
+
+/next_color {
+ cidx ncolor div % hue
+ .75 % saturation (change these if you like)
+ .8 % lightness
+ sethsbcolor
+ /cidx cidx 1 add ncolor mod def
+} def
+
+/cidx 0 def
+
+/max_r2 % radius^2 for center of outermost ring of butterflies
+ Dm nlayers mul 1.05 mul dup mul
+def
+
+/max_radius max_r2 sqrt def
+/max_radius_inv 1 max_radius div def
+/Dm_inv 1 Dm div def
+
+%
+% Ellipsoidal distortion, maps "nlayers" concentric rings of cells into
+% an ellipse centered on page
+
+% D length of 1 basis vector separating hexagonal cells
+% z0 center of 6-fold rotation = origin of shrink xform
+% z' = (z - z0)/D new coord system
+% |z'| = sqrt(x^2 + [(8.5/11)*y]^2) aspect ratio of paper
+% z" = z' * a/M(|z'|) shrink by "a/M(|z|)" as fcn of radius
+
+% At the max radius, we want the shrunk ellipse to be "W" units wide so it
+% just fits our output format - solve for scale factor "a"
+
+% zmax = n+0.5 for n layers of cells
+% zmax * [a/M(zmax)] = W 1/2 width of output on paper
+% a = M(zmax)*W/zmax solve for "a"
+
+%/M{dup mul 1 add sqrt}bind def % M(u) = sqrt(1+|u|^2) = one possible shrink
+/M { 1.5 add } bind def % M(u) = (1.5+|u|) = another possible one
+/W 3.8 inch def % 1/2 width of ellipse
+/zmax 0.5 nlayers add def % radius at last layer of hexagons
+/a zmax M W mul zmax div def % a = M(zmax)*W/zmax
+
+/Xform { % [x0,y0] = ctr ellipse
+ Matrix transform
+ /y exch def
+ /x exch def
+ /z x dup mul y .773 mul dup mul add sqrt def % ellipse radius
+ /Scale a z M div def % z=a/M(|z|)
+ x Scale mul x0 add % magnify back up
+ y Scale mul y0 add % [x0+x*s, y0+y*s]
+} def
+
+
+/Helvetica findfont 8 scalefont setfont
+4.25 inch 0.5 inch moveto
+(RHW) stringwidth pop -0.5 mul 0 rmoveto
+(RHW) show % autograph
+
+warp 1 eq { % redefine commands to use Xform
+ /moveto { Xform //moveto} def
+ /lineto { Xform //lineto} def
+ /curveto {
+ Xform 6 -2 roll
+ Xform 6 -2 roll
+ Xform 6 -2 roll
+ //curveto
+ } def
+}if
+
+
+/bfly { % paint 1 butterfly
+ next_color body
+ 1 setgray eyes
+ stripes
+ 0 setgray nostrils
+ 0.5 setgray thorax next_color
+ spots
+} def
+
+/x0 x4 def % center
+/y0 y4 def
+
+/T1matrix % xlate to center of image
+ x0 neg y0 neg matrix translate
+def
+
+/Smatrix % scale so that 1 basis vector = 1.0
+ Dm_inv dup matrix scale
+def
+
+/HexCell { % 6 butterflys rotated about center of
+ /cidx 0 def % 6 fold symmetry
+ /color 0 def
+ /T2matrix dx dy matrix translate def
+ 0 60 300 {
+ /angle exch def
+ /Rmatrix angle matrix rotate def
+ /Matrix % translate, rotate, scale - used by Xform
+ T1matrix Rmatrix matrix concatmatrix
+ T2matrix matrix concatmatrix
+ Smatrix matrix concatmatrix
+ def
+ gsave
+ warp 0 eq % then may use usual PostScript machinery
+ { % else using Xform
+ x0 y0 translate angle rotate
+ .5 dup scale
+ dx x0 sub dy y0 sub translate
+ } if
+ bfly
+ next_color
+ grestore
+ } for
+} def
+
+
+%320 x4 sub 240 y4 sub translate
+4.25 inch x4 sub 5.5 inch y4 sub translate
+
+
+0 setlinewidth
+/N 2 def
+N neg 1 N {
+ /i exch def % translate to
+ N neg 1 N { % i*D1 + j*D2
+ /j exch def % and draw HexCell
+ gsave
+ /dx i D1x mul j D2x mul add def % translate HexCell by
+ /dy i D1y mul j D2y mul add def % [dx,dy]
+ /r2 dx dup mul dy dup mul add def % r^2 = |dx,dy|^2
+ r2 max_r2 lt % inside radius?
+ { % yes
+ 1 r2 max_r2 div sub sqrt 2 div
+ setlinewidth % make skinnier lines
+ HexCell % 6 butterflies
+ }
+ if
+ grestore
+ } for
+} for
+
+showpage
+
+clear cleardictstack
+eschersave restore
diff --git a/Master/xemtex/doc/ghostscript/examples/golfer.ps b/Master/xemtex/doc/ghostscript/examples/golfer.ps
new file mode 100644
index 00000000000..9f3a8916d49
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/golfer.ps
@@ -0,0 +1,1401 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator:Adobe Illustrator(TM) 1.0b2-
+%%Title:golfer art+
+%%CreationDate:1/6/87 9:32 AM
+%%DocumentFonts:Helvetica-Bold
+%%BoundingBox:7 31 577 726
+%%TemplateBox:0 -48 576 672
+%%EndComments
+/golfersave save def % prevent left over effects
+100 dict begin
+/q{bind def}bind def
+/Q{load def}q
+/x{exch def}q
+/X/def Q
+/g{/_g x/p{_g setgray}X}q
+/G{/_G x/P{_G setgray}X}q
+/k{/_b x/_g x/_r x/p{_r _g _b setrgbcolor}X}q
+/K{/_B x/_G x/_R x/P{_R _G _B setrgbcolor}X}q
+/d/setdash Q
+/i/setflat Q
+/j/setlinejoin Q
+/J/setlinecap Q
+/M/setmiterlimit Q
+/w/setlinewidth Q
+/_C{.25 sub round .25 add}q
+/_c{transform _C exch _C exch itransform}q
+/c{_c curveto}q
+/C/c Q
+/v{currentpoint 6 2 roll _c curveto}q
+/V/v Q
+/y{_c 2 copy curveto}q
+/Y/y Q
+/l{_c lineto}q
+/L/l Q
+/m{_c moveto}q
+/_e[]X
+/_E{_e length 0 ne{gsave 1 g 0 G 1 i 0 J 0 j .5 w 10 M[]0 d
+/Helvetica-Bold 24 0 0 1 z
+[0.966 0.259 -0.259 0.966
+_e 0 get _e 2 get add 2 div _e 1 get _e 3 get add 2 div]a
+(ERROR: can't fill a path)t T grestore}if}q
+/n/newpath Q
+/N/newpath Q
+/F{p{fill}stopped{/_e[pathbbox]X n _E}if}q
+/f{closepath F}q
+/S{P stroke}q
+/s{closepath S}q
+/B{gsave F grestore S}q
+/b{closepath B}q
+/u{}q
+/U{}q
+/_s/ashow Q
+/_S{(?)exch{2 copy 0 exch put pop dup true charpath currentpoint _m setmatrix
+stroke _M setmatrix moveto 3 copy pop rmoveto}forall pop pop pop n}q
+/_A{_a moveto _t exch 0 exch}q
+/_L{0 _l neg translate _M currentmatrix pop}q
+/_w{dup stringwidth exch 3 -1 roll length 1 sub _t mul add exch}q
+/_z[{0 0}bind{dup _w exch neg 2 div exch neg 2 div}bind
+{dup _w exch neg exch neg}bind]X
+/z{_z exch get/_a x/_t x/_l x exch findfont exch scalefont setfont}q
+/_d{matrix currentmatrix X}q
+/_D{/_m _d gsave concat/_M _d}q
+/e{_D p/t{_A _s _L}X}q
+/r{_D P/t{_A _S _L}X}q
+/a{_D/t{dup p _A _s P _A _S _L}X}q
+/o{_D/t{pop _L}X}q
+/T{grestore}q
+/Z{findfont begin currentdict dup length dict begin
+{1 index/FID ne{X}{pop pop}ifelse}forall/FontName exch X dup length 0 ne
+{/Encoding Encoding 256 array copy X 0 exch{dup type/nametype eq
+{Encoding 2 index 2 index put pop 1 add}{exch pop}ifelse}forall}if pop
+currentdict dup end end/FontName get exch definefont pop}q
+n
+%%EndProlog
+u
+0.9 g
+0 G
+1 i
+0 J
+0 j
+1 w
+10 M
+[]0 d
+%%Note:
+15.815 40.248 m
+567.815 40.002 L
+567.748 716.565 L
+15.998 716.81 L
+15.815 40.248 L
+b
+U
+1 g
+285.313 40 m
+567.688 40.125 L
+567.812 78.375 L
+285.312 78.25 L
+285.313 40 L
+b
+0 g
+175.5 163 m
+180.007 163 173.738 169.081 171.75 168.75 c
+174.75 169.25 176.25 169.5 174.5 171.25 C
+178 171.25 176.349 173.783 175 176.75 c
+173.75 179.5 170.75 182.25 168.25 182 C
+165.5 181.25 167.622 182.838 165.25 186 c
+164.5 187 164.75 187.5 161.75 186.75 c
+158.75 186 163.25 190 156.75 190 c
+150.25 190 148.5 189 145.5 186 c
+142.5 183 139.75 183.75 139.5 182.5 c
+139.25 181.25 139.5 176.75 138.75 175.5 c
+138 174.25 136.75 174.25 136.25 178 c
+135.75 181.75 140.25 182.25 134 187 C
+135.75 190.75 134.5 191.75 131 193.5 C
+131 200 129.202 203.364 119.5 208.5 c
+115.25 210.75 107 212.75 104.75 208.75 c
+102.5 204.75 103 206.5 96.5 205.75 c
+90 205 87.25 202.5 86.5 197.75 c
+85.75 193 82.75 195 79 194.75 c
+75.25 194.5 77 192.75 77.25 191.75 c
+77.5 190.75 75.25 192.5 71.5 192 c
+67.75 191.5 64.25 185.5 69.5 180.75 c
+74.75 176 66.5 180.75 64.25 182.25 c
+62 183.75 60.5 181.75 61 180.25 c
+61.5 178.75 58.75 180.75 57.5 180.75 c
+56.25 180.75 51.008 180.188 52 172.25 c
+52.25 170.25 51.5 170.5 49.75 169.25 c
+48 168 45.75 164.25 48.5 158.75 c
+51.25 153.25 49 150 48 145.5 c
+47 141 48 138.25 51.25 137.25 c
+54.5 136.25 54 133.791 54 130.75 C
+57 130.5 59 129.25 58.75 124.5 C
+62.25 124.5 61.75 126.75 62.5 130 c
+63.25 133.25 65.75 129 66.25 127 c
+66.75 125 67.5 125 72 125 C
+74.75 116.25 74.75 120.5 75.25 117.25 C
+80 117.5 79.5 116.75 83.25 113.75 c
+87 110.75 88.25 115.5 92 118.5 c
+95.75 121.5 94.25 122.75 96.25 118.75 c
+98.25 114.75 98.5 119 101.5 119.25 c
+104.5 119.5 101 115.75 105.25 114.5 c
+109.5 113.25 105 113.75 103.5 111.25 c
+102 108.75 95 103.5 101.75 101.5 c
+108.5 99.5 103.5 99.75 94.75 99.5 c
+86 99.25 73.75 87.5 97.25 73.25 C
+117.25 53.25 117.25 53.5 v
+117.25 53.75 175.25 163 175.5 163 c
+f
+1 J
+0.2 w
+389.709 210.076 m
+511.826 210.076 l
+S
+394.709 212.461 m
+516.826 212.461 l
+S
+415.459 215.112 m
+537.576 215.112 l
+S
+399.709 217.762 m
+521.826 217.762 l
+S
+402.459 222.799 m
+524.576 222.799 l
+S
+402.709 225.45 m
+524.826 225.45 l
+S
+392.959 227.851 m
+515.076 227.851 l
+S
+400.691 232.856 m
+522.809 232.856 l
+S
+388.191 235.241 m
+510.309 235.241 l
+S
+393.941 237.892 m
+516.059 237.892 l
+S
+393.441 240.292 m
+515.559 240.292 l
+S
+396.191 242.928 m
+518.309 242.928 l
+S
+386.441 245.579 m
+508.559 245.579 l
+S
+393.191 248.23 m
+515.309 248.23 l
+S
+414.191 250.631 m
+536.309 250.631 l
+S
+397.95 252.973 m
+520.067 252.973 l
+S
+398.7 255.358 m
+520.817 255.358 l
+S
+400.7 258.009 m
+522.817 258.009 l
+S
+384.45 260.659 m
+506.567 260.659 l
+S
+380.7 265.696 m
+502.817 265.696 l
+S
+379.95 268.347 m
+502.067 268.347 l
+S
+386.7 270.748 m
+508.817 270.748 l
+S
+394.433 275.752 m
+516.55 275.752 l
+S
+381.933 278.138 m
+504.05 278.138 l
+S
+379.433 280.789 m
+501.55 280.789 l
+S
+383.183 283.189 m
+505.3 283.189 l
+S
+370.433 285.825 m
+492.55 285.825 l
+S
+382.433 288.476 m
+504.55 288.476 l
+S
+356.183 291.127 m
+478.3 291.127 l
+S
+372.433 293.277 m
+494.55 293.277 l
+S
+361.866 296.006 m
+483.984 296.006 l
+S
+365.616 298.406 m
+487.734 298.406 l
+S
+366.866 301.042 m
+488.984 301.042 l
+S
+346.866 303.693 m
+468.984 303.693 l
+S
+338.616 306.344 m
+460.734 306.344 l
+S
+330.866 308.494 m
+452.984 308.494 l
+S
+301.575 344.342 m
+423.692 344.342 l
+S
+314.075 346.728 m
+436.192 346.728 l
+S
+318.325 349.378 m
+440.442 349.378 l
+S
+312.075 352.029 m
+434.192 352.029 l
+S
+327.325 357.065 m
+449.442 357.065 l
+S
+327.575 359.716 m
+449.692 359.716 l
+S
+317.825 362.117 m
+439.942 362.117 l
+S
+335.558 367.122 m
+457.675 367.122 l
+S
+313.058 369.507 m
+435.175 369.507 l
+S
+318.808 372.158 m
+440.925 372.158 l
+S
+317.579 404.674 m
+439.696 404.674 l
+S
+322.312 409.179 m
+444.429 409.179 l
+S
+323.812 412.065 m
+445.929 412.065 l
+S
+329.562 414.715 m
+451.679 414.715 l
+S
+329.062 417.116 m
+451.179 417.116 l
+S
+331.812 419.752 m
+453.929 419.752 l
+S
+322.062 422.402 m
+444.179 422.402 l
+S
+328.812 425.053 m
+450.929 425.053 l
+S
+349.812 427.454 m
+471.929 427.454 l
+S
+333.571 429.796 m
+455.688 429.796 l
+S
+334.321 432.182 m
+456.438 432.182 l
+S
+336.321 434.832 m
+458.438 434.832 l
+S
+320.071 437.483 m
+442.188 437.483 l
+S
+316.321 442.519 m
+438.438 442.519 l
+S
+315.571 445.17 m
+437.688 445.17 l
+S
+322.321 447.571 m
+444.438 447.571 l
+S
+330.054 452.576 m
+452.171 452.576 l
+S
+317.554 454.961 m
+439.671 454.961 l
+S
+315.054 457.612 m
+437.171 457.612 l
+S
+318.804 460.012 m
+440.921 460.012 l
+S
+306.054 462.648 m
+428.171 462.648 l
+S
+300.054 465.299 m
+422.171 465.299 l
+S
+291.804 467.95 m
+413.921 467.95 l
+S
+308.054 470.101 m
+430.171 470.101 l
+S
+260.834 543.511 m
+382.951 543.511 l
+S
+246.066 548.016 m
+368.184 548.016 l
+S
+256.066 550.901 m
+378.184 550.901 l
+S
+253.566 553.552 m
+375.684 553.552 l
+S
+230.316 555.952 m
+352.434 555.952 l
+S
+244.566 558.588 m
+366.684 558.588 l
+S
+238.566 561.239 m
+360.684 561.239 l
+S
+230.316 563.89 m
+352.434 563.89 l
+S
+216.566 565.541 m
+338.684 565.541 l
+S
+104.443 572.01 m
+226.575 572.209 l
+S
+98.682 567.48 m
+220.814 567.68 l
+S
+91.688 565.11 m
+213.82 565.31 l
+S
+97.192 561.955 m
+219.324 562.155 l
+S
+73.943 559.517 m
+196.075 559.717 l
+S
+88.199 556.904 m
+210.331 557.103 l
+S
+82.203 554.243 m
+204.335 554.443 l
+S
+73.956 551.578 m
+196.088 551.778 l
+S
+73.707 549.405 m
+195.839 549.605 l
+S
+85.302 539.953 m
+207.434 540.152 l
+S
+79.541 535.423 m
+201.673 535.623 l
+S
+72.547 533.053 m
+194.679 533.253 l
+S
+78.051 529.898 m
+200.183 530.098 l
+S
+54.802 527.46 m
+176.934 527.66 l
+S
+69.058 524.847 m
+191.19 525.046 l
+S
+63.061 522.186 m
+185.194 522.385 l
+S
+54.815 519.521 m
+176.947 519.721 l
+S
+54.566 517.348 m
+176.698 517.547 l
+S
+u
+189.475 196.879 m
+311.592 196.879 l
+S
+176.975 199.265 m
+299.092 199.265 l
+S
+174.475 201.916 m
+296.592 201.916 l
+S
+178.225 204.316 m
+300.342 204.316 l
+S
+165.475 206.952 m
+287.592 206.952 l
+S
+177.475 209.603 m
+299.592 209.603 l
+S
+155.725 212.254 m
+277.842 212.254 l
+S
+167.475 214.404 m
+289.592 214.404 l
+S
+156.908 217.133 m
+279.026 217.133 l
+S
+144.658 219.533 m
+266.776 219.533 l
+S
+161.908 222.169 m
+284.026 222.169 l
+S
+153.908 224.82 m
+276.026 224.82 l
+S
+163.658 226.971 m
+285.776 226.971 l
+S
+152.408 229.121 m
+274.526 229.121 l
+S
+145.925 233.316 m
+268.042 233.316 l
+S
+157.675 235.466 m
+279.792 235.466 l
+S
+147.108 238.195 m
+269.226 238.195 l
+S
+134.858 240.595 m
+256.976 240.595 l
+S
+137.608 243.231 m
+259.726 243.231 l
+S
+144.108 245.882 m
+266.226 245.882 l
+S
+153.858 248.033 m
+275.976 248.033 l
+S
+155.108 231.183 m
+277.226 231.183 l
+S
+103.425 247.816 m
+225.542 247.816 l
+S
+100.175 249.966 m
+222.292 249.966 l
+S
+89.608 252.695 m
+211.726 252.695 l
+S
+77.358 255.095 m
+199.476 255.095 l
+S
+U
+u
+1 g
+0 J
+1 w
+120.001 389.999 m
+170.811 344.713 248.714 349.191 294.001 400.001 c
+339.287 450.811 334.809 528.714 283.999 574.001 c
+233.189 619.287 155.286 614.809 109.999 563.999 c
+64.713 513.189 69.191 435.286 120.001 389.999 c
+f
+202 482 m
+F
+U
+u
+258 302 m
+306.6 267.759 373.759 279.4 408 328 c
+442.241 376.6 430.6 443.759 382 478 c
+333.4 512.241 266.241 500.6 232 452 c
+197.759 403.4 209.4 336.241 258 302 c
+f
+320 390 m
+F
+U
+u
+196 376 m
+252.332 345.072 323.072 365.668 354 422 c
+384.928 478.332 364.332 549.072 308 580 c
+251.668 610.928 180.928 590.332 150 534 c
+119.072 477.668 139.668 406.928 196 376 c
+f
+252 478 m
+F
+U
+u
+106 257 m
+170.064 231.595 242.595 262.936 268 327 c
+293.405 391.064 262.064 463.595 198 489 c
+133.936 514.405 61.405 483.064 36 419 c
+10.595 354.936 41.936 282.405 106 257 c
+f
+152 373 m
+F
+U
+u
+366.001 122 m
+415.706 97.7 475.7 118.296 500 168.001 c
+524.3 217.706 503.704 277.7 453.999 302 c
+404.294 326.3 344.3 305.704 320 255.999 c
+295.7 206.294 316.296 146.3 366.001 122 c
+f
+410 212 m
+F
+U
+u
+227.999 198 m
+267.763 185.85 309.849 208.236 322 247.999 c
+334.15 287.763 311.764 329.849 272.001 342 c
+232.237 354.15 190.151 331.764 178 292.001 c
+165.85 252.237 188.236 210.151 227.999 198 c
+f
+250 270 m
+F
+U
+0 g
+15.75 71.25 m
+24.25 82.75 24.75 84.75 27.75 82.25 c
+30.75 79.75 31.75 81.25 32.75 82.75 c
+33.75 84.25 30.75 86.75 35.75 88.75 c
+40.75 90.75 41.25 91.75 43.25 89.75 c
+45.25 87.75 39.25 89.25 50.25 88.75 c
+61.25 88.25 70.25 81.75 74.25 75.25 c
+78.25 68.75 77.75 67.25 75.25 63.25 c
+72.75 59.25 68.25 56.75 72.25 57.25 c
+76.25 57.75 75.75 60.75 77.75 56.75 c
+79.75 52.75 80.25 51.25 79.25 49.25 c
+78.25 47.25 74.25 46.75 81.25 46.25 c
+88.25 45.75 91.75 37.557 91.75 40.25 c
+15.752 40.248 l
+15.75 71.25 l
+f
+340.75 55.5 m
+F
+u
+u
+3 w
+280.774 44.223 m
+567.893 44.223 l
+S
+280.774 48.728 m
+567.893 48.728 l
+S
+280.774 53.734 m
+567.893 53.734 l
+S
+U
+u
+280.774 58.739 m
+567.893 58.739 l
+S
+280.774 63.245 m
+567.893 63.245 l
+S
+280.774 68.251 m
+567.893 68.251 l
+S
+U
+u
+280.774 73.257 m
+567.893 73.257 l
+S
+280.774 78.263 m
+567.893 78.263 l
+S
+U
+U
+0.8 g
+0.2 w
+243 252 m
+323 235 l
+346 273 l
+368 248 l
+376 247 376 248 V
+377 174 380.5 121 330.5 40 C
+90.5 40 91.5 40 V
+138.5 129 163 162 214 200 C
+236 229 234.527 240.11 238 254 c
+240 262 243 252 y
+b
+0.5 g
+359.5 485 m
+389.267 485 402.5 486.25 415.75 489 c
+429 491.75 435 493.25 439 493.5 c
+443 493.75 490.398 537.797 502.5 562 c
+507 571 514.5 577 517.5 579.5 c
+520.5 582 501.5 591 y
+428 512 428 512.5 v
+428 513 356.5 510 356 509.5 c
+355.5 509 351 488 y
+359 485 359.5 485 v
+b
+0.7 g
+370 496.5 m
+368 480.5 365.5 472.5 364.5 471.5 C
+329.5 476.5 l
+323.5 489.5 l
+370 496.5 l
+b
+0.5 g
+352.75 494 m
+380 493.25 399.626 496.75 407.5 499 c
+418 502 424.586 497.135 432.75 505.5 c
+453 526.25 473.5 544.5 496.5 586.5 C
+473.5 590 473.5 590.5 V
+456 571.5 443 563.5 434 558 c
+425 552.5 416 544 408.5 534.5 C
+399 533 379.5 537.5 364 537.5 c
+348.5 537.5 352.75 494 y
+b
+1 g
+500 583 m
+500.5 577.098 517 573.5 520.5 572 c
+524 570.5 526.353 568.989 526.5 579 c
+526.675 590.992 541 586 539 624 C
+538.5 624 506 628 y
+499.958 583.498 500 583 v
+b
+0 g
+1 J
+3 w
+562 629 m
+343 645 217 644 77 601 C
+52 576 L
+59.5 562 80.132 560.877 87 589 c
+89.513 599.292 87 597 101 601 c
+108.323 603.092 265 654 561 617 C
+562 629 l
+f
+1 G
+0 J
+0.7 w
+305 634 m
+391.5 636.5 415 635 473 632 c
+S
+0.5 w
+213 626.5 m
+153.5 619 125.925 611.699 90.75 602.5 c
+78.654 599.337 82.567 597.884 82.5 592 c
+82.395 582.717 73.75 571 59 572.5 c
+S
+1 g
+0 G
+1 w
+73 595.25 m
+79.25 592.5 76.25 574.75 57.25 580 C
+73 595.25 l
+f
+0.5 g
+0.2 w
+312 574.25 m
+311.25 570.5 310.687 571.687 306.187 569.187 C
+307.687 564.187 311.106 565.66 304.5 561.5 c
+302.594 560.299 305.598 556.561 305.75 555.5 c
+306.038 553.485 304.629 548.098 297 548.5 c
+292.25 548.75 255.5 536 y
+229.5 608.5 l
+224 650 224.5 650 v
+248.101 650 273.345 678.918 298 655.5 c
+324.857 629.99 316.981 613.501 316.75 612.875 c
+313.346 603.644 313.238 604.937 314.75 597.375 c
+316.88 586.725 317.016 588.834 318.625 584.75 C
+320.25 581.875 318.625 580.375 y
+316.689 578.236 313.081 579.809 310.375 579 c
+307.013 577.994 312 574.25 y
+B
+0 g
+0.5 w
+288.5 456 m
+S
+0.2 w
+211 511 m
+194.5 518.5 187 520.5 170.5 500 C
+154.5 498.5 149.5 501 131.5 479.5 C
+151 477.5 140 475 161 460 c
+182 445 190.5 436.5 212 461 C
+224.5 458 229 454.5 238.5 447 C
+238 446.5 237 500.5 y
+211 511 l
+f
+1 g
+207.5 526.5 m
+206 514.5 204 506 236 490.5 C
+242.5 509.5 l
+207.5 526.5 l
+b
+0 g
+1 w
+294.464 627.589 m
+288.571 618.522 284.821 617.313 280 615.5 c
+275.179 613.686 271.429 605.224 277.857 587.089 C
+274.107 586.485 275.179 585.88 275.714 582.858 C
+271.429 599.179 270.357 606.433 259.643 609.455 c
+248.929 612.477 245.714 589.507 247.321 566.537 C
+228.572 554.448 L
+224.639 578.851 235.956 576.38 212.5 600.992 c
+194.17 620.226 195.893 654.791 225.357 658.418 C
+223.214 667.485 233.929 678.97 259.107 677.761 c
+284.286 676.552 281.071 667.485 Y
+302.5 667.485 334.964 665.942 301.429 614.895 C
+306.25 639.679 303.571 643.306 296.607 646.933 C
+299.286 634.239 294.464 627.589 y
+f
+0.7 g
+0.2 w
+207.5 524.5 m
+214.75 519.25 241.5 509 y
+239 504.5 l
+232 503 214.5 508.75 206.75 519 C
+207 522.5 207.5 524.5 y
+b
+1 g
+298 546.5 m
+272.625 574.625 248.5 596 195.5 568.5 C
+196.26 524.417 214.492 504.333 239.5 510.5 C
+298 546.5 l
+b
+0.8 g
+351.5 542 m
+367 540 L
+358.5 509.5 357 489.5 357 482 C
+323.5 482.5 295.5 485.5 284.5 477.5 c
+298.5 468.5 l
+299 457 l
+270.5 451 l
+238.5 483.5 l
+241 513.5 l
+250.5 538 252.5 547.5 282.5 550 C
+306.251 550 334.454 541.702 343.687 542.187 C
+342.576 538.175 346.737 538.055 351.5 542 c
+b
+0 g
+1 w
+333.25 484.75 m
+343.25 458.25 371.5 466 349 418.5 C
+359 348.5 378 357 363 336 C
+358.5 333 359 333 v
+359.5 333 353 328 359 327.5 c
+365 327 371 316.5 373.5 253.5 C
+381 245.5 l
+371 221 371 220.5 V
+360.5 247 358 253 351 261.5 C
+340 238 331.5 220.5 328.5 211.5 C
+301 229.5 265 250 232.5 244.5 C
+247.5 287 246 299.5 275 320.5 C
+270 331.5 268.689 334.634 265.75 336.25 c
+255.75 341.75 261.891 340.771 251 375 c
+247.5 386 249.5 384 255.5 399 C
+252.5 397 253.5 401 253.5 402.5 c
+253.5 404 252.057 400.023 251 402.5 c
+235 440 219.5 489.5 249.5 534 C
+238.5 503.5 242.102 477.13 260 463 c
+269.5 455.5 278.75 453.25 291 457.25 C
+297.5 461 299.549 465.787 282 476.75 C
+292.5 487.5 333.25 484.75 y
+f
+457.25 576.25 m
+454.936 574.233 453.51 595.217 479.25 583 C
+495.651 573.321 495.931 560.263 482.5 560.5 C
+486.25 566 491.682 565.465 478.5 575 c
+463.444 585.891 460.318 578.924 457.25 576.25 c
+f
+1 g
+460.75 581.5 m
+463.387 583.699 467.528 583.937 470.5 583.375 c
+473.752 582.76 473.75 581.75 Y
+461.735 583.841 458.891 579.95 460.75 581.5 c
+f
+0 g
+310.393 647.785 m
+329.089 651.66 328.75 623.692 320.178 607.976 C
+319.107 621.274 316.428 636.386 310.536 635.782 c
+304.643 635.177 310.393 647.785 y
+f
+284.286 663.858 m
+286.964 677.157 280.536 689.246 281.071 689.246 C
+289.107 677.761 288.036 665.672 y
+284.286 663.858 l
+f
+0.2 w
+274.643 683.201 m
+278.929 678.97 280 668.694 279.464 665.672 c
+S
+276.25 686.224 m
+284.393 677.036 283.75 662.045 y
+S
+1 w
+297.679 661.44 m
+312.602 661.44 312.143 677.157 310.536 680.784 C
+308.929 672.321 305.179 666.276 292.857 664.463 C
+297.679 661.44 l
+f
+0.2 w
+295 661.44 m
+298.75 666.276 302.5 675.343 294.464 683.201 c
+S
+300.357 681.992 m
+304.265 669.255 303.814 670.807 292.321 656.604 c
+S
+311.821 649.078 m
+321.464 649.078 330.571 646.66 329.5 627.921 c
+S
+307.536 650.892 m
+316.268 651.33 319.057 653.025 326.821 646.056 c
+330.446 642.802 331.1 637.618 331.107 637.593 c
+S
+304.643 665.067 m
+305.629 663.874 321.031 667.072 321.304 651.569 c
+S
+0.5 w
+311.071 639.679 m
+317.893 638.968 312.696 617.332 v
+S
+1 w
+313.375 612.875 m
+315.455 614.262 313.5 617.375 297.125 615.375 C
+310.375 616.625 311.875 611.875 313.375 612.875 c
+f
+1 g
+308.5 604.875 m
+309.833 600.875 309.125 601.25 307.375 599 C
+302.25 600.625 303.25 599.875 299 602.5 C
+304.25 604.75 308.375 605.25 308.5 604.875 c
+f
+0 g
+307.5 604.437 m
+305.463 602.811 305.481 601.49 307.375 598.937 C
+309.261 601.307 309.489 602.172 308.562 605.062 C
+308.562 604.937 308.191 604.989 307.5 604.437 c
+f
+0.2 w
+305.625 583.75 m
+304.687 582.562 306.5 579.375 308.875 579.75 c
+S
+1 w
+311.125 574.5 m
+310.25 573.898 310 573.437 304.937 569.312 C
+306.229 564.611 308.063 564.014 308.312 564.562 C
+309.775 566.476 307.663 569.565 306.687 569.75 C
+311.812 571.75 311.625 572.5 312 574.25 C
+311.687 574.75 311.176 574.535 311.125 574.5 c
+f
+298.625 603 m
+302 600.437 304.294 599.524 307.812 598.937 c
+308.187 598.875 308.562 598.5 308.687 597.875 c
+S
+297.5 602.25 m
+299.939 602.851 307.687 603.062 311.75 607.812 C
+307.812 606 297.011 602.129 297.5 602.25 c
+f
+213.5 576.125 m
+218.674 549.92 230.862 532.355 245.5 526.5 C
+243.75 514.5 209.75 494.25 195.5 568.5 C
+203.75 572.25 213.347 576.901 213.5 576.125 c
+f
+0.2 w
+343.375 541.75 m
+333.375 534.75 318.25 525.5 312 521.25 c
+S
+351.562 541.937 m
+337.936 530.579 327.2 525.581 313.25 517.75 c
+S
+0.3 w
+312.75 495 m
+291.75 483.5 276.25 476 274.25 466 c
+S
+0.5 w
+229 580.75 m
+235.5 571 241.25 554.75 245.75 528 c
+S
+1 w
+235 581 m
+246 555.75 246.75 537.75 245.75 526 C
+252.125 560.5 243.75 567.75 239.75 581.5 C
+240 581.5 237 581.75 235 581 C
+f
+0.7 g
+0.2 w
+248.625 580.5 m
+253.169 564.605 256.75 553.75 250.25 535.75 C
+257.5 552.75 259.125 558.937 252.875 579.687 C
+251.029 580.149 248.517 580.879 248.625 580.5 c
+b
+0 g
+1 w
+258.25 577.75 m
+262.047 567.879 262.5 552.5 259.25 544.25 C
+267.75 548.25 275 549.75 278.25 549.75 C
+281.75 555.25 282.75 556.75 279.5 565.25 C
+270.06 573.13 257.909 578.635 258.25 577.75 c
+f
+207.5 524.5 m
+F
+207.25 514.75 m
+207.185 514.86 228.75 497.5 238 500.75 C
+236 494.5 l
+225 498 213.924 503.454 207.25 514.75 c
+f
+1 g
+0.2 w
+191 516 m
+175.472 497.418 168.5 492 171.5 453 C
+185 443.5 189 443.5 200 450.5 C
+186.5 469.5 182 491 198.5 515.5 C
+194.5 516 191.339 516.406 191 516 c
+b
+201 515 m
+194 499 187 484 203.5 453 C
+206.5 455 211.5 460.5 212 461 C
+203.5 480.5 193.5 501.5 206 510.5 C
+205 499.5 210.5 490.5 232.5 473.5 C
+232.5 483 231.5 482.5 233 492 C
+221 498 210 505 208 512.5 C
+201 515 l
+b
+0 g
+1 G
+0.5 w
+268 442.5 m
+253.5 402.5 l
+S
+269.5 435.5 m
+258.5 407 258.5 407.5 v
+S
+0.5 G
+0.4 w
+293.5 480.5 m
+297.5 463.5 298.5 460.5 289 445.5 c
+S
+1 G
+1 J
+0.3 w
+349.125 418.125 m
+338.393 403.978 348.387 416.158 341.625 408.875 c
+S
+u
+1 g
+0 G
+0 J
+0.2 w
+336.038 340.015 m
+338.267 329.694 L
+342.937 338.843 L
+340.707 349.164 L
+336.038 340.015 L
+b
+339.487 339.429 m
+B
+U
+u
+328.791 340.569 m
+331.562 330.38 L
+335.743 339.762 L
+332.972 349.952 L
+328.791 340.569 L
+b
+332.267 340.166 m
+B
+U
+u
+321.758 340.67 m
+325.133 330.664 L
+328.746 340.28 L
+325.37 350.286 L
+321.758 340.67 L
+b
+325.252 340.475 m
+B
+U
+u
+314.504 340.97 m
+317.88 330.964 L
+321.492 340.58 L
+318.117 350.586 L
+314.504 340.97 L
+b
+317.998 340.775 m
+B
+U
+u
+u
+307.24 340.468 m
+311.982 331.033 L
+314.214 341.059 L
+309.473 350.494 L
+307.24 340.468 L
+b
+310.727 340.764 m
+B
+U
+u
+300.016 339.751 m
+304.757 330.316 L
+306.99 340.342 L
+302.249 349.777 L
+300.016 339.751 L
+b
+303.503 340.047 m
+B
+U
+U
+u
+u
+292.985 339.2 m
+298.349 330.104 L
+299.903 340.258 L
+294.54 349.353 L
+292.985 339.2 L
+b
+296.444 339.729 m
+B
+U
+u
+285.826 338 m
+291.189 328.904 L
+292.744 339.057 L
+287.38 348.153 L
+285.826 338 L
+b
+289.285 338.529 m
+B
+U
+U
+u
+278.742 336.229 m
+285.413 328.042 L
+285.423 338.314 L
+278.753 346.501 L
+278.742 336.229 L
+b
+282.083 337.272 m
+B
+U
+u
+272.228 332.392 m
+279.743 324.974 L
+278.644 335.186 L
+271.13 342.604 L
+272.228 332.392 L
+b
+275.437 333.789 m
+B
+U
+0 g
+1 G
+1 w
+266.25 335.5 m
+276.25 351.5 284.659 350 343 350 c
+364 350 363 336 y
+S
+271 321 m
+294 332 309 335 362 324 c
+S
+u
+1 g
+0 G
+0.2 w
+350.823 325.912 m
+364.33 322.302 L
+361.658 347.078 L
+348.151 350.689 L
+350.823 325.912 L
+b
+356.24 336.495 m
+B
+U
+0 g
+1 w
+274 347.5 m
+281.5 351.5 280.229 357.581 311 338 c
+316.5 334.5 322.5 338 351 357.5 C
+282 360 l
+274 347.5 l
+f
+1 G
+0.5 w
+269.25 355.75 m
+277.75 353.25 284.25 352.5 288.75 349.75 c
+S
+353.25 358.25 m
+347.25 354 345.5 353.5 339.75 349.5 c
+S
+0.3 w
+355.25 272.75 m
+359.75 281.5 361.25 285 363.25 290.75 c
+S
+0.5 G
+0.5 w
+354 219 m
+339 195 327 176 317 166 c
+S
+323 197 m
+310 150 308 135 235 48 c
+S
+1 w
+241 241.5 m
+232 227.5 215.231 198.443 215 198 c
+192.581 155 178 110 164 71 c
+S
+0 G
+0.2 w
+265.394 600.822 m
+263.576 606.114 262.122 612.994 253.035 607.173 C
+250.126 603.468 249.763 601.704 249.763 596.589 c
+249.763 591.473 254.307 592.179 257.76 587.24 c
+261.213 582.301 266.484 579.302 267.029 588.475 c
+S
+0.3 g
+260.668 605.409 m
+262.486 601.352 261.94 599.941 257.578 597.824 c
+253.216 595.707 257.76 591.473 260.305 592.355 c
+262.849 593.237 263.394 592.532 264.303 591.65 c
+265.212 590.768 266.666 591.826 264.667 594.119 c
+262.667 596.413 259.759 593.943 261.032 597.471 c
+262.304 600.999 260.668 605.409 y
+b
+0 g
+257.578 606.644 m
+254.125 605.056 251.58 604.174 251.58 598.177 c
+251.58 592.179 258.487 590.415 259.214 588.651 c
+S
+u
+1 g
+257.397 584.594 m
+258.601 581.671 262.019 580.25 265.03 581.419 c
+268.041 582.588 269.506 585.905 268.302 588.827 c
+267.097 591.75 263.679 593.172 260.668 592.003 c
+257.657 590.833 256.192 587.516 257.397 584.594 c
+b
+262.849 586.711 m
+B
+U
+u
+0.2 g
+1 w
+258.487 586.358 m
+263.213 582.477 L
+267.211 587.063 L
+262.486 590.944 L
+258.487 586.358 L
+f
+262.849 586.711 m
+F
+U
+0 g
+309.25 579.875 m
+310.75 580.5 313.25 583.125 314.625 581 c
+F
+1 g
+307.964 565.926 m
+307.88 566.015 306.794 566.513 307.22 566.682 c
+307.647 566.851 307.68 566.599 307.935 566.639 C
+307.924 566.13 307.971 566.31 307.964 565.926 c
+f
+510 104 m
+509.564 104.895 511.5 89 495.5 74.5 C
+495.5 68 l
+506 79 518.582 86.358 510 104 c
+f
+0 g
+0.2 w
+403.75 534.25 m
+413.25 533.75 415.75 534.25 417.75 534.75 c
+S
+1 G
+0.3 w
+538.5 629 m
+542 625 547.5 620 y
+S
+548.75 629.25 m
+552.25 625.25 557.75 620.25 y
+S
+0 G
+0.2 w
+518.5 587.5 m
+522.5 586 526 587.5 527 587.5 c
+S
+514 617.5 m
+518 614 518.5 611.5 520 607.5 c
+S
+528.25 613.75 m
+533.25 615.25 532.5 615.5 538.25 614.25 c
+S
+1 g
+538 637.5 m
+537.25 618 533 617.5 531.25 617.5 c
+529.5 617.5 528.235 615.255 528.5 622.5 c
+529.25 643 528.775 643.326 534.25 642.75 c
+539 642.25 539 642.25 540.5 630.75 C
+538 631 l
+538 629 538 631.25 v
+538 633.5 538 637.5 Y
+b
+0.7 g
+507.5 650.75 m
+510 648.5 510.25 645.75 511.75 643.25 c
+513.25 640.75 508.5 638.25 508.5 638 c
+508.5 637.75 507.5 650.75 y
+b
+1 g
+529.25 639.25 m
+528.5 643 527 642.75 524 642.75 c
+521 642.75 519.75 644 519.5 632.25 C
+519.75 638 519.75 641 v
+519.75 644 518.75 644.25 515.25 644.25 c
+511.75 644.25 511.75 646 509.25 641.25 c
+506.75 636.5 505.75 633.25 506 633.25 c
+506.25 633.25 509.75 628.25 Y
+511.5 620.25 512.75 619.75 515.5 619.5 c
+518.25 619.25 520.25 618.25 519.5 623.5 C
+521 618.25 521 617.75 524.75 617 c
+528.5 616.25 528.5 618.25 528.5 622.5 c
+528.5 626.75 529.25 639.25 y
+b
+507.75 636.75 m
+512.687 638.231 515.604 641 515.25 641 C
+517.839 637.469 517.494 629.281 508.75 625.5 C
+508.75 625.25 502 635 502.25 634.75 c
+502.5 634.5 507.75 636.75 y
+b
+493.5 571.5 m
+495.171 563.425 503.634 565.498 503.5 576.25 c
+503.25 596.25 515.75 586.25 509 636.75 c
+508.301 641.977 510 650.75 506.5 651.5 c
+501.514 652.568 500.436 652.26 499.25 644.75 c
+498.5 640 496.5 646.25 496 648.5 c
+495.5 650.75 493.75 651 490.75 650.25 c
+487.75 649.5 488.253 648.665 487.5 645.5 c
+486.194 640.013 486.75 641.75 484.5 645.5 c
+482.39 649.016 481.306 648.011 477.5 647.25 c
+475 646.75 474.784 644.479 475.25 640.75 c
+475.5 638.75 474 642.25 472.5 644.5 c
+471 646.75 469.25 645.5 466.5 645.5 c
+463.75 645.5 463.25 641.003 463.5 635.5 c
+463.511 635.25 463 626.25 y
+449.75 627.25 l
+459.25 618.5 465.606 612.863 468.25 597 c
+468.75 594 468 592.25 470 592.75 C
+459.719 593.497 459.195 585.398 461 586 c
+466.25 587.75 471.75 589.25 476.75 587 c
+481.75 584.75 486.25 584.25 489.5 586.25 C
+490.25 582.75 492 578.75 493.5 571.5 c
+b
+0 g
+486.25 592.5 m
+489 595.25 492.117 593.078 492.25 592.75 c
+494.972 586.028 477 591.75 467.25 593 c
+S
+0.4 w
+470 592.75 m
+474.25 595.75 475 596 481.5 595.75 c
+S
+1 J
+2.5 w
+477.75 630 m
+478.5 620.75 l
+S
+479.25 617.5 m
+480 610.5 l
+S
+480.25 607.75 m
+481 600.25 481 600.5 v
+S
+487.5 631.75 m
+487.75 623.5 l
+S
+487.75 620.75 m
+487.75 612.5 l
+S
+488 609.25 m
+488.25 609.25 487.75 602.5 y
+S
+498 630.75 m
+497.25 623.75 l
+S
+496.75 620.75 m
+495.5 612.5 l
+S
+495.25 609.5 m
+493.75 602 l
+S
+0 J
+0.2 w
+465.5 637.25 m
+464.5 629.75 461.25 628.75 464.75 617 c
+S
+0.5 w
+502 589.25 m
+503.25 585 503.5 583.25 503.5 577 c
+S
+1 g
+1 w
+521.949 86.694 m
+521.637 87.353 523.021 75.657 511.583 64.988 C
+511.583 60.205 l
+519.089 68.299 528.083 73.713 521.949 86.694 c
+f
+553.457 99.673 m
+553.091 100.449 554.713 86.67 541.309 74.1 C
+541.309 68.465 l
+550.105 78.001 560.646 84.379 553.457 99.673 c
+f
+482.74 95.04 m
+482.429 95.699 483.812 84.003 472.375 73.334 C
+472.375 68.551 l
+479.881 76.645 488.875 82.059 482.74 95.04 c
+f
+450.924 87.63 m
+450.69 88.028 451.731 80.968 443.129 74.528 C
+443.129 71.641 l
+448.774 76.527 455.538 79.795 450.924 87.63 c
+f
+0 g
+308 61.5 m
+N
+3 w
+16.002 40.373 m
+568.002 40.127 L
+567.748 716.565 L
+S
+u
+15.815 40.248 m
+567.815 40.002 L
+567.748 716.565 L
+15.998 716.81 L
+15.815 40.248 L
+s
+U
+%%Trailer
+_E end
+showpage
+golfersave restore
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/grayalph.ps b/Master/xemtex/doc/ghostscript/examples/grayalph.ps
new file mode 100644
index 00000000000..fffb5f6a2a1
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/grayalph.ps
@@ -0,0 +1,65 @@
+%!
+% grayscaled text test, including a trivial user bitmap font
+
+/grayalphsave save def % prevent left over effects
+
+/inch {72 mul} def
+
+/BuildCharDict 10 dict def
+/$ExampleFont 7 dict def
+$ExampleFont begin
+ /FontType 3 def % user defined font.
+ /FontMatrix [1 0 0 1 0 0] def
+ /FontBBox [0 0 1 1] def
+ /Encoding 256 array def
+ 0 1 255 {Encoding exch /.notdef put} for
+ Encoding (a) 0 get /plus put
+ /CharStrings 2 dict def
+ CharStrings /.notdef {} put
+ CharStrings /plus
+ { gsave
+ 0 0 moveto
+ 32 32 true [32 0 0 -32 0 32]
+ {<0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000
+ 0007E000 0007E000 0007E000 0007E000 0007E000 FFFFFFFF FFFFFFFF FFFFFFFF
+ FFFFFFFF FFFFFFFF FFFFFFFF 0007E000 0007E000 0007E000 0007E000 0007E000
+ 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000>
+ } imagemask
+ grestore
+ } put
+ /BuildChar
+ { BuildCharDict begin
+ /char exch def
+ /fontdict exch def
+ /charproc
+ fontdict /Encoding get char get
+ fontdict /CharStrings get
+ exch get def
+ 1 0 0 0 1 1 setcachedevice
+ charproc
+ end
+ } def
+end
+
+/MyFont $ExampleFont definefont pop
+
+ newpath
+ .5 inch 7.5 inch moveto
+ 7.5 inch 0 rlineto
+ 0 1.5 inch rlineto
+ -7.5 inch 0 rlineto
+ closepath
+ 0 setgray
+ fill
+
+ /MyFont findfont 72 scalefont setfont
+ .75 inch 7.75 inch moveto
+ 0 1 6
+ { /n exch def
+ 1 n 6 div sub setgray
+ (a) show
+ } for
+
+showpage
+clear cleardictstack
+grayalphsave restore
diff --git a/Master/xemtex/doc/ghostscript/examples/ridt91.eps b/Master/xemtex/doc/ghostscript/examples/ridt91.eps
new file mode 100644
index 00000000000..1de3c14f29c
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/ridt91.eps
@@ -0,0 +1,135 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 380 200
+%%Creator: karl@cs.umb.edu from code by Roger Hersch
+%%CreationDate: 8 March 1991
+%%Title: RIDT logo
+
+% Forget everything we do.
+save
+
+% Make definitions in our own dictionary.
+20 dict begin
+
+% However, this isn't quite a true EPS file, because we use the
+% setscreen operator, which has device- and document-dependent effects.
+% In particular, if the document is being printed in landscape mode, we
+% have to rotate the cell by 90 degrees. The dvips translator sets the
+% variable `isls' to be true in landscape mode, so we test for that.
+%
+/screen_angle
+ /isls where
+ { /isls get { 90 } { 0 } ifelse }
+ { 0 }
+ ifelse
+def
+
+
+% Increasing this number makes the screen finer (it isn't the actual
+% frequency).
+%
+/screen_frequency 10 def
+
+
+% If you change these numbers, change the bounding box comment above.
+% This default size is approximately 134mm by 71mm.
+/logo_width 380 def
+/logo_height 200 def
+
+% Besides changing the size from the outside, you can also change the
+% scale factor defined here. Of course then the bounding box won't be
+% accurate.
+/scalefactor 1 def
+
+% We need a string to hold the gray values.
+/fountainstring 256 string def
+
+% Put values varying from 0 to 255 into the string; these will be values
+% for the image operator.
+0 1 255
+ {
+ fountainstring exch dup
+ 255 div 180 mul cos neg 2 div
+ .5 add 255 mul cvi
+ put
+ }
+bind for
+
+
+% This procedure takes the bounding box of a rectangle, and images
+% /fountainstring into it.
+/fountain
+ {
+ /ury exch def
+ /urx exch def
+ /lly exch def
+ /llx exch def
+ gsave
+ llx lly translate
+
+ % Scale to the size of the rectangle.
+ urx llx sub ury lly sub scale
+
+ % The source image has one row of 256 8-bit values.
+ 1 256 8
+
+ % Map unit square to source.
+ [1 0 0 -256 0 256]
+
+ % Image the string.
+ { fountainstring } image
+ grestore
+ }
+bind def
+
+
+% Draw a line across the bottom for visual anchoring.
+%
+0 0 moveto
+logo_width 0 lineto stroke
+
+ screen_frequency scalefactor div
+ screen_angle
+ { exch pop abs 1 exch sub } bind
+setscreen
+
+scalefactor scalefactor scale
+
+/Palatino-Roman findfont 100 scalefont setfont
+
+% Determine the dimensions of our string.
+/logo_words (RIDT 91) def
+
+0 0 moveto
+logo_words true charpath flattenpath pathbbox
+/word_height exch def
+/word_width exch def
+pop pop % llx and lly are zero.
+newpath
+
+/x_offset logo_width word_width sub 2 div def
+/y_offset 15 def
+
+% Draw the background pattern, which is dark at the top and light at the
+% bottom.
+%
+0 0 logo_width logo_height fountain
+
+% Make the clipping path be `RIDT 91', twice.
+x_offset y_offset moveto
+logo_words true charpath
+x_offset logo_height y_offset word_height add sub moveto
+logo_words true charpath
+clip
+newpath
+
+% Paint the pattern again, this time with light at the top and dark at
+% the bottom.
+%
+logo_width logo_height translate
+180 rotate
+0 0 logo_width logo_height fountain
+
+end
+restore
+
+% showpage
diff --git a/Master/xemtex/doc/ghostscript/examples/snowflak.ps b/Master/xemtex/doc/ghostscript/examples/snowflak.ps
new file mode 100644
index 00000000000..8ebdf0adc8a
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/snowflak.ps
@@ -0,0 +1,93 @@
+%!
+%% Elizabeth D. Zwicky
+%% zwicky@erg.sri.com
+%% multiflake
+
+/snowflaksave save def % prevent left over effects
+/newflake
+{/seed usertime def
+seed srand
+/strokecolor [rand 99 mod 100 div
+ rand 99 mod 100 div
+ 100 rand 22 mod sub 100 div] def
+/fillcolor [rand 99 mod 100 div
+ 100 rand 22 mod sub 100 div
+ rand 99 mod 100 div] def
+/eofillcolor [rand 99 mod 100 div
+ rand 22 mod 100 div
+ 100 rand 22 mod sub 100 div] def
+
+/colorfill {fillcolor aload pop setrgbcolor fill } def
+/colorstroke {strokecolor aload pop setrgbcolor stroke } def
+/eocolorfill {eofillcolor aload pop setrgbcolor eofill } def
+/arm {0 0 moveto
+ 5 {3 {x y x y x y curveto} repeat} repeat
+ seed srand
+ 0 0 moveto
+ 5 {3 {x neg y x neg y x neg y curveto} repeat} repeat
+ seed srand
+} def
+
+ newpath
+
+0 0 moveto boxsize 0 rlineto 0 boxsize rlineto boxsize neg 0 rlineto
+0 0 lineto
+
+rand 99 mod 100 div
+100 rand 22 mod sub 100 div
+100 rand 22 mod sub 100 div
+ sethsbcolor fill
+seed srand
+boxsize 2 div boxsize 2 div translate
+
+%% If the device you are using can handle complex fills, replace the
+%% next three lines with:
+%%
+6 {arm 60 rotate} repeat
+gsave colorfill grestore gsave eocolorfill grestore colorstroke
+%%
+%% This will be not only faster, but prettier. On a LaserWriter or a
+%% Tektronix Phaser II PS it gives a limitcheck.
+
+%% 6 {arm 60 rotate colorfill} repeat
+%% 6 {arm 60 rotate eocolorfill} repeat
+%% 6 {arm 60 rotate} repeat colorstroke
+} def
+
+1 setlinewidth
+clippath pathbbox /ury exch def /urx exch def /lly exch def /llx exch def
+/minsize 250 def
+/pagewidth urx llx sub def
+/pageheight ury lly sub def
+/inwidth pagewidth minsize div def
+/inheight pageheight minsize div def
+
+/boxsize
+ inwidth inheight gt
+ {pagewidth inwidth truncate div}
+ {pageheight inheight truncate div}
+ ifelse
+def
+
+/inwidth pagewidth boxsize div cvi def
+/inheight pageheight boxsize div cvi def
+
+/x {rand 70 mod abs} def
+/y {rand 120 mod abs} def
+
+llx lly translate
+
+inheight {
+ inwidth {
+ gsave
+ newflake
+ grestore
+ boxsize 0 translate
+ } repeat
+ boxsize inwidth mul neg boxsize translate
+} repeat
+
+
+showpage
+clear cleardictstack
+snowflaksave restore
diff --git a/Master/xemtex/doc/ghostscript/examples/tiger.ps b/Master/xemtex/doc/ghostscript/examples/tiger.ps
new file mode 100644
index 00000000000..ea887726051
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/tiger.ps
@@ -0,0 +1,2737 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: Adobe Illustrator(TM) 1.2d4
+%%For: OpenWindows Version 2
+%%Title: tiger.eps
+%%CreationDate: 4/12/90 3:20 AM
+%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0
+%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0
+%%BoundingBox: 17 171 567 739
+%%EndComments
+/tigersave save def % prevent residual side effects
+
+%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0
+
+/Adobe_Illustrator_1.2d1 dup 100 dict def load begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bdef
+/xdef {exch def} bdef
+% graphic state operators
+/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef
+/_k /setcmybcolor where {
+ /setcmybcolor get
+} {
+ { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind
+} ifelse def
+/g {/_b xdef /p {_b setgray} def} bdef
+/G {/_B xdef /P {_B setgray} def} bdef
+/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef
+/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef
+/d /setdash ldef
+/_i currentflat def
+/i {dup 0 eq {pop _i} if setflat} bdef
+/j /setlinejoin ldef
+/J /setlinecap ldef
+/M /setmiterlimit ldef
+/w /setlinewidth ldef
+% path construction operators
+/_R {.25 sub round .25 add} bdef
+/_r {transform _R exch _R exch itransform} bdef
+/c {_r curveto} bdef
+/C /c ldef
+/v {currentpoint 6 2 roll _r curveto} bdef
+/V /v ldef
+/y {_r 2 copy curveto} bdef
+/Y /y ldef
+/l {_r lineto} bdef
+/L /l ldef
+/m {_r moveto} bdef
+% path painting operators
+/n /newpath ldef
+/N /n ldef
+/F {p fill} bdef
+/f {closepath F} bdef
+/S {P stroke} bdef
+/s {closepath S} bdef
+/B {gsave F grestore S} bdef
+/b {closepath B} bdef
+end
+%%EndProcSet
+%%EndProlog
+
+%%Page: 1 1
+
+Adobe_Illustrator_1.2d1 begin
+
+.8 setgray
+clippath fill
+-110 -300 translate
+1.1 dup scale
+
+0 g
+0 G
+0 i
+0 J
+0 j
+0.172 w
+10 M
+[]0 d
+0 0 0 0 k
+
+177.696 715.715 m
+177.797 713.821 176.973 713.84 v
+176.149 713.859 159.695 761.934 139.167 759.691 C
+156.95 767.044 177.696 715.715 V
+b
+181.226 718.738 m
+180.677 716.922 179.908 717.221 v
+179.14 717.519 180.023 768.325 159.957 773.199 C
+179.18 774.063 181.226 718.738 V
+b
+208.716 676.41 m
+210.352 675.45 209.882 674.773 v
+209.411 674.096 160.237 686.898 150.782 668.541 C
+154.461 687.428 208.716 676.41 V
+b
+205.907 666.199 m
+207.763 665.803 207.529 665.012 v
+207.296 664.221 156.593 660.879 153.403 640.478 C
+150.945 659.563 205.907 666.199 V
+b
+201.696 671.724 m
+203.474 671.061 203.128 670.313 v
+202.782 669.565 152.134 673.654 146.002 653.936 C
+146.354 673.175 201.696 671.724 V
+b
+190.991 689.928 m
+192.299 688.554 191.66 688.033 v
+191.021 687.512 147.278 713.366 133.131 698.324 C
+141.872 715.467 190.991 689.928 V
+b
+183.446 685.737 m
+184.902 684.52 184.326 683.929 v
+183.75 683.339 137.362 704.078 125.008 687.531 C
+131.753 705.553 183.446 685.737 V
+b
+180.846 681.665 m
+182.454 680.657 181.964 679.994 v
+181.474 679.331 132.692 693.554 122.709 675.478 C
+126.934 694.251 180.846 681.665 V
+b
+191.58 681.051 m
+192.702 679.52 192.001 679.085 v
+191.3 678.65 151.231 709.898 135.273 696.793 C
+146.138 712.674 191.58 681.051 V
+b
+171.8 710 m
+172.4 708.2 171.6 708 v
+170.8 707.8 142.2 749.8 122.999 742.2 C
+138.2 754 171.8 710 V
+b
+172.495 703.021 m
+173.47 701.392 172.731 701.025 v
+171.993 700.657 135.008 735.501 117.899 723.939 C
+130.196 738.739 172.495 703.021 V
+b
+172.38 698.651 m
+173.502 697.12 172.801 696.685 v
+172.1 696.251 132.031 727.498 116.073 714.393 C
+126.938 730.274 172.38 698.651 V
+b
+0 J 1 w
+170.17 696.935 m
+170.673 690.887 171.661 684.318 173.4 681.199 C
+169.8 668.799 178.6 655.599 V
+178.2 648.399 179.8 645.199 V
+183.8 636.799 188.6 635.999 v
+192.484 635.352 201.207 632.283 211.068 630.879 c
+228.2 616.799 225 603.999 V
+224.6 587.599 221 585.999 V
+232.6 597.199 223 580.399 V
+218.6 561.599 l
+244.2 583.199 228.6 564.799 V
+218.6 538.799 l
+238.2 557.199 231 548.799 V
+227.8 539.999 l
+271 567.199 240.2 537.599 V
+248.2 541.199 252.6 538.399 V
+259.4 539.599 258.6 537.999 V
+237.8 527.599 234.2 509.199 V
+242.6 519.199 239.4 508.399 V
+239.8 496.799 l
+243.8 518.399 243.4 480.799 V
+262.6 498.799 251 477.999 V
+251 461.199 l
+266.2 477.599 259.8 464.799 V
+269.8 473.599 265.8 458.399 V
+265 447.999 269.4 459.199 V
+285.4 489.799 279.4 463.599 V
+278.6 444.399 283.4 459.199 V
+283.8 448.799 293 441.599 V
+291.8 492.399 304.6 456.399 V
+308.6 439.999 l
+311.4 449.199 311 454.399 V
+325.8 470.799 319 446.399 V
+334.2 469.199 331 455.999 V
+323.4 439.999 325 435.199 V
+341.8 469.999 343 471.599 V
+341 429.198 351.8 465.199 V
+357.4 453.199 354.6 448.799 V
+362.6 456.799 361.8 459.999 V
+366.4 468.199 369.2 454.599 V
+371 445.199 372.6 448.399 V
+376.6 424.398 377.8 447.199 V
+379.4 460.799 372.2 472.399 V
+373 475.599 370.2 479.599 v
+383.8 457.999 376.6 486.799 V
+387.801 478.799 389.001 478.799 V
+375.4 501.999 384.2 497.199 V
+379 507.599 397.001 495.599 V
+381 511.599 398.601 501.999 V
+406.601 495.599 399.001 505.599 V
+384.6 521.599 406.601 503.599 V
+418.201 487.199 419.001 484.399 V
+409.001 513.599 404.601 516.399 V
+413.001 552.799 454.201 537.199 V
+461.001 519.999 465.401 538.399 V
+478.201 544.799 489.401 517.199 V
+493.401 530.799 492.601 533.599 V
+499.401 532.399 498.601 533.599 V
+511.801 529.199 513.001 529.999 V
+519.801 523.199 520.201 526.799 V
+529.401 523.999 527.401 527.599 V
+536.201 511.999 536.601 508.399 V
+539.001 522.399 l
+541.001 519.599 l
+542.601 527.199 541.801 528.399 v
+541.001 529.599 561.801 521.599 566.601 500.799 C
+568.601 492.399 l
+574.601 507.199 573.001 511.199 V
+578.201 510.399 578.601 505.999 V
+582.601 529.199 577.801 535.199 V
+582.201 535.999 583.401 532.399 V
+583.401 539.599 l
+590.601 538.799 590.601 541.199 V
+595.001 545.199 597.001 540.399 V
+584.601 575.599 603.001 556.399 V
+610.201 545.599 606.601 564.399 v
+603.001 583.199 599.001 584.799 603.801 585.199 C
+604.601 588.799 602.601 590.399 v
+600.601 591.999 603.801 590.399 y
+608.601 586.399 603.401 608.399 V
+609.801 606.799 597.801 635.999 V
+600.601 638.399 596.601 646.799 V
+604.601 642.399 607.401 643.999 V
+607.001 645.599 603.801 649.599 V
+582.201 704.4 602.601 682.399 V
+614.451 668.849 608.051 691.649 V
+598.94 715.659 599.717 719.955 V
+170.17 696.935 l
+b
+0.2 0.55 0.85 0 k
+599.717 719.755 m
+600.345 719.574 602.551 718.45 603.801 716.8 C
+610.601 706 605.401 724.4 V
+596.201 753.2 605.001 742 V
+611.001 734.8 607.801 748.4 v
+603.936 764.827 601.401 771.2 y
+613.001 766.4 586.201 806 V
+595.001 802.4 l
+575.401 842 553.801 847.2 V
+545.801 853.2 l
+584.201 891.2 571.401 928 V
+564.601 933.2 555.001 924 V
+548.601 919.2 542.601 920.8 V
+511.801 919.6 509.801 919.6 v
+507.801 919.6 473.001 956.8 407.401 939.2 C
+402.201 937.2 397.801 938.4 V
+379.4 954.4 330.6 931.6 v
+320.6 929.6 319 929.6 v
+317.4 929.6 314.6 929.6 306.6 923.2 c
+298.6 916.8 298.2 916 296.2 914.4 C
+279.8 903.2 275 902.4 V
+263.4 896 259 886 V
+255.4 884.8 l
+253.8 877.6 253.4 876.4 V
+248.6 872.8 247.8 867.2 V
+239 861.2 239.4 856.8 V
+237.8 851.6 237 846.8 V
+229.8 842 230.6 839.2 V
+223 825.2 224.2 818.4 V
+217.8 818.8 215 816.4 V
+214.2 811.6 212.6 811.2 V
+209.8 810 212.2 806 V
+210.6 803.2 210.2 801.6 V
+211 798.8 206.6 793.2 V
+200.2 774.4 202.2 769.2 V
+202.6 764.4 199.8 762.8 V
+196.2 763.2 204.6 751.2 V
+205.4 750 202.2 747.6 V
+185 744 182.6 727.6 V
+169 712.8 169 707.6 v
+169 705.295 169.271 702.148 169.97 697.535 C
+169.4 689.199 197 688.399 v
+224.6 687.599 599.717 719.755 Y
+b
+184.4 697.4 m
+159.4 736.8 173.8 680.399 Y
+182.6 645.999 312.2 683.599 y
+481.001 714 492.201 718 v
+503.401 722 598.601 715.6 y
+593.001 732.4 L
+528.201 778.8 509.001 755.6 495.401 759.6 c
+481.801 763.6 484.201 754 481.001 753.2 c
+477.801 752.4 438.601 777.2 432.201 776.4 c
+425.801 775.6 400.459 799.351 415.401 767.6 c
+431.401 733.6 357 728.4 340.2 739.6 c
+323.4 750.8 347.4 721.2 Y
+365.8 701.2 331.4 718 y
+297 730.8 273 705.2 269.8 704.4 c
+266.6 703.6 261.8 700.4 261 706.8 c
+260.2 713.2 252.69 729.901 221 703.6 c
+201 686.999 187.2 709 Y
+184.4 697.4 L
+f
+0.09 0.5 0.772 0 k
+433.51 774.654 m
+427.11 773.854 401.743 797.593 416.71 765.854 c
+433.31 730.654 358.31 726.654 341.51 737.854 c
+324.709 749.054 348.71 719.454 Y
+367.11 699.454 332.709 716.254 y
+298.309 729.054 274.309 703.454 271.109 702.654 c
+267.909 701.854 263.109 698.654 262.309 705.054 c
+261.509 711.454 254.13 727.988 222.309 701.854 c
+201.073 684.508 187.582 705.963 Y
+184.382 695.854 L
+159.382 735.654 174.454 677.345 Y
+183.255 642.944 313.509 681.854 y
+482.31 712.254 493.51 716.254 v
+504.71 720.254 599.038 713.927 y
+593.51 731.236 L
+528.71 777.636 510.31 753.854 496.71 757.854 c
+483.11 761.854 485.51 752.254 482.31 751.454 c
+479.11 750.654 439.91 775.454 433.51 774.654 c
+f
+0.081 0.45 0.695 0 k
+434.819 772.909 m
+428.419 772.109 403.685 796.138 418.019 764.109 c
+434.219 727.908 359.619 724.908 342.819 736.108 c
+326.019 747.308 350.019 717.708 Y
+368.419 697.708 334.019 714.508 y
+299.619 727.308 275.618 701.708 272.418 700.908 c
+269.218 700.108 264.418 696.908 263.618 703.308 c
+262.818 709.708 255.57 726.075 223.618 700.108 c
+201.145 682.017 187.964 702.926 Y
+184.364 694.308 L
+160.564 733.308 175.109 674.29 Y
+183.909 639.89 314.819 680.108 y
+483.619 710.508 494.819 714.508 v
+506.019 718.508 599.474 712.254 y
+594.02 730.072 L
+529.219 776.472 511.619 752.109 498.019 756.109 c
+484.419 760.109 486.819 750.509 483.619 749.708 c
+480.419 748.908 441.219 773.709 434.819 772.909 c
+f
+0.072 0.4 0.618 0 k
+436.128 771.163 m
+429.728 770.363 404.999 794.395 419.328 762.363 c
+436.128 724.807 360.394 723.518 344.128 734.363 c
+327.328 745.563 351.328 715.963 Y
+369.728 695.963 335.328 712.763 y
+300.928 725.563 276.928 699.963 273.728 699.163 c
+270.528 698.363 265.728 695.163 264.928 701.563 c
+264.128 707.963 257.011 724.161 224.927 698.363 c
+201.218 679.526 188.345 699.89 Y
+184.345 692.763 L
+162.545 729.563 175.764 671.235 Y
+184.564 636.835 316.128 678.363 y
+484.928 708.763 496.129 712.763 v
+507.329 716.763 599.911 710.581 y
+594.529 728.908 L
+529.729 775.309 512.929 750.363 499.329 754.363 c
+485.728 758.363 488.128 748.763 484.928 747.963 c
+481.728 747.163 442.528 771.963 436.128 771.163 c
+f
+0.063 0.35 0.54 0 k
+437.438 769.417 m
+431.037 768.617 406.814 792.871 420.637 760.617 c
+437.438 721.417 362.237 721.417 345.437 732.617 c
+328.637 743.817 352.637 714.217 Y
+371.037 694.217 336.637 711.017 y
+302.237 723.817 278.237 698.217 275.037 697.417 c
+271.837 696.617 267.037 693.417 266.237 699.817 c
+265.437 706.217 258.452 722.248 226.237 696.617 c
+201.291 677.035 188.727 696.854 Y
+184.327 691.217 L
+164.527 726.018 176.418 668.181 Y
+185.218 633.78 317.437 676.617 y
+486.238 707.017 497.438 711.017 v
+508.638 715.017 600.347 708.908 y
+595.038 727.745 L
+530.238 774.145 514.238 748.617 500.638 752.617 c
+487.038 756.617 489.438 747.017 486.238 746.217 c
+483.038 745.417 443.838 770.217 437.438 769.417 c
+f
+0.054 0.3 0.463 0 k
+438.747 767.672 m
+432.347 766.872 406.383 790.323 421.947 758.872 c
+441.147 720.072 363.546 719.672 346.746 730.872 c
+329.946 742.072 353.946 712.472 Y
+372.346 692.472 337.946 709.272 y
+303.546 722.072 279.546 696.472 276.346 695.672 c
+273.146 694.872 268.346 691.672 267.546 698.072 c
+266.746 704.472 259.892 720.335 227.546 694.872 c
+201.364 674.544 189.109 693.817 Y
+184.309 689.672 L
+166.309 722.872 177.073 665.126 Y
+185.873 630.726 318.746 674.872 y
+487.547 705.272 498.747 709.272 v
+509.947 713.272 600.783 707.236 y
+595.547 726.581 L
+530.747 772.981 515.547 746.872 501.947 750.872 c
+488.347 754.872 490.747 745.272 487.547 744.472 c
+484.347 743.672 445.147 768.472 438.747 767.672 c
+f
+0.045 0.25 0.386 0 k
+440.056 765.927 m
+433.655 765.127 407.313 788.387 423.255 757.127 c
+443.656 717.126 364.855 717.926 348.055 729.126 c
+331.255 740.326 355.255 710.726 Y
+373.655 690.726 339.255 707.526 y
+304.855 720.326 280.855 694.726 277.655 693.926 c
+274.455 693.126 269.655 689.926 268.855 696.326 c
+268.055 702.726 261.332 718.422 228.855 693.126 c
+201.436 672.053 189.491 690.781 Y
+184.291 688.126 L
+168.291 718.326 177.727 662.071 Y
+186.527 627.671 320.055 673.126 y
+488.856 703.526 500.056 707.526 v
+511.256 711.526 601.22 705.563 y
+596.056 725.417 L
+531.256 771.817 516.856 745.126 503.256 749.126 c
+489.656 753.127 492.056 743.526 488.856 742.726 c
+485.656 741.926 446.456 766.727 440.056 765.927 c
+f
+0.036 0.2 0.309 0 k
+441.365 764.181 m
+434.965 763.381 407.523 786.056 424.565 755.381 c
+446.565 715.781 366.164 716.181 349.364 727.381 c
+332.564 738.581 356.564 708.981 Y
+374.964 688.981 340.564 705.781 y
+306.164 718.581 282.164 692.981 278.964 692.181 c
+275.764 691.381 270.964 688.181 270.164 694.581 c
+269.364 700.981 262.773 716.508 230.164 691.381 c
+201.509 669.562 189.873 687.744 Y
+184.273 686.581 L
+169.872 714.981 178.382 659.017 Y
+187.182 624.616 321.364 671.381 y
+490.165 701.781 501.365 705.781 v
+512.565 709.781 601.656 703.89 y
+596.565 724.254 L
+531.765 770.654 518.165 743.381 504.565 747.381 c
+490.965 751.381 493.365 741.781 490.165 740.981 c
+486.965 740.181 447.765 764.981 441.365 764.181 c
+f
+0.027 0.15 0.231 0 k
+442.674 762.435 m
+436.274 761.635 408.832 784.311 425.874 753.635 c
+447.874 714.035 367.474 714.435 350.674 725.635 c
+333.874 736.835 357.874 707.235 Y
+376.274 687.235 341.874 704.035 y
+307.473 716.835 283.473 691.235 280.273 690.435 c
+277.073 689.635 272.273 686.435 271.473 692.835 c
+270.673 699.235 264.214 714.595 231.473 689.635 c
+201.582 667.071 190.255 684.707 Y
+184.255 685.035 L
+170.654 711.436 179.037 655.962 Y
+187.837 621.562 322.673 669.635 y
+491.474 700.035 502.674 704.035 v
+513.874 708.035 602.093 702.217 y
+597.075 723.09 L
+532.274 769.49 519.474 741.635 505.874 745.635 c
+492.274 749.635 494.674 740.035 491.474 739.235 c
+488.274 738.435 449.074 763.235 442.674 762.435 c
+f
+0.018 0.1 0.154 0 k
+443.983 760.69 m
+437.583 759.89 410.529 782.777 427.183 751.89 c
+449.183 711.09 368.783 712.69 351.983 723.89 c
+335.183 735.09 359.183 705.49 Y
+377.583 685.49 343.183 702.29 y
+308.783 715.09 284.783 689.49 281.583 688.69 c
+278.382 687.89 273.582 684.69 272.782 691.09 c
+271.982 697.49 265.654 712.682 232.782 687.89 c
+201.655 664.58 190.637 681.671 Y
+184.236 683.49 L
+171.236 707.49 179.691 652.907 Y
+188.491 618.507 323.983 667.89 y
+492.783 698.29 503.983 702.29 v
+515.183 706.29 602.529 700.544 y
+597.583 721.926 L
+532.783 768.327 520.783 739.89 507.183 743.89 c
+493.583 747.89 495.983 738.29 492.783 737.49 c
+489.583 736.69 450.383 761.49 443.983 760.69 c
+f
+0.009 0.05 0.077 0 k
+445.292 758.945 m
+438.892 758.145 412.917 781.589 428.492 750.145 c
+449.692 707.344 370.092 710.944 353.292 722.144 c
+336.492 733.344 360.492 703.744 Y
+378.892 683.744 344.492 700.544 y
+310.092 713.344 286.092 687.744 282.892 686.944 c
+279.692 686.144 274.892 682.944 274.092 689.344 c
+273.292 695.744 267.095 710.768 234.092 686.144 c
+201.727 662.089 191.018 678.635 Y
+184.218 681.944 L
+171.418 705.144 180.346 649.853 Y
+189.146 615.453 325.292 666.144 y
+494.093 696.544 505.293 700.544 v
+516.493 704.544 602.965 698.872 y
+598.093 720.763 L
+533.292 767.163 522.093 738.144 508.493 742.144 c
+494.893 746.145 497.293 736.544 494.093 735.744 c
+490.892 734.944 451.692 759.745 445.292 758.945 c
+f
+1 g
+184.2 680.399 m
+171.4 702.4 181 646.799 Y
+189.8 612.399 326.6 664.399 y
+495.401 694.8 506.601 698.8 v
+517.801 702.8 603.401 697.2 y
+598.601 719.6 L
+533.801 766 523.401 736.4 509.801 740.4 c
+496.201 744.4 498.601 734.8 495.401 734 c
+492.201 733.2 453.001 758 446.601 757.2 c
+440.201 756.4 414.981 780.207 429.801 748.4 c
+452.028 700.693 369.041 710.773 354.6 720.4 c
+337.8 731.6 361.8 702 Y
+380.2 681.999 345.8 698.8 y
+311.4 711.6 287.4 685.999 284.2 685.199 c
+281 684.399 276.2 681.199 275.4 687.599 c
+274.6 694 268.535 708.856 235.4 684.399 c
+201.8 659.599 191.4 675.599 Y
+184.2 680.399 L
+f
+0 g
+225.8 650.399 m
+218.6 638.799 239.4 625.599 V
+240.8 624.199 222.8 628.399 V
+216.6 630.399 215 640.799 V
+210.2 645.199 205.4 650.799 v
+200.6 656.399 225.8 650.399 y
+f
+0.8 g
+365.8 698 m
+383.498 671.179 382.9 666.399 v
+381.6 655.999 381.4 646.399 384.6 642.399 c
+387.801 638.399 396.601 605.199 y
+396.201 603.999 408.601 641.999 V
+420.201 657.999 400.201 676.399 V
+365 705.2 365.8 698 v
+f
+0 g
+1 J 0.1 w
+245.8 623.599 m
+257 616.399 242.6 585.199 V
+249 587.599 l
+248.2 576.399 245 573.999 V
+252.2 577.199 l
+257 569.199 253 564.399 V
+269.8 556.399 269 549.999 V
+275.4 557.999 271.4 564.399 v
+267.4 570.799 260.2 566.799 261 585.199 C
+252.2 581.999 l
+257.8 590.799 257.8 597.199 V
+249.8 594.799 l
+265.269 621.377 254.6 622.799 v
+248.6 623.599 245.8 623.599 Y
+f
+0.8 g
+278.2 606.799 m
+281 611.199 278.2 610.399 v
+275.4 609.599 244.2 594.799 238.2 585.199 C
+272.6 609.599 278.2 606.799 V
+f
+288.6 598.799 m
+291.4 603.199 288.6 602.399 v
+285.8 601.599 254.6 586.799 248.6 577.199 C
+283 601.599 288.6 598.799 V
+f
+301.8 613.999 m
+304.6 618.399 301.8 617.599 v
+299 616.799 267.8 601.999 261.8 592.399 C
+296.2 616.799 301.8 613.999 V
+f
+278.6 570.399 m
+278.6 576.399 275.8 575.599 v
+273 574.799 237 557.199 231 547.599 C
+273 573.199 278.6 570.399 V
+f
+279.8 581.199 m
+281 585.999 278.2 585.199 V
+276.2 585.199 249.8 573.599 243.8 563.999 C
+273.4 585.599 279.8 581.199 V
+f
+265.4 533.599 m
+255.4 525.999 l
+265.8 533.599 269.4 532.399 V
+262.6 521.199 261.8 515.999 V
+272.2 528.799 277.8 528.399 V
+285.4 527.999 285.4 517.199 V
+291 527.599 294.2 527.199 V
+295.4 520.799 294.2 513.999 V
+298.2 521.599 302.2 519.999 V
+308.6 521.999 307.8 510.399 V
+307.8 499.999 307 497.199 V
+312.6 523.599 315 523.999 V
+323 525.199 327.8 516.399 V
+323.8 523.999 328.6 521.999 V
+339.4 520.399 342.6 513.599 V
+335.8 525.599 341.4 522.399 V
+348.2 522.399 349.4 515.999 V
+357.8 494.799 359.8 493.199 V
+352.2 514.799 353.8 514.799 V
+351.8 526.799 357 511.999 V
+353.8 525.999 359.4 525.199 v
+365 524.399 369.4 514.399 377.8 516.799 C
+387.401 511.199 389.401 580.399 V
+265.4 533.599 L
+f
+0 g
+0 J 1 w
+270.2 626.399 m
+285 632.399 325 626.399 V
+332.2 625.999 339 634.799 v
+345.8 643.599 372.6 650.799 379 648.799 C
+388.601 642.399 l
+389.401 641.199 l
+401.801 630.799 402.201 623.199 v
+402.601 615.599 387.801 567.599 378.2 551.599 c
+368.6 535.599 359 523.199 339.8 525.599 C
+319 529.599 293.4 525.599 v
+264.2 527.199 261.4 535.199 v
+258.6 543.199 272.6 558.399 y
+277 566.799 275.8 581.199 v
+274.6 595.599 275 623.599 270.2 626.399 c
+f
+0.1 0.6 0.45 0 k
+292.2 624.399 m
+300.6 605.999 271 540.799 y
+269 539.199 283.66 533.154 293.8 535.599 c
+304.746 538.237 345 533.999 Y
+368.6 549.599 381.4 593.999 y
+391.801 617.999 374.2 621.199 v
+356.6 624.399 292.2 624.399 y
+f
+0.1 0.6 0.45 0.2 k
+290.169 593.503 m
+293.495 606.293 295.079 618.094 292.2 624.399 c
+354.6 617.999 365.8 638.799 v
+370.041 646.674 384.801 615.999 384.4 606.399 c
+321.4 591.999 306.6 603.199 V
+290.169 593.503 L
+f
+0.1 0.6 0.45 0.25 k
+294.6 577.199 m
+296.6 569.999 294.2 565.999 V
+292.6 565.199 291.4 564.799 V
+292.6 561.199 298.6 559.599 V
+300.6 555.199 303 554.799 v
+305.4 554.399 310.2 548.799 314.2 549.999 c
+318.2 551.199 329.4 555.199 y
+335 558.399 343.8 554.799 V
+346.175 555.601 346.6 559.599 v
+347.1 564.299 350.2 567.999 352.2 569.999 c
+354.2 571.999 363.8 584.799 362.6 585.199 c
+361.4 585.599 294.6 577.199 Y
+f
+0 0.55 0.5 0 k
+290.2 625.599 m
+287.4 603.199 290.6 594.799 v
+293.8 586.399 293 584.399 292.2 580.399 c
+291.4 576.399 295.8 566.399 301.4 560.399 C
+313.4 558.799 l
+328.6 562.399 337.8 559.599 V
+346.794 558.256 350.2 573.199 V
+355 579.599 362.2 582.399 v
+369.4 585.199 376.6 626.799 372.6 634.799 c
+368.6 642.799 354.2 647.199 338.2 631.599 c
+322.2 615.999 320.2 632.799 290.2 625.599 C
+b
+0 0 0.2 0 k
+0.5 w
+291.8 550.799 m
+291 552.799 286.6 553.199 V
+264.2 556.799 255.8 569.199 V
+249 574.799 253.4 563.199 V
+263.8 542.799 270.6 539.999 V
+287 535.999 291.8 550.799 V
+b
+0 0.55 0.5 0.2 k
+1 w
+371.742 614.771 m
+372.401 622.677 374.354 631.291 372.6 634.799 c
+366.154 647.693 349.181 642.305 338.2 631.599 c
+322.2 615.999 320.2 632.799 290.2 625.599 C
+288.455 611.636 289.295 601.624 v
+326.6 613.199 327.4 607.599 V
+329 610.799 338.2 610.799 v
+347.4 610.799 370.142 611.971 371.742 614.771 C
+f
+0 g
+0 0.55 0.5 0.35 K
+2 w
+328.6 624.799 m
+333.4 619.999 329.8 610.399 V
+315.4 594.399 317.4 580.399 v
+S
+0 0 0.2 0 k
+0 G
+0.5 w
+280.6 539.999 m
+276.2 552.799 285 545.999 V
+289.8 543.999 288.6 542.399 v
+287.4 540.799 281.8 536.799 280.6 539.999 C
+b
+285.64 538.799 m
+282.12 549.039 289.16 543.599 V
+293.581 541.151 292.04 540.719 v
+287.48 539.439 292.04 536.879 285.64 538.799 C
+b
+290.44 538.799 m
+286.92 549.039 293.96 543.599 V
+298.335 541.289 296.84 540.719 v
+293.48 539.439 296.84 536.879 290.44 538.799 C
+b
+297.04 538.599 m
+293.52 548.839 300.56 543.399 V
+304.943 541.067 303.441 540.519 v
+300.48 539.439 303.441 536.679 297.04 538.599 C
+b
+303.52 538.679 m
+300 548.919 307.041 543.479 V
+310.881 541.879 309.921 540.599 v
+308.961 539.319 309.921 536.759 303.52 538.679 C
+b
+310.2 537.999 m
+305.4 550.399 314.6 543.999 V
+319.4 541.999 318.2 540.399 v
+317 538.799 318.2 535.599 310.2 537.999 C
+b
+0 g
+0.1 0.6 0.45 0.25 K
+2 w
+281.8 555.199 m
+295 557.999 301 554.799 V
+307 553.599 308.2 553.999 v
+309.4 554.399 312.6 554.799 y
+S
+315.8 546.399 m
+327.8 559.999 339.8 555.599 v
+346.816 553.026 345.8 556.399 346.6 559.199 c
+347.4 561.999 347.6 566.199 352.6 569.199 c
+S
+0 0 0.2 0 k
+0 G
+0.5 w
+333 562.399 m
+329 573.199 326.2 560.399 v
+323.4 547.599 320.2 543.999 318.6 541.199 C
+318.6 535.999 327 536.399 V
+337.8 536.799 338.2 539.599 v
+338.6 542.399 337 553.999 333 562.399 C
+b
+0 g
+0.1 0.6 0.45 0.25 K
+2 w
+347 555.199 m
+350.6 557.599 353 556.399 v
+S
+353.5 571.599 m
+356.4 576.499 361.2 577.299 v
+S
+0.7 g
+0 G
+1 w
+274.2 534.799 m
+292.2 531.599 296.6 533.199 V
+305.4 533.199 297 531.199 V
+284.2 531.199 276.2 532.399 V
+264.6 537.999 274.2 534.799 V
+f
+0 0 0.2 0 k
+0.5 w
+288.2 627.999 m
+305.8 627.999 307.8 627.199 V
+315 596.399 311.4 588.799 V
+310.2 585.999 307.4 591.599 V
+289 624.399 285.8 626.399 v
+282.6 628.399 287 627.999 288.2 627.999 C
+b
+211.1 630.699 m
+220 628.999 232.6 626.399 V
+237.4 603.999 240.6 599.199 v
+243.8 594.399 240.2 594.399 236.6 597.199 c
+233 599.999 218.2 613.999 216.2 618.399 c
+214.2 622.799 211.1 630.699 y
+b
+232.961 626.182 m
+238.761 624.634 239.77 622.419 v
+240.778 620.205 238.568 616.908 y
+237.568 613.603 236.366 615.765 v
+235.164 617.928 232.292 625.588 232.961 626.182 c
+b
+0 g
+233 626.399 m
+236.6 621.199 240.2 621.199 v
+243.8 621.199 244.182 621.612 247 620.999 c
+251.6 619.999 251.2 621.999 257.8 620.799 c
+260.44 620.319 263 621.199 265.8 619.999 c
+268.6 618.799 271.8 619.599 273 621.599 c
+274.2 623.599 279 627.799 Y
+266.2 625.999 263.4 625.199 V
+241 623.999 233 626.399 V
+f
+0 0 0.2 0 k
+277.6 626.199 m
+271.15 622.699 270.75 620.299 v
+270.35 617.899 276 614.199 y
+278.75 609.599 279.35 611.999 v
+279.95 614.399 278.4 625.799 277.6 626.199 c
+b
+240.115 620.735 m
+247.122 609.547 247.339 620.758 V
+247.896 622.016 246.136 622.038 v
+240.061 622.114 241.582 626.216 240.115 620.735 C
+b
+247.293 620.486 m
+255.214 609.299 254.578 620.579 V
+254.585 620.911 252.832 621.064 v
+248.085 621.478 248.43 625.996 247.293 620.486 C
+b
+254.506 620.478 m
+262.466 609.85 261.797 619.516 V
+261.916 620.749 260.262 621.05 v
+256.37 621.756 256.159 625.005 254.506 620.478 C
+b
+261.382 620.398 m
+269.282 608.837 269.63 618.618 V
+271.274 619.996 269.528 620.218 v
+263.71 620.958 264.508 625.412 261.382 620.398 C
+b
+0 0 0.2 0.1 k
+225.208 616.868 m
+217.55 618.399 l
+214.95 623.399 212.85 629.549 y
+219.2 628.549 231.7 625.749 V
+232.576 622.431 234.048 616.636 v
+225.208 616.868 l
+f
+290.276 621.53 m
+288.61 624.036 287.293 625.794 286.643 626.2 c
+283.63 628.083 287.773 627.706 288.902 627.706 C
+305.473 627.706 307.356 626.953 V
+307.88 624.711 308.564 621.32 V
+298.476 623.33 290.276 621.53 V
+f
+0.2 0.55 0.85 0 k
+1 w
+343.88 759.679 m
+371.601 755.719 397.121 791.359 398.881 801.04 c
+400.641 810.72 390.521 822.6 Y
+391.841 825.68 387.001 839.76 381.721 849 c
+376.441 858.24 360.54 857.266 343 858.24 c
+327.16 859.12 308.68 835.8 307.36 834.04 c
+306.04 832.28 312.2 793.999 313.52 788.279 c
+314.84 782.559 312.2 756.159 y
+346.44 765.259 316.16 763.639 343.88 759.679 c
+f
+0.08 0.44 0.68 0 k
+308.088 833.392 m
+306.792 831.664 312.84 794.079 314.136 788.463 c
+315.432 782.847 312.84 756.927 y
+345.512 765.807 316.728 764.271 343.944 760.383 c
+371.161 756.495 396.217 791.487 397.945 800.992 c
+399.673 810.496 389.737 822.16 Y
+391.033 825.184 386.281 839.008 381.097 848.08 c
+375.913 857.152 360.302 856.195 343.08 857.152 c
+327.528 858.016 309.384 835.12 308.088 833.392 c
+f
+0.06 0.33 0.51 0 k
+308.816 832.744 m
+307.544 831.048 313.48 794.159 314.752 788.647 c
+316.024 783.135 313.48 757.695 y
+344.884 766.855 317.296 764.903 344.008 761.087 c
+370.721 757.271 395.313 791.615 397.009 800.944 c
+398.705 810.272 388.953 821.72 Y
+390.225 824.688 385.561 838.256 380.473 847.16 c
+375.385 856.064 360.063 855.125 343.16 856.064 c
+327.896 856.912 310.088 834.44 308.816 832.744 c
+f
+0.04 0.22 0.34 0 k
+309.544 832.096 m
+308.296 830.432 314.12 794.239 315.368 788.831 c
+316.616 783.423 314.12 758.463 y
+343.556 767.503 317.864 765.535 344.072 761.791 c
+370.281 758.047 394.409 791.743 396.073 800.895 c
+397.737 810.048 388.169 821.28 Y
+389.417 824.192 384.841 837.504 379.849 846.24 c
+374.857 854.976 359.824 854.055 343.24 854.976 c
+328.264 855.808 310.792 833.76 309.544 832.096 c
+f
+0.02 0.11 0.17 0 k
+310.272 831.448 m
+309.048 829.816 314.76 794.319 315.984 789.015 c
+317.208 783.711 314.76 759.231 y
+342.628 768.151 318.432 766.167 344.136 762.495 c
+369.841 758.823 393.505 791.871 395.137 800.848 c
+396.769 809.824 387.385 820.84 Y
+388.609 823.696 384.121 836.752 379.225 845.32 c
+374.329 853.888 359.585 852.985 343.32 853.888 c
+328.632 854.704 311.496 833.08 310.272 831.448 c
+f
+1 g
+344.2 763.2 m
+369.4 759.6 392.601 792 394.201 800.8 c
+395.801 809.6 386.601 820.4 Y
+387.801 823.2 383.4 836 378.6 844.4 c
+373.8 852.8 359.346 851.914 343.4 852.8 c
+329 853.6 312.2 832.4 311 830.8 c
+309.8 829.2 315.4 794.4 316.6 789.2 c
+317.8 784 315.4 760 y
+340.9 768.6 319 766.8 344.2 763.2 c
+f
+0.8 g
+390.601 797.2 m
+362.8 789.6 351.2 791.2 V
+335.4 797.8 326.6 776 V
+323 768.8 321 766.8 v
+319 764.8 390.601 797.2 Y
+f
+0 g
+394.401 799.4 m
+365.4 787.2 355.4 787.6 v
+339 792.2 330.6 777.6 V
+322.2 768.4 319 766.8 V
+318.6 765.2 325 769.2 V
+335.4 764 l
+350.2 754.4 359.8 770.4 V
+363.8 781.6 363.8 783.6 v
+363.8 785.6 385 791.2 386.601 791.6 c
+388.201 792 394.801 796.2 394.401 799.4 C
+f
+0.4 0.2 0.8 0 k
+347 763.486 m
+340.128 763.486 331.755 767.351 331.755 773.6 c
+331.755 779.848 340.128 786.113 347 786.113 c
+353.874 786.113 359.446 781.048 359.446 774.8 c
+359.446 768.551 353.874 763.486 347 763.486 c
+f
+0.4 0.2 0.8 0.2 k
+343.377 780.17 m
+338.531 779.448 333.442 777.945 333.514 778.161 c
+335.054 782.78 341.415 786.113 347 786.113 c
+351.296 786.113 355.084 784.135 357.32 781.125 c
+352.004 781.455 343.377 780.17 v
+f
+1 g
+355.4 780.4 m
+351 783.6 351 781.4 V
+354.6 777 355.4 780.4 V
+f
+0 g
+345.4 772.274 m
+342.901 772.274 340.875 774.3 340.875 776.8 c
+340.875 779.299 342.901 781.325 345.4 781.325 c
+347.9 781.325 349.926 779.299 349.926 776.8 c
+349.926 774.3 347.9 772.274 345.4 772.274 c
+f
+0.2 0.55 0.85 0 k
+241.4 785.6 m
+238.2 806.8 240.6 811.2 V
+251.4 821.2 251 824.8 V
+250.6 842.8 249.4 843.6 v
+248.2 844.4 240.6 850.4 234.6 844 C
+224.2 826 225 819.6 V
+225 817.6 l
+217.4 818 215.8 816 V
+214.6 810.8 213.4 810.4 V
+210.6 808 212.6 805.2 V
+210.6 802.8 211 798.8 V
+218.6 794.8 L
+220.6 780.4 231.4 775.2 v
+236.236 772.871 239.4 779.6 241.4 785.6 c
+f
+1 g
+240.4 787.44 m
+237.52 806.52 239.68 810.48 V
+249.4 819.48 249.04 822.72 V
+248.68 838.92 247.6 839.64 v
+246.52 840.36 239.68 845.76 234.28 840 C
+224.92 823.8 225.64 818.04 V
+225.64 816.24 l
+218.8 816.6 217.36 814.8 V
+216.28 810.12 215.2 809.76 V
+212.68 807.6 214.48 805.08 V
+212.68 802.92 213.04 799.32 V
+219.88 795.72 L
+221.68 782.76 231.4 778.08 v
+235.752 775.985 238.6 782.04 240.4 787.44 c
+f
+0.075 0.412 0.637 0 k
+248.95 842.61 m
+247.86 843.47 240.37 849.24 234.52 843 C
+224.38 825.45 225.16 819.21 V
+225.16 817.26 l
+217.75 817.65 216.19 815.7 V
+215.02 810.63 213.85 810.24 V
+211.12 807.9 213.07 805.17 V
+211.12 802.83 211.51 798.93 V
+218.92 795.03 L
+220.87 780.99 231.4 775.92 v
+236.114 773.65 239.2 780.21 241.15 786.06 c
+238.03 806.73 240.37 811.02 V
+250.9 820.77 250.51 824.28 V
+250.12 841.83 248.95 842.61 V
+f
+0.05 0.275 0.425 0 k
+248.5 841.62 m
+247.52 842.54 240.14 848.08 234.44 842 C
+224.56 824.9 225.32 818.82 V
+225.32 816.92 l
+218.1 817.3 216.58 815.4 V
+215.44 810.46 214.3 810.08 V
+211.64 807.8 213.54 805.14 V
+211.64 802.86 212.02 799.06 V
+219.24 795.26 L
+221.14 781.58 231.4 776.64 v
+235.994 774.428 239 780.82 240.9 786.52 c
+237.86 806.66 240.14 810.84 V
+250.4 820.34 250.02 823.76 V
+249.64 840.86 248.5 841.62 V
+f
+0.025 0.137 0.212 0 k
+248.05 840.63 m
+247.18 841.61 239.91 846.92 234.36 841 C
+224.74 824.35 225.48 818.43 V
+225.48 816.58 l
+218.45 816.95 216.97 815.1 V
+215.86 810.29 214.75 809.92 V
+212.16 807.7 214.01 805.11 V
+212.16 802.89 212.53 799.19 V
+219.56 795.49 L
+221.41 782.17 231.4 777.36 v
+235.873 775.206 238.8 781.43 240.65 786.98 c
+237.69 806.59 239.91 810.66 V
+249.9 819.91 249.53 823.24 V
+249.16 839.89 248.05 840.63 V
+f
+1 g
+240.4 787.54 m
+237.52 806.52 239.68 810.48 V
+249.4 819.48 249.04 822.72 V
+248.68 838.92 247.6 839.64 V
+246.84 840.68 239.68 845.76 234.28 840 C
+224.92 823.8 225.64 818.04 V
+225.64 816.24 l
+218.8 816.6 217.36 814.8 V
+216.28 810.12 215.2 809.76 V
+212.68 807.6 214.48 805.08 V
+212.68 802.92 213.04 799.32 V
+219.88 795.72 L
+221.68 782.76 231.4 778.08 v
+235.752 775.985 238.6 782.14 240.4 787.54 c
+f
+0.8 g
+237.3 793.8 m
+215.7 804 214.8 804.8 V
+223.9 796.6 224.7 796.6 v
+225.5 796.6 237.3 793.8 Y
+f
+0 g
+220.2 800 m
+238.6 796.4 238.6 792 v
+238.6 789.088 238.357 775.669 233 777.2 c
+224.6 779.6 228.2 794 220.2 800 c
+f
+0.4 0.2 0.8 0 k
+228.6 796.2 m
+237.578 794.726 238.6 792 v
+239.2 790.4 239.863 782.092 234.4 781 c
+229.848 780.089 227.618 790.31 228.6 796.2 c
+f
+0 g
+314.595 753.651 m
+314.098 755.393 315.409 755.262 317.2 755.8 c
+319.2 756.4 331.4 760.2 332.2 762.8 c
+333 765.4 346.2 761 Y
+348 760.2 352.4 757.6 Y
+357.2 756.4 363.8 756 Y
+366.2 755 369.6 752.2 Y
+384.2 742 396.601 749.2 Y
+416.601 755.8 410.601 773 Y
+407.601 782 410.801 785.4 Y
+411.001 789.2 418.201 782.8 Y
+420.801 778.6 421.601 773.6 Y
+429.601 762.4 426.201 780.2 Y
+426.401 781.2 423.601 784.8 423.601 786 c
+423.601 787.2 421.801 790.6 Y
+418.801 794 421.201 801 Y
+423.001 814.8 420.801 813 Y
+419.601 814.8 410.401 804.8 Y
+408.201 801.4 402.201 799.8 Y
+399.401 798 396.001 799.4 Y
+393.401 799.8 387.801 792.8 Y
+390.601 793 393.001 788.6 395.401 788.4 c
+397.801 788.2 399.601 790.8 401.201 791.4 c
+402.801 792 405.601 786.2 Y
+406.001 783.6 400.401 778.8 Y
+400.001 774.2 398.401 775.8 Y
+395.401 776.4 394.201 772.6 393.201 768 c
+392.201 763.4 388.001 763 y
+386.401 755.6 385.2 758.6 Y
+385 764.2 379 758.4 Y
+377.8 756.4 373.2 758.6 Y
+366.4 760.6 368.8 762.6 Y
+370.6 764.8 381.8 762.6 Y
+384 764.2 376 768.2 Y
+375.4 770 376.4 774.4 Y
+377.6 777.6 384.4 783.2 Y
+393.801 784.4 391.001 786 Y
+384.801 791.2 379 783.6 Y
+376.8 777.4 359.4 762.4 Y
+354.6 759 357.2 765.8 353.2 762.4 c
+349.2 759 328.6 768 y
+317.038 769.193 314.306 753.451 310.777 756.571 c
+316.195 748.051 314.595 753.651 v
+f
+509.401 920 m
+483.801 912 481.001 893.2 V
+478.601 870.4 499.001 852.8 V
+499.401 846.4 501.401 843.2 v
+499.801 838.4 518.601 846 V
+545.801 854.4 l
+552.201 856.8 557.401 865.6 v
+562.601 874.4 577.801 893.2 574.201 918.4 C
+575.401 929.6 569.401 930 V
+561.001 931.6 553.801 924 V
+547.001 920.8 544.601 921.2 V
+509.401 920 L
+f
+564.022 920.99 m
+566.122 929.92 561.282 925.08 V
+554.242 919.36 546.761 919.36 V
+532.241 917.16 527.841 903.96 V
+523.881 877.12 531.801 871.4 V
+536.641 863.92 543.681 870.52 v
+550.722 877.12 566.222 907.35 564.022 920.99 C
+f
+0.2 g
+563.648 920.632 m
+565.738 929.376 560.986 924.624 V
+554.074 919.008 546.729 919.008 V
+532.473 916.848 528.153 903.888 V
+524.265 877.536 532.041 871.92 V
+536.793 864.576 543.705 871.056 v
+550.618 877.536 565.808 907.24 563.648 920.632 C
+f
+0.4 g
+563.274 920.274 m
+565.354 928.832 560.69 924.168 V
+553.906 918.656 546.697 918.656 V
+532.705 916.536 528.465 903.816 V
+524.649 877.952 532.281 872.44 V
+536.945 865.232 543.729 871.592 v
+550.514 877.952 565.394 907.13 563.274 920.274 C
+f
+0.6 g
+562.9 919.916 m
+564.97 928.288 560.394 923.712 V
+553.738 918.304 546.665 918.304 V
+532.937 916.224 528.777 903.744 V
+525.033 878.368 532.521 872.96 V
+537.097 865.888 543.753 872.128 v
+550.41 878.368 564.98 907.02 562.9 919.916 C
+f
+0.8 g
+562.526 919.558 m
+564.586 927.744 560.098 923.256 V
+553.569 917.952 546.633 917.952 V
+533.169 915.912 529.089 903.672 V
+525.417 878.784 532.761 873.48 V
+537.249 866.544 543.777 872.664 v
+550.305 878.784 564.566 906.91 562.526 919.558 C
+f
+1 g
+562.151 919.2 m
+564.201 927.2 559.801 922.8 V
+553.401 917.6 546.601 917.6 V
+533.401 915.6 529.401 903.6 V
+525.801 879.2 533.001 874 V
+537.401 867.2 543.801 873.2 v
+550.201 879.2 564.151 906.8 562.151 919.2 C
+f
+0.1 0.55 0.85 0.3 k
+350.6 716 m
+330.2 735.2 322.2 736 V
+287.8 740 273 722 V
+290.6 742.4 318.2 736.8 V
+296.6 741.2 284.2 738 V
+267.4 738 257.8 724 V
+255 719.2 l
+259 734 277.4 740 V
+300.2 744.8 311 740 V
+289.4 746.8 279.4 744.8 V
+249 747.2 236.2 720.8 V
+240.2 735.2 255 742.4 V
+268.6 751.2 289 748.4 V
+303.4 745.2 308.6 742.8 v
+313.8 740.4 312.6 743.2 304.2 748 C
+298.6 758 284.6 757.6 V
+241.8 754 231.4 742 V
+245 753.2 255.4 756 V
+277.8 764 286.2 763.2 V
+311 762.2 318.6 766.2 V
+307.4 761.2 310.6 758 v
+313.8 754.8 320.6 747.2 320.6 746 c
+320.6 744.8 344.8 722.7 348.4 718.3 C
+350.6 716 l
+f
+0.8 g
+1 J 0.1 w
+489 522 m
+473.5 558.5 461 568 V
+487 552 490.5 534 V
+490.5 524 489 522 V
+f
+536 514.5 m
+509.5 569.5 491 593.5 V
+534.5 556 539.5 529.5 V
+540 524 l
+537 526.5 l
+536.5 517.5 536 514.5 V
+f
+592.5 563 m
+530 622.5 528.5 625 V
+589 559 592 551.5 V
+590 560.5 592.5 563 V
+f
+404 519.5 m
+423.5 571.5 442.5 549 V
+457.5 539 457 536 V
+453 542.5 435 542 V
+416 545 404 519.5 V
+f
+594.5 647 m
+549.5 675.5 542 677 v
+530.193 679.361 591.5 648 596.5 637.5 C
+598.5 640 594.5 647 V
+f
+0 g
+0 J 1 w
+443.801 540.399 m
+464.201 542.399 471.001 549.199 V
+475.401 545.599 l
+493.001 583.999 l
+496.601 578.799 l
+511.001 593.599 510.201 601.599 v
+509.401 609.599 523.001 595.599 y
+522.201 607.199 529.401 600.399 V
+527.001 615.999 535.401 607.999 V
+524.864 638.156 547.401 612.399 v
+553.001 605.999 548.601 612.799 y
+522.601 660.799 544.201 646.399 v
+546.201 669.199 545.001 673.599 v
+543.801 677.999 541.801 700.4 537.001 705.6 c
+532.201 710.8 537.401 712.4 543.001 707.2 C
+531.801 731.2 545.001 719.2 V
+541.401 734.4 537.001 737.2 V
+531.401 754.4 546.601 743.6 V
+542.201 756 539.001 759.2 V
+527.401 786.8 534.601 782 V
+539.001 778.4 l
+532.201 792.4 538.601 788 v
+545.001 783.6 545.001 784 y
+523.801 817.2 544.201 799.6 V
+536.042 813.518 532.601 820.4 V
+513.801 840.8 528.201 834.4 V
+533.001 832.8 l
+524.201 842.8 516.201 844.4 v
+508.201 846 518.601 852.4 525.001 850.4 c
+531.401 848.4 547.001 840.8 y
+559.801 822 563.801 821.6 V
+543.801 829.2 549.801 821.2 V
+564.201 807.2 557.001 807.6 V
+551.001 800.4 555.801 791.6 V
+537.342 809.991 552.201 784.4 v
+559.001 768 l
+534.601 792.8 545.801 770.8 V
+563.001 747.2 565.001 746.8 v
+567.001 746.4 571.401 737.6 y
+567.001 739.6 l
+572.201 730.8 l
+561.001 742.8 567.001 729.6 V
+572.601 715.2 l
+552.201 737.2 565.801 707.6 V
+549.401 712.8 558.201 695.6 V
+556.601 679.599 557.001 674.399 v
+557.401 669.199 558.601 640.799 554.201 632.799 c
+549.801 624.799 560.201 605.599 562.201 601.599 c
+564.201 597.599 567.801 586.799 559.001 595.999 c
+550.201 605.199 554.601 599.599 556.601 590.799 c
+558.601 581.999 564.601 566.399 563.801 560.799 C
+562.601 559.599 559.401 563.199 V
+544.601 585.999 546.201 571.599 V
+545.001 563.599 541.801 554.799 V
+538.601 543.999 538.601 552.799 V
+535.401 569.599 532.601 561.999 v
+529.801 554.399 526.201 548.399 523.401 545.999 c
+520.601 543.599 515.401 566.399 514.201 555.999 C
+502.201 568.399 497.401 551.999 V
+485.801 535.599 l
+485.401 547.999 484.201 541.999 V
+454.201 535.999 443.801 540.399 V
+f
+409.401 897.2 m
+397.801 905.2 393.801 904.8 v
+389.801 904.4 421.401 913.6 462.601 886 C
+467.401 883.2 471.001 883.6 V
+474.201 881.2 471.401 877.6 V
+462.601 868 473.801 856.8 V
+492.201 850 486.601 858.8 V
+497.401 854.8 499.801 850.8 v
+502.201 846.8 501.001 850.8 y
+494.601 858 488.601 863.2 V
+483.401 865.2 480.601 873.6 v
+477.801 882 475.401 892 479.801 895.2 C
+475.801 890.8 476.601 894.8 v
+477.401 898.8 481.001 902.4 482.601 902.8 c
+484.201 903.2 500.601 919 507.401 919.4 C
+498.201 918 495.201 919 v
+492.201 920 465.601 931.4 459.601 932.6 C
+442.801 939.2 454.801 937.2 V
+490.601 933.4 508.801 920.2 V
+501.601 928.6 483.201 935.6 V
+461.001 948.2 425.801 943.2 V
+408.001 940 400.201 938.2 V
+397.601 938.8 397.001 939.2 v
+396.401 939.6 384.6 948.6 357 941.6 C
+340 937 331.4 932.2 V
+316.2 931 312.6 927.8 V
+294 913.2 292 912.4 v
+290 911.6 278.6 904 277.8 903.6 C
+302.4 910.2 304.8 912.6 v
+307.2 915 324.6 917.6 327 916.2 c
+329.4 914.8 337.8 915.4 328.2 914.8 C
+403.801 900 404.601 898 v
+405.401 896 409.401 897.2 y
+f
+0.2 0.55 0.85 0 k
+480.801 906.4 m
+470.601 913.8 468.601 913.8 v
+466.601 913.8 454.201 924 450.001 923.6 c
+445.801 923.2 433.601 933.2 406.201 925 C
+405.601 927 409.201 927.8 V
+415.601 930 416.001 930.6 V
+436.201 934.8 443.401 931.2 V
+452.601 928.6 458.801 922.4 V
+470.001 919.2 473.201 920.2 V
+482.001 918 482.401 916.2 V
+488.201 913.2 486.401 910.6 V
+486.801 909 480.801 906.4 V
+f
+468.33 908.509 m
+469.137 907.877 470.156 907.779 470.761 906.97 c
+470.995 906.656 470.706 906.33 470.391 906.233 c
+469.348 905.916 468.292 906.486 467.15 905.898 c
+466.748 905.691 466.106 905.873 465.553 906.022 c
+463.921 906.463 462.092 906.488 460.401 905.8 C
+458.416 906.929 456.056 906.345 453.975 907.346 c
+453.917 907.373 453.695 907.027 453.621 907.054 c
+450.575 908.199 446.832 907.916 444.401 910.2 C
+441.973 910.612 439.616 911.074 437.188 911.754 c
+435.37 912.263 433.961 913.252 432.341 914.084 c
+430.964 914.792 429.507 915.314 427.973 915.686 c
+426.11 916.138 424.279 916.026 422.386 916.546 c
+422.293 916.571 422.101 916.227 422.019 916.254 c
+421.695 916.362 421.405 916.945 421.234 916.892 c
+419.553 916.37 418.065 917.342 416.401 917 C
+415.223 918.224 413.495 917.979 411.949 918.421 c
+408.985 919.269 405.831 917.999 402.801 919 C
+406.914 920.842 411.601 919.61 415.663 921.679 c
+417.991 922.865 420.653 921.763 423.223 922.523 c
+423.71 922.667 424.401 922.869 424.801 922.2 C
+424.935 922.335 425.117 922.574 425.175 922.546 c
+427.625 921.389 429.94 920.115 432.422 919.049 c
+432.763 918.903 433.295 919.135 433.547 918.933 c
+435.067 917.717 437.01 917.82 438.401 916.6 C
+440.099 917.102 441.892 916.722 443.621 917.346 c
+443.698 917.373 443.932 917.032 443.965 917.054 c
+445.095 917.802 446.25 917.531 447.142 917.227 c
+447.48 917.112 448.143 916.865 448.448 916.791 c
+449.574 916.515 450.43 916.035 451.609 915.852 c
+451.723 915.834 451.908 916.174 451.98 916.146 c
+453.103 915.708 454.145 915.764 454.801 914.6 C
+454.936 914.735 455.101 914.973 455.183 914.946 c
+456.21 914.608 456.859 913.853 457.96 913.612 c
+458.445 913.506 459.057 912.88 459.633 912.704 c
+462.025 911.973 463.868 910.444 466.062 909.549 c
+466.821 909.239 467.697 909.005 468.33 908.509 c
+f
+391.696 922.739 m
+389.178 924.464 386.81 925.57 384.368 927.356 c
+384.187 927.489 383.827 927.319 383.625 927.441 c
+382.618 928.05 381.73 928.631 380.748 929.327 c
+380.209 929.709 379.388 929.698 378.88 929.956 c
+376.336 931.248 373.707 931.806 371.2 933 C
+371.882 933.638 373.004 933.394 373.6 934.2 C
+373.795 933.92 374.033 933.636 374.386 933.827 c
+376.064 934.731 377.914 934.884 379.59 934.794 c
+381.294 934.702 383.014 934.397 384.789 934.125 c
+385.096 934.078 385.295 933.555 385.618 933.458 c
+387.846 932.795 390.235 933.32 392.354 932.482 c
+393.945 931.853 395.515 931.03 396.754 929.755 c
+397.006 929.495 396.681 929.194 396.401 929 C
+396.789 929.109 397.062 928.903 397.173 928.59 c
+397.257 928.351 397.257 928.049 397.173 927.81 c
+397.061 927.498 396.782 927.397 396.408 927.346 c
+395.001 927.156 396.773 928.536 396.073 928.088 c
+394.8 927.274 395.546 925.868 394.801 924.6 C
+394.521 924.794 394.291 925.012 394.401 925.4 C
+394.635 924.878 394.033 924.588 393.865 924.272 c
+393.48 923.547 392.581 922.132 391.696 922.739 c
+f
+359.198 915.391 m
+356.044 916.185 352.994 916.07 349.978 917.346 c
+349.911 917.374 349.688 917.027 349.624 917.054 c
+348.258 917.648 347.34 918.614 346.264 919.66 c
+345.351 920.548 343.693 920.161 342.419 920.648 c
+342.095 920.772 341.892 921.284 341.591 921.323 c
+340.372 921.48 339.445 922.429 338.4 923 C
+340.736 923.795 343.147 923.764 345.609 924.148 c
+345.722 924.166 345.867 923.845 346 923.845 c
+346.136 923.845 346.266 924.066 346.4 924.2 C
+346.595 923.92 346.897 923.594 347.154 923.848 c
+347.702 924.388 348.258 924.198 348.798 924.158 c
+348.942 924.148 349.067 923.845 349.2 923.845 c
+349.336 923.845 349.467 924.156 349.6 924.156 c
+349.736 924.155 349.867 923.845 350 923.845 c
+350.136 923.845 350.266 924.066 350.4 924.2 C
+351.092 923.418 351.977 923.972 352.799 923.793 c
+353.837 923.566 354.104 922.418 355.178 922.12 c
+359.893 920.816 364.03 918.671 368.393 916.584 c
+368.7 916.437 368.91 916.189 368.8 915.8 C
+369.067 915.8 369.38 915.888 369.57 915.756 c
+370.628 915.024 371.669 914.476 372.366 913.378 c
+372.582 913.039 372.253 912.632 372.02 912.684 c
+367.591 913.679 363.585 914.287 359.198 915.391 c
+f
+345.338 871.179 m
+343.746 872.398 343.162 874.429 342.034 876.221 c
+341.82 876.561 342.094 876.875 342.411 876.964 c
+342.971 877.123 343.514 876.645 343.923 876.443 c
+345.668 875.581 347.203 874.339 349.2 874.2 C
+351.19 871.966 355.45 871.581 355.457 868.2 c
+355.458 867.341 354.03 868.259 353.6 867.4 C
+351.149 868.403 348.76 868.3 346.38 869.767 c
+345.763 870.148 346.093 870.601 345.338 871.179 c
+f
+317.8 923.756 m
+317.935 923.755 324.966 923.522 324.949 923.408 c
+324.904 923.099 317.174 922.05 316.81 922.22 c
+316.646 922.296 309.134 919.866 309 920 C
+309.268 920.135 317.534 923.756 317.8 923.756 c
+f
+0 g
+333.2 914 m
+318.4 912.2 314 911 v
+309.6 909.8 291 902.2 288 900.2 C
+274.6 894.8 257.6 874.8 V
+265.2 878.2 267.4 881 V
+281 893.6 280.8 891 V
+293 899.6 292.4 897.4 V
+316.8 908.6 314.8 905.4 V
+336.4 910 335.4 908 V
+354.2 903.6 351.4 903.4 V
+345.6 902.2 352 898.6 V
+348.6 894.2 343.2 898.2 v
+337.8 902.2 340.8 900 335.8 899 C
+333.2 898.2 328.6 902.2 V
+323 906.8 314.2 903.2 V
+283.6 890.6 281.6 890 V
+278 887.2 275.6 883.6 V
+269.8 879.2 266.8 877.8 V
+254 866.2 252.8 864.8 V
+249.4 859.6 248.6 859.2 V
+255 863 257 865 V
+271 875 276.4 875.8 V
+280.8 878.8 281.6 880.2 V
+296 889.4 300.2 889.4 V
+309.4 884.2 311.8 891.2 V
+317.6 893 323.2 891.8 V
+326.4 894.4 325.6 896.6 V
+327.2 898.4 328.2 894.6 V
+331.6 891 336.4 893 V
+340.4 893.2 338.4 890.8 V
+334 887 322.2 886.8 V
+309.8 886.2 293.4 878.6 V
+263.6 868.2 254.4 857.8 V
+248 849 242.6 847.8 V
+236.8 847 230.8 839.6 V
+240.6 845.4 249.6 845.4 V
+253.6 847.8 249.8 844.2 V
+246.2 836.6 247.8 831.2 V
+247.2 826 246.4 824.4 V
+238.6 811.6 238.6 809.2 v
+238.6 806.8 239.8 797 240.2 796.4 c
+240.6 795.8 239.2 798 243 795.6 c
+246.8 793.2 249.6 791.6 250.4 788.8 c
+251.2 786 248.4 794.2 248.2 796 c
+248 797.8 243.8 805 244.6 807.4 C
+245.6 806.4 246.4 805 V
+245.8 805.6 246.4 809.2 V
+247.2 814.4 248.6 817.6 v
+250 820.8 252 824.6 252.4 825.4 c
+252.8 826.2 252.8 832 254.2 829.4 C
+257.6 826.8 l
+254.8 829.4 257 831.6 V
+256 837.2 257.8 839.8 V
+264.8 848.2 266.4 849.2 v
+268 850.2 266.6 849.8 y
+272.6 854 266.8 852.4 V
+262.8 850.8 259.8 850.8 V
+252.2 848.8 256.2 853 v
+260.2 857.2 270.2 862.6 274 862.4 C
+274.8 860.8 l
+286 863.2 l
+284.8 862.4 l
+284.6 862.6 288.8 863 v
+293 863.4 298.8 862 300.2 863.8 c
+301.6 865.6 305 866.6 304.6 865.2 c
+304.2 863.8 304 861.8 y
+309 867.6 308.4 865.4 v
+307.8 863.2 299.6 858 298.2 851.8 C
+308.6 860 l
+312.2 863 l
+315.8 860.8 316 862.4 v
+316.2 864 320.8 869.8 322 869.6 c
+323.2 869.4 325.2 872.2 325 869.6 c
+324.8 867 332.4 861.6 y
+335.6 863.4 337 862 v
+338.4 860.6 342.6 881.8 y
+367.6 892.4 l
+411.201 895.8 l
+394.201 902.6 l
+333.2 914 l
+f
+0.2 0.55 0.85 0.5 K
+1 J 2 w
+351.4 715 m
+336.4 731.8 328 734.4 V
+314.6 741.2 290 733.4 v
+S
+324.8 735.8 m
+299.6 743.8 284.2 739.6 V
+265.8 737.6 257.4 723.8 v
+S
+321.2 737 m
+304.2 744.2 289.4 746.4 V
+272.8 749 256.2 741.8 V
+244 735.8 238.6 725.6 v
+S
+322.2 736.6 m
+306.8 747.6 305.8 749 V
+298.8 760 285.8 760.4 V
+264.4 759.6 247.2 751.6 v
+S
+0 G
+0 J 1 w
+320.895 745.593 m
+322.437 744.13 349.4 715.2 Y
+384.6 678.599 356.6 712.8 Y
+349 717.6 339.8 736.4 Y
+338.6 739.2 353.8 729.2 Y
+357.8 728.4 371.4 709.2 Y
+364.6 711.6 369.4 704.4 Y
+372.2 702.4 392.601 686.799 Y
+396.201 682.799 400.201 681.199 Y
+414.201 686.399 407.801 673.199 Y
+410.201 666.399 415.801 677.999 Y
+427.001 694.8 410.601 692.399 Y
+380.6 689.599 373.8 705.6 Y
+371.4 708 380.2 705.6 Y
+388.601 703.6 373 718 Y
+375.4 718 384.6 711.2 Y
+395.001 702 397.001 704 Y
+415.001 712.8 425.401 705.2 Y
+427.401 703.6 421.801 696.8 423.401 691.599 c
+425.001 686.399 429.801 673.999 Y
+427.401 672.399 427.801 661.599 Y
+444.601 638.399 435.001 640.399 Y
+419.401 640.799 434.201 633.199 Y
+437.401 631.199 446.201 623.999 Y
+443.401 625.199 441.801 619.999 Y
+446.601 615.999 443.801 611.199 Y
+437.801 609.999 436.601 605.999 Y
+443.401 597.999 433.401 597.599 Y
+437.001 593.199 432.201 581.199 Y
+427.401 581.199 421.001 575.599 Y
+423.401 570.799 413.001 565.199 Y
+404.601 563.599 407.401 556.799 Y
+399.401 550.799 397.001 534.799 Y
+396.201 524.399 393.801 521.199 399.001 523.199 c
+404.201 525.199 403.401 537.599 Y
+398.601 553.199 441.401 569.199 Y
+445.401 570.799 446.201 575.999 Y
+448.201 575.599 457.001 567.999 Y
+464.601 556.799 465.001 565.999 Y
+466.201 569.599 464.601 575.599 Y
+470.601 597.199 456.601 603.599 Y
+446.601 637.199 460.601 628.799 Y
+463.401 623.199 474.201 617.999 y
+477.801 620.399 L
+476.201 625.199 484.601 631.199 Y
+487.401 624.799 493.401 632.799 Y
+497.001 657.199 509.401 642.799 Y
+513.401 641.599 514.601 648.399 Y
+518.201 658.799 514.601 672.399 Y
+518.201 672.799 527.801 666.799 Y
+530.601 670.399 521.401 687.199 525.401 684.799 c
+529.401 682.399 533.801 680.799 Y
+534.601 682.799 524.601 695.199 Y
+520.201 698 515.001 718.4 Y
+522.201 714.8 512.201 730 Y
+512.201 733.2 518.201 744.4 Y
+517.401 751.2 518.201 750.8 Y
+521.001 749.6 529.001 748 522.201 754.4 c
+515.401 760.8 523.001 765.6 Y
+527.401 768.4 513.801 768 Y
+508.601 772.4 509.001 776.4 Y
+517.001 774.4 502.601 788.8 500.201 792.4 c
+497.801 796 507.401 801.2 Y
+520.601 804.8 509.001 808 Y
+489.401 807.6 500.201 818.4 Y
+506.201 818 504.601 820.4 Y
+499.401 821.6 489.801 828 Y
+485.801 831.6 489.401 830.8 Y
+506.201 829.6 477.401 840.8 Y
+485.401 840.8 467.401 851.2 Y
+465.401 852.8 462.201 860.4 Y
+456.201 865.6 451.401 872.4 Y
+451.001 876.8 446.201 881.6 Y
+434.601 895.2 429.001 894.8 Y
+414.201 898.4 409.001 897.6 Y
+356.2 893.2 l
+329.8 880.4 337.6 859.4 Y
+344 851 353.2 854.8 Y
+357.8 861 369.4 858.8 Y
+389.801 855.6 387.201 859.2 Y
+384.801 863.8 368.6 870 368.4 870.6 c
+368.2 871.2 359.4 874.6 Y
+356.4 875.8 352 885 Y
+348.8 888.4 364.6 882.6 Y
+363.4 881.6 370.8 877.6 Y
+388.201 878.6 398.801 867.8 Y
+409.601 851.2 409.801 859.4 Y
+412.601 868.8 400.801 890 Y
+401.201 892 409.401 885.4 Y
+410.801 887.4 411.601 881.6 Y
+411.801 879.2 415.601 871.2 Y
+418.401 858.2 422.001 865.6 Y
+426.601 856.2 L
+428.001 853.6 422.001 846 Y
+421.801 843.2 422.601 843.4 417.001 835.8 c
+411.401 828.2 414.801 823.8 Y
+413.401 817.2 422.201 817.6 Y
+424.801 815.4 428.201 815.4 Y
+430.001 813.4 432.401 814 Y
+434.001 817.8 440.201 815.8 Y
+441.601 818.2 449.801 818.6 Y
+450.801 821.2 451.201 822.8 454.601 823.4 c
+458.001 824 433.401 867 Y
+439.801 867.8 431.601 880.2 Y
+429.401 886.8 440.801 872.2 443.001 870.8 c
+445.201 869.4 446.201 867.2 444.601 867.4 c
+443.001 867.6 441.201 865.4 442.601 865.2 c
+444.001 865 457.001 850 460.401 839.8 c
+463.801 829.6 469.801 825.6 476.001 819.6 c
+482.201 813.6 481.401 789.4 Y
+481.001 780.6 487.001 770 Y
+489.001 766.2 484.801 748 Y
+482.801 745.8 484.201 745 Y
+485.201 743.8 492.001 730.6 Y
+490.201 730.8 493.801 727.2 Y
+499.001 721.2 492.601 724.2 Y
+486.601 725.8 493.601 716 Y
+494.801 714.2 485.801 718.8 Y
+476.601 719.4 488.201 712.2 Y
+496.801 705 485.401 709.4 Y
+480.801 711.2 484.001 704.4 Y
+487.201 702.8 504.401 695.8 Y
+504.801 691.999 501.801 686.999 Y
+502.201 682.999 500.001 679.599 Y
+498.801 671.399 498.201 670.599 Y
+494.001 670.399 486.601 656.599 Y
+484.801 653.999 474.601 641.999 Y
+472.601 634.999 454.601 642.199 Y
+448.001 638.799 450.001 642.199 Y
+449.601 644.399 454.401 650.399 Y
+461.401 652.999 458.801 663.799 Y
+462.801 665.199 451.601 667.999 451.801 669.199 c
+452.001 670.399 457.801 671.799 Y
+465.801 673.799 461.401 676.199 Y
+460.801 680.199 463.801 685.799 Y
+475.401 686.599 463.801 702.8 Y
+453.001 710.4 452.001 716.2 Y
+464.601 724.4 456.401 736.8 456.601 740.4 c
+456.801 744 458.001 765.6 Y
+456.001 771.8 453.001 785.4 Y
+455.201 790.6 462.601 803.2 Y
+465.401 807.4 474.201 812.2 472.001 815.2 c
+469.801 818.2 462.001 816.4 Y
+454.201 817.8 454.801 812.6 Y
+453.201 811.6 452.401 806.6 Y
+451.68 798.667 442.801 792.4 Y
+431.601 786.2 440.801 782.2 Y
+446.801 775.6 437.001 775.4 Y
+426.001 777.2 434.201 767 Y
+445.001 754.2 442.001 751.4 Y
+431.801 750.4 444.401 741.2 y
+443.601 743.2 443.801 741.4 v
+444.001 739.6 447.001 735.4 447.801 733.4 c
+448.601 731.4 444.601 731.2 Y
+445.201 721.6 429.801 725.8 y
+429.801 725.8 428.201 725.6 v
+426.601 725.4 415.401 726.2 409.601 728.4 c
+403.801 730.6 397.001 730.6 y
+393.001 728.8 385.4 729 v
+377.8 729.2 369.8 726.4 Y
+365.4 726.8 374 731.2 374.2 731 c
+374.4 730.8 380 736.4 372 735.8 c
+350.203 734.165 339.4 744.4 Y
+337.4 745.8 334.8 748.6 Y
+324.8 750.6 336.2 736.2 Y
+337.4 734.8 336 733.8 Y
+335.2 735.4 327.4 740.8 Y
+324.589 741.773 323.226 743.107 320.895 745.593 C
+f
+0.2 0.55 0.85 0.5 k
+1 J 2 w
+297 757.2 m
+308.6 751.6 311.2 748.8 v
+313.8 746 327.8 734.6 y
+322.4 736.6 319.8 738.4 v
+317.2 740.2 306.4 748.4 y
+302.6 754.4 297 757.2 v
+f
+0.4 0.2 0.8 0 k
+0 J 1 w
+238.991 788.397 m
+239.328 788.545 238.804 791.257 238.6 791.8 c
+237.578 794.526 228.6 796 y
+228.373 794.635 228.318 793.039 228.424 791.401 c
+233.292 785.882 238.991 788.397 v
+f
+0.4 0.2 0.8 0.2 k
+238.991 788.597 m
+238.542 788.439 238.976 791.331 238.8 791.8 c
+237.778 794.526 228.6 796.1 y
+228.373 794.735 228.318 793.139 228.424 791.501 c
+232.692 786.382 238.991 788.597 v
+f
+0 g
+234.6 788.454 m
+233.975 788.454 233.469 789.594 233.469 791 c
+233.469 792.405 233.975 793.545 234.6 793.545 c
+235.225 793.545 235.732 792.405 235.732 791 c
+235.732 789.594 235.225 788.454 234.6 788.454 c
+f
+234.6 791 m
+F
+189 690.399 m
+183.4 680.399 208.2 686.399 V
+222.2 687.599 224.6 689.999 V
+225.8 689.199 234.166 686.266 237 685.599 c
+243.8 683.999 252.2 694 y
+256.8 704.5 259.6 704.5 v
+262.4 704.5 259.2 702.9 y
+252.6 692.799 253 691.199 V
+247.8 671.199 231.8 670.399 V
+215.65 669.449 217 663.599 V
+225.8 665.999 228.2 663.599 V
+239 663.999 231 657.599 V
+224.2 645.999 l
+224.34 642.081 214.2 645.599 v
+204.4 648.999 194.1 661.899 y
+178.15 676.449 189 690.399 V
+f
+0.1 0.4 0.4 0 k
+187.8 686.399 m
+185.8 676.799 222.6 687.199 V
+227 687.199 229.4 686.399 v
+231.8 685.599 243.8 682.799 245.8 683.999 C
+238.6 670.399 227 671.999 V
+213.8 670.399 214.2 665.599 V
+218.2 658.399 223 655.999 V
+225.8 653.599 225.4 650.399 v
+225 647.199 222.2 645.599 220.2 644.799 c
+218.2 643.999 215 647.199 213.4 647.199 c
+211.8 647.199 203.4 653.599 199 658.399 c
+194.6 663.199 186.2 675.199 186.6 677.999 c
+187 680.799 187.8 686.399 Y
+f
+0.1 0.4 0.4 0.2 k
+191 668.949 m
+193.6 664.999 196.8 660.799 199 658.399 c
+203.4 653.599 211.8 647.199 213.4 647.199 c
+215 647.199 218.2 643.999 220.2 644.799 c
+222.2 645.599 225 647.199 225.4 650.399 c
+225.8 653.599 223 655.999 Y
+219.934 657.532 217.194 661.024 215.615 663.347 C
+215.8 660.799 210.6 661.599 v
+205.4 662.399 200.2 665.199 198.6 668.399 c
+197 671.599 194.6 673.999 196.2 670.399 c
+197.8 666.799 200.2 663.199 201.8 662.799 c
+203.4 662.399 203 661.199 200.6 661.599 c
+198.2 661.999 195.4 662.399 191 667.599 c
+F
+0.1 0.55 0.85 0.3 k
+188.4 689.999 m
+190.2 703.6 191.4 707.6 V
+190.6 714.4 193 718.6 v
+195.4 722.8 197.4 729 200.4 734.4 c
+203.4 739.8 203.6 743.8 207.6 745.4 c
+211.6 747 217.6 755.6 220.4 756.6 c
+223.2 757.6 223 756.8 y
+229.8 771.6 243.4 767.6 V
+227.2 770.4 243 779.8 V
+238.2 778.7 241.5 785.7 v
+243.701 790.368 243.2 783.6 232.2 771.8 C
+227.2 763.2 222 760.2 v
+216.8 757.2 204.8 750.2 203.6 746.4 c
+202.4 742.6 199.2 736.8 197.2 735.2 c
+195.2 733.6 192.4 729.4 192 726 C
+190.8 722 189.4 720.8 v
+188 719.6 187.8 716.4 187.8 714.4 c
+187.8 712.4 185.8 709.6 186 707.2 C
+186.8 688.199 186.4 686.199 V
+188.4 689.999 L
+f
+1 g
+179.8 685.399 m
+177.8 686.799 173.4 680.799 V
+180.7 647.799 180.7 646.399 V
+181.8 648.499 180.5 655.699 v
+179.2 662.899 178.3 675.599 y
+179.8 685.399 l
+f
+0.1 0.55 0.85 0.3 k
+201.4 746 m
+183.8 742.8 184.2 713.6 V
+183.4 688.799 l
+182.2 714.4 181 716 v
+179.8 717.6 183.8 728.8 180.6 722.8 C
+166.6 708.8 174.6 687.599 V
+176.1 684.299 173.1 688.899 V
+168.5 701.5 169.6 707.9 V
+169.8 710.1 171.7 712.9 V
+180.3 724.6 183 726.9 V
+184.8 741.3 200.2 746.5 V
+205.9 748.8 201.4 746 V
+f
+0 g
+340.8 812.2 m
+341.46 812.554 341.451 813.524 342.031 813.697 c
+343.18 814.041 343.344 815.108 343.862 815.892 c
+344.735 817.211 344.928 818.744 345.51 820.235 c
+345.782 820.935 345.809 821.89 345.496 822.55 c
+344.322 825.031 343.62 827.48 342.178 829.906 c
+341.91 830.356 341.648 831.15 341.447 831.748 c
+340.984 833.132 339.727 834.123 338.867 835.443 c
+338.579 835.884 339.104 836.809 338.388 836.893 c
+337.491 836.998 336.042 837.578 335.809 836.552 c
+335.221 833.965 336.232 831.442 337.2 829 C
+336.418 828.308 336.752 827.387 336.904 826.62 c
+337.614 823.014 336.416 819.662 335.655 816.188 c
+335.632 816.084 335.974 815.886 335.946 815.824 c
+334.724 813.138 333.272 810.693 331.453 808.312 c
+330.695 807.32 329.823 806.404 329.326 805.341 c
+328.958 804.554 328.55 803.588 328.8 802.6 C
+325.365 799.82 323.115 795.975 320.504 792.129 c
+320.042 791.449 320.333 790.24 320.884 789.971 c
+321.697 789.573 322.653 790.597 323.123 791.443 c
+323.512 792.141 323.865 792.791 324.356 793.434 c
+324.489 793.609 324.31 794.028 324.445 794.149 c
+327.078 796.496 328.747 799.432 331.2 801.8 C
+333.15 802.129 334.687 803.127 336.435 804.14 c
+336.743 804.319 337.267 804.07 337.557 804.265 c
+339.31 805.442 339.308 807.478 339.414 809.388 c
+339.464 810.272 339.66 811.589 340.8 812.2 c
+f
+331.959 816.666 m
+332.083 816.743 331.928 817.166 332.037 817.382 c
+332.199 817.706 332.602 817.894 332.764 818.218 c
+332.873 818.434 332.71 818.814 332.846 818.956 c
+335.179 821.403 335.436 824.427 334.4 827.4 C
+335.424 828.02 335.485 829.282 335.06 830.129 c
+334.207 831.829 334.014 833.755 333.039 835.298 c
+332.237 836.567 330.659 837.811 329.288 836.508 c
+328.867 836.108 328.546 835.321 328.824 834.609 c
+328.888 834.446 329.173 834.3 329.146 834.218 c
+329.039 833.894 328.493 833.67 328.487 833.398 c
+328.457 831.902 327.503 830.391 328.133 829.062 c
+328.905 827.433 329.724 825.576 330.4 823.8 C
+329.166 821.684 330.199 819.235 328.446 817.358 c
+328.31 817.212 328.319 816.826 328.441 816.624 c
+328.733 816.138 329.139 815.732 329.625 815.44 c
+329.827 815.319 330.175 815.317 330.375 815.441 c
+330.953 815.803 331.351 816.29 331.959 816.666 c
+f
+394.771 826.977 m
+396.16 825.185 396.45 822.39 394.401 821 C
+394.951 817.691 398.302 819.67 400.401 820.2 C
+400.292 820.588 400.519 820.932 400.802 820.937 c
+401.859 820.952 402.539 821.984 403.601 821.8 C
+404.035 823.357 405.673 824.059 406.317 825.439 c
+408.043 829.134 407.452 833.407 404.868 836.653 c
+404.666 836.907 404.883 837.424 404.759 837.786 c
+404.003 839.997 401.935 840.312 400.001 841 C
+398.824 844.875 398.163 848.906 396.401 852.6 C
+394.787 852.85 394.089 854.589 392.752 855.309 c
+391.419 856.028 390.851 854.449 390.892 853.403 c
+390.899 853.198 391.351 852.974 391.181 852.609 c
+391.105 852.445 390.845 852.334 390.845 852.2 c
+390.846 852.065 391.067 851.934 391.201 851.8 C
+390.283 850.98 388.86 850.503 388.565 849.358 c
+387.611 845.648 390.184 842.523 391.852 839.322 c
+392.443 838.187 391.707 836.916 390.947 835.708 c
+390.509 835.013 390.617 833.886 390.893 833.03 c
+391.645 830.699 393.236 828.96 394.771 826.977 c
+f
+357.611 808.591 m
+356.124 806.74 352.712 804.171 355.629 802.243 c
+355.823 802.114 356.193 802.11 356.366 802.244 c
+358.387 803.809 360.39 804.712 362.826 805.294 c
+362.95 805.323 363.224 804.856 363.593 805.017 c
+365.206 805.72 367.216 805.662 368.4 807 C
+372.167 806.776 375.732 807.892 379.123 809.2 c
+380.284 809.648 381.554 810.207 382.755 810.709 c
+384.131 811.285 385.335 812.213 386.447 813.354 c
+386.58 813.49 386.934 813.4 387.201 813.4 C
+387.161 814.263 388.123 814.39 388.37 815.012 c
+388.462 815.244 388.312 815.64 388.445 815.742 c
+390.583 817.372 391.503 819.39 390.334 821.767 c
+390.049 822.345 389.8 822.963 389.234 823.439 c
+388.149 824.35 387.047 823.496 386 823.8 C
+385.841 823.172 385.112 823.344 384.726 823.146 c
+383.867 822.707 382.534 823.292 381.675 822.854 c
+380.313 822.159 379.072 821.99 377.65 821.613 c
+377.338 821.531 376.56 821.627 376.4 821 C
+376.266 821.134 376.118 821.368 376.012 821.346 c
+374.104 820.95 372.844 820.736 371.543 819.044 c
+371.44 818.911 370.998 819.09 370.839 818.955 c
+369.882 818.147 369.477 816.913 368.376 816.241 c
+368.175 816.118 367.823 816.286 367.629 816.157 c
+366.983 815.726 366.616 815.085 365.974 814.638 c
+365.645 814.409 365.245 814.734 365.277 814.99 c
+365.522 816.937 366.175 818.724 365.6 820.6 C
+367.677 823.12 370.194 825.069 372 827.8 C
+372.015 829.966 372.707 832.112 372.594 834.189 c
+372.584 834.382 372.296 835.115 372.17 835.462 c
+371.858 836.316 372.764 837.382 371.92 838.106 c
+370.516 839.309 369.224 838.433 368.4 837 C
+366.562 836.61 364.496 835.917 362.918 837.151 c
+361.911 837.938 361.333 838.844 360.534 839.9 c
+359.549 841.202 359.884 842.638 359.954 844.202 c
+359.96 844.33 359.645 844.466 359.645 844.6 c
+359.646 844.735 359.866 844.866 360 845 C
+359.294 845.626 359.019 846.684 358 847 C
+358.305 848.092 357.629 848.976 356.758 849.278 c
+354.763 849.969 353.086 848.057 351.194 847.984 c
+350.68 847.965 350.213 849.003 349.564 849.328 c
+349.132 849.544 348.428 849.577 348.066 849.311 c
+347.378 848.807 346.789 848.693 346.031 848.488 c
+344.414 848.052 343.136 846.958 341.656 846.103 c
+340.171 845.246 339.216 843.809 338.136 842.489 c
+337.195 841.337 337.059 838.923 338.479 838.423 c
+340.322 837.773 341.626 840.476 343.592 840.15 c
+343.904 840.099 344.11 839.788 344 839.4 C
+344.389 839.291 344.607 839.52 344.8 839.8 C
+345.658 838.781 346.822 838.444 347.76 837.571 c
+348.73 836.667 350.476 837.085 351.491 836.088 c
+353.02 834.586 352.461 831.905 354.4 830.6 C
+353.814 829.287 353.207 828.01 352.872 826.583 c
+352.59 825.377 353.584 824.18 354.795 824.271 c
+356.053 824.365 356.315 825.124 356.8 826.2 C
+357.067 825.933 357.536 825.636 357.495 825.42 c
+357.038 823.033 356.011 821.04 355.553 818.609 c
+355.494 818.292 355.189 818.09 354.8 818.2 C
+354.332 814.051 350.28 811.657 347.735 808.492 c
+347.332 807.99 347.328 806.741 347.737 806.338 c
+349.14 804.951 351.1 806.497 352.8 807 C
+353.013 808.206 353.872 809.148 355.204 809.092 c
+355.46 809.082 355.695 809.624 356.019 809.754 c
+356.367 809.892 356.869 809.668 357.155 809.866 c
+358.884 811.061 360.292 812.167 362.03 813.356 c
+362.222 813.487 362.566 813.328 362.782 813.436 c
+363.107 813.598 363.294 813.985 363.617 814.17 c
+363.965 814.37 364.207 814.08 364.4 813.8 C
+363.754 813.451 363.75 812.494 363.168 812.292 c
+362.393 812.024 361.832 811.511 361.158 811.064 c
+360.866 810.871 360.207 811.119 360.103 810.94 c
+359.505 809.912 358.321 809.474 357.611 808.591 c
+f
+302.2 858 m
+292.962 860.872 281.8 835.2 V
+279.4 830 277 828 v
+274.6 826 263.4 822.4 261.4 818.4 C
+251 802.4 L
+265.8 818.4 269 820.8 V
+277 829.2 273.8 822.4 V
+259.8 811.6 261 802.4 V
+255.4 788 254.6 786 V
+270.6 818 273 819.2 v
+275.4 820.4 276.6 820.4 275.4 816.8 c
+274.2 813.2 273.8 796.8 271 794.8 C
+279 815.2 278.2 818.4 V
+281.4 822 283.8 816.8 V
+282.6 800.8 l
+287 788.8 l
+284.6 800 286.2 815.6 V
+284.2 826 288.2 820.4 v
+292.2 814.8 301.8 808.8 301.8 804 C
+296.6 821.6 287.4 826.4 V
+283.4 820.4 l
+282.2 822.4 l
+278.6 823.2 283 830 v
+287.4 836.8 287 837.6 y
+293.4 830.4 295 830.4 V
+308.2 838 309.4 813.6 V
+316.2 828 307 834.8 V
+292.2 836.8 293.4 842 V
+300.6 854.4 L
+304.2 859.6 302.6 856.8 y
+F
+282.2 841.6 m
+269.4 841.6 266.2 836.4 V
+259 826.8 l
+276.2 836.8 280.2 838 v
+284.2 839.2 282.2 841.6 Y
+f
+242.2 835.2 m
+240.2 834 239.8 831.2 v
+239.4 828.4 237 828 237.8 825.2 c
+238.6 822.4 240.6 820 240.6 824 c
+240.6 828 242.2 830 243 831.2 c
+243.8 832.4 245.4 836.8 242.2 835.2 c
+f
+233.4 774 m
+225 778 221.8 781.6 v
+218.6 785.2 219.052 780.034 214.2 780.4 c
+208.353 780.841 209.4 796.8 y
+205.4 789.2 l
+204.2 774.8 212.2 777.2 v
+216.107 778.372 217.4 776.8 215.8 776 c
+214.2 775.2 221.4 774.8 218.6 773.2 c
+215.8 771.6 230.2 776.8 227.8 766.4 C
+233.4 774 L
+f
+220.8 759.6 m
+205.4 755.2 201.8 764.8 V
+197 762.4 199.2 759.4 v
+201.4 756.4 202.6 756 y
+208 754.8 207.4 754 v
+206.8 753.2 204.4 749.8 y
+214.6 755.8 220.8 759.6 v
+f
+1 g
+449.201 681.399 m
+448.774 679.265 447.103 678.464 445.201 677.799 C
+443.284 678.757 440.686 681.863 438.801 679.799 C
+438.327 680.279 437.548 680.339 437.204 681.001 c
+436.739 681.899 437.011 682.945 436.669 683.743 c
+436.124 685.015 435.415 686.381 435.601 687.799 C
+437.407 688.511 438.002 690.417 437.528 692.18 c
+437.459 692.437 437.03 692.634 437.23 692.983 c
+437.416 693.306 437.734 693.533 438.001 693.8 C
+437.866 693.665 437.721 693.432 437.61 693.452 c
+437 693.558 437.124 694.195 437.254 694.582 c
+437.839 696.328 439.853 696.592 441.201 695.4 C
+441.457 695.965 441.966 695.771 442.401 695.8 C
+442.351 696.379 442.759 696.906 442.957 697.326 c
+443.475 698.424 445.104 697.318 445.901 697.93 c
+446.977 698.755 448.04 699.454 449.118 698.851 c
+450.927 697.838 452.636 696.626 453.835 694.885 c
+454.41 694.051 454.65 692.77 454.592 691.812 c
+454.554 691.165 453.173 691.517 452.83 690.588 c
+452.185 688.84 454.016 688.321 454.772 686.983 c
+454.97 686.634 454.706 686.33 454.391 686.232 c
+453.98 686.104 453.196 686.293 453.334 685.84 c
+454.306 682.647 451.55 681.969 449.201 681.399 C
+f
+439.6 661.799 m
+439.593 663.537 437.992 665.293 439.201 666.999 C
+439.336 666.865 439.467 666.644 439.601 666.644 c
+439.736 666.644 439.867 666.865 440.001 666.999 C
+441.496 664.783 445.148 663.855 445.006 661.009 c
+444.984 660.562 443.897 659.644 444.801 658.999 C
+442.988 657.651 442.933 655.281 442.001 653.399 C
+440.763 653.685 439.551 654.048 438.401 654.599 C
+438.753 656.085 438.636 657.769 439.456 659.089 c
+439.89 659.787 439.603 660.866 439.6 661.799 c
+f
+0.8 g
+273.4 670.799 m
+256.542 660.663 270.6 675.999 v
+279.4 685.599 289.4 691.199 y
+299.8 695.6 303.4 696.8 v
+307 698 322.2 703.2 325.4 703.6 c
+328.6 704 338.2 708 345 704 c
+351.8 700 359.8 695.6 y
+343.4 704 339.8 701.6 v
+336.2 699.2 329 699.6 323 696.4 C
+308.2 691.999 305 689.999 v
+301.8 687.999 291.4 676.399 289.8 677.199 c
+288.2 677.999 290.2 678.399 291.4 681.199 c
+292.6 683.999 290.6 685.599 282.6 679.199 c
+274.6 672.799 273.4 670.799 Y
+f
+0 g
+280.805 676.766 m
+282.215 689.806 290.693 688.141 V
+298.919 692.311 301.641 694.279 V
+309.78 695.981 311.09 696.598 v
+329.569 705.298 344.288 700.779 344.835 701.899 c
+345.381 703.018 365.006 695.901 368.615 691.815 c
+369.006 691.372 358.384 697.412 348.686 699.303 c
+340.413 700.917 318.811 699.056 307.905 693.52 c
+304.932 692.011 295.987 686.227 293.456 686.338 c
+290.925 686.45 280.805 676.766 Y
+f
+0.8 g
+277 651.199 m
+261.8 653.599 278.6 655.199 V
+296.6 657.199 300.6 662.399 V
+314.2 671.599 317 671.999 v
+319.8 672.399 349.8 679.599 350.2 681.999 c
+350.6 684.399 356.2 684.399 357.8 683.599 c
+359.4 682.799 358.6 681.599 355.8 680.799 c
+353 679.999 321.8 663.599 315.4 662.399 c
+309 661.199 297.4 653.599 292.6 652.399 c
+287.8 651.199 277 651.199 Y
+f
+0 g
+296.52 658.597 m
+287.938 659.426 296.539 660.245 V
+305.355 663.669 307.403 666.332 V
+314.367 671.043 315.8 671.247 v
+317.234 671.452 331.194 675.139 331.399 676.367 c
+331.604 677.596 365.67 690.177 370.09 686.987 c
+373.001 684.886 363.1 686.563 353.466 682.153 c
+352.111 681.533 318.258 666.946 314.981 666.332 c
+311.704 665.717 305.765 661.826 303.307 661.212 c
+300.85 660.597 296.52 658.597 Y
+f
+288.6 656.399 m
+293.8 656.799 292.6 655.199 v
+291.4 653.599 289 654.399 y
+288.6 656.399 l
+f
+281.4 654.799 m
+286.6 655.199 285.4 653.599 v
+284.2 651.999 281.8 652.799 y
+281.4 654.799 l
+f
+271 653.199 m
+276.2 653.599 275 651.999 v
+273.8 650.399 271.4 651.199 y
+271 653.199 l
+f
+263.4 652.399 m
+268.6 652.799 267.4 651.199 v
+266.2 649.599 263.8 650.399 y
+263.4 652.399 l
+f
+301.8 691.999 m
+306.2 691.999 305 690.399 v
+303.8 688.799 300.6 689.199 y
+301.8 691.999 l
+f
+291.8 686.399 m
+298.306 688.54 295.8 685.199 v
+294.6 683.599 292.2 684.399 y
+291.8 686.399 l
+f
+280.6 681.599 m
+285.8 681.999 284.6 680.399 v
+283.4 678.799 281 679.599 y
+280.6 681.599 l
+f
+273 675.599 m
+278.2 675.999 277 674.399 v
+275.8 672.799 273.4 673.599 y
+273 675.599 l
+f
+266.2 670.799 m
+271.4 671.199 270.2 669.599 v
+269 667.999 266.6 668.799 y
+266.2 670.799 l
+f
+305.282 664.402 m
+312.203 664.934 310.606 662.805 v
+309.009 660.675 305.814 661.74 y
+305.282 664.402 l
+f
+315.682 669.202 m
+322.603 669.734 321.006 667.605 v
+319.409 665.475 316.214 666.54 y
+315.682 669.202 l
+f
+326.482 673.602 m
+333.403 674.134 331.806 672.005 v
+330.209 669.875 327.014 670.94 y
+326.482 673.602 l
+f
+336.882 678.402 m
+343.803 678.934 342.206 676.805 v
+340.609 674.675 337.414 675.74 y
+336.882 678.402 l
+f
+309.282 696.402 m
+316.203 696.934 314.606 694.805 v
+313.009 692.675 309.014 692.94 y
+309.282 696.402 l
+f
+319.282 699.602 m
+326.203 700.134 324.606 698.005 v
+323.009 695.875 318.614 696.14 y
+319.282 699.602 l
+f
+296.6 659.599 m
+301.8 659.999 300.6 658.399 v
+299.4 656.799 297 657.599 y
+296.6 659.599 l
+f
+0.1 0.55 0.85 0.3 k
+223.4 758.8 m
+219 750 218.6 746.8 V
+219.4 755.6 220.6 757.6 v
+221.8 759.6 223.4 758.8 y
+f
+205 744.8 m
+201.8 730.4 202.2 727.6 V
+201 739.2 201.4 740.4 v
+201.8 741.6 205 744.8 y
+f
+0.8 g
+225.8 819.4 m
+225.6 816.2 l
+223.4 816 l
+237.6 803.4 238.2 795.8 V
+239 804 225.8 819.4 V
+f
+0 g
+229.784 818.135 m
+229.353 818.551 229.572 819.296 229.164 819.556 c
+228.355 820.072 230.462 820.129 230.234 820.845 c
+229.851 822.051 230.038 822.072 229.916 823.348 c
+229.859 823.946 230.447 825.486 230.832 825.926 c
+232.278 827.578 230.954 830.51 232.594 832.061 c
+232.898 832.35 233.274 832.902 233.559 833.32 c
+234.218 834.283 235.402 834.771 236.352 835.599 c
+236.67 835.875 236.469 836.702 237.038 836.61 c
+237.752 836.495 238.993 836.625 238.948 835.784 c
+238.835 833.664 237.506 831.944 236.226 830.276 C
+236.677 829.572 236.219 828.937 235.935 828.38 c
+234.6 825.76 234.789 822.919 234.615 820.079 c
+234.61 819.994 234.303 819.916 234.311 819.863 c
+234.664 817.528 235.248 815.329 236.127 813.1 c
+236.493 812.17 236.964 811.275 237.114 810.348 c
+237.225 809.662 237.328 808.829 236.92 808.124 C
+238.955 805.234 237.646 802.583 238.815 799.052 c
+239.022 798.427 240.714 796.513 240.251 796.674 c
+237.738 797.545 237.626 797.943 237.449 798.696 c
+237.303 799.319 236.973 800.696 236.736 801.298 c
+236.672 801.462 236.501 803.346 236.423 803.468 c
+234.91 805.85 236.268 805.674 234.898 808.032 C
+233.47 808.712 232.504 809.816 231.381 810.978 c
+231.183 811.182 232.326 811.906 232.145 812.119 c
+231.053 813.408 229.9 814.175 230.236 815.668 c
+230.391 816.358 230.528 817.415 229.784 818.135 c
+f
+226.2 816.4 m
+226.6 809.6 229 808 v
+231.4 806.4 230.2 807.2 227 808.4 c
+223.8 809.6 225 810.4 y
+222.2 810 224.6 808 v
+227 806 230.6 803.6 229 803.6 c
+227.4 803.6 219.8 807.6 219.8 810.4 c
+219.8 813.2 218.8 817.3 y
+219.9 818.1 224.7 818 V
+226.1 817.3 226.2 816.4 V
+f
+1 g
+1 J 0.1 w
+225.4 797.8 m
+216.88 800.591 198.4 797.2 V
+207.431 799.278 226.2 797 v
+236.5 795.75 225.4 797.8 Y
+b
+227.498 797.871 m
+219.252 801.389 200.547 799.608 V
+209.725 800.897 228.226 797.005 v
+238.38 794.869 227.498 797.871 Y
+b
+229.286 797.778 m
+221.324 801.899 202.539 801.514 V
+211.787 802.118 229.948 796.86 v
+239.914 793.975 229.286 797.778 Y
+b
+230.556 797.555 m
+223.732 801.862 206.858 802.96 V
+215.197 802.79 231.078 796.681 v
+239.794 793.328 230.556 797.555 Y
+b
+345.84 787.039 m
+344.91 786.395 345.124 787.576 v
+345.339 788.757 373.547 801.927 377.161 801.677 C
+346.913 788.471 345.84 787.039 V
+b
+342.446 786.4 m
+341.57 785.685 341.691 786.879 v
+341.812 788.073 368.899 803.418 372.521 803.452 C
+343.404 787.911 342.446 786.4 V
+b
+339.16 785.025 m
+338.332 784.253 338.374 785.453 v
+338.416 786.652 358.233 802.149 368.045 804.023 C
+350.015 795.896 339.16 785.025 V
+b
+336.284 783.162 m
+335.539 782.468 335.577 783.547 v
+335.615 784.627 353.449 798.574 362.28 800.26 C
+346.054 792.946 336.284 783.162 V
+b
+0.8 g
+0 J 1 w
+304.6 635.199 m
+289.4 637.599 306.2 639.199 V
+324.2 641.199 328.2 646.399 V
+341.8 655.599 344.6 655.999 v
+347.4 656.399 363.8 659.999 364.2 662.399 c
+364.6 664.799 370.6 667.199 372.2 666.399 c
+373.8 665.599 373.8 656.399 371 655.599 c
+368.2 654.799 349.4 647.599 343 646.399 c
+336.6 645.199 325 637.599 320.2 636.399 c
+315.4 635.199 304.6 635.199 Y
+f
+0 g
+377.6 672.599 m
+374.6 670.999 373.4 668.399 V
+367 657.799 352.8 654.599 V
+329.8 645.599 322 643.599 V
+308.6 638.599 301.2 639.399 V
+294.2 639.199 300.4 637.599 V
+320.6 639.599 324 641.399 V
+339.6 646.599 342.6 649.199 v
+345.6 651.799 363.8 656.799 366 658.799 c
+368.2 660.799 378 669.199 377.6 672.599 C
+f
+318.882 641.089 m
+324.111 641.315 322.958 639.766 v
+321.805 638.216 319.357 639.09 y
+318.882 641.089 l
+f
+311.68 639.737 m
+316.908 639.963 315.756 638.414 v
+314.603 636.864 312.155 637.737 y
+311.68 639.737 l
+f
+301.251 638.489 m
+306.48 638.716 305.327 637.166 v
+304.174 635.617 301.726 636.49 y
+301.251 638.489 l
+f
+293.617 637.945 m
+298.846 638.171 297.693 636.622 v
+296.54 635.072 294.092 635.946 y
+293.617 637.945 l
+f
+335.415 648.487 m
+342.375 648.788 340.84 646.726 v
+339.306 644.664 336.047 645.826 y
+335.415 648.487 l
+f
+345.73 652.912 m
+351.689 656.213 351.155 651.151 v
+350.885 648.595 346.362 650.251 y
+345.73 652.912 l
+f
+354.862 655.726 m
+362.021 659.427 360.287 653.965 v
+359.509 651.515 355.493 653.065 y
+354.862 655.726 l
+f
+364.376 660.551 m
+368.735 665.452 369.801 658.79 v
+370.207 656.252 365.008 657.89 y
+364.376 660.551 l
+f
+326.834 644.003 m
+332.062 644.23 330.91 642.68 v
+329.757 641.131 327.308 642.004 y
+326.834 644.003 l
+f
+1 g
+1 J 0.1 w
+362.434 765.397 m
+361.708 764.732 361.707 765.803 v
+361.707 766.873 379.191 780.137 388.034 781.521 C
+371.935 774.792 362.434 765.397 V
+b
+0 g
+0 J 1 w
+365.4 701.6 m
+387.401 679.199 396.601 675.599 V
+405.801 664.399 401.801 638.399 V
+398.601 630.799 395.401 651.599 V
+398.601 676.799 387.401 660.799 V
+379 670.699 385.4 670.399 V
+388.601 668.399 389.001 669.999 v
+389.401 671.599 381.4 685.199 364.2 699.6 c
+347 714 365.4 701.6 Y
+f
+1 g
+1 J 0.1 w
+307 662.799 m
+306.8 664.599 308.6 663.799 v
+310.4 662.999 404.601 656.799 436.201 632.799 C
+391.001 655.999 307 662.799 V
+b
+317.4 667.199 m
+317.2 668.999 319 668.199 v
+320.8 667.399 457.401 668.399 481.001 635.999 C
+459.001 661.199 317.4 667.199 V
+b
+329 671.199 m
+328.8 672.999 330.6 672.199 v
+332.4 671.399 505.801 684.399 529.401 651.999 C
+519.801 677.599 329 671.199 V
+b
+339 675.999 m
+338.8 677.799 340.6 676.999 v
+342.4 676.199 464.601 714.8 488.201 682.399 C
+474.801 707 339 675.999 V
+b
+281 653.199 m
+280.8 654.999 282.6 654.199 v
+284.4 653.399 302.2 651.199 304.2 612.399 C
+297 654.399 281 653.199 V
+b
+272.2 651.599 m
+272 653.399 273.8 652.599 v
+275.6 651.799 289.8 656.399 287 617.599 C
+288.2 652.799 272.2 651.599 V
+b
+264.2 651.199 m
+264 652.999 265.8 652.199 v
+267.6 651.399 283 650.799 270.6 628.399 C
+280.2 652.399 264.2 651.199 V
+b
+311.526 695.535 m
+311.082 693.536 312.631 694.753 v
+328.699 707.378 361.141 766.28 416.826 771.914 C
+378.518 784.024 311.526 695.535 V
+b
+322.726 697.335 m
+321.363 698.528 323.231 699.153 v
+325.099 699.778 437.541 772.28 476.826 764.314 C
+449.719 771.824 322.726 697.335 V
+b
+301.885 691.233 m
+301.376 689.634 303.087 690.61 v
+312.062 695.73 315.677 752.941 359.254 754.196 C
+326.843 768.91 301.885 691.233 V
+b
+281.962 680.207 m
+280.885 678.921 282.838 679.175 v
+293.084 680.507 314.489 721.778 358.928 716.699 C
+326.962 731.045 281.962 680.207 V
+b
+293.2 686.333 m
+292.389 684.864 294.258 685.489 v
+304.057 688.763 317.141 733.375 361.729 736.922 C
+327.603 744.865 293.2 686.333 V
+b
+274.922 675.088 m
+274.049 674.046 275.631 674.252 v
+283.93 675.331 301.268 708.76 337.264 704.646 C
+311.371 716.266 274.922 675.088 V
+b
+267.323 669.179 m
+266.318 668.134 267.909 668.252 v
+272.077 668.561 302.715 701.64 321.183 686.138 C
+309.168 704.861 267.323 669.179 V
+b
+336.855 701.102 m
+335.654 702.457 337.586 702.842 v
+339.518 703.226 460.221 760.939 498.184 748.073 C
+472.243 758.947 336.855 701.102 V
+b
+303.4 636.799 m
+303.2 638.599 305 637.799 v
+306.8 636.999 322.2 636.399 309.8 613.999 C
+319.4 637.999 303.4 636.799 V
+b
+313.8 638.399 m
+313.6 640.199 315.4 639.399 v
+317.2 638.599 335 636.399 337 597.599 C
+329.8 639.599 313.8 638.399 V
+b
+320.6 639.999 m
+320.4 641.799 322.2 640.999 v
+324 640.199 348.6 636.799 372.2 604.399 C
+336.6 641.199 320.6 639.999 V
+b
+328.225 642.028 m
+327.788 643.786 329.678 643.232 v
+331.568 642.678 352.002 644.577 390.099 610.401 C
+343.924 645.344 328.225 642.028 V
+b
+338.625 646.428 m
+338.188 648.186 340.078 647.632 v
+341.968 647.078 376.802 642.577 428.499 607.601 C
+354.324 649.744 338.625 646.428 V
+b
+298.2 657.999 m
+298 659.799 299.8 658.999 v
+301.6 658.199 355 655.599 385.4 628.799 C
+350.499 653.574 298.2 657.999 V
+b
+288.2 653.999 m
+288 655.799 289.8 654.999 v
+291.6 654.199 316.2 650.799 339.8 618.399 C
+304.2 655.199 288.2 653.999 V
+b
+349.503 651.038 m
+348.938 652.759 350.864 652.345 v
+352.79 651.932 387.86 649.996 441.981 618.902 C
+364.317 653.296 349.503 651.038 V
+b
+357.903 653.438 m
+357.338 655.159 359.264 654.745 v
+361.19 654.332 396.26 652.396 450.381 621.302 C
+373.317 656.096 357.903 653.438 V
+b
+367.503 658.438 m
+366.938 660.159 368.864 659.745 v
+370.79 659.332 413.86 654.996 503.582 620.702 C
+382.917 661.096 367.503 658.438 V
+b
+0 g
+0 J 1 w
+256.2 651.599 m
+261.4 651.999 260.2 650.399 v
+259 648.799 256.6 649.599 y
+256.2 651.599 l
+f
+287 637.599 m
+292.2 637.999 291 636.399 v
+289.8 634.799 287.4 635.599 y
+287 637.599 l
+f
+278.2 637.999 m
+283.4 638.399 282.2 636.799 v
+281 635.199 278.6 635.999 y
+278.2 637.999 l
+f
+182.831 649.818 m
+187.876 648.495 186.218 647.376 v
+184.561 646.256 182.554 647.798 y
+182.831 649.818 l
+f
+184.831 659.418 m
+189.876 658.095 188.218 656.976 v
+186.561 655.856 184.554 657.398 y
+184.831 659.418 l
+f
+177.631 663.818 m
+182.676 662.495 181.018 661.376 v
+179.361 660.256 177.354 661.798 y
+177.631 663.818 l
+f
+0.8 g
+1 J 0.1 w
+257.4 588.799 m
+255.8 588.799 251.8 586.799 V
+249.8 586.799 238.6 583.199 233 573.199 C
+245.4 582.799 257.4 588.799 V
+f
+345.116 496.153 m
+345.257 495.895 345.312 495.475 345.604 495.458 c
+346.262 495.418 347.495 495.117 347.37 495.753 c
+346.522 500.059 345.648 504.996 341.515 506.803 c
+340.876 507.082 339.434 506.669 339.36 505.785 c
+339.233 504.261 339.116 502.912 339.425 501.446 c
+339.725 500.025 341.883 500.015 342.8 501.399 C
+343.736 499.727 344.168 497.884 345.116 496.153 c
+f
+334.038 491.419 m
+334.786 490.006 334.659 488.147 336.074 487.584 c
+336.814 487.29 338.664 488.265 338.246 489.339 c
+337.444 491.4 337.056 493.639 335.667 495.45 c
+335.467 495.712 335.707 496.245 335.547 496.573 c
+334.953 497.793 333.808 498.528 332.4 498.199 C
+331.285 495.996 332.433 493.867 333.955 492.158 c
+334.091 492.006 333.925 491.63 334.038 491.419 c
+f
+294.436 496.609 m
+294.328 496.986 294.29 497.449 294.455 497.77 c
+294.986 498.803 295.779 499.925 295.442 500.947 c
+295.094 502.003 293.978 501.821 293.328 501.252 c
+292.193 500.258 292.144 498.432 291.453 497.073 c
+291.257 496.687 291.308 496.114 290.867 495.723 c
+290.393 495.302 289.953 493.778 290.049 493.207 c
+290.102 492.894 289.919 482.986 290.141 483.249 c
+290.76 483.982 293.81 493.716 293.879 494.608 c
+293.936 495.339 294.668 495.804 294.436 496.609 c
+f
+268.798 503.401 m
+271.432 505.9 274.222 508.861 273.78 512.573 c
+273.664 513.549 271.889 513.022 271.702 512.176 c
+270.9 508.551 268.861 505.89 266.293 503.498 c
+264.097 501.451 262.235 495.107 262 494.599 C
+265.697 499.855 267.954 502.601 268.798 503.401 c
+f
+255.224 509.365 m
+255.747 509.735 255.445 510.226 255.662 510.558 c
+256.615 512.016 257.916 513.262 257.934 515 c
+257.937 515.277 257.559 515.586 257.224 515.362 c
+256.947 515.178 256.605 515.048 256.497 514.918 c
+254.467 512.469 253.067 509.798 251.624 506.986 c
+251.441 506.629 250.297 502.138 250.61 502.027 c
+250.849 501.942 252.569 506.123 252.779 506.237 c
+254.042 506.923 254.054 508.538 255.224 509.365 c
+f
+271.957 489.821 m
+272.401 490.69 273.977 491.892 273.864 492.781 c
+273.746 493.709 274.214 495.152 273.302 494.464 c
+272.045 493.516 268.596 492.167 268.326 486.359 c
+268.3 485.788 271.274 488.481 271.957 489.821 c
+f
+286.4 506.999 m
+286.8 507.667 287.508 507.194 287.967 507.457 c
+288.615 507.829 289.226 508.387 289.518 509.036 c
+290.488 511.185 292.257 513.005 292.4 515.399 C
+290.909 516.804 290.23 514.764 289.6 513.799 C
+288.277 515.446 287.278 513.572 285.978 513.053 c
+285.908 513.025 285.695 513.372 285.62 513.345 c
+284.443 512.905 283.763 511.824 282.765 511.043 c
+282.594 510.909 282.189 511.089 282.042 510.953 c
+281.39 510.35 280.417 510.025 280.137 509.343 c
+279.027 506.636 275.887 504.541 274 496.999 C
+274.381 496.09 278.512 503.641 278.999 504.339 c
+279.835 505.535 279.953 502.678 281.229 503.344 c
+281.28 503.371 281.466 503.133 281.6 502.999 C
+281.794 503.279 282.012 503.508 282.4 503.399 C
+282.4 503.799 282.266 504.355 282.467 504.514 c
+283.704 505.491 283.62 506.559 284.4 507.799 C
+284.858 507.01 285.919 507.729 286.4 506.999 C
+f
+346.2 452.599 m
+353.6 472.999 349.2 484.199 V
+360.6 462.599 356 451.399 V
+355.6 461.799 351.6 466.799 V
+347.6 453.999 346.2 452.599 V
+f
+331.4 455.199 m
+336.8 463.999 328.8 482.399 V
+328 461.999 321.2 450.999 V
+335.4 471.199 331.4 455.199 V
+f
+321.4 457.199 m
+321.2 477.199 321.6 480.199 V
+317.8 463.599 307.6 453.999 V
+322 465.999 321.4 457.199 V
+f
+311.8 489.199 m
+317.8 475.599 307.8 457.199 V
+314.2 469.399 309.4 476.399 V
+312 479.799 311.8 489.199 V
+f
+292.6 457.599 m
+291.6 473.199 293.4 475.399 V
+293.6 481.799 293.2 482.799 V
+297.2 488.999 297.4 481.599 V
+298.8 473.799 301.6 469.199 V
+305.2 463.799 305 457.399 V
+295 487.599 292.6 457.599 V
+f
+289 485.199 m
+282.4 474.399 280.6 455.399 V
+279.2 461.599 283 475.999 V
+287.2 491.399 289 485.199 V
+f
+267.2 465.399 m
+272.2 470.799 273.6 475.799 V
+277.2 491.599 270.8 482.999 V
+271 474.999 262.8 467.599 V
+267.6 469.999 267.2 465.399 V
+f
+261.4 470.399 m
+264.8 487.799 265.6 488.599 V
+267.4 491.999 264.6 488.799 V
+255.8 469.599 251.8 462.999 V
+259.8 472.199 261.4 470.399 V
+f
+255.6 486.999 m
+267.2 509.399 245.4 483.599 V
+256.4 493.399 255.6 486.999 V
+f
+240.2 501.599 m
+245 520.399 247.6 520.199 V
+255.8 529.199 249.2 518.599 V
+243.2 508.999 243.8 499.199 V
+243.2 508.799 240.2 501.599 V
+f
+570.5 513 m
+558.5 523 556 526.5 V
+569.5 508 569.5 501 V
+572 508.5 570.5 513 V
+f
+576 535 m
+555 550 551.5 557.5 V
+578 528 578 523.5 V
+578.5 532.5 576 535 V
+f
+593 689 m
+581 697 579.5 695 V
+590 688.5 592.5 680 V
+591 689 593 689 V
+f
+601.5 608.5 m
+584 620.5 l
+603 603.5 603.5 599.5 V
+601.5 608.5 L
+f
+0 g
+1 w
+210.75 631 m
+232.75 626.25 l
+S
+261 469 m
+260.5 472.5 251.5 462 v
+S
+266.5 464 m
+268.5 470.5 262 466 v
+S
+320.5 455.5 m
+322 466.5 310.5 453.5 v
+S
+
+showpage
+
+%%Trailer
+end
+tigersave restore
+%%EOF
diff --git a/Master/xemtex/doc/ghostscript/examples/vasarely.ps b/Master/xemtex/doc/ghostscript/examples/vasarely.ps
new file mode 100644
index 00000000000..82b9e616562
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/vasarely.ps
@@ -0,0 +1,588 @@
+%!
+% vasarely
+% Elizabeth D. Zwicky
+% zwicky@sgi.com
+/vasarelysave save def % prevent residual side effects
+%
+% Inspired by Vasarely's experiments with tilting circles and squares
+% (for instance "Tlinko" and "Betelgeuse"
+
+%% circles
+/part { circle } def /nnrand false def
+%% squares
+% /part { ngon } def /nn 4 def /nnrand false def
+%% random polygons
+% /part { ngon } def /nnrand true def
+%% random stars (not my favorite on this program)
+% /part { nstar } def /nnrand true def
+
+%% tilt the base shape a random amount?
+/twist false def
+% /twist true def
+
+
+/rainbow false def
+%% To make rainbows
+% /rainbow true def
+%% Set this to 1 to go through a full range of colors
+/rainrange .25 def
+
+% number of different designs per page
+/inheight 2 def
+/inwidth 2 def
+% number of repeats in a design
+/xtimes 10 def
+/ytimes 16 def
+
+%% This sets the relationship between the two hues: comptwo is maximum contrast
+/colorway {comptwo} def
+%% monochrome comptwo harmtwo harmfour freecolor compthree closeharm
+%% origcolor
+
+%% This sets the brightness and saturation of the colors; vivid makes
+%% them both bright
+/colorfam {vivid} def
+%% vivid jewel intense medium pastel free orig contrast
+%% medjewel medvivid vivpastel medpastel
+
+
+%% Only experts below this point!
+
+usertime srand
+/seed rand def
+
+/starcompensate false def
+/constroke 1 def
+
+
+
+/circle {
+ /radius radius 1.33 mul def
+ currentpoint /herey exch def /herex exch def
+ herex herey radius 0 360 arc
+} def
+
+/ngon{ % polygon of n sides, n determined by nn
+ nside 2 div radius rmoveto
+ nn cvi {
+ nside neg 0 rlineto
+ 360 360 nn div sub neg rotate
+ } repeat
+ closepath
+} def
+
+/nstar{ % star of n points, n determined by nstarslider
+ /radius radius 1.33 mul def
+ currentpoint /herey exch def /herex exch def
+ 0 radius rmoveto
+ 90 nstarangle 2 div add neg rotate
+ nn cvi {nstarside 0 rlineto
+ 180 180 nstarangle 2 mul sub sub neg rotate
+ nstarside 0 rlineto
+ 180 180 360 nn div sub nstarangle 2 mul sub sub rotate
+ } repeat
+ 90 nstarangle 2 div add rotate
+ closepath
+} def
+
+/nstarangle {180 360 nn div sub 3 div} def
+/nstarside {
+ 2
+ radius
+ 1
+ 180 nn div
+ sin
+ div
+ div
+ mul
+ nstarangle sin
+ mul
+ 180
+ nstarangle 2 mul
+ sub
+ sin
+ div
+} def
+
+/nside {
+ 2
+ radius
+ 360 nn div 2 div tan
+ mul
+ mul
+} def
+
+
+/tan { /alpha exch def
+ alpha sin
+ 1 alpha sin dup mul sub sqrt
+ div
+} def
+
+
+/pastel {
+ /backbright high def
+ /backsat medlow def
+ /fillbright high def
+ /fillsat medlow def
+ /eobright high def
+ /eosat medlow def
+ constroke 0 eq {
+ /strokebright high def
+ /strokesat medlow def
+ }
+ {
+ /strokebright low def
+ /strokesat high def
+ } ifelse
+} def
+
+/jewel {
+ /fillbright med def
+ /fillsat high def
+ /backbright med def
+ /backsat high def
+ /eobright med def
+ /eosat high def
+ constroke 0 eq {
+ /strokebright medlow def
+ /strokesat high def
+ }
+ {
+ /strokebright high def
+ /strokesat medlow def
+ } ifelse
+} def
+
+/vivid {
+ /fillsat 1 def
+ /fillbright high def
+ /eosat 1 def
+ /eobright high def
+ /backsat 1 def
+ /backbright high def
+ constroke 0 eq {
+ /strokesat 1 def
+ /strokebright high def
+ }
+ {
+ /strokesat high def
+ /strokebright medlow def
+ } ifelse
+} def
+
+/free {
+ /fillsat anyrand def
+ /fillbright anyrand def
+ /eosat anyrand def
+ /eobright anyrand def
+ /backsat anyrand def
+ /backbright anyrand def
+ /strokesat anyrand def
+ /strokebright anyrand def
+} def
+
+/contrast {
+ /sat medhigh def
+ /bright rand 2 mod 0 eq {medhigh} {medlow} ifelse def
+ /backsat sat def
+ /backbright bright def
+ /eosat sat def
+ /eobright 1 bright sub def
+ /fillsat sat def
+ /fillbright bright def
+ /strokebright rand 2 mod def
+ /strokesat rand 2 mod def
+
+} def
+/medium {
+ /backsat med def
+ /backbright med def
+ /eosat med def
+ /eobright med def
+ /fillsat med def
+ /fillbright med def
+ /strokebright med def
+ /strokesat med def
+
+} def
+/intense {
+ /backsat high def
+ /backbright med def
+ /eosat high def
+ /eobright high def
+ /fillsat high def
+ /fillbright med def
+ /strokebright high def
+ /strokesat high def
+
+} def
+/orig {
+ /backsat rand 99 mod 55 add 100 div def
+ /backbright rand 99 mod 35 add 100 div def
+ /eosat rand 77 mod 22 add 100 div def
+ /eobright 90 rand 75 mod sub 15 add 100 div def
+ /fillsat 100 rand 90 mod sub 100 div def
+ /fillbright 100 rand 45 mod sub 20 add 100 div def
+ /strokebright 100 rand 55 mod sub 100 div def
+ /strokesat 100 rand 85 mod sub 100 div def
+
+} def
+
+/medjewel {
+ /alt rand 2 mod def
+ /backsat alt 0 eq {high} { med} ifelse def
+ /fillsat alt 0 eq {med} {high} ifelse def
+ /eosat alt 0 eq {high} {med} ifelse def
+ /backbright med def
+ /fillbright med def
+ /eobright med def
+ constroke 0 eq {
+ /strokebright medlow def
+ /strokesat high def
+ }
+ {
+ /strokebright high def
+ /strokesat medlow def
+ } ifelse
+} def
+
+/medvivid {
+ /alt rand 2 mod def
+ /backsat alt 0 eq {1} { med} ifelse def
+ /fillsat alt 0 eq {med} {1} ifelse def
+ /eosat alt 0 eq {1} {med} ifelse def
+ /backbright alt 0 eq {high} {med} ifelse def
+ /eobright alt 0 eq {high} {med} ifelse def
+ /fillbright alt 0 eq {med} {high} ifelse def
+ constroke 0 eq {
+ /strokesat 1 def
+ /strokebright high def
+ }
+ {
+ /strokesat high def
+ /strokebright medlow def
+ } ifelse
+} def
+/vivpastel {
+ /backlight rand 2 mod def
+ /backsat backlight 0 eq {medlow} {1} ifelse def
+ /eosat backlight 0 eq {medlow} {1} ifelse def
+ /fillsat backlight 0 eq {1} {medlow} ifelse def
+ /fillbright high def
+ /backbright high def
+ /eobright high def
+ constroke 0 eq {
+ /strokesat 1 def
+ /strokebright high def
+ }
+ {
+ /strokesat high def
+ /strokebright medlow def
+ } ifelse
+} def
+
+/medpastel {
+ /alt rand 2 mod def
+ /backsat alt 0 eq {medlow} {med} ifelse def
+ /eosat alt 0 eq {medlow} {med} ifelse def
+ /fillsat alt 0 eq {med} {medlow} ifelse def
+ /fillbright alt 0 eq { high } {med} ifelse def
+ /backbright alt 0 eq {med} { high } ifelse def
+ /eobright alt 0 eq {med} { high } ifelse def
+ constroke 0 eq {
+ /strokebright high def
+ /strokesat medlow def
+ }
+ {
+ /strokebright low def
+ /strokesat high def
+ } ifelse
+} def
+
+/maxcon {
+ rand 2 mod 1 eq {
+ /backsat 0 def
+ /backbright 0 def
+ /eosat 0 def
+ /eobright 0 def
+ /fillsat 0 def
+ /fillbright 1 def
+ /strokebright 1 def
+ /strokesat 0 def
+ }
+ {
+ /backsat 0 def
+ /backbright 1 def
+ /eosat 0 def
+ /eobright 1 def
+ /fillsat 0 def
+ /fillbright 0 def
+ /strokebright 0 def
+ /strokesat 0 def
+ }
+ ifelse
+} def
+
+/monochrome {
+ /fillhue hue closevary def
+ /strokehue hue closevary def
+ /eohue hue closevary def
+ /backhue hue def
+} def
+
+/blackandwhite {
+ /fillhue 1 def
+ /eohue 0 def
+ /backhue 0 def
+ /strokehue 1 def
+} def
+
+
+/freecolor {
+ /fillhue anyrand def
+ /strokehue anyrand def
+ /eohue anyrand def
+ /backhue anyrand def
+} def
+
+/purple {
+ /fillhue rand 15 mod 80 add 100 div def
+ /backhue rand 15 mod 80 add 100 div def
+ /strokehue rand 15 mod 80 add 100 div def
+ /eohue rand 15 mod 80 add 100 div def
+ /backhue rand 15 mod 80 add 100 div def
+} def
+
+/comptwo {
+ /fillhue hue closevary def
+ /strokehue hue .5 add dup 1 gt {1 sub} if def
+ /backhue strokehue def
+ /eohue strokehue closevary def
+} def
+
+/compthree {
+ /backhue hue def
+ /strokehue hue 1 3 div add dup 1 gt {1 sub} if closevary def
+ /fillhue strokehue closevary def
+ /eohue hue 1 3 div sub dup 1 lt { 1 add} if closevary def
+} def
+
+/origcolor {
+ /backhue hue def
+ /strokehue
+ hue 1000 mul cvi 3 mod dup 1 eq
+ {hue closevary}
+ {2 eq
+ {rand 999 mod 1000 div}
+ {hue .5 add dup 1 gt {1 sub} if }
+ ifelse
+ }
+ ifelse def
+ /fillhue hue 1000 mul cvi 3 mod dup 1 eq
+ {hue closevary}
+ {2 eq
+ {rand 999 mod 1000 div}
+ {hue .5 add dup 1 gt {1 sub} if }
+ ifelse
+ }
+ ifelse
+ def
+ /eohue hue 1000 mul cvi 2 mod 1 eq
+ {hue closevary}
+ {rand 999 mod 1000 div}
+ ifelse def
+} def
+
+/harmtwo {
+ /fillhue hue closevary def
+ /backhue hue def
+ /strokehue hue .2 add dup 1 gt {1 sub} if closevary def
+ /eohue strokehue closevary def
+} def
+
+/harmfour {
+ /fillhue hue closevary def
+ /backhue hue .1 add dup 1 gt {1 sub} if def
+ /strokehue hue .2 add dup 1 gt {1 sub} if closevary def
+ /eohue hue .1 sub dup 1 lt {1 add} if closevary def
+} def
+
+/closeharm {
+ /fillhue hue def
+ /backhue hue .05 add dup 1 gt {1 sub} if closevary def
+ /strokehue hue .1 add dup 1 gt {1 sub} if closevary def
+ /eohue hue .05 sub dup 0 lt {1 add} if closevary def
+} def
+
+
+/high {100 rand 25 mod sub 100 div } def
+/med { rand 33 mod 33 add 100 div } def
+/medhigh {100 rand 50 mod sub 100 div } def
+/medlow {rand 50 mod 100 div } def
+/low { rand 25 mod 100 div} def
+/anyrand { rand 100 mod 100 div } def
+/closevary {rand 70 mod rand 100 mod sub 1000 div add} def
+
+%rainbow
+% {/colorfill {fillhue 1 1 sethsbcolor fill} def}
+ /colorfill {fillhue fillsat fillbright sethsbcolor fill } def
+%ifelse
+/colorstroke {strokehue strokesat strokebright sethsbcolor stroke } def
+/eocolorfill {eohue eosat eobright sethsbcolor eofill } def
+/backfill{ backhue backsat backbright sethsbcolor fill } def
+
+/xstep { xrange xtimes 1 sub div x 1 sub mul } def
+/ystep { yrange ytimes 1 sub div y 1 sub mul} def
+
+/functionarray [
+ {sin abs}
+ {sin }
+ {cos }
+ {cos abs}
+ {sin dup mul }
+ {cos dup mul }
+ {sin abs sqrt }
+ {cos abs sqrt }
+] def
+
+/range { /top exch def /bottom exch def /number exch def
+% number is between -1 and 1
+ /rangesize top bottom sub def
+ number 1 add 2 div
+ % number is now between 0 and 1
+ rangesize mul
+ bottom add
+ } def
+
+/drawone {
+ /radius
+ width height lt {width 3 div} {height 3 div} ifelse
+ def
+ seed srand
+ 0 0 moveto
+ /origmatrix [ 0 0 0 0 0 0 ] currentmatrix def
+ [ % xstep function ystep function2 add .4 1.3 range
+ 1
+ ystep function xstep function add -.25 .25 range
+ ystep function3 xstep function2 add -.5 .5 range
+% xstep function4 ystep function mul .4 1.3 range
+ 1
+ 0
+ 0
+ ]
+ concat
+ twist {twistdeg rotate} if
+ part colorfill
+ origmatrix setmatrix
+ rainbow
+ {/fillhue fillhue rainrange xtimes ytimes mul div add dup 1 gt {1 sub} if def}
+ if
+
+} def
+
+/notdrawone {
+ seed srand
+ twist {/twistdeg rand 360 mod def} if
+ nnrand {/nn rand 6 mod 3 add def} if
+ /x1 rand width 3 div cvi mod width 8 div add def
+ /y1 rand height 3 div cvi mod height 8 div add def
+ rand 3 mod dup 1 eq
+ {pop /x2 rand width 2 div cvi mod def
+ /y2 rand height 2 div cvi mod def}
+ { 2 eq
+ {/x2 y1 def /y2 x1 def}
+ {/x2 y1 width mul height div def /y2 x1 height mul width div def}
+ ifelse
+ }
+ ifelse
+ /radius width height gt {width} {height} ifelse 2.5 div def
+ /stripe rand width 10 div cvi mod 2 add def
+ starcompensate { /stripe stripe 2 mul def /radius radius 10 nn div mul def } if
+ /i 1 def
+ /repeats radius stripe div cvi 1 add def
+ /nnincr 1 def
+ repeats {
+ colorvary {colorfam colorway} if
+ /i i 1 add def
+ /radius radius stripe sub def
+
+ } repeat
+} def
+
+
+/page {
+ clippath pathbbox /ury exch def /urx exch def /lly exch def /llx exch
+def
+/pagewidth urx llx sub def
+/pageheight ury lly sub def
+0 0 moveto
+ llx lly translate
+ /outerwidth
+ pagewidth inwidth div
+ def
+ /outerheight
+ pageheight inheight div
+ def
+ /width
+ outerwidth xtimes div
+ def
+ /height
+ outerheight ytimes div
+ def
+
+
+
+ /size
+ width height gt {width} {height} ifelse
+ def
+ inwidth {
+ inheight {
+
+ /seed rand def
+ /hue rand 999 mod 1000 div def
+ colorway colorfam
+ /x 1 def /y 1 def
+ nnrand {/nn rand 6 mod 3 add def} if
+ /twistdeg rand 360 mod def
+
+ /function functionarray rand functionarray length mod get def
+ /function2 functionarray rand functionarray length mod get def
+ /function3 functionarray rand functionarray length mod get def
+ /function4 functionarray rand functionarray length mod get def
+
+/xrange [ 90 180 270 360 180 360 ] rand 6 mod get def
+/yrange [ 90 180 270 360 180 360 ] rand 6 mod get def
+ initclip
+ newpath
+ 0 0 moveto
+ outerwidth 0 rlineto
+ 0 outerheight rlineto
+ outerwidth neg 0 rlineto
+ backfill
+
+ xtimes {
+ ytimes{
+ /y y 1 add def
+ width 2 div height 2 div translate
+ drawone
+ width 2 div neg height 2 div neg translate
+ 0 height translate
+ } repeat
+
+ /y 1 def
+ /x x 1 add def
+ width height ytimes mul neg translate
+
+ } repeat
+
+ width xtimes mul neg outerheight translate
+ } repeat
+ outerwidth outerheight inheight mul neg translate
+ } repeat
+
+ } def
+
+page showpage
+clear cleardictstack
+vasarelysave restore
diff --git a/Master/xemtex/doc/ghostscript/examples/waterfal.ps b/Master/xemtex/doc/ghostscript/examples/waterfal.ps
new file mode 100644
index 00000000000..0236f8f06a2
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/examples/waterfal.ps
@@ -0,0 +1,80 @@
+%!
+/waterfalsave save def % prevent residual side effects
+% Copyright (C) 1992, 1993, 1996 Aladdin Enterprises. All rights reserved.
+%
+% This program is free software; you can redistribute it and/or modify it
+% under the terms of the GNU General Public License as published by the
+% Free Software Foundation; either version 2 of the License, or (at your
+% option) any later version.
+%
+% This program is distributed in the hope that it will be useful, but
+% WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+% Public License for more details.
+%
+% You should have received a copy of the GNU General Public License along
+% with this program; if not, write to the Free Software Foundation, Inc.,
+% 59 Temple Place, Suite 330, Boston, MA, 02111-1307.
+
+% $Id: waterfal.ps,v 1.3.2.1.2.1 2003/04/12 14:02:38 giles Exp $
+% waterfal.ps
+% This file produces a 'waterfall' printout of fonts at various sizes.
+
+
+% Specify any desired set of up to 3 fonts here.
+/Fonts [/Courier /Helvetica] def
+
+% Specify any desired set of point sizes here.
+% The sum of the sizes should not exceed (roughly) 100.
+% For sizes larger than about 16, some characters may fall off the page.
+/Sizes [6 7 8 9 10 11 12 14 16] def
+
+/eol
+ { currentfont /FontBBox get aload pop
+ exch pop sub exch pop 0 exch
+ % Many Ghostscript fonts have incorrect FontBBoxes....
+ pop -1000
+ 1.15 mul currentfont /FontMatrix get dtransform
+ translate
+ 0 0 moveto
+ } def
+
+(landscap.ps) runlibfile
+clippath pathbbox newpath
+/ury exch def /urx exch def /lly exch def /llx exch def
+llx 18 add ury 18 sub translate
+% Read the current Y resolution without using Ghostscript-specific operators.
+gsave initmatrix 0 72 dtransform abs exch abs exch .max grestore
+round cvi /dpi exch def
+QUIET not
+ { (Creating waterfall printout at ) print dpi =only ( DPI.\n) print flush
+ }
+if
+
+newpath 0 setgray
+/Courier findfont 20 scalefont setfont
+
+Fonts
+ { save exch
+ QUIET not { dup ==only flush } if
+ findfont /basefont exch def
+ basefont 20 scalefont setfont eol
+ basefont /FontName get =string cvs show
+ ( ) show dpi =string cvs show ( DPI) show
+ Sizes
+ { QUIET not { ( ) print dup =only flush } if
+ dup /size exch def basefont exch scalefont setfont eol
+ size =string cvs show ( ) show
+ (qwertyuiop-asdfghjkl_zxcvbnm ) show
+ (QWERTYUIOP+ASDFGHJKL/ZXCVBNM ) show
+ (1470258369 .,:;?!) show
+ } forall
+ QUIET not { () = flush } if
+ matrix currentmatrix aload pop
+ 7 -1 roll restore
+ 6 array astore setmatrix
+ } forall
+
+showpage
+clear cleardictstack
+waterfalsave restore
diff --git a/Master/xemtex/doc/ghostscript/gs-vms.hlp b/Master/xemtex/doc/ghostscript/gs-vms.hlp
new file mode 100644
index 00000000000..9156b6af303
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/gs-vms.hlp
@@ -0,0 +1,293 @@
+1 gs
+ gs - GNU Ghostscript interpreter/previewer
+! $Id: gs-vms.hlp,v 1.12.2.10.2.5 2003/05/17 14:39:00 giles Exp $
+! Ghostscript version 7.07, 17 May 2003
+ Usage:
+ $ gs [options] [file ...]
+
+ Ghostscript is an implementation of Adobe Systems' PostScript (tm)
+ and Portable Document Format (PDF) languages. Gs reads files in sequence
+ and executes them as Ghostscript programs. After doing this, it reads
+ further input from the standard input stream (normally the keyboard).
+ Each line is interpreted separately. To exit from the interpreter,
+ enter the `quit' command. The interpreter also exits gracefully if it
+ encounters end-of-file. Typing the interrupt character (e.g. Control-C)
+ is also safe.
+
+2 Description
+ The interpreter recognizes several switches described below, which
+ may appear anywhere in the command line and apply to all files
+ thereafter.
+
+ You can get a help message by invoking Ghostscript with the -h
+ or -? option. This message also lists the available devices.
+
+ Ghostscript may be built with multiple output devices. Ghostscript
+ normally opens the first one and directs output to it. To use
+ device xyz as the initial output device, include the switch
+ "-sDEVICE=xyz"
+ in the command line. Note that this switch must precede the first
+ .ps file, and only its first invocation has any effect. For example,
+ for printer output in a normal configuration that includes an Epson
+ printer driver, you might use the command
+ gs "-sDEVICE=epson" myfile.ps
+ instead of just
+ gs myfile.ps
+ Alternatively, you can type
+ (epson) selectdevice
+ (myfile.ps) run
+ All output then goes to the printer instead of the display until
+ further notice. You can switch devices at any time by using the
+ selectdevice procedure, e.g.,
+ (vga) selectdevice
+ or
+ (epson) selectdevice
+ As yet a third alternative, you can define a logical name GS_DEVICE
+ as the desired default device name. The order of precedence for these
+ alternatives, highest to lowest, is:
+ selectdevice
+ (command line)
+ GS_DEVICE
+ (first device in build list)
+
+ To select the density on a printer, use
+ gs "-sDEVICE=<device>" -r<xres>x<yres>
+ For example, on a 9-pin Epson-compatible printer, you can get the
+ lowest-density (fastest) mode with
+ gs "-sDEVICE=epson" -r60x72
+ and the highest-density mode with
+ gs "-sDEVICE=epson" -r240x72.
+
+ If you select a printer as the output device, Ghostscript also
+ allows you to control where the device sends its output. Normally,
+ output goes directly to a scratch file on Unix and VMS systems. To
+ send the output to a series of files foo1.xyz, foo2.xyz, ..., use
+ the switch
+ "-sOutputFile=foo%d.xyz"
+ The %d is a printf format specification; you can use other formats
+ like %02d. Each file will receive one page of output. Alternatively,
+ to send the output to a single file foo.xyz, with all the pages con-
+ catenated, use the switch
+ "-sOutputFile=foo.xyz"
+
+ To find out what devices are available, type
+ devicenames ==
+ after starting up Ghostscript. Alternatively, you can use the -h or -?
+ switch in the command line; the help message also lists the available
+ devices.
+
+ To select a different paper size, use the command line switch
+ "-sPAPERSIZE=a_known_paper_size"
+ e.g.,
+ "-sPAPERSIZE=a4"
+ or
+ "-sPAPERSIZE=legal"
+
+ As of this printing, the known paper sizes, defined in gs_statd.ps, are:
+
+ PAPERSIZE X" Y" X cm Y cm
+ ____________________________________________________
+ 11x17 11" 17" 27.94 43.18
+ a0 33.0556" 46.7778" 83.9611 118.816
+ a10 1.02778" 1.45833" 2.61056 3.70417
+ a1 23.3889" 33.0556" 59.4078 83.9611
+ a2 16.5278" 23.3889" 41.9806 59.4078
+ a3 11.6944" 16.5278" 29.7039 41.9806
+ a4 8.26389" 11.6944" 20.9903 29.7039
+ a5 5.84722" 8.26389" 14.8519 20.9903
+ a6 4.125" 5.84722" 10.4775 14.8519
+ a7 2.91667" 4.125" 7.40833 10.4775
+ a8 2.05556" 2.91667" 5.22111 7.40833
+ a9 1.45833" 2.05556" 3.70417 5.22111
+ archA 9" 12" 22.86 30.48
+ archB 12" 18" 30.48 45.72
+ archC 18" 24" 45.72 60.96
+ archD 24" 36" 60.96 91.44
+ archE 36" 48" 91.44 121.92
+ b0 39.3889" 55.6667" 100.048 141.393
+ b1 27.8333" 39.3889" 70.6967 100.048
+ b2 19.6944" 27.8333" 50.0239 70.6967
+ b3 13.9167" 19.6944" 35.3483 50.0239
+ b4 9.84722" 13.9167" 25.0119 35.3483
+ b5 6.95833" 9.84722" 17.6742 25.0119
+ flsa 8.5" 13" 21.59 33.02
+ flse 8.5" 13" 21.59 33.02
+ halfletter 5.5" 8.5" 13.97 21.59
+ ledger 17" 11" 43.18 27.94
+ legal 8.5" 14" 21.59 35.56
+ letter 8.5" 11" 21.59 27.94
+ note 7.5" 10" 19.05 25.4
+
+ Note that the B paper sizes are ISO sizes: for information about using
+ JIS B sizes, see `Use.htm'.
+
+2 Initialization_files
+ When looking for the initialization files (gs_*.ps), the files related
+ to fonts, or the file for the `run' operator, Ghostscript first tries
+ opening the file with the name as given (i.e., using the current
+ working directory if none is specified). If this fails, and the file
+ name doesn't specify an explicit directory or drive, Ghostscript will
+ try directories in the following order:
+
+ 1. The directory/ies specified by the -I switch(es) in the command
+ line (see below), if any;
+ 2. The directory/ies specified by the GS_LIB logical, if any;
+ 3. The directory/ies specified by the GS_LIB_DEFAULT macro in the
+ Ghostscript makefile.
+
+ Each of these (GS_LIB_DEFAULT, GS_LIB, and -I parameter) may be either
+ a single directory, or a list of directories separated by a `:'.
+
+2 X_resources
+ Ghostscript looks for the following resources under the program name
+ `Ghostscript':
+
+ borderWidth
+ The border width in pixels (default = 1).
+
+ borderColor
+ The name of the border color (default = black).
+
+ geometry
+ The window size and placement, WxH+X+Y (default is NULL).
+
+ xResolution
+ The number of x pixels per inch (default is computed from
+ WidthOfScreen and WidthMMOfScreen).
+
+ yResolution
+ The number of y pixels per inch (default is computed from
+ HeightOfScreen and HeightMMOfScreen).
+
+ useBackingPixmap
+ Determines whether backing store is to be used for saving display
+ window (default = true).
+
+ See the file `Use.htm' for a more complete list of resources.
+
+ To set these resources, put them in a file (such as
+ SYS$Login:ghostscript.dat) in the following form:
+
+ Ghostscript*geometry: 612x792-0+0
+ Ghostscript*xResolution: 72
+ Ghostscript*yResolution: 72
+
+2 Options
+ Note that VMS will convert all command line arguments to lower case
+ if they are not within quotes. Therefore, if a certain command does
+ not work, try again but with quotes around it.
+
+ -- filename arg1 ...
+ Takes the next argument as a file name as usual, but takes all
+ remaining arguments (even if they have the syntactic form of switches)
+ and defines the name ARGUMENTS in userdict (not systemdict) as an
+ array of those strings, before running the file. When Ghostscript
+ finishes executing the file, it exits.
+
+ -Dname=token
+ -dname=token
+ Define a name in systemdict with the given definition. The token must
+ be exactly one token (as defined by the `token' operator) and must not
+ contain any whitespace.
+
+ -Dname
+ -dname
+ Define a name in systemdict with value=null.
+
+ -Sname=string
+ -sname=string
+ Define a name in systemdict with a given string as value. This is
+ different from -d. For example, -dname=35 is equivalent to the
+ program fragment
+ /name 35 def
+ whereas -sname=35 is equivalent to
+ /name (35) def
+
+ -q
+ Quiet startup - suppress normal startup messages, and also do the
+ equivalent of -dQUIET.
+
+ -gnumber1Xnumber2
+ Equivalent to -dDEVICEWIDTH=number1 and -dDEVICEHEIGHT=number2. This is
+ for the benefit of devices (such as X11 windows) that require (or allow)
+ width and height to be specified.
+
+ -rnumber
+ -rnumber1Xnumber2
+ Equivalent to -dDEVICEXRESOLUTION=number1 and -dDEVICEYRESOLUTION=number2
+ This is for the benefit of devices (such as printers) that support
+ multiple X and Y resolutions. (If only one number is given, it is used
+ for both X and Y resolutions.)
+
+ -Idirectories
+ Adds the designated list of directories at the head of the search path
+ for library files.
+
+ Note that gs_init.ps makes systemdict read-only, so the values of names
+ defined with -D/d/S/s cannot be changed (although, of course, they can
+ be superseded by definitions in userdict or other dictionaries.)
+
+2 Special_names
+
+ -dDISKFONTS
+ Causes individual character outlines to be loaded from the disk the
+ first time they are encountered. (Normally Ghostscript loads all the
+ character outlines when it loads a font.) This may allow loading more
+ fonts into RAM, at the expense of slower rendering.
+
+ -dNOCACHE
+ Disables character caching. Only useful for debugging.
+
+ -dNOBIND
+ Disables the `bind' operator. Only useful for debugging.
+
+ -dNODISPLAY
+ Suppresses the normal initialization of the output device. This may be
+ useful when debugging.
+
+ -dNOPAUSE
+ Disables the prompt and pause at the end of each page. This may be
+ desirable for applications where another program is `driving'
+ Ghostscript.
+
+ -dNOPLATFONTS
+ Disables the use of fonts supplied by the underlying platform (e.g.
+ X Windows). This may be needed if the platform fonts look undesirably
+ different from the scalable fonts.
+
+ -dSAFER
+ Disables the deletefile and renamefile operators, and the ability to
+ open files in any mode other than read-only. This may be desirable
+ for spoolers or other sensitive environments.
+
+ -dWRITESYSTEMDICT
+ Leaves systemdict writable. This is necessary when running special
+ utility programs such as font2c and pcharstr, which must bypass normal
+ PostScript access protection.
+
+ -sDEVICE=device
+ Selects an alternate initial output device, as described above.
+
+ -sOutputFile=filename
+ Selects an alternate output file for the initial output device, as
+ described above.
+
+2 Files
+!!! Change
+ GS_Root:[Ghostscript.gs4_0]
+ Startup-files, utilities, and basic font definitions.
+
+ GS_Root:[Ghostscript.Fonts4_0]
+ Additional font definitions.
+
+ GS_Root:[Ghostscript.gs4_0.Examples]
+ Demo Ghostscript files.
+
+ GS_Root:[Ghostscript.gs4_0.Doc]
+ Assorted document files.
+!!! Change
+2 See_also
+ The various Ghostscript document files (above).
+
+2 Bugs
+ See the network news group comp.lang.postscript.
diff --git a/Master/xemtex/doc/ghostscript/gs.css b/Master/xemtex/doc/ghostscript/gs.css
new file mode 100644
index 00000000000..d59976ed00e
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/gs.css
@@ -0,0 +1,73 @@
+/* This is the default Ghostscript stylesheet */
+
+body
+{
+ color: black;
+ background-color: white;
+}
+
+h1,h2,h3,h4,h5,h6
+{
+ font-family: sans-serif;
+}
+
+/* This needs a patched html file else you have it all over the place */
+/* we only want this for the "visual header" at the page top */
+h1
+{
+ text-align: center;
+ background-color: #CCCC00;
+}
+
+/* Number the h2/h3 -- doesn't work on v4/5 browsers */
+h2
+{
+ counter-increment: h2-count;
+ counter-reset: h3-count;
+}
+
+h2:before
+{
+ content: counter(h2-count) " ";
+}
+
+h3
+{
+ counter-increment: h3-count;
+}
+
+h3:before
+{
+ content: counter(h2-count) "." counter(h3-count) " ";
+
+}
+
+tt
+{
+ color: rgb(40%,24%,24%);
+}
+
+a > tt, a > b > tt
+{
+ color: blue;
+}
+
+a
+{
+ color: blue;
+}
+
+a.offsite
+{
+ font-style: oblique;
+}
+
+a:visited
+{
+ color: rgb(60%,0%,30%);
+}
+
+a:hover, a:active, a:focus
+{
+ background: #FFFFAA;
+}
diff --git a/Master/xemtex/doc/ghostscript/gsdoc.el b/Master/xemtex/doc/ghostscript/gsdoc.el
new file mode 100644
index 00000000000..76be2c15fe4
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/gsdoc.el
@@ -0,0 +1,701 @@
+;; gsdoc.el
+;;
+;; GNU emacs (19.34) functions to help working with the HTML form of
+;; Ghostscript documentation.
+;;
+;; Pete Kaiser 8 September 1998 V1.2
+;; 2 December 1999 V1.3 Correct improper "--" to "=="
+;; in HTML marker comments
+;;============================================================
+;; One global key setting, which runs the function to bind some keys
+;; locally -- presumably in a buffer containing HTML code. Plus that
+;; function itself.
+
+(global-set-key [?\C-\S-k] 'gskeys)
+
+(defun gskeys ()
+
+"Set the keys in this buffer to use with Ghostscript HTML docs."
+
+(interactive)
+(local-set-key [?\C-\S-b] 'gs-bold)
+(local-set-key [?\C-\S-c] 'gs-code)
+(local-set-key [?\C-\S-e] 'gs-emphatic)
+(local-set-key [?\C-\S-g] 'gs-get-anchor)
+(local-set-key [?\C-\S-h] 'gs-href)
+(local-set-key [?\C-\S-i] 'gs-italic)
+(local-set-key [?\C-\S-m] 'gs-mailto)
+(local-set-key [?\C-\S-n] 'gs-name)
+(local-set-key [?\C-\S-p] 'gs-put-anchor)
+(local-set-key [?\C-\S-q] 'gs-quote)
+(local-set-key [?\C-\S-r] 'gs-row-of-table)
+(local-set-key [?\C-\S-s] 'gs-selfref)
+(local-set-key [?\C-\S-t] 'gs-table)
+(local-set-key [?\C-\S-u] 'gs-tag)
+(local-set-key [?\C-\S-x] 'gs-example)
+)
+
+;;============================================================
+;; Each of these next few functions just wraps a region in a
+;; <TAG>...</TAG>, or two nested tags. Where there are two, the first one
+;; is inner. See the inner function ~gsregion.
+
+(defun gs-bold () "Make text strong (bold)."
+(interactive)
+(~gsregion "b"))
+
+(defun gs-code () "Make text strong code (bold TT)."
+(interactive)
+(~gsregion "tt")
+(~gsregion "b"))
+
+(defun gs-emphatic () "Make text emphatic (bold italic)."
+(interactive)
+(~gsregion "em")
+(~gsregion "b"))
+
+(defun gs-italic () "Make text italic."
+(interactive)
+(~gsregion "em"))
+
+;;============================================================
+
+(defun gs-quote ()
+
+"Indent a region with BLOCKQUOTE and separate it with empty lines from
+surrounding text."
+
+(interactive)
+
+(save-restriction (narrow-to-region (region-beginning) (region-end))
+ (goto-char (point-min)) (insert "\n\n")
+ (push-mark (1+ (point-min)) t)
+ (goto-char (point-max))
+ (~gsregion "blockquote")
+ (insert "\n\n")
+ )
+)
+
+;;============================================================
+
+(defun gs-example ()
+
+"Make an indented literatim example BLOCKQUOTE PRE and separate it with
+empty lines from surrounding text."
+
+(interactive)
+
+(save-restriction (narrow-to-region (region-beginning) (region-end))
+ (goto-char (point-min)) (insert "\n")
+ (push-mark (point-min) t)
+ (goto-char (point-max))
+ (~gsregion "pre")
+ (~gsregion "blockquote")
+ (insert "\n")
+ )
+)
+
+;;============================================================
+
+(defun gs-get-anchor ()
+
+"Beginning at the head of this line, pick up the next anchor name for later
+use along with its HTML file name. This is useful when picking up an
+anchor name from a file in one buffer and using it in another buffer
+containing a different file."
+
+(interactive)
+
+;; From the beginning of this line find and pick up the next non-empty
+;; anchor, which might, of course not be right here -- though that's how it
+;; ought to be used, to pick up an anchor for immediate use. The regular
+;; expression picks up only the name itself.
+
+(beginning-of-line)
+(re-search-forward "<a name=\"?\\([^\">]+\\)\"?></a>" nil t)
+(setq gs-anchor (buffer-substring (match-beginning 1) (match-end 1)))
+
+;; Get the name of this buffer, treating it as the filename.
+
+(setq gs-anchor-file (buffer-name))
+)
+
+;;============================================================
+
+(defun gs-href ()
+
+"Wrap a region in an empty link and leave point in the middle of the
+emptiness to write the link. Maybe some day read the URL and put it
+there."
+
+(interactive)
+
+(save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (goto-char (point-min)) (insert "<a href=\"#\">")
+ (setq HREF (- (point) 2))
+ (goto-char (point-max)) (insert "</a>")
+ (goto-char HREF)
+ )
+)
+
+;;============================================================
+
+(defun gs-mailto ()
+
+"Turn an address into a proper \"mailto:\" visually bracketed with <>."
+
+(interactive)
+
+(save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (setq gs-address (buffer-substring (point-min) (point-max)))
+ (goto-char (point-min)) (insert "&lt;<a href=\"mailto:")
+ (goto-char (point-max)) (insert "\">" gs-address "</a>&gt;")
+ )
+)
+
+;;============================================================
+
+(defun gs-tag (Tag)
+
+"Bracket a region with some arbitrary tag read from the minibuffer, leaving
+point right after the opening word of the opening tag, and the end of the
+region at the end of the closing tag. Leaving point there makes it
+possible, for instance, to enter additional matter in a <FONT> tag. Get to
+the end of a region with ^x-^x."
+
+(interactive "*sTag: ")
+
+ (~gsregion Tag)
+ (exchange-point-and-mark) (forward-word 1)
+)
+
+;;============================================================
+
+(defun gs-toc ()
+
+"[Re]build the table of contents by picking up all the <Hn> lines and
+converting them to properly indented <UL> entries, placing the TOC within
+the standard TOC markers. Note that several of the original Ghostscript
+HTML files have hand-modified TOCs, so it's wise to check before running
+this function. It can be run from anywhere within the HTML file.
+
+This function relies on the specific format of the structure comments for
+the table of contents, which are set by the g~marker function used in
+defvars run when this package is loaded."
+
+(interactive)
+
+(setq g~html-buffer (buffer-name))
+
+(save-restriction (save-excursion
+ (widen)
+
+;; Since we're building the TOC, delete any current TOC. Locate the place
+;; for the TOC using the standard markers, deleting everything between the
+;; TOC-beginning and TOC-end markers. The new TOC is built entirely in the
+;; work buffer before being copied into the HTML buffer at that point.
+
+ (goto-char (point-min))
+ (search-forward g~toc-begin nil t)
+ (next-line 1) (beginning-of-line) (setq g~toc-insert (point))
+ (search-forward g~toc-end nil t)
+ (beginning-of-line) (delete-region g~toc-insert (point))
+
+;; Empty the work buffer by copying nothing into it.
+
+ (copy-to-buffer gs-work-buffer 1 1)
+
+;; Now collect all the following header lines into a buffer to work on
+;; them. The later append-to-buffer needs point to be in the middle of the
+;; empty list, so go there before entering the work buffer.
+
+ (save-excursion (while (re-search-forward "^<h[1-6][^>]*>" nil t)
+ (beginning-of-line) (setq BOH (point))
+ (re-search-forward "</h[1-6]>\n" nil t)
+ (append-to-buffer gs-work-buffer BOH (point))
+ ))
+ (goto-char g~toc-insert)
+
+;; All the useful header lines should be in the work buffer now.
+
+ (save-excursion
+ (set-buffer gs-work-buffer)
+
+;; Formatting as list entries: insert <ul> when the level deepens and </ul>
+;; when it rises.
+
+ (goto-char (point-min))
+ (while (search-forward "</a>" nil t) (replace-match ""))
+ (goto-char (point-min))
+ (while (re-search-forward "</h[1-6]>" nil t) (replace-match "</a>"))
+ (goto-char (point-min))
+ (while (re-search-forward "<a name=\"" nil t) (replace-match "<a href=\"#"))
+
+;; Change <h[1-6]> to <li>, inserting <ul>...</ul> as needed. Pick up the
+;; upmost level from the first header, usually <h1>, and save a copy to
+;; use to insert any terminating </ul>.
+
+ (goto-char (point-min))
+ (re-search-forward "^<h\\([1-6]\\)[^>]*>" nil t)
+ (setq First (string-to-number
+ (buffer-substring (match-beginning 1) (match-end 1))))
+ (setq Previous First)
+ (replace-match "<li>" t t)
+
+;; Got the first one, now handle the rest.
+
+ (while (re-search-forward "^<h\\([1-6]\\)[^>]*>" nil t)
+ (setq This (string-to-number
+ (buffer-substring (match-beginning 1) (match-end 1))))
+ (setq Hold This)
+ (replace-match "<li>" t t) (beginning-of-line)
+
+;; No point being too fancy with conditionals: the "while" statements here
+;; make at most one logically unnecessary test.
+
+ (while (> This Previous) (insert "<ul>\n") (setq This (1- This)))
+ (while (< This Previous) (insert "</ul>\n") (setq This (1+ This)))
+ (setq Previous Hold)
+ )
+
+;; Done with the loop. Clean up by inserting at the end any </ul> needed
+;; to get back to the top level.
+
+ (goto-char (point-max))
+ (while (> Previous First) (insert "</ul>\n") (setq Previous (1- Previous)))
+
+;; Finally add the trailing whitespace and leading whitespace and header line.
+
+ (insert "</ul></blockquote>\n\n")
+ (goto-char (point-min))
+ (insert "\n<h2>Table of contents</h2>\n\n<blockquote><ul>\n")
+
+;; The TOC is now entirely built in the work buffer. Move it to where it's
+;; supposed to be in the original buffer.
+
+ (append-to-buffer g~html-buffer (point-min) (point-max))
+ )
+ ))
+)
+
+;;============================================================
+
+(defun gs-name ()
+
+"Insert a name anchor at point and leave point ready to enter the anchor's
+name. Anchors are always empty (that is, <a name=...></a>)."
+
+(interactive)
+
+(insert "<a name=\"\"></a>")
+(backward-char 6)
+)
+
+;;============================================================
+
+(defun gs-put-anchor ()
+
+"Insert around the current region the last anchor picked up with
+gs-get-anchor. This includes the HTML file name if the href is put in a
+file other than the anchor."
+
+(interactive)
+
+(save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (goto-char (point-min))
+ (insert (concat
+ "<a href=\""
+
+;; Insert the filename (buffer name) picked up by gs-get-anchor only if
+;; this is a different buffer.
+
+ (if (string-equal gs-anchor-file (buffer-name)) "" gs-anchor-file)
+
+;; And finish unconditionally with the specific anchor name.
+
+ "#" gs-anchor "\">"))
+ (goto-char (point-max)) (insert "</a>"))
+)
+
+;;============================================================
+
+(defun gs-row-of-table ()
+
+"Set up a row of a table from the line containing point.
+
+Insert the right things at beginning and end, and in between convert tab
+and \"|\" into column breaks with a nonbreaking space in between -- which
+means that no entry can contain a tab or \"|\". Format the HTML nicely
+for readability.
+
+Between each two substantive columns this function puts a column containing
+a single nonbreaking space to provide a visual break. Generally in the
+first row of a table those columns should be given enough NBSPs to make
+the table look right on screen and when converted to text, but this has to
+be done by hand."
+
+(interactive)
+
+(save-restriction
+ (end-of-line) (setq EOL (point))
+ (beginning-of-line) (narrow-to-region (point) EOL)
+ (insert "<tr valign=top>\t<td>")
+ (while (re-search-forward "[|\t]" nil t)
+ (replace-match "\n\t<td>&nbsp;\n\t<td>" t t))
+ (goto-char (point-max))
+ )
+(next-line 1) (beginning-of-line)
+)
+
+;;============================================================
+
+(defun gs-selfref ()
+
+"Wrap an URL to make it its own link. This is useful for links that should
+be visible when converted to text."
+
+(interactive)
+
+(save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (goto-char (point-min))
+ (if (not (looking-at "http:\\|ftp:")) (insert "http://"))
+ (setq g~url (buffer-substring (point-min) (point-max)))
+ (goto-char (point-min))
+ (insert "<a href=\"")
+ (goto-char (point-max)) (insert "\">" g~url "</a>")
+ )
+)
+
+;;============================================================
+
+(defun gs-table ()
+
+"Set up an indented table around this region, leaving plenty of white space
+around the table within the HTML. The number of columns in the table is
+hardcoded here as 3, so that number must be changed by hand if the table
+has more than 3 columns. See gs-row-of-table for how rows are built: a
+table with N visible columns generally has 2N-1 HTML columns, including the
+columns that provide vertical white space."
+
+(interactive)
+
+(save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (indent-rigidly (region-beginning) (region-end) -80)
+ (goto-char (point-min))
+ (insert (concat
+ "\n\n<blockquote><table cellpadding=0 cellspacing=0>\n"
+ "<tr><th colspan=3 bgcolor=\"#CCCC00\"><hr><font size=\"+1\">XXXXXXXXXX</font><hr>\n"
+ "<tr valign=bottom>\n"
+ "\t<th align=left>\n"
+ "\t<td>&nbsp;&nbsp;\n"
+ "\t<th align=left>\n"
+ "<tr>\t<td colspan=3><hr>\n"
+ ))
+ (goto-char (point-max))
+ (insert "</table></blockquote>\n")
+ )
+)
+
+;;============================================================
+
+(defun gs-text-chars ()
+
+"Prepare text for inclusion in HTML by converting \"&\", \"<\", and \">\" into
+their HTML special forms. The function acts from point to end-of-region or
+end-of-buffer, whichever comes first.
+
+This function is NOT idempotent -- running it twice on the same text will
+certainly do the wrong thing, unless at first the text contained none of
+those characters."
+
+(interactive)
+(setq BEGIN (point))
+
+;; Replace significant characters: "&", "<", and ">".
+
+(while (search-forward "&" nil t) (replace-match "&amp;" t t))
+
+(goto-char BEGIN)
+(while (search-forward "<" nil t) (replace-match "&lt;" t t))
+
+(goto-char BEGIN)
+(while (search-forward ">" nil t) (replace-match "&gt;" t t))
+
+(goto-char BEGIN)
+)
+
+;;============================================================
+
+(defun gs-wrap-textfile ()
+
+"Prepare a text file for inclusion between <pre> and </pre>, then put a
+header and footer around it. One would generally run this function on a
+buffer containing only an original text file; it is how the original
+history and news files were first prepared. At this point it's likely to
+be most useful in preparing new sections for the news document."
+
+(interactive)
+
+(widen)
+
+;; First prepare the entire text by replacing special characters.
+
+(goto-char (point-min))
+(gs-text-chars)
+
+;; At the end of the file, end as-is text and add the standard footer.
+
+(goto-char (point-max))
+(backward-word 1) (next-line 1) (beginning-of-line)
+(delete-region (point) (point-max))
+(insert "\n</pre>\n")
+(insert-file "Footer.htm")
+
+;; At the beginning of the file, begin as-is text and delete everything
+;; up to the identity string (if any), saving the identity string.
+
+(goto-char (point-min))
+(insert "<pre>\n") (setq g~pre-point (point))
+(setq g~ID " [No pre-existing ID] ")
+(if (re-search-forward "^\\$Id:\\( [^ ]+ \\)\\$" nil t) (progn
+ (setq g~ID (buffer-substring (match-beginning 1) (match-end 1)))
+ (next-line 1) (beginning-of-line) (delete-region g~pre-point (point))
+ ))
+
+;; Insert the standard header and fill in the identity string.
+
+(goto-char (point-min)) (insert-file "Header.htm")
+(goto-char (point-min)) (search-forward "<!--" nil t)
+(delete-horizontal-space) (insert g~ID)
+(search-forward "<pre>\n" nil t)
+)
+
+;;============================================================
+
+(defun ~gsregion (Tag)
+
+"Tag a region, leaving point at its end and the region around the whole
+thing including the new surrounding tags; thus invoking this function twice
+successively makes the first invocation the inner tags and the second the
+outer.
+
+Not intended for interactive use; for that use gs-tag, which gives a little
+bit of additional service."
+
+(interactive)
+
+(if (not (= 0 (length Tag))) (save-restriction
+ (narrow-to-region (region-beginning) (region-end))
+ (goto-char (point-min)) (insert "<" Tag ">")
+ (goto-char (point-max)) (insert "</" Tag ">")
+ (push-mark (point-min) t)
+ (goto-char (point-max))
+ )
+ )
+)
+
+;;============================================================
+
+(defun gs-structure ()
+
+"For historical interest only: add structuring commentary to a Ghostscript
+HTML file. It's crude, but it did most of the work. Future files will
+acquire their structure through plagiarism, like any other code.
+
+Now they've all been structured, and this function was used to do it. The
+placement of table-of-contents lines never worked, because most of the
+files didn't yet have TOCS. Now all files that should have TOCs have
+properly placed markers, but that's history."
+
+(interactive)
+
+(setq g~thisfile (buffer-name))
+
+(widen)
+(goto-char (point-min))
+
+;; Replace the RCS $Id if one can be found in exactly the right format, and
+;; otherwise insert one just after the title, along with a warning message.
+
+(if (re-search-forward "<!-- $Id: *\\([^ ]*\\) $ -->" nil t)
+ (progn
+ (setq Original (buffer-substring (match-beginning 1) (match-end 1)))
+ (replace-match g~thisfile t t nil 1)
+ )
+ (progn
+ (search-forward "</title>" nil t) (end-of-line)
+ (insert (concat "\n<!-- $Id: " g~thisfile " $ -->"))
+ (setq Original "(UNSET by gs-structure)")
+ )
+ )
+
+(end-of-line)
+(insert (concat "\n<!-- Originally: " Original " -->"))
+
+;; Place the visible header marker immediately after <BODY>.
+
+(re-search-forward "<body[^>]*>" nil t)
+ (end-of-line) (forward-char 1)
+ (insert (concat g~header-begin "\n\n"))
+
+;; Place the headline marker before the first <table> block.
+
+(search-forward "<table" nil t) (search-backward "\n\n" nil t)
+ (forward-word 1) (beginning-of-line)
+ (insert (concat g~headline-begin "\n\n"))
+
+;; After the first table block place the end-headline marker and both
+;; table-of-contents markers, without worrying where the table of contents
+;; really is. The TOC markers can easily be moved by hand later.
+
+(search-forward "\n\n" nil t)
+ (backward-word 1) (end-of-line) (forward-char 1)
+ (insert (concat
+ "\n"
+ g~headline-end "\n\n"
+ g~toc-begin "\n\n"
+ g~toc-end "\n\n"))
+
+;; The hints section begins with the first paragraph after where the TOC
+;; markers are placed, and ends with <HR>. This isn't precise, and in fact
+;; fails for several files, but once again only an approximation is needed
+;; because it'll be edited by hand later.
+
+(search-forward "<p>" nil t) (beginning-of-line)
+ (insert (concat g~hint-begin "\n\n"))
+
+(search-forward "<hr>" nil t) (beginning-of-line)
+ (insert (concat g~hint-end "\n\n"))
+
+;; The visible header ends with (and includes) the first <HR>, and the
+;; contents begin immediately thereafter.
+
+(search-forward "<hr>\n" nil t)
+ (insert (concat "\n" g~header-end "\n\n"))
+
+(forward-word 1) (beginning-of-line)
+ (insert (concat g~contents-begin "\n\n"))
+
+;; The contents end before the final <HR> and the trailer begins
+;; immediately thereafter.
+
+(goto-char (point-max)) (search-backward "<hr>" nil t)
+ (backward-word 1) (end-of-line) (forward-char 1)
+ (insert (concat
+ "\n"
+ g~contents-end "\n\n"
+ g~trailer-begin "\n\n"))
+
+;; The trailer ends with </BODY>.
+
+(goto-char (point-max)) (search-backward "</body>" nil t)
+ (insert (concat "\n" g~trailer-end "\n\n"))
+
+;; We may have introduced trailing whitespace and extra empty lines.
+;; Remove them.
+
+(goto-char (point-min))
+(while (re-search-forward "[ \t\240\r]+$" nil t) (replace-match "" t t))
+(goto-char (point-min))
+(while (re-search-forward "\n\n\n+" nil t) (replace-match "\n\n" t t))
+
+)
+
+;;============================================================
+;; When this file is loaded into emacs, define the structure markers for GS
+;; HTML files. These markers have two purposes: first, to make the HTML
+;; more readable, and second, to enable these functions to locate sections
+;; unambiguously (see gs-toc, the table of contents builder). Note that
+;; the markers do not include LF.
+
+(defun g~marker (basic)
+
+"Build a complete Ghostscript HTML file marker from its text-only part.
+gs-toc relies entirely on this function, so if it's ever changed, gs-toc
+and existing markers would also have to be changed to keep pace.
+
+Intended only for initialization, not interactive use.
+
+All the existing files are now marked up, and since any future ones are
+(properly) likely to be created by plagiarism, it's difficult to imagine
+why anyone would want to change this unless they want to go to the trouble
+of coming up with a much more useful marking scheme."
+
+(interactive)
+
+(setq HEAD (concat "<!-- [" basic "] "))
+(concat HEAD
+ (substring
+ "====================================================================== -->"
+ (- (length HEAD) 80)
+ ))
+)
+
+;;============================================================
+;; Initialization code that must run after functions are defined.
+;;
+;; Look in a Ghostscript HTML file to see how these markers are used,
+;; generally
+;;
+;; begin visible header
+;; begin headline
+;; end headline
+;; begin table of contents
+;; end table of contents
+;; begin hint
+;; end hint
+;; end visible header
+;; begin contents
+;; end contents
+;; begin visible trailer
+;; end visible trailer
+;;
+;; although the TOC is in slightly different positions in a few files.
+
+(defvar g~header-begin (g~marker "1.0 begin visible header")
+ "Begin the HTML file's visible header material")
+
+(defvar g~header-end (g~marker "1.0 end visible header")
+ "End the HTML file's visible header")
+
+(defvar g~headline-begin (g~marker "1.1 begin headline")
+ "Begin the conspicuous headline")
+
+(defvar g~headline-end (g~marker "1.1 end headline")
+ "End the conspicuous headline")
+
+(defvar g~toc-begin (g~marker "1.2 begin table of contents")
+ "Begin the table of contents")
+
+(defvar g~toc-end (g~marker "1.2 end table of contents")
+ "End the table of contents")
+
+(defvar g~hint-begin (g~marker "1.3 begin hint")
+ "Begin the \"for other information\" section")
+
+(defvar g~hint-end (g~marker "1.3 end hint")
+ "End the \"for other information\" section")
+
+(defvar g~contents-begin (g~marker "2.0 begin contents")
+ "Begin the main contents")
+
+(defvar g~contents-end (g~marker "2.0 end contents")
+ "End the main contents")
+
+(defvar g~trailer-begin (g~marker "3.0 begin visible trailer")
+ "Begin the visible standard trailer material")
+
+(defvar g~trailer-end (g~marker "3.0 end visible trailer")
+ "End the visible standard trailer material")
+
+;;============================================================
+;; Some working variables
+
+(defvar gs-anchor "JUNK" "*Anchor name to insert")
+(defvar gs-anchor-file "JUNKFILE" "*Anchor filename to insert")
+(defvar gs-work-buffer "*GS work*" "*Ghostscript working buffer")
diff --git a/Master/xemtex/doc/ghostscript/index.html b/Master/xemtex/doc/ghostscript/index.html
new file mode 100644
index 00000000000..d931f27faad
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript</title>
+<!-- Ghostscript auto-referral to the introductory document -->
+<!-- $Id: index.html,v 1.2.4.2 2002/04/10 09:45:40 giles Exp $ -->
+<meta http-equiv="REFRESH" content="0; url=Readme.htm">
+</head>
+<body>
+<p>
+Please see <a href="Readme.htm">Readme.htm</a> for an index of the
+Ghostscript documentation.
+</body>
+</html>