+WARNING: 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.
+
+
+
+
+
+
+
+
+
+
+
What is the Ghostscript Interpreter API?
+
+
+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
+Ghostscript library which provides a graphics
+library but not the interpreter.
+
+To provide the interface described in the
+usage documentation, 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.
+
+
+The Ghostscript interpreter library's name and characteristics differ
+for each platform:
+
+
+
The Win32 DLL gsdll32.dll 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.
+
+
The OS/2 DLL gsdll2.dll has
+MULTIPLE NONSHARED data segments and can be called by multiple programs
+simultaneously.
+
+
The GNU/Linux shared object libgs.so
+can be used by multiple programs simultaneously.
+
+
The MacOS X Ghostscript.framework can also be used
+by multiple applications at once.
+
+
+
+The source for the executable is in dw*.* (Windows),
+dp*.* (OS/2) and dx*.* (GNU/Linux).
+See these source files for examples of how to use the DLL.
+
+
+The source file dxmainc.c 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:
+
+To get a useable executable. Ghostscript.framework must be properly
+installed in the search path for this to work.
+
+
+At this stage, Ghostscript does not support multiple instances
+of the interpreter within a single process.
+
+
+
+
Exported functions
+
+
+The functions exported by the DLL/shared object are described
+in the header file iapi.h
+and are summarised below. Omitted from the summary are
+the calling convention (e.g. __stdcall), details of return
+values and error handling.
+
+
+
+
+int
+gsapi_revision
+ (gsapi_revision_t *pr, int len));
+
+
+
+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.
+
+
+
+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(&r, sizeof(r)) == 0) {
+ if (r.revision < 650)
+ printf("Need at least Ghostscript 6.50");
+}
+else {
+ printf("revision structure size is incorrect");
+}
+
+
+
+
+
gsapi_new_instance()
+
+Create a new instance of Ghostscript.
+This instance is passed to most other gsapi functions.
+The caller_handle will be provided to callback functions.
+At this stage, Ghostscript supports only one instance.
+
+
+
+
gsapi_delete_instance()
+
+Destroy an instance of Ghostscript.
+Before you call this, Ghostscript must have finished.
+If Ghostscript has been initialised, you must call
+gsapi_exit before gsapi_delete_instance.
+
+
+
+
gsapi_set_stdio()
+
+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.
+
+
+
+
gsapi_set_poll()
+
+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 CHECK_INTERRUPTS
+as described in gpcheck.h.
+
+
+
gsapi_set_display_callback()
+
+Set the callback structure for the display
+device. If the display device is used,
+this must be called after
+gsapi_new_instance()
+and before gsapi_init_with_args().
+See gdevdsp.h
+for more details.
+
+
+
gsapi_init_with_args()
+
+Initialise the interpreter.
+This calls gs_main_init_with_args() in
+imainarg.c.
+See below for return codes.
+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].
+
+
+
gsapi_run_*()
+
+The gsapi_run_* functions are like
+gs_main_run_* except that the error_object is omitted.
+If these functions return <= -100, either quit or a fatal
+error has occured. You must call gsapi_exit() next.
+The only exception is gsapi_run_string_continue()
+which will return e_NeedInput if all is well.
+See below for return codes.
+
+
+
gsapi_exit()
+
+Exit the interpreter.
+This must be called on shutdown if gsapi_init_with_args()
+has been called, and just before gsapi_delete_instance().
+
+
+
Return codes
+
+
+The gsapi_init_with_args, gsapi_run_* and
+gsapi_exit functions return an integer code.
+
+
+
+
Return codes from gsapi_*()
+
+
Code
+
+
Status
+
+
0
+
+
No errors
+
e_Quit
+
+
"quit" has been executed.
+ This is not an error.
+ gsapi_exit() must be called next.
+
e_NeedInput
+
+
More input is needed by
+ gsapi_run_string_continue().
+ This is not an error.
+
e_Info
+
+
"gs -h" has been executed.
+ This is not an error.
+ gsapi_exit() must be called next.
+
< 0
+
+
Error
+
<= -100
+
+
Fatal error.
+gsapi_exit() must be called next.
+
+
+
+
+The gsapi_run_*() functions do not flush stdio.
+If you want to see output from Ghostscript you
+must do this explicitly as shown in the example below.
+
+
+When executing a string with gsapi_run_string_*(),
+currentfile is the input from the string.
+Reading from %stdin uses the stdin callback.
+
+
+
+
+
Example Usage
+Some overly simple examples of using the Ghostscript interpreter library are:
+
+
+The Ghostscript library should have been compiled with a
+thread safe run time library.
+Synchronisation of threads is entirely up to the caller.
+
+
Standard input and output
+
+When using the Ghostscript interpreter library interface, you have a
+choice of two standard input/output methods.
+
+
If you do nothing, the "C" stdio will be used.
+
If you use gsapi_set_stdio(), 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.
+
+
+The callback functions are described in
+iapi.h.
+
+
+
Display device
+
+The display device is available for use with
+the Ghostscript interpreter library. This is described in the file
+gdevdsp.h.
+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.
+
+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
+gsapi_set_display_callback().
+This must be called after
+gsapi_new_instance()
+and before
+gsapi_init_with_args().
+
+The callbacks are for device open, close, resize, sync, page,
+memory allocation and updating.
+Each callback function contains a handle can be set using
+
+ -dDisplayHandle=1234
+
+
+The device raster format can be configured using
+
+ -dDisplayFormat=NNNN
+
+Options include
+
+
native, gray, RGB or CMYK color spaces.
+
alpha byte (ignored).
+
1 to 16 bits/component.
+
bigendian (RGB) or littleendian (BGR) order.
+
top first or bottom first raster.
+
16 bits/pixel with 555 or 565 bitfields.
+
+The format values are described in
+gdevdsp.h.
+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:
+
+The display device provides you with the address and size of the
+raster using the display_size() callback.
+You are then responsible for displaying this raster.
+Some examples are in
+dwmain.c (Windows),
+dpmain.c (OS/2) and
+dxmain.c (X11/GNU/Linux).
+
+
+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/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 @@
+
+
+
+Ghostscript C coding guidelines
+
+
+
+
+
+
+
+
+
+
+
+This document describes Ghostscript's C coding conventions. It is primarily
+prescriptive, documenting what developers should do when writing
+new code; the companion developer documentation (Develop.htm) is primarily descriptive,
+documenting the way things are.
+
+
+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 "Ghostscript conventions" below.
+
+
+
+
C language do's and don'ts
+
+
+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.
+
+
Preprocessor
+
+
Conditionals
+
+Restrictions:
+
+
+
+
Don't assume that #if will treat undefined names as 0.
+While the ANSI standard requires this, it may produce a warning.
+
+
In .c files, don't use preprocessor conditionals that
+test for individual platforms or compilers. Use them only in header files
+named xxx_.h.
+
+
+
+
Macros
+
+
+Restrictions:
+
+
+
+
Don't redefine a macro, even with the same definition, without using
+#undef.
+
+
CAPITALIZE macro names unless there is a good reason not
+to.
+
+
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.)
+
+
Don't use macro names, even inadvertently, in string constants. Some
+compilers erroneously try to expand them.
+
+
Don't use macros to define shorthands for casted pointers. For
+instance, avoid
+
+
+The use of const alerts the reader that this is effectively
+a synonym.
+
+
If a macro generates anything larger than a single expression (that is,
+one or more statements), surround it with BEGIN and
+END. These work around the fact that simple statements and
+compound statements in C can't be substituted for each other syntactically.
+
+
+
+
Other
+
+
+Restrictions:
+
+
+
+
Only use #pragma 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).
+
+
+
+
Lexical elements
+
+
+Do not use:
+
+
+
+
ANSI trigraphs (??x)
+
Nested comments (/* /* */ */) (not ANSI compliant, but often accepted)
+
Multi-character character constants ('abc')
+
Wide-character character or string constants (L'x', L"x")
+
+
+
+
+Restrictions:
+
+
+
+
Procedure and static variable names must be 31 characters or less.
+
+
Externally visible procedure and variable names must be unique in the
+first 23 characters.
+
+
+
+
Scoping (extern, static, ...)
+
+
+Do not use:
+
+
+
+
register
+
+
+
+
+Restrictions:
+
+
+
+
Do not allow a global variable (constant) to have more than one
+non-extern definition, even though some ANSI C compilers
+allow this. Every global constant should have exactly one definition, in a
+.c file, and preferably just one extern
+declaration, in a header file.
+
+
Use private instead of static 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 #define.
+
+
static or private variables must be
+const and initialized: non-const statically
+allocated variables are incompatible with reentrancy, and we're in the
+process of eliminating all of them.
+
+
Do not use extern in .c files, only in
+.h files, unless you have a very good reason for it (e.g.,
+as in iconf.c). There are too many such
+externs in the code now: we are eliminating them over time.
+
+
Do not declare the same name as both static
+(private) and non-static 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
+private near the beginning of a file and accidentally not
+declare it private where it is defined later in the file.
+
+
Even though the ANSI standard allows initialized external declarations
+(extern int x = 0), don't use them.
+
+
+
+
Scalars
+
+
+Restrictions:
+
+
+
+
Avoid using char, except for char *
+for a pointer to a string. Don't assume that char is
+signed; also don't assume it is unsigned.
+
+
Never cast a float to a double
+explicitly. ANSI compilers in their default mode do all floating point
+computations in double precision, and handle such casts automatically.
+
+
Don't use long long: even though it is in the ANSI
+standard, not all compilers support it. Use bits64 instead
+(see below under "Language extensions").
+
+
Don't assume anything about whether sizeof(long) is less
+than, equal to, or greater than sizeof(ptr). (However, you
+can make such comparisons in preprocessor conditionals using
+ARCH_SIZEOF_LONG and ARCH_SIZEOF_PTR.)
+
+
+
+
Arrays
+
+
+Restrictions:
+
+
+
+
Don't declare arrays of size 0. (The newer ANSI standard allows this,
+but the older one doesn't.)
+
+
Don't declare an array of size 1 at the end of a structure to indicate
+that a variable-size array follows.
+
+
Don't declare initialized auto arrays.
+
+
+
+
Typedefs
+
+
+Restrictions:
+
+
+
+
Don't use typedef for function types, such as
+
+
+typedef int proc_xyz_t(double, int *);
+
+
+
Many compilers don't handle this correctly -- they will give errors, or
+do the wrong thing, when declaring variables of type
+proc_xyz_t and/or proc_xyz_t *. Instead, do
+this:
+
+
+#define PROC_XYZ(proc) int proc(double, int *)
+PROC_XYZ(some_proc); /* declare a procedure of this type */
+typedef PROC_XYZ((*proc_xyz_ptr_t)); /* define a type for procedure ptrs */
+
+proc_xyz_ptr_t pp; /* pointer to procedure */
+
+
+
Don't redefine typedef'ed names, even with the same
+definition. Some compilers complain about this, and the standard doesn't
+allow it.
+
+
+
+
Structures
+
+
+Restrictions:
+
+
Don't use anonymous structures if you can possibly avoid it, except
+occasionally as components of other structures. Ideally, use the
+struct keyword only for declaring named structure types,
+like this:
+
+
Use struct only when declaring structure types, never
+for referring to them (e.g., never declare a variable as type
+struct xxx_s *).
+
+
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 int
+if there will be a lot of instances of that structure in memory. For such
+structures, insert byte and/or short padding
+members as necessary to re-establish int alignment.
+
+
Don't declare initialized auto structures.
+
+
+
+
Unions
+
+
+Restrictions:
+
+
+
+
Use unions only as components of structures, not as typedefs in their
+own right.
+
+
Don't attempt to initialize unions: not all compilers support this, even
+though it is in the 1989 ANSI standard.
+
+
+
+
Expressions
+
+
+Restrictions:
+
+
+
+
Don't assign a larger integer data type to a smaller one without a cast
+(int_x = long_y).
+
+
It's OK to use the address of a structure or array element
+(&p->e, &a[i]) 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.
+
+
Don't use conditional expressions with structure or union values.
+(Pointers to structures or unions are OK.)
+
+
For calling a variable or parameter procedure, use
+ptr->func(...). Some old code uses explicit indirection,
+(*ptr->func)(...): don't use this in new code.
+
+
Don't write expressions that depend on order of evaluation, unless the
+order is created explicitly by use of ||,
+&&, ?:, ,, 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.
+
+
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.)
+
+
+
+
Statements
+
+
+Restrictions:
+
+
+
+
If you use an expression as a statement, other than an assignment or a
+function call with void return value, enclose it explicitly
+in DISCARD().
+
+
The type of the operand of a switch must match the type
+of the case labels, whether the labels are ints or the
+members of an enum type. (Use a cast if necessary.)
+
+
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 /* falls through */ is
+required.
+
+
If you are returning an error code specified explicitly (e.g.,
+return gs_error_rangecheck or
+return e_rangecheck), use
+return_error() rather than plain return.
+However, if the program is simply propagating an error code generated
+elsewhere, as opposed to generating the error, use return
+(e.g., if (code < 0) return code).
+
+
+
+
Procedures
+
+
+Restrictions:
+
+
+
+
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
+(private), the prototype should precede the procedure, in
+the same file; if the procedure is global, the prototype should be in a
+header file.
+
+
If a procedure parameter is itself a procedure, do list its parameter
+types rather than just using (). For example,
+
+
+int foo(int (*callback)(int, int));
+
+
+
+rather than just
+
+
+int foo(int (*callback)());
+
+
+
Don't use the P* macros in new code. (See the
+Procedures section of Language extensions
+below for more information.)
+
+
Always provide an explicit return type for procedures, in both the
+prototype and the definition: don't rely on the implicit declaration as
+int.
+
+
Don't use float 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.
+
+
Don't declare parameters as being of type float,
+short, or char. If you do this and forget
+to include the prototype at a call site, ANSI compilers will generate
+incompatible calling sequences. Use floatp (a synonym for
+double, mnemonic for "float parameter") instead of
+float, and use int or uint
+instead of short or char.
+
+
+
+
Standard library
+
+
+Restrictions:
+
+
+
+
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., stricmp), or
+originate in BSD Unix (e.g., strcasecmp), or were added in
+later versions of the standard such as C 9X.
+
+
Do not use any features from stdio.h that assume the
+existence of stdin, stdout, or
+stderr. See gsio.h for the full
+list. Instead, use gs_stdin et al.
+
+
+
+
+
+
Language extensions
+
+
Scoping
+
+
+
+
inline
+
+
inline is available even if the compiler does not
+support it. Be aware, however, that it may have no effect. In particular,
+do not use inline in header files. Instead, use the
+extern_inline facility described just below.
+
+
extern_inline
+
+
Compilers that do support inline vary in how they decide
+whether to (also) compile a closed-code copy of the procedure. Because of
+this, putting an inline procedure in a header file may
+produce multiple closed copies, causing duplicate name errors at link time.
+extern_inline provides a safe way to put
+inline 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 stdpre.h.
+
+
private
+
+
Use private instead of static for all
+file-local procedures, and also for file-local variables defined at the
+outermost level. However, use static, not
+private, for variables defined within a procedure.
+
+
+private is normally #define'd as static.
+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.
+
+
+
+
Scalar types
+
+
+
+
bool, true, false
+
+
bool is intended as a Boolean type, with canonical
+values true and false. In a more reasonable
+language, such as Java, bool is an enumerated type requiring
+an explicit cast to or from int; however, because C's
+conditionals are defined as producing int values, we can't
+even define bool as a C enum without
+provoking compiler warnings.
+
+
+Even though bool is a synonym for int, treat
+them as conceptually different types:
+
+
+
Initialize or set bool variables to true
+or false, not 0 or 1.
+
Use the Boolean operators !, &&,
+and || only with Booleans. Don't use the idiom
+!!x to create a Boolean that is true iff x
+!= 0: use x != 0.
+
Use an explicit (int) cast to convert a Boolean to an
+integer.
+
+
+
byte, ushort, uint, ulong
+
+
These types are simply shorthands for unsigned char, short, int,
+long.
+
+
floatp
+
+
This is a synonym for double. It should be used for,
+and only for, procedure parameters that would otherwise be
+float. (As noted above, procedure parameters should not be
+declared as float.)
+
+
bits8, bits16, bits32
+
+
These are unsigned integer types of the given width. Use them wherever
+the actual width matters: do not, for example, use
+short assuming that it is 16 bits wide.
+
+
bits64
+
+
****** NOT IMPLEMENTED YET ******
+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
+#if ARCH_HAS_BITS64.
+
+
Nearly all existing code uses these macros for the parameter lists of
+procedure prototypes, e.g.,
+int proc(P2(int a, int b)), to provide
+compatibility with pre-ANSI, a.k.a. "traditional" or "K & R", compilers.
+Since only ANSI compilers are now supported, don't use these macros in new
+code: use the ANSI standard syntax
+int proc(int a, int b).
+
+
+
+
+
+
Stylistic conventions
+
+
+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.
+
+
Formatting
+
+
Indentation
+
+
+We've formatted all of our code using the GNU indent program.
+
+
+does a 98% accurate job of producing our preferred style. Unfortunately,
+there are bugs in all versions of GNU indent, requiring
+both pre- and post-processing of the code. The gsindent
+script in the Ghostscript fileset contains the necessary workarounds.
+
+
+Put indentation points every 4 spaces, with 8 spaces = 1 tab stop.
+
+
+For assignments (including chain assignments), put the entire statement on
+one line if it will fit; if not, break it after a = and
+indent all the following lines. I.e., format like this:
+
+
+When there are more than two alternatives, as in the example above, use the
+above ("parallel") syntax rather than the following ("nested") syntax:
+
+
+do {
+ ... body ...
+} while ( ... condition ... );
+
+
+
Spaces
+
+
+Do put a space:
+
+
after every comma and semicolon, unless it ends a line;
+
around every binary operator other than "->" and
+".", although you can omit the spaces around the innermost
+operator in a nested expression if you like;
+
on both sides of the parentheses of an if, for, or while.
+
+
+
+Don't put a space:
+
+
at the end of a line;
+
before a comma or semicolon;
+
after unary prefix operators;
+
before the parenthesis of a macro or procedure call.
+
+
+
Parentheses
+
+
+Parentheses are important in only a few places:
+
+
+
Around the inner subexpressions in expressions that mix
+&& and ||, even if they are not
+required by precedence, for example
+
+
+(xx && yy) || zz
+
+
+
Similarly around inner subexpressions in expressions that mix
+&, |, or shifts, especially if mixing
+these with other operators, for instance
+
+
+(x << 3) | (y >> 5)
+
+
+
In macro definitions around every use of an argument that logically
+could be an expression, for example
+
+
+((x) * (x) + (y) * (y))
+
+
+
+
+
+Anywhere else, given the choice, use fewer parentheses.
+
+
+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
+
+
+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.
+
+
Macros
+
+
+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.
+
+
+Define macros in the smallest scope you can manage (procedure, file, or
+.h file), and #undef 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.
+
+
+Try hard to use procedures instead of macros. Use "inline"
+if you really think the extra speed is needed, but only within a
+.c file: don't put inline procedures in .h
+files, because most compilers don't honor "inline" and
+you'll wind up with a copy of the procedure in every .c
+file that includes the .h file.
+
+
+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.)
+
+
+If you define macros for special loop control structures, make their uses
+look somewhat like ordinary loops, for instance:
+
+
+BEGIN_RECT(xx, yy) {
+ ... body indented one position ...
+} END_RECT(xx, yy);
+
+
+
+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.
+
+
Comments
+
+
+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.
+
+
Naming
+
+
+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 #define and enum,
+struct and other typedef names, and
+structure member names, and for argument and variable names which have
+uninformative types like int. It's not very important for
+arguments or local variables of distinctive types, or for local index or
+count variables.
+
+
+Avoid names that run English words together:
+"hpgl_compute_arc_center" is better than
+"hpgl_compute_arccenter". However, for terms drawn from
+some predefined source, like the names of PostScript operators, use a term
+in its well-known form (for instance, gs_setlinewidth
+rather than gs_set_line_width).
+
+
+Procedures, variables, and structures visible outside a single
+.c file should generally have prefixes that indicate what
+subsystem they belong to (in the case of Ghostscript, gs_
+or gx_). This rule isn't followed very consistently.
+
+
Types
+
+
+Many older structure names don't have _t on the end, but
+this suffix should be used in all new code. (The _s
+structure name is needed only to satisfy some debuggers. No code other than
+the structure declaration should refer to it.)
+
+
+Declare structure types that contain pointers to other instances of
+themselves like this:
+
+
+typedef struct xxx_s xxx_t;
+struct xxx_s {
+ ... members ...
+ xxx_t *ptr_member_name;
+ ... members ...
+};
+
+
+
+If, to maintain data abstraction and avoid including otherwise unnecessary
+header files, you find that you want the type xxx_t to be
+available in a header file that doesn't include the definition of the
+structure xxx_s, use this approach:
+
+
+You can then copy the first 4 lines in other header files. (Don't ever
+include them in an executable code file.)
+
+
+Don't bother using const for anything other than with
+pointers as described below. However, in those places where it is necessary
+to cast a pointer of type const T * to type
+T *, always include a comment that explains why you are
+"breaking const".
+
+
Pointers
+
+
+Use const for pointer referents (that is,
+const T *) wherever possible and appropriate.
+
+
+If you find yourself wanting to use void *, 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.
+
+
Procedures
+
+
+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
+"{...}" -- 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.
+
+
Miscellany
+
+
Local variables
+
+
+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.
+
+
+If a local variable is only assigned a value once, assign it that value at
+its declaration, if possible. For example,
+
+
+int x = some expression ;
+
+
+
+rather than
+
+
+int x;
+...
+x = some expression ;
+
+
+
+Use a local pointer variable like this to "narrow" pointer types:
+
+
+The following section refers to the warnings produced by gcc:
+your compiler may produce different ones.
+
+
+It's OK if compilation produces the following warnings:
+
+
+
<name> might be used uninitialized in this function
+
cast discards `const' from pointer target type
+
+
+
+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 const during its
+lifetime.
+
+
+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 const,
+by using explicit casts.
+
+
+
+
File structuring
+
+
All files
+
+
+Keep file names within the "8.3" format for portability:
+
+
Use only letters, digits, dash, and underscore in file names.
+
Don't assume upper and lower case letters are distinct.
+
Put no more than 8 characters before the ".", if any.
+
If there is a ".", put between 1 and 3 characters after the ".".
+
+
+
+For files other than documentation files, use only lower case letters
+in the names; for HTML documentation files, capitalize the first letter.
+
+
+Every code file should start with comments containing
+
+
+
a copyright notice,
+
the name of the file in the form of an RCS Id:
+
+
+/*Id$: filename.ext $*/
+
+
+
+(using the comment convention appropriate to the language of the file), and
+
+
a summary, no more than one line, of what the file contains.
+
+
+
+If you create a file by copying the beginning of another file, be sure to
+update the copyright year and change the file name.
+
+
Makefiles
+
+
+Use the extension .mak for makefiles.
+
+
+For each
+
+
+#include "xxx.h"
+
+
+
+make sure there is a dependency on $(xxx_h) in the
+makefile. If xxx ends with a "_", this rule still holds,
+so that if you code
+
+
+#include "math_.h"
+
+
+
+the makefile must contain a dependency on "$(math__h)"
+(note the two underscores "__").
+
+
+List the dependencies bottom-to-top, like the #include
+statements themselves; within each level, list them alphabetically. Do
+this also with #include statements themselves whenever
+possible (but sometimes there are inter-header dependencies that require
+bending this rule).
+
+
+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.
+
+
General C code
+
+
+List #include statements from "bottom" to "top", that is,
+in the following order:
+
+
+
System includes ("xxx_.h")
+
gs*.h
+
gx*.h (yes, gs and gx
+are in the wrong order.)
+
s*.h
+
i*.h (or other interpreter headers that don't start
+with "i")
+
+
+
Headers (.h files)
+
+
+In header files, always use the following at the beginning of a header file
+to prevent double inclusion:
+
+
+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.
+
+
Source (.c files)
+
+
+After the initial comments, arrange C files in the following order:
+
+
+
#include statements
+
Exported data declarations
+
Explicit externs (if necessary)
+
Forward declarations of procedures
+
Private data declarations
+
Exported procedures
+
Private procedures
+
+
+
+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.
+
+
+
+
Ghostscript conventions
+
+
Specific names
+
+
+The Ghostscript code uses certain names consistently for certain kinds of
+values. Some of the commonest and least obvious are these two:
+
+
A non-standard but successful return (which must be documented, preferably with the procedure's prototype)
+
+
+
+
+
status
+
+
+A value returned from a stream procedure:
+
+
+
< 0
+
+
An exceptional condition as defined in
+scommon.h
+
0
+
+
Normal return (or, from the "process" procedure, means that more input is needed)
+
1
+
+
More output space is needed (from the "process" procedure)
+
+
+
+
Structure type descriptors
+
+
+The Ghostscript memory manager requires run-time type information for every
+structure. (We don't document this in detail here: see the Structure descriptors 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
+xxx_s, define its structure descriptor:
+
+
+struct xxx_s {
+ ... members ...
+};
+#define private_st_xxx() /* in <filename>.c */\
+ gs_private_st_<whatever>(st_xxx, xxx_t,\
+ "xxx_t", xxx_enum_ptrs, xxx_reloc_ptrs,\
+... additional parameters as needed ...)
+
+
+
+The file that implements operations on this structure
+(<filename>.c) should then include, near the
+beginning, the line:
+
+
+private_st_xxx();
+
+
+
+In much existing code, structure descriptors are declared as
+public, which allows clients to allocate instances of the
+structure directly. We now consider this bad design. Instead, structure
+descriptors should always be private; the implementation
+file should provide one or more procedures for allocating instances, e.g.,
+
+
+xxx_t *gs_xxx_alloc(P1(gs_memory_t *mem));
+
+
+
+If it is necessary to make a structure descriptor public, it should be
+declared in its clients as
+
+
+extern_st(st_xxx);
+
+
+
"Objects"
+
+
+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:
+
+
+
+
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.
+
+
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.
+
+
+
+
Classes
+
+
+The source code representation of a class is simply a
+typedef for a C struct. See Structures, above, for details.
+
+
Procedures
+
+
+Ghostscript has no special construct for non-virtual procedures associated
+with a class. In some cases, the typedef for the class is
+in a header file but the struct 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.
+
+
+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
+xxx_t, it has a virtual procedure
+void (*virtu)(P1(xxx_t *)), and we have a variable
+declared as xxx_t *pxx.
+
+
+
+
The procedures are stored in a separate, constant structure of type
+xxx_procs, of which virtu is a member. The
+structure definition of xxx_t includes a member defined as
+const xxx_procs *procs (always named
+procs). The construct for calling the virtual procedure is
+pxx->procs->virtu(pxx).
+
+
The procedures are defined in a structure of type
+xxx_procs as above. The structure definition of
+xxx_t includes a member defined as
+xxx_procs procs (always named procs).
+The construct for calling the virtual procedure is
+pxx->procs.virtu(pxx).
+
+
The procedures are not defined in a separate structure: each procedure
+is a separate member of xxx_t. The construct for calling
+the virtual procedure is pxx->virtu(pxx).
+
+
The procedures are defined in a structure of type
+xxx_procs as above. The structure definition of
+xxx_t includes a member defined as
+xxx_procs procs[1] (always named
+procs). The construct for calling the virtual procedure is
+again pxx->procs->virtu(pxx).
+
+
+
+
+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.
+
+
+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.
+
+
Subclassing
+
+
+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, gx_device is the root class; it has a
+subclass gx_device_forward, which in turn has a subclass
+gx_device_null. 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 Structures above: we include these in the examples
+below.)
+
+
+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.
+
+
+Note that the above example is not the actual definition of
+the gx_device structure type: the actual type has some
+additional complications because it has a finalization procedure. See src/gxdevcli.h for the details.
+
+
+If you add members to a root class (such as gx_device in
+this example), or change existing members, do this in the
+gx_device_common macro, not the gx_device
+structure definition. Similarly, to change the
+gx_device_forward class, modify the
+gx_device_forward_common macro, not the structure
+definition. Only change the structure definition if the class is a leaf
+class (one with no _common macro and no possibility of
+subclassing), like gx_device_null.
+
+
Error handling
+
+
+Every caller should check for error returns and, in general, propagate them
+to its callers. By convention, nearly every procedure returns an
+int to indicate the outcome of the call:
+
+
+
< 0
+
+
Error return
+
0
+
+
Normal return
+
> 0
+
+
Non-error return other than the normal case
+
+
+
+To make a procedure generate an error and return it, as opposed to
+propagating an error generated by a lower procedure, you should use
+
+
+return_error(error_number);
+
+
+
+Sometimes it is more convenient to generate the error in one place and
+return it in another. In this case, you should use
+
+
+In executables built for debugging, the -E (or
+-Z#) command line switch causes return_error
+and gs_note_error to print the error number and the source
+file and line: this is often helpful for identifying the original cause of
+an error.
+
+
+See the file src/gserrors.h for the error
+return codes used by the graphics library, most of which correspond directly
+to PostScript error conditions.
+
+
+
+
+
+
+
+
+
+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.
+
+
+
+As we note in "Adding your own fonts",
+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.
+
+
+
About OCF fonts
+
+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.
+
+
+
+Adobe has announced that OCF is obsolete.
+For details of OCF, refer
+
+"CJKV Information Processing" (Ken Lunde, O'Reilly 1999) p. 281,
+"PostScript Language Reference Manual, third edition" p. 357
+
+href="http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf
+
+"PostScript Language Tutorial and Cookbook, Japanese edition" (Adobe Systems, Incorporated, ASCII Corporation 1989) pp. 241-271,
+
+and Technical Notes for CID-keyed fonts.
+
+
+
About CID-keyed fonts
+
+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
+
+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.
+
+
+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 & 2 (Traditional Chinese Hanzi glyphs),
+Adobe-GB1 (Simplified Chinese Hanzi glyphs),
+Adobe-Japan1 & 2 (Japanese Kana and Kanji glyphs),
+Adobe-Korea1 & 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:
+
CIDFontType 2 (FontType 11, CID-keyed Type42 font - TrueType)
+
+
+
+
+
+
+
+
+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. findfont, show,
+etc are not usable, however glyphshow 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.
+
+
+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.
+
+
+
+To use CID-keyed font, these CMap files must be installed into the CMap
+resource directory.
+
+
+
+
CIDFontType 0
+
+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.
+
+
+To make Ghostscript recognize a CIDFontType0 font is easy.
+If the CIDFontType0 font file is installed into a directory named "CIDFont"
+under GenericResourceDir (see
+Finding PostScript Level 2 resources),
+Ghostscript will find it when searching for resources in /CIDFont category.
+
+
+
+
+
CJK TrueType font and CIDFontType 2
+
+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
+
+CIDFontType2 is a CID extension of the Type42 font format.
+If Ghostscript is compiled with
+ttfont device
+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.
+
+
+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 CJKTTCID.htm for further particulars.
+
+
+The operator .openttcidfont constructs CIDFontType2
+font dictionary from a given TrueType font. .openttcidfont
+requires extra CMaps for PDF available from:
+
+
+When a font file in Microsoft's TrueType Collection format
+(a font file with suffix .ttc
+ 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 .openttcidfont, as:
+
+
+<ttc_filename> 2 .openttcidfont
+
+
+
+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, .openttcidfont 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:
+
+
+
+In addition about on-the-fly CIDFontType2 conversion of TrueType fonts
+(of Big5, PRC, ShiftJIS, Wangsung), .openttcidfont requires
+more extra CMap files which are available from Asian font packages for
+Adobe Acrobat Reader. See "Adobe
+CMaps" subsection of "Fonts and font facilities supplied with
+Ghostscript" section.
+
+
+
+
About "CIDFnmap" of Ghostscript
+
+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.
+
+
+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:
+
+
+/Ryumin-Light /WadaMin-Regular ;
+
+
+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:
+
+
+For detail, please refer included sample CIDFnmap. For the sites
+to get font itself, refer Fonts.htm.
+
+
+
CIDFnmap.Ore
+
+ For free CJK CIDFontType0 fonts manufactured by Adobe.
+
+
+
CIDFnmap.Bae
+
+ For free Hangul TrueType fonts manufactured by Hwan Design Inc..
+
+
+
CIDFnmap.ARP
+
+ For free Simplified/Traditional Chinese TrueType fonts
+ manifactured by Arphic Technology.
+
+
+
CIDFnmap.Koc
+
+ Japanese TrueType fonts and free CIDFontType0 version of them,
+ Kochi Mincho and Gothic.
+
+
+
CIDFnmap.Sol
+
+ For CJK TrueType fonts bundled on Solaris 8 International edition.
+
+
+
CIDFnmap.Win
+
+ For CJK TrueType fonts bundled on Windows.
+
+
+
CIDFnmap.CJK
+
+ Aliasing for printer-based CJK fonts
+ (/HYGoThic-Medium, /MSung-Light, /Ryumin-Light, /STSong-Light, etc)
+ and fallback font definitions for missing fonts in PDF.
+
+ Aliasing locale-specific CIDFontNames which are often required
+ with multi-byte encoding in PS/PDF files.
+
+
+
+
+
+NOTE:
+In gs7.2x and later release,
+"CIDFnmap" feature will be merged into new mapping feature:
+"cidfmap" and "CIDFnmap" itself will be removed.
+
+
+
+There are CJK samples in examples/cjk:
+
+all_ac1.ps, all_ag1.ps, all_aj1.ps, all_aj2.ps, all_ak1.ps
+
+(drawing all glyphs in Adobe CID for Traditional Chinese,
+Simplified Chinese, Japanese, Japanese Hojo Kanji, Korean)
+
+gscjk_ac.ps, gscjk_ag.ps, gscjk_aj.ps, gscjk_ak.ps
+
+(drawing short texts in horizontal and vertical writing modes)
+and multilingual sample iso2022.ps
+(this sample loads many fonts for various scripts, quite heavy).
+gscjk_* 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.
+
+
+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.
+
+
+
+
+
+
+This section by Suzuki Toshiya and gs-cjk project.
+<mpsuzuki@gyve.org>
+
+
+
+
+
This file is part of GNU Ghostscript. See the
+GNU General Public License (the "License") for
+full details of the terms of using, copying, modifying, and redistributing
+GNU Ghostscript.
+
+
+Ghostscript version 7.07, 17 May 2003
+
+
+
+
+
+
+
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 @@
+
+
+
+Adobe CIDs and glyphs in CJK TrueType font
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+This article is written by Taiji Yamada
+<taiji@aihara.co.jp>.
+He takes full responsibility for the wording and content of this article.
+
+
+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
+
+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.
+
+
+The current revision of on-the-fly CIDFontType 2 technology
+supports the following kinds Registry-Ordering (RO) of CID-keyed
+fonts:
+
+
+
+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:
+
+
+ [Encoding] [Code Page] [RO]
+ Unicode Japanese Adobe-Japan1
+ Simplified Chinese Adobe-GB1
+ Korean Wansung Adobe-Korea1
+ Traditional Chinese Adobe-CNS1
+ Korean Johab Adobe-Korea1
+
+
+For each combination of RO and TTF Encoding, following Adobe CMaps are
+applied:
+
+
+
+where Supplement values are denoted as the limit determined by the
+maximum CID in used CMaps.
+
+
+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.
+
+
+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.
+
+
+Adobe CIDs that current Ghostscript can fills by CJK TTF
+
+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.
+
+
+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].
+
+
+
+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.
+
+
+
This file is part of GNU Ghostscript. See the
+GNU General Public License (the "License") for
+full details of the terms of using, copying, modifying, and redistributing
+GNU Ghostscript.
+
+
+Ghostscript version 7.07, 17 May 2003
+
+
+
+
+
+
+
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.
+
+
+ Copyright (C)
+
+ 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.
+
+ , 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.
+
+
+
+ Copyright (C)
+
+ 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.
+
+ , 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 @@
+
+
+Ghostscript 7.07 change history as of 2003-05-17 15:57:59
+
+
+
+
+
+
+
+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
+<body bgcolor="#CCCC00">, 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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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
+<body bgcolor="#CCCC00">, 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)
+
+
+
+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)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
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 @@
+
+
+
+Information specifically about the current release
+
+
+
+
+
+
+
+
+
+
+
+(This is not a complete list of new features: see the
+news for details.)
+
+
+Ghostscript now handles essentially all of PostScript LanguageLevel 3 and
+PDF 1.3 (Acrobat 4.x compatibility). See Language.htm for details.
+
+
+The PDF writer now implements most of the Acrobat (TM) Distiller parameters
+for compressing and downsampling images.
+
+
+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.
+
+
+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.)
+
+
+16- and 24-bit X Windows displays are now fully supported.
+
+
+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.
+
+
+The syntax
+%iodevice%filename is now
+supported with the -sOutputFile= switch, allowing you to
+send raster output to a piped command.
+
+
+You can now use MMK or MMS to build Ghostscript on OpenVMS systems.
+
+
+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.
+
+
+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 the
+documentation for details.
+
+
+Ghostscript as a dynamically linked library is now supported on the Mac as
+well as on Windows.
+
+
+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 here for more
+information.
+
+
Changes (since release 5.50)
+
+
Directories and build procedure
+
+
+The files in the release now have a more complex directory structure. In
+the table below, top refers to the top-level directory,
+gsn.nn.
+
+
+The top/ is where you create a link to the
+appropriate makefile in top/src/. On all systems
+other than MS Windows, the build procedure does not write into this
+directory.
+
+
+The files included in the Ghostscript release now are found in five
+subdirectories.
+
+
+
top/src/ 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.
+
+
top/lib/ 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 make install command.
+
+
top/doc/ contains documentation. Copied by
+make install.
+
+
top/man/ contains Unix man
+pages. Copied by make install.
+
+
top/examples/ contains sample PostScript and
+PDF files. Copied by make install.
+
+
+
+
+The build procedure creates two additional subdirectories,
+top/obj/ (or debugobj or
+pgobj) and top/bin/. See the
+documentation on how to build Ghostscript for more
+information.
+
+
Other changes
+
+
+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 release news for important
+information.
+
+
+On a DOS system, interrupting the interpreter by typing control-C doesn't
+restore the display mode.
+
+
Limitations
+
+
+serialnumber returns the same value in all copies.
+
+
+Some floating point exceptions terminate the interpreter, rather than
+producing a limitcheck error.
+
+
+The DCTEncode filter disregards the Blend
+parameter, and uses different QuantTables and
+HuffTables from Adobe's.
+
+
+The DCT filters do not support nonintegral sample ratios. Also,
+DCTEncode will not create files with Sum(HS×VS)>10
+(regardless of the value of the Relax parameter) because
+they violate the JPEG standard; but DCTDecode will read
+such files.
+
+
+The size of the execution stack cannot be changed dynamically. (However,
+the sizes of the operand and dictionary stacks can be changed.)
+
+
+Separation and DeviceN 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 All and None, and the
+primary separations (Red, Green, etc.), are
+not supported.
+
+
+execform and ucache are implemented, but
+they do not actually do any caching; setucacheparams and
+ucachestatus are dummies. (This only impacts performance,
+not functionality.)
+
+
+The image operator honors the Interpolate
+flag in the image dictionary only for ImageType 1 and 3 images, only if the
+combined transformation (ImageMatrix + CTM) doesn't involve
+rotation, skewing, or X-reflection, and only for certain scalings and color
+spaces; imagemask doesn't honor Interpolate
+at all.
+
+
+Some path-building operations that would generate a device coordinate
+larger than +/-2^19 will cause a
+limitcheck. However, the common ones ([r]moveto,
+[r]lineto, [r]curveto, closepath) will not.
+
+
Graphics bugs
+
+
+There are no known graphics bugs in this release.
+
+
+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/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 @@
+
+
+
+How to use the Ghostscript Dynamic Link Library (DLL)
+
+
+
+
+
+
+
+
+
+
+
How to use the Ghostscript Dynamic Link Library (DLL)
+WARNING: The API described in this document is obsolete and will
+be removed in the future.
+The current Ghostscript Interpreter API
+is described in API.htm.
+
+
+
+
+
+
+
+
+
+
What is the Ghostscript DLL?
+
+
+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 usage documentation, a smaller independent executable
+(.EXE) 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, seven platform-independent
+ones provided by the DLL and one, the callback
+function, provided by the caller. The DLL provides some other
+platform-specific functions for display devices.
+
+
+The DLL's name and characteristics differ among the three platforms:
+
+
+
The OS/2 DLL GSDLL2.DLL has
+MULTIPLE NONSHARED data segments and can be called by multiple programs
+simultaneously.
+
+
The Win32 DLL GSDLL32.DLL 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.
+
+
The Win16 DLL GSDLL16.DLL 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.
+
+
+
+The source for the executable is in dp*.* (OS/2) and
+dw*.* (Windows). See these source files for examples of
+how to use the DLL.
+
+
+
+
Platform-independent DLL functions
+
+
+The seven functions provided by the DLL are
+
+
int GSDLLAPI gsdll_revision(char **product, char **copyright, long *gs_revision, long *gs_revisiondate)
+
int GSDLLAPI gsdll_init(GSDLL_CALLBACK callback, HWND hwnd, int argc, char *argv[]);
+
int GSDLLAPI gsdll_lock_device(unsigned char *device, int flag);
+
+
+where GSDLLAPI is defined under OS/2 as
+
+
+#define GSDLLAPI
+
+
+
+and under MS Windows as
+
+
+#define GSDLLAPI CALLBACK _export
+
+
+
+
gsdll_revision()
+
+
+This function returns the revision numbers and strings of the Ghostscript
+DLL; you should call it before gsdll_init() to make sure
+that the correct version of the Ghostscript DLL has been loaded. For
+example
+
+
+You may use NULL pointers if you do not want a particular
+value.
+
+
+
gsdll_init()
+
+
+gsdll_init() 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
+
+
+hwnd is used as the parent window handle for any windows
+created by Ghostscript. hwnd may be NULL
+if the caller has no windows, but if it is NULL, you should
+avoid using devices which may open windows.
+
+
+A return code of 0 (zero) indicates no errors, and the code may now call
+gsdll_execute_begin() or gsdll_exit(). If
+the return value is non-zero then gsdll_exit() must not be
+called.
+
+
+A return value of GSDLL_INIT_QUIT indicates that one of the
+command line files or arguments called "quit", or that
+Ghostscript was reading stdin and reached end-of-file. This is not an
+error. gsdll_exit() must not be called.
+
+
+A return value of GSDLL_INIT_IN_USE indicates that the DLL
+is in use by another application (Windows 3.1 only). The DLL should be
+immediately unloaded (or the caller terminated).
+gsdll_exit() must not be called.
+
+
+
gsdll_execute_begin()
+
+
+This must be called after gsdll_init() and before
+gsdll_execute_cont().
+
+
+
gsdll_execute_cont()
+
+
+After successfully calling gsdll_init() and
+gsdll_execute_begin(), commands may be given to Ghostscript
+with gsdll_execute_cont(). Examples are:
+
+
"quit" has been executed, or fatal error.
+gsdll_exit() must then be called: do not call
+gsdll_execute_end().
+
+
+
+gsdll_execute_cont()
+does not flush stdio, so if you want to see output from Ghostscript you
+must do this explicitly as shown in the example above.
+
+
+When executing a string with gsdll_execute_cont(),
+currentfile is the input from
+gsdll_execute_cont(). Reading from %stdin
+uses the callback.
+
+
+
+
gsdll_execute_end()
+
+
+If gsdll_execute_cont() did not return an error, then
+gsdll_execute_end() must be called after
+gsdll_execute_cont() and before
+gsdll_exit().
+
+
+
gsdll_exit()
+
+
+Call gsdll_exit() to terminate the Ghostscript DLL. It must be called if a
+fatal error has occurred; see the return value
+of gsdll_execute_cont(). After calling
+gsdll_exit(), there are two options:
+
+
+
Unload the DLL, either by terminating the application or by
+calling DosFreeModule (OS/2) or FreeLibrary (MS Windows).
+
+
Call gsdll_init() again to restart Ghostscript.
+
+
+
+
gsdll_lock_device()
+
+
+Since the caller may be multithreaded, a lock is needed to control access
+to the display device, and gsdll_lock_device() provides that
+locking.
+
+
+
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. */
+
+
+
+
Locking and unlocking devices
+
To lock a device
+
+
gsdll_lock_device(device, 1);
+
To unlock a device
+
+
gsdll_lock_device(device, 0);
+
+
+
+
+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.
+
+
+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.
+
+
+Under Win16 or Win32s, gsdll_lock_device() 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.
+
+
+
+
+
Callback function
+
+
+As an argument to gsdll_init() 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:
+
+
+int gsdll_callback(int message, char *str, unsigned long count);
+
+
+
+The Pascal calling convention is not used. An example callback function
+is:
+
+
get count characters to str from stdin, return number of characters read
+
GSDLL_STDOUT
+
+
2
+
+
put count characters from str
+ to stdout, return number of characters written
+
GSDLL_DEVICE
+
+
3
+
+
device str has been opened if
+ count = 1, closed if
+ count = 0
+
GSDLL_SYNC
+
+
4
+
+
sync_output for device str
+
GSDLL_PAGE
+
+
5
+
+
output_page for device str
+
GSDLL_SIZE
+
+
6
+
+
resize for device str:
+ LOWORD(count) is new xsize,
+ HIWORD(count) is new ysize
+
GSDLL_POLL
+
+
7
+
+
Called from gp_check_interrupt()
+ Can be used by the caller to poll the message queue.
+ Normally returns 0. To abort
+ gsdll_execute_cont(), return a non-zero
+ error code until gsdll_execute_cont()
+ returns.
+
+
+
+
+
+
+
Ghostscript DLL device for OS/2
+
+
+The os2dll 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 gsdll_callback() when a new
+os2dll device is opened or closed
+(GSDLL_DEVICE), when the window should be redrawn
+(GSDLL_SYNC or GSDLL_PAGE) or when the
+bitmap size changes (GSDLL_SIZE).
+Note that more than one os2dll device may be opened.
+
+
gsdll_get_bitmap()
+
+
+gsdll_get_bitmap() returns a pointer to a bitmap in BMP
+format. The os2dll device draws into this bitmap.
+
+
+
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 */
+
+
+
+The caller can then display the bitmap however it likes, but should lock
+the bitmap with gsdll_lock_device() before painting from
+it, and unlock it afterwards. The bitmap address does not change until the
+os2dll device is closed; however the bitmap size and
+palette may change whenever the bitmap is not locked.
+
+
+
Example DLL usage for OS/2
+
+
+The example here shows a minimal usage of the Ghostscript DLL under OS/2.
+The sample callback function above is needed.
+
+
+The mswindll device is provided in the Ghostscript DLL for
+use by the caller. The caller is notified via the
+gsdll_callback() when a new mswindll device
+is opened or closed (GSDLL_DEVICE), when the window should
+be redrawn (GSDLL_SYNC or GSDLL_PAGE) or
+when the bitmap size changes (GSDLL_SIZE). Note that more
+than one mswindll device may be opened.
+
+
+Four DLL functions are available to use the mswindll
+device.
+
+
gsdll_copy_dib()
+
+
+Copy the mswindll bitmap to the clipboard.
+
+
+
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 */
+
+
+
+
gsdll_copy_palette()
+
+
+Copy the mswindll palette to the clipboard.
+
+
+
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 */
+
+
+
+
gsdll_draw()
+
+
+Display output from the mswindll device. The caller should
+create a window and call gsdll_draw() in response to the
+WM_PAINT message. The device context hdc
+must be for a device because SetDIBitsToDevice() is used.
+
+
+
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 */
+
+
+
+
gsdll_get_bitmap_row()
+
+
+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.
+
+
+Ghostscript can change the palette while the device is locked. Do not call
+this function while Ghostscript is busy.
+
+
+
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->biClrUsed
+ * If ppbyte nonzero, return pointer to row.
+ * pointer is only valid while device is locked
+ */
+
+
+
+
+
+
Ghostscript DLL Device for 16-bit MS Windows
+
+
+This platform has the most problems of the three. Support for it may be
+dropped in future.
+
+
+The Win16 DLL GSDLL16.DLL 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.
+
+
+However, GSDLL16 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, it cannot be used by more than one application at a
+time, so applications loading GSDLL16 should check the
+return value of gsdll_init(): if this value is non-zero,
+then GSDLL16 is already in use by another application and
+should not be used: GSDLL16 should be
+unloaded immediately using FreeLibrary(), or the calling
+program should quit without attempting to use the library..
+
+
+The segmented architecture of the Intel 80286 causes the usual amount of
+grief when using GSDLL16. Because the callback is called
+from the DLL, which is using a different data segment, the callback must be
+declared as _far _export:
+
+
+
int _far _export gsdll_callback(int message, char *str, unsigned long count);
+
+
+
+Instead of giving gsdll_init() the address of
+gsdll_callback(), it should instead be given the address of
+a thunk created by MakeProcInstance. This thunk changes
+the data segment back to that used by the caller:
+
+
+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/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 @@
+
+
+
+Information for Ghostscript developers
+
+
+
+
+
+
+
+
+
+
+This document provides a wealth of information about Ghostscript's
+internals, primarily for developers actively working on Ghostscript. It is
+primarily descriptive, documenting the way things are; the
+companion C style guide is primarily
+prescriptive, documenting what developers should do when
+writing new code.
+
+
+THIS FILE IS A WORK IN PROGRESS. MANY SECTIONS ARE PLACE-HOLDERS.
+
+
Architecture
+
+
Design goals
+
+
+Ghostscript has the following high-level design goals (not listed in order
+of importance):
+
+
+
Functionality
+
+
Ability to interpret the current PostScript and PDF languages, as
+defined (and occasionally, in the case of conflict, as implemented) by
+Adobe.
+
Ability to convert PostScript to and from PDF, comparable to
+Adobe products.
+
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).
+
+
Performance
+
+
Ability to render PostScript and PDF with commercial-quality performance
+(memory usage, speed, and output quality) on all platforms.
+
Specifically, ability to render PostScript effectively in embedded
+environments with constrained RAM, including the ability to put the code and
+supporting data in ROM.
+
+
Licensing
+
+
Licensing that supports both the Open Source / Free software communities
+and a commercial licensing business.
+
Freedom from licensing restrictions or fees imposed by third parties.
+
+
Other
+
+
Easy source portability to any platform (CPU, operating system, and
+development tools) that has an ANSI or K&R C compiler.
+
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.
+
+
+
+
+These goals often conflict: part of Ghostscript's claim to quality is that
+the conflicts have been resolved well.
+
+
Design principles
+
+
+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.
+
+
Non-preemption
+
+
+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.
+
+
+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 return, preserving its own state in data
+structures, or to call back 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:
+
+
+
+
For callers that want to pass input to Ghostscript piece by piece,
+Ghostscript returns with an e_NeedInput 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.)
+
+
In the future, the same arrangement should be used for input from
+stdin and output to stdout and
+stderr.
+
+
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.
+
+
+
+
+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.)
+
+
+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 Memory management section below.
+
+
Multi-instantiability
+
+
+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.
+
+
Late configuration binding
+
+
+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.
+
+
+
+
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.
+
+
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.)
+
+
Startup binds essentially nothing. Almost every option and parameter
+that can appear on the command line can also be changed dynamically.
+
+
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.
+
+
+
+
+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.
+
+
Large-scale structure
+
+
+At the largest design scale, Ghostscript consists of 4 layers. Layer N
+is allowed to use the facilities of all layers M <= N.
+
+
+
+
The bottom layer is called the substrate. 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.
+
+
The layer above the substrate is the graphics layer. It consists of two
+separate sub-parts. The graphics layer is written in C.
+
+
+
+
The graphics library 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.
+
+
The device drivers 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.
+
+
+
+
The principal clients of the graphics layer are language interpreters.
+Ghostscript as distributed includes the PostScript interpreter; 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.
+
+
The PDF interpreter is actually a client
+of the PostScript interpreter: it is written entirely in PostScript.
+
+
+
+
+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 Drivers.htm) and kept stringently backward-compatible
+through successive releases.
+
+
Object-oriented constructs
+
+
+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 "Objects" section of the C style guide
+explains these.
+
+
+The memory manager API provides run-time type information about each class,
+but this information does not include anything about subclassing. See under
+Structure descriptors below.
+
+
+
+
File roadmap
+
+
+This section of the document provides a roadmap to all of the Ghostscript
+source files.
+
+
+Ghostscript uses 4 internal representations of color. We list them here in
+the order in which they occur in the rendering pipeline.
+
+
+
+
Clients of the graphics library normally specify colors using the
+client color structure (gs_client_color, defined in
+src/gsccolor.h), 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
+setcolor operator: one or more (floating-point) numeric
+components and/or a Pattern. Client colors are interpreted relative to a
+color space (gs_color_space, defined in src/gscspace.h and src/gxcspace.h, with specific color spaces
+defined in other files). Client colors do not explicitly reference the
+color space in which they are are interpreted: setcolor uses
+the color space in the graphics state, while images and shadings explicitly
+specify the color space to be used.
+
+
For ordinary non-Pattern colors, the first step in color rendering
+reduces a client color to a concrete 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 frac values (defined in src/gxfrac.h) rather than floats. The procedure
+for this step is the virtual concretize_color and
+concrete_space procedures in the (original) color space.
+This step reduces Indexed colors, CIEBased colors, and Separation and
+DeviceN colors that use the alternate space.
+
+
The final step requires mapping a concrete color to the device's color
+model, done by procedures in src/gxcmap.c.
+These procedures combine the following three conceptual sub-steps:
+
+
+
+
A possible mapping between Device color spaces, possibly involving black
+generation and undercolor removal. The non-trivial cases are implemented in
+src/gxdcconv.c.
+
+
Application of the transfer function(s) (done in-line).
+
+
Halftoning if necessary: see below.
+
+
+
+The result is called (inappropriately) a device color
+(gx_device_color, defined in src/gsdcolor.h and src/gxdcolor.h). 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 remap_concrete_color procedure
+in the color space.
+
+
The pure colors that underlie a device color are opaque pixel
+values defined by the device (misnamed gx_color_index,
+defined in src/gscindex.h). 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
+gx_color_info structure stored in the device (defined in src/gxdevcli.h). 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.)
+
+
+
+
+Steps 2 and 3 are normally combined into a single step for efficiency, as
+the remap_color virtual procedure in a color space.
+
+
+Using a device color to actually paint pixels requires a further step called
+color loading, implemented by the load virtual
+procedure in the device color. This does nothing for pure colors, but loads
+the caches for halftones and Patterns.
+
+
+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.
+
+
+All painting operations (fill, stroke, imagemask/show) eventually call a
+virtual procedure in the device color, either fill_rectangle
+or fill_mask to actually paint pixels. For rectangle fills,
+pure colors call the device's fill_rectangle procedure;
+halftones and tiled Patterns call the device's
+tile_rectangle; shaded Patterns, and painting operations
+that involve a RasterOp, do something more complicated.
+
+
+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.
+
+
+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.
+
+
+Ghostscript uses two distinct types of rendered halftones -- that is, the
+bitmap(s) that represent a particular level.
+
+
+
+
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.
+
+
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.
+
+
+
+
+The halftone level for rendering a color is computed in src/gxdither.c; the actual halftone mask or
+tile is computed either in src/gxcht.c (for
+multi-plane halftones), or in src/gxht.c and src/gxhtbit.c (for binary halftones).
+
+
+Pattern colors (tiled patterns and shadings) each use a slightly different
+approach from solid colors.
+
+
+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 e_RemapColor 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.
+
+
+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.
+
+
+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 ******
+
+
+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.
+
+
+The library supports three different kinds of clipping:
+
+
+
+
+Region/path clipping
+
+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 src/gxcpath.h), or
+by a path that is converted to such a list of rectangles.
+
+
+Stationary mask clipping
+
+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.
+
+
+Tiled mask clipping
+
+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.
+
+
+
+
+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 src/gxcpath.h, 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.
+
+
+See doc/Drivers.htm for extensive documentation on
+the interface between the core code and drivers.
+
+
+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.
+
+
Internal devices
+
+
+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:
+
+
+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).
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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 return 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.
+
+
+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.
+
+
+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.
+
+
+
+
Main program
+
+
+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.
+
+
+The main data structures visible to the PostScript programmers are arrays,
+contexts, dictionaries, names, and stacks.
+
+
+Arrays have no unusual properties. See under Refs below
+for more information about how array elements are stored.
+
+
+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.
+
+
+Dictionaries have two special properties worth noting:
+
+
+
+
They use an optimized storage representation if all the keys are names,
+which is almost always the case.
+
+
They interact with a caching scheme used to accelerate name lookup in
+the interpreter.
+
+
+
+
+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.)
+
+
+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 src/iostack.h for more details.
+
+
+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.
+
+
+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 Language.htm#Additional_operators.
+
+
+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:
+
+
+grep '{".[.]' src/[zi]*.c
+
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+
+
Interpreter support
+
+
+Memory management (refs, GC, save/restore) -- see below.
+
+
+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.
+
+
+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.
+
+
+In addition to patching the run operator to detect PDF
+files, the interpreter provides some procedures in lib/pdf_main.ps that are meant to be called
+from applications such as previewers.
+
+
+Ghostscript's makefiles embody a number of design decisions and assumptions
+that may not be obvious from a casual reading of the code.
+
+
+
+
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 makefile, which in
+turn simply references the real top-level makefile in the source
+subdirectory.
+
+
All compiler and linker switches are likewise defined by macros, again
+preferably in the top-level platform makefile.
+
+
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 (rm *) at any time with no bad
+effects. The source subdirectories are defined by macros named
+xxxSRCDIR.
+
+
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
+BINDIR, and those that are not needed at run time, defined
+by xxxGENDIR and xxxOBJDIR. (The
+distinction between these is historical and probably no longer relevant.)
+
+
There may be multiple object subdirectories for different build
+configurations. On Unix, the obj and bin
+directories are used for normal production builds, the
+debugobj directory for debugging builds, and the
+pgobj directory for profiling builds; other platforms may
+use different conventions. The Unix makefiles support targets named
+debug and pg for debugging and profiling
+builds respectively; other platforms generally do not.
+
+
Makefiles will be maintained by hand. This requires editing the
+following makefile elements whenever the relevant source files changes:
+
+
+
+
Every header (.h) file must have a corresponding macro definition in a
+makefile. If abc.h #includes def.h and
+xyz.h, the definition must have the form
+
+
+xyz_h=$(xxxSRCD)xyz.h $(def_h) $(xyz_h)
+
+
+where xxxSRCD 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 make
+programs expand macros in definitions at the time of definition rather than
+at the time of use.
+
+
Every .c file must have a corresponding rule in a makefile. If
+abc.c #includes def.h and
+lmn.h, the rule must have approximately the form
+
+
+
+where xxxSRCD is as before; xxxOBJD is the
+relevant object directory; xxCC defines the name of the C
+compiler plus the relevant compilation switches; and xxO_
+and C_ are macros used to bridge syntactic differences
+between different make programs.
+
+
+
+
+
+
+The requirement to keep makefiles up to date by hand has been controversial.
+Two alternatives are generally proposed.
+
+
+
+
Programs like makedeps, 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.
+
+
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.
+
+
+
+
+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.
+
+
+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 src/Makefile.in, and configure.ac. These sources are used in
+the release process to create a configure
+script in the toplevel directory of releases. Also, there is an autogen.sh 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.
+
+
+For more information about makefiles:
+
+
+
+
For a detailed list of makefiles, and a discussion of makefile issues
+related to portability, see the Makefiles section
+below.
+
+
For more detailed information about editing configuration information in
+makefiles, see doc/Make.htm#Makefile_overview.
+
+
+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:
+
+
+
+
Almost always, it requires linking in some compiled code files.
+
+
It may require running some additional initialization procedures at
+startup.
+
+
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.
+
+
It may require adding entries to a variety of internal tables that
+catalogue such things as drivers, IODevices, Function types, etc.
+
+
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.
+
+
It may require removing 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 -replace in the makefiles and in
+src/genconf.c.
+
+
+
+
+Each module is defined in the makefiles by rules that create a file named
+xxx.dev. 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 genconf, described
+in the next section, merges all the relevant .dev files together. For
+examples of .dev rules, see any of the Ghostscript makefiles.
+
+
+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
+FEATURE_DEVS and DEVICE_DEVSn, defined in
+each top-level makefile, but nothing in the module machinery depends on
+this.
+
+
Generators
+
+
+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.
+
+
+The most important and complex of the generator programs is
+genconf. genconf merges all the .dev files
+that make up the build, and creates three or more output files used in later
+stages:
+
+
+
+
gconfig.h, consisting mainly of macro calls, one call
+per "resource" making up the build, other than "resources" listed in the
+other output files.
+
+
gconfigf.h, produced only for PostScript builds with
+compiled-in fonts, consisting of one macro call per font.
+
+
A linker control file whose name varies from one platform to another,
+containing the list of compiled code files to be linked.
+
+
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.)
+
+
+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.
+
+
+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.
+
+
+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 COMPILE_INITS was set to 1 in the
+makefile.
+
+
+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.
+
+
+Many of these scripts come in both Unix and MS-DOS (.bat
+versions; some also have an OS/2 (.cmd) 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.
+
+
+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:
+
+
+
+
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.
+
+
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.
+
+
Rather than a single genus of untyped storage blocks, Ghostscript's
+allocators provide two genera -- type-tagged 'objects', and 'strings' --
+with substantially different properties.
+
+
+
+
Objects vs strings
+
+
+As noted above, allocators provide two different storage genera.
+
+
+Objects:
+
+
+
Are aligned in storage to satisfy the most stringent alignment
+requirement imposed by the CPU or compiler;
+
Can be referenced only by pointers to their start, not to any internal
+location, unless special arrangements are made;
+
May contain pointers to other objects, or to strings;
+
Have an associated structure descriptor that specifies their
+size (usually) and the location of any pointers contained within them.
+
+
+
+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.)
+
+
+Strings:
+
+
+
Are not aligned in storage;
+
Can be referenced by pointers (consisting of a starting address and a
+length) to any substring, starting anywhere within the string;
+
May not contain pointers;
+
Do not have a structure descriptor.
+
+
+
+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.
+
+
Structure descriptors
+
+
+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:
+
+
+
Specifying the size of the object for allocation;
+
Providing pointer-enumeration and pointer-relocation procedures for
+the garbage collector;
+
Providing an optional finalization procedure to be called when the
+object is freed (either explicitly or automatically).
+
+
+
+Structure descriptors are read-only, and are normally defined statically
+using one of the large set of gs_private_st_ or
+gs_public_st_ macros in src/gsstruct.h.
+
+
+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.
+
+
+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
+must 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.
+
+
+By convention, the structure descriptor for structure type
+xxx_t is named st_xxx (this is preferred),
+or occasionally st_xxx_t.
+
+
+Note that a structure descriptor is only required for objects allocated by
+the Ghostscript allocator. A structure type xxx_t does not
+require a structure descriptor if instances of that type are used
+only in the following ways:
+
+
+
+
Instances are allocated only on the C stack, e.g., as
+xxx_t xxx1, xxx2;, or on the C heap, with
+malloc or through the Ghostscript "wrapper" defined in src/gsmalloc.h.
+
+
Pointers to instances are not stored in places where the garbage
+collector will try to trace the pointer.
+
+
Code never attempts to get the structure type or size of an instance
+through the allocator API.
+
+
+
+
+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.
+
+
+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.
+
+
+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:
+
+
+
The "real" garbage collector associated with the PostScript interpreter,
+described below;
+
A "non" garbage collector that only merges adjacent free blocks.
+
+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.
+
+
Parent hierarchy
+
+
+When an allocator needs to add memory to the pool that it manages, it
+requests the memory from its parent 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 malloc, described below. However, especially in embedded environments, an
+allocator may be limited to a fixed-size pool assigned to it when it is
+created.
+
+
Allocator API
+
+In summary, the allocator API provides the following principal operations:
+
+
+
Allocate and free movable (default) or immovable objects and strings.
+
Return the structure type and size of an object.
+
Resize (shrink or grow) movable objects and strings, preserving
+the contents insofar as possible.
+
Report the size of the managed pool, and how much of it is in use.
+
Register and unregister root pointers for the garbage collector.
+
Free the allocator itself.
+
Consolidate adjacent free blocks to reduce fragmentation.
+
+The allocator API also includes one special hook for the PostScript
+interpreter: the concept of stable allocators. See the section on save and
+restore below for details.
+
+
+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.
+
+
+Objects are always freed as a whole; strings may be freed piecemeal.
+
+
+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.
+
+
Explicit freeing
+
+
+Objects and strings may be freed explicitly, using the
+gs_free_ 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.
+
+
+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.
+
+
Reference counting
+
+
+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.
+
+
+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.
+
+
+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).
+
+
+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 wrapper allocator, that simply forwards all calls to a
+target allocator under protection of a mutex. Using the wrapper
+technique, any allocator can be made thread-safe.
+
+
+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.
+
+
+The standard Ghostscript allocator gets storage from its parent (normally
+the malloc allocator) in large blocks called
+chunks, 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.
+
+
+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.
+
+
+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 Refs below for details.
+
+
+The PostScript interpreter uses an allocator that extends the graphic
+library's standard allocator to handle PostScript objects,
+save and restore, and real garbage
+collection.
+
+
Refs (PostScript "objects")
+
+
+Ghostscript represents what the PLRM calls PostScript "objects" using a
+structure called a ref, defined in src/iref.h; packed refs, used for the elements of
+packed arrays, are defined in src/ipacked.h.
+See those files for detailed information.
+
+
+The PLRM calls for two types of "virtual memory" (VM) space: global and
+local. Ghostscript adds a third space, system 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 below). In a
+system with multiple contexts and multiple global or local VMs, each global
+or local VM has its own allocator instance(s).
+
+
+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 invalidaccess: the VM space tag values are chosen
+to help make this check efficient. See src/ivmspace.h, src/iref.h, and src/store.h for details.
+
+
+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 above). See src/gxalloc.h for details. This memory manager
+object has a structure descriptor, like all other memory manager objects.
+
+
+Note that the value.pdict, value.refs, or
+value.packed 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 (q.v.).
+
+
+In addition to save and restore, Ghostscript
+provides a .forgetsave operator that makes things as though
+a given save had never happened. (In data base terminology,
+save is "begin transaction", restore is
+"abort transaction", and .forgetsave is "end/commit
+transaction"). .forgetsave 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 src/isave.c for more
+information about how these operations work.
+
+
+Even though save and restore are concepts
+from the PostScript interpreter, the generic allocator architecture and API
+include a feature to support them, called stable allocators. Every
+allocator has an associated stable allocator, which tags pointers with the
+same VM space number but which is not subject to save and
+restore. 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.
+
+
+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.
+
+
+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 save level. (The original reason for
+wanting stable allocators was the PostScript stacks, which are essentially
+PostScript arrays but are not subject to save and
+restore.) For more examples, search the sources for
+references to gs_memory_stable.
+
+
Garbage collection
+
+
+The interpreter's garbage collector is a compacting, non-conservative,
+mark-and-sweep collector.
+
+
+
It compacts storage because that is the only way to avoid permanent
+sandbars, which is essential in limited-memory environments.
+
It is non-conservative because conservative collectors (which attempt
+to determine whether arbitrary bit patterns are pointers) cannot compact.
+
It uses mark-and-sweep, rather than a more modern copying approach,
+because it cannot afford the extra memory required for copying.
+
+
+
+Roots for tracing must be registered with the allocator. Most roots are
+registered during initialization.
+
+
+"Mark-and-sweep" is a bit of a misnomer. The garbage collector actually has
+5 main phases:
+
+
+
Sweep to clear marks;
+
Trace and mark;
+
Sweep to compute relocation;
+
Sweep to relocate pointers;
+
Sweep and compact.
+
+
+
+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.
+
+
+As noted above, PostScript arrays and strings can have refs that point
+within them (because of getinterval). 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:
+
+
+
+
Objects have a mark bit in their header: see
+src/gxobj.h,
+
+
Strings use a separate bit table, with one bit per string byte: see
+src/gxalloc.h,
+
+
+
+
+Similarly, it records the relocation information for objects, refs, and
+strings differently:
+
+
+
+
Objects record relocation in the object header.
+
+
Refs record relocation in unused fields of refs such as nulls that
+don't use their value field. Every memory manager object
+that stores ref-containing objects as described above has an extra, unused
+ref at the end for this purpose.
+
+
+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:
+
+
+
+
Structural mechanisms -- segregating
+platform-dependent information into files in a particular way.
+
+
Coding standards -- avoiding relying on byte
+order, scalar size, and platform-specific compiler or library features.
+
+
+
+
Structural
+
+
CPU and compiler
+
+
+Ghostscript attempts to discover characteristics of the CPU and compiler
+automatically during the build process, by compiling and then executing a
+program called genarch. genarch generates a
+file obj/arch.h, 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.
+
+
+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
+<xxx.h> there is a
+corresponding Ghostscript source file
+src/xxx_.h, 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.
+
+
+It has been suggested that the GNU configure scripts do the
+above better, for Unix systems, than Ghostscript's current methods. While
+this may be true, we have found configure scripts difficult
+to write, understand, and maintain; and the autoconf tool
+for generating configure scripts, which we found easy to
+use, doesn't cover much of the ground that Ghostscript requires.
+
+
Cross-platform APIs
+
+
+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.
+
+
+For information on the structure and conventions used within makefiles, see
+the Makefile structure section above.
+
+
+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 make. To achieve this, the
+platform-independent makefiles must obey two constraints beyond those of the
+POSIX make program:
+
+
+
+
No conditionals or includes are allowed. While most
+make 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.)
+
+
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 MMS and MMK programs.
+
+
+
+
+The top-level makefile for each platform (where "platform" includes the OS,
+the compiler, and the flavor of make) contains all the build
+options, plus includes for the generic makefiles and any
+platform-dependent makefiles that are shared among multiple platforms.
+
+
+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.
+
+
+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:
+
+
+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 the Unix
+section of the documentation for building Ghostscript.
+
+
+Coding for portability requires avoiding both explicit
+dependencies, such as platform-dependent #ifdefs, and
+implicit dependencies, such as dependencies on byte order or the
+size of the integral types.
+
+
Explicit dependencies
+
+
+The platform-independent .c files never, ever, use #ifdef or
+#if 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 long values, we define a macro
+ARCH_SIZEOF_LONG that can then be tested. Such macros are
+always defined in a .h file, either automatically in arch.h,
+or explicitly in a xxx_.h file, as described in
+earlier sections.
+
+
+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.
+
+
+Ghostscript's code assumes the following about the sizes of various types:
+
+
+
char
8 bits
+
short
16 bits
+
int
32 or 64 bits
+
long
32 or 64 bits
+
float
32 bits (may work with 64 bits)
+
double
64 bits (may work with 128 bits)
+
+
+
+The code does not assume that the char 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 byte (a
+Ghostscript synonym for unsigned char) almost everywhere.
+
+
+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
+PTR_relation macros rather than direct comparisons.
+
+
+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).
+
+
Platform-specific code
+
+
+There are some features that are inherently platform-specific:
+
+
+
+
Microsoft Windows requires a lot of special top-level code, and also has
+an installer and uninstaller.
+
+
OS/2 requires a little special code.
+
+
MacOS also requires special top-level code (now distributed with the
+standard Ghostscript package).
+
+
All platforms supporting DLLs (currently all three of the above) share
+some special top-level code.
+
+
+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.
+
+
+
+
+
+
+
Adding features and options
+
+
+[Ray, please supply more information about what you want here]
+
+
Troubleshooting
+
+
+The Ghostscript code has many tracing and debugging features that can be
+enabled at run time using the -Z command line switch, if the
+executable was compiled with DEBUG defined. One
+particularly useful combination is -Z@\?, which fills free
+memory blocks with a pattern and also turns on run-time memory consistency
+checking. For more information, see doc/Use.htm#Debugging; you can also search for
+occurrences of if_debug or gs_debug_c in the
+source code. Note that many of these features are in the graphics library
+and do not require a PostScript interpreter.
+
+
+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 src/idebug.c (for the
+PostScript interpreter) and the debug_dump_ procedures in src/gsmisc.c.
+
+
+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/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 @@
+
+
+
+Details of Ghostscript output devices
+
+
+
+
+
+
+
+
+
+
+
+Several different important kinds of measures appear throughout this
+document: inches, centimeters and millimeters, points, and bits per pixel.
+
+
+
Inches
+
1 inch equals 2.54 centimeters. The inch measure is sometimes
+represented by "in" or a quotation mark (") to the right
+of a measure, like 8.5in or 8.5"". Dots per inch,
+"dpi", are the common measure of printing resolution for dot-matrix,
+laser, and ink-jet printers. U.S. "letter" paper is exactly
+8.5in×11in, approximately 21.6cm×27.9cm. (See in the usage
+documentation all the paper sizes
+predefined in Ghostscript.)
+
+
Centimeters and millimeters
+
ISO standard paper sizes such as A4 and A3 are commonly represented in
+the SI units of centimeters and millimeters. Centimeters are abbreviated
+"cm", millimeters "mm". ISO A4 paper is
+quite close to 21.0×29.7 centimeters (approximately 8.3×11.7
+inches).
+
+
Points
+
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 paper sizes
+known to Ghostscript are defined in the initialization file
+gs_statd.ps in terms of points.
+
+
Bits per pixel
+
Commonly abbreviated "bpp".
+
+
+
+
+
IJS - Inkjet and other raster devices
+
+
+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.
+
+
+
+Even more importantly, the vast majority of inkjet printers are now
+supported by one of the two free collections described below:
+Gimp-Print and HPIJS. Therefore
+the ijs interface is your best bet for such printers from a practical
+point of view as well.
+
+
+
Please see the IJS web
+page for more information about IJS, including a listing of
+IJS-compatible drivers.
+
+Individual IJS command line parameters are as follows:
+
+
+
+
-sIjsServer={path}
+
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 Security for more information.
+
+
+
+
-sDeviceManufacturer={name}
+
-sDeviceModel={name}
+
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.
+
+
+
+
-sIjsParams={params}
+
This parameter allows you to set arbitrary IJS parameters on
+the IJS driver. The format is a comma-separated list of
+key=value pairs. If it is necessary to send a
+value containing a comma or backslash, it can be escaped with
+a backslash. Thus, '-sIjsParams=Foo=bar,Baz=a\,b' sets
+the parameter Foo to "bar", and Baz to "a,b".
+
+
+
+
-dIjsUseOutputFD
+
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.
+
+
+
+
-dBitsPerSample=N
+
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.
+
+
+
Generic Ghostscript options that are particularly relevant for IJS
+are summarized below:
+
+
+
+
-rnumber
+ -rnumber1xnumber2
+
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.
+
+
+
+
-dDuplex
+
-dTumble
+
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.
+
+
+
+
-sProcessColorModel={name}
+
Use this flag to select the process color model. Suitable values
+include DeviceGray, DeviceRGB, and DeviceCMYK.
+
+
+
Building IJS
+
+
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:
+
+
+DEVICE_DEVS2=$(DD)ijs.dev
+
+
+
Next, make sure that the path and execution type are set in
+the toplevel makefile. The values for Unix are as follows:
+
+
+IJSSRCDIR=ijs
+IJSEXECTYPE=unix
+
+
+
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.
+
+
Last, make sure that ijs.mak is included in the toplevel makefile.
+It should be present right after the include of icclib.mak.
+
+
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!
+
+
+
+
Gimp-Print drivers
+
+
+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 http://gimp-print.sourceforge.net/ for more
+information including supported printers and appropriate options.
+
+
+GNU Ghostscript also includes a special client device for the Gimp-Print
+family of drivers. The device itself is called stp for historical
+reasons. This device will not be supported in future versions of Ghostscript
+or Gimp-print.
+
+
+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.
+
+
+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.
+
+
HP Inkjet official drivers
+
+
+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 http://hpinkjet.sourceforge.net.
+
+
+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.
+
+
+Thanks to the folks at HP,
+especially David Suffield for making these drivers available and working to
+integrate it with Ghostscript.
+
+
+
+
MS Windows printers
+
+
+This section was written by Russell Lang, the author of Ghostscript's
+MS Windows-specific printer driver, and updated by
+Pierre Arnaud,
+the current maintainer.
+
+
+
+The mswinpr2 device uses MS 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).
+
+
+
+If no Windows printer name is specified in -sOutputFile,
+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.
+
+
+
+If a Windows printer name is specified in -sOutputFile using
+the format "\\spool\printer_name", for instance
+
+
+
+gs ... -sOutputFile="\\spool\Apple LaserWriter II NT"
+
+
+
+then Ghostscript attempts to open the Windows printer without prompting
+(except, of course, if the printer is connected to FILE:).
+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:
+
+
+
+
If the requested page size matches one of the Windows standard page
+sizes +/- 2mm, request that standard size.
+
+
Otherwise if the requested page size matches one of the Windows
+standard page sizes in landscape mode, ask for that standard size in
+landscape.
+
+
Otherwise ask for the page size by specifying only its dimensions.
+
+
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.
+
+
Open the Windows printer with the merged orientation and size.
+
+
+
+The Ghostscript physical device size is updated to match the Windows
+printer physical device.
+
+
+
Supported command-line parameters
+
+
+The mswinpr2 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:
+
+
+
+
+
-sDEVICE=mswinpr2
+
Selects the MS 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.
+
+
-dNoCancel
+
Hides the progress dialog, which shows the percent of the document page
+already processed and also provides a cancel button. This option
+is useful if GS is intended to print pages in the background, without any
+user intervention.
+
+
-sOutputFile="\\spool\printer_name"
+
Specifies which printer should be used. The printer_name should be
+typed exactly as it appears in the Printers control panel, including spaces.
+
+
+
+
+
Supported options (device properties)
+
+
+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:
+
+
+
+gs ... setup.ps ...
+
+
+
+The setup.ps file is responsible for the device selection, therefore
+you should not specify the -sDEVICE=mswinpr2 option on the
+command-line if you are using such a setup file. Here is an example of such
+a setup file:
+
+
+
+mark
+ /NoCancel true % don't show the cancel dialog
+ /BitsPerPixel 4 % force 4 bits/pixel
+ /UserSettings
+ <<
+ /DocumentName (Ghostscript document) % name for the Windows spooler
+ /MaxResolution 360 % maximum document resolution
+ >>
+ (mswinpr2) finddevice % select the Windows device driver
+ putdeviceprops
+setdevice
+
+
+
+This example disables the progress dialog (same as the -dNoCancel
+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 dpi).
+It then finds and selects an instance of the MS Windows device printer
+and activates it. This will show the standard printer dialog, since no
+/OutputFile property was specified.
+
+
+
+The following options are available:
+
+
+
+
+
/NoCancel boolean
+
Disables (hides) the progress dialog when set to true or
+show the progress dialog if not set or set to false.
+
+
/OutputFile string
+
Specifies which printer should be used. The string should be of the form
+\\spool\printer_name, where the printer_name should be
+typed exactly as it appears in the Printers control panel, including spaces.
+
+
/QueryUser integer
+
Shows the standard printer dialog (1 or any other value),
+shows the printer setup dialog (2) or selects the
+default Windows printer without any user interaction (3).
+
+
/BitsPerPixel integer
+
Sets the device depth to the specified bits per pixel. Currently supported
+values are 1 (monochrome), 4 (CMYK with screening
+handled by Ghostscript) and 24 (True Color, dithering handled by
+the Windows printer driver; this option can produce huge print jobs).
+
+
/UserSettings dict
+
Sets additional options, defined in a dictionary. The following properties can
+be set:
+
+
+
/DocumentName string
+
Defines the user friendly document name which will be displayed by the
+Windows spooler.
+
+
/DocumentRange [n1 n2]
+
Defines the range of pages contained in the document. This information can
+be used by the printer dialog, in conjunction with the following property.
+
+
/SelectedRange [n1 n2]
+
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.
+
+
/MaxResolution dpi
+
Specifies the maximum tolerated output resolution. If the selected printer has
+a higher resolution than dpi, then Ghostscript will render the
+document with a submultiple of the printer resolution. For example, if
+MaxResolution 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.
+
+
+
+
+
+
+
+These properties can be queried through the currentpagedevice
+operator. The following PostScript code snippet shows how to do it for some
+of the properties:
+
+
+
+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
+
+
+
+There are a few undocumented informations stored in the UserSettings
+dictionary. You should not rely on them. Their use is still experimental and
+they could be removed in a future version.
+
+
+
Duplex printing
+
+
+If the Windows printer supports the duplex printing feature, then it will
+also be available through the mswinpr2 device. You can query
+for this support through the /Duplex propery of the
+currentpagedevice. If it returns null, then
+the feature is not supported by the selected printer. Otherwise, true
+means that the printer is currently set up to print on both faces of the paper
+and false that it is not, but that it can.
+
+
+
+The following example shows how to print on both faces of the paper (using
+the long side of the paper as the reference):
+
+
+
+<< /Duplex true /Tumble false >> setpagedevice
+
+
+
+
+
+
+
+
+
File formats
+
+
JPEG file format (JFIF)
+
+
+Ghostscript includes output drivers that can produce Independent JPEG Group JFIF (JPEG File
+Interchange Format) files from PostScript images. Please note 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
+Portable Network Graphics
+(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
+
+
+You can use the JPEG output drivers -- jpeg to produce
+color JPEG files and jpeggray for grayscale JPEGs -- the
+same as other file-format drivers: by specifying the device name and an
+output file name, for example
+
+
+gs -sDEVICE=jpeg -sOutputFile=foo.jpg foo.ps
+
+
+
+You can also use the -r
+switch to specify the imaging resolution and thus the output file's
+size in pixels. The default resolution is normally 72×72dpi.
+
+
+The JPEG devices support several special parameters to control the JPEG
+"quality setting" (DCT quantization level).
+
+
+
+
-dJPEGQ=N (integer from 0 to 100, default 75)
+
Set the quality level N 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.
+
+
-dQFactor=M (float from 0.0 to 1.0)
+
Adobe's QFactor quality scale, which you may use in place of
+JPEGQ above. The QFactor scale is used by PostScript's
+DCTEncode filter but is nearly unheard-of elsewhere.
+
+
+
+
+At this writing the default JPEG quality level of 75 is equivalent to
+-dQFactor=0.5, 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.
+
+
TIFF file formats
+
+
+There are two unrelated sets of TIFF drivers. There are two color TIFF
+drivers that produce uncompressed output:
+
+
+
+
tiff12nc
+
Produces 12-bit RGB output (4 bits per component).
+
tiff24nc
+
Produces 24-bit RGB output (8 bits per component).
+
+
+
+
+The remaining TIFF drivers all produce black-and-white output with different
+compression modes:
+
+
+
+
tiffcrle
+
G3 fax encoding with no EOLs
+
tiffg3
+
G3 fax encoding with EOLs
+
tiffg32d
+
2-D G3 fax encoding
+
tiffg4
+
G4 fax encoding
+
tifflzw
+
LZW-compatible (tag = 5) compression
+
tiffpack
+
PackBits (tag = 32773) compression
+
+
+
+
+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:
+
+
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.
+
+
+
+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:
+
+
+If the value of the MaxStripSize 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.
+
+
+If the value of MaxStripSize is 0 (the default), then the entire image will
+be a single strip.
+
+
+
+
+
Display Devices
+
+
+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.
+
+
+This section describes the various display-oriented devices that are available
+in ghostscript.
+
+
X Window System
+
+
+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.
+
+
+The available devices are:
+
+
+
x11
+
This is the default device, handling display on X11R6.
+
+
x11alpha
+
This is the x11 device, but with antialiasing. It is equivalent to
+invoking the x11 device with the options -dGraphicsAlphaBits=4
+-dTextAlphaBits=4 -dMaxBitmap=50000000.
+
+
x11cmyk
+
This device rasterizes the image in the CMKY color space, then flattens
+it to RGB for display. It's intended for testing only.
+
+
x11mono
+
This is a strict black-and-white device for 1-bit monochrome displays.
+
+
x11gray2
+
This is a device for 2 bpp (4-level) monochrome displays.
+
+
x11gray4
+
This is a device for 4 bpp (16-level) monochrome displays.
+
+
+
+
+
+
H-P color inkjet printers
+
+
+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.
+
+
Drivers contained in gdevcdj.c
+
+
+The source module gdevcdj.c contains six generic drivers:
+
+
+
cdj500
+
+
HP DeskJet 500C and 540C
+
cdj550
+
+
HP DeskJet 550C, 560C, 660C, 660Cse
+
pjxl300
+
+
HP PaintJet XL300, DeskJet 1200C, and CopyJet
+
pjtest
+
+
HP PaintJet
+
pjxltest
+
+
HP PaintJet XL
+
declj250
+
+
DEC LJ250
+
+
+
+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
+
+
+Note: the old names cDeskJet,
+cdjcolor and cdjmono drivers have been
+retained; however, their functionality duplicates that available using the
+drivers above (and cDeskJet is identical to
+cdj500). That is, we can use
+
+
+
gs -sDEVICE=cdj500 -dBitsPerPixel=24
+
+
for cdjcolor, and
+
gs -sDEVICE=cdj500 -dBitsPerPixel=1
+
+
for cdjmono
+
+
+
Default paper size
+
+
+If the preprocessor symbol A4 is defined, the default paper
+size is ISO A4; otherwise it is U.S. letter size (see about
+paper sizes in the usage
+documentation). You can specify other paper
+sizes on the command line, including A3 for the PaintJet XL and
+PaintJet XL300, as also explained in the usage documentation.
+
+
DeskJet physical limits
+
+
+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.
+
+
+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.
+
+
Printer properties (command-line parameters)
+
+
+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
+
+
+gs -dBitsPerPixel=32 -dShingling=1 ...
+
+
+
+which sets the BitsPerPixel parameter to 32 and the
+Shingling parameter to 1.
+
+
Bits per pixel
+
+
+If the preprocessor symbol BITSPERPIXEL 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 cDeskJet,
+cdjcolor and cdjmono drivers are unaffected
+by setting this symbol, as their default settings are predefined to be 1, 3
+and 24 respectively.
+
+
+All of the drivers in gdevcdj.c accept a command line
+option to set the BitsPerPixel property. This gives
+considerable flexibility in choosing various tradeoffs among speed,
+quality, colour, etc. The valid numbers are:
+
+
+
1
+
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).
+
+
3
+
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.
+
+
8
+
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.
+
+
16
+
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.
+
+
24
+
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.
+
+
32
+
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.)
+
+
+
DeskJet properties
+
+
+
+
Name
+
+
Type
+
+
+
+
BlackCorrect
+
+
int
+
+
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).
+
Shingling
+
+
int
+
+
Interlaced, multi-pass printing: 0 = none, 1 = 50%, 2 = 25%, 2 is best and slowest.
+
Depletion
+
+
int
+
+
"Intelligent" dot-removal: 0 = none, 1 = 25%, 2 = 50%, 1 best for graphics? Use 0 for transparencies.
+
+
+
PaintJet XL300 / PaintJet XL properties
+
+
+
+
+
Name
+
+
Type
+
+
+
+
PrintQuality
+
+
int
+
+
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
+
RenderType
+
+
int
+
+
+
0
driver does dithering
+
1
snap to primaries
+
2
snap black to white, others to black
+
3
ordered dither
+
4
error diffusion
+
5
monochrome ordered dither
+
6
monochrome error diffusion
+
7
cluster ordered dither
+
8
monochrome cluster ordered dither
+
9
user-defined dither (not supported)
+
10
monochrome user-defined dither ns.
+
+
+
+
+The PaintJet (non-XL) has no additional properties.
+
+
+
+
Gamma correction
+
+
+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
+
+
+gs ... gamma.ps colorpic.ps -c quit
+
+
+
+where gamma.ps is
+
+
+
%!
+/.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
+
+
+
+This does the gamma correction after whatever correction
+the device might be doing already. To do the correction
+before the current correction,
+
+
+
%!
+/.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
+
+
+
+This example sets the gamma for R, G, and B to 3, which seems to work
+reasonably well in practice.
+
+
HP's resolution-enhanced mode for Inkjet printers
+
+
+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.
+
+
+These printers do not offer true 600×300dpi resolution. Those that
+print in colour are strictly 300×300dpi in colour mode, while in mono
+mode there is a pseudo 600×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.
+
+
+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.
+
+
+To summarise, you may lose a smidgin of (potential) text clarity using the
+550c drivers (cdj550, cdjcolor,
+cdjmono etc.), but other than that, they are the ones for
+the job.
+
+
General tips
+
+
+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!).
+
+
+The Unix procedure unix-lpr.sh
+provides one example of setting up a multi-option colour PostScript
+lpr queue on Unix systems, and includes the ability to
+choose a range of different colour options and printer accounting and error
+logging.
+
+
+Caveat emptor! 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.
+
+
+
+
Canon BJC-8200 printer
+
+
+This section was contributed by the author of the uniprint
+configuration files for the Canon BJC-8200, Stephan C. Buchert <scb@stelab.nagoya-u.ac.jp>.
+These files also handle the Japanese Canon F850 printer.
+
+
+Warning: Usage of this program is neither supported nor endorsed by
+the Canon corporation. Please see the Ghostscript license regarding warranty.
+
+
Introduction
+
+
+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
+http://consumer.usa.canon.com/bjc/bjc8200/
+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.
+
+
+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:
+
+
+
+
microfine droplet technology;
+
+
support for printing on a new type of paper, Photo Paper Pro;
+
+
a printhead capable of printing up to 1200 DpI;
+
+
individual ink tanks for 6 colors;
+
+
an internal status monitor reporting low ink back to a driver;
+
+
an optional color scanner cartridge for up to 600 DpI resolution.
+
+
+
+
+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.
+
+
+Ghostscript comes with a relatively highly configurable driver, called
+uniprint, 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.
+
+
The uniprint control files for the BJC-8200
+
+
+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:
+
+
+
bj8pp12f.upp
+
bj8hg12f.upp
+
bj8gc12f.upp
+
bj8oh06n.upp
+
bj8ts06n.upp
+
bj8pa06n.upp
+
+
+
+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.
+
+
+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:
+
+
+
pp "Photo Paper Pro"
+
hg "High Gloss Photo Film"
+
gc "Glossy Photo Cards"
+
oh "OHP transparencies"
+
ts "T-shirt transfer"
+
pa "Plain Paper"
+
+
+
+The numbers at positions 6 and 7 indicate the resolution
+
+
+
12 1200x1200 DpIxDpI
+
06 600x600 DpIxDpI
+
+
+
+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).
+
+
+
f highest quality
+
n normal quality
+
+
+
+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.
+
+
Further Optimization for the Canon BJC-8200
+
+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.
+
+
+Here is information useful for changing or adding uniprint control files for
+the BJC-8200:
+
+
+In "-dupBeginPageCommand=..." use the line
+
+
+ 1b28 64 0400 04b0 04b0
+
+
+
+for 1200x1200 resolution, and
+
+
+ 1b28 64 0400 0258 0258
+
+
+
+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.
+
+
+Crucial are the numbers in the lines like
+
+
+ 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
+
+
+
Outlook
+
+
+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.
+
+
+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.
+
+
+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.
+
+
Usage on RedHat Linux
+
+
+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 bj8.rpd into the RedHat printer database
+/usr/lib/rhs/rhs-printfilters/printerdb. Insert it most
+appropriately after the section
+
+
+StartEntry: U_CanonBJC610
+.
+.
+.
+EndEntry
+
+< --- insert here "bj8.rpd" from this distribution:
+< --- StartEntry: U_CanonBJC8200
+ .
+ .
+ .
+
+(*) 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.
+
+
+Stephan C. Buchert
+
+
+
+
Other Canon BubbleJet (BJC) printers
+
+
+This section was contributed by the author of the drivers, Yves Arrouye
+(<yves.arrouye@usa.net>, 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.
+
+
History
+
+
+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.
+
+
+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.
+
+
Configuring and building the BJC drivers
+
+
Modify values in
+gdevbjc.h
+
+
+Configure the drivers by modifying the default values in the file
+gdevbjc.h 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.
+
+
CMYK-to-RGB color conversion
+
+
+By default, the drivers use the same algorithm as Ghostscript to convert
+CMYK colors to RGB. If you prefer to use Adobe formulas, define
+USE_ADOBE_CMYK_RGB when compiling. (See the top of the
+file gdevcdj.c to see the difference between the two.)
+
+
Vertical centering of the
+printable area
+
+
+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 BJC_DEFAULT_CENTEREDAREA when compiling, then the
+top and bottom margins will be the same, resulting in a (smaller)
+vertically centered imageable area also.
+
+
Page margins
+
+
+If you define USE_RECOMMENDED_MARGINS, then the top and
+bottom margins will be the same (that is,
+BJC_DEFAULT_CENTEREDAREA 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 USE_TIGHT_MARGINS, 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, USE_FIXED_MARGINS 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
+USE_TIGHT_MARGINS, of course).
+
+
+A quick way to be sure the margins you selected is to print a file whose
+contents are:
+
+
+%!
+clippath stroke showpage
+
+
+
+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.
+
+
Makefile and compilation
+
+
+Make sure the bjc600 or bjc800 devices are
+in DEVICE_DEVS in
+the makefile; 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
+
+
+There are two drivers here. The "bjc600" one supports the BJC-600 and
+BJC-4xxx (maybe the BJC-70 as well) and the "bjc800" one supports the
+BJC-800 series. Remarks here that apply to both drivers use the name
+"bjc".
+
+
Supported Options and Defaults
+
+
+Note: "options", "properties", and "parameters" designate the same thing:
+device parameters that you can change.
+
+
+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 -d and
+-s switches or other predetermined switches if they have an
+effect on the driver) or using the PostScript Level 2
+setpagedevice operator if Ghostscript has been compiled
+with the level2 or level3 device (which it should
+;-)). There are no special-purpose operators such as
+one was able to find in Level 1 printers.
+
+
+The bjc uses 24 bits per pixel by default (unless you change the value of
+BJC_BITSPERPIXEL), 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).
+
+
+
Descriptions of printing modes by bpp and Colors
+
+
bpp
+
+
Colors
+
+
Mode
+
+
32
+
+
4
+
+
CMYK colour printing, Floyd-Steinberg dithering
+
24
+
+
4
+
+
The same. (But each primary colour is stored on 6 bits instead of 8.)
+
24
+
+
3
+
+
RGB colour printing, Floyd-Steinberg dithering. This mode does
+ not use the black cartridge (that's why it
+ exists, for when you don't want to use it ;-)).
+ 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.)
+
16
+
+
4
+
+
CMYK colour printing, halftoned by Ghostscript. F-S dithering
+ is still visible here (but the halftone patterns are visible
+ too!).
+
8
+
+
4
+
+
The same. (But each primary colour is stored in 2 bits instead of 4.)
+
8
+
+
3
+
+
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 and the halftoning is broken using the
+ 8/4 mode (some versions of Ghostscript have this problem).
+
8
+
+
1
+
+
Gray-level printing, Floyd-Steinberg dithering
+
1
+
+
1
+
+
Gray-level printing halftoned by Ghostscript
+
+
+
+These modes are selected using the BitsPerPixeland
+Colors integer options (either from the command line or in
+a PostScript program using setpagedevice). See below.
+
+
+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
+
+
+gs -sDEVICE=bjc600 gamma.ps myfile.ps
+
+
+
+where gamma.ps 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:
+
+
+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 ×2^N. If the driver
+is compiled with -DBJC_STRICT 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.
+
+
+Here are the various options supported by the bjc drivers, along with
+their types, supported values, effects, and usage:
+
+
+
BitsPerPixel (int)
+
Choose the depth of the page. Valid values are 1, 8, 16, 24 (the
+default) and 32.
+
+
+Note that when this is set for the first time, the Colors
+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 "*".
+
+
+
Valid Colors values for allowed BitsPerPixel values
+
+
+
bpp
+
+
Colors
+
+
+
+
Color model
+
+
Dithering
+
+
32
+
+
4
+
+
+
+
CMYK
+
+
F-S
+
24
+
+
4
+
+
*
+
+
CMYK
+
+
F-S
+
+
+
3
+
+
+
+
RGB
+
+
F-S
+
16
+
+
4
+
+
+
+
CMYK
+
+
GS, F-S
+
8
+
+
4
+
+
*
+
+
CMYK
+
+
GS
+
+
+
3
+
+
+
+
RGB
+
+
GS
+
+
+
1
+
+
+
+
K (CMYK)
+
+
F-S
+
1
+
+
1
+
+
*
+
+
K (CMYK)
+
+
GS
+
+
+
Also note that automagical change of one parameter depending on the
+other one does not work in a setpagedevice call. This
+means that if you want to change BitsPerPixel to a value
+whose valid Colors values do not include the actual
+Colors value, you must change Colors too.
+
+
+
+
Colors (int)
+
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 ProcessColorModel below
+for what to use to change the number of colors with PostScript code.
+
+
+Note that setting this property does limit the choices of
+BitsPerPixel. As for the previous property, its first
+setting may induce a setting of the "other value"
+(BitsPerPixel here). The table here indicates valid
+combinations with "V", default values with asterisk "*".
+
+
+
Valid BitsPerPixel values for allowed Colors values
+
+
+
+
+
BitsPerPixel OK values
+
Colors
+
+
Type
+
+
32
+
+
24
+
+
16
+
+
8
+
+
1
+
+
4
+
+
CMYK
+
+
V
+
+
*
+
+
V
+
+
V
+
+
+
3
+
+
RGB
+
+
+
+
*
+
+
+
+
V
+
+
+
1
+
+
K
+
+
+
+
+
+
+
+
V
+
+
*
+
+
+
Also note that automagical change of one parameter depending on the
+other one does not work in a setpagedevice call. This
+means that if you want to change Colors to a value whose
+valid BitsPerPixel values don't include the actual
+BitsPerPixel value, you must change
+BitsPerPixel too.
+
+
+
+
ProcessColorModel (symbol)
+
A symbol taken from /DeviceGray,
+/DeviceRGB or /DeviceCMYK which can be used
+to select 1, 3 or 4 colors respectively. Note that this parameter takes
+precedence over Colors, and that both affect the same
+variable of the driver. (See Colors above for values
+combined with BitsPerPixel.)
+
+
+
+
HWResolution (floats array)
+
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 -r
+switch.
+
+
+
+
ManualFeed (bool)
+
Indicate that the sheets won't be fed automatically by the printer,
+false by default. (Not meaningful on the BJC-600, I fear.)
+
+
+
+
MediaType (string)
+
The media to print on, chosen from among "PlainPaper",
+"CoatedPaper", "TransparencyFilm",
+"Envelope", "Card" and
+"Other". Default is "PlainPaper". For
+"Envelope", "Card" or
+"Other" the driver puts the printer into thick mode
+automatically regardless of the actual media weight.
+
+
+
+
MediaWeight (int or null)
+
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
+BJC???_MEDIAWEIGHT_THICKLIMIT) then the
+printer will be set to use thick paper.
+
+
+
+
PrintQuality (string)
+
The quality of printing.
+
+
+
Value
+
+
bjc600
+
+
bjc800
+
+
+
+
Low
+
+
+
+
X
+
+
Has the effect of making only two printing passes instead of four, so should be twice the speed; known as "CN" (Color Normal) mode
+
Draft
+
+
X
+
+
X
+
+
Unlights the "HQ" light on a BJC-600
+
Normal
+
+
X
+
+
X
+
+
Default for both drivers; lights the "HQ" light on a BJC-600
+
High
+
+
X
+
+
X
+
+
Means 200% black and 100% CMY; lights the "Bk+" light on a BJC-600
+
+
+
+
+
DitheringType (string)
+
Dithering algorithm from between "Floyd-Steinberg" and
+"None". "None" is the default for 1/1 print
+mode, "Floyd-Steinberg" 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.
+
+
+
+
PrintColors (int)
+
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 PrintColors;
+otherwise, the image is printed by superimposing each requested color.
+
+
+
+
MonochromePrint (bool)
+
For bjc600 only, false 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 PrintColors to 0 will give the same
+results.
+
+
+
+Note that the MediaType and ThickMedia
+options will be replaced by the use of the device
+InputAttributes and OutputAttributes 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 showpage.
+
+
Device information
+
+
+Here is other information published by the driver that you will find
+in the deviceinfo dictionary.
+
+
+
OutputFaceUp (bool)
+
This has the boolean value true, indicating that the
+sheets are stacked face up.
+
+
+
+
Version (float)
+
In the form M.mmpp, where M is the major
+version, mm the bjc driver's minor version, and pp the specific
+driver minor version (that is, M.mm will always be
+the same for the bjc600 and bjc800
+drivers).
+
+
+
+
VersionString (string)
+
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).
+
+
+
Hardware margins
+
+
+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.
+
+
+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.
+
+
PostScript printer description (PPD) files
+
+
+The files CBJC600.PPD and CBJC800.PPD (whose
+long names are, respectively, Canon_BubbleJetColor_600.ppd
+and Canon_BubbleJetColor_800.ppd) are PPD files to drive the
+features of the bjc600 and bjc800 drivers.
+They can be used, for example, on NextStep systems (presumably on OpenStep
+systems too) and on Unix systems with Adobe's TranScript and
+pslpr (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.
+
+
Customizing the PPD files
+
+
+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 "Letter" with "A4" in
+these (noncontiguous) lines:
+
+
+ [...]
+*DefaultPageSize: Letter
+ [...]
+*DefaultRegion: Letter
+ [...]
+*DefaultImageableArea: Letter
+ [...]
+
+
+
+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
+
+
+*DefaultTransfer: Normalized
+
+
+
+with the alternate line
+
+
+*DefaultTransfer: Null
+
+
+
+The "thick media" option is implemented by choosing a value of 120 or 80
+(for thick and thin media respectively) for the MediaWeight
+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.
+
+
+All customization should be done using the "*Include:"
+feature of PPD files so that your local changes will be retained if you
+update the PPD files.
+
+
How to report problems
+
+
+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:
+
+
+I am particularly grateful to Yoshio Kuniyoshi <yoshio@nak.math.keio.ac.jp>
+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.
+
+
+Thanks also to the people who volunteered to beta-test the v2.x BJC
+drivers: David Gaudine
+<david@donald.concordia.ca>,
+Robert M. Kenney <rmk@unh.edu>,
+James McPherson
+<someone@erols.com>
+and Ian Thurlbeck
+<ian@stams.strath.ac.uk>
+(listed alphabetically) were particularly helpful by discovering bugs and
+helping find out exact paper margins on printers I don't have access to.
+
+
+And many thanks to Klaus-Gunther Hess
+<ghess@elmos.de> 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.
+
+
+
+
Epson Stylus color printer (see also uniprint)
+
+
+This section was contributed by Gunther Hess
+<ghess@elmos.de>, who also wrote
+uniprint, a later set of drivers. You should probably see
+the section on uniprint for whether
+it might be better for your uses than this driver.
+
+
Usage
+
+
+
+This driver is selected with "-sDEVICE=stcolor", 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:
+
+
+where {Xdpi} is one of 180, 360, or 720 and {Ydpi} is one of
+90, 180, 360, or 720. The result should be significantly better. You may
+use stcolor.ps with other devices too, but I do not
+recommend this, since it does nothing then. stcolor.ps
+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
+
+
+(stcolor.ps) findlibfile { pop run } if pop
+
+
+
+in files you want to use the improved algorithms. You may want to adapt
+stcolor.ps 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 the relationship of
+Ghostscript and PostScript and in stcolor.ps.
+
+
Options
+
+
+Now to explain the options (as written on my UNIX system). The order is
+somehow related to their use during the printing process:
+
+
+
-dUnidirectional
+
Force unidirectional printing, recommended for transparencies
+
+
+
+
-dMicroweave
+
Enable the printer's "microweave" feature; see
+"What is weaving?" below.
+
+
+
+
-dnoWeave
+
Disable any Weaving (overrides -dMicroweave)
+
+
+
+
-dSoftweave
+
Enable the driver's internal weaving. Note that Softweave works only with the original Stylus Color and the PRO-Series.
+
+
+
+
-sDithering={name}
+
Select another dithering algorithm (name) from among
+
+
gscmyk
+
+
fast color output, CMYK process color model (default)
+
gsmono
+
+
fast monochrome output
+
gsrgb
+
+
fast color output, RGB process color model
+
fsmono
+
+
Floyd-Steinberg, monochrome
+
fsrgb
+
+
Floyd-Steinberg, RGB process color model (almost identical to the cdj550/bjc algorithm)
+
fsx4
+
+
Floyd-Steinberg, CMYK process color model (shares code with fsmono and fsrgb, but is algorithmically really bad)
+
fscmyk
+
+
Floyd-Steinberg, CMYK process color model and proper modifications for CMYK
+
hscmyk
+
+
modified Floyd-Steinberg with CMYK model ("hs" stands for "hess" not for "high speed", but the major difference from fscmyk is speed)
+
fs2
+
+
algorithm by Steven Singer (RGB) should be identical to escp2cfs2.
+
+
+
+
+
-dBitsPerPixel={1...32}
+
number of bits used for pixel storage; the larger the value, the better
+the quality -- at least in theory. In fsrgb one can gain
+some speed by restricting to 24 bits rather than the default 30.
+
+
+
+
-dFlag0
+
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 hscmyk and all fs modes,
+except for fs2, which always uses a constant initialization.)
+
+
+
+
-dFlag1 ... -dFlag4
+
Available for future algorithms.
+
+
+
+
-dColorAdjustMatrix='{three, nine, or sixteen
+floating-point values}'
+
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.
+
+
+
+
-dCtransfer='{float float ...}' or
+
-dMtransfer=..., -dY..., -dK... or
+
-dRtransfer='{float float ...}' or
+
-dG..., -dB... or
+
-dKtransfer='{float float ...}'
+
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 setcolortransfer 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 "{0.0 1.0}", which is a
+linear characteristic. Most of the code in stcolor.ps are
+better transfer arrays.
+
+
+
+
-dKcoding='{float...}'
+
-dC..., -dM... etc.
+
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.)
+
+
+
+
-sModel=st800
+
Causes output to be suitable for the monochrome Stylus 800 (no weaving,
+no color).
+
+
+
+
-sOutputCode={name}
+
Can be either "plain", "runlength" or
+"deltarow" and changes the ESC/P2 coding technique
+used by the driver. The default is to use runlength encoding.
+"plain" selects uncompressed encoding and generates
+enormous amounts of data.
+
+
+
+
-descp_Band=1/8/15/24
+
Number of nozzles of scanlines used in printing, Useful only with
+-dnoWeave. Larger Values yield smaller code, but this
+doesn't increase the printing speed.
+
+
+
+
-descp_Width=N
+
Number of pixels Printed in each scan Line. (Useful only when tuning
+margins; see below)
+
+
+
+
-descp_Height=pixels
+
Length of the entire page in pixels. (Parameter of
+"ESC(C" in default initialization.)
+
+
+
+
-descp_Top=scan lines
+
Top margin in scan lines. (First parameter of "ESC(c"
+in default initialization.)
+
+
+
+
-descp_Bottom=scan lines
+
Bottom margin in scan lines. (Second parameter of
+"ESC(c" in default initialization.)
+
+
+
+
-sescp_Init="string"
+
Override for the initialization sequence. (Must set graphics mode 1
+and units.)
+
+
+
+
-sescp_Release="string"
+
Overrides the release sequence, "ESC @ FF" by
+default.
+
+
+
+ESC/P2 allows any resolutions to be valid in theory, but only
+-r360x360 (the default) and -r720x720 (not
+on STC-IIs ? and st800) are known to work with most printers.
+
+
+
+
+
Valid option combinations Stylus I & Pro-Series only
+
+
Resolution
+
+
escp_Band
+
+
Weave usable
+
+
escp_Band & number of passes
+
+
180x90
+
+
15
+
+
noWeave
+
+
+
180x180
+
+
1 , 8, 24
+
+
noWeave, Microweave
+
+
15/2 SoftWeave
+
180x360
+
+
+
+
+
+
15/4 SoftWeave
+
180x720
+
+
+
+
+
+
15/8 SoftWeave
+
360x90
+
+
15
+
+
noWeave
+
+
+
360x180
+
+
1, 8, 24
+
+
noWeave, Microweave
+
+
15/2 SoftWeave
+
360x360
+
+
1, 8, 24
+
+
noWeave, Microweave
+
+
15/4 SoftWeave
+
360x720
+
+
+
+
+
+
15/8 SoftWeave
+
720x90
+
+
15
+
+
noWeave
+
+
+
720x180
+
+
+
+
+
+
15/2 SoftWeave
+
720x360
+
+
+
+
+
+
15/4 SoftWeave
+
720x720
+
+
1
+
+
noWeave, Microweave
+
+
15/8 SoftWeave
+
+
+
+Beware: there are only few validity checks for parameters. A good
+example is escp_Band: if you set this, the driver uses your
+value even if the value is not supported by the printer. You asked for
+it and you got it!
+
+
+
Application note and FAQ
+
+
+Quite a bunch of parameters. Hopefully you never need any of them, besides
+feeding stcolor.ps to Ghostscript in front of your input.
+
+
+After answering some questions over fifty times I prepared a FAQ. Here is
+version 1.3 of the FAQ, as of stcolor version 1.20 (for
+Ghostscript 3.50).
+
+
Support for A3 paper
+
+
+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 "-sPAPERSIZE=a3" or include the
+procedure call "a3" in the PostScript prolog section. To
+optimize the printable area or set the proper margins, see the next
+paragraph.
+
+
Margins, PageSize
+
+
+I refuse to add code to stcolor 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 stcolor.ps to do that, however. After the line
+
+
+mark % prepare stack for "putdeviceprops"
+
+
+
+insert these lines, which define page size and margins in points:
+
+
+
/.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
+]
+
+
+Feel free to change the values of .HWMargins and
+PageSize to match your needs; the values given are the
+defaults when the driver is compiled with "-DA4". 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.
+
+
+Note that if you are using an ISO paper size with a version of
+stcolor after 1.20 and compiled without
+"-DA4", then the default margin is too large, and you need
+to add the proper ".HWMargins" to the command line or to
+stcolor.ps.
+
+
Stylus Color II / IIs and 1500
+
+
+First the good news: the driver can print on the Stylus Color II.
+Now the bad news:
+
+
According to Epson support the driver "abuses" the color
+capabilities. (See "Future Plans" for details.)
+
You need some parameters on the command line (or in
+stcolor.ps).
+
I doubted that it would be usable with the Stylus Color IIs, but
+it is usable and suffers from mixing problems!
+
+
+
+
+To make things work, you MUST disable the driver's internal
+weaving (Softweave), in one of these two ways:
+
+
+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.
+
+
Recommendations
+
+
+The next section is a contribution from Jason Patterson <jason@reflections.com.au>
+who evaluated a previous version (1.17). Ghostscript was invoked as follows:
+
+
+where "..." is the name of the desired algorithm.
+stcolor.ps was omitted for the gs-algorithms
+(gsmono, gsrgb and gscmyk),
+for which it is useless and would not allow the selection of
+"gscmyk".
+
+
Color dithering experiments with
+gdevstc 1.21
+
+
+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. Sanity note: 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.
+
+
+
Quality of output by method
+
+
+
+
+
+
gsmono
+
+
Pretty much what you'd expect from a mono ordered pattern.
+Looks like what a lot of mono laser printers produce.
+
fsmono
+
+
Excellent for monochrome.
+
gscmyk
+
+
Not very good, but expected from an ordered pattern.
+
gsrgb
+
+
A little better than gscmyk. More consistent
+looking.
+
fs2
+
+
Good, but not quite as good as fsrgb. Gets the
+brightness wrong: too light at 720dpi, too dark at 360dpi.
+
fsrgb
+
+
Very good, but a little too dark and has a slight blue tint.
+
hscmyk
+
+
Excellent. Slightly better than fsrgb and
+fs2. Better than fscmyk on
+some images, almost the same on most.
+
fscmyk
+
+
Best. Very, very slightly better than hscmyk.
+On some images nearly as good as the EPSON demos done with
+the MS Windows driver.
+
+
+
+
Overall visual quality (1-10), best to worst
+
Monochrome
+
+
fsmono
+
+
******************
+
+
gsmono
+
+
**********
+
+
+
+
0 1 2 3 4 5 6 7 8 9 10
+
+
Colour
+
+
fscmyk
+
+
*******************
+
+
hscmyk
+
+
*******************
+
+
fsrgb
+
+
******************
+
+
fs2
+
+
*****************
+
+
gsrgb
+
+
**********
+
+
gscmyk
+
+
*********
+
+
+
+
0 1 2 3 4 5 6 7 8 9 10
+
+
+
Color transformation
+
+
+In the initial version of the driver distributed with Ghostscript 3.33, the
+parameter "SpotSize" 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
+stcolor 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.
+
+
+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:
+
+
+
ColorAdjustMatrix
+
Coding
+
+
Transfer
+
+
|
+
Ghostscript color
+
|
+
=>
+
|
+
Ghostscript raster
+
|
+
=>
+
|
+
Dithering data
+
|
+
|
+
+
|
+
+
|
+
1/2/4/8/16/32-bit
+
|
+
+
|
+
+
|
+
|
+
1/3/4 16-bit values
+
|
+
+
|
+
1/3/4 values
+
|
+
+
|
+
(arbitrary type)
+
|
+
+
+
+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
+ColorAdjustMatrix works.
+
+
+The first transformation step, called "coding", is controlled by the
+?coding 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
+?transfer 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.
+
+
ColorAdjustMatrix
+
+
+The driver supports different values for ProcessColorModel,
+which raises the need for different color adjustments. Here
+"CAM" stands for "ColorAdjustMatrix".
+
+
+
DeviceGray (three floats)
+
if ((r == g) && (g == b))
+ K' = 1.0 - R;
+else
+ K' = 1.0 - CAM[0] * R + CAM[1] * G + CAM[2] * B;
+
+
+According to the documentation on drivers, the
+latter (the "else" clause) should never happen.
+
+Again we have a special black treatment. "max(C,K)" 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 ColorAdjustMatrix
+quite tedious, and so during mapping, black separation is done for
+(C,M,Y,0) requests; and if there is a ColorAdjustMatrix, undercolor
+removal is used too. In other words the default matrix is:
+
+
+
1
0
0
1
+
0
1
0
1
+
0
0
1
1
+
0
0
0
1
+
+
+
+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.
+
+
+
+If no ColorAdjustMatrix is set, the matrix computations are
+skipped. Thus the transformation reduces to range inversion in monochrome
+mode and black separation in CMYK mode.
+
+
RGB / CMYK coding and transfer, and BitsPerPixel
+
+
+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 (BitsPerPixel) and the ink
+density. The "truncation" may become a nonlinear function if any of the
+?coding arrays is set. Assume the following Ghostscript
+invocation:
+
+
+We may have either or both of ?coding and
+?transfer, 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 × 4 bits = 16 BitsPerPixel), 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
+fscmyk algorithm. Sorry for the bunch of numbers
+following, but you may try this example in conjunction with
+stcinfo.ps, which should give you a graphical printout of
+the following numbers when you issue a showpage command.
+
+
+
+
+
Cyan
+
+
Magenta
+
CI/15
+
+
gs_color_values
+
+
CI
+
+
Ink
+
+
gs_color_values
+
+
CI
+
+
Ink
+
+
0.000
+
+
0.000 - 0.062
+
+
0
+
+
0.000
+
+
-0.123 - 0.123
+
+
0
+
+
0.000
+
0.067
+
+
0.063 - 0.125
+
+
1
+
+
0.067
+
+
0.123 - 0.299
+
+
1
+
+
0.247
+
0.133
+
+
0.125 - 0.187
+
+
2
+
+
0.133
+
+
0.299 - 0.365
+
+
2
+
+
0.351
+
0.200
+
+
0.188 - 0.250
+
+
3
+
+
0.200
+
+
0.365 - 0.392
+
+
3
+
+
0.379
+
0.267
+
+
0.250 - 0.312
+
+
4
+
+
0.267
+
+
0.392 - 0.420
+
+
4
+
+
0.406
+
0.333
+
+
0.313 - 0.375
+
+
5
+
+
0.333
+
+
0.420 - 0.447
+
+
5
+
+
0.433
+
0.400
+
+
0.375 - 0.437
+
+
6
+
+
0.400
+
+
0.447 - 0.475
+
+
6
+
+
0.461
+
0.467
+
+
0.438 - 0.500
+
+
7
+
+
0.467
+
+
0.475 - 0.502
+
+
7
+
+
0.488
+
0.533
+
+
0.500 - 0.562
+
+
8
+
+
0.533
+
+
0.502 - 0.529
+
+
8
+
+
0.516
+
0.600
+
+
0.563 - 0.625
+
+
9
+
+
0.600
+
+
0.529 - 0.557
+
+
9
+
+
0.543
+
0.667
+
+
0.625 - 0.687
+
+
10
+
+
0.667
+
+
0.557 - 0.584
+
+
10
+
+
0.571
+
0.733
+
+
0.688 - 0.750
+
+
11
+
+
0.733
+
+
0.584 - 0.612
+
+
11
+
+
0.598
+
0.800
+
+
0.750 - 0.812
+
+
12
+
+
0.800
+
+
0.612 - 0.639
+
+
12
+
+
0.626
+
0.867
+
+
0.813 - 0.875
+
+
13
+
+
0.867
+
+
0.639 - 0.715
+
+
13
+
+
0.653
+
0.933
+
+
0.875 - 0.937
+
+
14
+
+
0.933
+
+
0.715 - 0.889
+
+
14
+
+
0.778
+
1.000
+
+
0.938 - 1.000
+
+
15
+
+
1.000
+
+
0.889 - 1.111
+
+
15
+
+
1.000
+
+
+
+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.
+
+
+Now let us take a look at the case with transfer arrays:
+
+
+
+
+
Yellow
+
+
Black
+
CI/15
+
+
gs_color_values
+
+
CI
+
+
Ink
+
+
gs_color_values
+
+
CI
+
+
Ink
+
+
0.000
+
+
0.000 - 0.062
+
+
0
+
+
0.000
+
+
-0.123 - 0.123
+
+
0
+
+
0.000
+
0.067
+
+
0.063 - 0.125
+
+
1
+
+
0.018
+
+
0.123 - 0.299
+
+
1
+
+
0.067
+
0.133
+
+
0.125 - 0.187
+
+
2
+
+
0.036
+
+
0.299 - 0.365
+
+
2
+
+
0.133
+
0.200
+
+
0.188 - 0.250
+
+
3
+
+
0.054
+
+
0.365 - 0.392
+
+
3
+
+
0.200
+
0.267
+
+
0.250 - 0.312
+
+
4
+
+
0.072
+
+
0.392 - 0.420
+
+
4
+
+
0.267
+
0.333
+
+
0.313 - 0.375
+
+
5
+
+
0.090
+
+
0.420 - 0.447
+
+
5
+
+
0.333
+
0.400
+
+
0.375 - 0.437
+
+
6
+
+
0.252
+
+
0.447 - 0.475
+
+
6
+
+
0.400
+
0.467
+
+
0.438 - 0.500
+
+
7
+
+
0.414
+
+
0.475 - 0.502
+
+
7
+
+
0.467
+
0.533
+
+
0.500 - 0.562
+
+
8
+
+
0.576
+
+
0.502 - 0.529
+
+
8
+
+
0.533
+
0.600
+
+
0.563 - 0.625
+
+
9
+
+
0.738
+
+
0.529 - 0.557
+
+
9
+
+
0.600
+
0.667
+
+
0.625 - 0.687
+
+
10
+
+
0.900
+
+
0.557 - 0.584
+
+
10
+
+
0.667
+
0.733
+
+
0.688 - 0.750
+
+
11
+
+
0.920
+
+
0.584 - 0.612
+
+
11
+
+
0.733
+
0.800
+
+
0.750 - 0.812
+
+
12
+
+
0.940
+
+
0.612 - 0.639
+
+
12
+
+
0.800
+
0.867
+
+
0.813 - 0.875
+
+
13
+
+
0.960
+
+
0.639 - 0.715
+
+
13
+
+
0.867
+
0.933
+
+
0.875 - 0.937
+
+
14
+
+
0.980
+
+
0.715 - 0.889
+
+
14
+
+
0.933
+
1.000
+
+
0.938 - 1.000
+
+
15
+
+
1.000
+
+
0.889 - 1.111
+
+
15
+
+
1.000
+
+
+
+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.
+
+
+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.
+
+
+Not a bad idea, I think. Consider the fs2 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.
+
+
+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
+stcolor.ps 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 fs2 case mentioned above, values from 0 to
+127 will never be delivered to the algorithm, while values 128-255 are
+delivered for adjacent intervals.
+
+
+To clarify the intended use of the three parameters (parameter groups), keep this in mind:
+
+
+
ColorAdjustMatrix 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.
+
+
?transfer 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
+ColorAdjustMatrix.
+
+
?coding arrays control the color value intervals mapped
+to the internal color indices.
+
+
+
What is weaving?
+
+
+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.
+
+
+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.
+
+
+Weaving is the method of how the fifteen jets are used to print adjacent
+horizontal rows separated here by 1/360 inch:
+
+
+
Print-head jets used with and without weaving
+
+
+
Weaving
+
+
noWeave
+
+
Pass
+
1
+
+
2
+
+
3
+
+
4
+
+
1
+
+
2
+
+
3
+
+
4
+
Row
+
0
+
+
jet 0
+
+
--
+
+
--
+
+
--
+
+
jet 0
+
+
--
+
+
--
+
+
--
+
1
+
+
--
+
+
jet 1
+
+
--
+
+
--
+
+
--
+
+
jet 0
+
+
--
+
+
--
+
2
+
+
--
+
+
--
+
+
jet 2
+
+
--
+
+
--
+
+
--
+
+
jet 0
+
+
--
+
3
+
+
--
+
+
--
+
+
--
+
+
jet 3
+
+
--
+
+
--
+
+
--
+
+
jet 0
+
4
+
+
jet 1
+
+
--
+
+
--
+
+
--
+
+
jet 1
+
+
--
+
+
--
+
+
--
+
5
+
+
--
+
+
jet 2
+
+
--
+
+
--
+
+
--
+
+
jet 1
+
+
--
+
+
--
+
6
+
+
--
+
+
--
+
+
jet 3
+
+
--
+
+
--
+
+
--
+
+
jet 1
+
+
--
+
...
+
+
+
+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.
+
+
Print mode parameters
+
+
+The parameters "Unidirectional",
+"Microweave", "noWeave",
+"OutputCode", "Model" and the given
+resolution control the data generated for the printer.
+
+
Unidirectional
+
+
+Simply toggles the unidirectional mode of the printer. Setting
+"Unidirectional" definitely slows printing speed, but may
+improve the quality. I use this for printing transparencies, where fast
+head movement could smear the ink.
+
+
Microweave,
+noWeave and OutputCode=deltarow
+
+
+The first are two booleans, which implies that four combinations are
+possible. Actually only three exist (if you don't count for
+deltarow): Softweave,
+Microweave, and noWeave. The first and
+second are functionally identical, the difference being whether the driver
+or the printer does the job.
+
+
+In the default Softweave mode the driver sends the data
+properly arranged to the printer, while in Microweave 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. Softweave
+requires an odd value of "escp_Band"; the Stylus Color
+provides fifteen for that.
+
+
+"OutputCode" 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, "deltarow" is
+available as an option. "Softweave" cannot be used with
+this encoding, so if OutputCode=deltarow is set,
+Microweave 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 deltarow compared
+to Softweave.
+
+
Model
+
+
+Some ESC/P2 printers such as the Stylus 800 do not offer
+Microweave or the commands required to do
+Softweave. Setting Model just changes the
+defaults and omits some parts of the initialization sequence which are not
+compatible with the given printer model. Currently only
+"st800" is supported besides the default
+stcolor.
+
+
Bugs and pitfalls
+
+
+
The given ?coding and ?transfer arrays
+should be strictly monotonic.
+
+
It is impossible to change WHITE: that's your paper.
+Thus RGB transfer should end at 1.0 and CMYK transfer should start at 0.0.
+
+
Usually 8 bits per component yields fastest operation.
+
+
The ColorAdjustMatrix is not used in the reverse
+transformation used when Ghostscript does the dithering
+(gs* modes). Expect funny results.
+
+
If BitsPerPixel is less than 6, the entire coding and
+transfer process does not work. This is always true for the
+gs* modes and becomes true for the other modes if
+BitsPerPixel is forced to low values.
+
+
720×720dpi printing should never select the gs*
+modes and should always use stcolor.ps. (I prefer
+360×720.)
+
+
+
Tests
+
+
+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.
+
+
The various OutputCodes
+
+
+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:
+
+
+(Actually "-sPAPERSIZE=a4" is in my
+gs_init.ps since I'm a germ.)
+
+
"deltarow" is the new encoding principle
+("ESC . 3 10 10 1") with
+Microweave on. It is activated with
+"-sOutputCode=deltarow".
+
+
"Softweave" actually means that nothing else was used:
+it is the default, and implies that odd v=40/h=10/m=15 mode
+("ESC . 1 40 10 15").
+
+
"Microweave" means "-dMicroweave",
+equivalent to "ESC . 1 10 10 1",
+with full skip optimization and microweave activated.
+
+
+Finally I wanted to see the plain Kathy Ireland, and used
+"-sOutputCode=plain", which just replaces runlength
+encoding (RLE) by no encoding, thus using
+"ESC . 0 40 10 15". [So sorry
+;-) Kathy was still dressed in blue in front of the blue
+sea on a blue air cushion -- nice to see but hard to dither.]
+
+
+So here are the results.
+
+
+
File sizes and printing speeds with various weaving methods
+
+
+
+
golfer.ps
+
+
colorcir.ps
+
+
drawing.ps
+
+
brief.ps
+
+
deltarow
+
+
572751/48.180u
+
+
643374/41.690u
+
+
90142/46.180u/1:50
+
+
178563/49.350u/2:22
+
Softweave
+
+
559593/46.810u
+
+
669966/44.960u
+
+
296168/48.160u/1:30
+
+
269808/43.320u/1:55
+
Microweave
+
+
590999/56.060u
+
+
754276/42.890u
+
+
338885/47.060u/1:50
+
+
282314/44.690u/2:22
+
+
+
+
Kathy Ireland
+
+
+
+
kathy.ps
+
+
deltarow
+
+
3975334/111.940u/5:35
+
Softweave
+
+
3897112/101.940u/3:10
+
Microweave
+
+
4062829/100.990u/3:15
+
plain/soft
+
+
5072255/104.390u/3:05
+
+
+
+It may be that I've not chosen the optimal deltarow code,
+but even if it saves at lot of bytes, printing-speed is not increased.
+
+
+At least the printer prefers plain Kathy. In other words, sending 1
+Megabyte or 20% more data has no impact on printing speed.
+drawing.ps is an exception to this rule: plain prints
+slower than RLE.
+
+
+"Unclever" coding -- especially with deltarow -- can
+significantly slow down printing. But even if very significant advantages
+in the size of the code are achieved, "deltarow" is not
+competitive. colorcir.ps shows savings with
+deltarow, but printing is a mess.
+
+
+This driver was copied from gdevcdj.c (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
+gdevescp.c. The POSIX interrupt code (compilation option
+-DSTC_SIGNAL) is from Frederic Loyer. Several improvements
+are based on discussions with Brian Converse, Bill Davidson, Gero Guenther,
+Jason Patterson, ? Rueschstroer, and Steven Singer.
+
+
+While I wish to thank everyone mentioned above, they are by no means
+responsible for bugs in the stcolor driver -- just for the features.
+
+
+uniprint is a unified parametric driver by Gunther Hess
+<ghess@elmos.de> for several
+kinds of printers and devices, including
+
+
+
+
any Epson Stylus Color, Stylus, or Stylus Pro
+
HP PCL/RTL
+
Canon BubbleJet Color 610
+
NEC P2X
+
Sun raster file format
+
+
+
+This driver is intended to become 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:
+
+
+Ugly- -> Updated- -> Unified Printer Driver
+
+
+
+But you probably want to know something about the functionality.
+At the time of this writing uniprint drives:
+
+
+
NEC Pinwriter P2X (24-pin monochrome impact printer, ESC/P style)
+
Several Epson Stylus Color models (ESC/P2 style)
+
HP-DeskJet 550c (basic HP-RTL)
+
Canon BJC 610
+
+
+
+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:
+
+
Unified Printer Parameter files distributed with Ghostscript
+
Canon BJC 610 (color, rendered)
+
+
bjc610a0.upp
+
+
360×360dpi
+
+
plain paper, high speed
+
+
bjc610a1.upp
+
+
360×360dpi
+
+
plain paper
+
+
bjc610a2.upp
+
+
360×360dpi
+
+
coated paper
+
+
bjc610a3.upp
+
+
360×360dpi
+
+
transparency film
+
+
bjc610a4.upp
+
+
360×360dpi
+
+
back print film
+
+
bjc610a5.upp
+
+
360×360dpi
+
+
fabric sheet
+
+
bjc610a6.upp
+
+
360×360dpi
+
+
glossy paper
+
+
bjc610a7.upp
+
+
360×360dpi
+
+
high gloss film
+
+
bjc610a8.upp
+
+
360×360dpi
+
+
high resolution paper
+
+
+
bjc610b1.upp
+
+
720×720dpi
+
+
plain paper
+
+
bjc610b2.upp
+
+
720×720dpi
+
+
coated paper
+
+
bjc610b3.upp
+
+
720×720dpi
+
+
transparency film
+
+
bjc610b4.upp
+
+
720×720dpi
+
+
back print film
+
+
bjc610b6.upp
+
+
720×720dpi
+
+
glossy paper
+
+
bjc610b7.upp
+
+
720×720dpi
+
+
high-gloss paper
+
+
bjc610b8.upp
+
+
720×720dpi
+
+
high resolution paper
+
+
HP Ink-Printers
+
+
cdj550.upp
+
+
300×300dpi
+
+
32-bit CMYK
+
+
cdj690.upp
+
+
300×300dpi
+
+
Normal mode
+
+
cdj690ec.upp
+
+
300×300dpi
+
+
Economy mode
+
+
dnj750c.upp
+
+
300×300dpi
+
+
Color -- also good for 450C
+
+
dnj750m.upp
+
+
600×600dpi
+
+
Monochrome
+
+
NEC P2X
+
+
necp2x.upp
+
+
360×360dpi
+
+
8-bit (Floyd-Steinberg)
+
+
Any Epson Stylus Color
+
+
stcany.upp
+
+
360×360dpi
+
+
4-bit, PostScript halftoning
+
+
stcany_h.upp
+
+
720×720dpi
+
+
4-bit, PostScript halftoning
+
+
Original Epson Stylus and Stylus Pro Color
+
+
stc.upp
+
+
360×360dpi
+
+
32-bit CMYK, 15-pin
+
+
stc_l.upp
+
+
360×360dpi
+
+
4-bit, PostScript halftoning, weaved noWeave
+
+
stc_h.upp
+
+
720×720dpi
+
+
32-bit CMYK, 15-pin Weave
+
+
Epson Stylus Color II
+
+
stc2.upp
+
+
360×360dpi
+
+
32-bit CMYK, 20-pin, Epson Stylus Color II(s)
+
+
stc2_h.upp
+
+
720×720dpi
+
+
32-bit CMYK, 20-pin, Epson Stylus Color II
+
+
stc2s_h.upp
+
+
720×720dpi
+
+
32-bit CMYK, 20-pin, Epson Stylus Color IIs
+
+
Epson Stylus Color 200
+
+
stc200.upp
+
+
360×720dpi
+
+
Plain Paper
+
+
Epson Stylus Color 300
+
+
stc300.upp
+
+
360×360dpi
+
+
32-bit CMYK, plain paper
+
+
stc300bl.upp
+
+
180×180dpi
+
+
black only, plain paper
+
+
stc300bm.upp
+
+
360×360dpi
+
+
black only, plain paper
+
+
Epson Stylus Color 500 (good transfer curves for plain paper)
+
+
stc500p.upp
+
+
360×360dpi
+
+
32-bit CMYK, noWeave, plain paper
+
+
stc500ph.upp
+
+
720×720dpi
+
+
32-bit CMYK, noWeave, plain paper
+
+
Epson Stylus Color 600, 32/90-inch weaving
+
+
stc600pl.upp
+
+
360×360dpi
+
+
32-bit CMYK, 32-pin, plain paper
+
+
stc600p.upp
+
+
720×720dpi
+
+
32-bit CMYK, 32-pin, plain paper
+
+
stc600ih.upp
+
+
1440×720dpi
+
+
32-bit CMYK, 30-pin, inkjet paper
+
+
Epson Stylus Color 640
+
+
stc640p.upp
+
+
720×720dpi
+
+
plain paper?
+
+
+
+
+
st640p.upp
+
+
720×720dpi
+
+
CMYK, plain paper
+
+
st640pg.upp
+
+
720×720dpi
+
+
grayscale, plain paper
+
+
st640pl.upp
+
+
360×360dpi
+
+
CMYK, plain paper
+
+
st640plg.upp
+
+
360×360dpi
+
+
grayscale, plain paper
+
+
st640ih.upp
+
+
1440×720dpi
+
+
CMYK, inkjet paper
+
+
st640ihg.upp
+
+
1440×720dpi
+
+
grayscale, inkjet paper
+
+
+
+
+
+
+
+
Epson Stylus Color 800, 64/180-inch weaving
+
+
stc800pl.upp
+
+
360×360dpi
+
+
32-bit CMYK, 64-pin, plain paper
+
+
stc800p.upp
+
+
720×720dpi
+
+
32-bit CMYK, 64-pin, plain paper
+
+
stc800ih.upp
+
+
1440×720dpi
+
+
32-bit CMYK, 62-pin, inkjet paper
+
+
stc1520.upp
+
+
1440×720dpi
+
+
32-bit CMYK, 62-pin, inkjet paper
+
+
Sun raster file
+
+
ras1.upp
+
+
1-bit
+
+
monochrome (Ghostscript)
+
+
ras3.upp
+
+
3-bit
+
+
RGB (Ghostscript)
+
+
ras4.upp
+
+
4-bit
+
+
CMYK (Ghostscript)
+
+
ras8m.upp
+
+
8-bit
+
+
grayscale (Floyd-Steinberg)
+
+
ras24.upp
+
+
24-bit
+
+
RGB (Floyd-Steinberg)
+
+
ras32.upp
+
+
32-bit
+
+
CMYK (CMYK-Floyd-Steinberg)
+
+
+
+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 <losse@germanymail.com> for the
+newer st640 parameter sets.
+
+
+Please note the following:
+
+
+
Changing the resolution with Ghostscript's
+-r switch is
+usually not possible.
+
For Epson Stylus Color models not listed above, the two
+stc500 variants are likely to work in addition to
+stcany, but their gamma correction might be wrong.
+
+
+
The state of this driver
+
+
+The coding of uniprint 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 uniprint: cdj850 by Uli Wortmann
+(available at http://www.erdw.ethz.ch/~bonk/hp850/hp850.html),
+hpdj by Martin Lottermoser, and bjc610 by
+Helmut Riegler.
+
+
+Uli addresses features of the more recent DeskJet models that will not be
+available in uniprint soon. Martin taught me a lesson on
+HP-PCL3 headers that will be available in uniprint
+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
+hpdj integration will start after the update of my website.
+
+
Notes on uniprint's background
+
+
+uniprint is actually an update of stcolor,
+but much more versatile than its predecessor; stcolor, in
+its turn, started as a clone of the color DeskJet family of drivers
+(cdj*). Finally, cdj* 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
+uniprint:
+
+
+
+
Monochrome to advanced color (cdj*):
+
This adds color mapping and rendering functions to the driver.
+Error diffusion is especially important for the quality of printing.
+
+
+
+
HP color to Epson Color (stcolor)
+
The Epson Stylus Color offered two features simultaneously: it could
+produce 720×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.
+
+
+
+
Weaving techniques (stcolor)
+
Besides the internal color management, the Stylus Color did not provide
+enough buffer space to operate the printer fast at 720×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
+stcolor 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.
+
+
+
+
Generalized output format and weaving (uniprint)
+
The features mentioned above yield about 90% of
+stcolor'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 stcolor, but its final design
+was triggered by the (personal) necessity to drive a NEC P2X and a
+Designjet 750c.
+
+
+
+Thus uniprint 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.
+
+
+To summarize and to introduce the terms used in the description of the
+parameters, the features of uniprint that can be
+parameterized are:
+
+
+
color mapping,
+
color rendering (error diffusion or Floyd-Steinberg),
+
output format, including
+
weaving.
+
+
+
Godzilla's guide to the creation of Unified Printer Parameter (.upp) files
+
+
+Here is one of the distributed parameter files (stc_l.upp)
+with some added comments. Also see the section that describes
+all uniprint's parameters in
+brief.
+
+
+-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="< -- Goes to the printer
+ 1b40 1b40 -- ESC '@' ESC '@' -> dual reset
+ 1b2847 0100 01 -- ESC '(' 'G' 1 0 1 -> graphics
+ 1b2869 0100 00 -- ESC '(' 'i' 1 0 1 -> no HW weave
+ 1b2855 0100 0A -- ESC '(' 'U' 1 0 10 -> 360dpi
+ 1b5500 -- ESC 'U' 0 -> bidir print
+ 1b2843 0200 0000 -- ESC '(' 'C' 2 0 xx -> page length
+ 1b2863 0400 0000 0000 -- ESC '(' 'c' 4 0 xxxx -> margins
+>" -- 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)"
+
+
+
+That's short, and if one removes upWeaveYPasses and
+upOutputPins it becomes shorter, almost
+stcany.upp. 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:
+
+
+
upModel is a string serving as a comment (and nothing else).
+
+
upColorModel is one of major uniprint
+parameters: it selects the color mapping and in turn the PostScript color
+model. It supports the devices /DeviceGray, /DeviceRGBW, /DeviceRGB, /DeviceCMYK, and /DeviceCMYKgenerate.
+
+
upRendering selects the (color) rendering, supporting
+the values /ErrorDiffusion and /FSCMYK32.
+/ErrorDiffusion is similar to fsmono,
+fsrgb and fsx4 of stcolor,
+while /FSCMYK32 is (almost) identical to
+fscmyk and hscmyk, but is restricted to
+32-bit data and should be used in conjunction with
+/DeviceCMYKgenerate.
+
+
upOutputFormat selects the output method, supporting the values
+/SunRaster, /Epson, /EscP2, /EscP2XY, and/Pcl.
+
+
+
/SunRaster
+
+
creates Sun raster files and requires no other parameters
+
/Epson
+
+
is used for the elderly ESC/P format (used by many printers)
+
/EscP2
+
+
is used by more recent Epson printers (no X weaving supported)
+
/EscP2XY
+
+
supports X-Weaving, used with 1440dpi printers and in stc2s_h
+
/Pcl
+
+
HP PCL/RTL-style output formatter without weaving
+
upMargins="{ 9.0 39.96 9.0 9.0}"
+has function similar to the Ghostscript parameter
+.HWMargins: it sets the left, bottom, right, and top
+margins in points. uniprint provides this parameter to
+enable automatic left-right exchange if upYFlip is active.
+
+
upComponentBits 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 "upComponentShift"
+controls positioning the components within raster memory. Each of the
+numbers given corresponds to a component which depends on the selected
+"upColorModel":
+
+
+
+
+
/DeviceGray
+
+
/DeviceRGBW
+
+
/DeviceRGB
+
+
/DeviceCMYK
+
+
/DeviceCMYKgenerate
+
+
0
+
+
White
+
+
White
+
+
Red
+
+
Black
+
+
Black
+
1
+
+
--
+
+
Red
+
+
Green
+
+
Cyan
+
+
Cyan
+
2
+
+
--
+
+
Green
+
+
Blue
+
+
Magenta
+
+
Magenta
+
3
+
+
--
+
+
Blue
+
+
--
+
+
Yellow
+
+
Yellow
+
+
+
+This order may not be suitable for some printers, so another parameter
+"upOutputComponentOrder", also an array of integers,
+selects the output order using the numbers on the left.
+
+
+
+One group of very important parameters not used in the example above
+deserves to be mentioned here: the transfer arrays, named
+"up{color}Transfer", where
+{color} 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).
+
+
+Finally an important note on the transfer arrays: for monochrome devices
+the stored component is White, which is the way PostScript
+defines these devices, but most printers require Black.
+Thus one has to provide a falling "upWhiteTransfer" for
+such printers.
+
+
upWeaveYPasses is an integer that gives the number of
+print head passes required to achieve the requested Ydpi. This makes sense
+only if
+
+
upOutputPins 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.
+
+
+
+
+If no other weave parameters are given, uniprint computes
+several defaults which together do no weaving. The /Epson
+and /EscP2XY formats take care of
+"upWeaveXPasses" too.
+
+
+
+
upBeginPageCommand represents the data transferred to
+the printer whenever a new page begins. Before that,
+"upBeginJobCommand" is written to the device only once per
+output file. (Intended for the HP PJL sequences).
+
+
upAdjustBottomMarginCommand,
+upAdjustMediaSize,
+upAdjustPageLengthCommand,
+upAdjustPageWidthCommand,
+upAdjustResolutionCommand, and
+upAdjustTopMarginCommand
+
+
+Normally uniprint does not change the
+"upBeginPageCommand", 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).
+
+
upEndPageCommand is the fixed termination sequence for
+each page, and of course there is an "upEndJobCommand" too.
+
+
upAbortCommand is written if uniprint's
+interrupt detection is enabled and a signal is caught. It replaces
+"upEndPageCommand" and "upEndJobCommand",
+thus allowing the indication of an aborted job. (Ghostscript gets an error
+return from uniprint in this case, and abandons further
+processing.)
+
+
+
+
+For the ESC/P(2) formats all commands represent binary data, while for
+the PCL/RTL formatter some of them are formats for fprintf. These strings
+must explicitly have a trailing "\0'.
+
+
+I should write more, but the only recommendation is to
+take a look at the various parameter files. Here are a few more hints.
+
+
+
If the Driver rejects a configuration, nothing happens until
+showpage; then an error is raised and a message with
+"CALL-REJECTED upd_print_page..." is printed on stderr.
+
+
uniprint has lots of messages that can be activated by
+setting bits in the preprocessor macro UPD_MESSAGES. I
+usually use the compile-time option -DUPD_MESSAGES=0x17 for
+configuration development. (For the semantics, check the
+UPD_M_ macros in the source.)
+
+
A program "uninfo.ps" distributed with Ghostscript
+displays interactively in alphabetical order the contents of the current
+pagedevice dictionary. This includes any parameters generated or changed by
+uniprint.
+
+
+
All parameters in brief
+
+
+This table gives a brief explanation of every parameter known to
+uniprint, listing them in alphabetical order. "[ ]"
+denotes that a parameter is an array, and "(RO)" that it is read-only.
+
+
+
All uniprint parameters
+
+
Parameter
+
+
Type
+
+
Use
+
+
upAbortCommand
+
+
String
+
+
End of page and file on interrupt
+
upAdjustBottomMarginCommand
+
+
Bool
+
+
Manipulate bottom margin in upBeginPageCommand
+
upAdjustMediaSizeCommand
+
+
Bool
+
+
Manipulate Mediasize [intended]
+
upAdjustPageLengthCommand
+
+
Bool
+
+
Manipulate page length in upBeginPageCommand
+
upAdjustPageWidthCommand
+
+
Bool
+
+
Manipulate page width in upBeginPageCommand
+
upAdjustResolutionCommand
+
+
Bool
+
+
Manipulate resolution
+
upAdjustTopMarginCommand
+
+
Bool
+
+
Manipulate top margin in upBeginPageCommand
+
upBeginJobCommand
+
+
String
+
+
Begin each output file
+
upBeginPageCommand
+
+
String
+
+
Begin each page
+
upBlackTransfer
+
+
Float[ ]
+
+
Black transfer (CMYK only!)
+
upBlueTransfer
+
+
Float[ ]
+
+
Blue transfer
+
upColorInfo
+
+
Int[ ]
+
+
struct gx_device_color_info
+
upColorModel
+
+
Name
+
+
Select color mapping
+
upColorModelInitialized
+
+
Bool (RO)
+
+
Color mapping OK
+
upComponentBits
+
+
Int[ ]
+
+
Bits stored per component
+
upComponentShift
+
+
Int[ ]
+
+
Positioning within gx_color_index
+
upCyanTransfer
+
+
Float[ ]
+
+
Cyan transfer
+
upEndJobCommand
+
+
String
+
+
End each file unless upAbortCommand
+
upEndPageCommand
+
+
String
+
+
End each page unless upAbortCommand
+
upErrorDetected
+
+
Bool (RO)
+
+
Severe (VM) error, not fully operational
+
upFSFixedDirection
+
+
Bool
+
+
Inhbits direction toggling in rendering
+
upFSProcessWhiteSpace
+
+
Bool
+
+
Causes white-space rendering
+
upFSReverseDirection
+
+
Bool
+
+
Run rendering in reverse (if fixed)
+
upFSZeroInit
+
+
Bool
+
+
Non-random rendering initialization
+
upFormatXabsolute
+
+
Bool
+
+
Write absolute X coordinates
+
upFormatYabsolute
+
+
Bool
+
+
Write absolute Y coordinates
+
upGreenTransfer
+
+
Float[ ]
+
+
Green transfer
+
upMagentaTransfer
+
+
Float[ ]
+
+
Magenta transfer
+
upMargins
+
+
Float[ ]
+
+
L/B/R/T margins in points
+
upModel
+
+
String
+
+
Comment string, holds some info
+
upOutputAborted
+
+
Bool (RO)
+
+
Caught an interrupt
+
upOutputBuffers
+
+
Int
+
+
Number of rendering buffers (2^N)
+
upOutputComponentOrder
+
+
Int[ ]
+
+
Order of components when printing
+
upOutputComponents
+
+
Int
+
+
Number of written components, not fully operational
+
upOutputFormat
+
+
Name
+
+
Select output format
+
upOutputFormatInitialized
+
+
Bool (RO)
+
+
Format data OK
+
upOutputHeight
+
+
Int
+
+
Output height in pixels
+
upOutputPins
+
+
Int
+
+
Number of pins / nozzles per command
+
upOutputWidth
+
+
Int
+
+
Output width in pixels
+
upOutputXOffset
+
+
Int
+
+
Offset in pixels, if upFormatXabsolute
+
upOutputXStep
+
+
Int
+
+
Divisor or multiplier for X coords
+
upOutputYOffset
+
+
Int
+
+
Offset in pixels, if upFormatYabsolute
+
upOutputYStep
+
+
Int
+
+
Divisor or multiplier for Y coords
+
upRasterBufferInitialized
+
+
Bool (RO)
+
+
GS buffer OK
+
upRedTransfer
+
+
Float[ ]
+
+
Red transfer
+
upRendering
+
+
Name
+
+
Select rendering algorithm
+
upRenderingInitialized
+
+
Bool (RO)
+
+
Rendering parameters OK
+
upSelectComponentCommands
+
+
String[ ]
+
+
Establish color (output order!)
+
upSetLineFeedCommand
+
+
String
+
+
Adjust linefeed (Epson only)
+
upVersion
+
+
String (RO)
+
+
Source code version
+
upWeaveFinalPins
+
+
Int[ ]
+
+
Number of bottom pins on EOP passes
+
upWeaveFinalScan
+
+
Int
+
+
Begin EOP passes (Y-coord)
+
upWeaveFinalXStarts
+
+
Int[ ]
+
+
X-pass indices for EOP passes
+
upWeaveFinalYFeeds
+
+
Int[ ]
+
+
Y increments for EOP passes
+
upWeaveInitialPins
+
+
Int[ ]
+
+
Number of top pins on BOP passes
+
upWeaveInitialScan
+
+
Int
+
+
End BOP passes (Y coord)
+
upWeaveInitialXStarts
+
+
Int[ ]
+
+
X-pass indices for BOP passes
+
upWeaveInitialYFeeds
+
+
int[ ]
+
+
Y increments for BOP passes
+
upWeavePasses
+
+
Int
+
+
XPasses × YPasses
+
upWeaveXPasses
+
+
Int
+
+
Number of X passes
+
upWeaveXStarts
+
+
Int[ ]
+
+
X-pass indices for normal passes
+
upWeaveYFeeds
+
+
Int[ ]
+
+
Y increments for normal passes
+
upWeaveYOffset
+
+
Int
+
+
Number of blank or incomplete scans at BOP
+
upWeaveYPasses
+
+
Int
+
+
Number of X passes
+
upWhiteTransfer
+
+
Float[ ]
+
+
White transfer (monochrome devices!)
+
upWriteComponentCommands
+
+
String[ ]
+
+
Commands to write each component
+
upWroteData
+
+
Bool (RO)
+
+
Something (BeginJob) written to output
+
upXMoveCommand
+
+
String
+
+
X positioning command
+
upXStepCommand
+
+
String
+
+
Single step to the right
+
upYFlip
+
+
Bool
+
+
Flips output along the Y axis
+
upYMoveCommand
+
+
String
+
+
Y positioning command
+
upYStepCommand
+
+
String
+
+
Single step down
+
upYellowTransfer
+
+
Float[ ]
+
+
Yellow transfer
+
+
+
uniprint's Roll of Honor
+
+
+I should mention all of the people who were involved in
+stcolor's evolution, but I've decided to start from scratch
+here for uniprint:
+
+
+
+
John P. Beale
+
for testing the stc600 modes
+
Bill Davidson
+
who triggered some weaving research and tested stc2s_h
+
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.
+
This only describes how to work out the Y parameters, I haven't looked
+at the X parameters yet.
+
+
+Determine the nozzle geometry (upOutputPins)
+
+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* that will help with that.
+Sometimes the term pin is used instead of nozzle but they mean the same thing.
+
The number of nozzles will be the value assigned to the upOutputPins
+parameter.
+
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.
+
Determine how many passes are required (upWeaveYPasses)
+
The number of passes required is going to depend on the required resolution
+and the nozzle spacing.
+
+passes = resolution * nozzle spacing
+
+
+This will be the value assigned to the upWeaveYPasses parameter.
+
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.
+
+
+
+Determine the normal Y feed increment (upWeaveYFeeds)
+
+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:
+
+
+
sum of feeds = passes * nozzles
+ feed%passes != 0 (feed is not exactly divisible by passes)
+ sum of (nozzles - feed) = 0
+
+
+
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.
+
These values will be assigned to the upWeaveYFeeds parameter.
+
You would need to experiment to see what combination looks best on the
+printer.
+
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.
+
Remember that if the number of passes is more than 1 then the feed increment
+will be less than the nozzle spacing and passes × feed increment size
+must equal the physical distance between each nozzle.
+
+
+
+Determine the beginning of page pins (upWeaveInitialPins)
+
+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.
+
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.
+
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.
+
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.
+
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.
+
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.
+
+
+
Example: stc.upp from Aladdin Ghostscript 6.01
+15 nozzles spaced at 1/90 in, 360 dpi requires 4 passes.
+
+The following diagram shows which nozzles operate during each pass.
+ Passes 1-4 are beginning of page passes and passes 5-8 are normal passes.
+
+
x=nozzle operates, o=nozzle not used in this pass
+
1 2 3 4 5 6 7 8 - pass no
+ 0 x
+ 1 x
+ 2 x
+ 3 x
+ 4 x
+ 5 x
+ 6 x
+ 7 x
+ 8 x
+ 9 x
+ 0 x
+ 1 x
+ 2 x
+ 3 x
+ 4 x
+ 5 x
+ 6 o x
+ 7 x
+ 8 x
+ 9 x
+ 0 o x
+ 1 x
+ 2 x
+ 3 x
+ 4 o x
+ 5 x
+ 6 x
+ 7 x
+ 8 o x
+ 9 x
+ 0 x
+ 1 o x
+ 2 o x
+ 3 x
+ 4 x
+ 5 o x
+ 6 o x
+ 7 x
+ 8 x
+ 9 o x
+ 0 o x
+ 1 x
+ 2 x
+ 3 o x
+ 4 o x
+ 5 x
+ 6 o
+x
+ 7 o x
+ 8 o x
+ 9 x
+ 0 o
+x
+ 1 o x
+ 2 o x
+ 3 x
+ 4 o
+x
+ 5 o x
+ 6 o x
+ 7 x
+ 8 o
+x
+ 9 o x
+ 0 x
+ 1
+x
+ 2
+x
+ 3 x
+ 4 x
+ 5
+x
+ 6
+x
+ 7 x
+ 8 x
+ 9
+x
+ 0
+x
+ 1 x
+ 2 x
+ 3
+x
+ 4
+x
+ 5 x
+ 6
+ 7
+x
+ 8
+x
+ 9 x
+ 0
+ 1
+x
+ 2
+x
+ 3 x
+ 4
+ 5
+x
+ 6
+x
+ 7 x
+ 8
+ 9
+x
+ 0
+x
+ 1
+ 2
+ 3
+x
+ 4
+x
+ 5
+ 6
+ 7
+x
+ 8
+x
+ 9
+ 0
+ 1
+x
+ 2
+x
+ 3
+ 4
+ 5
+x
+ 6
+ 7
+ 8
+ 9
+x
+ 0
+ 1
+ 2
+ 3
+x
+ 4
+ 5
+ 6
+ 7
+x
+
Extension to uniprint for the Epson Stylus Color 300
+This section was contributed by Glenn Ramsey.
+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.
+
+
upOutputFormatselects the output method, and should be set to the value
+/EscNozzleMap to select this format.
+
+
+
+
+
/EscNozzleMap
+
+
produces output for the Epson Stylus Color 300
+
+
+
+
+
+
+
+
+
+
+
+
+ uniprint parameters for the
+ EscNozzleMap format
+
+
+
+
Parameter
+
+
+
+
Type
+
+
+
+
Use
+
+
+
+
+
+
+
+
upNozzleMapRowsPerPass
+
+
+
Int
+
+
+
+
output rows to generate for each pass of the head
+
+
+
+
upNozzleMapPatternRepeat
+
+
+
Int
+
+
+
+
no. of rows that correspond to the repeat pattern of the
+ nozzles
+
+
+
+
upNozzleMapRowMask
+
+
+
Int[]
+
+
+
+
mask indicating the colour of the nozzles
+
+
+
+
upNozzleMapMaskScanOffset
+
+
+
Int[]
+
+
+
+
mask indicating the physical position of the nozzles
+
+
+
+
+
+
+
A more detailed description of the new parameters
+
+
upNozzleMapRowsPerPass
+ 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.
+
+
upNozzleMapPatternRepeat
+ The number of nozzles in each repeated group on the printing head.
+ This parameter must correspond with the length of the upNozzleMapRowMask array.
+
+
upNozzleMapRowMask
+ 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.
+
+
+
+
+
colour
+
+
+
+
mask value
+
+
+
+
+
+
+
+
K
+
+
+
1
+
+
+
+
C
+
+
+
2
+
+
+
M
+
+
+
3
+
+
+
+
Y
+
+
+
4
+
+
+
+
no data
+
+
+
0
+
+
+
+
+
+ A value of 0 means that the nozzle is not used and the row in the output data will be
+ padded with zeros.
+
+
upNozzleMapMaskScanOffset
+ 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:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
etc ...
+
+
+
+
+
+ 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.
+
+
Example 1 - Epson Stylus Color 300 - 360 dpi colour
+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.
+
+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.
+
+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 upNozzleMapPatternRepeat
+parameter defines the length of the mask.
+
+The row mask is repeated for each group of upNozzleMapPatternRepeat 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.
+
+The upNozzleMaskScanOffset 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 upNozzleMaskScanOffset parameter
+however the parameter is necessary to be able to use the full capability of the
+printer in black only mode.
+
+
Example 2 - Epson Stylus Color 300 - 180 dpi black only
+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 upNozzleMapRowMask
+and upNozzleMaskScanOffset arrays. The upNozzleMapRowMask 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.
+
+The upNozzleMaskScanOffset 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.
+
+
Example 3 - Epson Stylus Color 300 - 360 dpi black only
+In this example 2 weave passes are required to achieve the desired resolution.
+
+The upNozzleMaskScanOffset 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).
+
+This section was contributed by Martin Schulte.
+
+
+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.
+
+
+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.
+
+
Installation
+
+
+Add sparc.dev to DEVICE_DEVS and compile
+Ghostscript as described in the documentation on how to
+build Ghostscript. Afterwards you can use the following script as an
+example for printing after modifying it with the right pathnames --
+including for {GSPATH} the full pathname of the Ghostscript
+executable:
+
+
+Since /dev/lpi 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--"
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+printcap file the string "ms=pass8,-opost"
+works fine for this.
+
+
+Finally, you can search devdemp.c for
+"Init" and "Reset" to find the strings that
+initialize the printer and reset things when finished, and change them to
+meet your needs.
+
+
+
+
+
+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/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 @@
+
+
+
+The interface between Ghostscript and device drivers
+
+
+
+
+
+
+
+
+
+
+
The interface between Ghostscript and device drivers
+To add a driver to Ghostscript, first pick a name for your device, say
+"smurf". (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 contrib.mak in two places.
+
+
+
The list of devices, in the section headed "Catalog". Add
+smurf to the list.
+
+
The section headed "Device drivers".
+
+
+Suppose the files containing the smurf driver are called
+"joe" and "fred". Then you should add the
+following lines:
+
+
+and whatever joe.c and fred.c depend on.
+If the smurf driver also needs special libraries, for instance a library
+named "gorf", then the entry should look like this:
+
+
+Note that the space before the :, and the explicit compilation rules for the
+.c files, are required for portability,
+
+
+
+
+
Keeping things simple
+
+
+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 gdevepsn.c and gdevbj10.c are good models for dot-matrix
+printers, which require presenting the data for many scan lines at once; the
+DeskJet/LaserJet drivers in gdevdjet.c 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, gdevcdj.c and gdevstc.c, are far too complex to read.
+
+
+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.
+
+
+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. gdevepsn.c and gdevdjet.c are good examples of this approach.
+
+
+
+
Driver structure
+
+
+A device is represented by a structure divided into three parts:
+
+
+
procedures that are (normally) shared by all instances of each device;
+
+
parameters that are present in all devices but may be different for
+each device or instance; and
+
+
device-specific parameters that may be different for each instance.
+
+
+
+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 const, but for backward
+compatibility reasons the latter is not.
+
+
+The gx_device_common 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 gxdevice.h or, if applicable, gdevprn.h.
+
+
+The device structure instance must have the name
+gs_smurf_device, where smurf is the device
+name used in contrib.mak. gx_device_common
+is a macro consisting only of the element definitions.
+
+
+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 gx_device * as
+their first argument, and must cast it to
+smurf_device * internally. For example, in the code
+for the "memory" device, the first argument to all routines is called
+dev, but the routines actually use mdev to
+refer to elements of the full structure, using the following standard
+initialization statement at the beginning of each procedure:
+
+
+(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.)
+
+
Structure definition
+
+
+You should consult the definition of struct gx_device_s in
+gxdevice.h for the complete details of the
+generic device structure. Some of the most important members of this
+structure for ordinary drivers are:
+
+
+
const char *dname;
+
+
The device name
+
bool is_open;
+
+
True if device has been opened
+
gx_device_color_info color_info;
+
+
Color information
+
int width;
+
+
Width in pixels
+
int height;
+
+
Height in pixels
+
+
+
+The name in the structure (dname) should be the same as the
+name in contrib.mak.
+
+
For sophisticated developers only
+
+
+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:
+
+
+
This document and the news document (if you want
+ to keep the documentation up to date).
+
The definition of gx_device_common and the procedures
+ in gxdevcli.h.
+
Possibly, the default forwarding procedures declared in
+ gxdevice.h and implemented in
+ gdevnfwd.c.
+
The device procedure record completion routines in
+ gdevdflt.c.
+
+You may also have to change the code for
+gx_default_get_params or
+gx_default_put_params in gsdparam.c.
+
+
+You should not have to change any of the real devices in the standard
+Ghostscript distribution (listed in devs.mak
+and contrib.mak) or any of your own
+devices, because all of them are supposed to use the macros in gxdevice.h or gdevprn.h to define and initialize their state.
+
+
+
+
Coordinates and types
+
+
Coordinate system
+
+
+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
+int. (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
+X increasing to the right and Y 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.
+
+
+Drivers must check (and, if necessary, clip) the coordinate parameters given
+to them: they should not assume the coordinates will be in bounds. The
+fit_fill and fit_copy macros in gxdevice.h are very helpful in doing this.
+
+
Color definition
+
+
+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
+gx_color_index). Drivers may provide a uniformly spaced
+gray ramp or color cube for halftoning, or they may do their own color
+approximation, or both.
+
+
+The color_info member of the device structure defines the
+color and gray-scale capabilities of the device. Its type is defined as
+follows:
+
+
+
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. > 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. > 1) */
+} gx_device_color_info;
+
+
+
+The following macros (in gxdevice.h) provide
+convenient shorthands for initializing this structure for ordinary
+black-and-white or color devices:
+
+
+The idea is that a device has a certain number of gray levels
+(max_gray+1) and a certain number of colors
+(max_rgb+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 num_components is 1,
+it converts all colors to gray levels), and if so:
+
+
+If max_gray is large (>= 31), Ghostscript asks the
+device to approximate the gray level directly. If the device returns a
+valid gx_color_index, Ghostscript uses it. Otherwise,
+Ghostscript assumes that the device can represent
+dither_gray distinct gray levels, equally spaced along the
+diagonal of the color cube, and uses the two nearest ones to the desired
+color for halftoning.
+
+
+
+If the color is not a gray level:
+
+
+If max_rgb is large (>= 31), Ghostscript asks the device
+to approximate the color directly. If the device returns a valid
+gx_color_index, Ghostscript uses it. Otherwise,
+Ghostscript assumes that the device can represent
+
+
+dither_rgb × dither_rgb × dither_rgb
+
+
+
+distinct colors, equally spaced throughout the color cube, and uses two of
+the nearest ones to the desired color for halftoning.
+
+
+
Types
+
+
+Here is a brief explanation of the various types that appear as parameters
+or results of the drivers.
+
+
+
gx_color_value (defined in gxdevice.h)
+
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:
+gx_color_value_bits is the number of bits actually used,
+and gx_max_color_value is the maximum value, equal to
+(2^gx_max_color_value_bits)-1.
+
+
+
+
gx_device (defined in gxdevice.h)
+
This is the device structure, as explained above.
+
+
+
+
gs_matrix (defined in gsmatrix.h)
+
This is a 2-D homogeneous coordinate transformation matrix, used by
+many Ghostscript operators.
+
+
+
+
gx_color_index (defined in gxdevice.h)
+
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 gx_color_index values: it gets them
+from map_rgb_color or map_cmyk_color and
+hands them back as arguments to several other procedures. The special
+value gx_no_color_index (defined as
+(gx_color_index)(-1) ) means "transparent" for some of
+the procedures. The type definition is simply:
+
+
gx_tile_bitmap (defined in
+gxbitmap.h)
+ gx_strip_bitmap (defined in
+gxbitmap.h)
+
These structure types represent bitmaps to be used as a tile for
+filling a region (rectangle). gx_tile_bitmap is an older
+type lacking shift and rep_shift;
+gx_strip_bitmap has superseded it, and it should not be
+used in new code. Here is a copy of the relevant part of the file:
+
+
+
/*
+ * 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 < 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;
+
+
+
+
+
+
Coding conventions
+
+
+All the driver procedures defined below that return int
+results return 0 on success, or an appropriate negative error code in the
+case of error conditions. The error codes are defined in gserrors.h; they correspond directly to the
+errors defined in the PostScript language reference manuals. The most
+common ones for drivers are:
+
+
+
gs_error_invalidfileaccess
+
An attempt to open a file failed.
+
+
gs_error_ioerror
+
An error occurred in reading or writing a file.
+
+
gs_error_limitcheck
+
An otherwise valid parameter value was too large for the
+implementation.
+
+
gs_error_rangecheck
+
A parameter was outside the valid range.
+
+
gs_error_VMerror
+
An attempt to allocate memory failed. (If this happens, the procedure
+should release all memory it allocated before it returns.)
+
+
+
+If a driver does return an error, rather than a simple return statement it
+should use the return_error macro defined in gx.h, which is automatically included by gdevprn.h but not by gserrors.h. For example
+
+
+return_error(gs_error_VMerror);
+
+
+
Allocating storage
+
+
+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
+malloc to allocate any storage that stays around after the
+procedure returns. Instead, they must use gs_malloc and
+gs_free, which have slightly different calling conventions.
+(The prototypes for these are in gsmemory.h,
+which is included in gx.h, which is included in gdevprn.h.) 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).
+
+
+Like calloc, but unlike malloc,
+gs_malloc takes an element count and an element size. For
+structures, num_elements is 1 and
+element_size is sizeof the structure; for
+byte arrays, num_elements is the number of bytes and
+element_size is 1. Unlike calloc,
+gs_malloc does not clear the block of storage.
+
+
+The client_name is used for tracing and debugging. It must
+be a real string, not NULL. Normally it is the name of the
+procedure in which the call occurs.
+
+
+Unlike free, gs_free demands that
+num_elements and element_size be supplied. It also
+requires a client name, like gs_malloc.
+
+
Driver instance allocation
+
+
+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
+gs_copydevice procedure defined in gsdevice.h. 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 gsmemory.h
+and gsstruct.h.
+
+
+
+
Printer drivers
+
+
+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: map_rgb_color
+(or map_cmyk_color) and map_color_rgb. In
+addition, they must implement a print_page or
+print_page_copies procedure. There are macros in gdevprn.h that generate the device structure for
+such devices, of which the simplest is prn_device; for an
+example, see gdevbj10.c. If you are writing
+a printer driver, we suggest you start by reading gdevprn.h and the subsection on "Color mapping" below; you may be
+able to ignore all the rest of the driver procedures.
+
+
+The print_page procedures are defined as follows:
+
+
+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 print_page procedure must call one of the
+following procedures:
+
+
+
int gdev_prn_copy_scan_lines(P4(gx_device_printer *pdev, int y, byte *str,
+ uint size)
+
+
+
+For this procedure, str is where the data should be copied to, and size is
+the size of the buffer starting at str. This procedure returns the number
+of scan lines copied, or <0 for an error. str need not be aligned.
+
+
+
int gdev_prn_get_bits(gx_device_printer *pdev, int y, byte *str,
+ byte **actual_data)
+
+
+
+This procedure reads out exactly one scan line. If the scan line is
+available in the correct format already, *actual_data is
+set to point to it; otherwise, the scan line is copied to the buffer
+starting at str, and *actual_data is set to
+str. This saves a copying step most of the time.
+str need not be aligned; however, if
+*actual_data is set to point to an existing scan line, it
+will be aligned. (See the description of the get_bits
+procedure below for more details.)
+
+
+In either case, each row of the image is stored in the form described in
+the comment under gx_tile_bitmap above; each pixel takes
+the number of bits specified as color_info.depth in the
+device structure, and holds values returned by the device's
+map_{rgb,cmyk}_color
+procedure.
+
+
+The print_page procedure can determine the number of bytes
+required to hold a scan line by calling:
+
+
+
uint gdev_prn_raster(P1(gx_device_printer *))
+
+
+
+For a very simple concrete example, we suggest reading the code in
+bit_print_page in gdevbit.c.
+
+
+If the device provides print_page, Ghostscript will call
+print_page the requisite number of times to print the
+desired number of copies; if the device provides
+print_page_copies, Ghostscript will call
+print_page_copies once per page, passing it the desired
+number of copies.
+
+
+
+
Driver procedures
+
+
+Most of the procedures that a driver may implement are optional. If a
+device doesn't supply an optional procedure WXYZ, the entry
+in the procedure structure may be either gx_default_WXYZ,
+for instance gx_default_tile_rectangle, or
+NULL or 0. (The device procedure must also call the
+gx_default_ 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.
+
+
Life cycle
+
+
+A device instance begins life in a closed state. In this state, no output
+operations will occur. Only the following procedures may be called:
+
+
+When setdevice installs a device instance in the graphics
+state, it checks whether the instance is closed or open. If the instance
+is closed, setdevice 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:
+
+
+
When a restore occurs, if the instance was created since
+the corresponding save and is in a VM being restored. I.e.,
+if the instance was created in local VM since a save, it
+will always be closed and freed by the corresponding
+restore; if it was created in global VM, it will only be
+closed by the outermost restore, regardless of the save
+level at the time the instance was created.
+
+
By the garbage collector, if the instance is no longer accessible.
+
+
When Ghostscript exits (terminates).
+
+
+
Open, close, sync, copy
+
+
+
int (*open_device)(P1(gx_device *))[OPTIONAL]
+
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. NOTE: Clients should never call
+a device's open_device procedure directly: they should
+always call gs_opendevice instead.
+
+
+
+
int (*finish_copydevice)(P2(gx_device *dev, const gx_device
+*from_dev))[OPTIONAL]
Perform any cleanup
+required after copydevice has created a new device instance
+by copying from_dev. 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. NOTE: Clients should never
+call a device's finish_copydevice procedure: this procedure
+is only intended for use by gs_copydevice[2].
+
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
+[xy]_pixels_per_inch on the assumption that
+the origin is in the upper left corner, that is
+
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 not
+implement this by printing the page. The default implementation does
+nothing.
+
+
+
+
int (*output_page)(P3(gx_device *, int num_copies, int flush))[OPTIONAL]
+
Output a fully composed page to the device. The
+num_copies 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 flush
+argument is true for showpage, false for
+copypage. The default definition just calls
+sync_output. Printer drivers should implement this by
+printing and ejecting the page.
+
+
+
+
int (*close_device)(P1(gx_device *))[OPTIONAL]
+
Close the device: release any associated resources. After this, output
+to the device is no longer allowed. The default implementation does
+nothing. NOTE: Clients should never call a device's
+close_device procedure directly: they should always call
+gs_closedevice instead.
+
+
+
Color and alpha mapping
+
+
+A given driver normally implements either map_rgb_color or
+map_cmyk_color, but not both. Black-and-white drivers need
+implement neither. Note that the map_xxx_color procedures
+must not return gx_no_color_index (all 1s).
+
+
+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 put_params procedure), the driver must call
+gx_device_decache_colors(dev).
+
+
Map a RGB color to a device color. The range of legal values of the
+RGB arguments is 0 to gx_max_color_value. The default
+algorithm uses the map_cmyk_color procedure if the driver
+supplies one, otherwise returns 1 if any of the values exceeds
+gx_max_color_value / 2, 0 otherwise.
+
+
+Ghostscript assumes that for devices that have color capability (that is,
+color_info.num_components > 1),
+map_rgb_color returns a color index for a gray level (as
+opposed to a non-gray color) iff red = green = blue.
+
Map a CMYK color to a device color. The range of legal values of the
+CMYK arguments is 0 to gx_max_color_value. The default
+algorithm calls the map_rgb_color procedure, with suitably
+transformed arguments.
+
+
+Ghostscript assumes that for devices that have color capability (that is,
+color_info.num_components > 1),
+map_cmyk_color returns a color index for a gray level (as
+opposed to a non-gray color) iff cyan = magenta = yellow.
+
+
+
+
int (*map_color_rgb)(P3(gx_device *,
+gx_color_index color, gx_color_value rgb[3]))[OPTIONAL]
+
Map a device color code to RGB values. The default algorithm returns
+(0 if color==0 else gx_max_color_value) for
+all three components.
+
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
+gx_max_color_value; alpha = 0 means
+transparent, alpha = gx_max_color_value
+means fully opaque. The default is to use the
+map_rgb_color procedure and ignore alpha.
+
+
+Note that if a driver implements map_rgb_alpha_color, it
+must also implement map_rgb_color, and must implement them
+in such a way that
+map_rgb_alpha_color(dev, r, g, b, gx_max_color_value)
+returns the same value as
+map_rgb_color(dev, r, g, b).
+
+
+
+
int (*map_color_rgb_alpha)(P3(gx_device *,
+gx_color_index color, gx_color_value rgba[4]))
+[OPTIONAL]
+
Map a device color code to RGB and alpha values. The default
+implementation calls map_color_rgb and fills in
+gx_max_color_value for alpha.
+
+
+Note that if a driver implements map_color_rgb_alpha, it
+must also implement map_color_rgb, and must implement them
+in such a way that the first 3 values returned by
+map_color_rgb_alpha are the same as the values returned by
+map_color_rgb.
+
+
+Note that CMYK devices currently do not support variable opacity; alpha is
+ignored on such devices.
+
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.
+
+
+
Pixel-level drawing
+
+
+This group of drawing operations specifies data at the pixel level. All
+drawing operations use device coordinates and device color values.
+
+
+
int (*fill_rectangle)(P6(gx_device *, int x,
+int y, int width, int height,
+gx_color_index color))
+
Fill a rectangle with a color. The set of pixels filled is {(px,py) |
+x <= px < x + width and y <= py < y + height}. In other words,
+the point (x,y) is included in the rectangle, as are
+(x+w-1,y), (x,y+h-1), and (x+w-1,y+h-1), but
+not(x+w,y), (x,y+h), or
+(x+w,y+h). If width <= 0 or
+height <= 0, fill_rectangle should return 0
+without drawing anything.
+
+
+Note that fill_rectangle is the only non-optional procedure
+in the driver interface.
+
+
+
Bitmap imaging
+
+
+Bitmap (or pixmap) images are stored in memory in a nearly standard way.
+The first byte corresponds to (0,0) 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.
+
+
+
int (*copy_mono)(P11(gx_device *,
+const unsigned char *data, int data_x, int raster,
+gx_bitmap_id id, int x, int y, int width,
+int height, gx_color_index color0,
+gx_color_index color1))[OPTIONAL]
+
Copy a monochrome image (similar to the PostScript image operator).
+Each scan line is raster bytes wide. Copying begins at
+(data_x,0) and transfers a rectangle of the given width and
+height to the device at device coordinate (x,y). (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 color0 at each 0-bit, and
+color1 at each 1-bit: if color0 or
+color1 is gx_no_color_index, the device
+pixel is unaffected if the image bit is 0 or 1 respectively. If
+id is different from gx_no_bitmap_id, it
+identifies the bitmap contents unambiguously; a call with the same
+id will always have the same data,
+raster, and data contents.
+
+
+This operation, with
+color0 = gx_no_color_index, is
+the workhorse for text display in Ghostscript, so implementing it
+efficiently is very important.
+
+
+
+
int (*tile_rectangle)(P10(gx_device *,
+const gx_tile_bitmap *tile, int x, int y,
+int width, int height, gx_color_index color0,
+gx_color_index color1, int phase_x, int phase_y))
+[OPTIONAL] [OBSOLETE]
+
This procedure is still supported, but has been superseded by
+strip_tile_rectangle. New drivers should implement
+strip_tile_rectangle; if they cannot cope with non-zero
+shift values, they should test for this explicitly and call the default
+implementation (gx_default_strip_tile_rectangle) if
+shift != 0. Clients should call
+strip_tile_rectangle, not tile_rectangle.
+
+
+
+
int (*strip_tile_rectangle)(P10(gx_device *,
+const gx_strip_bitmap *tile, int x, int y,
+int width, int height, gx_color_index color0,
+gx_color_index color1, int phase_x, int phase_y))
+[OPTIONAL]
+
Tile a rectangle. Tiling consists of doing multiple
+copy_mono operations to fill the rectangle with copies of
+the tile. The tiles are aligned with the device coordinate system, to
+avoid "seams". Specifically, the (phase_x,
+phase_y) 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.) phase_x and
+phase_y are guaranteed to be in the range
+[0..tile->width) and
+[0..tile->height) respectively.
+
+
+If color0 and color1 are both
+gx_no_color_index, then the tile is a color pixmap, not a
+bitmap: see the next section.
+
+
+This operation is the workhorse for halftone filling in Ghostscript, so
+implementing it efficiently for solid tiles (that is, where either
+color0 and color1 are both
+gx_no_color_index, for colored halftones, or neither one is
+gx_no_color_index, for monochrome halftones) is very
+important.
+
+
+
Pixmap imaging
+
+
+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 copy_color,
+the number of bits per pixel is given by the
+color_info.depth 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 map_rgb_color
+returns).
+
+
+
int (*copy_color)(P9(gx_device *,
+const unsigned char *data, int data_x, int raster,
+gx_bitmap_id id, int x, int y, int width,
+int height))[OPTIONAL]
+
Copy a color image with multiple bits per pixel. The raster is in
+bytes, but x and width are in pixels, not
+bits. If id is different from
+gx_no_bitmap_id, it identifies the bitmap contents
+unambiguously; a call with the same id will always have the
+same data, raster, and data contents.
+
+
+We do not provide a separate procedure for tiling with a pixmap; instead,
+tile_rectangle can also take colored tiles. This is
+indicated by the color0 and color1
+arguments' both being gx_no_color_index. In this case, as
+for copy_color, the raster and
+height in the "bitmap" are interpreted as for real bitmaps,
+but the x and width are in pixels, not
+bits.
+
+
+
Compositing
+
+
+In addition to direct writing of opaque pixels, devices must also support
+compositing. Currently two kinds of compositing are defined
+(RasterOp and alpha-based), but more may be added in the
+future.
+
+
+THIS AREA OF THE INTERFACE IS SOMEWHAT UNSTABLE: USE AT YOUR OWN
+RISK.
+
+
+
+
int (*copy_alpha)(P11(gx_device *dev,
+const unsigned char *data, int data_x, int raster,
+gx_bitmap_id id, int x, int y, int width,
+int height, gx_color_index color, int depth))
+[OPTIONAL]
+
This procedure is somewhat misnamed: it was added to the interface
+before we really understood alpha channel and compositing.
+
+
+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 (data, data_x, and
+raster) and whose color is the given color (which has
+not been premultiplied by the alpha value), using the Sover
+rule. depth, 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 get_alpha_bits procedure. Note that if
+get_alpha_bits always returns 1, this procedure will never
+be called.
+
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 *pcte.
+Devices will normally implement this in one of the following standard ways:
+
+
+
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.
+
+
"Leaf" devices that do imaging and have no special optimizations for
+compositing (for example, some memory devices) ask the
+gs_composite_t to create a default compositor.
+
+
Leaf devices that can implement some kinds of compositing operation
+efficiently (for example, monobit memory devices and RasterOp) inspect the
+type and values of *pcte to determine whether it specifies
+such an operation: if so, they create a specialized compositor, and if not,
+they ask the gs_composite_t to create a default compositor.
+
+
+
+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 D with target T, and T creates a
+compositor C, then the default implementation creates a device
+F that for each operation temporarily changes D's target to
+C, forwards the operation to D, and then changes D's
+target back to T. 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.
+
+
+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.
+
+
+Closing a compositor frees all of its storage, including the compositor
+itself. However, since the create_compositor call may
+return the same device, clients must check for this case, and only call the
+close procedure if a separate device was created.
+
+
+
+
+[strip_]copy_rop WILL BE SUPERSEDED BY COMPOSITORS
+
+
+
+
int (*copy_rop)(P15(gx_device *dev,
+const byte *sdata, int sourcex, uint sraster,
+gx_bitmap_id id, const gx_color_index *scolors,
+const gx_tile_bitmap *texture,
+const gx_color_index *tcolors, int x, int y,
+int width, int height, int phase_x, int phase_y,
+int command))[OPTIONAL]
+
This procedure is still supported, but has been superseded by
+strip_copy_rop. New drivers should implement
+strip_copy_rop; if they cannot cope with non-zero shift
+values in the texture, they should test for this explicitly and call the
+default implementation (gx_default_strip_copy_rop) if
+shift != 0. Clients should call strip_copy_rop,
+not copy_rop.
+
+
+
+
int (*strip_copy_rop)(P15(gx_device *dev,
+const byte *sdata, int sourcex, uint sraster,
+gx_bitmap_id id, const gx_color_index *scolors,
+const gx_strip_bitmap *texture,
+const gx_color_index *tcolors, int x, int y,
+int width, int height, int phase_x, int phase_y,
+int command))[OPTIONAL]
+
Combine an optional source image S (as for
+copy_mono or copy_color) and an optional
+texture T (a tile, as for tile_rectangle) with the
+existing bitmap or pixmap D held by the driver, pixel by pixel,
+using any 3-input Boolean operation as modified by "transparency" flags:
+schematically, set D = f(D,S,T), computing f in RGB
+space rather than using actual device pixel values. S and T
+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:
+
+
+As noted above, the source S may be a solid color, a bitmap, or a
+pixmap. If S is a solid color:
+
+
+
sdata, sourcex,
+sraster, and id are irrelevant.
+
+
scolors points to two gx_color_index
+values; scolors[0] = scolors[1] = the
+color.
+
+
+
+If S is a bitmap:
+
+
+
sdata, sourcex,
+sraster, and id arguments are as for
+copy_mono or copy_color
+(data, data_x, raster,
+id), and specify a source bitmap.
+
+
scolors points to two gx_color_index
+values; scolors[0] is the background color (the color
+corresponding to 0-bits in the bitmap), scolors[1] is the
+foreground color (the color corresponding to 1-bits in the bitmap).
+
+
+
+If S is a pixmap:
+
+
+
sdata, sourcex,
+sraster, and id arguments are as for
+copy_mono or copy_color
+(data, data_x, raster,
+id), and specify a source pixmap whose depth is the same as
+the depth of the destination.
+
+
scolors is NULL.
+
+
+
+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=NULL).
+
+
The texture specification T
+
+
+Similar to the source, the texture T may be a solid color, a bitmap,
+or a pixmap. If T is a solid color:
+
+
+
The texture pointer is irrelevant.
+
+
tcolors points to two gx_color_index
+values; tcolors[0] = tcolors[1] = the
+color.
+
+
+
+If T is a bitmap:
+
+
+
The texture argument points to a gx_tile_bitmap, as for
+the tile_rectangle procedure. Similarly,
+phase_x and phase_y specify the offset of
+the texture relative to the device coordinate system origin, again as for
+tile_rectangle. The tile is a bitmap (1 bit per pixel).
+
+
tcolors points to two gx_color_index
+values; tcolors[0] is the background color (the color
+corresponding to 0-bits in the bitmap), tcolors[1] is the
+foreground color (the color corresponding to 1-bits in the bitmap).
+
+
+
+If T is a pixmap:
+
+
+
The texture argument points to a gx_tile_bitmap whose
+depth is the same as the depth of the destination.
+
+
tcolors is NULL.
+
+
+
+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=NULL).
+
+
+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 gx_tile_bitmap structure, and is
+replicated or clipped as needed.
+
+
The function specification f
+
+
+"Command" indicates the raster operation and transparency as follows:
+
+
+
+
Bits
+
+
+
7-0
+
+
raster op
+
8
+
+
0 if source opaque, 1 if source transparent
+
9
+
+
0 if texture opaque, 1 if texture transparent
+
?-10
+
+
unused, must be 0
+
+
+
+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×2×2 input values as follows:
+
+
+
+
Bit
+
+
Texture
+
+
Source
+
+
Destination
+
+
7
+
+
1
+
+
1
+
+
1
+
6
+
+
1
+
+
1
+
+
0
+
5
+
+
1
+
+
0
+
+
1
+
4
+
+
1
+
+
0
+
+
0
+
3
+
+
0
+
+
1
+
+
1
+
2
+
+
0
+
+
1
+
+
0
+
1
+
+
0
+
+
0
+
+
1
+
0
+
+
0
+
+
0
+
+
0
+
+
+
+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, 0xffffff for 24-bit RGB pixmaps) and 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 should be written in
+the output. We think this is an error in the documentation.)
+
+
Notes
+
+
+copy_rop 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 copy_rop
+must convert to RGB or gray space, do the operation, and convert back (or
+do the equivalent of this). Here are the copy_rop
+equivalents of the most important previous imaging calls. We assume the
+declaration:
+
+
+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.
+
+
+The fill_* 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 (X+0.5,Y+0.5) 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.
+
+
Fill a trapezoid. The bottom and top edges are parallel to the x
+axis, and are defined by ybot and ytop,
+respectively. The left and right edges are defined by left
+and right. Both of these respresent lines (gs_fixed_edge
+is defined in gxdevcli.h and consists
+of gs_fixed_pointstart and end points).
+The y coordinates of these lines need not have any specific relation to
+ybot and ytop. 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
+swap_axes is set, the meanings of X and Y are
+interchanged.
+
Fill a parallelogram whose corners are (px,py),
+(px+ax,py+ay), (px+bx,py+by), and
+(px+ax+bx,py+ay+by). There are no constraints on the values of
+any of the parameters, so the parallelogram may have any orientation
+relative to the coordinate axes.
+
Draw a one-pixel-wide line from (fx0,fy0) to
+(fx1,fy1).
+
+
+
+
int (*draw_line)(P6(gx_device *dev, int x0, int y0,
+int x1, int y1, gx_color_index color))
+[OPTIONAL] [OBSOLETE]
+
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.
+
+
+
High-level drawing
+
+
+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:
+
+
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
+NULL, meaning do not clip.
+
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
+NULL, meaning not to clip.
+
+
+
+
int (*fill_mask)(P13(gx_device *dev,
+const byte *data, int data_x, int raster,
+gx_bitmap_id id, int x, int y, int width,
+int height, const gx_drawing_color *pdcolor, int depth,
+int command, const gx_clip_path *pcpath))
+[OPTIONAL]
+
Color the 1-bits in the given mask (or according to the alpha values,
+if depth > 1), clipped by the given clip path,
+with the given color and logical operation. The clip path pointer may be
+NULL, meaning do not clip. The parameters
+data, ..., height are as for
+copy_mono; depth is as for copy_alpha;
+command is as for copy_rop.
+
+
+
Images
+
+
+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.
+
+
+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:
+
+
+Of course, standard PostScript images don't have an alpha component. For
+more details, consult the source code in gsiparam.h and gsiparm*.h,
+which define parameters for an image.
+
+
+The begin[_typed_]image driver procedures create image
+enumeration structures. The common part of these structures consists of:
+
+
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;
+
+
+
In other words, begin[_typed]_image 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
+begin[_typed]_image, such as the one in gdevbbox.c or gdevps.c.
+
+
+The data passed at each call of image_plane_data consists of
+one or more planes, as appropriate for the type of image.
+begin[_typed]_image must initialize the
+plane_depths array in the enumeration structure with the
+depths (bits per element) of the planes. The array of
+gx_image_plane_t structures passed to each call of
+image_plane_data then defines where the data are stored, as
+follows:
+
+
Begin the transmission of an image. Zero or more calls of
+image_plane_data will follow, and then a call of
+end_image. The parameters of begin_image
+are as follows:
+
+
+
pis
+
+
pointer to an imager state. The only relevant elements of the
+ imager state are the CTM (coordinate transformation matrix),
+ the logical operation (RasterOp or
+ transparency), and the color rendering information.
+
pim
+
+
pointer to the gs_image_t structure that
+ defines the image parameters
+
format
+
+
defines how pixels are represented for
+ image_plane_data. See the description of
+ image_plane_data below
+
prect
+
+
if not NULL, defines a subrectangle of the
+ image; only the data for this subrectangle will be passed to
+ image_plane_data, and only this subrectangle should
+ be drawn
+
pdcolor
+
+
defines a drawing color, only needed for masks or if
+ CombineWithColor is true
+
pcpath
+
+
if not NULL, defines an optional clipping path
+
memory
+
+
defines the allocator to be used for allocating bookkeeping
+ information
+
pinfo
+
+
the implementation should return a pointer to its state
+ structure here
+
+
+
+begin_image is expected to allocate a structure for its
+bookkeeping needs, using the allocator defined by the memory parameter, and
+return it in *pinfo. begin_image should not assume that
+the structures in *pim, *prect, or
+*pdcolor will survive the call on
+begin_image (except for the color space in
+*pim->ColorSpace): it should copy any necessary parts of
+them into its own bookkeeping structure. It may, however, assume that
+*pis, *pcpath, and of course
+*memory will live at least until end_image
+is called.
+
+
+begin_image returns 0 normally, or 1 if the image does not
+need any data. In the latter case, begin_image does not
+allocate an enumeration structure.
+
This has the same function as begin_image, except
+
+
The image may be of any ImageType, not only
+image_type_simple (1);
+
+
The image format is included in the image structure, not supplied as a
+separate argument;
+
+
The optional pmat argument provides a matrix that
+substitutes for the one in the imager state;
+
+
For mask images, if pmat is not NULL
+and the color is pure, pis may be NULL.
+
+
+
+
+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.
+
+
+
int (*image_plane_data)(P4(gx_device *dev,
+gx_image_enum_common_t *info,
+const gx_image_plane_t *planes, int height))
+
This call provides more of the image source data: specifically,
+height rows, with Width pixels supplied for
+each row.
+
+
+The data for each row are packed big-endian within each byte, as for
+copy_color. The data_x (starting X position
+within the row) and raster (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 image_plane_data passes complete pixels: for example, for
+a chunky image with 24 bits per pixel, each call of
+image_plane_data passes 3N bytes of data (specifically,
+3 × Width × height).
+
+
+The interpretation of planes depends on the format member of
+the gs_image[_common]_t structure:
+
+
+
If the format is gs_image_format_chunky,
+planes[0].data points to data in "chunky" format, in which
+the components follow each other (for instance, RGBRGBRGB....)
+
+
If the format is gs_image_format_component_planar,
+planes[0 .. N-1].data point to data for the
+N components (for example, N=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, N=3, with 8-bit
+values in each plane of data.
+
+
If the format is gs_image_format_bit_planar,
+planes[0 .. N*B-1].data point to data for the
+N components of B bits each (for example,
+N=3 and 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.
+
+
+
+If, as a result of this call, image_plane_data has been called with all
+the data for the (sub-)image, it returns 1; otherwise, it returns 0 or an
+error code as usual.
+
+
+image_plane_data, unlike most other procedures that take bitmaps as
+arguments, does not require the data to be aligned in any way.
+
+
+Note that for some image types, different planes may have different
+numbers of bits per pixel, as defined in the plane_depths array.
+
+
+
+
int (*end_image)(P3(gx_device *dev, void *info,
+bool draw_last))
+
Finish processing an image, either because all data have been supplied
+or because the caller has decided to abandon this image.
+end_image may be called at any time after
+begin_image. It should free the info structure and any
+subsidiary structures. If draw_last is true, it should
+finish drawing any buffered lines of the image.
+
+
+
Notes
+
+
+While there will almost never be more than one image enumeration in
+progress -- that is, after a begin_image,
+end_image will almost always be called before the next
+begin_image -- 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.
+
+
+Note that if begin_[typed_]image 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
+gx_default_begin/end_image partway
+through.) [A later revision of this document may include an example here.]
+
+
Text
+
+
+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.
+
+
+Begin processing text, by creating a state structure and storing it in
+*ppte. The parameters of text_begin are as
+follows:
+
+
+
+
dev
+
+
The usual pointer to the device.
+
pis
+
+
A pointer to an imager state. All elements may be relevant,
+ depending on how the text is rendered.
+
text
+
+
A pointer to the structure that defines the text operation
+ and parameters. See gstext.h for details.
+
font
+
+
Defines the font for drawing.
+
path
+
+
Defines the path where the character outline will be appended
+ (if the text operation includes TEXT_DO_...PATH),
+ and whose current point indicates where drawing should occur
+ and will be updated by the string width (unless the text
+ operation includes TEXT_DO_NONE).
+
pdcolor
+
+
Defines the drawing color for the text. Only relevant if
+ the text operation includes TEXT_DO_DRAW.
+
pcpath
+
+
If not NULL, defines an optional clipping path.
+ Only relevant if the text operation includes
+ TEXT_DO_DRAW.
+
memory
+
+
Defines the allocator to be used for allocating bookkeeping
+ information.
+
ppte
+
+
The implementation should return a pointer to its state
+ structure here.
+
+
+
+text_begin must allocate a structure for its bookkeeping
+needs, using the allocator defined by the memory parameter,
+and return it in *ppte. text_begin may
+assume that the structures passed as parameters will survive until text
+processing is complete.
+
+
+Clients should not call the driver text_begin procedure
+directly. Instead, they should call gx_device_text_begin,
+which takes the same parameters and also initializes certain common elements
+of the text enumeration structure, or gs_text_begin, which
+takes many of the parameters from a graphics state structure. For details,
+see gstext.h.
+
+
+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 (TEXT_INTERVENE 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.
+
+
+
int gs_text_process(P1(gs_text_enum_t *pte))
+
Continue processing text. This procedure may return 0 or a negative
+error code as usual, or one of the following values (see
+gstext.h for details).
+
+
+
TEXT_PROCESS_RENDER
+
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.
+
TEXT_PROCESS_INTERVENE
+
The client has asked to intervene between characters.
+ This is used for cshow and kshow.
+
+
+
+
+
int gs_text_release(P2(gs_text_enum_t *pte,
+client_name_t cname))
Finish processing text and release
+all associated structures. Clients must call this procedure after
+gs_text_process returns 0 or an error, and may call it at
+any time.
+
+
+
+There are numerous other procedures that clients may call during text
+processing. See gstext.h for details.
+
+
Notes
+
+
+Note that unlike many other optional procedures, the default implementation
+of text_begin cannot simply return: like the default
+implementation of begin[_typed]_image, it must create and
+return an enumerator. Furthermore, the implementation of the
+process procedure (in the enumerator structure, called by
+gs_text_process) cannot simply return without doing
+anything, even if it doesn't want to draw anything on the output. See the
+comments in gxtext.h for details.
+
+
+Read a rectangle of bits back from the device. The params
+structure consists of:
+
+
+
options
+
+
the allowable formats for returning the data
+
data[32]
+
+
pointers to the returned data
+
x_offset
+
+
the X offset of the first returned pixel in data
+
raster
+
+
the distance between scan lines in the returned data
+
+
+
+options 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.
+
+
+
alignment
+
Specifies whether the returned data must be aligned in the normal
+manner for bitmaps, or whether unaligned data are acceptable.
+
+
pointer or copy
+
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.)
+
+
X offset
+
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 get_bits_rectangle operation itself).
+
+
raster
+
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).
+
+
format
+
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.
+
+
color space
+
Specifies whether the data are returned as native device pixels, or in
+a standard color space. Currently the only supported standard space is
+RGB.
+
+
standard component depth
+
Specifies the number of bits per component if the data are returned in
+the standard color space. (Native device pixels use
+dev->color_info.depth bits per pixel.)
+
+
alpha
+
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.
+
+
+
+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
+params[].options to indicate the form. The returned
+params[].options will normally have only one option set per
+group.
+
+
+For further details on params, see gxgetbit.h. For further details on
+options, see gxbitfmt.h.
+
+
+Define w = prect->q.x - prect->p.x, h
+= prect->q.y - prect->p.y. If the
+bits cannot be read back (for example, from a printer), return
+gs_error_unknownerror; if raster bytes is not enough space
+to hold offset_x + w pixels, or if the source rectangle
+goes outside the device dimensions (p.x < 0 || p.y < 0 || q.x >
+dev->width || q.y > dev->height),
+return gs_error_rangecheck; if any regions could not be
+read, return gs_error_ioerror if unpainted is
+NULL, otherwise the number of rectangles (see below);
+otherwise return 0.
+
+
+The caller supplies a buffer of raster × h
+bytes starting at data[0] for the returned data in chunky
+format, or N buffers of
+raster × h bytes starting at
+data[0] through
+data[N-1] in planar format
+where N 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
+x_offset 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 data[0] or
+data[0..N-1].
+
+
+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 NULL. If unread is
+NULL, return gs_error_ioerror; in this case,
+some bits may or may not have been read. If unread is not
+NULL, allocate (using dev->memory) and
+fill in a list of rectangles that could not be read, store the pointer to
+the list in *unread, 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.
+
+
+
+
int (*get_bits)(P4(gx_device *dev, int y,
+byte *data, byte **actual_data))
+[OPTIONAL]
+
Read scan line y of bits back from the device into the
+area starting at data. This call is functionally equivalent to
+
+
+with the returned value of
+params->data[0] stored in
+*actual_data, and will in fact be implemented this way if
+the device defines a get_bits_rectangle procedure and does
+not define one for get_bits. (If
+actual_data is NULL,
+GB_RETURN_POINTER is omitted from the options.)
+
+
+
Parameters
+
+
+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, NULL,
+array of integer, array of float, or arrays or dictionaries of mixed types.
+For example, the Name of a device is a string; the
+Margins of a device is an array of two floats. See
+gsparam.h for more details.
+
+
+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
+get_params and put_params procedures. If
+your device has parameters beyond those of a straightforward display or
+printer, we strongly advise using the _get_params and
+_put_params procedures in an existing device (for example,
+gdevcdj.c or gdevbit.c) as a model for your own code.
+
+
+
int (*get_params)(P2(gx_device *dev,
+gs_param_list *plist))[OPTIONAL]
+
Read the parameters of the device into the parameter list at
+plist, using the param_write_*
+macros or procedures defined in gsparam.h.
+
+
+
+
int (*get_hardware_params)(P2(gx_device *dev,
+gs_param_list *plist))[OPTIONAL]
+
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
+gs_param_list [param_requested(plist,
+key_name)]. This function may cause the asynchronous
+rendering pipeline (if enabled) to be drained, so it should be used
+sparingly.
+
+
+
+
int (*put_params)(P2(gx_device *dev,
+gs_param_list *plist))[OPTIONAL]
+
Set the parameters of the device from the parameter list at
+plist, using the param_read_*
+macros/procedures defined in gsparam.h. All
+put_params procedures must use a "two-phase commit"
+algorithm; see gsparam.h for details.
+
+
+
Default color rendering
+dictionary (CRD) parameters
+
+
+Drivers that want to provide one or more default CIE color rendering
+dictionaries (CRDs) can do so through get_params. To do
+this, they create the CRD in the usual way (normally using the
+gs_cie_render1_build and _initialize
+procedures defined in gscrd.h), and then write
+it as a parameter using param_write_cie_render1 defined in
+gscrdp.h. 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:
+
+
+
The TransformPQR element of the CRD must include a
+proc_name, and optionally proc_data. The
+proc_name 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, "bitTPQRDefault".
+
+
For each such named TransformPQR procedure, the driver's
+get_param procedure must provide a parameter of the same
+name. The parameter value must be a string whose bytes are the actual
+procedure address.
+
+
+
+For a complete example, see the bit_get_params procedure in
+gdevbit.c. Note that it is essential that
+the driver return the CRD or the procedure address only if specifically
+requested (param_requested(...) > 0); otherwise, errors
+will occur.
+
+
External fonts
+
+
+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 separate
+document. The link between the two is the driver procedure that
+supplies the font and text procedures:
+
+
Return a structure of procedures for handling external fonts and text
+display. A NULL value means that this driver doesn't
+provide this capability.
+
+
+
+For technical reasons, a second procedure is also needed:
+
+
Return the device that implements get_xfont_procs in a
+non-default way for this device, if any. Except for certain special
+internal devices, this is always the device argument.
+
According to the Adobe specifications, some devices are "page devices"
+and some are not. This procedure returns NULL if the
+device is not a page device, or the device itself if it is a page device.
+In the case of forwarding devices, get_page_device returns
+the underlying page device (or NULL if the underlying
+device is not a page device).
+
+
+
Miscellaneous
+
+
+
int (*get_band)(P3(gx_device *dev, int y,
+int *band_start))[OPTIONAL]
+
If the device is a band device, this procedure stores in
+*band_start 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.
+
+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/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 @@
+
+
+
+Fonts and font facilities supplied with Ghostscript
+
+
+
+
+
+
+
+
+
+
+
Fonts and font facilities supplied with Ghostscript
+Ghostscript is distributed with two kinds of files related to fonts:
+
+
+
the fonts themselves in individual files, and
+
a file "Fontmap" that defines for
+Ghostscript which file represents which font.
+
+
+
+Most of the font files supplied with Ghostscript have the extension
+.pfb, and a few have .pfa or
+.gsf. Each file defines one ordinary PostScript Type 1
+outline font which any PostScript language interpreter can use. Files with
+.pfa or .pfb extensions are also compatible
+with Adobe Type Manager (ATM) and with tools that don't include a full
+PostScript language interpreter; files with .gsf extension
+are incompatible with ATM and other tools. Ghostscript compiled with the
+"ttfont" option can also use TrueType fonts with the extension
+.ttf.
+
+
+When Ghostscript needs a font, it must have some way to know where to look
+for it: that's the purpose of the Fontmap file, which
+associates the names of fonts such as /Times-Roman
+with the names of font files, such as
+n021003l.pfb. Fontmap can also create
+aliases for font names, so that for instance,
+/NimbusNo9L-Regu means the same font as
+/Times-Roman.
+
+
+
+
Ghostscript's free fonts
+
+
+Two sets of free fonts are supplied for Ghostscript:
+
+
+
35 commercial-quality Type 1 basic PostScript fonts -- Times,
+Helvetica, Courier, Symbol, etc. -- contributed by URW++ Design and
+Development Incorporated, of Hamburg, Germany
+(http://www.urwpp.de/). Fontmap names
+them all.
+
+
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 documentation on Hershey fonts.
+
+
+
+
+
Font packages
+
System
+
+
File name
+
+
Contents
+
+
Types
+
+
Unix
+
+
gnu-gs-fonts-std-#.##.tar.gz
+
+
Basic
+
+
.afm,
+ .pfb, .pfm
+
+
gnu-gs-fonts-other-#.##.tar.gz
+
+
Miscellaneous
+
+
.afm,
+ .gsf, .pfa, .pfm
+
+
+
+
+
+"#.##" 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
+
+
+A free PostScript font for Traditional Chinese "KaiSu" in
+OCF format,
+originally provided courtesy of Jackson Technology,
+Ltd., Taiwan under the GPL and now distributed by the Taiwan NeXT User
+Group, is available from:
+
+
+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
+
+
+Hwan Design Inc. created Hangul TrueType fonts (including Hanja)
+and released under license similar to BSD.
+These fonts can be used as
+CID-keyed font via on-the-fly CIDFontType2 conversion. Refer
+CJK.htm
+
+
+N. Glonty and A. Samarin created in 1989 a Cyrillic extension of TeX's
+"Computer Modern" fonts, now freely available through the
+Comprehensive TeX Archive Network (CTAN),
+for instance at
+
+
+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
+
+
+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 gs_fonts.ps, which arranges to load
+fonts on demand using information from the font map. To preload all of the
+known fonts, invoke the procedure
+
+
+loadallfonts
+
+
+
+The file prfont.ps contains code to print a sample page of
+a font. Load this program by including it in the gs
+command line or by invoking
+
+
+(prfont.ps) run
+
+
+
+Then to produce a sampler of a particular font XYZ, invoke
+
+
+/XYZ DoFont
+
+
+
For example,
+
+
+/Times-Roman DoFont
+
+
+
+For more information about how Ghostscript loads fonts during execution,
+see here.
+
+
+
+
Platform fonts
+
+
+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.
+
+
+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
+
+
+Ghostscript needs the scalable outlines of any font mentioned in a
+document, and loads them from the disk (.pfa,
+.pfb, or .gsf
+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.
+
+
+
+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 "Times-Roman", may be known as
+"Times-Roman", "Times Roman",
+"Tms Rmn",
+"Times New Roman", or
+"TimesNewRoman". The name may even be completely
+different: the usual Helvetica-equivalent TrueType font is called
+"Arial". 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:
+
+
+
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.
+
+
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.
+
+
+
+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.
+
+
+
+
Adding your own fonts
+
+
+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.
+
+
+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
+.PFA or .PFB. Ghostscript can use these
+directly: you just need to make the entry in Fontmap.
+To add CID-keyed fonts, refer CJK.htm.
+
+
+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.
+
+
+
Converting BDF fonts
+
+
+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
+bdftops (Unix) or the command file
+bdftops.bat (DOS) converts a BDF file to a
+scalable outline using bdftops.ps . Run the
+shell command
+
+
+Then make an entry in Fontmap for the .gsf
+file (pzdr.gsf in the example) as
+described above.
+
+
+
+
For developers only
+
+
+The rest of this document is very unlikely to be of value to ordinary
+users.
+
+
Contents of fonts
+
+
+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.
+
+
Precompiling fonts
+
+
+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 .pfa or
+.pfb, and it also includes all the
+Ghostscript .gsf 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.
+
+
The utility for precompiling fonts is named
+font2c. Note that since
+font2c uses the PostScript language program
+font2c.ps, 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,
+
+
+font2c Times-Italic ptmri.c
+
+
+
+The first argument ("Times-Italic" above) is the font's
+name and the second ("ptmri.c") is the name of the
+resulting C file. You can use any file name you want, as long as it ends
+in ".c". It needn't be limited to eight characters unless
+your operating system requires this. If "XYZ.gsf" or
+"XYZ.pfa" is the font file's name in Fontmap,
+"XYZ.c" is a good choice for the C file.
+
+
+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 short identifiers in C. 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
+the VMS directions in the documentation on
+building Ghostscript, and ignore the rest of this section.
+
+
+Note that fonts are not supplied with Ghostscript in precompiled form, since
+those files are quite large and can easily be recreated using font2c. There is a makefile target to
+run font2c on all the fonts supplied with Ghostscript.
+Invoke it with
+
+
+make fonts_standard_c
+
+
+
Besides running font2c, 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
+overview of makefiles in the
+documentation on building Ghostscript for the list of makefiles for each
+platform. Find the definition of the FEATURE_DEVS macro in
+the makefile, which looks something like this:
+
+
+Next you must add the specific fonts to int.mak, 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.
+
+
+Suppose you want to compile the Kana fonts into the executable. First pick
+one of ccfonts10 through ccfonts15 as the
+place you will do this, say ccfonts10. Add your compiled
+font file names, for instance
+
+
+ccfonts10_=$(CFOBJ)fhirw.$(OBJ)
+
+
+
+(Note the underscore "_".) If this makes the line too long, use another
+line of the same form, for instance,
+
+
+ccfonts11_=$(CFOBJ)fkarw.$(OBJ)
+
+
+
+Just below the ccfonts10_= line is a line
+
+
+ccfonts10=
+
+
+
+(Note no underscore.) Add your own fonts to the end of this line, replacing
+dashes ("-") with underscores ("_") in the font names. For instance:
+
+
+ccfonts10=Calligraphic_Hiragana
+
+
+
+Again, if a line becomes too long, add another line of the same form, for
+instance,
+
+
+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
+
+
+Finally, run make to build an executable that includes the
+fonts you added. They are present in FontDirectory when
+Ghostscript starts up.
+
+
Precompiling fonts on platforms with identifier length limits
+
+
+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.
+
+
+Let N be the maximum number of significant characters in an
+identifier (typically 31). For each font whose name is longer than
+N-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
+N-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
+N-5 characters, but it's unnecessary.
+
+
+You must do two different things for fonts that require a short name.
+
+
+
You must supply the short name as a third argument to
+font2c. For example, to compile
+NewCenturySchlbk-BoldItalic using the short name
+pncbi,
+
+
+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,
+
+
+
Use
+
+
ccfonts12=pncbi
+
Rather than
+
+
ccfonts12=NewCenturySchlbk_BoldItalic
+
+
+
+
+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.
+
+
+
+
Font names and unique IDs
+
+
+If you create your own fonts and will use them only within your own
+organization, you should use UniqueID values between
+4000000 and 4999999, coded like this (see the tables of
+codes for font file names below):
+
+
+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.
+
+
+If you plan to distribute fonts, ask Adobe to assign you some UniqueIDs and
+also an XUID for your organization. Contact
+
+
+Unique ID Coordinator
+Adobe Developers Association
+Adobe Systems, Inc.
+345 Park Avenue
+San Jose, CA 95110-2704
++1-408-536-9000 telephone (ADA)
++1-408-536-6883 fax
+fontdev-person@adobe.com
+
+
+
+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
+bdftops program creates XUIDs of the form
+"[-X- 0 -U-]" where "-X-" is the
+organization XUID and "-U-" 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.)
+
+
+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 FTTWVVVE.gsf
+similarly to the construction for temporary UniqueIDs.
+
+
+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 "r" 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 TUGboat (the journal of the TeX Users Group).
+
+
Codes used to make font file names
+
+
+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.
+
+
+
+
+
Font foundry codes
+
ID
+
+
Foundry
+
+
b
+
+
Bitstream
+
f
+
+
Freely distributable and public-domain
+
hr
+
+
Hershey
+
n
+
+
IBM
+
p
+
+
Adobe ("p" for PostScript)
+
u
+
+
URW[++]
+
+
+
+
+
+
Typeface codes
+
ID
+
+
Name
+
+
Filename prefix
+
+
Source
+
+
08
+
+
Avant Garde
+
+
pag
+
+
Adobe
+
11
+
+
Bookman
+
+
pbk
+
+
Adobe
+
01
+
+
CharterBT
+
+
bch
+
+
Bitstream
+
02
+
+
Courier
+
+
ncr
+
+
IBM
+
03
+
+
Helvetica
+
+
phv
+
+
Adobe
+
04
+
+
New Century Schoolbook
+
+
pnc
+
+
Adobe
+
09
+
+
Palatino
+
+
ppl
+
+
Adobe
+
05
+
+
Symbol
+
+
psy
+
+
Adobe
+
06
+
+
Times
+
+
ptm
+
+
Adobe
+
--
+
+
Utopia
+
+
put
+
+
Adobe
+
07
+
+
Zapf Chancery
+
+
zc
+
+
public domain
+
10
+
+
Zapf Dingbats
+
+
pzd
+
+
Adobe
+
12
+
+
public domain Cyrillic
+
+
fcy
+
+
public domain
+
13
+
+
Kevin Hartig Hiragana
+
+
fhi
+
+
shareware
+
14
+
+
Kevin Hartig Katakana
+
+
fka
+
+
shareware
+
90
+
+
Hershey Gothic English
+
+
hrge
+
+
freeware
+
91
+
+
Hershey Gothic Italian
+
+
hrit
+
+
freeware
+
92
+
+
Hershey Gothic German
+
+
hrgr
+
+
freeware
+
93
+
+
Hershey Greek
+
+
hrgk
+
+
freeware
+
94
+
+
Hershey Plain
+
+
hrpl
+
+
freeware
+
95
+
+
Hershey Script
+
+
hrsc
+
+
freeware
+
96
+
+
Hershey Symbol
+
+
hrsy
+
+
freeware
+
+
+
+
+
+
Font weight codes
+
ID
+
+
Type
+
+
Filename
+
+
0
+
+
normal
+
+
r
+
1
+
+
bold
+
+
b
+
2
+
+
book
+
+
k
+
3
+
+
demi
+
+
d
+
4
+
+
light
+
+
l
+
+
Font variants
+
ID
+
+
Type
+
+
Filename
+
+
0
+
+
normal
+
+
r (omitted when weight is normal)
+
1
+
+
italic
+
+
i
+
2
+
+
oblique
+
+
o
+
3
+
+
script, handwritten, swash
+
+
w
+
+
Expansion
+
ID
+
+
Type
+
+
Filename
+
+
0
+
+
normal
+
+
r (omitted when weight and variant are normal)
+
1
+
+
narrow
+
+
n
+
+
+
+
+
Using Ghostscript fonts on X Windows displays
+
+
+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 "fonts.dir" and
+"fonts.scale". There are two main methods to configure
+your display to use these files.
+
+
+
With xset any user can add a
+new directory to the font search path for the duration of a session.
+
+Users without root access can add the Ghostscript font directories to the
+font search path using xset. 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 xset should be added to
+the user's ".xsession" or ".xinitrc"
+startup script to make the fonts available at each login.
+
+
+To add a new font directory, invoke xset like this:
+
+
+xset fp+{directory}
+
+
+
+where {directory} 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
+
+
+/usr/local/Ghostscript/share/fonts
+
+
+
Permanent installation
+
+
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.
+
+
Configuring the xfs font server
+
+
+An X display server can obtain its font resources from a dedicated X font
+server. xfs 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
+
+
+or some similar name. You can also use xfs's
+"-config" command-line option to specify the location of
+the configuration file.
+
+
+The configuration file designates a list ("catalog") of directories, each
+of which contains fonts and a font mapping database (the file
+"fonts.dir"). This list is specified with the
+"catalogue=" 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:
+
+
+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:
+
+
+kill -HUP{pid}
+
+
+
+where {pid} is the font server process's numeric process
+ID, as obtained with the "ps" 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!
+
+
Xfree86 display servers
+
+
+With the family of Xfree86 display servers, adding a new font directory
+permanently requires editing the "/etc/XF86Config" setup
+file to add a new "FontPath" to the "Files"
+section:
+
+
+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 xdm, you may have to kill
+it, because it is usually reset only between successive sessions.
+
+
+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/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 @@
+
+
+
+People who have helped with Ghostscript
+
+
+
+
+
+
+
+
+
+
+
+Many people have contributed to the development of Ghostscript. In the
+new-user documentation 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:
+
+
+
+
Hitoshi Aida
+
for help with the SunView driver
+
Pierre Arnaud
+
for bug reports and fixes
+
Juan Manuel Acosta
+
for LN03+ driver and fixes of arc and circle rendering on SunOS
+
William Bader
+
for several drivers and bug reports
+
Alan Barclay
+
for the RGB TIFF drivers
+
Nelson H. F. Beebe
+
for testing on a wide variety of Unix architectures, and for
+ the multi-architecture makefile
+
Karl Berry and Kathy Hargreaves
+
for helping create the fonts originally distributed with
+ Ghostscript
+
James W. Birdsall
+
for the IBM ProPrinter driver
+
Andrew Birrell
+
for a challenging application
+
Jan Bottorff
+
for help with the Microsoft Windows driver
+
Tom Brosnan
+
for the Desqview/X port
+
Philip Brown
+
for the LaserJet IIID duplex additions
+
Tobias Burnus
+
for many challenging bug reports
+
George Cameron
+
for DeskJet 500C and 550C drivers
+
Maurice Castro
+
a collaborator of Russell Lang's
+
Jeff Chua
+
for the idea and first implementation of
+ ReopenPerPage
+
Phil Conrad
+
for originating the PPM utilities and the PCX and GIF drivers,
+ and lots of bug reports
+
Michel Dagenais
+
for major help with the DeskJet driver
+
John Desrosiers
+
for the final work on the Microsoft Visual C++ makefiles,
+ and for enhancements to the memory manager
+
Jim Dunham
+
for the OpenVMS makefile
+
Gershon Elber
+
for improvements to the BGI driver
+
Fritz Elfert
+
for the Unix file enumeration routine
+
George Ferguson
+
for some added man pages
+
Mike Ferrara
+
for help with the LaserJet driver and HP-UX
+
Andy Fyfe
+
for the BJ200 driver modifications to the BJ10e driver, and for
+ the 3B1 driver
+
Tim Gallivan
+
for a port to the Atari ST
+
J. Greely
+
for help with the PostScript-to-ASCII filter
+
Gintautas Grigelionis
+
for a set of XBM/XPM icons
+
Paul Haeberli
+
for the ideas behind better color selection and trapezoid fill
+ algorithms
+
Karl Hakimian
+
for the Tek 4693d drivers
+
Richard Hesketh
+
for GSPreview
+
Gunther Hess
+
for the unified inkjet printer driver
+
Thomas Hiller
+
for the Trident TVGA driver
+
Frans van Hoesel
+
for improvements to the DeskJet driver
+
Berthold K. P. Horn
+
for a better spot halftone screen
+
B. Jackowski and GUST (the Polish TeX users group)
+
for improvements to the TrueType font reader, and for the
+ tiff2ps and ttf2pf utilities
+
Jouk Jansen
+
for motivating, testing, and providing some of the script
+ file for the MMK/MMS build procedure
+
Earl Johnson
+
for the motivation for the ps2ascii utility
+
Ray Johnston
+
for a first draft of FAKEFONTS and EPSF recognition, and for
+ many small bug fixes
+
Larry Jones
+
for simplifying and improving the portability of the pthreads
+ interface code
+
Pete Kaiser
+
for beta testing, several versions of the OSF/1 font map, and
+ an HTML version of the documentation
+
Norio Katayama
+
for the first implementation of composite fonts, and for
+ testing and helping debug the later implementation
+
Alfred Kayser
+
for a DeskJet 500C driver and beta testing
+
Richard Keeney
+
for help with the SunView driver
+
Markku Koppinen
+
for a better circle-to-curve algorithm
+
Eleftherios Koutsofios
+
for help with the SunView driver
+
Tom Lane
+
for major help with adapting and integrating the IJG code
+
Sam Leffler
+
for the original TIFF G3 driver, and for finding some subtle
+ bugs in the CCITTFaxEncode filter
+
Jonathan Luckey
+
for the high-resolution Imagewriter drivers
+
Ken Lunde
+
for providing pointers to freely available CJKV font-related
+ resource
+
Ian MacPhedran
+
for a sixel driver
+
Jim Mayer
+
for help with the DeskJet and LaserJet drivers
+
Paul McJones
+
for help in identifying a variety of bugs
+
William L. Menninger
+
for a version of the PC display state save/restore code
+
Richard Mlynarik
+
for a nearly overwhelming volume of improvements and
+ suggestions
+
Ulrich Mueller
+
for the LN03 driver
+
Daniel Newman
+
for major help with VMS and the CCITTFax filters
+
Bjorn S. Nilsson
+
for major help with VMS, including many updates of the DCL
+ build scripts and creating the VMS help file
+
Roque Donizete de Oliveira
+
for testing and debugging, and a "man" page
+
Gerbert Orasche
+
for some minor bug fixes
+
Marc Paquette
+
for the original PaintJet driver
+
Hal Peterson
+
for major help with BDF fonts
+
Andy Piper
+
for the first draft of the WindowID feature
+
Martin Pirker
+
for fixing two major problems with TrueType fonts
+
Tom Quinn
+
for the Canon LBP-8II driver
+
Matthias Rabe
+
for work on an OS/2 port
+
Jerry Roylance
+
for help with statusdict
+
Dave St. Clair
+
for the color Epson/Fujitsu driver
+
Jan Sanislo
+
for two subtle but vital fixes
+
Clemens Schrimpe
+
for help with accented characters
+
Scott Schwartz
+
for improvements to gslp.ps
+
Mike Smolenski
+
for the Sony drivers
+
Snoopy
+
for major help with Hershey fonts, and many other contributions
+
Karsten Spang
+
for the Tektronix 4695/4696 driver
+
Andreas Stolcke
+
for help with the SunView driver
+
Hans-Gerd Straeter
+
for finding many obscure bugs
+
Christoph Strozyk
+
for getting the URW fonts made available
+
Alexey Subbotin
+
for contributing an interface to GNU readline, and for the
+ rewritten implementation of ==
+
Michael Sweet
+
for help with the high-density Epson driver
+
Guenther Thomsen
+
for the mid-density Epson driver
+
Gregg Townsend
+
for the low-resolution dithering algorithm
+
Christian Tschudin
+
for fixes to the virtual memory package, and for the original
+ BubbleJet driver
+
Stephen Turnbull
+
for help with the DesqView/X port
+
Jos Vos
+
for the original PBM/PGM/PPM driver, and for much beta testing
+
Renze de Waal
+
for an improvement to the "SAFER" feature
+
Allan Wax
+
for the AT&T 6300 modification to the BGI driver
+
Mark Wedel
+
for the Apple DMP driver
+
David Wexelblat
+
for the high-resolution 9-pin Epson driver
+
George N. White III
+
for testing the PDF writer and contributing documentation
+
Elizabeth Zwicky
+
for some very challenging examples
+
+
+
+
+The following people have also helped out by beta testing, by reporting
+bugs and/or fixes, or in other ways:
+
+
+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
+
+
+
+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 raph@artofcode.com, and you will be
+properly acknowledged in the next release.
+
+
+
+
+
+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/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 @@
+
+
+
+Hershey fonts for Ghostscript
+
+
+
+
+
+
+
+
+
+
+
Hershey fonts for Ghostscript
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+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
+ ( <x,y> 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&right numbers
+1 byte - x value of left margin
+1 byte - x value of right margin
+(length*2)-2 bytes - stroke data
+
+left&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.
+
+
+
+
+
+
+
+
+
+Public Domain.
+Distributed with Ghostscript 6.50, November 2000
+
+
+
+
+
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 @@
+
+
+
+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:
+
+
+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).
+
+
+
Interpreter
+
+
+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 <return>, 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.
+
+
+
Fonts
+
+
+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.
+
+
+
Library
+
+
+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.
+
+
+
Usage procedures
+
+
+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.
+
+
+
+
+
+
Version 1.2 (2/22/89)
+
+
Interpreter
+
+
+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.
+
+
+
Library
+
+
+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).
+
+
+
Usage procedures
+
+
+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.
+
+
+
+
+
+
Version 1.1 (2/12/89)
+
+
Interpreter
+
+
+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.)
+
+
+
Initialization (ghost.ps, gfonts.ps)
+
+
+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.
+
+
+
Library
+
+
+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.
+
+
+
Usage procedures
+
+
+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&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'.
+
+
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/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 @@
+
+
+
+History of Ghostscript versions 1.n
+
+
+
+
+
+
+
+
+
+
+
+
+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:
+
+
+This is the last 2.9 beta, since 3.0 will be released on July 31.
+
+
Documentation
+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.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Drivers
+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.
+
+
Platforms
+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).
+
+
Fonts
+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.
+
+
Interpreter
+Fixes bugs:
+ - The scanner became confused if the literal names /<< or />>
+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).
+
+
Streams
+Fixes bugs:
+ - Hex decoding (ASCIIHexDecode stream and <> 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.
+
+
Library
+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).
+
+
+
+
Version 2.9.9-beta (6/23/94)
+
+
Documentation
+Puts a pointer to devs.mak in the section of use.doc that talks about
+MS-DOS displays.
+
+
Platforms
+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.
+
+
+Fixes bugs:
+ - stream_compact used memcpy even though the source and destination
+might overlap.
+ - filter applied to a closed file could cause a crash.
+
+
Library
+Fixes bugs:
+ - putdeviceparams to a printer didn't close and reopen the device
+if only the page size or resolution was changed.
+
+
+
+
Version 2.9.8 (6/20/94)
+
+
+This is the first version that claims to be a full Level 2
+implementation.
+It was distributed to satisfy a contractual requirement.
+
+
+
Documentation
+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.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Drivers
+Fixes bugs:
+ - The TIFF drivers didn't byte-align each scan line.
+ - gdevtfax.c applied & 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.)
+
+
Platforms
+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).
+
+
Fonts
+Makes the font substitution algorithm somewhat more intelligent.
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
Version 2.9.7-beta (6/5/94)
+
+
+Yet another pre-3.0 beta. The main features are a fairly reliable
+garbage
+collector, and function prototypes almost everywhere they are needed.
+
+
Documentation
+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).
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Drivers
+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.
+
+
Platforms
+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.
+
+
Fonts
+
+Changes the standard Fontmap to use the URW contributed fonts as
+work-alikes for Helvetica and Times Roman.
+
+
Interpreter
+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).
+
+
Library
+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.
+
+
+
+
Version 2.9.6-beta (5/23/94, not
+distributed to the public)
+
+
+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.
+
+
Documentation
+
+
+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.
+
+
+
Procedures
+
+
+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.
+
+
Utilities
+Fixes bugs:
+ - The viewgif.ps utility didn't handle local color tables.
+
+Updates ps2ai.ps to version 1.81.
+
+
Drivers
+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.
+
+
Platforms
+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.
+
+
Fonts
+
+Adds a fontmap suitable for use with Adobe Type Basics.
+
+
Interpreter
+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.
+
+
Library
+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 & 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.
+
+
+
+
Version 2.9.5-beta (4/11/94)
+
+
+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.
+
+
Documentation
+
+
+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.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Drivers
+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).
+
+
Platforms
+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.
+
+
Interpreter
+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 >.
+ - 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.)
+
+
Library
+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.
+
+
+
+
Version 2.9.4-beta (2/19/94)
+
+
Procedures
+
+
+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.
+
+
Utilities
+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.
+
+
Drivers
+
+Adds new drivers:
+ - A user-contributed driver for Imagen Impress laser printers.
+ - A user-contributed driver for the DEC LA75plus printer.
+
+
Platforms
+
+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.
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
Version 2.9.3-beta (1/19/94)
+
+
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.
+
+
Documentation
+Fixes bugs:
+ - The description of psview and xpsview was incorrect.
+
+
Procedures
+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.)
+
+
Drivers
+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.
+
+
Platforms
+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.
+
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
Version 2.9.2-beta (1/2/94)
+
+
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.
+
+
Documentation
+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.
+
+
+
+
Utilities
+Fixes bugs:
+ - viewgif.ps did not work with interlaced images.
+ - font2c.ps omitted gsmemory.h from the #include list in compiled
+fonts.
+
+
Drivers
+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.
+
+
Platforms
+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.
+
+
Fonts
+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.
+
+
Interpreter
+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.)
+
+
Library
+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.
+
+
+
+
Version 2.9.1-beta (12/7/93)
+
+
This version was distributed only to beta testers.
+
+
Utilities
+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.
+
+
Interpreter
+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.
+
+
Library
+Fixes bugs:
+ - setdash produced inverted output if the pattern had an odd
+number of elements and the offset O had the property that L <= O mod
+2*L, where L was the sum of the pattern elements.
+
+
+
+
Version 2.9-beta (12/6/93)
+
+
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.
+
+
Documentation
+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.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Drivers
+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.
+
+
Platforms
+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 <dirent.h>.
+ - 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.
+
+
Interpreter
+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 << 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.
+
+
Library
+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.
+
+
+
+
+
+
Version 2.8-beta (11/10/93)
+
+
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).
+
+
Documentation
+
+
+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.
+
+
Procedures
+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.
+
+
Utilities
+Fixes bugs:
+ - the ps2image utility didn't put a %! on the first line of the
+output.
+
+
Drivers
+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).
+
+
Platforms
+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.
+
+
Fonts
+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).
+
+
Interpreter
+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.
+
+
Library
+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).
+
+
+
+
+
+
Version 2.7.2-beta (10/11/93)
+
+
This version was distributed only to alpha testers.
+
+
+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.
+
+
Library
+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.
+
+
+
+
Version 2.7.1-beta (10/4/93, not distributed to the public)
+
+
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.
+
+
Documentation
+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.
+
+
Utilities
+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.
+
+
Drivers
+Fixes bugs:
+ - The PCL drivers sent a printer reset (<ESC>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.
+
+
Platforms
+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.
+
+
Fonts
+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.
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
Version 2.7-beta (9/20/93, not distributed to the public)
+
+
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.
+
+
Documentation
+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.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Drivers
+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.
+
+
Platforms
+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.
+
+
Fonts
+
+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.
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
+
+
Version 2.6.1 (5/28/93)
+
+
This is primarily a bug-fix release for 2.6, with a couple of minor
+additions.
+
+
Documentation
+
+Adds proper `man' pages ansi2knr.1 and gs.1.
+
+
Procedures
+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 <sys/types.h>, which is needed for
+time_t on some systems.
+ - malloc_.h used <malloc.h> rather than <stdlib.h> on
+NeXTStep systems.
+
+Changes the configuration procedure to use a C program rather than
+complex shell scripts.
+
+
Utilities
+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.
+
+
Drivers
+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.
+
+
Platforms
+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<<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.
+
+
Fonts
+
+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).
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
Version 2.6 (5/9/93)
+
+
The main new feature in this release is the ability to use platform
+fonts. It also adds many more Level 2 PostScript facilities.
+
+
Documentation
+
+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).
+
+
Procedures
+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 <file> <destfile>
+rather than install <file> <directory>.
+
+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.
+
+
Utilities
+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 <page#>: replaces the former -P switch.
+ --last-page <page#>: replaces the former -Q switch.
+ --(heading|footing)-(left|center|right) <string>: define
+ headers/footers. # inserts the page number.
+ --margin-(top|bottom|left|right) <inches>: define margins.
+ --spacing <n>: 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.
+
+
Platforms
+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.
+
+
Fonts
+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.
+
+
Drivers
+Fixes bugs:
+ - The !@*&^%#@$ PCL drivers *still* didn't do the right thing
+about vertical spacing: the <ESC>*p+<n>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->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&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&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.
+
+
Interpreter
+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 <ctype.h> 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).
+ - <~ ~> 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.
+
+
Library
+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.
+
+
+
+
+
+
Version 2.5.2 (9/20/92)
+
+
This is yet another bug fix release to (finally!) get the PCL drivers
+working again.
+
+
Procedures
+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.
+
+
+
+
Utilities
+Fixes bugs:
+ - font2c produced invalid output for any font that didn't use
+StandardEncoding or ISOLatin1Encoding.
+
+
+
+
Platforms
+Fixes bugs:
+ - gp_sysv.c required an extern long timezone.
+
+
+
+
Drivers
+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.
+
+
+
+
Interpreter
+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.
+
+
Library
+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->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.
+
+
+
+
Version 2.5.1 (9/11/92)
+
+
This is the usual bug fix re-release.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Platforms
+
+
+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.
+
+
Fonts
+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.
+
+
Drivers
+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&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.
+
+
Interpreter
+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.
+
+
Library
+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.)
+
+
+
+
Version 2.5 (8/18/92)
+
+
This version adds Type 1 hinting, CCITTFax encoding and decoding, and
+Microsoft Windows support, as well as the usual minor improvements
+and bug fixes.
+
+
Procedures
+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=<string> replaces -sOUTPUTFILE (which is still
+recognized) for setting the output file or pipe for the default
+(printer) device.
+ -sPAPERSIZE=<sizename> initializes the paper size.
+ -dBufferSpace=<number> 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.
+
+
+
+
Utilities
+
+
Platforms
+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.
+
+
Fonts
+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.
+
+
Drivers
+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.
+
+
Interpreter
+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.
+
+
Library
+Fixes bugs:
+ - In the VMS environment, string_.h used its own prototypes
+for the str... and mem... functions instead of <string.h>
+ - 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.
+
+
+
+
+
+
Version 2.4.2 (5/8/92)
+
+
+This is another quick release. It finally fixes rotated halftone
+screens, and cleans up a few minor problems from 2.4.1.
+
+
+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.
+
+
Procedures
+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.
+
+
Utilities
+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.
+
+
Platforms
+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.
+
+
Fonts
+
+
+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.
+
+
Drivers
+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.
+
+
Interpreter
+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.)
+
+
Library
+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.
+
+
+
+
Version 2.4.1 (4/21/92)
+
+
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.
+
+
Procedures
+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.
+
+
Utilities
+Fixes bugs:
+ - The palette for pstoppm in 8-bit mode didn't contain all 8
+primary colors.
+ - font2c used just values_ to mean &values_[0]; some compilers
+couldn't handle this.
+
+Makes font2c insert `const' in many appropriate places.
+
+
Drivers
+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 -> \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 <esc>*b#Y rather than <esc>*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.
+
+
Fonts
+Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
Version 2.4 (3/25/92)
+
+
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.
+
+
Procedures
+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<name> defined <name> 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.
+
+
Utilities
+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.
+
+
Drivers
+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.
+
+
Fonts
+
+
+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 (!).
+
+
Interpreter
+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<res> and -r<xres>x<yres> 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 << and >> 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.
+
+
Library
+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.
+
+
+
+
Version 2.3 (8/28/91)
+
+
This is a minor release to fix two bugs and add the PaintJet driver,
+which
+didn't make it into 2.2.
+
+
Utilities
+Changes the pstoppm utility so it counts pages correctly even in the
+presence of arbitrary saves and restores.
+
+
Drivers
+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.)
+
+
+
+
+
+
Version 2.2 (6/1/91)
+
+
+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.
+
+
Procedures
+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=<device>,
+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.
+
+
+
+
Drivers
+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.
+
+
+
+
Fonts
+
+
+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.
+
+
Utilities
+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.
+
+
Interpreter
+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<width>x<height>. 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.
+
+
Library
+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.
+
+
+
+
+
+
Version 2.1.1 (1/15/91)
+
+
This is a sub-release distributed to fix a few early bugs in 2.1,
+just in
+time for the new GNU master tape.
+
+
Build procedures
+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<version> rather than simply gs, e.g., gs211.
+
+
Interpreter
+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.
+
+
Drivers
+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.
+
+
Library
+Changes the computation of penum->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.
+
+
+
Version 2.1 (12/31/90)
+
+
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.
+
+
Build procedures
+Changes the separator for multiple directories in MS-DOS from ';' to '|',
+since there is no way to include a ';' in a command line.
+
+Adds <dir>/fonts to the default search path, where <dir> 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.
+
+
+
+
Drivers
+
+
+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.
+
+
Fonts
+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.
+
+
Interpreter
+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.
+
+
Library
+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.
+
+
+
+
+
+
Version 2.0 (9/12/90)
+
+
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.
+
+
Miscellaneous
+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.
+
+
Drivers
+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.
+
+
Build procedures
+Changes the tar file so it puts everything in a directory called gs.
+
+Removes the -ansi switch for gcc (this was causing problems with <math.h>
+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.
+
+
Interpreter
+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 <return>.
+
+Changes the prompt so that it says
+ GS>
+if the operand stack is empty, or
+ GS<n>
+if there are n > 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 >> 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.
+
+
Library
+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 >> operator doesn't sign-extend
+negative numbers. (This has not been tested.)
+
+
+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/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 @@
+
+
+
+History of Ghostscript versions 3.n
+
+
+
+
+
+
+
+
+
+
+
+
+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:
+
+
+This contains a few last-minute patches before the release.
+
+
Procedures
+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)
+
+
Drivers
+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)
+
+
+
+
Version 3.70 (limited) (6/23/96)
+
+
+This is the candidate fileset for 4.0. Aside from one optimization
+for the PDF writer, the only changes are bug fixes.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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.
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 3.69 (limited) (6/14/96)
+
+
+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).
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.68 patch 4 (5/23/96)
+
+
+More minor bug fixes, mostly related to the MS Windows implementation.
+
+
Documentation
+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)
+
+
Procedures
+
+Fixes bugs:
+ - A command line exceeded the MS-DOS 120 character limit.
+(devs.mak)
+
+A file was accidentally omitted from the fileset. (wmakebat.bat)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - In DEC C, <time.h> 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)
+
+
Fonts
+
+Updates more Fontmaps to include the new URW++ fonts. (Fontmap.OS2,
+Fontmap.ATM)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.68 patch 3 (5/17/96)
+
+
+More bug fixes during the beta test period. AccurateScreens now works
+properly.
+
+
Procedures
+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)
+
+
Utilities
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs in the Windows platform:
+ - One had to type "quit" twice to exit. (dwdll.h, dwdll.cpp)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.68 patch 2 (5/13/96)
+
+
+This is another set of patches for the next general release.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+Updates the interpreter for the split in the gstate API. (igstate.h)
+
+
+
+Fixes bugs:
+ - There was a minor typo (& for &&) 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)
+
+
+
+
Version 3.68 patch 1 (5/10/96)
+
+
+This is the first bug fix (patch) incremental release for the next
+general release.
+
+
Procedures
+Fixes bugs:
+ - Many Windows-specific files were omitted from the previous
+fileset: dw*.rc, dw*.cpp.
+
+
+
+
Version 3.68 (limited) (5/9/96)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes bugs:
+ - There was an extra 'show' in one file. (align.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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') => imainarg.c
+ gsmain.c => 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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.67 (limited) (4/12/96)
+
+
+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.
+
+
Documentation
+Fixes bugs:
+ - A definition & 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)
+
+
Procedures
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.66 (limited) (4/8/96)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+Fixes bugs:
+ - The scanner accepted /[, /], /<<, and />> 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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.65 (limited) (3/9/96)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.64 (limited, incremental) (1/27/96)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.63 (limited, incremental) (1/14/96)
+
+
+This release has the usual collection of bug fixes, and two significant
+additions: AccurateScreens, and the first draft of a PostScript->PDF
+converter ("distiller").
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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 <string.h>. (gs16spl.c)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+Speeds up image interpolation a little. Much more could be still be done.
+(siscale.c)
+
+
Library
+
+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)
+
+
+
+
Version 3.62 (limited, incremental) (12/26/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+Fixes bugs:
+ - The debugging code for checking the sorting of line lists didn't
+check for an empty list. (gxfill.c)
+
+
+
+
Version 3.61 (limited) (12/10/95)
+
+
+This limited release fixes a few bugs (including a couple that significantly
+affected character quality) and also includes some substantial performance
+improvements.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+Fixes bugs:
+ - An #include <memory_.h> 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)
+
+
Interpreter (PDF)
+
+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)
+
+
+
+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)
+
+
+
+
Version 3.60 (limited) (11/20/95)
+
+
+(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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Adds Heavy as a synonym for Bold when doing intelligent font substitution.
+(gs_fonts.ps)
+
+
Interpreter
+
+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))
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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, <string.h> 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)
+
+
+
+
+
+
Version 3.53 (1/10/96)
+
+
+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.
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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 <string.h>. (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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.52 (limited) (10/6/95)
+
+
+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. ******
+
+
Procedures
+Fixes bugs:
+ - The fileset included a meaningless empty file. (acctest.ps)
+ *** The definition of pdfread.dev did an ADDMOD, not a SETMOD.
+(int.mak)
+
+
Interpreter
+
+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 (>>) 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)
+
+
Library
+
+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)
+
+
+
+
Version 3.51 (9/27/95)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes bugs:
+ - align.ps was omitted from the fileset. (psfiles.doc, align.ps,
+unix-end.mak)
+
+
Drivers
+
+Fixes bugs:
+ - A driver had some \s in formal parameter lists. (gdevcdj.c)
+ - A driver had some improper &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)
+
+
Platforms
+
+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)
+
+
+
+Fixes bugs:
+ - The ProcSet relied on the presence of NullFont. (gs_pdf.ps)
+
+
Library
+
+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)
+
+
+
+
Version 3.50 (limited) (9/24/95)
+
+
+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.
+
+The following issues have been postponed to an unspecified future release:
+
+
- Filling areas often writes pixels twice, causing incorrect
+output
+with certain unusual RasterOp values. [1.814]
+
- The tar.gz archives should include a subdirectory like
+gs-3.46/ in
+the file names.
+
- The CCITTFaxDecode filter should skip initial junk if
+EndOfLine =
+true. [1844 8/24/95, NRE]
+
+
+
Procedures
+Fixes bugs:
+ - The name of the new 24-bit TIFF driver was incorrect in one place.
+(vms.mak)
+
+
Utilities
+
+Adds a new utility to put a caption in a box at the bottom of each page.
+(caption.ps)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 3.49 (limited) (9/20/95)
+
+
+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.
+
+
Documentation
+Fixes bugs:
+ - make.doc didn't mention that the .def files are needed to build a
+MS Windows executable. (make.doc)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The VMS build scripts were out of sync with the makefiles (again).
+(modules.lis, vms.mak)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.48 (limited) (9/17/95)
+
+
+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.
+
+
+******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.
+
+
Documentation
+Fixes bugs:
+ - Alan Barclay's contact information was wrong. (README)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - Substituted color spaces caused an error. (gs_pdf.ps,
+pdf_draw.ps)
+
+
Library
+
+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)
+
+
+
+
Version 3.47 (limited) (9/14/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - Readers confused the internal pdfrun procedure with the public
+runpdf procedure. (pdf_*.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.46 (limited) (9/4/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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<name> 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)
+
+
Utilities
+
+Adds a utility for emulating the CIE color mapping algorithms. (docie.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.45 (limited) (8/27/95)
+
+
+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).
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes bugs:
+ - The ps2ascii script could fail to delete temporary files in case
+of an abnormal exit. (ps2ascii)
+
+
Drivers
+
+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->PageSize in drivers. (gdevl256.c,
+gdevvglb.c)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.44 (limited) (8/21/95)
+
+
+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!
+
+
Documentation
+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)
+
+
Procedures
+
+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 <some-program>$(XE) must
+be replaced by $(<SOME-PROGRAM>_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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.43 (limited) (8/10/95)
+
+
+Fixes a few more minor bugs, and changes FEATURE selection back to
+essentially the way it was before 3.41.
+
+
Documentation
+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)
+
+
Procedures
+
+Fixes bugs:
+ - The auxiliary programs wouldn't compile with ANSI compilers that
+don't accept K&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)
+
+
Platforms
+
+Fixes bugs:
+ - An extern for exit() (in <stdlib.h>) was omitted. (gp_vms.c)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.42 (limited) (8/2/95)
+
+
+Fixes a few significant problems in 3.41, and brings the DLL code up to
+date.
+
+
Documentation
+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)
+
+
Procedures
+
+Changes the build date printout to YYYY-MM-DD. (gs_init.ps)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Fixes bugs:
+ - A procedure was declared private inconsistently. (siscale.c)
+
+
Library
+
+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)
+
+
+
+
Version 3.41 (limited) (7/27/95)
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Updates the MS Windows DLL code to export the new, suspendable run_string
+interface. (gsdll.h, gsdll.c, dll.doc)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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=<fontname> 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)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - .stderr was used but is no longer defined. (pdf_base.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.40 (limited) (6/28/95)
+
+
+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).
+
+
Documentation
+Fixes bugs:
+ - The FTP location of the EMX DLLs was incorrect. (use.doc)
+
+
Procedures
+
+Fixes bugs:
+ - A couple of build rules for IJG v6 were omitted. (jpeg.mak)
+
+
Utilities
+
+Fixes bugs:
+ - prfont.ps wouldn't print more than 128 unencoded characters.
+(prfont.ps)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Changes the DCTEncode filter to return an error if it wasn't supplied enough
+data before being closed. (sdcte.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 3.39 (limited) (6/24/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The VMS build scripts had gotten out of sync (again). (vms*.mak,
+modules.lis)
+
+
Fonts
+
+Makes the FONTPATH directory scanner accept fonts that begin with
+%!PS-AdobeFont or %!FontType1 with no following `-'. (gs_fonts.ps)
+
+
Interpreter
+
+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 <= -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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.38 (limited) (6/18/95)
+
+
+This release incorporates several customer-requested enhancements (cleaner
+separation of the graphics library from the interpreter, option for >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.
+
+
Documentation
+Fixes bugs:
+ - gx_bitmap had not been updated to gx_tile_bitmap.
+(drivers.doc)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Replaces the mergeini.ps program with an equivalent (actually slightly
+better) version written in C. (gs.mak, *.mak, psfiles.doc, use.doc,
+geninit.c)
+
+
Drivers
+
+Fixes bugs:
+ - The color DeskJet drivers wouldn't compile with a K&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)
+
+
Platforms
+
+Fixes bugs:
+ - There were some problems associated with printing in 32-bit
+Windows environments. (gp_mswin.c)
+ - The IBM RS/6000 needs both <time.h> and <sys/time.h>. (time_.h)
+
+Adds the PDF interpreter to the standard MS Windows configuration.
+(bcwin.mak)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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<->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)
+
+
+
+
Version 3.37 (limited) (5/11/95)
+
+
+Another bug fix release distributed only to customers.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
+
+Fixes bugs:
+ - Some buggy Type 1 fonts confused the Type 1 font reader.
+(gs_fonts.ps, gs_type1.ps, pdf_font.ps)
+
+
Interpreter (PostScript)
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
+
+
Version 3.36 (limited) (5/4/95)
+
+
+This is a limited-distribution release for distributing bug fixes to a few
+customers.
+
+
Documentation
+Adds some environment variables to the man page. (gs.1)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+Modifies the character oversampling algorithms to help prevent dropouts.
+(gsbitops.c, gschar.c)
+
+
+
+
Version 3.35 (internal) (5/2/95)
+
+
+This is another internal "snapshot" version.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.34 (internal) (4/18/95)
+
+
+This is a "snapshot" version made for internal purposes. It was never
+released to anyone.
+
+
Documentation
+Updates commprod.doc to be fully consistent with the AGFPL. (commprod.doc)
+
+
Procedures
+
+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)
+
+
Interpreter
+
+Restructures the CIE caches to move much more of the computation from color
+mapping time to cache loading time. (zcie.c)
+
+
Library
+
+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)
+
+
+
+
Version 3.33 (4/13/95)
+
+
+A few more last-minute bug fixes. This is, finally, the first public
+release since 3.12.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+Fixes bugs:
+ - The Stylus Color driver had an incorrect type name. (gdevstc.c)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Improves the font substitution algorithm to take the face name into account
+in more cases. (gs_fonts.ps)
+
+
Library
+
+Fixes bugs:
+ - Unrotated black-and-white bitmaps with an inverted device X axis
+were displaced in X. (gsimage1.c)
+
+
+
+
Version 3.32 (4/7/95)
+
+
+More bug fixes. This is still not a public release.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The VMS MODULES.LIS file had gotten out of sync with the Unix
+makefiles (again). (modules.lis)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.31 (4/2/95)
+
+
+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.
+
+
Documentation
+Notes that the BJC600 driver also works for the BJC4000. (devs.mak)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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 *) > 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)
+
+
Streams
+
+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 *) > sizeof(int). (stream.c)
+
+
Library
+
+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 *) > 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)
+
+
+
+
Version 3.30 (beta) (3/21/95)
+
+
+More bug fixes. The garbage collector and PDF interpreter finally appear to
+work reliably.
+
+
Documentation
+Fixes bugs:
+ - language.doc had gotten out of date. (language.doc)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter (PostScript)
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 3.29 (internal) (3/8/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Adds a wftopfa utility for converting the Wadalab fonts to usable Type 0 and
+Type 1 form. (wftopfa)
+
+
Fonts
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter (PostScript)
+
+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 > 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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.28 (beta) (2/13/95)
+
+
+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.
+
+
Documentation
+Adds some information about handling VMS file attributes for files
+transferred by FTP. (use.doc)
+
+
Procedures
+
+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)
+
+
+
+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)
+
+
+
+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)
+
+
+
+
Version 3.27 (beta)(withdrawn) (2/8/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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 >>showpage<< 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 >>showpage<< prompt so that if the input reaches EOF, the
+interpreter still stops after the next >>showpage<<, 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)
+
+
Streams
+
+Fixes bugs:
+ - The K > 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)
+
+
Library
+
+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)
+
+
+
+
Version 3.26 (beta) (2/1/95)
+
+
+Yet another bug-fix beta release, still not ready for public release.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes bugs:
+ - The ps2ascii shell script passed a -f flag to the shell, which not
+all shells recognize. (ps2ascii)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.25 (beta) (1/24/95)
+
+
+Yet another bug-fix beta release. There are still at least half a dozen
+significant known bugs to be fixed before a public release.
+
+
Documentation
+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)
+
+
Procedures
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The VMS build scripts had gotten out of sync (again). (vms*.mak)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.24 (beta) (1/17/95)
+
+
+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.
+
+
Documentation
+Notes that Solaris requires using installbsd instead of install. (make.doc)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - There was an extraneous pfen-> 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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PostScript)
+
+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)
+
+
Interpreter (PDF)
+
+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 <n>' 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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.23 (beta) (1/5/95)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter (PostScript)
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.22 (beta) (11/30/94)
+
+
+This is primarily a bug fix release. It also includes limited anti-aliased
+graphics capability. This release was not distributed to the public.
+
+
Procedures
+
+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)
+
+
Drivers
+
+Fixes bugs:
+ - The dfax drivers incorrectly set EncodedByteAlign to false.
+(gdevdfax.c)
+ - softwareValue and dateTimeValue were declared as byte rather than
+char. (gdevtfax.c)
+
+
Platforms
+
+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 <sys/time.h> and <time.h>.
+(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 =>
+vms.decc.mak)
+
+
+
+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)
+ - << /a 1 /a 2 >> /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)
+ - >> 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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.21 (beta) (11/17/94)
+
+
+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.
+
+
Documentation
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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...=<...>
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.20 (beta) (10/31/94)
+
+
+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.
+
+
Documentation
+Notes that the FAQ has moved to smallo.ruhr.de:pub/ghost/gs.faq. (readme)
+
+Documents various implementation limits. (language.doc)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - If <sys/time.h> didn't exist, time_.h didn't always include
+<time.h>. (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)
+
+
Fonts
+
+Makes the font substitution algorithm recognize the word Roman as calling
+for a serif font. (gs_fonts.ps)
+
+
Interpreters
+
+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)
+ - >> 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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 3.13(private) (10/3/94)
+
+
+This release was created for a customer; it was not distributed to the
+public.
+
+
Documentation
+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)
+
+
Procedures
+
+Fixes bugs:
+ - The makefile rule for gconfig.h et al had a couple of blank lines
+in the middle of it. (gs.mak)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes bugs:
+ - Using DISKFONTS resulted in an invalidaccess error.
+(gs_fonts.ps)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.12 (9/29/94)
+
+
+This is another bug fix release, the first Level 2 release that we believe
+is reasonably reliable.
+
+
Documentation
+
+Adds some text warning about making copies of the makefile. (make.doc)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The definition of BEGINFILES in os2.mak occurred too late in the
+file to have the desired effect. (os2.mak)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Fixes bugs:
+ - The CCITTFaxEncode filter with K > 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)
+
+
Library
+
+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)
+
+
+
+
Version 3.1.1 (9/25/94)
+
+
+This is primarily a bug fix release. It was originally intended for some
+commercial licensees, but beta testers found too many problems with it.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Ensures that the Unix makefiles all include all the variants of TIFF/F and
+fax drivers. (ansihead.mak, cc-head.mak, gcc-head.mak)
+
+
Interpreter
+
+Fixes bugs:
+ - Most of the contents of statusdict were missing when
+running a Level 2 system in Level 1 mode. (zmisc2.c)
+
+
+
+
Version 3.1 (9/20/94)
+
+
+This release finally includes a usable subset implementation of
+setpagedevice, including all the machinery needed to address the
+long-standing "margins" problems.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - The commands for building the JPEG library used rm instead
+of rm -f. (jpeg.mak)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Fixes bugs:
+ - The eexec decoder incorrectly concluded that its data was
+in hex form if the first data character was whitespace. (seexec.c)
+
+
Library
+
+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 => 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 ...)
+
+
+
+
+
+
Version 3.0.3 (9/16/94)
+
+
+This is primarily a bug fix release; it also implements most of the
+remaining Level 2 loose ends (except for setpagedevice).
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Removes the ps2image utility, since the new psmono driver replaces it.
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Streams
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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...)
+
+
+
+
Version 3.02 (8/30/94)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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 <math.h> 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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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 < urx and lly < 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)
+
+
+
+
Version 3.01 (8/14/94)
+
+
+This is a patch release to fix early problems in release 3.0, and to clean
+up a few known loose ends.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 3.0 (8/1/94)
+
+
+This is the first full Level 2 version released to the public.
+Unfortunately, we were not able to include setpagedevice in this release.
+
+
Documentation
+
+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.
+
+
Procedures
+
+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.
+
+
Utilities
+
+Fixes bugs:
+ - ps2ascii didn't do a setglobal.
+
+Adds an option to ansi2knr to convert ... to va_alist/va_dcl.
+
+
Drivers
+
+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.
+
+
Platforms
+
+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.)
+
+
Fonts
+
+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. ******
+
+
Interpreter
+
+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.
+
+
Streams
+
+Fixes bugs:
+ - gs_run_string and ccinit didn't have any way to mark the string
+as "foreign", which confused the GC.
+
+
Library
+
+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.
+
+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/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 @@
+
+
+
+History of Ghostscript versions 4.n
+
+
+
+
+
+
+
+
+
+
+
+
+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:
+
+
+This is a last-minute set of bug fixes before the 5.0 release.
+
+
Documentation
+
+Adds some overlooked helpers to the list. (helpers.txt)
+
+
Procedures
+
+Makes a distinction between 2-part and 3-digit version numbers.
+(version.mak, vms.mak)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.80 (limited) (5/28/97)
+
+
+This is the candidate fileset for the 5.0 release.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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 &&'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)
+
+
+
+
+
+
Version 4.74 (limited) (5/5/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.73 (limited) (4/19/97)
+
+
+This is an incremental bug fix release made primarily to provide a
+synchronization point for an upcoming trip.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - The makefiles didn't provide a default value for GCONFIG_EXTRAS.
+(gs.mak)
+
+
Utilities
+
+Fixes bugs:
+ - pdf2ps didn't work with TrueType or compressed Type 1 fonts.
+(gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
+
+
Drivers
+
+Fixes bugs:
+ - A cast from byte to char was omitted. (gdevpdfm.c)
+
+
Platforms
+
+Updates the VMS script (again). (vms.mak)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.72 (limited) (4/14/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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 >= 486 didn't automatically set
+FPU_TYPE to 387. (wccommon.mak)
+
+
Interpreter
+
+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<numK> 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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.71 (limited) (3/31/97)
+
+
+This is a bug fix release during the beta test period.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.70 (limited) (3/26/97)
+
+
+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.
+
+
+Fileset numbers 4.62 through 4.69 were skipped deliberately.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Adds support for Compact Font Format fonts. (pdf_font.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 4.61 (limited) (3/13/97)
+
+
+This fileset cleans up many compiler warnings. It adds support for
+CMap-encoded fonts, and a driver that writes JPEG images.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The MetroWerks C compiler gave an inexplicable error on a
+particular initialization. (gdevmem.h, gdevmem.c)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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) > 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)
+
+
+
+
Version 4.60 (limited) (3/2/97)
+
+
+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.
+
+
+This fileset also includes improvements to the new PCL XL driver
+(pxlmono/color), and introduces an experimental PostScript driver (pswrite).
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+Factors out the stream-writing procedures from the PDF writer, so they can
+be shared with the new PostScript writer. (gdevpdfs.h => gdevpstr.h,
+gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c => 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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at
+position 45 rather than `hyphen'. (gs_pdf_e.ps, gs_wan_e.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 4.51 (limited) (2/9/97)
+
+
+This version contains a more reasonable high-level PCL XL driver. The VMS
+build script is working again, we think.
+
+
Procedures
+
+Fixes bugs:
+ - The gsdll_h macro wasn't defined all the places it was needed.
+(devs.mak, os2.mak)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.50 (limited) (1/31/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 4.41 (private) (1/21/97)
+
+
+This release adds a PCL XL output driver, and a few performance
+improvements.
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Fonts
+
+Updates the free font distribution to add the URW Grotesk and Antiqua fonts.
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.40 (private) (1/13/97)
+
+
+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.
+
+
Documentation
+
+Documents the new accurate curves and path dashing operators.
+(language.txt)
+
+
Utilities
+
+Adds switches for genconf to set and unset a prefix for file names.
+(genconf.c)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+Adds operators for accessing the new accurate curves flag in the graphics
+state. (zgstate.c)
+
+Adds an operator for invoking gs_dashpath. (zpath1.c)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - Indexed color spaces whose base space was a CIE space caused an
+error. (pdf_draw.ps)
+
+
Library
+
+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 < 0 or bx < 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)
+
+
+
+
+
+
Version 4.39 (limited) (1/1/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes bugs:
+ - prfont.ps wouldn't print unencoded characters in Type 42 fonts.
+(prfont.ps)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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 < 0 or
+bx < 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)
+
+
+
+
Version 4.38 (limited) (12/20/96)
+
+
+Adds support for a couple of undocumented features in Type 1 fonts.
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.37 (limited) (12/10/96)
+
+
+This version implements separate halftone phase for source and texture,
+required for PCL XL implementation.
+
+
Fonts
+
+Fixes bugs:
+ - Loading a native TrueType font without a 'post' table caused an
+error. (gs_ttf.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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 {&,|}{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)
+
+
+
+
Version 4.36 (limited) (12/3/96)
+
+
+This version fixes a number of library bugs related to RasterOp, Patterns,
+and memory management.
+
+
Documentation
+
+Changes the definition of texture transparency to match the peculiar H-P
+specification. (drivers.txt, language.txt)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+Removes some code that is no longer needed, by virtue of the fix for the
+memory leak in Pattern remapping. (zpcolor.c)
+
+
Library
+
+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) & 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)
+
+
+
+
Version 4.35 (limited) (11/24/96)
+
+
+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.
+
+
Documentation
+
+Documents the new EPSF-reading capability. (gs.mak)
+
+
Procedures
+
+Fixes bugs:
+ - Some obsolete definitions were accidentally left in the rules for
+compiling fonts into the executable. (int.mak)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.34 (limited) (11/18/96)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+Fixes bugs:
+ - Some very picky compilers complained about assigning 0 to a
+variable of an enum type. (gdevpdfx.h, gdevpdf.c)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.33 (limited) (11/6/96)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - The 'man' pages were installed in the documentation directory as
+well as in the man directory. (unix-end.mak)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.32 (limited) (11/1/96)
+
+
+This fixes a couple more bugs, most notably the infamous "pixel stripe" bug.
+
+
Documentation
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Declares a pointer 'const' that is actually only used for reading.
+(gp_unifs.c)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.31 (limited) (10/27/96)
+
+
+This is primarily a bug fix release for 4.30, which we had hoped wouldn't be
+necessary....
+
+
Documentation
+
+Fixes bugs:
+ - The comment describing the order of coefficients in a CTM written
+on the band list was wrong. (gxclpath.h)
+
+
Procedures
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - MetroWerks CodeWarrior predefines true and false, causing
+compilation errors on the Mac. (stdpre.h)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Implements the PDF 1.1 BX and EX operators. (pdf_base.ps, pdf_main.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.30 (limited) (10/23/96)
+
+
+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.
+
+
Documentation
+
+Documents the changes in the begin_image and image_data device procedures.
+(drivers.txt)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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 <stdlib.h>, so our
+definitions of malloc and free caused a conflict. (malloc_.h)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 4.21 (limited) (10/17/96)
+
+
+The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20.
+
+
Documentation
+
+Fixes bugs:
+ - The Ghostscript man page had a .TH in the middle. (gs.1)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes bugs:
+ - The free URW Grotesk and Antiqua fonts were omitted from the
+distribution.
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.20 (limited) (10/13/96)
+
+
+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.
+
+
Documentation
+
+Documents the new get_clipping_box device procedure. (drivers.txt)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+Updates code to accommodate the new get_clipping_box device procedure.
+(zupath.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 4.10 (limited) (9/25/96)
+
+
+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.
+
+
Documentation
+
+Moves documentation for all releases before 4.0 to history3.txt. (NEWS,
+history3.txt)
+
+
Utilities
+
+Fixes bugs:
+ - pdf2dsc.ps didn't have a proper license notice. (pdf2dsc.ps)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Adds partial support for the PDF 1.2 gs operator, reverse engineered from a
+PDF 1.2 file. (pdf_draw.ps)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 4.03 (9/23/96)
+
+
+This was an emergency re-release of 4.02 to fix the stdin redirection
+problem. It has essentially no other changes.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - A rule assumed that the makefile was named `makefile'.
+(unixtail.mak)
+
+
Drivers
+
+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)
+
+
Fonts
+
+Fixes bugs:
+ - The Solaris fontmap had gotten out of date. (Fontmap.Sol)
+
+
Streams
+
+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)
+
+
+
+
Version 4.02 (9/19/96)
+
+
+This release fixes a few more bugs, and adds the ability to read encrypted
+PDF files and some PDF 1.2 files.
+
+
+This release was withdrawn after a few days because the stdin redirection
+fix, which was made at the last minute, cause Ghostview to hang.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - Using both DELAYBIND and SAFER caused problems. (pstotext uses
+DELAYBIND.) (gs_init.ps)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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])
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+Fixes bugs:
+ - stdin was assumed to be non-seekable. (sfile.c, sfileno.c)
+
+
Library
+
+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)
+
+
+
+
Version 4.01 (7/10/96)
+
+
+This fixes a few minor bugs discovered since the 4.0 release.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - The X value of a bounding box could be computed incorrectly.
+(gdevbbox.c)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 4.0 (6/28/96)
+
+
+This is the first public release since 3.53, with a few more last-minute
+patches beyond 3.70.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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<var>=<name> was equivalent to -d<var>=/<name>, 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)
+
+
Utilities
+
+Fixes bugs:
+ - Showing the details of a protected font caused an error.
+(markhint.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes bugs:
+ - Some Windows menu parameters were incorrect. (gsdll16.rc,
+gsdll32.rc)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Fixes bugs:
+ - Filter lookahead caused problems with special files. (bug
+introduced in 3.70) (stream.h)
+
+
Library
+
+Fixes bugs:
+ - .getdevparams sometimes returned duplicate entries for /Type.
+(gxiodev.h, gsiodev.c)
+
+
+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/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 @@
+
+
+
+History of Ghostscript versions 5.n
+
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+
+
Version 5.99 (beta) (1999-12-18)
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes problems:
+ - ps2epsi didn't disable setpagedevice. (lib/ps2epsi)
+ - geninit needed <stdlib.h> for 'exit'. (geninit.c)
+ - Some invocations of utilities didn't deal with VMS's habit of
+converting arguments to lower case. (geninit.c, cfonts.mak)
+ - The ps2pdf*.bat files didn't produce a usage message if no
+arguments were provided. (lib/ps2pdf.bat, lib/ps2pdf12.bat,
+lib/ps2pdf13.bat)
+ - Removes some warnings from the Windows uninstaller.
+(dwuninst.cpp)
+
+Upgrades the halftone compiler to handle Type 5 halftones. (genht.c)
+
+Makes the initialization string compiler recognize sections of the code
+where binary tokens are allowed, and convert literal hex strings within such
+sections to binary-token strings, which take less space and load faster.
+(geninit.c)
+
+Adds a utility file to define b0 ... b6 as selecting JIS B paper sizes.
+(unixinst.mak, lib/jispaper.ps)
+
+Modifies the font printing utility to sort unencoded characters.
+(lib/prfont.ps)
+
+Adds a small utility to help use the StochasticDefault halftone.
+(lib/stocht.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.98 (beta) (1999-12-01)
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+Fixes problems:
+ - psdf_sorted_glyphs_include didn't handle empty lists correctly.
+(gdevpsdf.c)
+ - A reference to a #defined constant hadn't been converted to upper
+case. (gdevpsdf.h)
+ - Acrobat Reader couldn't handle <> as the definition of
+Notice in an embedded font's FontInfo dictionary: it requires a ()
+string. (gdevpsd1.c)
+ - The [e]pswrite driver didn't take stroked paths into account when
+computing the bounding box. (gdevps.c)
+
+Updates gdevwpr2.c with a new version from its most recent author.
+(gdevwpr2.c)
+
+
Fonts
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Adds the ability to forbid using hex encoding when writing strings.
+(spsdf.h, spsdf.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.97 (beta) (11/22/99)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+Fixes problems:
+ - A <br> was missing. (doc/Release.htm)
+ - The final step of copying releases to www.aladdin.com was missing.
+(doc.Release.htm)
+
+Documents the new situation with the ps2pdf* scripts. (doc/Ps2pdf.htm)
+
+Documents the simplification of the pthreads code. (doc/Helpers.htm,
+doc/Make.htm)
+
+Adds a requirement to the license that modifications include the name and
+e-mail address of the author, and the date and purpose of the modification.
+(doc/Public.htm)
+
+Adds a link to the documentation for setdistillerparams. (doc/Ps2pdf.htm)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Replaces the 4 pthreads files, which included a dependence on the non-POSIX
+<semaphore.h>, with a single file that uses only pthreads procedures.
+(gp_psync.c, gp_posem.c [deleted], gp_pthr.c [deleted], gp_ptsem.c
+[deleted], gp_semon.c [deleted])
+
+
PDF writer
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.96 (beta) (11/12/99)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes problems:
+ - The pthreads wrapper had a procedure type mismatch. We fixed this
+by making it allocate and free a wrapper object, as the Windows wrapper
+does. (gp_pthr.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (dwimg.h, dwmain.h,
+gsdll.h, gp_msio.c, gp_mswin.c)
+
+Removes an unnecessary #include <semaphore.h>. (gp_semon.c)
+
+Adds a module that implements semaphores using the pthreads mutex
+facilities, as an alternative to gp_posem.c. Unfortunately, using this
+module causes immediate crashes on both GNU/Linux and BSDI, and we don't know
+why. (Let us know if you figure it out.) (gp_ptsem.c)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.95 (beta) (11/1/99)
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+Note: some post-6.0 code is included under an #ifdef POST60.
+
+
Incompatible changes
+
+(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.)
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Changes product to productfamily as the Windows registry key. (gp_wgetv.c)
+
+
Fonts
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.94 (beta) (9/30/99)
+
+
+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.
+
+
+At the request of the Free Software Foundation, we removed support for GNU
+readline from the Aladdin Ghostscript fileset. See here for more information.
+
+
+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.
+
+
Incompatible changes
+
+(Procedures)
+ - For OpenVMS with MMK or MMS, the third-party libraries are now
+located in [.<lib>] rather than [-.<lib>].
+ - The OpenVMS makefiles now select the same set of devices as the
+Unix makefiles.
+ - The MS Windows and MS-DOS default installation directory is now
+c:\Aladdin\gs#.# rather than c:\gs.
+ - All top-level makefiles now need a definition of BUILD_TIME_GS.
+(Drivers)
+ - The cljet5 driver is renamed cljet5pr; there is a new cljet5
+driver that doesn't attempt (and fail) to handle page rotation.
+(Interpreter)
+ - .getiodevice may return null.
+(Library)
+ - IODevices may now have a null name.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.93 (beta) (9/11/99)
+
+
+This is the next candidate for the 6.0 release. As with 5.92, all changes
+other than added documentation are bug fixes.
+
+
Incompatible changes
+
+(Library)
+ - Every stream whose state includes any GC-traceable pointers must
+now have a set_defaults procedure that clears those pointers.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes problems:
+ - pcharstr.ps loaded type1ops.ps with run rather than runlibfile,
+causing an error. (lib/pcharstr.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes problems:
+ - Compiling gp_msio with MSVC's /MD switch caused a compile-time
+error. (gp_msio.c)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes problems:
+ - Some obsolete definitions for Turbo C could produce references to
+an undefined procedure (setmem) at link time. (memory_.h, string_.h)
+
+
+
+
+
+
Version 5.92 (beta) (9/2/99)
+
+
+This is the next candidate for the 6.0 release. All changes other than
+added documentation are bug fixes.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes problems:
+ - Fontmap.GS is now required, but wasn't installed. (unixinst.mak)
+ - A couple of documentation files weren't installed. (unixinst.mak)
+
+
Utilities
+
+Fixes problems:
+ - The ps2pdf script for MS Windows used the wrong name for the
+executable. (lib/ps2pdf.bat)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Makes the stream GC descriptor public for subclassing. (stream.h, stream.c)
+
+
+
+
+
+
Version 5.91 (beta) (8/30/99)
+
+
+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).
+
+
Documentation
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes problems:
+ - If the extension of a font file name on GS_FONTPATH included any
+upper-case characters, the font would not be found. (lib/gs_fonts.ps)
+
+Allows fontmaps to contain <string> run or .runlibfile, to get rid of the
+Fontmap -> Fontmap.GS link that VMS can't handle. (lib/gs_fonts.ps)
+
+
PDF writer
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.90 (beta) (8/20/99)
+
+
+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:
+
+
- FunctionType 4 for PDF files.
+
- Alternate printer images for PDF files (-dUsePrinterImages
+ switch).
+
- pdfwrite support for PDF "Cos objects" (without compression for
+ streams).
+
- pdfwrite support for graphics objects named with BP/EP/SP
+ (without compression for the object definition).
+
- pdfwrite font subsetting and embedded TrueType fonts.
+
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Updates a couple of clients for the change in the IODevice open_device
+procedure, eliminating some undesirable externs. (gp_msio.c, gp_os2.c)
+
+
Fonts
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.88 (tester) (8/3/99)
+
+
+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.
+
+
+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.
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+Fixes problems:
+ - News entries since 5.72 had a missing <li> in the table of
+contents entry. (doc/News.htm)
+ - gs_text_params_t still referred to REPLACE_X_WIDTHS and
+REPLACE_Y_WIDTHS rather than REPLACE_WIDTHS. (gstext.h)
+
+Clarifies that the font glyph_outline procedure must append a final moveto
+for the advance width. (gxfont.h)
+
+Clarifies that the font enumerate_glyph procedure enumerates glyphs in an
+unpredictable order. (gxfont.h)
+
+Documents that reference counted freeing procedures for structures with
+finalization must free the structure itself first rather than last.
+(gsrefct.h)
+
+Updates documentation on building Ghostscript on MS-DOS and MS Windows.
+(doc/Make.htm)
+
+Adds some documentation on how the makefiles are / should be structured.
+(doc/Source.htm)
+
+Documents the new parameters for the X driver. (doc/Use.htm)
+
+Updates the language documentation to refer properly to PostScript
+LanguageLevel 3 and PDF 1.3. (doc/Language.htm)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.87 (tester) (6/29/99)
+
+
+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.
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.86 (tester) (6/14/99)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes problems: - The usage message for pdf2ps was incorrect. (lib/pdf2ps,
+ lib/pdf2ps.bat)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter (PDF)
+
+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 ******
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.85 (tester) (5/29/99)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Fixes problems:
+ - -replace didn't work if it was the last item of a module
+description. (genconf.c)
+
+
Drivers
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.84 (tester) (5/19/99)
+
+
+This fileset completes the implementation of planar rendering, and fixes a
+few more bugs, some of them surprisingly old.
+
+
Incompatible changes
+
+(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.
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Fixes problems:
+ - If a 2-D CCITTFax stream ended with 1 or 2 "vertical 0" codes,
+those codes would be ignored. (scfd.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.83 (tester) (5/13/99)
+
+
+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.
+
+
+Items pushed off to the next fileset:
+
+
- Finish multi-planar band buffers (requires changing
+gdev_prn_render_lines to be based on memory devices rather than buffer
+pointers).
+
- 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).
+
- Implement an IdiomSet for Corel Draw fountain fills?
+(idioms.ps)
+
- 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.
+
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+Documents the new facility for compiled halftones, and the old one for
+compiling initialization files. (doc/Make.htm)
+
+
Utilities
+
+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)
+
+
Procedures
+
+Adds some optional library modules to the base library compilation list, so
+that compilation errors won't slip through. (lib.mak)
+
+
Interpreter
+
+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)
+
+
Library
+
+Fixes problems:
+ - Some types needed updating to reflect the change in the string
+freelists. (gsalloc.c, gsnogc.c)
+ - clip_copy_color didn't initialize some variables in the fastest
+case. (bug probably introduced in 5.83) (gxclip.c)
+ - The fit_fill_ and fit_copy_ macros didn't always parenthesize
+their dev argument. (gxdevice.h)
+ - The sample_load macros returned the wrong results for depth 1 and
+2. Amazingly enough, it appears that this case had never been used.
+(gsbitops.h)
+ - The standard allocator would free chunks even if is_controlled was
+true. (gsalloc.c)
+ - Stroking drew semicircles rather than full circles for round
+joins. (gxstroke.c)
+ - The calculation of how finely to sample a curve to achieve a
+particular flatness didn't take line width into account when stroking (the
+flatness has to apply to the outside of the stroked curve). (gxpath.h,
+gxpcopy.c, gxstroke.c)
+
+Speeds up the bbox device a little. (gdevbbox.c)
+
+Speeds up the most common cases of clipping a little. (gxclip.h,
+gxacpath.c, gxclip.c)
+
+Makes halftone orders more "object-oriented", so we can use an alternate
+representation that trades time for space. This requires a
+NON-BACKWARD-COMPATIBLE CHANGE in the gx_ht_order structure and the
+arguments of gx_ht_alloc_[ht_]order. (gxcldev.h, gxdht.h, gzht.h, gsht.c,
+gsht1.c, gshtscr.c, gshtx.c, gsistate.c, gxcht.c, gxclimag.c, gxclrast.c,
+gxht.c, gxhtbit.c)
+
+Makes it possible to compile-in halftone threshold arrays and orders (e.g.,
+in ROM) so they don't take up RAM at execution time. (gscdefs.h, gxdht.h,
+gxdhtres.h, gzht.h, gconf.c, gsht.c, gsht1.c, gxclrast.c, gxhtbit.c)
+
+Adds some statistics to the 24-bit memory device (in DEBUG mode only, as
+usual). (gdevm24.c)
+
+Makes the 24-bit memory device optionally use memcpy for wide rectangle
+fills. We thought this got us a factor of 3 speedup on a Pentium with gcc's
+library, but it turned out to be a profiler artifact. (gdevm24.c)
+
+Cleans up some formatting. (gxclip.h)
+
+Dusts off the run-length-encoded memory device, changing it so it reverts to
+the unencoded representation when necessary. This code hasn't been tested,
+and is not currently used. (gdevmrun.h, gdevrun.c [deleted], gdevmrun.c)
+
+Adds more statistics to the clipping device. (gxclip.c)
+
+Adds an implementation of the MD5 Algorithm defined in RFC 1321, derived
+directly from the text of the RFC and not from the reference implementation.
+This code uses the zlib license, which is more liberal than the Aladdin or
+GNU licenses. (md5.h, md5.c)
+
+Finishes implementing the planar memory device, including generalizing it to
+store varying numbers of bits per plane rather than 1 bit per plane.
+(gdevmem.h, gdevmpla.h, gxdevmem.h, gdevmem.c, gdevmpla.c)
+
+Updates clients to initialize memory devices more fully, now required to
+distinguish chunky from planar devices. (gxpcmap.c)
+
+Mostly implements enhancing printer / banded devices so they can use a
+planar memory device for rendering and/or band buffering. The code
+currently works only in the non-banded case. (gdevprn.h, gxclist.h,
+gxdevbuf.h, gxdevcli.h, gdevprn.c, gxclist.c, gxclread.c)
+
+For testing, adds a -dUsePlanarBuffer=<boolean> parameter to the PPM devices
+to make them use a planar memory device. (gdevpbm.c)
+
+Cleans up some code formatting. (gdevmem.c)
+
+Makes the garbage collection procedure separately settable for each group of
+VM spaces. (In an environment with "async" rendering, the renderer has its
+owm VM space group.) Unfortunately, this involved a NON-BACKWARD-COMPATIBLE
+change in the vm_spaces structure. (gsgc.h, gsnogc.h, gsnogc.c)
+
+Updates a client for the change in gs_reclaim; also makes the renderer
+thread use the non-tracing garbage collector. (gdevprna.c)
+
+Updates the non-tracing GC to reflect its role as a garbage collection
+procedure in a vm_spaces. (gsnogc.c)
+
+Enhances the non-tracing GC so that if a chunk ever contains no strings, the
+string marking area reserved for the tracing GC is added to free space.
+(gxalloc.h, gsalloc.c, gsnogc.c)
+
+Changes the font cache allocator to use a different structure descriptor for
+its data so that memory dumps will show "font cache bytes" rather than just
+"bytes". (gxccman.c)
+
+Splits gsstruct.h into gsstype.h, which contains enough of the definition of
+structure type descriptors to support extern_st, and gsstruct.h, which is
+needed to actually define structure types. (gsstruct.h, gsstype.h,
+gxfmap.h)
+
+Updates places that only use gsstruct.h for extern_st to use gsstype.h
+instead. (gsbitmap.h, gsccolor.h, gscie.h, gxfont.h, gzpath.h, scommon.h,
+gscdevn.c, gscrd.c, gscrdp.c, gsshade.c, gxpath2.c)
+
+
+
+
+
+
Version 5.82 (tester) (4/24/99)
+
+
+This fileset fixes a few odds and ends, removes a couple more writable
+statics, and improves performance in a couple of areas.
+
+
Incompatible changes
+
+(Interpreter)
+ - dict_uid_param now takes an additional argument, the interpreter
+context pointer.
+ - obj_cvp now takes a stream rather than a string.
+
+
Documentation
+
+Documents the -dGraphicsAlphaBits and -dTextAlphaBits switches; reorganizes
+the documentation of the -d/-s switches by function. (doc/Use.htm)
+
+
Procedures
+
+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)
+
+
+
+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)
+
+
Platforms
+
+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])
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.81 (tester) (4/14/99)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Procedures
+
+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)
+
+
Utilities
+
+Makes some minor edits in ansi2knr, contributed by a user, to remove gcc
+warnings. (ansi2knr.c)
+
+
Drivers
+
+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)
+
+
Fonts
+
+Adds Black as indicating that a bold font should be substituted if
+necessary. (lib/gs_fonts.ps)
+
+
Platforms
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.80 (tester) (4/6/99)
+
+
+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.
+
+
+Because of the magnitude of the change, we incremented the version number to
+5.80.
+
+
+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.
+
+
+This fileset also implements DeviceN color spaces (always using the
+alternate space), including Indexed spaces over DeviceN spaces, for all uses
+except smooth shading.
+
+
Incompatible changes
+
+(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.
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Fonts
+
+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)
+
+
+
+Fixes problems:
+ - There were many signed/unsigned char type errors that gcc didn't
+catch. (gp_gnrdl.c)
+ - The operator definition list for zdouble was too long. (int.mak,
+zdouble.c)
+
+Removes some unnecessary #includes. (zchar.c)
+
+Speeds up names_string_ref. (inamedef.h, inames.h, imain.c, iname.c)
+
+Speeds up reading string/name array parameters. (iparam.c)
+
+Refactors the implementation of ==, so that all types other than arrays and
+dictionaries are handled in C code. (lib/gs_init.ps, iutil.h, iref.h,
+gp_gnrdl.c, idebug.c, iutil.c, zfileio.c, ztype.c)
+
+Changes the type name for operator procedures from op_proc_p to op_proc_t,
+for consistency and also to help detect places that need the argument list
+changed. (ichar.h, interp.h, iref.h, opdef.h, interp.c, iutil.c, zchar.c,
+zcharx.c, zcontrol.c, zupath.c)
+
+Changes the argument type for operators from os_ptr to i_ctx_t *. (i_ctx_t
+is an alias for gs_context_state_t.) This also requires adding a context
+pointer to many internal procedures, or changing an os_ptr argument to
+i_ctx_t *. This is a MASSIVE NON-BACKWARD-COMPATIBLE change which we simply
+saw no way to avoid if the interpreter was to be made fully re-entrant. See
+"Incompatible changes" above for externally visible changes.
+(lib/gs_init.ps, bfont.h, btoken.h, dstack.h, estack.h, files.h, ichar.h,
+ichar1.h, icharout.h, icie.h, icolor.h, icontext.h, icsmap.h, ifilter.h,
+ifont1.h, igstate.h, iht.h, iimage.h, iimage2.h, imain.h, imemory.h,
+interp.h, ipacked.h, iref.h, iscan.h, istream.h, opdef.h, oper.h,
+opextern.h, ostack.h, ialloc.c, icontext.c, iinit.c, imain.c, inouparm.c,
+interp.c, ireclaim.c, iscan.c, iscanbin.c, zarith.c, zarray.c, zbfont.c,
+zbseq.c, zcfont.c, zchar.c, zchar1.c, zchar2.c, zchar32.c, zchar42.c,
+zcharout.c, zcharx.c, zcid.c, zcie.c, zcolor.c, zcolor1.c, zcolor2.c,
+zcontext.c, zcontrol.c, zcrd.c, zcsdevn.c, zcsindex.c, zcspixel.c,
+zcssepr.c, zdevice.c, zdevice2.c, zdict.c, zdosio.c, zdouble.c, zdpnext.c,
+zdps.c, zdps1.c, zfbcp.c, zfcmap.c, zfdctd.c, zfdcte.c, zfdecode.c, zfile.c,
+zfileio.c, zfilter.c, zfilter2.c, zfilterx.c, zfont.c, zfont0.c, zfont1.c,
+zfont2.c, zfont32.c, zfont42.c, zfproc.c, zfreuse.c, zfunc.c, zfzlib.c,
+zgeneric.c, zgstate.c, zhsb.c, zht.c, zht1.c, zht2.c, zimage.c, zimage2.c,
+zimage3.c, ziodev.c, ziodev2.c, zmath.c, zmatrix.c, zmedia2.c, zmisc.c,
+zmisc1.c, zmisc2.c, zmisc3.c, zpacked.c, zpaint.c, zpath.c, zpath1.c,
+zpcolor.c, zrelbit.c, zrop.c, zshade.c, zstack.c, zstring.c, zsysvm.c,
+ztoken.c, ztrap.c, ztype.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
+
+Changes caching for the interpreter's CIE color spaces so that instead of
+changing the color space installation procedure to one that schedules the
+sampling of the procedures though a back door, it leaves the installation
+procedure alone and schedules the sampling in the color-space-specific
+setcolorspace operator. This is needed for interpreter reentrancy.
+(icie.h, zcie.c, zcrd.c)
+
+Makes the linkage from the dictionary machinery to the cached values in the
+dictionary stack and the name table explicit, by adding a dstack pointer to
+all the relevant dict_* procedures. This is needed for interpreter
+reentrancy. (iddstack.h, idict.h, idstack.h, idict.c)
+
+Updates clients for the change in the dictionary API. For each changed
+dict_ procedure, we add an idict_ procedure that uses i_ctx_p->dict_stack as
+the additional argument. (iddict.h, icontext.c, iinit.c, interp.c,
+iparam.c, iscanbin.c, zdps.c, zfcmap.c, zdict.c, zfont.c, zfont0.c,
+zgeneric.c, zht2.c, zmisc2.c)
+
+Changes Pattern color remapping so that it saves information in the
+interpreter's part of the graphics state, rather than manipulating the
+e-stack directly. This is needed for interpreter reentrancy. (errors.h,
+icremap.h, igstate.h, interp.c, zgstate.c, zpcolor.c)
+
+Adds to the "main instance" structure a pointer to the currently executing
+context. This is needed for interpreter reentrancy. (imain.h, iminst.h,
+main.h, imain.c, imainarg.c)
+
+Changes the argument list for operator initialization procedures from void
+to i_ctx_t *. (opdef.h, ireclaim.c, zbfont.c, zbseq.c, zcontext.c, zfile.c,
+zfont.c, zpcolor.c)
+
+Changes the initialization of the interpreter's allocators so it doesn't
+presume the allocator structure is global. (ialloc.h, ialloc.c, imain.c)
+
+Factors out the structure definition of the stacks, which is needed for
+defining the state of a context, from the API, which is only needed by
+actual clients. (icstate.h, idsdata.h, idstack.h, iesdata.h, iestack.h,
+iosdata.h, iostack.h, isdata.h, istack.h)
+
+Changes filter error reporting so that the report_error procedure doesn't
+need access to the interpreter. (interp.h, interp.c, zfile.c, zfileio.c)
+
+Completes the implementation of DeviceN color spaces at the interpreter
+level. (lib/gs_res.ps, lib/gs_lev2.ps, lib/gs_ll3.ps, icsmap.h, zcsdevn.c,
+zcsindex.c, zcssepr.c, zimage.c)
+
+Speeds up color mapping for identity transfer, BG, or UCR functions.
+(zcolor.c)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.73 (tester) (3/19/99)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Adds FEATURE_DEVS_EXTRA and DEVICE_DEVS_EXTRA, reserved for setting from the
+command line. (gs.mak)
+
+
Drivers
+
+Fixes problems:
+ - A needed cast was missing. (gdevx.c)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.72 (tester) (3/17/99)
+
+
+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.
+
+
- 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.
+
+
+
Incompatible changes
+
+(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).
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Fonts
+
+Fixes problems:
+ - Cn in a font name wasn't recognized as indicating a condensed
+font. (lib/gs_fonts.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.71 (tester) (3/3/99)
+
+
+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.
+
+
Incompatible changes
+
+(Library)
+ - The *line_accum* macros are now capitalized; declare_line_accum is
+renamed DECLARE_LINE_ACCUM_COPY, and DECLARE_LINE_ACCUM is new.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Fonts
+
+Changes the substitution mechanism for condensed / narrow fonts, so that the
+PDF interpreter can use it. (lib/gs_fonts.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+Adds an interface and default implementation for readline. (srdline.h,
+stream.h, stream.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.70 (internal) (2/20/99)
+
+
+This fileset includes substantial changes to the interpreter in support of
+making it fully reentrant (eliminating writable globals).
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Rewrites viewpcx to eliminate dependence on a special filter.
+(lib/viewpcx.ps)
+
+
Drivers
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.69 (internal) (2/4/99)
+
+
+This incremental fileset fixes minor compilation problems, as well as many
+problems with driver-based CRDs (not used by PostScript or PDF).
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Changes some code because non-int switch expressions are not handled
+correctly in pre-ANSI C. (sfilter1.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.68 (internal) (1/29/99)
+
+
+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.
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes problems:
+ - On MS Windows and OS/2, "(%stdin) (r) file bytesavailable" caused
+a crash. (gp_msio.c, gp_os2.c)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Changes uses of round_up to ROUND_UP. (scfd.c, scfe.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.67 (internal) (1/8/99)
+
+
+This fileset adds more PostScript LanguageLevel 3 capability:
+
+
- Complete implementation of shfill.
+
- Most of the expanded CMap capabilities.
+
- ReusableStreamDecode filter.
+
- FontType 2 for CFFs (formerly done in an incompatible way).
+
- HalftoneMode user parameter.
+
- HalftoneTypes 6, 10, and 16.
+
- ImageType 3 images.
+
- UseCIEColor device parameter.
+
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+Fixes problems:
+ - The 5.66 News mentioned the non-existent WAITFILE macro, and had
+another minor typo. (doc/News.htm)
+ - The URL for the user-contributed H-P 850c driver was incorrect.
+(doc/Devices.htm, contrib.mak)
+ - The documentation for the driver image API had gotten out of date.
+(doc/Drivers.htm)
+
+Greatly improves documentation for the page queue. (from Artifex 5.50c)
+(gxpageq.h)
+
+Documents the fact that Solaris builds now need -lposix4 for <semaphore.h>.
+(doc/Make.htm)
+
+Adds a stack status comment in .pdfshow. (lib/gs_pdfwr.ps)
+
+Documents the new -Z` debugging switch. (doc/Use.htm)
+
+Touches up some formatting in the C style guide, and adds a mention of the
+space-before-: rule for makefiles. (doc/C-style.htm)
+
+Adds documentation for the new H-P 8xx drivers. (doc/Devices.htm)
+
+Splits off news for versions 5.0 - 5.50 into a separate file.
+(doc/History5.htm)
+
+
Procedures
+
+Fixes problems:
+ - On MS Windows platforms, the DLL object file wasn't created in the
+proper directory. (from Artifex 5.55) (msvc32.mak)
+ - cfonts.mak didn't have no-op commands for rules that didn't
+contain any commands. (cfonts.mak)
+ - The version number for libpng was different from libpng's own
+version numbering system. (libpng.mak)
+ - Solaris builds now need -lposix4 for <semaphore.h>.
+(unix-gcc.mak, unixansi.mak, unixtrad.mak)
+ - The makefiles redefined a number of macros, which MMS doesn't
+allow. (bcwin32.mak, gs.mak, int.mak, lib.mak, libpng.mak, msvc32.mak,
+openvms.mak, openvms.mmk, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+version.mak)
+
+Changes cp.bat and rm.bat to eliminate "File not found" messages. (from
+Artifex 5.55) (cp.bat, rm.bat)
+
+Changes all platform-independent makefiles to add a space before the : that
+separates the targets from the dependencies, to allow the makefiles to be
+used with MMS/MMK. (cfonts.mak, contrib.mak, devs.mak, gs.mak, int.mak,
+jpeg.mak, lib.mak, libpng.mak, zlib.mak)
+
+Adds a script for compiling Ghostscript on OpenVMS systems with MMK. This
+has not been tested extensively. (doc/Make.htm, openvms.mmk)
+
+Changes the set of optimization switches for MSVC++. We believe the new
+switches produce working executables, which /O2 didn't. (msvc32.mak,
+msvccmd.mak)
+
+Updates the default expected libpng version to 1.0.2. (bcwin32.mak,
+dvx-gcc.mak, msvc32.mak, msvclib.mak, openvms.mak, os2.mak, ugcclib.mak,
+unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watclib.mak,
+watcw32.mak)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes problems:
+ - Black-and-white images with Interpolate = true produced
+undesirable artifacts if the image resolution was close to that of the
+device. We now disable Interpolate in this case. (gxiscale.c)
+ - In "async" mode, get_hardware_params did an unnecessary flush and
+reopen. (from Artifex 5.50c) (gdevprna.c)
+ - The computation of the minimum band height for the "async" reader
+was incorrect. (from Artifex 5.50c) (gdevbmpa.c)
+ - The "fix" for reallocating async buffer memory in 5.50 was
+incorrect. (from Artifex 5.55) (gdevprn.c)
+ - The "async" reader called clist_finish_page, which it shouldn't.
+(from Artifex 5.50c) (gdevprn.c)
+ - The image enumeration procedures for ImageType 4 were unnecessary,
+since the ImageType 1 code now handles ImageType 4 as well. (gximage4.c)
+ - The structure descriptor for tile clipping devices was
+unnecessary, since these are the same as mask clipping devices. (gxclip2.h)
+ - There was a trailing comma in an enumeration list. (gsbitops.c)
+ - Some compilers didn't like initializing a uint with ~0.
+(gdevm1.c)
+ - shfill unnecessarily saved, reset, and restored the graphics
+state. (gscolor3.c)
+ - Radial shadings always extended the shading to radius = 0.
+(gxshade1.c)
+ - An identifier exceeded VMS's limit of 31 characters. (gdevprn.h,
+gdevprn.c)
+ - A header file didn't #include enough of its prerequisites.
+(gxpcolor.h)
+ - Images with non-default ImageMatrix weren't written correctly in
+the band list. (bug introduced in 5.60) (gximage1.c)
+ - Banded images that had to use the default implementation incurred
+an extra level of procedure call for each block of data. (gxclimag.c)
+ - Images rotated by other than a multiple of 90 degrees produced
+incorrect output, because pie->rect.p.y was updated after each block of
+data, causing image_band_box to produce inconsistent results. (bug
+introduced by async changes in 5.50) (gxclimag.c)
+ - The client_data pointer in client_order halftones wasn't traced
+correctly, possibly causing memory corruption if this type of halftone was
+used. (These are not currently used by the PostScript interpreter.)
+(gsht.c, gsht1.c)
+ - ImageType 3 images didn't handle subrectangles. (Not a problem
+for PostScript, which doesn't generate subrectangles, or for PCL, which
+doesn't use them.) (gximage3.c)
+ - If a VMerror occurred when setting up an ImageType 3 image. an
+attempt could be made to free an uninitialized pointer. (gximage3.c)
+ - ImageType 4 images with 1 to 8 bits per sample and Decode = [1 0]
+didn't test transparency correctly. (bug introduced in 5.60) (gximage.h,
+gxicolor.c, gximono.c, gxipixel.c)
+ - setgray, setrgbcolor, sethsbcolor, and setcmykcolor didn't use
+gs_cspace_assign, causing code duplication. After this fix, we made the
+device color space types private, since there are no longer any references
+to them outside gscspace.c. (gxcspace.h, gscolor.c, gscolor1.c, gscspace.c)
+ - gs_cspace_assign was misspelled cs_cspace_assign. (gscspace.h)
+ - setgray didn't set the pattern pointer of the current color to 0,
+possibly causing the GC to retain patterns it shouldn't. (gscolor.c)
+ - The dev_ht member of an imager (or graphics) state wasn't included
+in the macro that enumerates reference-counted pointers. This probably had
+no effect, since the macro isn't used. (gxistate.h)
+ - When the band rasterizer freed its imager state, the halftone and
+device halftone structures weren't freed, possibly causing memory leakage.
+(gsistate.c)
+
+Changes the default UCR and BG functions from f(k) = 0 to f(k) = k, per a
+user's suggestion. We aren't sure which matches the Adobe implementations
+on color devices. (gxdcconv.c)
+
+Conditionally removes some variables that are not needed on big-endian
+systems. (gdevm1.c)
+
+Restructures some code to suppress bogus "possibly uninitialized variable"
+warnings. (gxfixed.h, gdevddrw.c, gsmatrix.c, gsmisc.c, gxclimag.c)
+
+Adds a couple of unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (gsbitops.c)
+
+Implements BBox, Background, and Extend for shadings. (Background isn't
+tested yet, because it only takes effect for pattern shading, which isn't
+implemented yet.) (gsshade.h, gxacpath.h, gxistate.h, gxpath.h, gscolor3.c,
+gsshade.c, gxacpath.c, gxacpath.c, gxcpath.c)
+
+Brings the CMap machinery up to LL3, by allowing a single CMap to reference
+multiple fonts (usefont, usematrix, and array CIDSystemInfo). (gsfcmap.h,
+gxfcmap.h, gsfcmap.c)
+
+Adds more tracing output to the band list reader. (gxclrast.c)
+
+Cleans up some formatting. (gstext.h, gxtext.h)
+
+Replaces FontType = 1, CharstringType = 2 with FontType = 2, to match the
+Adobe implementations. (gxfont1.h, gxftype.h, gxtype1.h, gstype1.c,
+gstype2.c, gxtype1.c)
+
+Adds new gs_bytestring and gs_const_bytestring structures that may reference
+either string or (byte) object storage. (gsstruct.h, gstypes.h, gsmemory.c)
+
+Implements an additional halftone type (ht_type_threshold2) needed for
+HalftoneTypes 6, 10, and 16. We don't extend gshtx.[hc] to deal with this
+at this time, since the new type is only needed for the PostScript
+interpreter. (gxht.h, gxhttype.h, gzht.h, gsht.c, gsht1.c, gshtscr.c)
+
+Adds a procedure for division mod M, possibly needed for halftones.
+(gxarith.h, gsmisc.c)
+
+Adds a -Z` debugging switch to turn off high-level images in the band list.
+(gxclimag.c)
+
+Implements gdev_prn_render_lines, as the lowest-level external API for
+rendering lines in a banded device. This call replaces the "overlay" calls
+for async rendering. (gdevprn.h, gdevprna.h, gxclist.h, gdevprn.c,
+gxclread.c)
+
+Extends the image enumeration API so that the enumerator can indicate what
+subset of the input planes it wants delivered on the next call to
+image_plane_data. Currently this is only needed for ImageType 3.
+(gsimage.h, gxdevcli.h, gxiparam.h, gdevddrw.c, gsimage.c, gximage.c,
+gximage3.c)
+
+Extends the image enumeration structures to handle images that require a
+different amount of data for plane N than Width * plane_depths[N]. This
+requires a NON-BACKWARD-COMPATIBLE change to the argument list of the
+gx_image_enum_common_init procedure. (gxiparam.h, gdevbbox.c, gsimage.c,
+gxclimag.c, gximage.c, gximage2.c, gximage3.c, gxipixel.c)
+
+Updates the copyright date to 1999. (gscdef.c)
+
+Cleans up formatting, capitalizes macro names, etc. (gximage.h, gxsample.h,
+gxipixel.c)
+
+Adds the UseCIEColor device parameter. (gxdevcli.h, gxdevice.h, gsdparam.c)
+
+Implements color space substitution (UseCIEColor). (gscolor2.h, gscspace.h,
+gscssub.h, gxistate.h, gzstate.h, gscolor.c, gscolor1.c, gscolor2.c,
+gscolor3.c, gscssub.c, gslib.c, gspcolor.c, gsstate.c)
+
+Changes the color space install procedure so that its color space argument
+is const. Now all color space implementation procedures take a const
+argument. (gscie.h, gxcspace.h, gscdevn.c, gscolor2.c, gscscie.c,
+gscspace.c, gscsepr.c, gspcolor.c)
+
+Changes gs_setcolorspace so its color space argument is const. (gscolor2.h,
+gscolor2.c)
+
+Splits imager state procedures out of gsstate.c, which was getting too
+large. (gxistate.h, gsstate.c, gsistate.c)
+
+Changes gs_imager_state_initialize so it really initializes the whole imager
+state. (gsistate.c, gxclrast.c)
+
+Removes the now-redundant first (device) argument from the plane_data and
+end_image procedures in image enumerators. Implementors of these procedures
+must now get the device from the enumerator structure. This is a
+NON-BACKWARD-COMPATIBLE design cleanup that we have been putting off for
+most of a year. Also adds an argument to plane_data so it can tell its
+client how many rows of data was used: this is needed for the implementation
+of ImageType 3. (gxdevcli.h, gxiparam.h, gdevbbox.c, gdevplnx.c, gsimage.c,
+gxclimag.c, gxidata.c, gximage.c, gximage3.c)
+
+Changes CFFs with CharstringType = 2 to FontType 2 fonts, rather than
+FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
+implementations. (gstype1.h)
+
+
+
+
+
+
Version 5.66 (internal) (11/25/98)
+
+
+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:
+
+
- At 300 dpi, for 4-bit planar devices in the low-memory
+("partial
+ page") condition, and always for 32-bit planar devices.
+
+
- At 600 dpi, for all devices other than monochrome.
+
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes problems:
+ - The genxxx utilities didn't compile properly on systems where the
+C compiler doesn't automatically search for .h files in the directory of the
+.c file. (unixtail.mak)
+ - Preprocessor definitions require special quoting with Watcom C.
+Fixing this required adding a _D_ macro similar to II. This is a
+NON-BACKWARD-COMPATIBLE change, since this definition is now required in
+each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
+unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
+ - The VMS subdirectories didn't include the "." to make the
+directory name relative. (openvms.mak)
+ - Some of the OpenVMS command files were omitted from the
+distribution. (copy_one.com, rm_one.com, rm_all.com)
+ - MMK interprets a final - on a command line as a continuation
+marker. (gs.mak)
+ - gsiparm4_h was used before being defined. (lib.mak)
+ - Compiled initialization code (COMPILE_INITS=1) was broken because
+of the introduction of subdirectories. (bcwin32.mak, dvx-gcc.mak,
+msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watcw32.mak, int.mak, geninit.c)
+ - Level 1 configurations would no longer build with the standard set
+of drivers. (devs.mak)
+ - wmake interpreted "&" in a rule command line as calling for
+background execution. (wccommon.mak)
+
+Makes the standard set of features the same on all platforms, namely, psl3
+(PostScript LanguageLevel 3) + pdf (PDF 1.2/1.3) + dpsnext (DPS with NeXT
+extensions) + ttfont (ability to load TrueType fonts directly). Unix
+platforms add pipe (recognition of %pipe% file names). (bcwin32.mak,
+dvx-gcc.mak, msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watc.mak, watcw32.mak)
+
+Adds minimal support for Windows 95/NT compiler versions. (wccommon.mak)
+
+Notes a set of switches that may work around the optimizer bug in MSVC++
+5.0. (msvccmd.mak)
+
+
Utilities
+
+Adds a switch to genconf to set the escape character, since wmake interprets
+"&" in a rule command line as calling for background execution. (genconf.c)
+
+Makes echogs recognize -+ alone as equivalent to - alone, for the sake of
+VMS systems, which interpret a final - as a line continuation marker.
+(echogs.c)
+
+Adds a viewpsm procedure to viewpbm.ps, for reassembling plane-separated
+files. (lib/viewpbm.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+Notes a bug in s_DCT_get_quantization_tables. (sdcparam.c)
+
+
Library
+
+Fixes problems:
+ - The algorithm for reducing 4-bit chunky to 1-bit separated colors
+didn't handle the trailing pixels of a transfer correctly. (gdevplnx.c)
+ - Banding for RGB devices with multi-plane halftones was broken.
+(bug introduced recently) (gxdcolor.c)
+ - Mask images were written in the band list with inverted polarity.
+(bug introduced in 5.60) (gximage1.c)
+ - Mask images were always fattened. Fixing this required extending
+the API, since gs_image_t_init_mask set adjust = true by default (a bad
+decision) and we didn't want to change it. (gschar.h, gscpm.h, gsiparam.h,
+gzstate.h, gschar.c, gximage1.c)
+ - The member names push and pop caused problems for compilers whose
+preprocessors consider it an error to use a macro defined with arguments as
+a name without arguments. (gxfont1.h, gstype1.c)
+ - Once again, gcc didn't detect some private/non-private mismatches.
+(gdevplnx.c, gsalphac.c, gximage2.c, gximage4.c)
+ - & was used with an array (which gcc doesn't complain about).
+(gxshade6.c)
+ - There were several uses of automatic aggregate initialization,
+which not all C compilers support. (gdevprn.c, gdevps.c)
+ - There were places where the code assumed that void * could be
+coerced to byte *, which not all C compilers support. (gdevprn.c)
+ - Some \ line continuation characters were used inappropriately
+(in a macro argument list). (gxclimag.c)
+ - Some function prototypes didn't use the Pn macros. (gsalloc.c)
+ - A function definition not at the left margin confused ansi2knr.
+(gsfont.c)
+ - A cast for the result of malloc, needed on systems where malloc
+returns a char * rather than a void *, was missing. (gsmalloc.c)
+ - An occurrence of dev should be pdev. (I can't understand how we
+missed this in 5.65.) (gdevprna.c)
+ - A value was missing from a list of initial structure values,
+causing mismatches between subsequent values and the members they
+initialized. (gcc treated this as a warning: it should have given an
+error.) (gxband.h)
+ - When setting the tile phase during banding, the old value of the
+tile phase was written out rather than the new one. (gxclutil.c)
+ - The definition of fixed_mult_quo wasn't consistent between systems
+with FPU (where it took the floor, and might be slightly inaccurate) and
+systems without FPU (where it truncated towards zero, and was accurate).
+(gxfixed.h, genarch.c, gsmisc.c)
+ - Banding devices using multi-screen halftones didn't set the
+halftone phase correctly. We have now "fixed" this problem at least 4
+times. (gxclrast.c)
+ - The name put_bytes was defined in two places, causing an error
+when linking with NOPRIVATE=1. (gsparams.c)
+ - For [x][y]show, the pointers to the width arrays weren't
+initialized, causing memory access errors when checking or garbage
+collecting. (gschar.c)
+ - Due to a typo, bitmap characters were fattened too much.
+(gximage1.c)
+ - Some identifiers exceeded VMS's limit of 31 characters.
+(gdevprn.h, gscsepr.h, gsdevice.h, gxdevice.h, gdevdflt.c, gdevprn.c,
+gscsepr.c, gsdparam.c)
+ - The device halftone parameter was declared const inappropriately
+in some places. (gsdcolor.h, gxdither.h, gxdcolor.c, gxdither.c)
+ - gdev_mem_raster was used (misleadingly, even though it happened to
+produce the correct result) on possibly non-memory devices. (gxclread.c)
+ - Pure Level 1 configurations had some undefined procedures.
+(gscolor1.c, gscspace.c)
+ - Indexed color images could incorrectly conclude that they didn't
+need to re-render halftones, producing incorrect output. (gximono.c)
+ - gs_device_is_memory returned false for non-banding printer
+devices: this didn't used to matter, but it matters now. We changed it to
+test the procedures rather than the device name. (gdevmem.c)
+ - The plane extraction device didn't handle halftoned colors
+correctly. (gdevplnx.c)
+ - If an error occurred while building a Function object, a crash
+could occur while freeing the partially built object. (gsfunc.c)
+ - The plane extraction device didn't handle RasterOps correctly.
+(gdevplnx.c)
+ - The colors-used mask could include some additional, invalid bits.
+(gxclrect.c)
+ - The colors-used mask was updated incorrectly for RasterOps on
+subtractive-color devices. (gxclrect.c)
+ - Memory devices didn't set enough option bits for the case where
+get_bits_rectangle had to do conversion. (gdevmem.c)
+ - The TrueType font rasterizer didn't accept fonts whose 'type' was
+"true" rather than the documented <00 01 00 00>. (gstype42.c)
+ - A bug in the Watcom compiler caused two conditional expressions to
+execute incorrectly. (gstype42.c)
+ - When a page queue was freed, it attempted to free the page_info
+resource in the reserve entry, which is actually unused. (gxpageq.c)
+ - A necessary #include was missing. (gdevmr2n.c)
+
+Reduces the size of band list entries for halftoned colors somewhat.
+(gxclpath.h, gxclpath.c, gxclrast.c)
+
+Increases the number of saved band color masks per page, mostly for testing.
+(gxband.h)
+
+Rewrites some macros, and one 'for' statement, to eliminate "statement not
+reached" compiler warnings. (gxcldev.h, gxpath2.c)
+
+Corrects a tiny inaccuracy in the computation of trapezoid coordinates.
+(gdevddrw.c)
+
+Edits the trapezoid fill code for greater readability and better
+documentation of its functioning. The new code runs a little slower on
+compilers that don't support 'inline'. (gdevddrw.c)
+
+Improves the documentation of the tile phase bookkeeping. (gxclrast.c)
+
+Documents the fact that fixed_mult_quo takes the floor if the first argument
+is negative. (gxfixed.h)
+
+Finishes implementing clipsave and cliprestore. (gxclipsr.h, gxistate.h,
+gzstate.h, gsclipsr.c, gsstate.c)
+
+Implements driver access to planar, rather than chunky, banding.
+(gdevplnx.h, gdevprn.h, gxclist.h, gxdevcli.h, gxrplane.h, gdevplnx.c,
+gdevprn.c, gxclread.c)
+
+Makes it possible to set up memory devices that allocate just the line
+pointer table (but not the bitmap), or neither the line pointers nor the
+bitmap. (gxdevmem.h, gdevmem.c)
+
+Moves gx_device_white/black to a more appropriate header file. (gxdcolor.h)
+
+Moves gx_default_make_buffer_device to a more appropriate file.
+(gdevdflt.c, gdevprn.c)
+
+Adds plane extraction and expansion utility procedures, required for the
+extended capability of get_bits_rectangle. (gsbitops.h, gsbitops.c)
+
+Extends get_bits_rectangle so it can return individual planes rather than
+all planes. (gdevplnx.h, gsbittab.h, gxbitfmt.h, gxgetbit.h, gdevdgbr.c,
+gdevdrop.c, gdevmem.c, gdevplnx.c, gsalphac.c, gsbittab.c)
+
+Factors out the two more complex cases of gx_get_bits_copy into single-use
+procedures for readability. (gdevdgbr.c)
+
+Makes public the procedure for reducing a colored halftone to a pure or
+binary halftone, needed for planar rendering. (gxdither.h, gxdither.c)
+
+Moves the client_data pointer from gs_state to gs_imager_state.
+(gxistate.h, gzstate.h, gsstate.c)
+
+Extends the plane extraction device to handle fill_mask and images
+efficiently. (gxcmap.h, gdevplnx.h, gdevplnx.c)
+
+Creates a procedure to make a temporary copy of a gs_imager_state, needed
+for planar image processing. (gxistate.h, gsstate.c)
+
+Makes getting the color mapping procedures for a device a virtual procedure
+of the imager state, needed for planar image processing. (gxcmap.h,
+gxistate.h, gxcmap.c, gxicolor.c, gximono.c, gxi12bit.c)
+
+Increases the amount of memory allocated to the asynchronous rasterizer,
+since we now may need a dynamically allocated line pointer table for the
+target (plane) memory device. (gdevprna.c)
+
+Adds a record of which bands have "difficult" RasterOps -- RasterOps that
+can't be executed, even in principle, in CMYK space. We don't do anything
+with this information yet, but we will have to. (gsropt.h, gxband.h,
+gxcldev.h, gxclpath.h, gxclist.c, gxclpath.c, gxclrect.c)
+
+Makes conversion from render_plane indices to bit ranges the responsibility
+of the device, not the client. (gxrplane.h)
+
+
+
+
+
+
Version 5.65 (internal) (11/13/98)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.64 (internal) (11/5/98)
+
+
+This is another incremental fileset to fix problems for an external
+customer.
+
+
Incompatible changes
+
+(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.)
+
+
Documentation
+
+Fixes problems:
+ - The instructions for creating 'makefile' on Unix systems were
+out of date. (doc/Make.htm)
+
+
Procedures
+
+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)
+
+
+
+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)
+
+
+
+
+
+
Version 5.63 (internal) (11/4/98)
+
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+Fixes problems:
+ - devs.mak incorrectly referred to msdevs.mak rather than pcwin.mak.
+(devs.mak)
+
+
Procedures
+
+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)
+
+
Drivers
+
+Updates the Canon BJC library, changing the names of the files. This code
+is still very preliminary. (gdevbjcl.h, gdevbjcl.c)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.62 (internal) (10/31/98)
+
+
+This fileset concludes this round of work on (primarily color) performance
+improvement. It contains almost no new bug fixes.
+
+
Incompatible changes
+
+(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.
+
+
Documentation
+
+Adds information about problems with PDF files copied from Macintosh
+environments. (doc/Use.htm)
+
+
Drivers
+
+Adds a library for generating Canon BJC commands. This code is subject to
+change without notice! (gdevcbjc.h, gdevcbjc.c)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.61 (internal) (10/28/98)
+
+
+More rendering speedups, and fixes for many of the minor problems reported
+in 5.50.
+
+
Docmentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter (PDF)
+
+Fixes problems:
+ - Explicit (not resource) Indexed color spaces caused an error.
+(lib/pdf_draw.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.60 (internal) (10/18/98)
+
+
+This fileset incorporates many performance enhancements for 1-bit CMYK
+devices, especially for PCL 5c interpretation.
+
+
+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.
+
+
Incompatible changes
+
+(Procedures)
+ - The instructions for font compilation in doc/Fonts.htm are
+different.
+ - The fileset has been split into multiple directories; the source
+code and makefiles are now in src/.
+ - The top-level makefile requires a definition for BINDIR for the
+directory to hold the final executable.
+ - Every .dev rule of the form
+ xxx.dev: <list>
+ $(SETyyy) xxx <items>
+ $(ADDMOD) xxx <items>
+must be changed to
+ $(DD)xxx.dev: <list>
+ $(SETyyy) $(DD)xxx <items>
+ $(ADDMOD) $(DD)xxx <items>
+(DD for drivers, PSD for PostScript/PDF-interpreter features, GLD for
+graphics library features). Every -include and -replace option in the
+makefiles rules, and every element of FEATURE_DEVS and DEVICE_DEVS*, must be
+changed similarly. This is very unfortunate, especially since people
+editing FEATURE_DEVS and DEVICE_DEVS* must now know which subsystem
+implements a particular feature; but we tried 3 different ways to get the
+generated .dev files out of the top-level directory, and this was the only
+one we could make work.
+ - Top-level makefiles must define both MAKEFILE and MAKEFILES,
+the latter to include any subsidiary makefiles that define configuration
+parameters. Dependencies on $(MAKEFILE) must be changed to $(MAKEFILES).
+ - Color space objects now must either be allocated with the
+gs_cspace_build_ procedures or initialized with the gs_cspace_init_
+procedures: building color spaces "by hand" is no longer allowed.
+
+(Library)
+ - There are new required elements of the gs_image_type_t structure.
+ - The binary and colored variants of gx_device_halftone have
+changed. (No APIs are affected.)
+ - If a device changes its (effective) color mapping algorithm other
+than as a side effect of put_params, it must call
+gx_device_decache_colors(dev).
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Adds a new switch, -b, to echogs. (echogs.c)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Fixes problems:
+ - A change in the MetroWerks C compiler caused the hypot function
+to become declared. (math_.h)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes problems:
+ - If the final %%EOF was followed by any blanks before the newline,
+an error would occur. (lib/pdf_main.ps)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes problems:
+ - Changing the resolution (or any other parameter) of the bbox
+device from the command line caused an invalid memory access. (gdevbbox.c)
+ - When banding, if the very first drawing operation involved a
+halftone with non-zero phase, an arithmetic exception occurred.
+(gxclpath.c)
+ - When banding, the X offset of the band was negated, producing
+incorrect output when placing multiple source pages on a single output page.
+(gxclread.c)
+ - When banding, rotated images crossing band boundaries produced
+incorrect output, because the subrectangle X value was inconsistent with the
+amount of data transmitted. (gxclimag.c)
+ - When banding, the clipping check didn't take interpolation support
+into account. (gxclimag.c)
+ - The clipping check for banding used (int) to take the floor of
+floating point values, which is wrong for negative values. (gxclimag.c)
+ - The bounding box device didn't return an empty bounding
+rectangle if nothing had been written to it. (gdevbbox.c)
+ - A value was conditional on a debugging switch even if DEBUG wasn't
+defined. (gxcht.c)
+ - Filling a region with a large colored halftone, a non-default
+RasterOp, and a non-null RasterOp source could cause only part of the region
+to be filled. (gxcht.c) ****** NOT FIXED YET ******
+ - Type 1 fonts that used very large numbers (>= 2^19) caused a
+rangecheck. We've fixed this for the only case that seems to matter, namely
+<very-large-number> <number> div. (gxtype1.h, gstype1.c)
+ - The memory-based band list allocator failed to return an error
+code from memfile_next_blk. (gxclmem.c)
+ - When recovering from a low-band-list-memory condition while
+writing an image, the record of the current image enumeration
+(cdev->image_enum_id) wasn't updated. (gxclimag.c)
+ - The estimated memory requirement for the band list rasterizer was
+too small. (gdevprna.c)
+
+Adds some tracing to mask clipping. (gxclipm.c)
+
+Speeds up masked images by doing mask clipping before halftoning, using a
+more efficient mask scanning algorithm, and checking for vertical blocks of
+1s. (gxclipm.c)
+
+Speeds up ImageType 4 images greatly by incorporating the color-key check
+into the ImageType 1 rendering code. NOTE: the 12-bit case has not been
+tested. (gxcpath.h, gximage.h, gxi12bit.c, gxicolor.c, gxifast.c,
+gxiinit.c, gximage4.c, gximono.c, gxiscale.c)
+
+Implements passing ImageType 4 images (and potentially others) through the
+band list. This involves adding image parameter writing and reading
+procedures to the image type structure. (gscdefs.h, gsiparam.h, gsiparm2.h,
+gsiparm4.h, gsmatrix.h, gxclpath.h, gxiparam.h, gconf.c, genconf.c,
+gsmatrix.c, gxclimag.c, gxclist.c, gxclpath.c, gxclrast.c, gxiinit.c,
+gximage2.c, gximage3.c, gximage4.c)
+
+Splits off the generic image support code from the ImageType 1 code.
+(gxiinit.c [deleted], gximage.c, gximage1.c, gxipixel.c)
+
+Removes some vestiges of support for 16-bit environments. (gsmisc.c)
+
+Implements bit-planar images, important for PCL interpretation.
+(gsiparam.h, gximage.h, gxiparam.h, gdevddrw.c, gdevpdfi.c, gdevps.c,
+gsimage.c, gxclimag.c, gxidata.c, gximage.c, gxipixel.c) ****** NOT TESTED
+YET ******
+
+Makes closing a memory device that owns its bitmap set the bitmap pointer to
+0, for the sake of an application that doesn't handle is_open properly.
+(gdevmem.c)
+
+Speeds up floating-point emulation for single-precision add, subtract, and
+multiply. (gsfemu.c)
+
+Speeds up sampling of transfer functions. (gshtx.c)
+
+Makes the CIE cache used fixed-point values if the CPU has slow floating
+point. (gscie.h)
+
+Adds a unique ID to color spaces to allow fast detection of reselecting the
+same color space. This matters for certain client code that repeatedly
+reselects the same color space, since selecting certain color spaces is
+expensive. (gscpixel.h, gscspace.h, gxcspace.h, gscolor2.c, gscpixel.c,
+gscscie.c, gscspace.c, gspcolor.c, gsstate.c, gximage2.c) ****** NEED TO FIX
+gxclrast.c TO ALLOC INDEXED COLOR SPACE ******
+
+Speeds up setting Pattern color spaces, by bypassing the install code for
+the base space. (gspcolor.c)
+
+Adds a unique ID to CRDs to allow fast detection of reselecting the same
+CRD. This matters for certain client code that does this repeatedly.
+(gscie.h, gscrd.h, gscrd.c)
+
+Detects setting the CRD to one with identical PQR components, and bypasses
+an expensive setup step. (gscie.c)
+
+Speeds up converting pixels between representations (gx_get_bits_copy) for
+devices with up to 4 bits per pixel, by caching the pixel values.
+(gdevdgbr.c)
+
+Speeds up the slow default RasterOp algorithm a little. (gdevdrop.c)
+
+Defines standard mapping procedures for 1-bit-per-component CMYK colors.
+Other code can then test for the presence of these procedures and use more
+efficient algorithms. (gxdevice.h, gxcmap.c)
+
+Speeds up some algorithms in the bbox device by making some recursive calls
+use a pure color rather than a client-supplied one. (gdevbbox.h, gdevbbox.c)
+
+Adds a cache for the black and white pixel values to the device structure.
+(gxdevcli.h, gxdevice.h, gdevalph.c, gdevnfwd.c, gsdparam.c, gxdcolor.c)
+
+Makes the code for colored halftones a little more readable. (gxcht.c)
+
+Speeds up color mapping for CMYK devices by copying the color mapping
+procedures into forwarding devices, when applicable. (gdevcmap.c,
+gdevmem.c, gsdevice.c, gxclip.c)
+
+Removes some compiler warnings (mostly about "uninitialized" variables).
+(gxcldev.h, gsdevmem.c, gsshade.c, gstype42.c, gxclpath.c, gxfill.c,
+gximage3.c, gxpath2.c, gxpcopy.c)
+
+For the benefit of certain client code that commonly sets a CRD and then
+doesn't use it, makes loading of the joint CIE caches lazy (at the library
+level). (gscie.h, gscie.c)
+
+Changes CIE color restriction from a macro to a procedure, since it is
+rarely used. (gscie.c)
+
+Adds code and structures for detecting when CIE Decode and/or Encode
+procedures are simply linear transformations, which would allow collapsing
+them into the adjacent matrix, but doesn't actually do the collapsing.
+(gscie.h, gscie.c)
+
+Speeds up color halftoning by pre-computing the mask of planes that need to
+be halftoned, and preconverting multi-plane halftones to binary or solid
+colors when possible. (gsdcolor.h, gxcht.c, gxdcolor.c, gxdither.c, gxht.c)
+
+Optimizes color mapping for 1-bit-per-component CMYK halftones. (gxcht.c)
+
+Optimizes null RasterOp sources for black = 1 as well as black = 0.
+(gxdcolor.c)
+
+Modifies the standard allocator so it keeps track of large free blocks as
+well as small ones, and uses them to satisfy requests when appropriate.
+(gxalloc.h, gsalloc.c)
+
+Speeds up the horizontal bitmap replication code a bit. (Much more is
+possible.) (gsbitops.c)
+
+Changes gs_image_max_planes to gs_image_max_components to reflect its
+function more accurately. (gdevddrw.c)
+
+
+
+
+
+
Version 5.50 (9/16/98)
+
+
+This is the first public release since 5.10. See
+the release summary
+for a list of major additions and changes.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+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)
+
+
Utilities
+
+Fixes problems:
+ - echogs -h didn't work in environments where char is signed.
+(echogs.c)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.40 (beta) (9/10/98)
+
+
+A few more fixes. This is intended as the candidate fileset for the 5.50
+release.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Adds a make target (make docs) to touch up documentation files before a
+release. (unix-end.mak)
+
+
Utilities
+
+Removes the long-obsolete ps2image.ps utility. (ps2image.ps [deleted])
+
+
Drivers
+
+Adds a driver for the Color LaserJet 5. (devs.mak, gdevclj.c)
+
+
+
+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)
+
+
+
+
+
+
Version 5.39 (beta) (9/8/98)
+
+
+A couple more small fixes.
+
+
Drivers
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.38 (beta) (9/3/98)
+
+
+The sole purpose of this release was to fix some obscure bugs detected by
+the Genoa tests and by another Aladdin project.
+
+
Documentation
+
+Updates the list of implemented PostScript LanguageLevel 3 features.
+(current.txt)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.37 (beta) (8/31/98)
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Adds a utility for creating maps from CIDs to Unicode. (unixinst.mak,
+cid2code.ps)
+
+
Drivers
+
+Removes the %Fax% IODevice code, since it was only a skeleton and Adobe no
+longer supports this facility. (devs.mak, gdevpfax.c [deleted])
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.36 (beta) (8/25/98)
+
+
+Another set of fixes. The free-standing bbox device now produces convenient
+%%BoundingBox messages. This fileset also includes support for double-byte
+TrueType fonts.
+
+
Documentation
+
+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)
+
+
Utilities
+
+Fixes problems:
+ - The viewgif utility sometimes left 1-scan-line gaps when rendering
+interlaced images. (viewgif.ps)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.35 (beta) (8/18/98)
+
+
+More updates for 5.3x, specifically fixing problems with halftones on banded
+CMYK devices.
+
+
Documentation
+
+Fixes problems:
+ - The URLs for the third-party libraries were out of date.
+(make.txt, jpeg.mak, libpng.mak, zlib.mak)
+
+
Drivers
+
+Adds an x11gray4 device for help in debugging. (devs.mak, gdevxalt.c)
+
+
Fonts
+
+Fixes problems:
+ - TrueType fonts with more than 64K of data before or after the
+glyfs caused an error. (gs_ttf.ps)
+
+
Interpreter
+
+Fixes problems:
+ - The dictionary returned by currentuserparams was allocated in the
+current VM rather than always in local VM. (gs_lev2.ps)
+
+
Interpreter (PDF)
+
+Fixes problems:
+ - CID-keyed fonts caused an error, because their CDevProc was
+incorrect. (pdf_font.ps)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.34 (beta) (8/16/98)
+
+
+More updates for 5.3x.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes problems:
+ - The MSVC library makefile incorrectly included gp_msio.c.
+(msvclib.mak, winlib.mak)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.33 (beta) (8/14/98)
+
+
+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.
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes problems:
+ - TrueType fonts with *less* than 64K of glyf data stopped working.
+(bug introduced in 5.31) (gs_ttf.ps)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.32 (beta) (8/13/98)
+
+
+This is the second set of updates for 5.30.
+
+
Procedures
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes problems:
+ - Forms used more than once caused an invalidaccess error.
+(pdf_draw.ps)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.31 (limited) (8/11/98)
+
+
+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.
+
+
Drivers
+
+Moves some casting macros from generic files to the few specific files that
+use them. (gdev4693.c, gdevn533.c, gdevsnfb.c)
+
+
Interpreter
+
+Changes ImageType 4 images to match the change in the library interface.
+(zimage3.c)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.30 (limited) (8/10/98)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - The Unix build procedure didn't create the obj subdirectory
+automatically. (unixhead.mak, unix-end.mak)
+ - gsdll_h wasn't defined for the OS/2 PM device. Fixing this
+properly required moving the OS/2 drivers into the same makefile as the MS
+Windows drivers, and renaming the file. (devs.mak, msdevs.mak => pcwin.mak,
+winlib.mak)
+ - gsiparm4_h was used before it was defined. (lib.mak)
+ - Building with shared libaries still used header files in
+Ghostscript's directories, not the ones in /usr/include. ****** NOT DONE
+YET ******
+ - The makefiles all assumed they were located in the current
+directory, not in the source directory. (*.mak)
+
+Adds new 'debugclean' and 'pgclean' targets, parallel to 'debug' and 'pg',
+for the Unix platforms. (unix-end.mak)
+
+Changes the management of .dev files so that on Unix platforms, one can
+really maintain standard, debugging, and profiling builds simultaneously.
+This is a hack, but a fairly reliable one. (gs.mak, unixhead.mak,
+unix-end.mak)
+
+Adds a dummy thread / semaphore / monitor implementation to all platforms
+other than Windows. (dvx-tail.mak, openvms.mak, os2.mak, ugcclib.mak,
+unixtail.mak, watc.mak, watclib.mak)
+
+
Drivers
+
+Updates driver support to use the new write-position stream. (gdevpsdf.c)
+
+
Platforms
+
+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).
+
+
Fonts
+
+Fixes bugs:
+ - CIDFontType 0 fonts didn't select the proper VM space for adding
+entries to font dictionaries, and for loading Subrs strings. (gs_cidfn.ps)
+ - TrueType fonts with an odd glyfs length didn't work. (gs_ttf.ps)
+ - TrueType fonts with a Format 3 'post' table didn't work.
+(gs_ttf.ps)
+ - TrueType fonts where the encoding in the 'post' table didn't cover
+the entire set of glyfs didn't work. (gs_ttf.ps)
+ - TrueType fonts with more than 128K of glyfs didn't work.
+(gs_ttf.ps)
+ - TrueType cmap format 6 didn't work. (gs_ttf.ps)
+ - CIDFontType 0 fonts with hex data didn't skip over the > at the
+end of the data. (gs_cidfn.ps)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes bugs:
+ - ImageType 4 images with >1 input component didn't work.
+(gximage4.c)
+ - Sampled functions didn't keep the fractional part when
+interpolating, possibly leading to infinite recursion in shading.
+(gsfunc0.c)
+ - The color error value for shadings was computed incorrectly for
+CIE color spaces. (gxshade.c)
+ - The CharstringType 2 'roll' operator rolled the operands in the
+wrong direction. (gstype2.c)
+ - Images with RasterOp or transparency didn't retain the current
+color properly, leading to unpredictable results. (gdevmrop.h, gsropt.h,
+gdevddrw.c, gdevrops.c, gxdcolor.c, gxiinit.c, gximage3.c)
+ - A cast to void * was needed to remove a const modifier.
+(gscrdp.c)
+ - On 8-bit non-gray-scale devices, RasterOp values of all-0s or
+all-1s produced the wrong output. (gdevmrop.c)
+ - The GC procedure for halftone screen enumerators was wrong,
+possibly causing invalid memory access errors. This bug predates 5.10.
+(gshtscr.c)
+ - An extra pair of string quotes confused some compilers.
+(gsshade.c)
+ - There were several errors in the CharstringType 2 'flex'
+operators. (gstype2.c)
+ - The structure descriptors for devices weren't initialized in
+library-only configurations. (int.mak, gconf.c)
+ - The Pattern cache got confused if the current device when a
+Pattern color was used wasn't the same as the current device when the
+Pattern instance was created. (gxpcmap.c)
+ - The target of forwarding devices wasn't reference-counted
+properly. (gsdevice.c) ****** FIXING THIS PROPERLY WILL BE A LOT OF WORK:
+WE ONLY FIXED gs_setdevice_no_erase ******
+ - As a result of fixing a typo, the structure declaration for
+gx_page_queue was private, causing clients not to compile. We left it
+private and added an instance allocation procedure. (gxpageq.h, gdevprna.c,
+gxpageq.c)
+ - The mask for ImageType 3 images was clipped (incorrectly).
+(gximage3.c)
+ - Interpolated images with negative X->X values in the CTM were
+displaced on the page. (gxiscale.c)
+
+Finishes integrating the asynchronous rendering code. (gpsync.h, gxclist.h,
+gdevprna.c, gsmemlok.c, gxclimag.c, gxclpath.c, gxclutil.c)
+
+Updates the memory manager API for additional flexibility needed for
+asynchronous rendering. (gsmalloc.h, gsmemlok.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c)
+
+Updates the standard memory manager to work with a fixed (externally
+supplied) set of chunks, needed for asynchronous rendering, removing some
+macros in the process. (gsalloc.h, gsalloc.c)
+
+Updates some code to use more mnemonic variable names. (gstype2.c,
+gxicolor.c)
+
+Removes some macros for better readability. (gdevmrop.c)
+
+Adds dummy implementations of clipsave and cliprestore. (gsclipsr.h,
+gsclipsr.c)
+
+Implements an alternative, but completely untested, parameter list
+serializer based on streams. (gsparam2.c)
+
+Moves more of the internal memory manager structures from gsmemory.h to
+gsstruct.h. (gsmemory.h, gsstruct.h, gsmemory.c)
+
+
+
+
+
+
Version 5.28 (limited) (8/3/98)
+
+
+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).
+
+
+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.
+
+
Documentation
+
+Notes that the MSVC++ 5.0 compiler may lock up when compiling gxi12bit.c
+with optimization. (make.txt)
+
+
Procedures
+
+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)
+
+
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+Fixes bugs:
+ - The tracing code for restore_resources could access an invalid
+address. (isave.c)
+ - sizeof(procedure) is not allowed in ANSI C++. (opdef.h,
+iccfont.c, interp.c, ireclaim.c)
+ - A variable was declared incorrectly as bin_token_type_t rather
+than bin_seq_type_t. (iscanbin.c)
+ - The behavior of copypage didn't change in LanguageLevel 3.
+(gs_init.ps)
+ - When grestore et al reactivated a page device, they performed an
+initgraphics, which should only be performed by showpage. (gs_setpd.ps)
+ - The RunLengthEncode filter was broken in cases where the caller
+supplied a record size. (bug introduced in 5.2x) (zfilter.c)
+ - A needed #include of memory_.h was missing. (zfreuse.c)
+ - On machines with sizeof(long) > sizeof(int), the dictionary form
+of image and imagemask didn't work. (bug introduced in 5.2x) (zimage2.c)
+ - exitserver left a 'true' on the operand stack. (gs_lev2.ps)
+
+Replaces the STACK_LOOP_BEGIN/END macros with procedures. (We retain the
+macros for backward compatibility.) (istack.h, istack.c, zchar.c,
+zcontrol.c, zdict.c, zvmem.c)
+
+Reviews the remaining operator files for ease of reading / debugging,
+including removing macros where appropriate. (z*.c)
+
+Changes the dictionary stack printer to indicate whether the dictionary is
+allocated in global or local VM. (gs_init.ps)
+
+Redefines countexecstack and execstack as operators, solely for the sake of
+the Genoa [count]execstack tests. (gs_init.ps, zcontrol.c)
+
+Changes array/string/packedarray forall not to keep an index on the stack,
+solely for the sake of the Genoa [count]execstack tests. (zgeneric.c)
+
+Finishes implementing CIEBasedDEF[G] color spaces. (icie.h, zcie.c)
+
+Adds a ColorSpace resource instance for sRGB. (gs_lev2.ps, gs_res.ps)
+
+Implements CloseSource and CloseTarget for filters. ****** DOESN'T WORK IF
+AN EXCEPTION OCCURS DURING A NESTED CLOSE. ****** (zfile.c)
+
+Allows Separation and DeviceN color spaces as the base space for an Indexed
+color space. (zcsdevn.c, zcsindex.c, zcssepr.c)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - In PDF files, Indexed color spaces with a CIEBasedABC base space
+gave an /undefined error. (pdf_draw.ps)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.27 (limited) (7/18/98)
+
+
+This is another "in-flight" snapshot made in preparation for the 5.2x / 5.1x
+code merge. It completes the driver CRD API.
+
+
Documentation
+
+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)
+
+
Procedures
+
+Fixes bugs:
+ - sjpegerr.o was needed even when using the shared JPEG library.
+(jpeg.mak)
+
+Changes the name of the jpeg library directory from jpeg-<version> to just
+jpeg, to parallel libpng and zlib. (make.txt, *.mak)
+
+Creates a separate makefile for contributed drivers. Eventually these
+drivers will go in a separate directory. (devs.mak, contrib.mak, *.mak)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Adds thread support to the Win32 platform. (gp_win32.c)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.26 (limited) (7/7/98)
+
+
+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.
+
+
Procedures
+
+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)
+
+
Drivers
+
+Fixes bugs:
+ - A closing bracket was omitted (in code that is ifdef'd out).
+(gdevpdf.c)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+Updates clients for changes in CRD API. This involves some changes in
+internal procedures. (gs_lev2.ps, icie.h, zcie.c, zcrd.c)
+
+
Library
+
+Fixes bugs:
+ - Pickling string, name, and array parameters tried to force
+inappropriate alignment. (gsparams.c)
+ - Pickling dictionary parameters wrote the result in the wrong
+place. (gsparams.c)
+ - An occurrence of dev_t should have been gx_device. The compiler
+didn't catch this because there happens to be a type named dev_t in
+<types.h> (!). (gxclread.c)
+
+Adds an API for drivers to provide one or more CRDs (as device parameters).
+Makes a small but NON-BACKWARD-COMPATIBLE change in the names and argument
+lists of the existing CRD API (which is not used by anything in the standard
+configuration). (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c, gscrdp.c,
+gslib.c)
+
+
+
+
+
+
Version 5.25 (limited) (7/1/98)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes bugs:
+ - Substituted fonts had their FontName set to the requested one.
+There was a comment in the code saying that some files that depend on this
+happening, but Adobe implementations don't do it. However, aliased fonts in
+Fontmap will continue to have the FontName set to the Fontmap key.
+(gs_fonts.ps)
+
+Adds the euro symbol at position 240 (0360) in SymbolEncoding. This is a
+PostScript 3 addition, but it's too much work to make it appear there only
+if languagelevel >= 3. (gs_sym_e.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Adds font synthesis based on the FontDescriptor. Currently this is very
+rudimentary. (pdf_font.ps)
+
+
Drivers
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.24 (limited) (6/17/98)
+
+
+In addition to the usual bug fixes, and a few enhancements where temptation
+proved irresistible or in response to an external need, this fileset:
+
+
- Takes the first steps on a major readability cleanup
+ (4-space indentation instead of 2, replacement of macros by
+ procedures, ....)
+
+
- Implements a bit more of the DPS functionality, including view
+ clipping, and gstate stack copying for 'fork'.
+
+
- Starts to sketch a text API for drivers.
+
+
- Changes the Unix makefiles so that they create production
+binaries
+ in a separate directory.
+
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes bugs:
+ - The derived (Bold, Oblique, ...) Hershey fonts were broken.
+(fonts/makeher.ps, fonts/h*.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes bugs:
+ - The masked image clipper sequenced through mask rows incorrectly.
+(gxclipm.c)
+ - gx_[c]path_init_local_shared were declared as returning void, but
+could actually return an error. (gxpath.h, gxcpath.c, gxpath.c)
+ - As always, gcc failed to report some static/non-static
+inconsistencies. However, to my dismay, I find that the ANSI C standard
+allows these, so I'll have to stop complaining about them. (gxclimag.c,
+gxclipm.c)
+ - As always, gcc failed to report some signed/unsigned char *
+mismatches. (gdevpdfi.c, gsparam.c)
+ - A loop counted on a non-existent zero value to mark the end of the
+IODevice table. (gsiodev.c)
+ - Some needed #includes of memory_.h were missing. (gdevddrw.c,
+gscolor2.c, gscrdp.c, gscspace.c, gxclipm.c, gximage3.c, gxshade4.c)
+ - Pattern device colors didn't have access to the original halftone
+phase, making it impossible to handle non-standard X/YStep correctly.
+(gsdcolor.h, gspcolor.c)
+ - Pattern filling disregarded the phase. THIS MAY UNDO A FIX MADE
+IN 5.02. WE NEED TO RE-TEST PATTERNS CAREFULLY. (gxp1fill.c)
+ - restore did some unnecessary gsaves. (gsstate.h, gsstate.c)
+ - The reference counting macros could read from an object after
+freeing it. (gsrefct.h)
+ - setgstate and currentgstate freed the view clipping path, which
+they shouldn't do. (gsstate.c)
+ - If no view clipping path was set, viewclippath returned the entire
+extent of the device, not the imageable area. (gxpath.h, gsdps.c, gspath.c)
+ - Assigning one stack-allocated path to another incorrectly wound up
+sharing their segments. (gxcpath.c, gxpath.c)
+ - dot_length_absolute was incorrectly declared as float rather than
+bool. (gxline.h)
+ - The test for varying-depth banded images was incorrect, causing
+varying-depth images to be treated as constant-depth. (This only affected
+ImageType 3 images.) (gxclimag.c)
+ - Failure to clamp Y values when processing banded images could
+cause crashes or invalid band list data. (gxclimag.c)
+ - The changes in gsparam.c introduced in 5.23 made the coercion of
+int arrays to float arrays fail. (gsparam.h, gsparam.c)
+ - Interpolated banded images could be transmitted incompletely,
+causing narrow stripes to be chopped out of their rendering. (gxclimag.c)
+ - FunctionType 0 functions with 32-bit samples didn't read their
+data correctly. (gsfunc0.c)
+ - Lattice-form Shadings with packed coordinates could crash or
+produce incorrect results. (gxshade.c)
+ - Lattice-form Shadings with packed coordinates always returned an
+error. (gxshade4.c)
+ - If the PaintProc of a Pattern or a Form, or a CharString
+procedure, or a similar callback copied the current graphics state with
+gstate or currentgstate, a dangling reference to the device could result.
+Fixing this required adding a reference count to devices: internally created
+devices initialize it to 0, externally visible devices initialize it to 1.
+THIS IS A DELICATE CHANGE AND WILL PROBABLY HAVE A BUG TAIL. (gsdevice.h,
+gxdevcli.h, gxdevice.h, gdevmem.c, gdevmrop.c, gdevnfwd.c, gschar.c,
+gsdevice.c, gsmemory.c, gspaint.c, gsstate.c, gxacpath.c, gxccman.c,
+gxclip.c, gxmclip.c, gxpcmap.c)
+ - The return_if_error macro referred to code rather than code_.
+(gserror.h)
+ - Non-monotonic halftones didn't allocate enough slots in the
+halftone cache. (gxht.c)
+ - setpagedevice with a 0-size page didn't fail. Fixing this
+required making the nullpage device provide explicit InputAttributes.
+(gdevnfwd.c)
+ - Halftone angles were often slightly off. (gshtscr.c)
+ - Banded fill_mask operations (used for characters) were sometimes
+broken. This bug was obviously introduced since 5.10; I'm surprised that it
+didn't have more serious effects. (gxclread.c)
+ - Partially transparent patterns didn't work with non-default
+RasterOp values. (gxp1fill.c)
+ - The default implementation of strip_copy_rop didn't handle color
+space conversion properly. (gdevmrop.c)
+ - Hint replacement could cause the initial moveto and final
+closepath of a Type 1 outline to differ, confusing the filling code.
+(gxhint3.c)
+ - Interpolated images were truncated at the bottom. (bug probably
+introduced in 5.23) (gxiscale.c)
+ - Using an unsigned type for the index passed to enum_ptrs
+procedures caused comparisons against signed values to be incorrect.
+(gsstruct.h)
+
+Rewrites the rectangle list and mask clipping algorithms to use callback
+procedures rather than macros. The rectangle list source code grew by 20%,
+but the compiled code shrank from 10K to less than 4K; the mask clip source
+code and compiled code both shrank. (gxclip.h, gxmclip.h, gxclip.c,
+gxclip2.c, gxclipm.c, gxcpath.c)
+
+Removes all remaining uses of _ds and _ss. (gsmemory.h, gsstruct.h, gzht.h,
+stdpre.h, gp_dosfb.c, gsbitops.c, gscie.c, gsht.c, gstype1.c, gstype2.c,
+gxclpath.c, gxclread.c, gxcmap.c, gxfill.c, gxi12bit.c, gxop1.h, gxpflat.c,
+gxstroke.c, gxtype1.c)
+
+Changes some GC procedures from explicit code to standard macros.
+(gsstruct.h, gscscie.c, gxcht.c)
+
+For easier debugging, changes gs_debug_c to a procedure; removes
+gs_if_debug_c and do_debug. (gdebug.h, gsht1.c, gsmisc.c, gspaint.c,
+gxcht.c, gxht.c, gxpcmap.c)
+
+Changes the num_components member of the color space structure to a
+procedure, which is needed because DeviceN color spaces have a variable
+number of components; also makes Pattern spaces return -1 - the correct
+num_components instead of -1. This is a NON-BACKWARD-COMPATIBLE CHANGE.
+Also adds a base_space procedure. (gxcspace.h, gscdevn.c, gscolor1.c,
+gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c, gscspace.c, gspcolor.c,
+gxiinit.c, gxiscale.c)
+
+Changes all groups of statistic-gathering variables to be structure
+variables named stats_*. (gxclip.c, gxclist.c, gxclpath.c, gxfill.c,
+gxifast.c)
+
+Starts to pull apart gs_makebitmap/pixmappattern to remove the dependency on
+masked images. (gspcolor.c)
+
+Splits the C heap allocator from generic allocator support. (gsmemory.c,
+gsmalloc.c)
+
+Removes all uses of far_data other than references to device (but not
+device2) prototypes. (gdevmem.h, gdevmrop.h, gxdevcli.h, gconf.c,
+gdevabuf.c, gdevht.c, gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c,
+gsbittab.c, gsflip.c, gsroptab.c, gxcht.c)
+
+Adds a streams member to gs_ref_memory_t. The library doesn't use this, but
+it greatly simplifies the interpreter's bookkeeping. (gsalloc.h, gxalloc.h,
+gsalloc.c)
+
+Adds some more opaque types to the graphics state structure, rather than
+using naked struct types. (gsccolor.h, gzstate.h)
+
+Introduces the notion of the "effective clip path" in a graphics state.
+Painting operators should now call gx_effective_clip_path rather than using
+the clip_path member directly. (gxpath.h, gschar.c, gsdps1.c, gsimage.c,
+gspaint.c, gspath.c, gxccache.c, gxpaint.c)
+
+Implements view clipping. (gzstate.h, gspath.c, gsstate.c)
+
+Starts to pare down the fit_* macros in gxdevice.h, since some people feel
+strongly they are hard to follow, and also adds BEGIN/END wrapping.
+(gxdevice.h, gdevabuf.c, gdevmem.c, gxclpath.c)
+
+Refactors the structure definition macros in anticipation of moving to a
+more table-driven approach. Replaces ENUM_CALL, ENUM_RETURN_CALL, and
+RELOC_CALL with ENUM_USING and RELOC_USING. (gsstruct.h, gdevmem.c,
+gshtscr.c, gxcpath.c, gxiinit.c)
+
+Sketches a table-driven rather than procedural representation for GC
+descriptors. We believe this will improve readability, reduce code size,
+and perhaps reduce cache thrashing during garbage collection. This requires
+a NON-BACKWARD-COMPATIBLE CHANGE to the enum_ptrs, reloc_ptrs, and
+clear_marks procedures (to add the structure descriptor as a parameter).
+This should not affect any ordinary clients, because they should already
+define these procedures using the macros in gsstruct.h, which *are*
+backward-compatible; however, they do affect two internal clients that use
+their own type tags with unions (color spaces and device colors).
+(gsstrtab.h, gsstruct.h, gsalloc.c, gsstrtab.c)
+
+Updates color spaces for the change in enum_ptrs and reloc_ptrs.
+(gxcspace.h, gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c,
+gscsepr.c, gscspace.c, gspcolor.c)
+
+Updates device colors for the change in enum_ptrs and reloc_ptrs.
+(gsdcolor.h, gxdcolor.h, gxpcolor.h, gspcolor.c, gxcht.c, gxcmap.c,
+gxdcolor.c, gxht.c, gxp1fill.c)
+
+Implements a hit detection device at the library level. (gserrors.h,
+gdevhit.c)
+
+Changes some configuration parameters from #defines to statics. (gschar.c)
+
+Changes "simple" structures so they no longer have 0 for the enum_ptrs or
+reloc_ptrs procedure. This is a NON-BACKWARD-COMPATIBLE CHANGE for
+structure-definers that don't use the macros in gsstruct.h (of which there
+shouldn't be any). (gsstruct.h, gsalloc.c)
+
+Adds the structure type name to the debugging printout for freeing objects.
+(gsalloc.c)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(gxclread.c)
+
+Removes all uses of 'near' from the library: if short and long calls have
+different formats, we rely on the compiler to generate the most efficient
+one. (gscie.c, gscoord.c, gsimpath.c, gsstate.c, gstype2.c, gxclpath.c,
+gxclread.c, gxfill.c, gxhint1.c, gxhint2.c, gxhint3.c, gxstroke.c)
+
+Adds 'inline' to stdpre.h, defined as the empty string on compilers other
+than the ones we know accept it. (stdpre.h)
+
+Adds printout of the subrectangle to ImageType 1 tracing. (gxiinit.c)
+
+Replaces a few uses of gs_memory_default with dev->memory. (gdevdbit.c,
+gxclread.c)
+
+Improves support for halftone objects not associated with graphics states.
+This involves a minor change to the definitions of gs_spot_halftone and
+gs_threshold_halftone, to define the transfer function as a closure. This
+is slightly NON-BACKWARD-COMPATIBLE in that it requires clients to set
+transfer_closure.proc to 0 if they also set transfer to 0. NOTE: the API
+defined in gshtx.h is subject to future change. (gscsepnm.h, gshtx.h,
+gxdht.h, gxfmap.h, gxht.h, gxtmap.h, gscolor.c, gsht.c, gsht1.c, gshtx.c)
+
+Changes the Bezier approximation of arcs to cut arcs at absolute multiples
+of 90 degrees rather than at intervals of 90 degrees (e.g., an arc from 45
+to 105 would now be cut at 90 rather than being treated as a single
+60-degree curve) in order to produce more uniform output and also to ensure
+that the bounding box for arcs is more accurate (to pacify the Genoa FTS).
+(gxfarith.h, gsmisc.c, gspath1.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(gsbitops.h, gsdsrc.h, gserror.h, gsmdebug.h, gsrect.h, gxcldev.h, gxfunc.h,
+gxop1.h, gxtype1.h, gsalphac.c, gsshade.c, gstype2.c, gstype42.c,
+gxclread.c, gxcpath.c, gximage4.c, gxpath.c)
+
+Adds a user-defined halftone type, to support non-monotonic halftones. We
+could make any of the following structures fully object-oriented:
+ - Halftones (client level)
+ - Halftone orders (device level, but not rendered)
+ - Device halftones (device level, fully rendered)
+The right place to do this for non-monotonic halftones, which are specified
+directly by bit masks, is at the device halftone level. However, there are
+too many places that know too much about the implementation of device
+halftones and halftone orders right now. WE NEED TO REVISIT THIS AFTER THE
+5.1x CODE BRANCH IS TERMINATED. SHOULD ALSO CONVERT UNION TO TYPED UNION
+FOR GC -- CODE IS DUPLICATED IN gsht.c VS gshtx.c. (gxdht.h, gxht.h,
+gxhttype.h, gshtx.h, gsht.c, gsht1.c, gshtx.c)
+
+Moves the procedures in Type 1 font data into a structure. This is a
+NON-BACKWARD-COMPATIBLE CHANGE, but an internal one. (gxfont1.h, gstype1.c,
+gstype2.c, gxtype1.c)
+
+Extends Type 1 / 2 / 4 fonts to require that they be able to enumerate the
+set of glyphs that they define, to allow writing them out. We may propagate
+this to all base fonts in the future. (gxfont1.h)
+
+Provides some utilities for devices that want to define their own
+InputAttributes and OutputAttributes. (gdevprn.h, gxdevice.h, gdevprn.c,
+gsdparam.c)
+
+Removes all of the text-display procedures that took null-terminated C
+strings as operands. This is NON-BACKWARD-COMPATIBLE. However, since the
+memory manager required that all such operands be allocated using
+gs_alloc_string, the procedures were never usable with arbitrary C strings
+anyway. (gschar.h, gschar.c)
+
+Renames the gx_device procedure record from std_procs to procs, in
+anticipation of more unified support for "objects". This is a
+NON-BACKWARD-COMPATIBLE CHANGE for a surprisingly large number of clients
+that should have been using dev_proc and set_dev_proc. (gdevbbox.h,
+gxdevcli.h, gxdevice.h, gdevdflt.c, gdevdgbr.c, gdevmem.c, gdevprn.c,
+gsalphac.c, gsdevice.c, gsropc.c, gxccache.c, gxifast.c)
+
+Disallows setting of the RasterOp-related graphics state parameters when
+a cache device is active. (gsrop.c)
+
+Changes the tracing printout of path segments to provide enough accuracy to
+cover all the fraction bits of a 'fixed'. (gxpath.c)
+
+
+
+
+
+
Version 5.23 (limited) (5/14/98)
+
+
+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.
+
+
+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.
+
+
+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.
+
+
Documentation
+
+Adds documentation for:
+ - The changes in begin_image and related facilities. (drivers.txt)
+ - The addition of -Z/. (use.txt)
+ - The new ps2ps utility. (ps2ps.1)
+ - The new get_hardware_params procedure. (drivers.txt)
+ - The new -B<size> / -B- switch. (use.txt).
+
+Improves the documentation for the sample_ macros. (gsbitops.h)
+
+Adds some documentation on how the debugging/tracing flags work. (gdebug.h)
+
+Improves the documentation of DDAs. (gxdda.h)
+
+Documents a subtle change in the meaning of a flag in the PDF
+FontDescriptor. (pdf_font.ps)
+
+Changes the location of the authoritative site for zlib sources. (zlib.mak)
+
+Corrects a typo. (gsht1.h)
+
+Removes pdf_2ps.ps from the fileset. (psfiles.txt)
+
+Adds standard file name comments to all .c and .h files that didn't already
+have them. (dodebug.h, gdev3b1.c, gdev8510.c, gdevadmp.c, gdevhl7x.c,
+gdevimgn.c, gdevo182.c, gdevpdfx.h, gdevpe.c gdevsco.c, gdevsj48.c,
+gdevvglb.c, gsalpha.c, gscolor1.c, gscsepr.h, gsdsc.c, scfetab.c string_.h,
+zfunc3.c, zmedia2.c)
+
+Unifies the nroff styles of the various man pages a bit. (*.1)
+
+Adds a reference to the CTAN mirror sites. (new-user.txt)
+
+Notes that the result of rect_intersect may be anomalous. (gsrect.h)
+
+Improves the documentation for the Distiller parameter handling code.
+(gdevpdfp.c, gdevpsdp.c)
+
+Corrects an ambiguity in the definition of the int_keys argument of
+param_begin_xmit_dict. (gsparam.h)
+
+Adds a new file that will evolve into a reasonable guide to the source code.
+(README, source.txt)
+
+Adds the convention for 'status' and 'code' to the C style guide.
+(c-style.txt)
+
+Improves the documentation for the '-' pseudo-switch. (use.txt)
+
+Updates the problem reporting form to include the URL for known post-release
+problems. (bug-form.txt)
+
+Documents the availability of sources and binaries for Plan 9.
+(new-user.txt)
+
+
Procedures
+
+Fixes bugs:
+ - The 'tags' target in the Unix makefiles had an incorrect directory
+name. (bug probably introduced since 5.20) (unix-end.mak)
+ - The ld_tr and CCFLAGS macros were used in the makefiles before
+they were defined, causing problems with `make' implementations that
+substitute macros into definitions at definition time rather than at use
+time. (*.mak)
+ - Recent Digital Unix versions (4.0 and later) require -std1 when
+compiling. (make.txt)
+ - The Unix library-only makefile had gotten out of date.
+(ugcclib.mak)
+ - pf2afm[.bat] were omitted from the fileset. (master/package.tcl)
+ - The Borland makefile didn't work, because the Borland compiler
+requires specifying the output file name (-o) before the input file name
+(-c)! This required changing the order of every compilation command in
+every platform-independent makefile. The win*.mak files still need work.
+(*.mak)
+ - None of the non-Unix makefiles specified directory names for the
+auxiliary programs. (dvx-tail.mak, os2.mak, wctail.mak, winlib.mak)
+ - The Windows makefiles lacked build rules for gp_ntfs and gp_win32.
+(msvclib.mak, winlib.mak)
+
+Adds a new debugging switch -Z/ that prints the file name and line number on
+all trace messages. (gdebug.h, std.h)
+
+Changes the Unix 'pg' and 'debug' build targets so that they create the
+binaries in a 'pgobj' or 'debugobj' subdirectory of the standard build
+directory. This allows keeping all 3 configurations active. (unix-end.mak)
+
+Adds GEN directories for jpeg, libpng, and zlib. (devs.mak, gs.mak,
+jpeg.mak, lib.mak, libpng.mak, zlib.mak)
+
+Adds a gendev.c that will eventually replace genconf.c. (gendev.c, *.mak)
+
+Adds -Wcast-align to the gcc compilation switches. (unix-gcc.mak)
+
+Adds support for libpng 1.0.1. (libpng.mak)
+
+Notes the use of -R on Solaris and other SVR4 systems. (unix*.mak)
+
+Removes pdf_2ps.ps from the fileset. (int.mak, unixinst.mak,
+pdf_2ps.ps[deleted])
+
+Ensures that every file that is copyright, maintained, and distributed by
+Aladdin Enterprises has a RCS Id line. In .c and .h files, these lines
+currently are only comments, but they could be converted easily to static
+strings later if we want to. We had to touch almost every file in the
+fileset to do this, but we did *not* change the write dates. (*)
+
+Makes the build procedure auto-detect whether the installed version of gcc
+has the 'const' code generation bug. (gs.mak, lib.mak, unix-gcc.mak)
+
+Removes 'makefile' as a precondition for ccf32.tr. (I can't quite figure
+out why it was there in the first place.) (msvccom.mak)
+
+Replaces the -F<file> switch with a -B<buffer size> switch that forces all
+files to use the run_string interfaces. -B- turns it off. (iminst.h,
+imainarg.c)
+
+Adds a new resource to genconf.c, -replace <module>. This causes <module>
+*not* to be included if the module with the -replace resource *is* included.
+If two modules -replace each other, either directly or indirectly through
+-includes, the result is undefined. (genconf.c)
+
+Uses -replace to implement a default roplib package. (lib.mak)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Makes a few minor changes to support Plan 9. (make.txt, devs.mak, stat_.h,
+stdio_.h, time_.h, gdevpbm.c)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+Fixes bugs:
+ - Memory management for argument strings was wrong. (gsargs.h,
+gsargs.c)
+ - 1 .setlanguagelevel was broken, because it didn't allow for the
+possibility that values could get deleted from systemdict that existed in
+level2dict. (bug introduced in 5.x, x <= 10) (zmisc2.c)
+ - -dFAKEFONTS was broken. (gs_fonts.ps, gs_init.ps)
+ - copyscanlines was broken. (bug introduced in 5.20) (gs_init.ps)
+ - The matrix returned by sizeimage was incorrect. (zdpnext.c)
+ - The implementation of .buildpattern for PatternType 2 was wrong.
+(gs_ll3.ps)
+ - Ghostscript couldn't load TrueType fonts where the amount of data
+either before or after the glyf section exceeds 64K. (gs_ttf.ps) ****** WE
+BACKED OUT THIS CHANGE, BECAUSE WE HAD TO BACK OUT THE NEXT ONE. ******
+ - Ghostscript couldn't load TrueType fonts where the total data is
+more than 64K and the offset or length of the glyfs is odd. (gs_ttf.ps)
+****** WE BACKED OUT THIS CHANGE: IT BROKE THE PDF INTERPRETER, BECAUSE IT
+IMPOSES A NEW REQUIREMENT THAT TTF FILES BE POSITIONABLE. ******
+ - Some compilers complained about arithmetic on enums. (interp.c)
+ - The CIE color space and CRD GC structure definitions were in the
+interpreter rather than the library. (zcie.c, zcrd.c)
+ - NullFont was still present in FontDirectory when currentglobal was
+false. (gs_init.ps)
+ - execform failed with Form resources, because it tried to insert
+the Implementation in a read-only dictionary. (gs_fform.ps, gs_lev2.ps)
+
+Finishes implementing ImageType 4 images, and moves closer to implementing
+ImageType 3. (iimage.h, zdps.c, zimage.c, zimage2.c, zimage3.c)
+
+Updates tracing output to use the new dlprintf macros. (idict.c, igc.c,
+igcref.c, igcstr.c, iname.c, interp.c, isave.c, iscan.c, zcie.c, zcontext.c)
+
+Implements multiproc=true for readimage. (gs_dpnxt.ps)
+
+Does a bit more work on implementing shading with PatternType 2.
+(gs_ll3.ps, zfunc.c, zshade.c)
+
+Adds a .bitadd operator for adding integers modulo the word size.
+(zarith.c)
+
+Updates filter operators to use the new stream parameter facility.
+(iparam.h, iparam.c, zfdecode.c, zfdctc.c[deleted], zfdctd.c, zfdcte.c)
+
+Updates the implementation of parameter lists for the change from _dict to
+_collection. (iparam.c, iparam.h)
+
+Takes advantage of the filter stream procedures now available in stream.c.
+(zfilter.c)
+
+Adds get_hardware_params to one device procedure vector. (zupath.c)
+
+Adds .gethardwareparams to parallel .getdeviceparams. (zdevice.c)
+
+Updates the interpreter's parameter list machinery to match the change in
+gsparam.h. (iparam.h, iparam.c)
+
+Makes more writable statics const. (gs_init.ps, btoken.h, dstack.h, iref.h,
+opextern.h, icontext.c, idict.c, igc.c, igcref.c, iinit.c, imainarg.c,
+interp.c, iscanbin.c, iutil.c, zbseq.c, zcie.c, zcontrol.c, zdevcal.c,
+zdevice2.c, zdps.c, zdps1.c, zfont2.c, zgeneric.c, zgstate.c, ziodev.c,
+ziodev2.c, ztype.c)
+
+Removes an inappropriate reference to PROGRAM_NAME. (imainarg.c)
+
+Removes set/currentrenderalgorithm, since they are useless for the purpose
+for which they were intended. (zrop.c)
+
+Uncomments code for CIEBasedDEF[G] color spaces, even though these aren't
+fully implemented yet. (zcie.c)
+
+Reimplements StartJobPassword and SystemParamsPassword as no-access strings
+in systemdict. (gs_lev2.ps, iutil2.h, iutil2.c, ziodev2.c, zusparam.c)
+
+Splits off the context state record from icontext.h, so that places that
+only need access to state variables don't need to import the
+procedures. (icontext.h, icstate.h)
+
+Updates a client for the change in gs_malloc_limit. (imainarg.c)
+
+Updates clients for the change in the accessors for predefined color spaces.
+(zcolor1.c, zimage.c, zimage2.c)
+
+Renames the (few) debugging-related statics as I_SOMETHING. (igc.c)
+
+Splits off idstack.h (API for dictionary stacks) from dstack.h (API for the
+interpreter's dictionary stack), and idstack.c (dictionary stack
+implementation) from idict.c (dictionary implementation). We should have
+done this a long time ago! (dstack.h, idictdef.h, idstack.h, idict.c,
+idstack.c, iinit.c, ireclaim.c)
+
+Folds the cached currentfile pointer into the exec-stack structure.
+(estack.h, interp.c)
+
+Changes clients of gs_register_*_root to eliminate statically allocated
+roots. (iinit.c, iname.c, interp.c, zbseq.c, zcontext.c, zfile.c, zfont.c,
+zfont2.c, zgstate.c, ziodev.c)
+
+Adds a ref_free_stack procedure, and reformats the implementation of stacks.
+(istack.h, interp.c, istack.c)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - Pattern colors sometimes caused errors. (gs_pdf.ps)
+ - A file ending with %%EOF without an EOL caused an error.
+(pdf_main.ps)
+ - Fl wasn't recognized as an abbreviation for FlateDecode in in-line
+images. (pdf_draw.ps)
+
+Removes all code related to converting PDF to PS: it never worked reliably,
+and we now support this function with the pswrite device instead.
+(gs_pdf.ps => pdf_ops.ps, pdf*.ps)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes bugs:
+ - An error in dda_step_add could theoretically produce anomalies in
+images (although we don't think we've ever seen any). (gxdda.h)
+ - A boundary error in dda_state_next/previous/advance could
+theoretically produce anomalies in images by allowing R = 0 (although we
+don't think we've ever seen any). (gxdda.h)
+ - A rounding error in computing the size of portrait images could
+produce a spurious 1-pixel-wide line at the edge of the image. (gxifast.c)
+ - When banding, images with singular or nearly singular CTM or
+ImageMatrix could confuse things badly enough to cause memory access errors.
+(gxclimag.c)
+ - Patterns were broken. (bug introduced in 5.21) (gxclip2.c)
+ - Because some image processing code retained a pointer to the
+clipping path, which was embedded inside the gs_state_contents object,
+garbage collection could cause crashes. (The only case where we know this
+happened was the bounding box device, since we think all other image
+enumerators preconstruct a clipping device, which does not retain a pointer
+to the clipping path, rather than constructing one from the path on the
+fly.) We fixed this by replacing gs_state_contents with individual objects:
+see below.
+ - The *_.h files didn't have double-inclusion protection. (*_.h)
+ - ImageType 2 images were broken by the change in begin_typed_image.
+(gximage2.c)
+ - Color-setting operators that "substitute the nearest legal value"
+didn't substitute it in storage, only when using it. E.g., after
+gs_setgray(pgs, 2.0), gs_currentgray(pgs) returned 2.0 rather than 1.0.
+This bug has been there since release 1.0! (gxcspace.h, gscie.c, gscolor.c,
+gscolor1.c, gscolor2.c, gscdevn.c, gscsepr.c, gscpixel.c, gspcolor.c)
+ - The RasterOp implementation for 2-bit, 4-bit, and non-gray 8-bit
+devices didn't work. (gdevmrop.c)
+ - The test of whether to use copy_mono, fill_mask, or general
+imaging for rendering characters sometimes used copy_mono when not
+appropriate. (gxccache.c)
+ - The default implementation of fill_mask produced solid rectangles,
+rather than properly masked output, if the logical operation didn't use its
+source operand. (gdevdbit.c)
+ - Some more files needed double inclusion protection. (gscie.h)
+ - Checking for interrupts before a return always returned 0 rather
+than the correct return code if there was no interrupt. (gsmisc.c)
+ - Characters within Pattern PaintProcs sometimes didn't get drawn.
+(gxpcmap.c)
+ - The CIE color space and CRD GC structure definitions were in the
+interpreter rather than the library. (gscie.h, gscie.c)
+ - Numeric overflows when setting up the character cache caused
+errors rather than simply disabling caching for that character. (gschar.c)
+ - FORCE_STRIP_HALFTONES was accidentally left set to 1 (in 5.10!),
+slowing down all uses of monobit halftones. (gshtscr.c)
+
+Implements mask clipping, which is needed for ImageType 3 images.
+(gxclip2.h, gxclipm.h, gxmclip.h, gxclip2.c, gxclipm.c, gxmclip.c)
+
+Finishes implementing ImageType 3 and 4 images. (gsimage.h, gsiparam.h,
+gsimage.c, gsiparm3.h, gximage3.c, gximage4.c)
+
+Starts to update the banding code to handle ImageType 3 and 4 images.
+(gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxiinit.c)
+
+Make eprintf_program_name, lprintf_file_{and_line,only}, and new
+dlprintf_file_{and_line,only} always be procedures, rather than sometimes
+macros and sometimes procedures. (std.h, gdebug.h, gsmisc.c)
+
+Adds new dlprintf, dlputc, and dlputs macros that are like
+dprintf/dputc/dputs but also print the source file name and line number at
+the beginning of the line if the -Z/ debugging switch is set. The if_debug*
+macros now use dlprintf rather than dprintf; many other places also needed
+changing. Note that if any place was overlooked, no great harm is done:
+printout produced there simply won't include the source file and line number
+even if -Z/ is set. (std.h, gdebug.h, gsmisc.c; gdevbbox.c, gdevdbit.c,
+gdevdgbr.c, gdevmrop.c, gdevrun.c, gdevsvga.c, gdevx.c, gp_unifs.c,
+gsalloc.c, gschar.c, gscoord.c, gsfont.c, gshsb.c, gsht.c, gshtscr.c,
+gsmemory.c, gspath.c, gstype1.c, gstype2.c, gxacpath.c, gxccache.c,
+gxclimag.c, gxclist.c, gxclpath.c, gxclread.c, gxcpath.c, gxfill.c,
+gxidata.c, gxpath.c, gxpcopy.c, gxpflat.c, gxstroke.c)
+
+Simplifies storage management for graphics states by replacing
+gs_state_contents with individual objects. This slows down gsave and
+grestore a bit, but eliminates a class of potential obscure bugs.
+(gxpath.h, gzstate.h, gsstate.c, gxcpath.c, gxpath.c)
+
+Adds some more information to the deubgging printout for paths. (gxpath.c)
+
+Modifies the library test program to test ImageType 3 and 4 images.
+(ugcclib.mak, gslib.c)
+
+Extends the @-file parser to be more shell-like:
+
+ - The sequence \ <newline> is ignored everywhere.
+
+ - If a # appears as the first character on a line outside quotes,
+ the entire line (including the terminating newline) is ignored.
+
+(gsargs.h, gsargs.c)
+
+Changes a stem hint tracing message so that it will print with the correct
+line number. (gxhint2.c)
+
+Moves the 'format' information for images to the image parameter structure.
+This entails a NON-BACKWARD-COMPATIBLE CHANGE in the begin_typed_image
+driver procedure (which was not guaranteed stable). (gsiparam.h,
+gxdevcli.h, gsimage.c, gxiinit.c)
+
+Adds an optional matrix argument to begin_typed_image, overriding the CTM in
+the imager state if present. This is needed to make masks and masked images
+line up precisely; this too is a NON-BACKWARD-COMPATIBLE CHANGE.
+(gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevnfwd.c, gdevx.c, gxclimag.c,
+gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
+
+Adds a procedure for testing monotonicity of Functions over a given range.
+(gsfunc.h, gsfunc0.c, gsfunc3.c)
+
+Implements smooth shading with shfill. All documented ShadingTypes (1-7)
+are implemented. (gscspace.h, gsdsrc.h, gspath.h, gsshade.h, gxshade.h,
+gxshade4.h, gscolor.c, gscolor3.c, gsdsrc.c, gsfunc0.c, gsfunc3.c,
+gspath1.c, gsshade.c, gxshade.c, gxshade1.c, gxshade4.c, gxshade6.c)
+
+Changes the TrueType rasterizer to remove the assumption that the entire
+loca table is stored contiguously. This may not have any practical effect,
+since currently Type 42 fonts never split the loca table across segments.
+(gstype42.c)
+
+Adds a new interface for creating CIE CRDs that provides the parameters as
+separate arguments. (gscrd.h, gscrd.c)
+
+Starts to add the ability for a device to provide one or more default CIE
+CRDs as (read-only) device parameters. (Not ready for use yet.) (gscie.h,
+gscrdp.h, gscie.c, gscrdp.c)
+
+Adds a multiple-bit-per-pixel analogue of gs_makebitmappattern,
+gs_makepixmappattern, for use by another Aladdin project. (lib.mak,
+gsbitmap.h, gsptype1.h, gxbitmap.h, gspcolor.c)
+
+Changes the API of param_begin_write_dict so that the client can request the
+creation of an array rather than a dictionary. This is a
+NON-BACKWARD-COMPATIBLE CHANGE for implementors (of which there are only
+2.5), but not for clients. (gsparam.h, gsparam.c)
+
+Adds dynamically typed data to the parameter list interface, and removes the
+statically typed procedures. This isn't important for any standard facility
+yet. This too is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
+parameter lists. (gsparam.h, gsparams.h, gsparam.c, gsparams.c)
+
+Adds a new platform-specific API for thread creation and synchronization,
+and a memory manager "wrapper" that monitor-locks each call. No code
+normally included in this fileset uses any of this machinery as yet. (gp.h,
+gpsync.h, gxsync.h, gsmemlok.h, gsmemlok.c, gxsync.c)
+
+Splits off (PatternType 1) Pattern filling into a separate file, since the
+file was getting too big; refactors the filling code to use procedures
+rather than macros. (gxp1fill.h, gspcolor.c, gxp1fill.c)
+
+Makes a few more writable statics const. (gscie.h, gscscie.c, gsdll.c,
+gsmemory.c, gsmisc.c, gstype1.c, gstype2.c, gxclpath.c)
+
+Adds a compile-time option, SYSTEM_CONSTANTS_ARE_WRITABLE, to choose whether
+the system configuration values (buildtime, copyright, product, revision,
+revisiondate, serialnumber) are const or not. By default they are now
+const: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE (affecting only one user).
+(lib.mak, openvms.mak, os2.mak, unix-end.mak, wctail.mak, winlib.mak,
+gscdefs.h, gscdef.c)
+
+Removes the dependence of std.h on PROGRAM_NAME. (std.h, gsdll.c, gsmisc.c,
+gscdef.c)
+
+Adds a new member of the color space type structure, the size of the
+smallest color space structure that will hold a color space of the given
+type. Also removes the obsolete _ds modifier. (gscspace.h, gxcspace.h,
+gscdevn.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscpixel.c,
+gscsepr.c, gspcolor.c, gxiinit.c)
+
+Removes set/currentrenderalgorithm, since they are useless for the purpose
+for which they were intended. (gsrop.h, gsropt.h, gdevmrop.c, gsrop.c)
+
+Splits off gscspace.c from gscolor.c, and gscscie.c from gscie.c. (gscie.c,
+gscolor.c, gscscie.c, gscspace.c)
+
+Adds constructor and accessor procedures for color spaces. (gscie.h,
+gscolor2.h, gscsepr.h, gscspace.h, gsptype1.h, gxcolor2.h, gxcspace.h,
+gscolor.c, gscolor2.c, gscscie.c, gscsepr.c, gscspace.c, gslib.c,
+gspcolor.c)
+
+Changes the CIEBased color space structures slightly to allow implementation
+of the CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
+
+Changes gs_malloc_limit from a static to a member of the allocator
+structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for clients that
+declared this variable as an extern. (gsmalloc.h, gsmemory.c)
+
+In order to eliminate some statics, changes the static color space accessors
+(gs_color_space_Device*) so they require a const gx_imager_state as
+parameter, and changes their names as well to avoid confusion. This is a
+NON-BACKWARD-COMPATIBLE CHANGE not only in these accessors, but also in
+gs_image_t_init_{gray,color}. This is very unfortunate, but we see no way
+to avoid it. (gscspace.h, gsiparam.h, gxistate.h, gscolor1.c, gscscie.c,
+gscspace.c, gsimage.c, gspcolor.c, gsstate.c, gxclread.c, gxiinit.c,
+gximage2.c, gximage3.c, gximage4.c)
+
+Unifies the handling of const for the IODevice table. (gscdefs.h,
+gxiodev.h, gconf.c, gsiodev.c)
+
+Changes the register_root memory manager call so that a NULL as the pointer
+to the root structure asks the memory manager to allocate the root structure
+itself. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
+memory manager API (of which there are only 3). (gsmemory.h, gsstruct.h,
+gsalloc.c, gsmemory.c)
+
+Adds a new GC structure type, suffix_add0_local, which is a more efficient
+form of suffix_add0 that can be used when the supertype is defined in the
+same file as the subtype. (gsbitmap.h, gscie.h, gsshade.h, gsstruct.h)
+
+Uses the new package replacement facility in the makefile to make RasterOp
+optional without tinkering with statics at runtime. (lib.mak, gxdevice.h,
+gxdevrop.h, gdevdbit.c, gdevdflt.c, gdevmrop.c, gdevnfwd.c, gsnorop.c,
+gsropc.c)
+
+Makes RasterOp really optional. (gdevmrop.h, gsrop.h, gdevmrop.c, gsrop.c,
+gxiinit.c)
+
+Rewrites bits_fill_rectangle to get rid of nearly all the macros.
+(gxbitops.h, gsbitops.c)
+
+Removes the obsolete _ds from gs_log_error. (gserror.h, gsmisc.c)
+
+
+
+
+
+
Version 5.22 (limited) (2/19/98)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+Adds a user-contributed utility that runs dvips followed by ps2pdf.
+(dvipdf, unixinst.mak)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - An empty Differences array, which Acrobat Distiller 3.02 can emit,
+caused a rangecheck error. (pdf_font.ps)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes bugs:
+ - There was an (incorrect) assignment to a read-only structure
+member. (gximage2.c)
+ - A formal parameter list was incorrect if __PROTOTYPES__ wasn't
+defined. (gsroptab.c)
+ - Some images didn't get clipped properly when banding. This was a
+fix for 5.03 that somehow didn't make it into 5.10. (gxclimag.c)
+ - When banding, dashed lines could cause an invalid memory access.
+This was apparently caused by an error in a fix made in 5.04. (gsline.c)
+ - Images with non-zero data_x could cause an invalid memory access.
+(gxiinit.c, gxidata.c)
+ - The band list rasterizer didn't initialize the image structure
+properly, causing control to go to a random address. (gxclread.c)
+
+Replaces some open-coded accesses to path structure elements with macros, in
+anticipation of a representation change. (gxpath.h, gzpath.h, gspath1.c,
+gxfill.c, gxpath2.c, gxstroke.c)
+
+Changes the path and clipping path structures so that segments and clipping
+lists are stored in separate, reference-counted structures. This finally
+supports reliable freeing of path segments and clipping lists even in the
+presence of off-stack gstates, and the ability to store the original
+segments of a clipping path, both of which we have wanted for a long time.
+Unfortunately, it requires SIGNIFICANT NON-BACKWARD-COMPATIBLE CHANGES TO
+THE API FOR PATHS:
+ Paths:
+ - adds gx_path_alloc_contained;
+ - gx_path_init => gx_path_init_local (or nothing);
+ - gx_path_reset => gx_path_new;
+ - removes gx_path_share and gx_path_release;
+ - gx_path_assign => gx_path_assign_{preserve,release};
+ - renames gx_path_expand_dashes => gx_path_add_dash_expansion,
+ gx_path_flatten[_accurate] => gx_path_add_flattened[_accurate],
+ gx_path_monotonize => gx_path_add_monotonized;
+ - removes the init Boolean from gx_path_copy[_reversed].
+ Clipping paths:
+ - gx_cpath_init => gx_cpath_init_local (or nothing);
+ - removes gx_cpath_share and gx_cpath_release_segments;
+ - gx_cpath_path => gx_cpath_to_path;
+ - removes the mem argument from gx_cpath_from_rectangle.
+We believe that we either renamed or changed the argument list of every API
+function that was affected in a non-backward-compatible way, so incompatible
+clients will get either compilation or linking errors. (gxpath.h,
+gzcpath.h, gzpath.h, gschar.c, gsdps.c, gsdps1.c, gspaint.c, gspath.c,
+gspath1.c, gsstate.c, gxacpath.c, gxccache.c, gxclpath.c, gxclread.c,
+gxcpath.c, gxfill.c, gxpath.c, gxpath2.c, gxpcmap.c, gxpcopy.c, gxpdash.c,
+gxstroke.c)
+
+Reimplements view clipping bookkeeping to use reference-counted paths.
+(gzstate.h, gsdps.c, gsstate.c)
+
+Adds const in a couple more places. (gxpath2.c)
+
+If -Z? is enabled, makes the reference counting machinery check for
+reference counts going negative. (gsrefct.h)
+
+Adds the first bit of code for rendering smooth shadings. The code is
+nowhere near usable. (gsshade.h, gxshade.h, gsshade.c, gxshade.c)
+
+Adds BEGIN ... END macros for creating compound statements that are
+syntactically equivalent to single statements. (stdpre.h)
+
+
+
+
+
+
Version 5.21 (limited) (1/19/98)
+
+
+This is primarily a bug fix fileset for 5.20, with a little new
+functionality (pdfwrite image downsampling and more complete pdfmark
+processing).
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+Fixes bugs:
+ - Many occurrences of 'const' were missing or incorrect.
+(gdevpdfd.c, gdevpdfi.c, gdevpdfo.c, gdevpdft.c)
+ - pdfmark processing was broken by changes introduced in 5.20.
+(gs_pdfwr.ps)
+ - pdfwrite didn't convert /Color => /C or /Title => /T in ANN and
+LNK pdfmarks. (gdevpdfm.c)
+ - pdfwrite didn't convert /Dest => /D or /File => /F in the Action
+dictionary of ANN and LNK pdfmarks. (gdevpdfm.c)
+ - pdfwrite didn't convert a /Launch annotation to an Action with a
+dictionary. (gdevpdfm.c)
+ - pdfwrite didn't convert \n in annotation Contents strings to \r.
+(gdevpdfm.c)
+ - jstrm.state was used before being set. (gdevjpeg.c)
+ - The SVGA devices were not identified as page devices.
+(gdevsvga.c)
+ - The SPARCPrinter driver returned the address of a local buffer
+containing an error string. (gdevsppr.c)
+ - pdfwrite no longer compressed character bitmaps. (bug introduced
+in 5.20) (gdevpdfi.c)
+ - pdfwrite didn't recognize _objdef syntax everywhere. (gdevpdfx.h,
+gdevpdfm.c, gdevpdfo.c)
+ - pdfwrite didn't recognize and convert Launch and GoToR OUT
+pdfmarks. (gdevpdfm.c)
+ - pdfwrite used a /Dest key rather than a /P key for the page number
+in articles. (gdevpdfx.h, gdevpdfm.c)
+ - pdfwrite didn't save and write the /I dictionary for articles.
+(gdevpdfx.h, gsstruct.h, gdevpdf.c, gdevpdfm.c)
+
+Implements a parameter list "reader" that prints the parameter values on a
+stream in PS/PDF syntax. (We need something like this for printing filter
+parameters.) (gdevpsdf.h, gdevpdf.c, gdevpsdf.c)
+
+Implements a write stream that just keeps track of the position. We use
+this to determine how much space to allocate for data we're going to save.
+(gdevpsdf.h, gdevpsdf.c)
+
+Implements image downsampling, but not anti-aliasing, for the PDF writer.
+(gdevpsdf.h, gdevpsds.h, gdevpsdi.c, gdevpsds.c)
+
+
Fonts
+
+Adds Frutiger to the built-in list of sans-serif fonts. (gs_fonts.ps)
+
+
Interpreter
+
+Fixes bugs:
+ - Many occurrences of 'const' were missing. (gsargs.c, ialloc.c,
+zdpnext.c, zfunc3.c, zshade.c)
+ - Some byte * => char * casts were missing. (imainarg.c)
+ - The stack limit check in .eqproc was wrong. (zmisc3.c)
+ - The paper sizes a4small and lettersmall weren't implemented.
+(gs_statd.ps)
+ - setuserparams signalled errors on 64-bit systems. (zusparam.c)
+
+Changes .image2 to track the change in the library. (zdps.c)
+
+Some improvements were made to the (still not entirely functional) Type 32
+font code. (zchar32.c)
+
+Updates some filters to use the new procedure for transmitting collections
+of parameters. (zfdecode.c)
+
+Adds ISO paper sizes C0 through C6. (gs_statd.ps)
+
+Trims down the list of #includes in iconf.c. (iconf.c)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - CalGray color spaces with a Gamma value caused an error.
+(gs_pdf.ps)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.20 (limited) (1/8/98)
+
+
+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.
+
+
+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.
+
+
Documentation
+
+Fixes bugs:
+ - TrueType fonts on GS_FONTPATH weren't recognized. (use.txt)
+ - The argument list for gstate was incorrect. (zdevice2.c)
+ - There were a couple of minor errors in the e-stack documentation.
+(estack.h)
+ - fonts.txt had several errors regarding compiled fonts.
+(fonts.txt)
+ - An out-of-date Aladdin address still appeared in documentation.
+(new-user.txt)
+
+Updates make.txt to reflect the changes in makefile structure. (make.txt)
+
+Notes the addition of -Z' and -Z". (use.txt)
+
+Documents the new begin_typed_image, get_bits_rectangle,
+map_color_rgb_alpha, and create_compositor driver procedures. (drivers.txt)
+
+Moves documentation for all releases before 5.0 to history4.txt. (NEWS,
+history4.txt)
+
+Documents the addition of SHARE_JPEGLIB. (make.txt)
+
+Removes the author's name and e-mail address from the ps2ascii man page, at
+his request. (ps2ascii.1)
+
+Documents the addition of (some) image compression facilities to ps2pdf /
+pdfwrite. (ps2pdf.txt)
+
+Documents the new -dNOINTERPOLATE and -F<n> switches. (use.txt)
+
+Adds documentation for a user-contributed port to the SMS/QDOS operating
+system. (new-user.txt)
+
+Removes documentation for BGI, which is no longer supported. (use.txt)
+
+Documents the use of the Registry and the GS_DLL environment variable on
+Windows platforms. (install.txt)
+
+
Procedures
+
+Fixes bugs:
+ - The OpenVMS makefile referred to EXTEND_NAME rather than
+EXTEND_NAMES. (openvms.mak)
+ - A typo caused a spurious error message from lpr. (unix-lpr.sh)
+ - The PDF writer didn't include a needed dependency on zlib
+compression. (devs.mak)
+ - The rule for the OS/2 printer device was wrong. (devs.mak)
+ - The -migrate switch was incorrectly removed from the command line
+for pre-4.0 Digital Unix. (make.txt)
+ - The -r switch was ignored with -dNODISPLAY. (gs_init.ps)
+
+Adds targets for Type 32 fonts (type32.dev) and PostScript LanguageLevel 3
+(psl3.dev, psl3core.dev, psl3read.dev). (gs.mak, int.mak, lib.mak)
+
+Changes the documented feature names for PostScript Level 1 and 2
+interpreters from level1/2 to psl1/2. The old names are still recognized
+for backward compatibility. (gs.mak, int.mak, *.mak)
+
+Removes support for building with DCL under VMS. Building under VMS now
+requires some version of make, preferably GNU make. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, but there was plenty of lead time for users
+(it was announced in 5.01, 6/22/97). (vms*.mak[deleted])
+
+Starts to add an explicit directory name to every file in the makefiles, to
+allow building multiple object versions (e.g., debug, profile, product) or
+cross-building for multiple platforms in separate directories without any
+makefile editing. (*.mak) Done so far:
+(done) _h= devs.mak gs.mak int.mak jpeg.mak lib.mak
+(done) .h devs.mak gs.mak int.mak lib.mak zlib.mak
+ openvms.mak os2.mak ugcclib.mak unix-end.mak
+ unixtail.mak wctail.mak winint.mak winlib.mak
+ .$(OBJ): devs.mak int.mak (except ccfonts)
+ lib.mak (except special compilations)
+ libpng.mak zlib.mak
+ .dev: libpng.mak zlib.mak
+
+Gets rid of tar_cat. Building on Unix platforms now requires that make
+recognize the include directive. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE:
+rather than editing the *head.mak files, users should now edit the unix*.mak
+or dvx*.mak files (which they previously were instructed NOT to do). Aside
+from this, we think the change won't actually affect anyone, since most Unix
+make programs (include GNU make) do recognize this directive. (*.mak,
+ansihead.mak[deleted], cc-head.mak[deleted], gcc-head.mak[deleted],
+dgc-head.mak[deleted], tar_*cat[deleted], dvx-gcc.mak, unixansi.mak,
+unix-cc.mak, unix-gcc.mak)
+
+Includes the basic context machinery in every PostScript interpreter
+configuration. (int.mak)
+
+Removes the division between 'low-level' and 'high-level' band list
+facilities: we once thought we might make the latter optional, but this no
+longer seems useful. (lib.mak)
+
+Introduces a new category of devices, identified to genconf as -dev2 and
+created with SETDEV2 and SETPDEV2. For the moment, these are the same as
+existing devices except that their static instance is const, but we plan to
+make them quite different in the future: don't attempt to create any.
+(devs.mak, gs.mak, genconf.c, gconf.c)
+
+Removes the obsolete -includef resource from genconf. (genconf.c)
+
+Removes support for IJG JPEG library v5* from the makefile, since we no
+longer support these library versions. (jpeg.mak, lib.mak,
+gsjerror.h[deleted], gsjpglib.h[deleted], gsjerror.c[deleted])
+
+Makes the JPEG library use floating point if it is fast. (gsjmorec.h)
+
+Adds a SHARE_JPEG option to the makefiles, with the necessary warning about
+possible incompatibilities. (*.mak)
+
+Replaces the CCC macro in the makefiles with CC_, the various CC* macros
+with CC_* (except for CCA2K and CCAUX), and the O macro with O_; removes the
+'begin' target and the CCBEGIN macro. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, required for the new arrangement of files into directories. (*.mak)
+
+Replaces all occurrences of -Idir1 -Idir2 ... -Idirn in platform-generic
+makefiles with $(I_)dir1 $(II)dir2 ... $(_I)dirn, and defines these macros
+in platform-specific makefiles, in order to accommodate OpenVMS command
+syntax. (*.mak)
+
+Adds -fno-common to the default gcc compilation and linking switches, to
+improve checking for doubly-defined externs. (unix-gcc.mak)
+
+Adds a -dNOINTERPOLATE switch to turn off image interpolation. (gs_init.ps)
+
+Adds a -F<file> switch that runs files through the run_string interface with
+an 1-byte buffer. (imainarg.c)
+
+Allows specifying the name of the gconfig.h file with -DGCONFIG_H= in the
+compilation command line, to support certain multi-configuration build
+procedures. (int.mak, lib.mak, gconf.h, gconf.c, gscdef.c, iconf.c)
+
+Splits off the installation targets from unix-end.mak. (unix-end.mak,
+unixinst.mak, unix*.mak, ugcclib.mak)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+Fixes bugs:
+ - Some files that included shc.h didn't include scommon.h. (shc.h)
+ - A file didn't include std.h before <stdio.h>. (gslib.c)
+ - There was an unnecessary extern (cleanup only). (gscsepr.c)
+ - The uid.xvalues member of gs_client_pattern structures wasn't
+traced by the GC. (gspcolor.h)
+ - If an Interpolated image reached the end of the input at exactly
+the wrong time, an assertion could fail. (gxiscale.c)
+ - With non-ANSI compilers, an integer constant passed to the fmod
+library function, which requires a floating point argument, could cause a
+floating point exception or an incorrect result. (gsmisc.c)
+ - An error in computing the bounding box sometimes caused strokes to
+print incorrectly (for example, some graduated fills printed incorrectly).
+(gxstroke.c)
+
+Implements an undocumented (!) feature of Type 2 CharStrings, namely that if
+the endchar operator is invoked with 4 or 5 operands on the stack, it is
+equivalent to the Type 1 seac operator (without the asb operand). This
+required changing the implementation of seac so that it does the base
+character first, rather than the accent. (gxtype1.h, gstype1.c, gstype2.c,
+gxtype1.c)
+
+Adds support for ImageTypes other than 1. (gsiparam.h, gximage.h,
+gxiparam.h, gdevddrw.c, gsimage.c, gximage.c, gximage0.c)
+
+Adds support for ImageType 2 (device source) images. Currently we only
+handle the simplest case (source is not transformed). (gsimage.h,
+gsiparm2.h, gsimage.c, gximage2.c)
+
+Adds support for LanguageLevel 3 features:
+ - FunctionType 2 and 3 Functions. (gsfunc3.h, gsfunc3.c)
+ - PatternType 2 and smooth shading (structures and API only, no
+algorithms). (gscolor3.h, gsptype2.h, gsshade.h, gxistate.h, gscolor3.c,
+gsshade.c)
+ - In-RIP trapping (structures and API only, no algorithms).
+(gstrap.h, gstrap.c)
+ - ImageType 3 (masked images) (structures and API only, no
+algorithms). (gsiparm3.h, gximage3.c)
+ - ImageType 4 (chroma-keyed masked images). (gsiparm4.h,
+gximage4.c)
+ - DevicePixel color space. (gscpixel.h, gscspace.h, gscpixel.c,
+gximono.c)
+ - DeviceN color space. (gscspace.h, gscdevn.c)
+
+Removes the #ifdef FUTURE around the code for passing multi-plane and
+interpolated images through the band list (version 5.01) and for banded
+filling and stroking with colored halftones (version 4.71). This code is
+now part of the standard release. (gxcldev.h, gxclpath.h, gxdht.h,
+gxhttype.h, gsht.c, gxclimag.c, gxclread.c, gximage.c)
+
+Adds a _ptrs6 structure definition macro. (gsstruct.h)
+
+Removes #ifdef DPNEXT conditionalization, as in the interpreter (see above).
+(gzstate.h, gsdps.c, gsstate.c, gximage.c, gximage5.c)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data, as in the interpreter (see above). (gsbittab.h,
+gscdefs.h, gsdcolor.h, gxclist.h, gxsample.h, gzht.h, gconf.c, gsbitops.c,
+gsbittab.c, gscdef.c, gsdparam.c, gsflip.c, gsinit.c, gsmatrix.c,
+gspcolor.c, gsstate.c, gxcht.c, gxclist.c, gxcmap.c, gxdcolor.c, gxdither.c,
+gxht.c, gximage.c)
+
+Removes the division between 'low-level' and 'high-level' band list
+facilities. (gxcldev.h, gxclimag.c, gxclist.c, gxclpath.c)
+
+Renames gximage*.c as gxi*.c, since these files apply only to ImageType 1
+images and the use of numerical suffixes was confusing. (gximage.c =>
+gxiinit.c, gximage0.c => gxidata.c, gximage1.c => gxifast.c,
+gximage2.c => gximono.c, gximage3.c => gxicolor.c, gximage4.c =>
+gxi12bit.c, gximage5.c => gxiscale.c)
+
+Provides the ability to enumerate a clipping path (based on the clipping
+list) using an enumerator, in the same way as an ordinary path. (gxpath.h,
+gzcpath.h, gzpath.h, gxcpath.c, gxpath2.c)
+
+Speeds up mem_mapped4_copy_mono substantially. (gdevm4.c)
+
+Removes all remaining uses of gs_malloc and gs_free in the library, other
+than in drivers. This turned out to require changing a couple of
+initialization APIs. (gsfont.h, gslib.h, gxdevice.h, gxfcache.h, gsfont.c,
+gxccman.c)
+
+Reduces the writable statics related to the default (C heap) allocator to a
+single pointer. (gsmalloc.h, gsmemory.h, gsinit.c, gsmemory.c)
+
+Adds support for PatternTypes other than 1. (gscolor2.h, gspcolor.h,
+gsptype1.h, gxcolor2.h, gspcolor.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default that
+aren't covered by gxdevice.h. (gxclmem.c)
+
+Splits off the default implementations of the bit-copying device procedures,
+because the file was getting too large. (gdevdbit.c, gdevdflt.c)
+
+Adds a procedure for calculating the difference of two rectangles, needed
+for Type 2 images. (gsrect.h, gxpath.h, gsutil.c)
+
+Extends the image machinery to allow alpha values to either precede or
+follow color values in image data, replacing HasAlpha with Alpha in the
+ImageType 1 image structure. (gsiparam.h, gximage.h, gsimage.c, gxclimag.c,
+gxclread.c, gxicolor.c, gxiinit.c, gxiscale.c)
+
+Extends the path enumeration API to decouple path copying from coordinate
+transformation. (gspath.h, gzpath.h, gspath1.c, gxpath2.c)
+
+Changes the garbage collector interface so that all procedures are passed
+through a structure rather than being referenced as externs. This allows
+programs other than the GC itself to enumerate and relocate pointers, and
+also removes all static dependencies on the GC from the library. This
+involves a NON-BACKWARD-COMPATIBLE CHANGE to the argument list of enum_ptrs
+procedures, and to the implementation of both enum_ptrs and reloc_ptrs. (We
+hope that the new macros we've introduced will avoid non-backward-compatible
+changes in the future.) (gsstruct.h, gdevmem.c, gsalloc.c, gscdevn.c,
+gscolor.c, gscolor2.c, gscsepr.c, gsdevice.c, gsfont.c, gshtscr.c,
+gsimage.c, gsmemory.c, gspcolor.c, gsstate.c, gxcmap.c, gxcpath.c, gxht.c,
+gxiinit.c)
+
+Moves the image compositing code into the library from its inappropriate
+home in the interpreter. (gsdpnext.h)
+
+Splits up gsbitops.h into client interface and implementation support.
+Removes some obsolete code at the same time. (gdevmem.h, gsbitops.h,
+gxbitops.h, gsbitops.c)
+
+Creates the concept of compositing functions and compositing devices
+(compositors). (gscompt.h, gxcomp.h)
+
+Implements the default compositor for alpha-based compositing. (gsalphac.h,
+gsalphac.c)
+
+Creates a store_alpha device that adds alpha channel storage to any other
+device. (gdevalph.c)
+
+Moves alpha channel capability into the dpsnext feature, where it should
+have been all along. (gsalpha.h, gscolor.h, gsalpha.c, gscolor.c,
+gsstate.c)
+
+Implements color premultiplying by (non-unity) alpha values. Currently we
+always premultiply towards white: see gxalpha.h for some comments.
+(gxalpha.h, gxcmap.c)
+
+Reduces the amount of boilerplate in the RasterOp implementation table.
+(gsroptab.c)
+
+Adds an arg_push_temp_string procedure to accommodate the new gp_getenv
+call. (gsargs.h, gsargs.c)
+
+Updates various library APIs to account for the more careful handling of
+file name length. (gdevprn.h, gxclio.h, gxclist.h, gsdevice.c, gxclfile.c,
+gxclmem.c)
+
+
+
+
+
+
Version 5.10 (11/23/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.07 (limited) (10/31/97)
+
+
+A few more bug fixes for the 5.10 release.
+
+
Documentation
+
+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.*)
+
+
Drivers
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.06 (limited) (10/7/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
+
+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)
+
+
+
+
+
+
Version 5.05 (limited) (9/24/97)
+
+
+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.
+
+
Platforms
+
+Fixes bugs:
+ - The Windows code wouldn't compile with the latest MSVC++, because
+Microsoft changed the prototype for fprintf. (gp_msio.c)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+Fixes bugs:
+ - Files with unknown operators caused errors, even if the BX
+operator was used to disable the error report. (pdf_base.ps)
+
+
+
+
+
+
Version 5.04 (limited) (9/21/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.03 (8/8/97)
+
+
+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.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Drivers
+
+Fixes bugs:
+ - The uniprint driver didn't handle an increase in media height
+correctly. (gdevupd.c)
+
+
Platforms
+
+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)
+
+
Fonts
+
+Fixes bugs:
+ - The substitutions Myriad => Times and Minion => Helvetica were
+incorrect; they should be the other way around. (gs_fonts.ps)
+ - MyriadPkg wasn't recognized as a condensed font. (gs_fonts.ps)
+ - Univers wasn't recognized as mapping to Helvetica. (gs_fonts.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.02 (7/28/97)
+
+
+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.
+
+
Documentation
+
+Fixes bugs:
+ - The documentation for building on the Intergraph Clipper was out
+of date. (make.txt)
+ - ESC was claimed to be a self-delimiting character. (gs_init.ps)
+ - Removes the documentation claiming that ^D and ^Z are
+self-delimiting. (language.txt)
+ - Document that -dSUBSTFONT doesn't create a font with the requested
+font name. (use.txt)
+ - Ghostscript was defined as compatible with PDF 1.1 rather than PDF
+1.2. (language.txt)
+ - The description of gcc problems on Alpha didn't make it clear that
+the use of gcc was optional, not required. (make.txt)
+ - The description of how to use GNU make on VMS systems was
+inaccurate. (make.txt)
+
+Improves the documentation for building on H-P RISC systems. (make.txt)
+
+Corrects the discussion of Cygnus' licensing terms for the cygwin32
+environment. (make.txt)
+
+Removes the apology for the poor quality of Ghostscript's TrueType
+rasterizer, since the quality is now quite good. (fonts.txt)
+
+Documents the fact that one must use # rather than = with Watcom C.
+(use.txt)
+
+Documents the updates and additions to the uniprint driver. (devices.txt)
+
+Adds some material to Aladdin's C style guide. (c-style.txt)
+
+Documents the fact that using gmake requires VMS 6.2 or later on Alphas and
+7.1 (perhaps 7.0) or later on VAXen. (make.txt)
+
+Adds an example EPS file. (psfiles.txt)
+
+Adds some information about compiling and linking under OS/2. (make.txt)
+
+Expands the description of XLIBDIR and XLIBDIRS. (*head.mak)
+
+Adds a new pointer to information on using a Kanji font with Ghostscript.
+(new-user.txt)
+
+Documents the use of /Resource/<category>/<resource> as the default place
+where resources are sought. (use.txt)
+
+Updates the documentation on building with MSVC++ to reflect the makefile
+changes. (make.txt)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+Refactors the MS Windows code to allow building the library without the
+interpreter. (gs_msio.c, gs_mslib.c, gp_mswin.c)
+
+
Fonts
+
+Fixes bugs:
+ - definefont was executed twice on TrueType fonts. (No bad
+consequences, just unnecessary work.) (gs_ttf.ps)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+Fixes bugs:
+ - A 'const' was omitted in a declaration, upsetting several
+compilers. (gxclread.c)
+ - arct and arcto gave an error for negative radii. (gspath1.c)
+ - The collinearity check for arct[o] could cause some arcs to be
+rendered as single points. (gspath1.c)
+ - Uncolored patterns sometimes came out blank, because the color
+wasn't set before calling the PaintProc. (gspcolor.c)
+ - The phase for masking colored patterns was wrong, producing
+incorrect output. (gspcolor.c)
+ - reversepath always appended the current position to the new path,
+rather than only doing so if the path just consisted of a single moveto.
+(gxpath2.c)
+ - cshow didn't restore the current font properly. (gschar.h,
+gschar.c)
+ - The check for whether characters can be cached didn't consider
+PaintType values other than 0 and 2. (gschar.c)
+ - The bounding box device didn't handle PageCount properly.
+(gdevbbox.c)
+ - Uncached fonts with a next_char procedure didn't set the glyph
+properly. (gschar.c)
+ - Parallelograms with ax < bx, ay < by, and the 'a' edge to the
+right of the 'b' edge weren't filled, causing pixels to be omitted from some
+highly skewed images. (gdevddrw.c)
+ - 12-bit-per-pixel images in portrait orientation filled each scan
+line with the value of the last pixel -- i.e., didn't work. (gximage4.c)
+ - The path representation of a clipping path could include some
+inappropriate, leftover path segments. (gxcpath.c)
+ - The angle for the miter check was computed in device space rather
+than in user space. (gxstroke.c)
+ - TrueType fonts were lumpy, and the accents of accented characters
+were placed incorrectly. (gstype42.c)
+ - Some macros used for generating device prototypes didn't
+parenthesize all uses of their parameters, causing possible errors if the
+parameters were expressions rather than numeric constants. (gdevprn.h)
+ - When banding, strip halftones (typically produced by
+AccurateScreens) sometimes didn't have the correct phase. (gxbitmap.h,
+gxclread.c)
+ - A minor change was required for correct compilation with Microsoft
+VC++. (memory_.h)
+ - Under certain conditions, character shapes could get wildly
+distorted by hints. (bug introduced in 5.01) (gxhint3.c)
+
+For greater Adobe compatibility:
+ - Changes reversepath so that the implicit line created by closepath
+is not considered a "segment". (gxpath2.c)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(gstype1.c)
+
+Changes the font and scaled-font caches so that if the font has a UID
+(UniqueID or XUID), the UID and FontType are both considered part of the
+key, and we don't cache fonts with non-zero PaintType. (The Red Book says
+that changing anything except the Encoding should also change or remove the
+UID, but some files don't do this. The current fix is probably not
+sufficient, but it is a step in the right direction.) (gxfcache.h,
+gxccache.c, gxccman.c)
+
+Splits off the definitions of font_type and fbit_type into a separate file,
+since gxfcache.h now needs font_type. (gxfcache.h, gxfont.h, gxftype.h)
+
+Makes the Flex feature in Type 1 fonts conform to the published
+specification, rather than always producing curves. The comment in the code
+(and in the NEWS entry for release 2.6) says that this breaks some very old
+Adobe fonts: if this turns out to be a problem, we'll figure out a test that
+will do the right thing for these fonts. (gstype1.c)
+
+Provides 'double' versions of some API functions to accommodate the
+increased use of doubles in the interpreter. (gschar.h, gschar.c)
+
+Adds a compile-time option to force the use of strip halftones, for
+debugging. (gshtscr.c)
+
+Changes the hint snapping algorithm in the Type 1 rasterizer so that it will
+only change a stem width by a maximum of 1/2 pixel rather than 1 pixel.
+This appears to help with dropouts at certain sizes. (gxhint2.c)
+
+Makes a few changes for clean compilation on BeOS. (stdpre.h, stat_.h,
+gxcpath.c)
+
+
+
+
+
+
Version 5.01 (6/22/97)
+
+
+This fixes a few bugs reported in the 5.0 release. This will be a
+commercially supported release.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Interpreter
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Library
+
+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)
+
+
+
+
+
+
Version 5.0 (6/6/97)
+
+
+This is the first public release since 4.03.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+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/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 @@
+
+
+
+History of Ghostscript versions 6.n
+
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+
+
Version 6.64 (2001-04-07)
+
+
+This is probably the last beta release before 7.0. Most of the patches
+since last time are bug and portability fixes.
+
+
+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.
+
+
Incompatible changes
+
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
PDF Interpreter
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
+
+
Version 6.63 (2001-03-31)
+
+
+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.
+
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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->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)
+
+
PDF writer
+
+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)
+
+
PDF Interpreter
+
+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)
+
+
Interpreter
+
+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 & 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)
+
+
Streams
+
+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)
+
+
Library
+
+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 & 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)
+
+
+
+
Version 6.62 (2001-03-19)
+
+
+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.
+
+
+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).
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
PDF Interpreter
+
+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 <meromorphic at users.sourceforge.net>
+(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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
+
+
Version 6.61 (2001-02-21)
+
+
+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.
+
+
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
PDF Interpreter
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+Minor patches for clean VMS compile. Thanks to Jacob (=Jouk) Jansen.
+(stdio_.h [1.3]: 2001/02/02 07:52:26 raph)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
+
+
Version 6.60 (2000-12-31)
+
+
+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.
+
+
+(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.
+
+
+
+
Documentation
+
+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 <dl> 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)
+
+
Procedures
+
+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 && 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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
PDF Interpreter
+
+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)
+
+
Interpreter
+
+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
+=> no safety checks SAFER=true, DELAYSAFER=false => safety checks
+always SAFER=true, DELAYSAFER=true => safety checks after .setsafe
+(lib/gs_init.ps [1.28]: 2000/12/29 04:13:56 alexcher)
+
+
Streams
+
+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 && Win32. close_.h is replaced by more
+general unistd_.h (sfxfd.c [1.6]: 2000/12/19 03:35:40 alexcher)
+
+
Library
+
+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 && 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 && 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)
+
+
Other
+
+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 && Win32. close_.h is replaced by more
+general unistd_.h (close_.h [1.3]: 2000/12/19 03:35:40 alexcher)
+
+
+
+
Version 6.30 (2000-10-03)
+
+
+This fileset consists of xxx.
+
+
+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.
+
+
+The following projects are in a partially completed state:
+
+
+
+
CID-keyed fonts in the PDF writer (gdevpdf[eftw].c) -- barely started.
+
+
+
+
+
+
Incompatible changes
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
???Other???
+
+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)
+
+
+
+
Version 6.23 (2000-08-07)
+
+
+This fileset consists mostly of bug fixes.
+
+
+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.
+
+
+The following projects are in a partially completed state in the PDF writer:
+
+
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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 Tm) caused
+an error. (lib/pdf_ops.ps [1.7]: 2000/08/04 16:08:05 lpd)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 6.22 (2000-07-05)
+
+
+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.
+
+
+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.
+
+
+The following projects are in a partially completed state in the PDF writer:
+
+
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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 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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 6.21 (2000-04-28)
+
+
+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.
+
+
+All problems registered on SourceForge numbered 104890 or lower are closed,
+except for the following: 101549, 101814, 101905, 101955, 102146, 102735,
+103528, 104118, 104375.
+
+
+The following projects are in a partially completed state in the PDF writer:
+
+
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 6.20 (2000-04-06)
+
+
+This fileset includes the first steps towards bringing the pdfwrite driver
+closer to matching Acrobat Distiller 4. Highlights:
+
+
+
+
Reimplementation of CIDFontType 0 support in C rather than PostScript;
+
+
Parsing (but not functional implementation) of nearly all the Acrobat
+Distiller 4 parameters;
+
+
Implementation of AutoRotatePages and DCTEncode filtering in the PDF
+writer;
+
+
A PDF linearizer ("optimizer").
+
+
+
+
+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.
+
+
+
+
Incompatible changes
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 6.01 (2000-03-17)
+
+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.
+
+
Incompatible changes
+
+(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.
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+
+
Version 6.0 (2000-02-03)
+
+This is the first public release since 5.50. See the
+release summary for information about new capabilities and known
+problems.
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
Platforms
+
+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)
+
+
Fonts
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter (PDF)
+
+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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
+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/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 @@
+
+
+
+History of Ghostscript versions 7.n
+
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+
+
Version 7.07 (2003-05-17)
+
+
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.
+
+
Incompatible changes
+
+
+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.
+
+
+
+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
+<body bgcolor="#CCCC00">, 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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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
+<body bgcolor="#CCCC00">, 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)
+
+
+
+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)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
+
+
Version 7.06 (2003-04-01)
+
+
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.
+
+
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.
+
+
Incompatible changes
+
+
+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.
+
+
+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.
+
+
Documentation
+
+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
+- < 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&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)
+
+
Procedures
+
+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&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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
+
+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
+- < 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)
+
+
Interpreter
+
+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->page[-1] which is invalid and caused a SEGV on Alpha. The updated
+code now checks that dsc->page_count is non-zero before accessing dsc-
+>page[dsc->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)
+
+
Streams
+
+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)
+
+
+
+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&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)
+
+
+
+
Version 7.05 (2002-04-22)
+
+
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.
+
+
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.
+
+
And of course there are the usual bug fixes and minor improvements.
+
+
+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.
+
+
+
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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" & "max" by ".min" & ".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)
+
+
Drivers
+
+Fixes problems:
+ - Changes XPutImage to use xdev->vinfo->depth rather than
+xdev->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)
+
+
PDF writer
+
+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)
+
+
PDF Interpreter
+
+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" & "max" by ".min" & ".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 & 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)
+
+
Interpreter
+
+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
+-> 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" & "max" by ".min" & ".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)
+
+
Streams
+
+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)
+
+
+
+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)
+
+
+
+
Version 7.04 (2002-01-30)
+
+
+This is a security update of Ghostscript. A number of maintenance
+fixes and new features have been added.
+
+
Major changes include:
+
+
+
A rather serious security hole, where PostScript code could cause
+arbitrary commands to be executed, has been patched.
+
+
There is also a new -DPARANOIDSAFER option, which locks down
+reading of arbitrary files.
+
+
This release integrates the IJS driver, which makes it much easier
+to add and upgrade printer drivers without needing to recompile
+Ghostscript.
+
+
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.
+
+
The usual bug fixes.
+
+
+
+
+The following SourceForge bug numbers are currently open: (todo)
+
+
Incompatible changes
+
+
+No incompatible changes have been recorded for this version. Authors
+of drivers with potential security implications are encouraged to review
+the security changes, however.
+
+
+
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF Interpreter
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
+
+
Version 7.03 (2001-10-20)
+
+
+This is a fully tested, stable release of Ghostscript. It fixes quite a
+few issues with 7.02.
+
+
Major changes include:
+
+
+
Integration of icclib 2.0.
+
+
There was at least one embarassing pdfwrite bug, now fixed.
+
+
Significant shading speedups, especially for worst-case files
+such as Coons01.ps.
+
+
The stdio logic is a lot more robust. 7.02 had some problems,
+especially with trying to set stdin to non-blocking.
+
+
The usual bug fixes. In particular, regression testing against
+7.00 shows only one serious regression (035-01.ps), and numerous
+progressions.
+
+
+No incompatible changes have been recorded for this version.
+
+
+
+
+
+
Documentation
+
+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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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 <
+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)
+
+
PDF Interpreter
+
+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 > 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 & 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)
+
+
Interpreter
+
+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)
+
+
Streams
+
+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)
+
+
Library
+
+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)
+
+
Other
+
+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)
+
+
+
+
Version 7.02 (2001-09-22)
+
+
+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.
+
+
Major changes include:
+
+
+
Compile and portability fixes, including the dreaded time.h
+problem that affects up-to-date GNU/Linux builds.
+
+
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.
+
+
Substantial pdfwrite improvements.
+
+
128-bit encrypted files are now supported.
+
+
The usual bug fixes.
+
+
+
+Release issues that will be fixed before next fully supported version:
+
+
+
+
Update icclib to 2.0.
+
+
Update hpijs and Omni glue to latest versions.
+
+
Make sure all source files are referenced in Develop.htm.
+
+
+No incompatible changes have been recorded for this version.
+
+
+
+
+
+
Documentation
+
+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 <prefix|null> <access_string>
+.tempfile <filename> <file> 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)
+
+
Procedures
+
+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)
+
+
Utilities
+
+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)
+
+
Drivers
+
+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)
+
+
PDF writer
+
+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 < 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)
+
+
PDF Interpreter
+
+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)
+
+
Interpreter
+
+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> 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 & 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->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 (<0000> to <FFFF>) or 8 bit width range
+(<xxyy> to <xxzz>). 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 <prefix|null> <access_string>
+.tempfile <filename> <file> 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->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)
+
+
Streams
+
+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)
+
+
Library
+
+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 <time.h> 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->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 (<0000> to <FFFF>) or 8 bit width range
+(<xxyy> to <xxzz>). 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)
+
+
Other
+
+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)
+
+
+
+
Version 7.00 (2001-04-08)
+
+
+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.
+
+
+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.
+
+
+
+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)
+
+
Utilities
+
+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)
+
+
PDF writer
+
+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)
+
+
Interpreter
+
+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)
+
+
Library
+
+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)
+
+
+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/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 @@
+
+
+
+HTML coding and style guidelines for Ghostscript documentation
+
+
+
+
+
+
+
+
+
+
HTML coding and style guidelines for Ghostscript documentation
+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.
+
+
+The remainder of this document expresses the guidelines used to create the
+HTML form of the Ghostscript documentation. The guidelines are intended to
+encourage
+
+
+
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;
+
+
correct HTML that conforms to prevailing standards;
+
+
consistent HTML coding among all Ghostscript's documents; and
+
+
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.
+
+
+
+Here are those guidelines.
+
+
+
+
Appearance and contents
+
+
+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.
+
+
Page structure
+
+
+A Ghostscript document in HTML form should consist of
+
+
+
a visual header containing
+
+
a conspicuous highlighted headline;
+
a table of contents;
+
"hints": references to other useful documents, always including
+Readme.htm;
+
+
the substantive contents;
+
a visual trailer consisting entirely of
+
+
standard copyright and licensing text;
+
the Ghostscript version number; and
+
the date when the document was last modified.
+
+
+
+
+This document is an example of this standard visible structure. Also see
+below about "Structuring comments" in
+HTML source code.
+
+
+Where it makes sense to modify the standard structure to make the document
+more usable, do that. See
+Readme.htm for an example: the
+introductory material at the beginning of the visible header, before the
+table of contents.
+
+
Links to outside the Ghostscript documentation
+
+
+Links to sites and documents outside the ghostscript distribution
+must carry the class="offsite" attribute and value. This signals special
+formatting to the stylesheet to assist users reading offline.
+
+
+Avoid gratuitous commercial links; for instance, link the title of a book
+to its publisher, not to one particular on-line bookseller. See
+Language.htm for an
+example, the reference to the PostScript Language Reference
+Manual.
+
+
+Similarly, where you have a choice, refer to free software rather than
+commercial products. See
+Make.htm for an example, the
+reference to InfoZip
+unzip (where many commercial products provide similar
+functions).
+
+
Images and graphics
+
+
+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.
+
+
index.html
+
+
+index.html is not a part of the visible Ghostscript
+documentation itself, but when it is placed with all the
+*.htm files in a directory and a browser refers to the
+directory name alone, most servers are configured to deliver a file named
+index.html by default. This one does nothing except
+immediately to open the introductory Ghostscript document
+Readme.htm. This is intended to
+make life easier for both webmasters and users.
+
+
+
+
HTML large structure
+
+
HTML <head>
+
+
+Besides the essential HTML structure elements, Ghostscript HTML document's
+<head> consists of three elements in this order:
+
+
+
A <title>, usually the same text as the
+headline
+
+
An RCS identification line giving the name of the file in an HTML
+comment:
+
+
+
+<!-- $Id: {file name}.htm $ -->
+
+
+
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:
+
+
+<!-- Originally: {file name} -->
+
+
+
+
HTML <body>
+
+
+A Ghostscript HTML document's <body> consists of five
+elements in this order:
+
+
+
The headline is conspicuous text
+at the top of the page, usually the same as the
+<title> text. It is
+always in a table whose purpose is to provide a colored background using
+bgcolor, going the full width of the page:
+
+
+The table of contents consists of nested unordered
+lists <ul>, in most documents assembled strictly from
+the <Hn> headers. The levels of nesting in the table
+of contents correspond to the level numbers of the headers.
+
+
The hint is a short section suggesting where to look
+for other related information. With very few exceptions this always
+includes a reference and link to
+Readme.htm, but may include other
+suggestions and references.
+
+
The substance of the document.
+
+
The trailer contains, in a small font size,
+
+
+
the copyright notice and other legal boilerplate text
+
the version number of Ghostscript and the
+date when the file was last modified.
+
+
+
+
+This document for an example of that structure.
+
+
+
+
HTML inner structure
+
+
Structuring comments
+
+
+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:
+
+
+That is, the opening header tag, an anchor, the header text, and the
+closing tag.
+
+
+Represent every header in the table of contents, linked
+<a href="#...">...</a> to
+the header. Of course, the headers are also convenient linkage points for
+references from other documents.
+
+
Anchors: <a name="...">
+
+
+Give an anchor a name consisting only of letters, digits, dots
+("."), hyphens ("-"), and underscores
+("_"), 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.
+
+
+Choose anchor names to be readable and meaningful in the HTML source code.
+For instance:
+
+
+
+
Use this form
+
+
... NOT this form
+
+
<a name="Image_formats"></a>
+
+
<a name="Imgfts"></a>
+
+
+
+Anchors should be empty, that is
+
+
+
+
Use this form
+
+
... NOT this form
+
+
<a name="..."></a>
+
+
<a name="...">anything</a>
+
+
+
+Place an anchor within a paragraph (indented
+paragraph, list item, head, etc.) and at its beginning.
+
+
+
+
Use this form
+
+
... NOT this form
+
+
<p><a name="..."></a>
+
+
<p> ...text... <a name="..."></a>
+
<p><a name="..."></a>
+
+
<a name="..."></a><p>
+
<li><a name="..."></a>
+
+
<a name="..."></a><li>
+
+
+
+
+
The presentation of text
+
+
Sections of text
+
+
Paragraphs: <p>
+
+
+Define unindented paragraphs with <p>, never with
+explicit line breaks <br>, and make them
+ragged-right, not right-filled or centered. Put the paragraph tag
+<p> on a line alone, except when it is
+followed immediately by an anchor.
+Don't place the anchor before the paragraph tag.
+
+
Indented paragraphs: <blockquote>
+
+
+Define indented paragraphs with <blockquote>. 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.
+
+
Explicit line breaks: <br>
+
+
+Use explicit line breaks <br> sparingly, and never as
+a substitute for paragraph tags. Do use them in
+
+
+
multi-line addresses
+
formatted coding examples
+
table entries, sparingly
+
+
+
Preformatted text: <pre>
+
+
+Use preformatted text <pre> 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:
+
+
+<font size="-1"><pre>
+... Wide preformatted text ...
+</pre></font>
+
+
+
The use of different font faces
+
+
+Do not use named fonts. Use only standard markup to specify fonts, as
+shown in this table.
+
+
+
Use of fonts
+
+
Tag
+
+
Used for
+
+
<address>
+
+
Addresses in running text
+
<b>
+
+
Emphasis everywhere
+
<em>
+
+
Emphasis, usually in running text; with <b>, strong emphasis
+
<font size=N>
+
+
Table headings, extended <pre> examples
+
<pre>
+
+
Preformatted text (to control spacing)
+
<small>
+
+
Superscripts (smaller than <font size="-1">)
+
<sup>
+
+
Superscripts
+
<tt>
+
+
With <b>, used for specific names of
+ code, programs, and data in running text, and in short examples
+
+
+
+
+
Lists: <ul>, <ol>, <dl>
+
+
+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.
+
+
+Most simple lists should be unordered (bulleted) lists
+<ul>. Use an ordered (numbered or alphabetized) list
+<ol> only where the exact ordering or an exact count
+is important.
+
+
+Where entries in a descriptive list <dl> contain
+extended descriptions <dd> -- 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 <dt>...<dd>... entries in a single
+list:
+
+
+This may be more work for the HTML writer, but the results for the reader
+are often much better.
+
+
+
+
Tables: <table>
+
+
Readability for the user and the HTML writer
+
+
+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
+bgcolor, horizontal rules <hr>, and
+explicit spacing.
+
+
+Secondarily, arrange HTML source code for tables to be readable by the
+writer and developer.
+
+
Specific guidelines for coding tables
+
+
+
Large tables have heads with the same background color as the page's
+headline. (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.)
+
+
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.
+
+
Set cell padding and spacing to 0. Use explicit white space for
+readability, not implicit white space.
+
+
Begin the code for a new row <tr> on a new line.
+Generally use valign=top to control the placement of text
+in a row for readability with a browser or as plain text.
+
+
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 <td> by a tab character.
+
+
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.
+
+
Use horizontal rules and visually empty rows for clarity, but
+sparingly. Be consistent with the existing tables.
+
+
Give every cell some contents: put a nonbreaking space in a visually
+empty cell as a placeholder.
+
+
+
HTML code for typical tables
+
+
+The HTML source code for a typical large table should look like this:
+
+
+Don't use optional tags (ones not required by the HTML standard). These
+include </dd>, </dt>,
+</li>, </p>,
+</tr>, </th>, and
+</td>.
+
+
+
+
Creating a new document
+
+
Name the new document in 8+3 format
+
+
+If you create a new Ghostscript HTML document, choose for it a name in 8+3
+format for cross-platform compabitility:
+
+
+Name.htm
+
+
+
+where "Name" is no more than eight characters.
+
+
+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.
+
+
Use an existing document as a model
+
+
+To create an entirely new Ghostscript document, plagiarize this one for the
+structuring comments and other useful
+parts. Then, using the structuring
+comments as a guide to the sections of the document (in a text editor,
+search for "<!-- ["):
+
+
+
insert your own HTML title and headline (they
+should ordinarily be the same text) in place of the old ones;
+
+
insert your own RCS $Id in place of the old one in the
+HTML header;
+
+
+Follow the other guidelines here, including which elements of the
+document should go in which section according to the structuring comments,
+and anchoring every <Hn>
+header. As you create text and headers, you will want to rebuild the
+table of contents from the headers
+occasionally.
+
+
+Pete Kaiser <kaiser@acm.org>
+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.
+
+
+
+
Miscellany
+
+
+Use <> to bracket links to visible email addresses
+(mailto) 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
+
+
+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.
+
+
+This document contains a humorous message, verbatim except for
+minor spelling corrections, received from a friend out in network-land.
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+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).
+
+
+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.)
+
+
+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.
+
+
+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.
+
+
+Ghostscript version 7.00, 8 April 2001
+
+
+
+
+
+
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 @@
+
+
+
The Ghostscript executable file; on some operating
+systems, more than one file is required. These are entirely
+platform-specific. See below for details.
+
+
Initialization files that Ghostscript reads in when it
+starts up; these are the same on all platforms.
+
pdf_*.ps if Ghostscript was compiled
+with the ability to interpret Adobe Portable Document Format (PDF) files,
+that is, pdf.dev was included in
+FEATURE_DEVS when Ghostscript was built.
+
+
Fontmap and Fontmap.GS (or the
+appropriate Fontmap.xxx for your platform), unless
+you plan always to invoke Ghostscript with the -dNOFONTMAP switch.
+
+
+
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
+documentation on fonts.
+
+
+
+The usage documentation 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.
+
+
+
+
Installing Ghostscript on Unix
+
+
+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:
+
+ ./configure
+ make
+
+and then it may be installed in the default location with:
+
+ make install
+
+This last command may need to be performed with super user privileges.
+
+
+You can set the installation directory by adding --prefix=path
+to the configure invocation in the first step. The default prefix is /usr/local,
+which is to say the gs executable is installed as /usr/local/bin/gs.
+
+
A list of similar configuration options is available via ./configure --help
+
+
+For more detailed information on building Ghostscript see
+how to build Ghostscript on Unix in
+the documentation on building Ghostscript, especially regarding information
+on using the older hand edited makefile
+approach. Whatever configuration method you use, execute "make
+install" to install the executable and all the required and
+ancillary files after the build is complete.
+
+
Fonts
+
+
+The makefile installs all the files except fonts under the directory
+defined in the makefile as prefix. Fonts need to be
+installed separately. The fonts should be installed in
+{prefix}/share/ghostscript/fonts.
+(That is, /usr/local/share/ghostscript/fonts/ if you used the default
+configuration above.)
+
+
+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 usage documentation for more
+information.
+For example, many GNU/Linux distributions place fonts under /usr/share/fonts.
+
+
Ghostscript as a shared object
+If you've built Ghostscript as a shared object, instead of 'make install',
+you must use 'make soinstall'.
+See how to build Ghostscript
+as a shared object for more details.
+
+
Additional notes on GNU/Linux
+
+
+For GNU/Linux, you may be able to install or upgrade Ghostscript from
+precompiled RPM files using:
+
+
+However, please note that we do not create RPMs for Ghostscript, and we take
+no responsibility for RPMs created by others.
+
+
+
+
Installing Ghostscript on MS Windows
+
+
+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.
+
+
+The self-extracting archive is normally named
+gs###w32.exe,
+where ### is the release number (e.g., 650 for Ghostscript 6.50,
+700 for Ghostscript 7.00).
+
+
Windows 95/98 and NT 4
+
+
+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.
+
+
+Alternatively, if you have the zip file, unzip it to a temporary
+directory then run the included setupgs.exe.
+After the setup program has finished, remove the temporary files.
+
+
General Windows configuration
+
+
+The archive includes files in these subdirectories:
+
+
+The actual executable files, in the gs#.##\bin
+subdirectory, are:
+
+
+
GSWIN32.EXE
+
+
32-bit Ghostscript using windows
+
GSWIN32C.EXE
+
+
32-bit Ghostscript using only the command line
+
GSDLL32.DLL
+
+
32-bit dynamic link library containing most of Ghostscript's
+functionality
+
+
+
+See "Installing Ghostscript on DOS" 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:
+
+
+
Open control panel and double-click on the "Printers" icon.
+
Select your Postscript printer.
+
Choose Setup.
+
Choose Options.
+
Choose Advanced.
+
At the top of the dialog box you will see TrueType Fonts Send to
+Printer As: Choose (drop-down menu) Adobe Type 1.
+
Uncheck Use Printer Fonts for All TrueType Fonts and Use
+Substitution
+Table.
+
OK.
+
OK etc.
+
+
+
+That's it! Your TrueType fonts will automatically be downloaded in your
+PostScript file for Ghostscript to use.
+
+
+For printer devices, the default output is:
+
+
+
The default printer
+
+
Win95 or WinNT
+
Prompt for a printer port
+
+
Win32s (Windows 3.1)
+
+
+
+This can be modified as follows.
+
+
+
+
-sOutputFile="LPT1:"
+
Output to the named port.
+
+
-sOutputFile="%printer%printer name" (Windows 95, 98,
+NT or 2000)
+
Output to the named printer. If your printer is named "HP DeskJet 500"
+then you would use -sOutputFile="%printer%HP DeskJet 500".
+
+
+where #.## is the Ghostscript version number. This does not work under
+Win32s (that is, Windows 3.1, which doesn't support named registry
+values).
+
+
+Ghostscript will attempt to load the Ghostscript dynamic link
+library GSDLL32.DLL in the following order:
+
+
In the same directory as the Ghostscript executable.
+
If the environment variable GS_DLL is defined,
+Ghostscript tries to load the Ghostscript dynamic link library (DLL)
+with the name given.
+
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.
+
+
+
+The Ghostscript setup program will create registry values
+for the environment variables GS_LIB
+and GS_DLL.
+
+
Uninstalling Ghostscript on Windows
+
+
+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.)
+
+
+
+
Installing Ghostscript on OpenVMS
+
+
+You need the file GS.EXE to run Ghostscript on OpenVMS, and
+installing Ghostscript on an OpenVMS system requires building it first:
+please read how to build Ghostscript on VMS
+in the documentation on building Ghostscript.
+
+
+The following installation steps assume that the Ghostscript directory is
+DISK1:[DIR.GHOSTSCRIPT]. Yours will almost certainly be in
+a different location so adjust the following commands accordingly.
+
+
+
+
Download the fonts and unpack them into
+DISK1:[DIR.GHOSTSCRIPT.LIB].
+
+
Enable access to the program and support files for all users with:
+
+
+$ set file/prot=w:re DISK1:[DIR]GHOSTSCRIPT.dir
+$ set file/prot=w:re DISK1:[DIR.GHOSTSCRIPT...]*.*
+
+
+
Optionally, add the Ghostscript help instructions to your system wide
+help file:
+
+
+If you have DECWindows/Motif installed, you may wish to replace the
+FONTMAP.GS file with FONTMAP.VMS. Read the
+comment at the beginning of the latter file for more information.
+
+
+
+
Installing Ghostscript on DOS
+
+
+You need the files GS386.EXE and DOS4GW.EXE
+to run Ghostscript. You should install all the files except the fonts in
+C:\GS, and the fonts in C:\GS\FONTS.
+
+
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 FONTMAP file with
+FONTMAP.ATM, and to add to the environment variable
+GS_LIB the name of the directory where the fonts are located
+(see below for more information about GS_LIB). 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
+FONTMAP with FONTMAP.ATB. 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 GS_FONTPATH and removing
+these fonts from FONTMAP:
+
+
+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:
+
+
+
GSOS2.EXE
+
+
A text application that will run windowed or full screen
+
GSDLL2.DLL
+
+
A dynamic link library that must be in the same directory as
+ GSOS2.EXE or on the LIBPATH.
+
GSPMDRV.EXE
+
+
An "external driver" used by the "os2pm"
+ device, which is normally the default device and which displays
+ output in a Presentation Manager window;
+ GSPMDRV.EXE must be located in the same
+ directory as GSOS2.EXE or on the
+ PATH
+
+
+
+GSOS2.EXE, GSDLL2.DLL and
+GSPMDRV.EXE are compiled using EMX/GCC 0.9d. You must have
+the EMX DLLs on your LIBPATH; they are available in a
+package emxrt.zip 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
+
+
+The system menu of the Ghostscript Image window includes a "Copy" command
+to copy the currently displayed bitmap to the Clipboard.
+
+
+OS/2 comes with some Adobe Type Manager fonts. If you wish to use these with
+Ghostscript, you should replace the FONTMAP file with
+FONTMAP.OS2, and add to the environment variable
+GS_LIB (see below for more information about
+GS_LIB) the name of the directory where the fonts are
+located, usually C:\PSFONTS. 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.
+
+
+Since GSOS2.EXE is not a PM application, it cannot
+determine the depth of the PM display. You must provide this information
+using the -dBitsPerPixel option. Valid values are 1, 4, 8
+(the default), and 24.
+
+
+
+
Use
+
+
For
+
+
-dBitsPerPixel=1
+
+
VGA monochrome
+
-dBitsPerPixel=4
+
+
VGA standard
+
-dBitsPerPixel=8
+
+
SVGA 256 colors
+
+
+
+A command file gspm.cmd containing the following line may
+be useful:
+
+
+While drawing, the os2pm driver updates the display every 5
+seconds. On slow computers this is undesirable, and a different interval
+can be specified in milliseconds with the -dUpdateInterval
+option, with a default of -dUpdateInterval=5000; to disable
+update, use -dUpdateInterval=0.
+
+
+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.
+
+
+GSOS2.EXE and GSPMDRV.EXE will stay in
+memory for the number of minutes specified in the environment variable
+GS_LOAD.
+
+
+If you run GS386 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.
+GS386 will not run with the "AUTO" setting.
+
+
+For printer devices, output goes to the default queue. To print to a
+specified queue, use -sOutputFile=\\spool\NullLPT1, where
+NullLPT1 is the queue's physical name.
+
+
+
+
+
+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/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 @@
+
+
+
+Ghostscript Open Issues.
+
+
+
+
+
+
+
+
+
+
+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.
+
+If you would like to take responsibility for any of these issues, please
+contact us.
+
+Additional comments on implementation approaches or project goals are in
+italic type like this.
+
+
+
Known Limitations.
+
+
bbox device doesn't allow min coords < 0.
+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.
+ SourceForge Bug #202735 March 09, 2000.
+
+
+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.
+
+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.
+
+
+
Error messages are too low level and confusing.
+
+
+Although technically correct many error messages are confusing for
+end users. Some commonly reported examples are listed below.
+
+
+When pdfwrite device cannot open the output file it fails with:
+
**** Unable to open the initial device, quitting.
+
+When CIDFont-CMap pair required by PDF file is not available GS
+fails with:
+
/undefinedresource in --findresource--
+
+
+
Minor Bugs.
+
+
PageSize cannot use packedarray
+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
+
Bad JPEG stream in PDF generated when source ends prematurely
+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.
+
+One potential workaround is to use -dAutoFilterColorImages=false and
+-dColorImageFilter=/FlateEncode.
+
+SourceForge bug #228808, Jan 15, 2000.
+
+
+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.
+
+
+
Some attributes of Catalog object are lost during PDF to PDF conversion
+Dests, OpenAction, URI, PageMode, ViewerPreferences are lost during PDF to PDF
+conversion. Other attributes have not been checked.
+
+
+The loss happens diring PDF interpretation. GS can generate these attributes
+from pdfmark's.
+
+
+March 25, 2001.
+
ps2pdf ignores transfer functions in shaded fill
+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.
+
ResourceFileName gives wrong result with Font category.
+The following sequence:
+
+
+ /Font /Category findresource begin
+ /CharterBT-Roman 255 string ResourceFileName =
+ end
+
+
+Gives the results:
+
+ /Resource/Font/CharterBT-Roman
+
+
+This should be a valid platform specific file name and path such as:
+
+ f:/fonts/bchr.pfa
+
+SourceForge Bug #233403, Feb 21, 2001.
+
GS doesn't handle names of separations with HalftoneType 5.
+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.
+
+SourceForge Bug #406643, Mar 7, 2001.
+
+
PDF 1.4 images don't deallocate all memory
+
+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.
+
+
+
+
+
+
Driver Issues.
+
+
[ ] Missing text in landscape mode.
+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.
+When the postscript file is editted to use a larger offset (1st moveto
+parameter), the text appears ok.
+When the postscript file is sent to a printer with a builtin postscript
+interpreter, it prints ok.
+ SourceForge Bug #206652.
+
+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.
+
+
+
+
+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.
+
+
+
+
+
+
Performance.
+
+
Incremental loading for CIDFontType 2 and TrueType fonts.
+
+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.
+
+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.
+
+SourceForge bug #223992, November 30, 2000.
+
+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.
+
+
+
+
+
Differences from Adobe Implementation.
+
+
pdfwrite + TT font => Acrobat 3.x for Windows gives error
+
+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.
+
+SourceForge bug #201955, February 14, 2000.
+
+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.
+
+
+
Inconsistent handling of /Orientation.
+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:
+
+
+%!
+currentpagedevice /Orientation known not
+{ (This printer does _not_ support Orientation.) =
+}
+if
+<> setpagedevice
+currentpagedevice /Orientation known
+{ (Err... wait... it does.) =
+}
+if
+%%EOF
+
+SourceForge bug #220967, October 31, 2000.
+
+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.
+
+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.
+
+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.
+
+
+
Filesystem implementation differences.
+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.
+
+
+Current implementation is incompatible with most font installers. Installers
+expect that:
+
+"filenameforall" enumerates all files in all directories using the relative path name.
+Directory names, including . and .. are not enumerated
+
+
+characters not supported on the platform are encoded.
+
+
+"(w) file" operator creates directories if necessary.
+
+
+
+
Cannot load Adobe's fonts.
+The following program fails with Adobe fonts:
+
+
+
+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.
+
+
There's no %ram% device.
+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
+ SourceForge Bug #226943, December 27, 2000.
+
+
+This should be implemented using the (disk) file system rather than
+actual RAM, at least initially, since that will be easy.
+
+On Unix, it should be implemented with a directory /tmp/$$/ (where
+$$ is the process id), which Ghostscript should delete when it exits.
+
+
+
pdfwrite doesn't recognise the image type by content
+Currently pdfwrite uses JPEG compression for any 8 bit per component
+images >= 64 pixels in both dimensions.
+
+
+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.
+
+
+SourceForge Bug #226391, December 19, 2000.
+
+
+
+
ps2ascii can't handle incremental fonts
+ps2ascii fails with rangecheck on incremental fonts.
+Need to recognise incremental fonts and say that incremental
+fonts are impossible to convert to ASCII.
+
+SourceForge Bug #441959 keeps good test data for this.
+
+
+
+
Buffering in input filters
+
+The following program prints differently to stdout on GS and Adobe :
+
+
+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.
+
+
+Anoter useful test to be made by repeating lines %31-%39 hundred times,
+without intermediate empty lines.
+
+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/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 @@
+
+
+
+Ghostscript and the PostScript language
+
+
+
+
+
+
+
+
+
+
+
Ghostscript's capabilities in relation to PostScript
+
+
+The Ghostscript interpreter, except as noted below, is intended to execute
+properly any source program written in the (LanguageLevel 3)
+PostScript language as defined in the PostScript
+Language Reference, Third Edition (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 PostScript
+Language Reference Manual (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
+"status" operator. The base interpreter may be configured
+(see the documentation on building Ghostscript for
+how to configure it) by adding any combination of the following:
+
+
+
The ability to process PostScript Type 1 fonts. This facility is
+normally included in the interpreter.
+
+
The CMYK color extensions listed in section A.1.4 of the Second Edition
+(including colorimage). These facilities are available
+only if the color, dps, or
+level2 feature was selected when Ghostscript was built.
+
+
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 dps feature or the
+level2 feature was selected when Ghostscript was built.
+
+
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 compfont feature or the
+level2 feature was selected when Ghostscript was built.
+
+
The ability to load TrueType fonts and to handle PostScript Type 42
+(encapsulated TrueType) fonts. These facilities are available only if the
+ttfont feature was selected when Ghostscript was built.
+
+
The PostScript Level 2 "filter" facilities except the
+DCTEncode and DCTDecode filters. These
+facilities are available only if the filter,
+dps, or level2 feature was selected when
+Ghostscript was built.
+
+
The PostScript Level 2 DCTEncode and
+DCTDecode filters. These facilities are available only if
+the dct or level2 feature was selected when
+Ghostscript was built.
+
+
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
+level2 feature was selected when Ghostscript was built.
+
+
All PostScript LanguageLevel 3 operators and facilities listed in the
+Third Edition, except as noted below. These facilities are available only
+if the psl3 feature was selected when Ghostscript was built.
+
+
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 epsf feature was selected when
+Ghostscript was built.
+
+
+
+Ghostscript currently does not implement the following PostScript
+LanguageLevel 3 facilities:
+
+
+
Native Separation and DeviceN color
+spaces -- the alternate space is always used.
+
+
Settable ProcessColorModel for page devices, except for
+a very few special devices.
+
+
IODevices other than %stdin,
+%stdout, %stderr, %lineedit,
+%statementedit, %os%, and (if configured)
+%pipe%.
+
+
+
+Ghostscript can also interpret files in the Portable Document Format (PDF)
+1.3 format defined in the Portable
+Document Format Reference Manual Version 1.3 of March 11, 1999,
+distributed by Adobe Systems
+Incorporated, except as noted below. This facility is available only if
+the pdf feature was selected when Ghostscript was built.
+
+
+Ghostscript currently does not implement the following PDF 1.3 facilities:
+
+
+
Native Separation and DeviceN color
+spaces, as noted above for PostScript.
+
+
Native ICCBased color spaces -- these too always use the
+alternate space.
+
+
+
+Ghostscript also includes a number of
+additional operators defined below that
+are not in the PostScript language defined by Adobe.
+
+
+
+
Implementation limits
+
+
+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.
+
+
Architectural limits
+
+
+
Architectural limits (corresponds to Adobe table B.1)
+
+
Quantity
+
+
Limit
+
+
Type
+
+
Adobe
+
+
integer
+
+
32-bit
+
+
twos complement integer
+
+
+
real
+
+
single-precision
+
+
IEEE float
+
+
+
array
+
+
65535
+
+
elements
+
+
+
dictionary
+
+
65534
+
+
elements
+
+
65535
+
string
+
+
65535
+
+
characters
+
+
+
name
+
+
16383
+
+
characters
+
+
127
+
filename
+
+
128*
+
+
characters
+
+
+
save level
+
+
none
+
+
(capacity of memory)
+
+
15
+
gsave level
+
+
none
+
+
(capacity of memory)
+
+
13
+
+
+
+* 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.
+
+
+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.
+
+
+
+
Additional operators in Ghostscript
+
+
Graphics and text operators
+
+
Transparency
+
+
+Ghostscript provides a set of operators for implementing the transparency
+and compositing facilities of PDF 1.4. These are defined only if the
+transpar option was selected when Ghostscript was built. We
+do not attempt to explain the underlying graphics model here: for details,
+see Adobe
+Technical Note #5407, "Transparency
+in PDF". 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.
+
+
Graphics state
+operators
+
+
+
<modename> .setblendmode -
+
Sets the blending mode in the graphics state. If the mode name is not
+recognized, causes a rangecheck error. The initial value of
+the blending mode is /Compatible.
+
+
+
+
- .currentblendmode <modename>
+
Returns the current blending mode.
+
+
+
+
<0..1> .setopacityalpha -
+
Sets the opacity alpha value in the graphics state.
+The initial opacity alpha value is 1.
+
+
+
+
- .currentopacityalpha <0..1>
+
Returns the current opacity alpha value.
+
+
+
+
<0..1> .setshapealpha -
+
Sets the shape alpha value in the graphics state.
+The initial shape alpha value is 1.
+
+
+
+
- .currentshapealpha <0..1>
+
Returns the current shape alpha value.
+
+
+
+
<bool> .settextknockout -
+
Sets the text knockout flag in the graphics state.
+The initial value of the text knockout flag is true.
+
+
+
+
- .currenttextknockout <bool>
+
Returns the current text knockout flag.
+
+
+
Rendering stack
+operators
+
+
+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.
+
+
+Beginning and ending layers must nest properly with respect to
+save and restore: save and
+restore do not save and restore the layer stack. Currently,
+layers are not required to nest with respect to gsave and
+grestore, 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.
+
+
Begins a new transparency group. The ll/ur coordinates
+are the bounding box of the group in the current user coordinate system.
+paramdict has the following keys:
+
+
/Isolated
+
(optional) Boolean; default value = false.
+
/Knockout
+
(optional) Boolean; default value = false.
+
+
+
+
+
- .discardtransparencygroup -
+
Ends and discards the current transparency group.
+
+
+
+
- .endtransparencygroup -
+
Ends the current transparency group, compositing the group being ended
+onto the group that now becomes current.
+
Begins a new transparency mask. The ll/ur coordinates
+are the bounding box of the mask in the current user coordinate system.
+paramdict has the following keys:
+
+
/Subtype
+
(required) Name, either /Alpha or
+/Luminosity.
+
/Background
+
(optional) Array of number.
+
/TransferFunction
+
(optional) Function object (produced by applying
+.buildfunction to a Function dictionary).
+
+
+
+
+
- .discardtransparencymask -
+
Ends and discards the current transparency mask.
+
+
+
+
<masknum> .endtransparencymask -
+
Ends the current transparency mask, installing it as the current opacity
+(masknum = 0) or shape (masknum = 1) mask in
+the graphics state.
+
+
+
+
<masknum> .inittransparencymask -
+
Resets the current opacity (masknum = 0) or shape
+(masknum = 1) mask to an infinite mask with alpha = 1
+everywhere.
+
+
+
New ImageType
+
+
+The transparency extension defines a new ImageType 103, similar to ImageType
+3 with the following differences:
+
+
+
+
The required MaskDict is replaced by two optional
+dictionaries, OpacityMaskDict and
+ShapeMaskDict. If present, these dictionaries must have a
+BitsPerComponent 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.
+
+
A Matte entry may be present in one or both mask
+dictionaries, indicating premultiplication of the data values. If both
+MaskDicts have a Matte entry and the values
+of the two Matte entries are different, a
+rangecheck error occurs.
+
+
InterleaveType appears in the MaskDicts,
+not the DataDict, because each mask has its own
+InterleaveType. InterleaveType 2
+(interlaced scan lines) is not supported.
+
+
+
+
Other graphics state operators
+
+
+
<bool> .setaccuratecurves -
+
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. initgraphics sets this flag to false, to
+match other PostScript implementations.
+
+
+
+
- .currentaccuratecurves <bool>
+
Returns the current value of the accurate curves flag.
+
+
+
+
<int> .setcurvejoin -
+
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 setlinejoin.
+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. initgraphics sets the parameter to its
+default value.
+
+
+
+
- .currentcurvejoin <int>
+
Returns the current value of the curve join parameter.
+
+
+
+
<bool> .setdashadapt -
+
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.
+initgraphics sets this flag to false.
+
+
+
+
- .currentdashadapt <bool>
+
Returns the current value of the dash adaptation flag.
+
+
+
+
<matrix> .setdefaultmatrix -
+
Sets the default matrix that is returned by
+defaultmatrix and installed by initmatrix.
+Ordinary programs should not use this operator.
+
+
+
+
<num> <bool> .setdotlength -
+
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 bool is false, or in default user coordinates of
+points (units of 1/72in; see the notes
+on measurements in the documentation on devices) if
+bool 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. initgraphics sets the dot length
+to zero.
+
+
+
+
- .currentdotlength <num> <bool>
+
Returns the current dot length and dot length mode.
+
+
+
+
<dx> <dy> .setfilladjust2 -
+
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.
+dx and dy 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.)
+
+
+
+
- .currentfilladjust2 <dx> <dy>
+
Returns the current fill adjustment values.
+
+
+
+
<bool> .setlimitclamp -
+
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
+limitcheck error (false). initgraphics sets
+this flag to false, to match other PostScript implementations.
+
+
+
+
- .currentlimitclamp <bool>
+
Returns the current value of the limit clamp flag.
+
+
+
+
<int> .setoverprintmode -
+
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 DeviceCMYK, 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.
+
+
+
+
- .currentoverprintmode <int>
+
Returns the current overprint mode.
+
+
+
Path operators
+
+
+
- .dashpath -
+
If there is no current dash pattern, does nothing. Otherwise, does the
+equivalent of flattenpath and then chops up the path as
+determined by the dash pattern.
+
+
+
+
<x> <y> <width> <height> .rectappend -
+
<numarray> .rectappend -
+
<numstring> .rectappend -
+
Appends a rectangle or rectangles to the current path, in the same
+manner as rectfill, rectclip, etc. Defined
+only if the dps or level2 option was
+selected when Ghostscript was built.
+
+
+
Painting operators
+
+
+Ghostscript supports an experimental extension of the PostScript imaging
+model to include RasterOp and some related facilities.
+This extension is available only if the rasterop option was
+selected when building Ghostscript.
+
+
+With the RasterOp extension, imaging operations compute a
+function D = f(D,S,T) in RGB space, where f is an
+arbitrary 3-input Boolean function, D is the destination (frame
+buffer or print buffer), S is the source (described below), and
+T is the texture (the current PostScript color, which may be a
+pattern). The source and texture depend on the PostScript imaging
+operation:
+
+
+
For fill and stroke, the source is
+solid black, covering the region to be painted; the texture is the current
+PostScript color.
+
+
For show and imagemask, the source is
+solid black, covering the pixels to be painted; the texture is the current
+PostScript color.
+
+
For image and colorimage, the source is
+the image data; the texture depends on an optional Boolean parameter,
+CombineWithColor, in the image dictionary. If
+CombineWithColor is false (the default), the texture is
+solid black. If CombineWithColor is true, the texture is
+the current color. For the non-dictionary form of the image operator,
+CombineWithColor is considered to be false.
+
+
+
+The rasterop option adds the following operators:
+
+
+
<int8> .setrasterop -
+
Sets the RasterOp function in the graphics state. The
+default function is 252, Source | Texture.
+
+
+
+
- .currentrasterop <int8>
+
Returns the current RasterOp function.
+
+
+
+
<bool> .setsourcetransparent -
+
Sets source transparency in the graphics state. When source
+transparency is true, white source pixels prevent storing into the
+destination, regardless of what the RasterOp function
+returns. The default source transparency is false.
+
+
+
+
- .currentsourcetransparent <bool> -
+
Returns the current source transparency.
+
+
+
+
<bool> .settexturetransparent -
+
Sets texture transparency in the graphics state. When texture
+transparency is true, white texture pixels prevent storing into the
+destination, regardless of what the RasterOp function
+returns. The default texture transparency is false.
+
+
+
+
- .currenttexturetransparent <bool> -
+
Returns the current texture transparency.
+
+
+
+For more information on RasterOp and transparency, please consult chapter 5
+of the "PCL 5 Color Technical Reference Manual",
+Hewlett-Packard
+Manual Part No. 5961-0635.
+
+
Character operators
+
+
+
<string> <bool> .charboxpath -
+
For each character C in the rendering of <string>, let the
+bounding box of Cin device space be the four
+user-space points p1x/y, p2x/y, p3x/y, and p4x/y. For each
+character in order, .charboxpath appends the following to
+the current path:
+
+
+This creates a path whose pathbbox is the
+bbox of the string.
+
+
If <bool> is false, the equivalent of:
+
+
+p1x p1y moveto
+p3x p3y lineto
+
+
+
+
+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 pathbbox is the bbox of the string.
+
Does all the work for rendering a Type 1 outline. This operator, like
+setcharwidth and setcachedevice, is valid
+only in the context of a show operator -- that is, it must only be called
+from within a BuildChar or BuildGlyph
+procedure.
+
+
+
+
<font> <charcode> %Type1BuildChar -
+
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 ...show, stringwidth, or
+charpath), it looks up the name BuildChar
+in the font dictionary to find a procedure to run. If it does not find
+this name, and if the FontType is 1, the interpreter
+instead uses the value (looked up on the dictionary stack in the usual way)
+of the name %Type1BuildChar.
+
+
+The standard definition of %Type1BuildChar is in the
+initialization file gs_type1.ps. Users should not need to
+redefine %Type1BuildChar, except perhaps for tracing or
+debugging.
+
+
+
+
<font> <charname> %Type1BuildGlyph -
+
Provides the Type 1 implementation of BuildGlyph.
+
+
+
Other operators
+
+
Mathematical operators
+
+
+
<number> arccos <number>
+
Computes the arc cosine of a number between -1 and 1.
+
+
+
+
<number> arcsin <number>
+
Computes the arc sine of a number between -1 and 1.
+
+
+
Dictionary operators
+
+
+
mark <key1> <value1> <key2> <value2> ... .dicttomark <dict>
+
Creates and returns a dictionary with the given keys and values. This
+is the same as the PostScript Level 2 >> operator,
+but is available even in Level 1 configurations.
+
+
+
+
<dict> <key> <value> .forceput -
+
Equivalent to put, but works even if
+dict is not writable, and (if dict is
+systemdict or the current save level is 0) even if
+dict is in global VM and key and/or
+value is in local VM. This operator should be used
+only initialization code, and only in executeonly procedures: it must not be
+accessible after initialization.
+
+
+
+
<dict> <key> .forceundef -
+
Equivalent to undef, but works even if
+dict is not writable. This operator should be used
+only initialization code, and only in executeonly procedures: it must not be
+accessible after initialization.
+
+
+
+
+
<dict> <key> .knownget <value> true
+
<dict> <key> .knownget false
+
Combines known and get in the
+obvious way.
+
+
+
+
<dict> <integer> .setmaxlength -
+
Sets the capacity (maxlength) of a dictionary.
+Causes a dictfull error if the dictionary has more
+occupied entries than the requested capacity.
+
+
+
String and name operators
+
+
+
<integer> .bytestring <bytestring>
+
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.
+
+
+
+
<name> .namestring <string>
+
Returns the (read-only) string for a name.
+
+
+
+
<obj> <pattern> .stringmatch <bool>
+
Matches obj against a pattern in which '*' matches 0 or
+more characters and '?' matches any single character. If
+obj is a string or a name, matches its characters against
+the pattern; if obj is of any other type, the result is
+true if the pattern is the single character "*" and
+false otherwise.
+
Encrypts fromString according to the algorithm for
+Adobe Type 1 fonts, writing the result into toString.
+toString must be at least as long as
+fromString, or a rangecheck error occurs.
+state is the initial state of the encryption algorithm (a
+16-bit non-negative integer); newState is the new state of
+the algorithm.
+
Decrypts fromString according to the algorithm for
+Adobe Type 1 fonts, writing the result into toString.
+Other specifications are as for type1encrypt.
+
+
+
Relational operators
+
+
+
<number|string> <number|string> max <number|string>
+
Returns the larger of two numbers or strings.
+
+
+
+
<number|string> <number|string> min <number|string>
+
Returns the smaller of two numbers or strings.
+
+
+
File operators
+
+
+
<file> .filename <string> true
+
<file> .filename false
+
If the file was opened by the file or
+.tempfile operator, returns the file name and
+true; if the file is a filter, returns
+false.
+
+
+
+
<file> .fileposition <integer> true
+
Returns the position of file. Unlike the standard
+fileposition operator, which causes an error if the file is
+not positionable, .fileposition 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.
+
+
+
+
<string> findlibfile <foundstring> <file> true
+
<string> findlibfile <string> false
+
Opens the file of the given name for reading, searching through
+directories as described in the usage
+documentation. If the search fails, findlibfile simply
+pushes false on the stack and returns, rather than causing an error.
+
Reads bytes from a file like readstring, but also leaves
+the bytes in the file buffer so they will be read again by a subsequent read
+operation. Currently gives a rangecheck error if
+string is larger than the file's buffer.
+
Creates and opens a temporary file
+like the file operator, also returning the file name. There
+are three cases for the <prefix_string|null> operand:
+
+
+
+
null: 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
+/tmp/gs_a1234.
+
+
A string that is not the beginning of an absolute file name (e.g., does
+not begin with . or / on Unix-like
+platforms): create the file in the standard temporary directory, but use the
+<prefix_string> as the first part of the file name.
+E.g., if <prefix_string> is xx, the
+temporary file might be named /tmp/xxa1234.
+
+
A string that is the beginning of an absolute file name: use the
+<prefix_string> as the first part of the file name.
+E.g., if <prefix_string> is
+/my/tmpdir/zz, the temporary file might be named
+/my/tmpdir/zza1234.
+
+When running in SAFER mode, the absolute path must
+be one of the strings on the list given by the PermitFileWriting
+userparameter. Temporary files created with .tempfile can
+be deleted when in SAFER mode, and can be renamed to one of the paths
+that is on both the PermitFileControl and PermitFileWriting
+paths.
+
+
+
+
+
+
<file> <integer> .unread -
+
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 ioerror
+error. May also cause an ioerror if the last operation on
+the file was not a reading operation. This operator is now deprecated:
+use .peekstring in new code.
+
+
+
+Ghostscript also supports the following IODevice in
+addition to a subset of those defined in the Adobe documentation:
+%pipe%command, which opens a pipe on the given command.
+This is supported only on operating systems that provide
+popen (primarily Unix systems, and not all of those).
+
+
Virtual memory operators
+
+
+
<save> .forgetsave -
+
Cancels the effect of a save, making it as though the save never
+happened.
+
+
+
Miscellaneous operators
+
+
+
<obj1> <obj2> ... <objn> <n> .execn ...
+
This executes obj1 through objn in that
+order, essentially equivalent to
+
+
+except that it doesn't actually create the array.
+
+
+
+
<string> getenv <string> true
+
<string> getenv false
+
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.
+
+
+
+
<name> <array> .makeoperator <operator>
+
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.
+
+
+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.
+
+
+
+
<string> <boolean> .setdebug -
+
If the Ghostscript interpreter was built with the DEBUG
+flag set, sets or resets any subset of the debugging flags normally
+controlled by -Z in the command line. Has no effect
+otherwise.
+
+
+
+
- .oserrno <errno>
+
Returns the error code for the most recent operating system error.
+
+
+
+
- .oserrorstring <string>
+
Returns the error string for the most recent operating system error.
+
+
+
+
+
<array> <procedure> .runandhide ... <array>
+
Runs the <procedure> after removing the
+<array> from the stack. As long as <array>
+is not contained in any readable dictionaries or elsewhere on stacks, it
+will not be accessible to <procedure>.
+
+This operator is intended to allow hiding a <save> object
+during execution of procedures or files that run in SAFER mode.
+If a save is performed prior to entering SAFER mode
+with .setsafe, using the save object as the operand to
+restore will return to NOSAFER mode. In order to
+prevent the procedures running in SAFER mode from being able to
+return to NOSAFER mode, this operator should be used.
+Upon return from the file or procedure restore can be used
+to return to NOSAFER mode.
+
+Note: 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
+invalidrestore error.
+
+For example, in order for a script or job server to execute a file
+somefile.ps with the SAFER mode restrictions in place, returning
+to unrestricted NOSAFER mode when the procedure exits is as follows:
+
+ Start Ghostscript with -dNOSAFER
+
+ ... % 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
+
+Another refinement on the above would be to execute .runandhide
+using stopped in order to report errors but continue processing.
+
+
+
+
- .setsafe -
+
If Ghostscript is started with -dNOSAFER or
+-dDELAYSAFER, this operator can be used to enter SAFER
+mode (see -dSAFER)
+
+Note: If -dPARANOIDSAFER was specified on the command
+line, .setsafe also sets the PermitFileReading
+parameter to an empty array.
+
+Since SAFER mode is implemented with userparameters and device parameters,
+it is possible to use save and restore before
+and after .setsafe to return to NOSAFER mode, but care
+should be taken to ensure that the save object is not
+accessible to any procedures or file run in SAFER mode (see
+.runandhide above).
+
+Note: This uses setpagedevice to change .LockSafetyParams, so the page
+will be erased as a side effect of this operator
+
+
+
+
- .locksafe -
+
+This operator sets the current device's .LockSafetyParams
+and the LockFilePermissions 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.
+
+If Ghostscript is started with -dNOSAFER or
+-dDELAYSAFER, this operator can be used to enter SAFER
+mode with the current set of PermitFile... user parameters
+in effect. Since .setsafe sets the PermitFileWriting
+and PermitFileControl 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 SAFER mode.
+
+For example, to enable reading everywhere, but disallow writing and file
+control (deleting and renaming files), the following can be used:
+
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.
+
+
+
+
<devicename> finddevice <device>
+
Creates a default instance of a device specified by name. The instance
+is created in global VM. If finddevice is called more than
+once with the same device name, it creates the default instance the first
+time, and returns the same instance thereafter.
+
+
+
+
<devicename> findprotodevice <device>
+
Finds the prototype of a device specified by name. A prototype can be
+used with .getdeviceparams or other parameter-reading
+operators, but it is read-only and cannot be set with
+setdevice: it must be copied first.
+
Reads a rectangle of rendered bits back from a device. This is only
+guaranteed to be implemented for image devices (see below).
+alpha? is 0 for no alpha, -1 for alpha first, 1 for alpha
+last. std_depth is null for native pixels, number of bits
+per component for a standard color space.
+
+
+
+
<index> .getdevice <device>
+
Returns a device from the set of devices known to the system. The
+first device, which is the default, is numbered 0. If the
+index is out of range, causes a rangecheck
+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.
+
Makes a new device that accumulates an image in memory.
+matrix is the initial transformation matrix: it must be orthogonal
+(that is, [a 0 0 b x y] or
+[0 a b 0 x y]). palette is a
+string of 2^N or
+3 × 2^N elements,
+specifying how the 2^N 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
+<ff 00>; 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 <000000 0000ff
+00ff00 00ffff ff0000 ff00ff ffff00 ffffff>. 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.
+
+
+Alternatively, palette can be 16, 24, 32, or null (equivalent to 24).
+These are interpreted as:
+
+
+
+
Palette
+
+
Bits allocated per color
+
+
16
+
+
5 red, 6 green, 5 blue
+
24
+
+
8 red, 8 green, 8 blue
+
32
+
+
8C, 8M, 8Y, 8K
+
+
+
+Note that one can also make an image device (with the same palette as an
+existing image device) by copying a device using the
+copydevice operator.
+
Makes an image device as described above. word? 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.
+
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 image 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.
+
+
+
+
<device> setdevice -
+
Sets the current device to the specified device. Also resets the
+transformation and clipping path to the initial values for the device.
+Signals an invalidaccess error if the device is a
+prototype or if .LockSafetyParams
+is true for the current device.
+
+
+
+
- currentdevice <device>
+
Gets the current device from the graphics state.
+
Sets properties of a device. May cause undefined,
+invalidaccess, typecheck, rangecheck, or
+limitcheck errors.
+
+
+
+
- flushpage -
+
On displays, flushes any buffered output, so that it is guaranteed to
+show up on the screen; on printers, has no effect.
+
+
+
+
+
Filters
+
+
Standard filters
+
+
+In its usual configuration, Ghostscript supports all the standard PostScript
+LanguageLevel 3 filters, both encoding and decoding, except that it does not
+currently support:
+
+
+
+
the EarlyChange key in the LZWEncode
+filter.
+
+
+
+
+Ghostscript also supports additional keys in the optional dictionary
+operands for some filters. For the LZWDecode filter:
+
+
+
InitialCodeLength <integer> (default 8)
+
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.
+
+
+
+
FirstBitLowOrder <boolean> (default false)
+
If true, codes appear with their low-order bit first.
+
+
+
+
BlockData <boolean> (default false)
+
If true, the data is broken into blocks in the manner specified for the
+GIF file format.
+
+
+
+For the CCITTFaxEncode and CCITTFaxDecode
+filters:
+
+
+
DecodedByteAlign <integer> (default 1)
+
An integer N with the value 1, 2, 4, 8, or 16, specifying 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.
+
+
+
Non-standard filters
+
+
+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.
+
+
+
<target> /BCPEncode filter <file>
+
<source> /BCPDecode filter <file>
+
Create filters that implement the Adobe Binary Communications Protocol.
+See Adobe documentation for details.
+
Creates a filter for encrypting data into the encrypted format described
+in the Adobe Type 1 Font Format documentation. The
+seed_integer must be 55665 for the eexec
+section of a font, or 4330 for a CharString. Note that for
+the eexec section of a font, this filter produces binary
+output and does not include the initial 4 (or lenIV) garbage
+bytes.
+
Creates a filter for decrypting data encrypted as described in the Adobe
+Type 1 Font Format documentation. The seed_integer must be
+55665 or 4330 as described just above. Recognized dictionary keys are:
+
+
Creates a filter that produces the 16-byte MD5 digest of the input.
+Note that no output is produced until the filter is closed.
+
+
+
+
<source> <hex_boolean> /PFBDecode filter <file>
+
Creates a filter that decodes data in .PFB format, the
+usual semi-binary representation for Type 1 font files on IBM PC and
+compatible systems. If hex_boolean is true, binary packets
+are converted to hex; if false, binary packets are not converted.
+
+The Predictor is the PNG algorithm number + 10 for the
+Encoding filter; the Decoding filter
+ignores Predictor. 15 means the encoder attempts to
+optimize the choice of algorithm. For more details see the PNG
+specification
+
+
Create filters that implement the Adobe Tagged Binary Communications
+Protocol. See Adobe documentation for details.
+
+
+
+
<target> /zlibEncode filter <file>
+
<source> /zlibDecode filter <file>
+
Creates filters that use the data compression method variously known as
+'zlib' (the name of a popular library that implements it), 'Deflate' (as in
+RFC 1951, 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 Flate filters are actually a combination of
+this filter with an optional predictor filter.
+
+
+
Unstable filters
+
+
+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.
+
+
string must be a string of exactly 256 bytes. Creates a
+filter that converts each input byte b to
+string[b]. Note that the Encode
+and Decode filters operate identically: the client must
+provide a string for the Decode filter that
+is the inverse mapping of the string for the
+Encode filter.
+
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:
+
+
This filter implements the Burroughs-Wheeler block sorting compression
+method, which we've heard is also used in the popular bzip2
+compression application. See http://sources.redhat.com/bzip2/
+for more information. The only recognized dictionary key is:
+
+
The Encode filter starts by initializing an internal
+256-byte array a to the values 0 .. 255. This array will
+always hold a permutation of these values. Then for each input byte
+b, the filter outputs the index i such that
+a[i] = b, and moves that element to the
+front (element 0) of a, moving elements 0 .. i-1 to
+positions 1 .. i. The Decode filter inverts this
+process.
+
+
+
+
+
Device parameters
+
+Ghostscript supports the concept of device parameters for all devices, not
+just page devices. (For non-page devices, these are accessible through
+getdeviceprops and putdeviceprops, as
+indicated above.) Here are the currently defined parameters for all
+devices:
+
+
+
+
.LockSafetyParams <boolean>
+
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.
+
+If this parameter is true for the current device, attempt to set a new
+device that has .LockSafetyParams false will signal an
+ invalidaccess error.
+
+
+
+
BitsPerPixel <integer> (usually read-only)
+
Number of bits per pixel.
+
+
+
+
.HWMargins [<four floats>]
+
Size of non-imageable regions around the edges of the page, in points
+(units of 1/72in; see the notes on
+measurements in the documentation on devices).
+
+
+
+
HWSize [<integer> <integer>]
+
X and Y size in pixels.
+
+
+
+
Name <string> (read-only)
+
The device name. Currently the same as OutputDevice.
+
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.
+
+
+
+In addition, the following are defined per Adobe's documentation for the
+setpagedevice operator:
+
+
+Some devices may only allow certain values for HWResolution
+and PageSize. The null device ignores attempts to set
+PageSize; its size is always [0 0].
+
+
+For printers these are also defined:
+
+
+
BufferSpace <integer>
+
Buffer space for band lists, if the bitmap is too big to fit in memory.
+
+
+
+
MaxBitmap <integer>
+
Maximum space for a full bitmap in memory.
+
+
+
+
OutputFile <string>
+
+
An empty string means "send to printer directly", otherwise specifies
+the file name for output; %d is replaced by the page number;
+on Unix systems %pipe%command writes to a pipe.
+(|command also writes to a pipe, but is now
+deprecated.)
+
+Attempts to set this parameter if .LockSafetyParams is true
+will signal an invalidaccess error.
+
+
+
+
OpenOutputFile <boolean>
+
If true, open the device's output file when the device is opened,
+rather than waiting until the first page is ready to print.
+
+
+
+
PageCount <integer> (read-only)
+
Counts the number of pages printed on the device.
+
+
+
+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 BufferSpace parameter, not
+BandBufferSpace.
+
+
+
BandHeight <integer>
+
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).
+
+
+
+
BandWidth <integer>
+
The width of bands in the rasterizing pass, in pixels. 0 means use the
+actual page width.
+
+
+
+
BandBufferSpace <integer>
+
The size of the band buffer in the rasterizing pass, in bytes. 0 means
+use the same buffer size as for the interpretation pass.
+
+
+
+Ghostscript supports the following parameter for
+setpagedevice and currentpagedevice that is
+not a device parameter per se:
+
+
+
ViewerPreProcess <procedure>
+
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.
+
+
+
+
+
User parameters
+
+Ghostscript supports the following non-standard user parameters:
+
+
+
ProcessDSCComment <procedure|null>
+
If not null, this procedure is called whenever the scanner detects a DSC
+comment (comment beginning with %% or %!).
+There are two operands, the file and the comment (minus any terminating
+EOL), which the procedure must consume.
+
+
+
+
ProcessComment <procedure|null>
+
If not null, this procedure is called whenever the scanner detects a
+comment (or, if ProcessDSCComment is also not null, a
+comment other than a DSC comment). The operands are the same as for
+ProcessDSCComment.
+
+
+
+
LockFilePermissions <boolean>
+
If true, this parameter and the three PermitFile...
+parameters cannot be changed. Attempts to change any of the values
+when LockFilePermissions is true will signal invalidaccess.
+Also, when this value is true, the file operator
+will give invalidaccess when attempting to open files
+(processes) using the %pipe device.
+
+Also when LockFilePermissions is true, strings
+cannot reference the parent directory (platform specific). For example
+(../../xyz) is illegal on unix, Windows
+and Macintosh, and ([.#.#.XYZ]) is illegal on VMS.
+
+This parameter is set true by the .setsafe and
+.locksafe operators.
+
+
+
+
PermitFileReading <array of strings>
+
PermitFileWriting <array of strings>
+
PermitFileControl <array of strings>
+
These parameters specify paths where file reading, writing and the
+'control' operations are permitted, respectively. File control
+operations are deletefile and renamefile.
+For renamefile, the filename for the current filename
+must match one of the paths on the PermitFileControl list, and the
+new filename must be on both the PermitFileControl and the
+PermitFileWriting lists of paths.
+
+The strings can contain wildcard characters as for the filenameforall
+operator and unless specifying a single file, will end with a *
+for directories (folders) to allow access to all files and sub-directories
+in that directory.
+
+Note: The strings are used for stringmatch operations similar
+to filenameforall, 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).
+
+The SAFER mode and the
+.setsafe operator set all three lists to empty arrays,
+thus the only files that can be read are the %stdin 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
+.tempfile operator).
+
+
+
+
+
Miscellaneous additions
+
+run 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.
+
+
+
+
+
+
+
+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.
+
+
+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).
+
+
+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 PostScript
+Language Reference Manual, 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.
+
+
+
+
PostScript operator API
+
+
+The highest level of the library, which is the one that most clients will
+use, directly implements the PostScript graphics operators with procedures
+named gs_XXX, for instance gs_moveto and
+gs_fill. Nearly all of these procedures take graphics
+state objects as their first arguments, such as
+
+
+int gs_moveto(gs_state *, double, double);
+
+
+
+Nearly every procedure returns an integer code which is >= 0 for a
+successful return or <0 for a failure. The failure codes correspond
+directly to PostScript errors, and are defined in
+gserrors.h.
+
+
+The library implements all the operators in the following sections of the
+PostScript Language Reference Manual, with the indicated
+omissions and with the APIs defined in the indicated .h
+files. A header of the form A.h(B.h) indicates that
+A.h is included in B.h, so
+A.h need not be included explicitly if B.h
+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.
+
+
+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 (pathforall,
+image, colorimage,
+imagemask) is partly inverted: the client calls a procedure
+to set up an enumerator object, and then calls another procedure for each
+iteration. The ...show operators,
+charpath, and stringwidth also use an
+inverted control structure.
+
+
*(all the show operators), definefont, undefinefont, findfont, *scalefont, *makefont, selectfont, [Global]FontDirectory, Standard/ISOLatin1Encoding, findencoding
+
+
+
+The following procedures from the list above operate differently from their
+PostScript operator counterparts, as explained here:
+
+
+
gs_makepattern(gscolor2.h)
+
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
+gs_makepattern.
+
+
+
+
gs_setpattern(gscolor2.h)
+
gs_setcolor(gscolor2.h)
+
gs_currentcolor(gscolor2.h)
+
Use gs_client_color rather than a set of color
+parameter values. See below for more details on
+gs_setpattern.
+
+
+
+
gs_currentdash_length/pattern/offset(gsline.h)
+
Splits up currentdash into three separate procedures.
+
Provide an "enumeration style" interface to setscreen.
+(gs_setscreen is also implemented.)
+
+
+
+
gs_rotate/scale/translate(gscoord.h)
+
gs_[i][d]transform(gscoord.h)
+
These always operate on the graphics state CTM. The corresponding
+operations on free-standing matrices are in gsmatrix.h and
+have different names.
+
+
+
+
gs_path_enum_alloc/init/next/cleanup(gspath.h)
+
Provide an "enumeration style" implementation of
+pathforall.
+
+
+
+
gs_image_enum_alloc(gsimage.h)
+
gs_image_init/next/cleanup(gsimage.h)
+
Provide an "enumeration style" interface to the equivalent of
+image, imagemask, and
+colorimage. In the gs_image_t,
+ColorSpace provides an explicit color space, rather than
+using the current color space in the graphics state;
+ImageMask distinguishes imagemask from
+[color]image.
+
+
+
+
gs_get/putdeviceparams(gsdevice.h)
+
Take a gs_param_list for specifying or receiving the
+parameter values. See gsparam.h for more details.
+
+
+
+
gs_show_enum_alloc/release(gschar.h)
+
gs_xxxshow_[n_]init(gschar.h)
+
gs_show_next(gschar.h)
+
Provide an "enumeration style" interface to writing text. Note that
+control returns to the caller if the character must be rasterized.
+
+
+
+This level of the library also implements the following operators from other
+sections of the Manual:
+
+
+In order to obtain the full PostScript Level 2 functionality listed above,
+FEATURE_DEVS must be set in the makefile to include at least the following:
+
+
+The *lib.mak makefiles mentioned below do not always
+include all of these features.
+
+
+Files named gs*.c implement the higher level of the
+graphics library. As might be expected, all procedures, variables, and
+structures available at this level begin with "gs_".
+Structures that appear in these interfaces, but whose definitions may be
+hidden from clients, also have names beginning with "gs_",
+that is, the prefix, not the implementation, reflects at what level the
+abstraction is made available.
+
+
Patterns
+
+
+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.
+
+
+gs_makepattern defines a pattern color. Its arguments are as follows:
+
+
+
gs_client_color *
+
+
The resulting Pattern color is stored here. This is different from PostScript, which has no color objects per se, and hence returns a modified copy of the dictionary.
+
const gs_client_pattern *
+
+
The analogue of the original Pattern dictionary, described in detail just below.
+
const gs_matrix *
+
+
Corresponds to the matrix argument of the makepattern operator.
+
gs_state *
+
+
The current graphics state.
+
gs_memory_t *
+
+
The allocator to use for allocating the saved data for the
+ Pattern color. If this is
+ NULL, gs_makepattern uses the
+ same allocator that allocated the graphics state. Library
+ clients should probably always use NULL.
+
+
+
+
+The gs_client_pattern structure defined in
+gscolor2.h corresponds to the Pattern
+dictionary that is the argument to the PostScript language
+makepattern operator. This structure has one extra member,
+void *client_data, which is a place for clients to
+store a pointer to additional data for the PaintProc; this
+provides the same functionality as putting additional keys in the
+Pattern dictionary at the PostScript language level. The
+PaintProc is an ordinary C procedure that takes as
+parameters a gs_client_color *, which is the
+Pattern color that is being used for painting, and a
+gs_state *, which is the same graphics state that
+would be presented to the PaintProc in PostScript.
+Currently the gs_client_color * is always the current
+color in the graphics state, but the PaintProc should not
+rely on this. The PaintProc can retrieve the
+gs_client_pattern * from the
+gs_client_color * with the
+gs_getpattern procedure, also defined in
+gscolor2.h, and from there, it can retrieve the
+client_data pointer.
+
+
+The normal way to set a Pattern color is to call
+gs_setpattern with the graphics state and with the
+gs_client_color returned by gs_makepattern.
+After that, one can use gs_setcolor to set further
+Pattern colors (colored, or uncolored with the same
+underlying color space); the rules are the same as those in PostScript.
+Note that for gs_setpattern, the
+paint.values in the gs_client_color must be
+filled in for uncolored patterns; this corresponds to the additional
+arguments for the PostScript setpattern operator in the
+uncolored case.
+
+
+There is a special procedure gs_makebitmappattern for creating bitmap-based
+patterns. Its API is documented in gscolor2.h; its implementation, in
+gspcolor.c, may be useful as an example of a pattern using a particularly
+simple PaintProc.
+
+
Lower-level API
+
+
+Files named gx*.c implement the lower level of the graphics
+library. The interfaces at the gx level are less stable,
+and expose more of the implementation detail, than those at the
+gs level: in particular, the gx interfaces
+generally use device coordinates in an internal fixed-point representation,
+as opposed to the gs interfaces that use floating point
+user coordinates. Named entities at this level begin with
+gx_.
+
+
+Files named gz*.c and gz*.h are internal to
+the Ghostscript implementation, and are not designed to be called by
+clients.
+
+
+
+
A full example
+
+
+The file gslib.c in the Ghostscript fileset is a complete
+example program that initializes the library and produces output using it;
+files named *lib.mak (such as ugcclib.mak
+and bclib.mak) are makefiles using gslib.c
+as the main program. The following annotated excerpts from this file are
+intended to provide a roadmap for applications that call the library.
+
+
+Any application using Ghostscript should include the fragment above at the
+very beginning of the main program.
+
+
#include "gx.h"
+
+
+The gx.h 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 gx.h.
+
+
/* 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));
+
+
+The externs above are needed for initializing the library.
+
+
+The code above initializes the library and its memory manager. pgs now
+points to the graphics state that will be passed to the drawing routines in
+the library.
+
+
+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.)
+
+
/* gsave and grestore (among other places) assume that */
+ /* there are at least 2 gstates on the graphics stack. */
+ /* Ensure that now. */
+ gs_gsave(pgs);
+
+
+The call above completes initializing the graphics state. When the program
+is finished, it should execute:
+
+
+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.
+
+
+This document describes various maintenance procedures associated with
+development version
+Ghostscript. It is only meant for developers actively working on
+Ghostscript.
+
+
+
+
Rules for CVS Commits
+
+
+This section describes a few rules intended to make life easier for people
+working with this code base.
+
+
+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.
+
+
+A concise and useful document for working with CVS branches is Jeff
+Semke's CVS
+Branch and Tag Primer. A
+somewhat more detailed explanation is the Branching and
+merging section from the CVS documentation by Pascal Molli.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+Always supply a descriptive log message for your commits. These log
+messages are used to automatically generate the News.htm 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.
+
+
+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.
+
+
+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].)
+
+
+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 News.htm
+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.
+
+
+All patches must be reviewed before being committed. Please email your
+patch to gs-code-review@ghostscript.com.
+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.
+
+
+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 <raph@artofcode.com> and
+include your snailmail address for a hardcopy assignment form.
+
+
Adding or removing files
+
+
+When adding or removing files, don't forget to invoke cvs
+add or cvs rm.
+
+
+When adding files, update the file roadmap in
+doc/Develop.htm.
+
+
+When adding or removing files other than .c or .h: If the files will be
+used at runtime, check the install list in unixinst.mak.
+
+
+When adding .c files, update the relevant .mak file
+(usually devs.mak, int.mak, or
+lib.mak).
+
+
+When adding new documentation, add a link to doc/Readme.htm and
+a short blurb describing the contents of the file.
+
+
+When adding or changing fonts, update lib/Fontmap.GS,
+fonts.mak, and possibly the compiled fonts in
+gs.mak and the examples in
+doc/Fonts.htm.
+
+
+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/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 @@
+
+
+
+How to build Ghostscript from source code
+
+
+
+
+
+
+
+
+
+
+
+This document describes how to build a Ghostscript executable from source
+code. There are four major steps to building Ghostscript:
+
+
+
Acquire the compressed archive files of source code for Ghostscript and
+the required third-party libraries.
+
Unpack the archive files into the Ghostscript directory and correctly
+named subdirectories.
+
Prepare the makefiles, including specific changes for your operating
+environment and your choice of configuration options.
+
Invoke "make" to build the software.
+
+
+
+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
+installation instructions.
+
+
+
+
How to acquire the source code
+
+
+Building Ghostscript requires the Ghostscript source code itself, and also
+the source code for some third-party libraries that Ghostscript uses.
+
+
Ghostscript source code
+
+
+Ghostscript is available from all the standard GNU mirrors, e.g.
+
+
+Ghostscript source code is packaged in two different formats:
+gzip-compressed tar files (*.tar.gz) and zip files
+(*.zip). For all versions there are gzip-compressed tar
+files:
+
+
For recent versions of Ghostscript there may also be zip files
+
+
+gs###src.zip
+gs###w32.exe
+
+
+
+("#.##" 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 unpacking the source code.
+
+
Third-party library source code
+
+
+To build Ghostscript you need the source code for the Independent JPEG Group (IJG) library, the
+Portable Network Graphics
+(PNG)
+library, and the zlib
+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.
+
+
+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 its own version number that has
+nothing to do with Ghostscript's version number; 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.
+
+
+Although the zip archives of an old version of the PNG library may not be
+named lpng###.zip, we refer to it as
+lpng###.zip.
+
+
+On MacOS, the .sit source archive includes the appropriate source versions
+of these libraries, so no additional downloads are necessary.
+
+
+
+
How to unpack the source code
+
+
+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.
+
+
How to unpack compressed tar files generally
+
+
+Tar (.tar) files are the de facto standard for
+archiving files on Unix (every Unix system has the tar
+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 gzip, which
+adds the suffix ".gz" to the file name, giving
+".tar.gz".
+
+
+To unpack a compressed tar file MyArchive.tar.gz 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:
+
+
+gzip -d MyArchive.tar.gz
+ tar -xf MyArchive.tar
+
+
+
+or in a pipeline:
+
+
+gzip -d -c MyArchive.tar.gz | tar -xf -
+
+
+
+or, if you have a program like GNU tar that can handle
+compressed tar files, with a single command:
+
+
+tar -zxf MyArchive.tar.gz
+
+
+
+The tar program automatically preserves directory structure
+in extracting files. The Ghostscript source archive puts all files under a
+directory gs#.##, so using tar 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
+parent of the gs directory before unpacking
+the files. If a subdirectory doesn't already exist, tar
+creates it.
+
+
+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
+
+
+
set the program's options to "Use folder names" or the equivalent, and
+
check that it is extracting files into the right place.
+
+
+
How to unpack zip files generally
+
+
+Zip files are the de facto 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.
+
+
+One common 16-bit DOS program is pkunzip, which comes in
+the pkzip package. If you use this, you should ensure that
+you have at least version 2.04g, because with its -d
+switch, that version of pkunzip 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
+unzip:
+
+
+Unlike pkunzip, InfoZIP unzip automatically
+preserves the directory structure of extracted files. So if you have a zip
+archive MyArchive.zip:
+
+
+
Extracting zipped files
+
+
Command
+
+
Preserves directory structure
+
+
pkunzip MyArchive.zip
+
+
Does NOT
+
pkunzip -d MyArchive.zip
+
+
DOES (note the -d switch)
+
unzip MyArchive.zip
+
+
DOES
+
+
+
+As with the compressed tar files, make sure you're positioned in the
+parent of the gs directory before unpacking
+the files. If a subdirectory doesn't already exist, zip or
+pkunzip -d creates it.
+
+
How to unpack Ghostscript itself
+
+
+At this point you have acquired all the source code
+and are ready to unpack it according to the preceding guidelines for tar files or zip files. To
+unpack the Ghostscript source, make the parent of the (new)
+gs directory the current directory.
+
+
+
2-step:
+
+
gzip -d ghostscript-#.##.tar.gz tar -xf ghostscript-#.##.tar
+
+All the Ghostscript source files are now in subdirectories of the gs
+directory.
+
+
+
Source subdirectories
+
Subdirectory
+
+
Contents
+
+
src/
+
+
C source code and makefiles
+
lib/
+
+
PostScript files and scripts used when running Ghostscript
+
doc/
+
+
Documentation
+
man/
+
+
Unix man pages
+
examples/
+
+
Sample PostScript files
+
+
+
How to unpack the third-party libraries
+
+
+The Ghostscript makefiles expect to find the JPEG, PNG, and zlib source code
+in specific subdirectories of the gs 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:
+
+
+
Make the gs directory current.
+
Unpack the archive file, creating a subdirectory (which will include a
+version number).
+
Whatever the subdirectory's original name, rename it to the versionless
+name shown just below.
+
+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.
+
+
+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:
+
+
+./configure
+
+
+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 invoking make below. Note that the
+autoconfiguration option is only available with the unix .tar distribution
+of the source.
+
+
+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.
+
+
+
+
Platform-specific makefiles
+
Makefile
+
+
Used for
+
+
bcwin32.mak
+
+
MS Windows with Borland/Inprise compilers
+
msvc32.mak
+
+
MS Windows with Microsoft Visual C++ version 4 to 7.
+
openvms.mak
+
+
OpenVMS
+
os2.mak
+
+
OS/2 with the gcc/emx compiler
+
unix-gcc.mak
+
+
Unix with gcc
+
unixansi.mak
+
+
Unix with ANSI C compilers other than gcc
+
watc.mak
+
+
DOS with Watcom compilers
+
watcw32.mak
+
+
MS Windows with Watcom compilers
+
+
Platform-independent makefiles
+
contrib.mak
+
+
Contributed device drivers
+
devs.mak
+
+
Maintained device drivers
+
gs.mak
+
+
Documentation and miscellany
+
int.mak
+
+
Main makefile for the PostScript & PDF interpreter
+
jpeg.mak
+
+
JPEG library
+
lib.mak
+
+
Graphics engine
+
libpng.mak
+
+
PNG library
+
version.mak
+
+
Version and release date
+
zlib.mak
+
+
zlib library
+
+
+
+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.
+
+
Changes for your environment
+
+
+You must edit the platform-specific makefile to change any of these:
+
+
+
The name of the makefile itself (MAKEFILE macro)
+
The locations to install Ghostscript files (prefix etc.)
+
The default search paths for the initialization and font files
+(GS_LIB_DEFAULT macro)
+
The debugging options (DEBUG and TDEBUG
+macros)
+
Which optional features to include (FEATURE_DEVS)
+
Which device drivers to include (DEVICE_DEVS and
+DEVICE_DEVS{1--20} macros)
+
Default resolution parameters for some printer drivers
+(devs.mak or contrib.mak, whichever defines
+the driver)
+
+
+
+
+The platform-specific makefiles
+include comments describing all these except the
+DEVICE_DEVS options. These are described in
+devs.mak and contrib.mak, even though the
+file that must be edited to select them is the platform-specific makefile.
+
+
+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.
+
+
Selecting features and devices
+
+
+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 gs.mak, and the complete
+list of drivers in comments at the beginning of devs.mak
+and contrib.mak. To find what devices a platform-specific
+makefile selects to include in the executable, look in it for all lines of
+the form
+
+
+FEATURE_DEVS={list of features}
+DEVICE_DEVS*={list of devices}
+
+
+
+For example, if the makefile has
+
+
+FEATURE_DEVS=$(PSD)level2.dev
+
+
+
+indicating that only the PostScript Level 2 facilities should be included,
+you might make it
+
+
+FEATURE_DEVS=$(PSD)level2.dev $(PSD)pdf.dev
+
+
+
+to add the ability to interpret PDF files. (In fact,
+FEATURE_DEVS in the current Unix makefiles already includes
+$(PSD)pdf.dev.) The Unix makefile also defines
+
+
+DEVICE_DEVS=$(DD)x11.dev
+
+
+
+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.
+
+
+You may edit the FEATURE_DEVS line to select or omit any of
+the features listed near the beginning of gs.mak, and the
+DEVICE_DEVS* lines to select or omit any of the device
+drivers listed near the beginning of devs.mak and
+contrib.mak. The first device listed in the definition of
+DEVICE_DEVS becomes the default device for this executable;
+see the usage documentation for how to
+select an output device at run time using the
+-sDEVICE= switch. If
+you can't fit all the devices on a single line, you may add lines defining
+
+
+etc., up to DEVICE_DEVS15. Don't use continuation lines --
+on some platforms they don't work.
+
+
+Note that if you want to include a driver named xxx, you must put
+$(DD)xxx.dev in
+DEVICE_DEVS*. 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
+$(PSD)xxx.dev. 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
+$(GLD)xxx.dev.
+
+
Precompiled run-time data
+
+
+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.
+
+
+To compile the initialization files (lib/gs_init.ps, etc.)
+into the executable, change the 0 to a 1 in
+the line
+
+
+To compile threshold-array halftones into the executable, see the "Compiled
+halftone" section of int.mak for a sample makefile fragment,
+genht.c for the syntax of halftone data files, and
+lib/ht_ccsto.ps 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.
+
+
GNU readline
+
+
+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.
+
+
Setting up "makefile"
+
+
+
+After going through the steps just described to unpack
+the
+sources, make any desired changes to
+the
+makefiles, and unpack or create links to the third party libraries, as the final step in
+preparing to build Ghostscript you must usually associate the name
+"makefile" with the correct makefile for your environment so
+the make command can find it. See the section on your
+particular platform for how to do that if necessary.
+
+
Invoking "make"
+
+
+
make
+
Builds Ghostscript without debugging options.
+
+
+
+
make debug
+
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 -DDEBUG or
+-Z command line switches
+described in the usage documentation.
+
+
+
+
make pg
+
On Unix platforms, builds with the -pg compiler
+switch, creating an executable for time profiling.
+
+
+
+
make begin
+
On PC platforms, attempts a quick and dirty compilation of all the
+.c files in the current directory. See the
+more detailed explanation.
+
+
+
+
make install
+
After building, installs the Ghostscript executables, support files,
+and documentation, but does not install fonts. See the
+installation documentation.
+
+
+
+
make clean
+
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
+"make clean" deletes it.
+
+
+
+Note: on most platforms some of these simple instructions don't
+quite work in one way or another. Read the section on your specific
+platform.
+
+
Cross-compiling
+
+
+If you are compiling Ghostscript on machines X1 ... Xn with
+cross-compilers that generate code for machine Y, you must first
+perform several extra steps on some machine Z (not necessarily of the
+same type as either Xi or Y). First of all, choose a makefile
+appropriate for Z and edit it to reflect the run-time options you
+wish to include (FEATURE_DEVS, DEVICE_DEVS*,
+and any other relevant options), just as for non-cross-compilation.
+
+
+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 make in directory {dir}, the default
+configuration generates an executable that assumes the Ghostscript
+initialization and font files are in directory
+{dir}\lib.
+
+
+Note that the make program supplied with each PC compiler
+has a different name. We refer to this program generically as
+make everywhere else in this document, but you will find the
+correct name for each compiler in the relevant section below that discusses
+that compiler.
+
+
+You must have COMMAND.COM 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 obj subdirectory of the current
+directory) and the directory where the compiled code will be placed
+(normally the bin subdirectory). Then to build the
+Ghostscript executable all you need do is give the make
+command.
+
+
+A special make target "begin" attempts to compile all the
+.c 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 .h file, is to do the
+fast compilation of everything possible, then the controlled compilation of
+everything that failed in the first step:
+
+
+make begin
+make
+
+
+
+Note: 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 zip and
+unzip programs, is
+
+
+
zip -l CVTEMP.zip *.bat *.c *.h *.def *.rc
+
+
(Letter "l", not the digit "1")
+
unzip -o CVTEMP.zip
+
+
(Rewrite all the same files correctly)
+
del CVTEMP.zip
+
+
(Delete the temporary zip file)
+
+
+
Borland/Inprise environment
+
+
+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, make utility, and linker. You
+also need either the Borland assembler (version 1.0 or later) or the
+Microsoft assembler (version 4.0 or later).
+
+
+To create "makefile", give the command
+
+
+echo !include "src\bcwin32.mak" >makefile
+
+
+
+To run the make program, give the commmand
+
+
+make
+
+
+
+Besides the source files and the makefiles, you need:
+
+
+
*.bat
+
+
(a variety of batch files used in the build process)
+
+
+
+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:
+
+
The compiler files are in C:\BC and its subdirectories.
+
You are using the Borland assembler tasm.
+
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.
+
+
+
+Notes
+
+
+
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.
+
+
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
+
+
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
+
+
Borland C++ 5.0 and 5.01 have a code generator bug that generates
+incorrect code for the construct !file_is_valid(). Do not
+attempt to compile Ghostscript with these compilers. If you want to report
+this bug to Borland, send them the result of compiling
+ziodev.c and tell them to look at the code generated for
+file_is_valid() and !file_is_valid(). We
+don't know whether Borland C++ 5.02 still has this problem.
+
+
When building for the MS Windows Win32s environment, the make
+process will stop after it has created genarch.exe.
+You should then run "_genarch.bat", wait until
+genarch has finished and then exit MS Windows. Then type
+"make" again to restart the make process.
+
+
+
+
Microsoft Environment
+
+
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 Intel C/C++ compiler,
+ which can be integrated into the Microsoft Visual C++ environment.
+
To compile Ghostscript using the Microsoft environment, you need Microsoft
+ Visual C++ 4.0 or later with its associated "nmake" utility
+ and linker.
+
Using Microsoft Developer
+ Studio
+
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 File/New. 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.
+
In the next dialog window, specify the build command line as nmake
+ /f src/msvc32.mak DEVSTUDIO= Note the value for DEVSTUDIO
+ is empty. Then select Finish.
+
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.
+
To run Ghostscript inside of Developer Studio, it is necessary to specify the
+ name of the executable program . Select Project/Settings. Select
+ the Debug tab. Then for Executable for debug session:
+ specify bin/gswin32.exe
+
To use all of the features of Microsoft Developer Studio for debugging, and
+ modifying Ghostscriptt, you need to finish the remaining steps.
+
To add the Ghostscript DLL to the project, select Project/Settings.
+ Select the Debug tab. Change the Category to
+ Additional DLLs. Then specify bin/gsdll32.dll.
+
To specify the Ghostscript program arguments, select Project/Settings.
+ Select the Debug tab. Change the Category to
+ General. Then specify the desired program arguments. For example,
+ specifying: examples/tiger.ps will result in the tiger example
+ file being displayed when Ghostscript is executed. .
+
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:
+
The DEBUG=1 enables many debugging features built into Ghostscript.
+ Please note the double quotes around the value for GS_LIB_DEFAULT
+ and the addition of ./lib;./fonts; to its definition. This uses
+ the local (within the project) copy of the lib and fonts
+ directories. This is convenient if any changes need to be made in these directories.
+
Using the command line
+
Ghostscript can be made using either the DOS shell or one one of the various
+ command line shells made for Windows.
+
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 src\msvc32.mak
+ find the line "MSVC_VERSION=6" and change it to "MSVC_VERSION=4",
+ "MSVC_VERSION=5" or "MSVC_VERSION=7".
+
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 DEVSTUDIO.
+ There are four different definitions of DEVSTUDIO in src\msvc32.mak.
+ There is one for each of the currently supported versions of Microsoft Visual
+ C++ (4, 5, 6 and 7).
+
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 DEVSTUDIO can be changed to empty. I.e. DEVSTUDIO=
+
If PATH, LIB, and INCLUDE are not correctly set then the value for DEVSTUDIO
+ needs to be defined. For example, for version 6.0, the default definition for
+ the location for the Microsoft Developer Studio is: DEVSTUDIO=C:\Program
+ Files\Microsoft Visual Studio If the path to Microsoft Developer Studio
+ on your system differs from the default then change the appropriate definition
+ of DEVSTUDIO. (Remember that there is a separate definition
+ of DEVSTUDIO for each version of MSVC, so be sure to change
+ the correct definition.)
+
To run the make program, give the command
+
+nmake -f src\msvc32.mak
+
+
+
+Rather than changing src/msvc32.mak, these values can be specified on the make
+command line, I.e.
+
+
Note that double quotes have been added around the path for DEVSTUDIO
+ due to the spaces in the path value.
+
+This command line can also be put into a batch file.
+
+
You may get warning messages during compilation about /QI0f
+ 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.
+
+The Microsoft VC++ 5.0 compiler locks up when compiling
+gxi12bit.c with /O2. Compile this file
+without /O2.
+
+
The Microsoft VC++ 5.0 compiler produces a non-working executable if compiling
+ without stack checking. Don't change the setting TDEBUG=1 in
+ msvc32.mak.
+
+
+
Making self-extracting executables
+
+
+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:
+
+
+You will have to edit src/winint.mak to define
+WINZIPSE_XE and ZIP_XE respectively as the
+path names of these programs. See Release.htm for
+the detailed procedure.
+
+
Watcom environment
+
+
+Because of limitations in the way that Watcom implemented their
+wmake 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.
+
+
+To use the Watcom compiler, add to AUTOEXEC.BAT the line
+"set DOS4G=quiet". Check that
+AUTOEXEC.BAT also contains a line of the form
+"set WATCOM={wcdir}" where {wcdir} is
+the directory where you installed the Watcom tools, and that the setting of
+PATH includes {wcdir}\binnt (or
+%WATCOM%\binnt) before {wcdir}\binw
+(or %WATCOM%\binw). Then to create
+"makefile":
+
+
+
For
+
+
Give the command
+
+
DOS
+
+
echo !include src\watc.mak >makefile
+
MS Windows
+
+
echo !include src\watcw32.mak >makefile
+
+
+
+Before compiling, change the definition of the WCVERSION
+macro in the makefile (watc.mak or
+watcw32.mak) to the version of the Watcom compiler you are
+using. This is necessary to handle some minor incompatibilities between
+versions.
+
+
+To run the make program, give the commmand
+
+
+wmake -u
+
+
+
+For information on using the GNU make program with the
+Watcom compiler to build MS-DOS executables, which avoids the limitations in
+wmake, see here.
+
+
Cygwin32 gcc
+
+
+A user reports that it is possible to compile Ghostscript for MS Windows NT
+using the Cygwin32 gcc compiler, GNU make, and the
+unix-gcc.mak makefile, with only two small source code
+changes:
+
+
+
Add "b" to the call to fopen in gp_open_scratch
+
Mirror the gp_ntfs logic for gp_file_name_is_absolute
+
+
+
+Information about this compiler and environment is at the Cygnus site:
+
+
+Please note that Cygnus's licensing terms aren't quite as liberal about
+redistribution as either the GNU
+General Public License
+or the Aladdin Free Public License, so read their
+license carefully if you want to redistribute the results of using their
+compiler.
+
+
Intel C/C++ environment
+
+
+Intel provides a C/C++ compiler that is compatible with the Microsoft Visual C++ environment. The main
+advantage of this compiler over MSVC 5.0 and 6.0 is that it produces
+working code even when all optimizations are enabled and when stack checking
+is disabled.
+
+
+To build Ghostscript using the Intel C/C++ compiler, you have to make the
+following small changes in the makefiles:
+
+
+
Find and change the second occurrence of
+"COMPILE_FULL_OPTIMIZED" to "/O2" in file
+msvccmd.mak.
Override "TDEBUG",
+"COMP", and "COMPAUX" when invoking
+nmake.
+
+
+
+More specifically, use "TDEBUG=0" and set both
+"COMP" and "COMPAUX" to the full path of
+icl (for example
+"COMP=C:\intel\compiler45\bin\icl" if the Intel C/C++
+compiler V4.5 was installed to C:\intel). It is suggested
+that you use a batch file to launch nmake, since the command
+line processes the "=" on its own. Also, you may need to
+execute vcvars32.bat and iccvars.bat to
+register the proper paths for the compiler, its include files and its
+libraries.
+
+
+You can buy or download a 30-day evaluation version of the Intel C/C++
+compiler from Intel's Software Performance Tools web site:
+
+
How to build Ghostscript from source (MacOS version)
+
+
Traditional MacOS
+
+
+The Macintosh version of Ghostscript requires the Metrowerks Codewarrior development suite. Download the
+macgs-7xx-src.sit 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.
+
+
+If your system doesn't automatically unpack the source archive, you can
+download the gratis Stuffit Expander to open it.
+
+
+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 lib directory from the source
+archive.
+
+
+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.
+
+
+
MacOS X
+
+
+The unix source distribution (.tar.gz) builds fine on Darwin/MacOS X,
+albeit without a display device. You can generally just use the Makefile
+generated by ./configure or macosx.mak 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.
+
+
+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 macosx.mak to the top-level directory, rename it to
+makefile and issue 'make framework' from Terminal.app. This will result
+in a Ghostscript.framework in the sobin 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.
+
+
+Finally, there is a macos-mcp.mak makefile that can be
+used to set up the Codewarrior shared library component build described
+in the section on Classic MacOS above.
+
+
+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
+jpeg, zlib and libpng. You cannot use symlinks as
+Codewarrior will not be able to follow them for some of the needed header
+files.
+
+
+Copy src/macos-mcp.mak to the top-level directory and rename
+it makefile. 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
+ghostscript.mcp.xml. Launch Metrowerks Codewarrior, and select
+'Import Project...' from the File menu, and open the xml project file.
+When asked, save the results as ghostscript.mcp in the same
+directory and you should be ready to build the shared library component.
+
+
+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.
+
+
+
+
How to build Ghostscript from source (Unix version)
+
+
+Before issuing the make command to build Ghostscript, you
+have to make some choices, for instance
+
+
which compiler to use;
+
what features and devices to include;
+
whether to use system libraries for PNG and zlib;
+
and how to handle issues for your particular platform.
+
+
+
+Be sure to check the sections on tool-, OS-, and hardware-specific issues for notes
+on your particular platform and compiler. In fact, that is the
+first place to check if you build Ghostscript and it crashes
+or produces obviously incorrect results.
+
+
The multi-architecture makefile
+
+
+Especially if you are working in a Unix environment with multiple CPU types,
+operating systems, and/or C compilers, you may find the file
+all-arch.mak useful. This user-contributed file includes
+"wrappers" for the Unix makefiles for many different common environments.
+The author of this file notes:
+
+
+
+
+This makefile allows you to execute
+
+
+ make `hostname`
+
+
+
+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.
+
+
+I don't do "make install" until I've done
+
+
+ cd ...build-directory.../gs-x.yz
+ cd lib
+ ../bin/gs ../examples/tiger.ps
+
+
+
+and verified that the famous tiger can be correctly displayed. Also, the
+"make install" step is careful to first remove any existing
+$(BINDIR)/gs, then install a new gs there with a hard link
+to gs-x.yz.
+
+
+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.
+
+
+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.
+
+
+
+
Setting up "makefile"
+
+
+The files src/unix*.mak 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
+"make", which must find the file "makefile"
+(or "Makefile"). If your system supports symbolic links,
+set up "makefile" like this.
+
+
+
GNU gcc:
+
+
ln -s src/unix-gcc.mak makefile
+
Non-gcc ANSI C compiler:
+
+
ln -s src/unixansi.mak makefile
+
+
+
+If your system doesn't support symbolic links, first finish all changes to
+the compiler-specific makefile, then make a hard link, omitting the
+-s switch.
+
+
+The makefile distributed with Ghostscript selects the following devices
+to include in the build:
+
+
+
Devices included as distributed
+
+
Type
+
+
Devices
+
+
Display
+
+
X Windows
+
Printers
+
+
H-P DeskJets, LaserJets, and color DeskJets and PaintJets; Canon BubbleJets
+
File formats
+
+
Group 3 & Group 4 fax; JPEG; PCX; PBM, PGM, PKM, & PPM; TIFF; PostScript images; PNG; distilled PDF, PostScript, and EPS; PCL XL ("PCL 6")
+
+
+
+The unix*.mak 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
+/usr/lib/libpng.{a,so} and
+/usr/lib/libz.{a,so} -- and
+you would rather use those copies, change the definition of
+SHARE_LIBPNG and SHARE_ZLIB from 0 to 1 in
+the relevant unix*.mak file before
+compiling. Note that if you do this, you will get non-debug versions of
+these libraries even if you selected DEBUG in the makefile.
+At the insistence of some users, we have also provided the ability to do
+this with the JPEG library (SHARE_JPEG), 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
+
+
+#define D_MAX_BLOCKS_IN_MCU 64
+
+
+
+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 /usr/include, you must have
+the source code for this library available even if you set
+SHARE_JPEG to 1.
+
+
+If the X11 client header files are located in some directory which your
+compiler does not automatically search, you must change the
+XINCLUDE macro in the makefile to include a specific
+-I switch. See the comment preceding
+XINCLUDE in the makefile.
+
+
+Currently Ghostscript is set up to compile and link in a generic Unix
+environment. Some Unix environments may require changing the
+LDFLAGS macro in the makefile; be sure to check the Unix section for your specific tools, operating
+system, and hardware.
+
+
+Ghostscript uses ANSI syntax for function definitions. Building
+with pre-ANSI C compilers is no longer supported.
+
+
Shared object
+To build Ghostscript as a shared object with gcc
+(instead of as a single large executable) use:
+
+ ln -s src/unix-gcc.mak makefile
+ make so
+
+
+This will build libgs.so and two programs which use the
+shared object, gsx which uses Gtk+ and gsc
+which does not.
+
+
+Do not use make -f src/unix-gcc.mak because this will
+break the recursive make used in building the shared object.
+
+To install the shared object and these two programs:
+
+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 gcc --version command.
+
+
+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.
+
+
GNU make
+
+
+Current versions of GNU make have no problems, but GNU
+make 3.59 can't handle the final linking step in some
+cases; if this happens, use the platform's standard make,
+typically /bin/make.
+
+
OS-specific issues
+
+
386 Unix
+
+
+
gcc versions older than 1.38 on Intel 80386 systems do not compile
+Ghostscript correctly with the -O option.
+
+
gcc 1.39 under 386BSD has a bug that causes
+float-to-integer conversions to compile incorrectly, rendering the
+executable unusable.
+
+
+You may be able to omit -g3. For later versions of Digital
+Unix, users have reported that the proper flags are
+
+
+CFLAGS=-std1 -Olimit 1000 -g3 -O2 $(XCFLAGS)
+
+
+again, optionally omitting the -g3.
+
+
If you get compiler error messages about "ANSI aliasing rules", please
+see the section about building under OpenVMS below.
+
+
+
+
FreeBSD
+
+
+On FreeBSD systems, in the top-level makefile (unixansi.mak,
+unix-gcc.mak, change the
+value of STDLIBS from -lpthread -lm to
+-lc_r -lm before building.
+
+
GNU/Linux
+
+
+
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 XLIBS in
+the makefile is set to
+"Xt SM ICE Xext X11" rather than
+"Xt Xext X11".
+
+
With gcc version 2.6.3 or later, you may encounter an incompatibility
+in object formats (a.out vs. ELF) with the XFree86 library.
+Typically, ld complains that some X library is not found,
+or that many Xlib or Xt functions are not
+found in the library (similar to the messages for omitting
+SM and ICE from XLIBS). Or
+you get a message when you start Ghostscript that the program or the shared
+library is an unrecognized format.
+If this happens, edit unix-gcc.mak to add the switches
+"-b i486-linuxaout" to both CFLAGS and
+LDFLAGS, then "make clean" followed by
+"make"). If this doesn't help, or if other strange things
+happen, contact your GNU/Linux supplier or support resource.
+
+
A few of Ghostscript's drivers are multi-threaded (currently only those
+whose names begin with "bmpa"). These drivers require libc
+version 6 or higher. Some GNU/Linux distributions, including Red Hat
+distributions before 5.0, have libc version 5, so these
+drivers may not compile. If this happens, remove these drivers (from the
+definitions of DEVICE_DEVS* in
+unix-gcc.mak), and, if you wish, substitute the
+corresponding single-threaded drivers, whose names don't include the "a".
+
+
+
+
+You may want to create RPM (Red Hat
+Package Manager) 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:
+
+
+The following instructions may work for the Ghostscript 6.0x distributions,
+once you have RPM spec files that you believe are appropriate.
+
+
+To create RPMs for Ghostscript N.NN:
+
+
+
Change to your source directory (/usr/src/redhat for Red Hat
+ Linux 5.1).
+
Copy ghostscript-N.NN*.tar.gz (4 source files) to the
+SOURCES subdirectory.
+
Copy ghostscript-fonts-std-6.0.tar.gz and
+ghostscript-fonts-other-6.0.tar.gz to the
+SOURCES subdirectory.
+
From SOURCES/ghostscript-N.NN.tar.gz,
+
+
extract rpm-conf.dif and copy to
+SOURCES/ghostscript-N.NN-config.patch
+
extract gs.rps and copy to
+SPECS/ghostscript-N.NN.spec
+
extract gs-fonts.rps and copy to
+SPECS/ghostscript-fonts-N.NN.spec
+
+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.
+
Change to the SPECS subdirectory and then execute the commands
+
+Bruce Babcock
+<babcock@math.psu.edu> 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:
+
+
If you are using a NeXTSTEP version before 3.3, please get a no-cost
+upgrade (along with Y2K patches) from Apple.
+
+
For all NeXTSTEP systems, use unix-gcc.mak. Make the
+following changes:
+
+
+
In unix-aux.mak (and ugcclib.mak, if you
+are using only the library) change the definition of INCLUDE
+to "INCLUDE=/usr/include/bsd";
+
+
in unix-gcc.mak:
+
+
+
change CC=gcc to CC=cc;
+
+
change the definition of STDLIBS to only
+-lm;
+
+
change SYNC=posync to SYNC=nosync;
+
+
add -D_POSIX_SOURCE to CFLAGS and remove
+-g;
+
+
remove -Wstrict-prototypes from GCFLAGS,
+and if you are using NeXTSTEP 3.3 (with gcc 2.5.8), also remove
+-Wmissing-declarations;
+
+
+
to the end of Fontmap.GS add the line
+"/Ohlfs /Courier ;".
+
+
+
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 XINCLUDE and
+XLIBDIRS to empty strings.
+
The standard cc compiler on SCO OpenServer v5 has optimizer bugs.
+Compile without -O.
+
+
The SCO Unix C compiler apparently can't handle the
+Pn macros in std.h. If you get
+strange compilation errors on SCO Unix, ask SCO for a compiler fix.
+
+
Meanwhile, to use gcc with SCO ODT, see unix-gcc.mak
+for the appropriate switch settings.
+
+
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.
+
+
If you aren't using the X11 driver, you must add
+-lsocket to the value of EXTRALIBS to link
+the date and time functions.
+
+
If you want to use direct frame buffer addressing instead of X Windows,
+include the relevant frame buffer devices ($(DD)ega.dev,
+$(DD)vga.dev, etc.) and change the definition of
+EGAVGA to $(EGAVGA_SCO) as indicated in
+devs.mak. Note: this works with SuperVGA displays
+only for 800x600x16 mode.
+
+
If the display looks "smeared", try recompiling
+gdevpcfb.c with -O0.
+
+
If Ghostscript crashes, use the -q switch or redirect
+console output to a file.
+
+
If your compiler accepts both the -Xt and
+-Xa switches, use -Xt. Even though this
+causes the compiler to use incorrect rules for computing the result types
+of "<<" and ">>",
+-Xa enables optimizations that produce incorrect code.
+
+
For SCO ODT 2.0, in addition to -D__SVR3 and
+-DSYSV, you need to specify -Dsco,
+-DUSG, and -DMALLOC_0_RETURNS_NULL. For
+SCO ODT, you need
+"EXTRALIBS=-lX11 -lsocket -lmalloc", or maybe
+only -lsocket depending on the version), and for SCO ODT
+2.0, you must also specify -lc_s. For SCO Xenix, you need
+"EXTRALIBS=-lmalloc".
+
+
For SCO OpenServer 5.0.5, add -L/usr/local/lib to
+LDFLAGS.
+
+
For all SCO systems, set "XINCLUDE=" and
+"XLIBDIRS=".
+
+
+
SVR4 Unix
+
+
+
You may need to set EXTRALIBS=-lnsl.
+
+
Do not change PLATFORM=unix_ to PLATFORM=sysv_.
+
+
On SVR4 Unix platforms with dynamic linking, you may need to define
+XLIBDIR as the name of the directory that holds the X
+Windows libraries. Do not prefix the name with
+"-L".
+
+
For SVR4.0 systems, set -DSVR4 and
+-DSVR4_0 in the makefile; do not set
+-DSYSV. For SVR4.2 (or later) and Solaris 2.n
+systems, set only -DSVR4 (not
+-DSVR4_0 nor -DSYSV).
+
+
+
System V Unix platforms
+
+
+
If you are using a stock System V platform that lacks
+rename and gettimeofday, in the makefile
+change "PLATFORM=unix_" to
+"PLATFORM=sysv_".
+
+
You will probably need to change the definition of
+INSTALL from "install" to
+"/usr/ucb/install".
+
+
+
Unixware
+
+
+
The standard cc compiler has optimizer bugs. Compile without
+-O.
+
+
+
Hardware-specific issues
+
+
Alpha with gcc
+
+
+
You don't have to use gcc on Alpha systems, because the bundled
+compiler works.
+
+
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.
+
+
If you really want to use gcc 2.7.x, here is a patch for that version
+from gcc maintainer Jim Wilson
+<wilson@cygnus.com>.
+
+
+*** 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 && icode == CODE_FOR_nothing
+! && SECONDARY_MEMORY_NEEDED (class, reload_class, reload_mode))
+! get_secondary_mem (x, reload_mode, opnum, type);
+
+ if (! in_p && icode == CODE_FOR_nothing
+! && 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 && icode == CODE_FOR_nothing
+! && SECONDARY_MEMORY_NEEDED (class, reload_class, mode))
+! get_secondary_mem (x, mode, opnum, type);
+
+ if (! in_p && icode == CODE_FOR_nothing
+! && SECONDARY_MEMORY_NEEDED (reload_class, class, mode))
+! get_secondary_mem (x, mode, opnum, type);
+ #endif
+ }
+
+
+
+
H-P Apollo
+
+
+
+
You must run the compiler in ANSI-compatible mode (that is, set AK={null string} in the makefile); otherwise it gives incorrect error
+messages for any function declared as returning a float value.
+
+
The H-P Apollo compiler may not compile Ghostscript correctly. If you
+get unexpected crashes at run time, use gcc.
+
+
+
AT&T 7040 R3
+
+
+
If Ghostscript crashes on startup, recompile with -O0
+to work around compiler bugs.
+
+
+
Convex
+
+
+
+
Use unixansi.mak. Do not invoke optimization
+(-O1) because the compiler will produce incorrect code.
+
+
Set CFLAGS to
+"-no -fn -tm c1".
+
+
+
DECStations with Ultrix
+
+
+
+
If you get the compiler message "cfe: Fatal: _temp_19086.c:
+Segmentation violation" or a similar one, try compiling with the
+-oldc switch.
+
+
+in the makefile to add the Display PostScript font directory to the font
+search path.
+
+
Set
+
+
+CFLAGS="-Olimit 2500"
+
+
+to make the optimizer allocate enough table space.
+
+
The Ultrix 4.4 C compiler compiles gdevm1.c
+incorrectly. Insert the following line in the makefile rule for
+"gdevm1.$(OBJ)" (the body of the rule is empty in the
+standard distribution):
+
+
+$(CCC) -oldc gdevm1.c
+
+
+
H-P RISC workstations
+
+
+
+
HP-UX versions before 11.0 do not support POSIX threads. Set
+SYNC=nosync in the makefile before building.
+
+
Ghostscript builds on H-P machines with either GNU gcc or H-P's
+ANSI-capable cc. The minimal, non-ANSI-capable
+cc that ships with a basic HPUX system does not
+work. If cc on your system doesn't accept the
+-Aa switch, then you need to get the full
+cc or gcc.
+
+
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:
+
+
The link step fails with a message about "max" not being defined.
+
The build succeeds, but the resulting executable fails to start up,
+with an error message like "Initializing... Unrecoverable error: typecheck
+in .registerencoding".
+
The build succeeds, but the resulting executable produces a black
+background on the first page of output.
+
+
+
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.)
+
+
On HPUX 10.*, we don't know what combinations of compiler version and
+switches work. It is reported that On HPUX 10.20, setting
+"CC=c89" and "CFLAGS=+O3 $(XCFLAGS)"
+works, contradicting the information in the next paragraph, but this may be
+dependent on the specific compiler version.
+
+
In either HPUX version, you need to set
+"CC=cc -Aa" (or use -Ae if you
+prefer), and set
+"CFLAGS=-D_HPUX_SOURCE -O $(XCFLAGS)". Higher
+levels of optimization than -O may work depending on your
+compiler revision; some users have reported success with
++O3, some have not.
+
+
Some users have reported needing -DNOSYSTIME and
+-D_POSIX_SOURCE in CFLAGS, but recent tests
+do not show these to be necessary.
+
+
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 not to work. You may be able to get a working
+executable with an older gcc by removing -O from
+CFLAGS.
+
You will probably need to change the value of XLIBS from
+"XLIBS=Xt X11 Xext" to "XLIBS=Xt_s X11_s Xext".
+
+
+
MIPS
+
+
+
There is apparently a bug in older versions of the MIPS C compiler
+which causes gxdither.c to compile incorrectly if
+optimization is enabled (-O). However, this bug is
+definitely fixed in MipsPRO C version 6.00; with this version, compiling
+with "-O2 -mips2" produces good output.
+
+
+
NCR 3550
+
+
+
With the NCR C Development Toolkit you must use -O0.
+
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
+unixansi.mak with CC=cc should work.
+
+
You must also edit the makefile (unixansi.mak) to change
+INSTALL to /usr/ucb/install.
+
+
AIX doesn't use a separate library for multi-thread support: set
+STDLIBS=-lm in the makefile.
+
+
If -DSYSV produces a complaint about the functions
+index and rindex not being defined, try
+removing it.
+
+
If the xlc 1.2.1 optimizer runs out of memory, you may need to add
+-qmaxmem=4000 to CFLAGS.
+
+
A user reports that the AIX C compiler shipped with AIX 3.2.5 compiles
+Ghostscript only if invoked with "c89 -D_POSIX_SOURCE"
+and without-O. On the other hand, another
+user reports successful compilation using unix-ansi.mak and
+the command line
+
+
Apparently some (but not all) releases of the C library declare the
+hypot function: if the declaration in
+math_.h produces an error message, try removing it.
+
+
The IBM X11R3 server is known to be buggy: use the MIT X server if
+possible.
+
+
The xlc 1.3.0.x compiler provided in AIX 3.2.5+ definitely will not
+compile Ghostscript correctly if -O is used on all files.
+A user reports that compiling z*.c,
+gsmatrix.c, gxstroke.c without
+-O is sufficient to produce a working executable:.
+
+
Some installations of AIX 3.2.5 have what appears to be an incorrect or
+inconsistent version of libXt.a in
+/usr/lpp/X11/lib. If linking shows
+XtShellStrings and XtStrings as unresolved
+externals, set
+"XLIBDIRS=-L/usr/lpp/X11/lib/R5 -L/usr/lpp/X11/lib"
+rather than just "XLIBDIRS=-L/usr/lpp/X11/lib".
+
+
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:
+
+
+CC=xlc
+
+XCFLAGS=-qalign=natural
+
+
+
+
+Silicon Graphics
+
+
+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.
+
+
+
+To make the optimizer allocate enough table space, set
+
+
+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.
+
+
+With the compiler shipped with Irix 5.2, use the -ansi
+option.
+
+
+The SGI C compiler may produce warnings about "Undefined the ANSI standard
+library defined macro stdin/stdout/stderr". To suppress these warnings, add
+"-woff 608" to the definition of CFLAGS.
+
+
+The SGI C compiler shipped with Irix 6.1 and 6.2 will not compile
+zlib/deflate.c properly with optimization. Compile this file
+separately without -O.
+
+
+With IRIX 6.5.x and the MIPSpro 7.x compilers there have been reports about
+incorrect output and binaries that cause segmentation faults. Various
+solutions have been suggested and you may want to try them in this order,
+until you get a working binary:
+
+
+
+Compile idict.c and isave.c separately
+without optimization after doing a normal compile; then relink.e.g.:
+
+
+Use only -O2. Compiler produces incorrect output
+with -O3 or "-Ofast=ip32 -show".
+
+
+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 -o32 option. Compiling with the (default)
+-n32 option produces non-working executables.
+-O2 is OK (possibly except for idict.c), but
+not -O3.
+
+
+
+
Sun
+
+
+
The Sun unbundled C compiler (SC1.0) doesn't compile Ghostscript
+properly with the -fast option: Ghostscript core-dumps in
+build_gs_font. With that compiler use -g,
+or use gcc instead.
+
+
The Sun version of dbx often gives up with an error
+message when trying to load Ghostscript. If this happens, use GNU
+gdb instead. (gdb is more reliable than
+dbx in other ways as well.)
+
+
A bug in some versions of zlib results in an undefined
+symbol zmemcmp when compiling with Sun cc. Use gcc
+instead.
+
+
+
SunOS
+
+
+
The tar 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 tar, such as GNU
+tar.
+
+
In SunOS 4.1.[23], you may get undefined symbols
+_get_wmShellWidgetClass and
+_get_applicationShellWidgetClass when linking. Compiling
+"-Bstatic -lXmu -Bdynamic" appears to work for
+SC1.0. For gcc, try adding -static to
+CFLAGS. To solve the problem if you are using OpenWindows
+3.0 (X11R4-based Xt), ask Sun for patches 100512-02 and 100573-03.
+
+
+
Solaris
+
+
+
Solaris 2.2 may require setting "EXTRALIBS=-lsocket".
+Solaris 2.3 and later seem to require "EXTRALIBS=-lnsl -lsocket -lposix4".
+
+
For Solaris 2.6 (and possibly some other versions), if you set
+SHARE_LIBPNG=1, SHARE_ZLIB=1, or
+SHARE_JPEG=1, you may need to set
+
+
+using the full path names of the relevant directories.
+
+
Solaris 2.n uses /usr/openwin/share/include
+for the X11 libraries rather than /usr/local/X/include.
+
+
Solaris 2.n typically has Type 1 fonts in
+/usr/openwin/lib/X11/fonts/Type1/outline.
+
+
For Solaris 2.n in the makefile you must change
+the definition of INSTALL from "install -c" to
+"/usr/ucb/install -c".
+
+
You may need to set XLIBDIR to the directory that holds
+the X11 libraries, as for other SVR4 systems. Set -DSVR4
+in CFLAGS.
+
+
If you are using the SunPRO C compiler, don't use optimization level
+-xO3. On SPARC platforms the compiler hangs; on Intel
+platforms the generated code is incorrect. With this compiler on Intel, do
+not use the -native flag: floating point computations
+become unacceptably inaccurate. You can use -xcg92 (SPARC
+V8) and -dalign for better performance.
+
+in the makefile to add the Display PostScript font directory to the font
+search path.
+
+
+
+
+
How to build Ghostscript from source (OS/2 version)
+
+
+Note: This section was contributed by a user: please e-mail Hermann
+Ulrichskötter <ulrichsk@t-online.de> if you have
+questions or problems.
+
+
+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.
+
+
+
The relevant makefile is os2.mak The gcc/emx 0.9b (or
+later) compiler and IBM NMAKE.EXE are required.
+
+
For gcc/emx versions 0.9c and later, the LINK386
+command must include
+"$(COMPBASE)\lib\end.lib"; version 0.9b requires
+omitting it. The current os2.mak file does
+include this file in the LINK386 command, so if you are
+using 0.9b, delete this file reference before building.
+
+
Be sure you are using the standard OS/2 shell, CMD.EXE.
+Some other shells have bugs or differences that cause the makefile not to
+work.
+
+
Make sure you followed the instructions in "How to unpack the source
+code" and "How to unpack the third-party libraries".
+
+
Use jpegsrc_v6b.tar.gz, zlib.tar.gz and libpng-1.0.3.tar.gz. Earlier
+versions may not work.
+
+
If you wish to include support for XFree86, edit the makefile
+to change BUILD_X11=0 to BUILD_X11=1.
+XFree86 for OS/2 can be obtained from
+
+http://borneo.gmd.de/~veit/os2/xf86os2.html
+You must use emx 0.9d.
+
+
+
+Before compiling or linking, execute md bin and md
+obj in the gs directory to create the directories
+for the binaries.
+
+
+First, build the standard configuration:
+
+
+
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!).
+
+
To start the make process, type nmake -f .\src\os2.mak,
+from the gs-directory.
+
+
One DLL and two EXEs will be produced in gs/bin:
+gsdll2.dll (the Ghostscript DLL), gsos2.exe
+(the Ghostscript executable) and gspmdrv.exe (the
+Presentation Manager display driver). All other newly generated files will
+be produced in gs/obj.
+
+
+
+Now, if you wish, you can edit OS2.MAK to suit your needs, and then perform
+nmake -f .\src\os2.mak clean and then nmake -f
+.\src\os2.mak.
+
+
+
+
How to build Ghostscript from source (OpenVMS version)
+
+
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.
+
+
+DEC C runtime library versions 5.5 and newer have an exit
+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
+genarch or echogs finish executing, find the
+line in stdpre.h that reads
+
+
+/*#define OLD_VMS_C*/
+
+
+and remove the /* and */, changing it to
+
+
+#define OLD_VMS_C
+
+
+
+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 work around
+X server bugs using X resources; also report the problem to DEC, or
+whomever supplied your X server.
+
+
+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 usage documentation tells how to do this.
+
+
+You can precompile any Type 1 font
+into C, then compile and build it into Ghostscript, as described in the
+fonts documentation. If you do this, then add
+"$(PSD)ccfonts.dev" to FEATURE_DEVS in
+OPENVMS.MAK:
+
+
+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 below for details.
+
+
+As of Ghostscript version 5.0 you can use GNU make -- with the file
+OPENVMS.MAK and some auxiliary .COM files
+-- to build Ghostscript on OpenVMS. Use the command:
+
+
+make -fopenvms.mak "DECWINDOWS=[1.2]"
+
+
+
+That is, specify either "1.2" or nothing (blank) as the
+value of DECWINDOWS. In Europe and other parts of the world
+where ISO standard paper sizes are used, append "A4_PAPER=1"
+to that line to make A4 the default paper size at run time.
+
+
+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
+Free Software Foundation's ftp site and
+its mirrors. See
+
+
+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.
+
+
+Building Ghostscript with MMK or MMS uses the file
+OPENVMS.MMK and some auxiliary .COM files.
+To build Ghostscript with MMK or MMS, use the command:
+
+
+Specify DECWINDOWS1_2=1 for DECWINDOWS 1.2,
+DECWINDOWS1_2=0 for other DECWINDOWS versions. In Europe
+and other parts of the world where ISO standard paper sizes are used, add
+,"A4_PAPER=1" just before the final closing parenthesis to
+make A4 the default paper size at run time.
+
+
+
+
Other environments
+
+
Environments lacking multi-threading
+
+
+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 SYNC=nosync 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 DEVICE_DEVS* lists of any
+makefile that we distribute.
+
+
Plan 9
+
+
+Use unix-gcc.mak, editing it to define
+
+
+CC=cc
+GCFLAGS=-D_BSD_EXTENSION -DPlan9
+
+
+
+You will also probably have to edit many path names.
+
+
QNX
+
+
+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 /etc/config/lpsrvr 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.
+
+
+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/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 @@
+
+
+
+Background information for new users of Ghostscript
+
+
+
+
+
+
+
+
+
+
+
Background information for new users of Ghostscript
+Ghostscript is the name of a set of software that provides:
+
+
+
An interpreter for the PostScriptTM
+language and the Adobe Portable Document Format (PDF --
+sometimes confused with Acrobat, Adobe's PDF browser and editor product);
+
+
Input modules (utilities) for reading a variety of raster formats,
+including CMYK, GIF, JFIF (JPEG), MIFF,
+PBM/PGM/PPM, and PCX;
+
+
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
+AcrobatTM DistillerTM
+product; and
+
+
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.
+
+
+
+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 previewers, 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.
+
+
How is Ghostscript licensed? Where can I find it?
+
+
+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:
+
+
GNU Ghostscript
+
+
+GNU Ghostscript is distributed under the terms of the GNU General Public License,
+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
+
+
+For a more complete list of sites, including sites outside the U.S. and
+other ways of obtaining GNU software, contact
+the Free Software Foundation
+<gnu@gnu.org>.
+
+
+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:
+
+
+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
+ctan.org or get
+the file CTAN.sites from any CTAN server, for
+instance
+
+
+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 how to build
+Ghostscript tells where to get these
+libraries and how to unpack them.
+
+
The executable versions of Ghostscript are based in part on the work of
+the Independent JPEG Group. For more information, see
+jpeg.mak in the main Ghostscript source directory and
+README in the libjpeg source directory.
+
+
The Portable Network
+Graphics (PNG) library created by Dave Martindale, Guy Eric Schalnat,
+Paul Schmidt, and Tim Wegner, of Group 42, Inc.
+
For more information, see libpng.mak in the main
+Ghostscript source directory, and README and
+png.h in the libpng source directory.
+
+
The zlib library
+created by Jean-loup Gailly and Mark Adler
+
For more information, see zlib.mak in the main
+Ghostscript source directory, and README in the
+zlib source code.
+
+
+
+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.
+
+
+
+
What if I want support?
+
+
+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.
+
+
+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.
+
+
+
+
What platforms does Ghostscript run on?
+
+
+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 Making Ghostscript for details on the build process
+and hints for various platforms.
+
+
+
+
Related work
+
+
Drivers
+
+
+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 www.linuxprinting.org or your favorite search engine
+for
+relevant examples.
+
+
Previewers
+
+
+The Ghostscript user interface is very primitive, so several people have
+contributed screen previewers with better user interfaces.
+
+
Previewers for X Windows
+
+
+
GSPreview
+
For information on GSPreview, contact Richard Hesketh
+<rlh@ukc.ac.uk>.
+
+
+
Previewers for DOS and MS Windows
+
+
+
psv
+
PSV, another keyboard-based PostScript viewing package
+for DOS, appears to be redistributable with no restrictions. It was once
+available from
+
+
Jan Kybic has created a Ghostscript-based
+bitmap previewing program for GNU/Linux called BMV, which
+doesn't use X Windows but is based on svgalib. He says
+there is a port of BMV for SCO Unix by William Bader.
+BMV is available from
+
+
genscript is a free replacement for the
+enscript program. genscript converts plain
+text files to PostScript and sends the generated PostScript output to the
+specified printer or to a file. genscript 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
+
+
A good free utility pstotext uses Ghostscript to extract
+plain text from PostScript files. It is much better than the
+ps2ascii utility distributed with Ghostscript. You can read
+the pstotext documentation at
+
+
+pstotext is unsupported, but the authors,
+Paul McJones
+<paul.mcjones@acm.org>
+and Andrew Birrell
+<birrell@pa.dec.com>, are
+happy to have your questions and comments either by e-mail or here
+
+
+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:
+
+
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:
+
+
+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, GO
+GRAPHSUP. This service has no connection with the main Ghostscript
+developers.
+
+
+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:
+
+
if your question is about GNU Ghostscript. If you have access to Internet mail, but not Usenet news,
+write to bug-ghostscript@gnu.org, which is equivalent to
+posting to that newsgroup.
+
+
if you have a general question about Ghostscript. Note
+however that this newsgroup was not intended for Ghostscript
+discussion per se.
+
+
+
+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 devs.mak and
+contrib.mak in the Ghostscript source directory to see in
+which file the driver is defined. If it's defined in
+contrib.mak, the list of contributed drivers, please contact
+the author directly: the maintainers of Ghostscript can't help you with
+user-maintained drivers.
+
+
Reporting problems
+
+
+Please read Bug-info.htm for information about
+reporting problems.
+
+
+
+
Contacting Ghostscript headquarters
+
+
+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.
+
+
+Here is our contact information:
+
+
+Raph Levien
+artofcode LLC
+940 Tyler St. Studio 6
+Benicia, CA 94510
+tel/fax +1 707 746 6398
+raph@artofcode.com
+
+
+
Aladdin Enterprises
+
+
+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:
+
+
+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.
+
+
+
+
How you can help improve Ghostscript
+
+
+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.
+
+
+
Stable releases are made available about every 9 months, after
+a beta test period. Reporting problems as described above often results in a fix being posted on
+our Web site.
+
+
+
+
Beta releases are posted starting about 6 weeks before a
+planned public release. These are candidates for public release, and need
+intensive testing.
+
+
+
+
Development 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.
+
+
+
+You can always find the current public release and the current beta or
+tester release on our Web
+site. If you would like to be notified when new beta or tester releases
+are posted, please contact us.
+
+
+There are also some useful projects that we don't have enough resources to
+work on, and with which we would appreciate help. See this list for details.
+
+
+
+
Acknowledgements
+
+
+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.).
+
+
+Special thanks are due to Russell Lang, for the
+GSview for Windows and
+PM GSview programs, and for contributing most of the code for
+the Microsoft Windows and OS/2 environments; to Tim Theisen, for the
+Ghostview 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
+<kaiser@acm.org>, for redoing all
+of the documentation in HTML;
+and to the Independent
+JPEG Group, to Group 42, Inc., and to Jean-loup Gailly and Mark Adler,
+for creating the freely available libraries that Ghostscript uses.
+
+
+Special thanks are due to URW++ Design and Development Incorporated, of
+Hamburg, Germany (http://www.urwpp.de/)
+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.
+
+
+Special thanks are due to Richard Stallman and the
+Free Software
+Foundation for originating
+the GNU
+General Public
+License, for originally motivating Aladdin's interest in creating free
+software, and for being the primary distributor of GNU Ghostscript on the
+Internet.
+
+
+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/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 @@
+
+
+
+Recent changes in Ghostscript
+
+
+
+
+
+
+
+
+
+
+
+
Changes in the most recent release of Ghostscript
+
+
+
+
+
+
+
+
+
+
+This document is news about the most recent Ghostscript release. For
+earlier versions, see the history documents:
+
+
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.
+
+
Incompatible changes
+
+
+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.
+
+
+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.
+
+
+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 contact us. Additional comments on
+implementation approaches or project goals are in italic type like
+this.
+
+
Additional platforms
+
+
DOS, Windows and OS/2 builds using gcc.
+
+
+We would like Ghostscript to work with the free emx/gcc and
+rsx 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.
+
+
Windows driver using Ghostscript as a language monitor.
+
+
+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. Russell Lang's RedMon program provides
+some, but not all, of this capability.
+
+
Netscape browser plug-in.
+
+
+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.
+
+
Ghostscript as an Active-X COM Object.
+
+
+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.
+
+
+
+
Driver Architecture
+
+
Improved multi-threaded rendering support.
+
+
+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. 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.
+
+
+
Dynamic run-time loadable devices.
+
+
+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. Consider the Netscape plug-in
+architecture.
+
+
Moving 'setpagedevice' into C.
+
+
+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. 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.
+
+
Adding 'tee' for output to multiple devices.
+
+
+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. 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.
+
+
OutputDevice resource category
+
+
+Each available output device should provide an instance of the
+OutputDevice resource category, which gives the available
+page sizes, resolutions, media classes, process color models, and other
+information about the device. This would replace the current
+non-standard use of a 4-element PageSize in the
+InputAttributes entry of the page device dictionary.
+
+
Removing the limit on the length of OutputFile.
+
+
+Currently, the maximum length of the OutputFile parameter is
+a compile-time constant, gp_file_name_sizeof. This is
+appropriate for ordinary file names, since this constant is the platform's
+limit on the length of a file name. However, if OutputFile
+is a pipe, the length should not be limited in this way. 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..
+
+
Specific drivers
+
+
PrintGear and PPA output drivers.
+
+
+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.)
+
+
Improve 'pswrite' up to the level of 'pdfwrite'.
+
+
+We would like to improve the high-level PostScript-writing
+pswrite 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. 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.
+
+
+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.
+It should use the CCITTFaxEncode filter for 1-bit-deep
+images, and plane-separated LZWEncode compression for color
+images, using the miGIF algorithms that are believed to be
+free of the Welch patent for the latter. When generating LL3 PS, the
+Flate compression will work better than miGIF. It may be
+worth trying several methods on each image and use the one that works best.
+
+
High level graphics and text for PCL 5 and PCL XL drivers.
+
+
+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. This was a very low-priority project; it has become more
+important now that H-P's laser printers are shipping with less memory.
+
+
Improved high level GDI driver for Windows.
+
+
+We would like a "GDI driver" for MS Windows that would implement more
+higher-level constructs (specifically for text). The
+mswin and mswinprn 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.
+
+
PDF thumbnail generation.
+
+
+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.
+Much of the code needed to do this has already been written
+for Ghostscript's PDF linearizer: see
+lib/pdfwrite.ps. A user has implemented this as well,
+using a separate program that calls Ghostscript: see
+
+http://www.uni-giessen.de/~g029/eurotex99/oberdiek/.
+
+
+
Consolidate inkjet drivers into a single family.
+
+
+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.
+
+
+See below under "Notification for glyph decaching."
+
+
Preserve compression when writing PDF images.
+
+
+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. 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.
+
+
+
+
Graphics functionality
+
+
Support for 64-bit colors on 64-bit platforms.
+
+
+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. The gx_color_index
+type is already defined as 'long', but there are many places where the type
+bits32 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.
+
+
In-RIP trapping.
+
+
+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. This is a complex and
+difficult area; even many Adobe RIPs don't do it.
+
+
Hook FreeType TrueType library into graphics library.
+
+
+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). 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.
+
+
ICC profile support for output.
+
+
+Ghostscript 7.00 and later supports ICCBased color spaces of PDF
+using the icclib package from
+
+http://web.access.net.au/argyll/color.html
+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).
+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.
+
+
Making halftones into "objects" and adding new types.
+
+
+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.
+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.
+
+
Factor out error diffusion routines, integrate ETS.
+
+
+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. 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.
+
+
Improve, or generalize, linearization for stochastic threshold
+data.
+
+
+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. We have
+original data available from which this could be done fairly easily.
+
+
Change sampled functions to use new interpreted functions.
+
+
+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).
+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.
+
+
Add optional cubic interpolation to RenderTable and other table
+lookup.
+
+
+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.
+
+
Add better (SVG-like) alpha channel and compositing to library.
+
+
+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.
+
+
+
+
Performance
+
+
Change band list logic to defer halftoning until rendering.
+
+
+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.)
+
+
Reduce redundant data for smoothed banded images.
+
+
+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. This is a small task.
+
+
Multi-threaded rasterizing
+
+
+For high-resolution devices, rasterization dominates execution time. On
+multiprocessor systems, Ghostscript can do tasks in parallel:
+
+
+
+
Rasterize multiple bands simultaneously;
+
+
Rasterize multiple color planes of a single band simultaneously (if a
+planar representation is being used);
+
+
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.
+
+
+
+
+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.
+
+
Notification for glyph decaching.
+
+
+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:
+
+
+
+
The driver would implement the text_begin call, simply
+to get access to a gs_imager_state that references the
+rendered character cache. (The driver could always simply call the default
+implementation of text_begin.)
+
+
In the text_begin procedure, the driver would call
+
+
+where proc_data was, or pointed to a structure that
+included, a pointer to the driver.
+
+
gs_glyph_decache_register would use the general
+notification mechanism defined in gsnotify.h to call
+
+
+notify_proc(proc_data, pchar_data)
+
+
+
+whenever a bitmap was removed from the character cache.
+pchar_data would point to some identification of the
+character; perhaps just the bitmap ID, but possibly a
+gx_cached_bits_common or even a cached_char.
+
+
The char_cache structure would be need an additional
+member, a gs_notify_list_t. It would also need to add
+finalization so that when it was freed, it would notify and unregister all
+clients, using gs_notify_all(list, NULL) and then
+gs_notify_release.
+
+
+
+
+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.
+
+
+
+
Other functionality
+
+
OpenStep (Display PostScript + NeXT) extensions to Ghostscript.
+
+
+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 <scottc@net-community.com>.
+
+
Job Server implementation.
+
+
+For full Adobe PostScript compatibility, Ghostscript needs a real "job
+server" to encapsulate the execution of PostScript files.
+See the section on "Job Execution Environment" in the PostScript
+Language Reference Manual for details.
+
+
SVG (XML Structured Vector Graphics) interpreter.
+
+
+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). If SVG turns out to be an
+important standard, it is important that there be a good free implementation
+of it.
+
+
%font% and other IODevices.
+
+
+Currently, the %font% 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:
+
+
+There would only be global IODevices, no local ones; the dictionary keeping
+track of them would be stored in global VM.
+
+
+This is an obscure feature that matters only because some PostScript code
+uses filenameforall with this IODevice, rather than
+filenameforall with the /Font Resource
+category, to enumerate available fonts.
+
+
Repairing damaged or EOL-converted PDF files.
+
+
+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. We think this
+should probably be done as a separate program, possibly in PostScript,
+similar to Ghostscript's PDF linearizer.
+
+
Implementation improvements
+
+
Fully re-entrant code.
+
+
+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. 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.
+
+
Ghostscript has no %ram% device.
+
+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.
+
+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.
+
+
+
+
+
+
+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.
+
+
Use loop to create a block with multiple exits.
+
+
Use a dictionary or an array for multi-way switches.
+
+
Start every file with a copyright notice, the file name, and a one-line
+summary.
+
+
Comment every procedure with the arguments and result, and with the
+function of the procedure unless it's obvious.
+
+
Comment the stack contents ad lib, and particularly at the beginning of
+every loop body.
+
+
Indent every 2 spaces.
+
+
Always put { at the end of a line, and } at the beginning of a line,
+unless the contents are very short.
+
+
Always put spaces between adjacent tokens.
+
+
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.
+
+
Don't allocate objects in heavily used code.
+
+
Consider factoring out code into a procedure if it is used more than
+once.
+
+
+
+
+
+
Introduction
+
+
+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.
+
+
+
+
Use of PostScript language features
+
+
Restrictions
+
+
+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:
+
+
+( ) dup 0 4 -1 roll put show
+
+
+
+Instead, allocate storage for it:
+
+
+1 string dup 0 4 -1 roll put show
+
+
+
Protection
+
+
+If an object is never supposed to change, use readonly to
+make it read-only. This applies especially to permanently allocated objects
+such as constant strings or dictionaries.
+
+
+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
+.forceput and .forceundef are available for
+this purpose. To make these operators inaccessible to ordinary programs,
+they are removed from systemdict at the end of
+initialization: system code that uses them should always use
+bind and odef (or
+executeonly) to make uses of them inaccessible as well.
+
+
Standard constructions
+
+
Multi-way conditionals
+
+
+If you write a block of code with more than about 3 exit points, the usual
+way to do it would be like this:
+
+
+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:
+
+
+{ % The loop doesn't actually loop: it just provides a common exit.
+ ... {
+ ...1
+ exit
+ } if
+ ... {
+ ...2
+ exit
+ } if
+ ... {
+ ...3
+ exit
+ } if
+ ...4
+ exit
+} loop
+
+
+
+Don't forget the final exit, to prevent the loop from actually looping.
+
+
Switches
+
+
+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:
+
+
+Every code file should start with comments containing
+
+
+
a copyright notice;
+
the name of the file in the form of an RCS Id:
+
+
+% Id$: filename.ps $
+
+
+
a very brief summary (preferably only one line) of what the file
+contains.
+
+
+
+If you create a file by copying the beginning of another file, be sure to
+update the copyright year and change the file name.
+
+
+
+
Commenting
+
+
+If a file has well-defined functional sections, put a comment at the
+beginning of each section to describe its purpose or function.
+
+
+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.
+
+
+Put a comment on every procedure to describe the arguments and results:
+
+
+/hypot { % <num1> <num2> hypot <real>
+ dup mul exch dup mul add sqrt
+} def
+
+
+
+There is another commenting style that some people prefer to the above:
+
+
+/hypot { % num1 num2 --> realnum
+ dup mul exch dup mul add sqrt
+} def
+
+
+
+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
+gs-devel@ghostscript.com.
+
+
+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.
+
+
+When you change a piece of code, do not include a comment with your
+name or initials. Also, do not 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.
+
+
+
+
Formatting
+
+
Indentation
+
+
+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.
+
+
+Indent { } constructs like this:
+
+
+... {
+ ...
+} {
+ ...
+} ...
+
+
+
+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:
+
+
+... { ... } if
+
+
+rather than
+
+
+... {
+ ...
+} if
+
+
+
+There is another indentation style that many people prefer to the above:
+
+
+...
+{ ...
+}
+{ ...
+} ...
+
+
+
+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
+gs-devel@ghostscript.com.
+
+
Spaces
+
+
+Always put spaces between two adjacent tokens, even if this isn't strictly
+required. E.g.,
+
+
+/Halftone /Category findresource
+
+
+
+not
+
+
+/Halftone/Category findresource
+
+
+
+
+
Naming
+
+
+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.
+
+
+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., readSubrs rather than
+readsubrs. 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 ******).
+
+
+
+
Miscellany
+
+
Some useful non-standard
+operators
+
+
+
+
<obj1> <obj2> ... <objn> <n> .execn ...
+
This executes obj1 through objn in that
+order, essentially equivalent to
+
+
+except that it doesn't actually create the array.
+
+
<dict> <key> .knownget <value> true
+
<dict> <key> .knownget false
+
+
This combines known and get in the
+obvious way.
+
+
<name> <proc> odef -
+
+
This defines name as a "pseudo-operator". The value of
+name will be executable, will have type
+operatortype, 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 proc. In addition, if the
+execution of proc is ended prematurely (by
+stop, including the stop that is normally
+executed when an error occurs, or exit) 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.
+
+
+
+
Some useful procedures
+
+
+
+
<object> <errorname> signalerror -
+
+
Signal an error with the given name and the given "current object".
+This does exactly what the interpreter does when an error occurs.
+
+
+
+
Other
+
+
+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 .execn operator discussed above
+may be helpful in doing this.
+
+
+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.
+
+
+
+
+
+
+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/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 @@
+
+
+
+Convert PostScript to Encapsulated PostScript Interchange format
+
+
+
+
+
+
+
+
+
+
+
Convert PostScript to Encapsulated PostScript Interchange
+format
+The information in this document was contributed by George Cameron
+<george@bio-medical-physics.aberdeen.ac.uk>;
+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 ps2epsi.1.
+
+
+ps2epsi 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
+Encapsulated PostScript
+(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.
+
+
+
+
Usage
+
+
Unix
+
+
+Using the supplied shell script ps2epsi, the command is
+
+
+ps2epsiinfile.ps[outfile.epsi]
+
+
+
+where infile.ps is the input file and
+outfile.epsi is the output EPSI file to be created. If the
+output filename is omitted, ps2epsi generates one from the
+input filename; and any standard extension (.ps,
+.cps, .eps or .epsf) of the
+input file is replaced in the output file with the extension
+.epsi.
+
+
+
+
Limitations
+
+
+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. ps2epsi 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.
+
+
+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.
+
+
+
+ps2pdf is a work-alike for nearly all the functionality (but
+not the user interface) of Adobe's AcrobatTM
+DistillerTM product: it converts PostScript files
+to Portable Document Format (PDF) files.
+
+
+ps2pdf is implemented as a very small command script (batch
+file) that invokes Ghostscript, selecting a special "output device" called
+pdfwrite. In order to use ps2pdf, the
+pdfwrite device must be included in the makefile when
+Ghostscript was compiled; see the documentation on building
+Ghostscript for details: this is currently the case on all platforms, in
+Ghostscript as we distribute it.
+
+
+
+
Usage
+
+
+The usage for ps2pdf is
+
+
+ps2pdf[options] input.[e]ps output.pdf
+
+
+
+or, on Unix systems and some versions of Windows NT and OS/2
+
+
+ps2pdfinput.[e]ps
+
+
+
+which is equivalent to
+
+
+ps2pdfinput.[e]ps input.pdf
+
+
+
+There are actually several different ps2pdf* scripts:
+the name ps2pdf above refers to any of them.
+
+
+
+
ps2pdf12 will always produce PDF 1.2 output (Acrobat
+3-and-later compatible).
+
+
ps2pdf13 will always produce PDF 1.3 output (Acrobat
+4-and-later compatible).
+
+
ps2pdf14 will always produce PDF 1.4 output (Acrobat
+5-and-later compatible).
+
+
ps2pdf 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
+ps2pdf12, ps2pdf13, or
+ps2pdf14, or use the
+-dCompatibilityLevel=1.x switch in the command
+line.
+
+
+
+
+All of these scripts actually call a script named ps2pdfwr
+or ps2pdfxx. The Unix ps2pdfwr script
+assumes that the Ghostscript executable is named gs; it is
+unlikely that you will need to change this. The DOS and MS Windows
+ps2pdfxx.bat script uses the value of the
+GSC environment variable, if defined, as the name of the
+executable; otherwise the script assumes the executable is named
+gswin32c. So in these environments, if the executable has a
+different name, you must set GSC to the name of the
+executable.
+
+
+
+
Options
+
+
+The options in the command line may include any switches that may
+be used with Ghostscript's PostScript and PDF interpreter (see here for a complete list), although almost none
+of them are useful with ps2pdf. The following may be
+useful:
+
+
+
+
-rresolution
+
Sets the resolution for pattern fills and for fonts that must be
+converted to bitmaps.
+
+
-dProcessColorModel=device_color_space
Sets
+the color space to be used for device-dependent colors in the
+output. device_color_space may be /DeviceGray,
+/DeviceRGB, or /DeviceCMYK; the default
+value is /DeviceRGB.
+
+
+
+
+More importantly, options may include
+-dparameter=value or
+-sparameter=string switches for setting
+"distiller parameters", Adobe's documented parameters for controlling the
+conversion process. The PostScript setdistillerparams and
+currentdistillerparams operators are also recognized when
+running ps2pdf, and provide an equivalent way to set these
+parameters from within the PostScript input file.
+
+
+ps2pdf also recognizes the following switches:
+
+
+
-dPDFSETTINGS=configuration
+
Presets the "distiller parameters" to one of four predefined settings:
+
+
+
+
/screen selects low-resolution output similar to the
+Acrobat Distiller "Screen Optimized" setting.
+
+
/printer selects output similar to the Acrobat Distiller
+"Print Optimized" setting.
+
+
/prepress selects output similar to Acrobat Distiller
+"Prepress Optimized" setting.
+
+
/default selects output intended to be useful across a
+wide variety of uses, possibly at the expense of a larger output file.
+
+
+
+
+
+
+ps2pdf recognizes all of the Acrobat Distiller 4 parameters
+documented in
+
+Adobe Technical Note #5151. Cells in the table containing '=' mean that
+the value of the parameter is the same as in the "default" column.
+
+
+
+
Parameter name
+
+
Notes
+
+
default
+
+
screen
+
+
printer
+
+
prepress
+
+
ASCII85EncodePages
false
=
=
=
+
AlwaysEmbed
[]
=
=
=
+
AntiAliasColorImages
(0)
false
=
=
=
+
AntiAliasGrayImages
(0)
false
=
=
=
+
AntiAliasMonoImages
(0)
false
=
=
=
+
AutoFilterColorImages
(1)
true
=
=
=
+
AutoFilterGrayImages
(1)
true
=
=
=
+
AutoPositionEPSFiles
(0)
true
=
=
=
+
AutoRotatePages
/PageByPage
/PageByPage
/None
/None
+
Binding
(0)
/Left
=
=
=
+
CalCMYKProfile
(0)
()
=
=
=
+
CalGrayProfile
(0)
()
=
=
=
+
CalRGBProfile
(0)
()
=
=
=
+
CannotEmbedFontPolicy
(0)
/Warning
/Warning
/Warning
/Error
+
ColorACSImageDict
(note 7)
(note 7)
(note 8)
(note 9)
+
ColorConversionStrategy
(0,6)
/LeaveColorUnchanged
/sRGB
/UseDeviceIndependentColor
/LeaveColorUnchanged
+
ColorImageDepth
-1
=
=
=
+
ColorImageDict
(note 7)
=
=
=
+
ColorImageFilter
/DCTEncode
=
=
=
+
ColorImageDownsampleThreshold
1.5
=
=
=
+
ColorImageDownsampleType
(3)
/Subsample
/Average
/Bicubic
/Bicubic
+
ColorImageResolution
72
72
300
300
+
CompatibilityLevel
1.3
1.2
1.3
1.3
+
CompressPages
true
=
=
=
+
ConvertCMYKImagesToRGB
true
=
=
=
+
ConvertImagesToIndexed
(0)
true
=
=
=
+
CoreDistVersion
4000
=
=
=
+
CreateJobTicket
(0)
false
false
true
true
+
DefaultRenderingIntent
/Default
=
=
=
+
DetectBlends
(0)
true
=
=
=
+
DoThumbnails
(0)
false
false
false
true
+
DownsampleColorImages
false
true
false
false
+
DownsampleGrayImages
false
true
false
false
+
DownsampleMonoImages
false
true
false
false
+
EmbedAllFonts
true
false
true
true
+
EmitDSCWarnings
(0)
false
=
=
=
+
EncodeColorImages
true
=
=
=
+
EncodeGrayImages
true
=
=
=
+
EncodeMonoImages
true
=
=
=
+
EndPage
(0)
-1
=
=
=
+
GrayACSImageDict
(note 7)
(note 7)
(note 8)
=
+
GrayImageDepth
-1
=
=
=
+
GrayImageDict
(note 7)
=
=
=
+
GrayImageDownsampleThreshold
1.5
=
=
=
+
GrayImageDownsampleType
(3)
/Subsample
/Average
/Bicubic
/Bicubic
+
GrayImageFilter
/DCTEncode
=
=
=
+
GrayImageResolution
72
72
300
300
+
ImageMemory
(0)
500000
=
=
=
+
LockDistillerParams
false
=
=
=
+
LZWEncodePages
(2)
false
=
=
=
+
MaxSubsetPct
100
=
=
=
+
MonoImageDepth
-1
=
=
=
+
MonoImageDict
<>
=
=
=
+
MonoImageDownsampleThreshold
1.5
=
=
=
+
MonoImageDownsampleType
/Subsample
/Average
/Bicubic
/Bicubic
+
MonoImageFilter
/CCITTFaxEncode
=
=
=
+
MonoImageResolution
300
300
1200
1200
+
NeverEmbed
[]
=
=
=
+
OPM
1
=
=
=
+
Optimize
(0,5)
false
true
true
true
+
ParseDSCComments
true
=
=
=
+
ParseDSCCommentsForDocInfo
true
false
true
true
+
PreserveCopyPage
(0)
true
=
=
=
+
PreserveEPSInfo
(0)
true
=
=
=
+
PreserveHalftoneInfo
false
=
=
=
+
PreserveOPIComments
(0)
false
false
true
true
+
PreserveOverprintSettings
false
false
true
true
+
sRGBProfile
(0)
()
=
=
=
+
StartPage
(0)
1
=
=
=
+
SubsetFonts
true
=
=
=
+
TransferFunctionInfo
(4)
/Preserve
=
=
=
+
UCRandBGInfo
/Remove
/Remove
/Preserve
/Preserve
+
UseFlateCompression
true
=
=
=
+
UsePrologue
(0)
false
=
=
=
+
+
+
+(note 0) This parameter can be set and queried, but currently has no effect.
+
+
+(note 1) AutoFilterxxxImages 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.
+
+
+(note 2) Because of Unisys's threats regarding the Welch patent,
+ps2pdf cannot actually use LZW compression: instead, it
+treats all requests for LZW compression as calling for Flate compression if
+UseFlateCompression is true and
+CompatibilityLevel >= 1.2, and ignores them otherwise.
+
+
+(note 3) The xxxDownsampleType parameters can also have the
+value /Bicubic (a Distiller 4 feature), which is currently treated as
+equivalent to /Average.
+
+
+(note 4) Currently, the transfer function is always applied. If the
+corresponding parameter is set to /Preserve, the function
+setting is also copied into the PDF file.
+
+
+(note 5) Optimization (linearization) is implemented with a separate
+program, pdfoptinput.pdfoutput.pdf; the
+Optimize parameter has no effect.
+
+
+(note 6) Currently, colors for images and shadings are left in the color
+space specified in the PostScript input, except for
+ConvertCMYKImagesToRGB; 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
+ProcessColorModel. The intended behavior is the same as for
+Acrobat Distiller, except that if ColorConversionStrategy is
+set to /UseDeviceDependentColor, colors are converted to the
+color space specified by ProcessColorModel rather than
+always to /DeviceRGB.
+
+
+(note 7) The default image parameter dictionary is
+
+ps2pdf 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.
+
+
+The PDF output always represents the colors of text and graphics in
+DeviceGray or DeviceRGB color space (or DeviceCMYK if the
+ProcessColorModel parameter has been set to
+/DeviceCMYK); 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.
+
+
+ps2pdf will sometimes convert PostScript constructs to
+lower-level ones, even if a higher-level construct is available. For
+example, if the PostScript file uses charpath to set a
+clipping path consisting of text, ps2pdf 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.
+
+
+Some applications, such as HIGZ, produce PostScript files that use
+ridiculously large coordinates. On such files, ps2pdf may
+cause a limitcheck error. If this occurs, try reducing the
+default internal resolution of 720 dpi by using the -r
+switch, e.g., ps2pdf -r300 somefile.ps.
+
+
+ps2pdf ignores the PDF 1.3 (Acrobat 4.x) pdfmarks related to
+document content structure: StRoleMap,
+StClassMap, StPNE,
+StBookmarkRoot, StPush,
+StPop, StPopAll, StBMC,
+StBDC, EMC, StOBJ,
+StAttr, StStore, StRetrieve,
+NamespacePush, NamespacePop, and
+NI. While this causes some structural information to be
+omitted from the output file, the displayed and printed output are normally
+not affected.
+
+
+ps2pdf 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.)
+
+
+
+
Known problems
+
+
+Distiller parameters should only be saved by save and
+restored by restore, but they are also saved by
+gsave and restored by grestore.
+
+
+Changing the value of the CompressPages parameter after any
+marks have been made on the page may cause a crash.
+
+
+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.
+
+
+
+
Comparison of ps2pdf and
+Acrobat Distiller
+
+
+According to users, the greatest benefit of ps2pdf 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.
+
+
+For certain documents, ps2pdf is much faster than Adobe
+Distiller, and may be suitable for run-time conversions. George White,
+a heavy user of ps2pdf, remarks:
+
+
+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
+ps2pdf), 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 ps2pdf
+as a post-processor during routine document creation.
+
+
+
+On the other hand, there are some documents for which ps2pdf
+may be much slower than Acrobat Distiller. Caveat user.
+
+
+ps2pdf 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.
+
+
+Many users report that the combination of ps2pdf with
+Acrobat Reader is superior to using a generic PostScript viewer
+(psview or ghostview), particularly for
+documents with many pages where the navigational support in PDF files
+reduces the overhead involved in navigating conventional PostScript
+documents.
+
+
+
+
Acknowledgments
+
+
+Thanks to George N. White III <aa056@chebucto.ns.ca> of the Ocean
+Sciences Division of the Bedford Institute of Oceanography in Dartmouth,
+Nova Scotia for extensive testing of early versions of
+ps2pdf, and for contributing most of this writeup.
+
+
+Thanks to Martin Hosken of SIL International <http://www.sil.org> for help with testing
+ps2pdf with a wide variety of international fonts.
+
+
+
+
+
+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/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 @@
+
+
+
+.ps files distributed with Ghostscript
+
+
+
+
+
+
+
+
+
+
+
Ghostscript reads this automatically when it starts up. It contains
+definitions of many standard procedures and initialization for a wide
+variety of things.
+
gs_init.ps 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.
+
gs_init.ps reads this in. It creates a dummy
+statusdict and some other environmental odds and ends for
+the benefit of PostScript files that really want to be printed on a
+LaserWriter.
+
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 how to do this.
+
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.
+
+
+
+
+
Display PostScript-specific system files
+
+
+These files are found in the lib subdirectory of
+the Ghostscript source distribution.
+
+
gs_init.ps reads these in if the dps
+feature is included in the configuration. They provide support for various
+Display PostScript and Level 2 features.
+
+
+
+
+
Art and examples
+
+
+These files are found in the examples subdirectory of
+the Ghostscript source distribution.
+
+
A colored version of a hexagonally symmetric Escher drawing of
+interlocking butterflies. Can be printed on monochrome devices, with
+somewhat less dramatic results.
+
The RIDT '91 logo. Note that since this is an EPS file, you will have
+to add "-c showpage" at the end of the command line to
+print it or convert it to a raster file.
+
Prints text in a variety of different sizes, to help evaluate the
+quality of text rendering.
+
+
+
+
+
Utilities
+
+
+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 bdftops and
+bdftops.bat) to invoke them conveniently.
+
+
+These files are found in the lib subdirectory of
+the Ghostscript source distribution.
+
+
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).
+
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 psnup (which, however, requires DSC
+comments).
+
A utility for converting an arbitrary PostScript file into a form
+compatible with Adobe Illustrator. NOTE: ps2ai doesn't
+work properly with Adobe's Helvetica-Oblique font, and other fonts whose
+original FontMatrix involves skewing or rotation.
+
A utility for extracting the ASCII text from PostScript source files.
+It redefines many operators. For more information, see the comments in the
+file.
+
A file that installs the StochasticDefault halftone as the default,
+which may improve output quality on inkjet printers. See the file for more
+information.
+
+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.
+
+
+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).
+
+
+
+
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)
+
+
+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
+
+
+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,
+
+
+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:
+
+
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.
+
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.
+
Note providing information on utilization of CJK (Chinese,
+Japanese and Korean) TrueType fonts as CIDFontType2 fonts from the
+viewpoint of its validity and limitations.
+
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.
+
Code orientation for developers. Contains a detailed breakdown of
+the source files by functional group, and overviews of the major
+architectural features and services.
+
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.
+
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.
+
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.
+
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.
+
A list of outstanding open issues in Ghostscript. These include
+known limitations, minor bugs, performance issues, differences from
+Adobe implementations, and others.
+
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.
+
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.
+
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.
+
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.
+
A description of the PostScript files (other than font files)
+distributed with Ghostscript, including initialization routines, utility
+programs, and sample printable files.
+
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.
+
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.
+
+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/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 @@
+
+
+
+How to prepare a Ghostscript release
+
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+File names below that don't include an explicit subdirectory name are in the
+src subdirectory.
+
+
+If you do plan to make your own distribution, please be aware of some items
+you will want to change.
+
+
+
+
If you make any significant changes, please edit
+gscdef.c to change GS_PRODUCTFAMILY and
+GS_PRODUCT from "GNU Ghostscript" to something else,
+in order to avoid confusion with artofcode's releases.
+
+
In the same file, you may also want to edit GS_COPYRIGHT
+to add your own copyright notice (although you must not remove any
+notice that is there).
+
+
You will almost certainly want to edit version.mak to
+change the revision date, GS_REVISIONDATE.
+
+
If you want to change the version number, you must change it in both
+version.mak (GS_VERSION_*) and
+lib/gs_init.ps (the integer on a line by itself near the
+beginning of the file).
+
+
+
+
Servers
+
+
+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.
+
+
Distribution
+
+
+The primary distribution site for GNU Ghostscript is the GNU ftp
+site and its mirrors.
+
+
+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
+bug-gswin@ghostscript.com;
+for more information about MacOS packages, please contact mac-gs@ghostscript.com.
+
+
+To make a source distribution, you will need the scripts and data files in
+the toolbin/ 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
+(http://www.scriptics.com), and
+Python, freely available from http://www.python.org.
+
+
+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.
+
+
+data/*/*.ps (PostScript files) - needed for smoke testing
+
+
+
Preparing the source code
+
+
+Update references to the date for release:
+
+
+
+
In lib/gs_init.ps, as an integer (release number
+x100) at the beginning of the file just after the initial comment
+blocks.
+
+
In version.mak, the numeric date.
+
+
In doc/News.htm, in two places, skipping the Id:
+line. That is, in parentheses after the VERSION X.YY heading,
+and in the copyright footer both the year and the release date.
+
+
+
+We recommend using a UTC release date to avoid timezone skew.
+
+
+Also in doc/News.htm, update the number of the highest
+closed bug and the list of open bugs.
+
+
+Check in gscdef.c that the definition of
+GS_PRODUCT includes the appropriate one of "DEVELOPMENT
+RELEASE", "BETA RELEASE", or neither, and does not include "CVS
+PRE-RELEASE".
+
+
Run the source-consistency checks from the test suite:
+
+
+toolbin/tests/check_all.py --gsroot=.
+
+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.
+
+
+Check for patched configuration parameters, #define TESTs,
+version/date inconsistencies, and mismatches between the working directory
+and the CVS repository by running:
+
+
+toolbin/pre
+
+
+
+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
+toolbin/pre for the default file names. The
+important one is the check file,
+toolbin/pre.chk. pre also verifies
+that the
+right information is in the following places:
+
+
version number in man/*.1, doc/*.htm,
+version.mak, doc/gs-vms.hlp,
+lib/gs_init.ps
+
revision date in man/*.1, doc/*.htm,
+version.mak, doc/gs-vms.hlp
+
copyright year (if necessary) in gscdef.c
+
third-party library version number in *.mak
+
+
+
+If necessary, run
+
+
+toolbin/pre update
+
+
+
+to update the version and revision date in the doc files, and then run
+
+
+toolbin/pre
+
+
+
+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.
+
+
+Check the consistency of the source code with the makefiles by
+running:
+
+
+toolbin/gsmake.tcl check
+
+
+This script assumes the top level makefile is named 'makefile'.
+
+
+(Edit toolbin/smoke.ps 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.
+
+
+Undo the FEATURE_DEVS and COMPILE_INITS
+edits.
+
+
+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.
+
+
+This updates doc/History#.htm from
+doc/News.htm and doc/Changes.htm.
+
+Then run
+
+
+cvs commit
+
+
+
+again to check in the Changes and history files.
+
+
Making the source distribution
+
+
+First, tag the versions of the files in cvs with the release version
+number.
+
+
+
cvs tag gs#_##
+
+
+If you've already tagged this release (e.g. in making an earlier
+release candidate) you'll need to add the -r and -F
+options after 'cvs tag' to force moving the tag to the new revisions
+of changed files.
+
+
+Pull a fresh copy for distribution from the cvs repository:
+
+
+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.
+
+
+It is also customary to make a gs###src.zip archive for the
+convenience of windows developers. See below.
+
+
Testing on Windows
+
+
+For Windows testing, you will need, in addition to the files listed
+under "Preparing the source" above:
+
+toolbin/makewin (link to makeset.tcl)
+
+
+
+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.
+
+
+Mount the Windows partition on /c, and create the
+/c/work directory if needed.
+
+
+Make the zip archive of all files needed for a Windows build, and copy it to
+the Windows partition:
+
+
+toolbin/makewin
+cp gs###.zip /c/work
+
+
+
+Boot into Windows. Unpack the archive:
+
+
+cd \work
+unzip -oq gs###.zip
+gs###
+
+
+
+The gs###.bat script creates some necessary directories,
+sets up PATH and GS_LIB for testing, and
+makes the gs#.## directory current.
+
+
+Building with the Watcom compiler doesn't work, because the
+wmake or wmakel program runs out of memory.
+However, if it did work, this is how to do it:
+
+
+Boot back into GNU/Linux. If testing in Windows revealed problems, edit the
+source files as necessary, and go back to "Preparing the source code."
+
+
Building the Windows distribution
+
+Extract the sources from ghostscript-N.NN.tar.gz
+then repackage in a zip file as follows:
+
+Then finally zip up the sources to the distribution file:
+
+zip -9 -r gsNNNsrc.zip gsN.NN
+
+This method is reasonably portable, and does not convert binary
+files such as
+examples/annots.pdf.
+
+Unzip gsNNNsrc.zip.
+The directory must be named gsN.NN.
+
+Extract the fonts gnu-gs-fonts-std-6.0.tar.gz
+into a directory fonts adjacent to the
+gsN.NN directory.
+The fonts are needed in this location for building
+the distribution archive later.
+
+You will need the command line Info-Zip zip program available from
+
+http://www.info-zip.org/pub/infozip/
+Alternatively, the command line version of WinZip
+(wzzip.exe) can be used by replacing the
+Info-Zip command line options -9 -r
+with -ex -P in
+winint.mak.
+
+You will need WinZip Self-Extractor for building the
+self extracting archive. This is commercial software.
+You may need to update the path WINZIPSE_XE in
+winint.mak.
+
+Unzip the jpeg, libpng and zlib libraries, then make ghostscript
+as documented in Make.htm.
+
+Run the command nmake archive. This builds the distribution
+archive gsNNNw32.exe and an ordinary zip file
+gsNNNw32.zip in the parent directory.
+If you do not have WinZip Self-Extractor, you can use
+nmake zip to make gsNNNw32.zip only.
+
+
Finishing up
+
+
+Upload ghostscript-#.##.tar.* to SourceForge (by anonymous
+FTP to upload.sourceforge.net, directory
+/incoming), and then post it using the "File Release"
+facility in the Ghostscript project.
+If this is a GNU release, put it in the gnu-gs module.
+If this is a test release or beta release, put
+it in the gs-devel or gs-beta 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.
+
+
Beta distributions
+
+
+Do the steps for distributions in general.
+
+
+Upload ghostscript-#.##.tar.* to the testing directory on
+mirror.cs.wisc.edu.
+
+
+Send an email announcement to the gs-test list
+announcing the new release.
+
+
Public releases
+
+
+Update the title (current version #), first heading (previous version #),
+and "new features" and "known problems" lists in
+doc/Current.htm.
+
+
+Do the steps for distributions in general.
+
+
+Create a directory at
+ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/gs###/.
+In that
+directory, store the following files:
+
+
Third-party libraries, as links (upload these if not installed), where
+$$$ 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.
+
+
+(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.)
+
+
+E-mail the release announcement using:
+
+To: gs-announce
+
+
+
+Edit the Web pages in cvs and commit to reflect the new release.
+The Wisconsin server should update automatically.
+
+
After releasing
+
+
+E-mail the full URL and the md5sum of the new archive(s) to
+ftp-upload@gnu.org. This
+will allow the site maintainers to add the new release to the GNU
+distribution network.
+
+
+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.
+
+
+Update the version number by incrementing it:
+
+
+
+
In lib/gs_init.ps, at the very beginning of the file.
+
+
In version.mak, in 3 definitions.
+
+
In doc/News.htm, in 4 places.
+
+
+
+
+In gscdef.c, edit the definition of
+GS_PRODUCT to include "CVS PRE-RELEASE".
+
+
+Edit doc/News.htm to remove all the content.
+
+
+
Fonts
+
+
+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.
+
+
+The second two should be uploaded to
+ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/fonts/,
+and the url and md5sum sent to the GNU ftp maintainers as with the
+ghostscript source.
+
+
+
+
+
+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/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 @@
+
+
+
+Guide to Ghostscript source code
+
+
+
+
+
+
+
+
+
+
+
+gs.c is the main program for the interactive language
+interpreter; gserver.c 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 gserver.c instead
+of gs.c.
+
+
+Files named z*.c 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 zXXX, for example,
+zfill and zarray.
+
+
+Files named i*.c, and *.h
+other than g*.h, are the rest of the
+interpreter. See the makefile for a little more information on how the
+files are divided functionally.
+
+
+The main loop of the PostScript interpreter is the interp
+procedure in interp.c. When the interpreter is reading
+from an input file, it calls the token scanner in
+iscan*.c.
+
+
+idebug.c contains a lot of debugger-callable routines
+useful for printing PostScript objects when debugging.
+
+
+
+
PDF interpreter
+
+
+The PDF interpreter is written entirely in PostScript. Its main loop is
+the .pdfrun procedure in pdf_base.ps. When
+the PDF interpreter is configured into the build, it redefines the
+"run" operator to test whether the file is a PDF file.
+This redefinition is near the beginning of pdf_main.ps.
+
+
+
+
Graphics library
+
+
+Files beginning with gs, gx, or
+gz (both .c and .h), other
+than gs.c and gserver.c, are the
+Ghostscript library. Files beginning with gdev are device
+drivers or related code, also part of the library. Other files beginning
+with g are library files that don't fall neatly into either
+the kernel or the driver category.
+
+
+Files named s*.c and
+s*.h are a flexible stream package,
+including the Level 2 PostScript "filters" supported by Ghostscript. See
+stream.h, scommon.h, and
+strimpl.h for all the details.
+
+
Device drivers
+
+
+The interface between the graphics library and device drivers is the only
+really well documented one in all of Ghostscript: see the
+documentation on drivers.
+
+
+In addition to many real device and file format drivers listed in
+devs.mak and contrib.mak, a number of
+drivers are used for internal purposes. You can search
+lib.mak for files named
+gdev*.c to find almost all of them.
+
+
+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 gdev_prn_alloc in
+gdevprn.c: it implements this decision by filling the
+virtual procedure table for the printer device in one of two different
+ways.
+
+
+A good simple "printer" (bandable) driver to read is
+gdevmiff.c: 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
+gdevm8.c, which implements 8-bit-deep devices that only
+store the bits in memory.
+
+
Platform-specific code
+
+
+There are very few platform dependencies in Ghostscript. Ghostscript deals
+with them in three ways:
+
+
+
Files named *_.h substitute for the corresponding
+<*.h> file by adding conditionals
+that provide a uniform set of system interfaces on all platforms.
+
+
The file arch.h contains a set of
+mechanically-discovered platform properties like byte order, size of
+int, etc. These properties, not the names of
+specific platforms, are used to select between different algorithms or
+parameters at compile time.
+
+
Files named gp*.h define interfaces
+that are intended to be implemented differently on each platform, but whose
+specification is common to all platforms.
+
+
+
+The platform-specific implementations of the
+gp*.h interfaces have names of the form
+"gp_{platform}.c, specifically
+(this list may be out of date):
+
+
+
Platform-specific interfaces
+
+
Routine
+
+
Platform
+
+
gp_dosfb.c
+
+
DOS
+
gp_dosfs.c
+
+
DOS and MS Windows
+
gp_itbc.c
+
+
DOS, Borland compilers
+
gp_iwatc.c
+
+
DOS, Watcom or Microsoft compiler
+
gp_msdos.c
+
+
DOS and MS Windows
+
gp_ntfs.c
+
+
MS-Windows Win32s and Windows NT
+
gp_os2.c
+
+
OS/2
+
gp_os9.c
+
+
OS-9
+
gp_unifs.c
+
+
Unix, OS-9, and QNX
+
gp_unix.c
+
+
Unix and QNX
+
gp_sysv.c
+
+
System V Unix
+
gp_vms.c
+
+
VMS
+
gp_win32.c
+
+
MS-Windows Win32s and Windows NT
+
+
+
+If you are going to extend Ghostscript to new machines or operating
+systems, check the *_.h files for ifdef on
+things other than DEBUG. You should probably plan to make
+a new makefile and a new gp_XXX.c file.
+
+
+
+
Makefiles
+
+
+This section is only for advanced developers who need to integrate
+Ghostscript into a larger program at build time.
+
+
+NOTE: THIS SECTION IS INCOMPLETE. IT WILL BE IMPROVED IN A LATER REVISION.
+
+
+The Ghostscript makefiles are meant to be organized according to the
+following two principles:
+
+
+
+
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)
+
+
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.
+
+
+
+Thus, for example:
+
+
+
+
Rules and definitions shared by all builds are in
+gs.mak.
+
+
Rules and definitions specific to the library (on all platforms) are in
+lib.mak. In principle this could be merged with
+gs.mak, but we wanted to leave open the possibility that
+gs.mak might be useful with hypothetical interpreter-only
+products.
+
+
Stuff specific to interpreters (on all platforms) is in
+int.mak.
+
+
Stuff specific to all Unix platforms should be in a single
+unix.mak file, but because make sometimes
+cares about the order of definitions, and because some of it is shared with
+DV/X, it got split between unix-aux.mak,
+unix-end.mak, unixhead.mak,
+unixinst.mak, and unixlink.mak.
+
+
+
+
+For MS-DOS and MS Windows builds, there should be:
+
+
+
+
A makefile for all MS OS (DOS or Windows) builds, for all
+ compilers and products.
+
+
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.
+
+
A makefile for all MS Windows builds, for all compilers and products.
+
+
A makefile for all Watcom builds (DOS or Windows), for all products.
+
+
A top-level makefile for the Watcom DOS interpreter product.
+
+
A top-level makefile for the Watcom Windows interpreter product.
+
+
A top-level makefile for the Watcom DOS library "product".
+
+
A top-level makefile for the Watcom Windows library "product".
+
+
A makefile for all Borland builds (DOS or Windows), for all
+ products.
+
+
+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/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 @@
+
+
+
+Setting up a Unix lpr filter for Ghostscript
+
+
+
+
+
+
+
+
+
+
+
+"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
+
+
+
unix-lpr.sh
+
a flexible, multi-option print filter
+
+
lprsetup.sh
+
A shell script which sets up soft links and creates a template insert
+for the printcap file
+
+
+
+
+
What it can do
+
+
+The print filter resides in the Ghostscript installation directory (often
+/usr/local/share/ghostscript, 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:
+
+
+
Multiple devices supported by a single filter
+
Multiple bit-depths for the same device
+
Multiple number of colours for the same device
+
Direct (single-queue) and indirect (two-queue) setup
+
Support for the standard preprocessing filters if you have the
+corresponding (whatever)-to-PostScript translators
+
Redirection of diagnostic and programmed output to a logfile in
+the spooling directory
+
Maintaining of printer accounting records of the numbers of pages
+printed by each user (compatible with the pac command)
+
Straightforward editing for further customisation
+
+
+
+
+
Setting it up
+
+
+The lprsetup.sh 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
+
+
+
creates a "filt" subdirectory under the
+Ghostscript installation directory
+
creates the links in this directory which enable the filter to
+determine the parameters for running Ghostscript
+
automatically generates printcap entries which should
+need only a little editing before adding to your system
+printcap file
+
+
+
Editing the device list DEVICES
+
+
+At the top of lprsetup.sh is a line of the form
+DEVICES={list}. 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 ".".
+
+
Field 1: bits per pixel
+
+
+The first field is required only if the printer device understands the -dBitsPerPixel=
+switch, which applies only to colour devices. For a particular number
+N of bits per pixel, add the suffix .N to
+the device name, for instance cdj500.3,
+cdj500.24, etc.
+
+
Field 2: colours
+
+
+The second field is required only if the printer device understands the
+setting of the Colors device parameter (as in
+-dColors=), which applies only to colour devices (and at
+present is only supported by the bjc* family of drivers).
+For a particular number N of colours, suffix
+.N to the device name, such as bjc600.24.3,
+bjc600.8.1 etc.
+
+
Field 3: dual queues
+
+
+The third field is required in order to use two separate queues for the
+device, a "raw" queue and a PostScript queue (see
+"Single or dual queues" below). If you want
+dual queues, add the suffix .dq ("dual queue") to the name,
+whether or not a bits-per-pixel suffix has already
+been added.
+
+
Example definition of
+DEVICES
+
+
+Thus the following list supports a cdj550 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 deskjet
+device with a single queue; and a djet500 device using a
+separate queue:
+
+
+The standard list contains only the generic "if" 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
+bsd-if file to add to the PATH the
+directories where the translators are stored, or to change the names of the
+filters if yours are different. The bsd-if script is
+supplied with an example setup using Transcript (a commercial package from
+Adobe), and PBMPLUS, a freeware package by Jef Poskanzer and others.
+
+
Editing the printer port and
+type
+
+
+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
+printcap.insert file yourself.
+
+
Modifying
+printcap.insert
+
+
+Running lprsetup.sh generates a file
+printcap.insert 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 printcap 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
+printcap file to use a networked remote printer instead of
+an attached printer, and an example is given in
+printcap.insert.
+
+
Single or dual queues
+
+
+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 ".dq" option above.
+
+
+
+
Bugs
+
+
+You must have write access to the Ghostscript installation directory for
+lprsetup.sh to create the filter directory and soft links.
+
+
+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
+DEVICES device
+list. If you do not, printcap.insert will contain multiple
+entries for the same device, which is not supported.
+
+
+
+
Authors
+
+
+This material was contributed by George Cameron. Yves Arrouye
+<yves.arrouye@usa.net>
+is responsible for the number-of-colours part of the script.
+
+
+
+
+
+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/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 @@
+
+
+
+How to use Ghostscript
+
+
+
+
+
+
+
+
+
+
+
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:
+
+
+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
+section about previewers in the
+documentation for new users.
+
+
+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
+"File searching" 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 "quit". The
+interpreter also quits gracefully if it encounters end-of-file or
+control-C.
+
+
+The interpreter recognizes many switches. 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 "="
+followed by a parameter.
+
+
Help at the command line: gs -h
+
+
+You can get a brief help message by invoking Ghostscript with the
+-h or -? switch, like this:
+
+
+gs -h
+gs -?
+
+
+
+(Of course, for "gs" use the right
+command for your system.) The message shows
+for this executable
+
+
+
its version
+
the format of the command to invoke it
+
a few of the most useful switches
+
the formats it can interpret
+
the devices for which it can produce output
+
where it looks for font files
+
where and how to send bug reports
+
+
+
Security
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+are 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.
+
+
+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.
+
+
+We will continue to be vigilant regarding security issues. As
+always, apply security updates promptly.
+
+
Input from a pipe
+
+
+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 "-" or "-_", for instance
+
+
+{some program producing PS} | gs {...options...} -
+
+{some program producing PS} | gs {...options...} -_
+
+
+
+These switches differ from a named file in two respects:
+
+
+
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.
+
+
+
+The difference between "-" and "-_" is that
+"-" 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 "-_" reads the input in
+blocks, which is more efficient for ordinary (batch) execution.
+
+
Selecting an output device
+
+
+Ghostscript may be built to handle multiple output devices, and it normally
+opens and directs output to the first one built in. Ghostscript's
+gs -hhelp message lists
+the output devices known to the executable. Once you invoke Ghostscript
+you can also find out what devices are available by
+"devicenames ==" at its command prompt.
+
+
+
+A little more information about devices appears near the beginning of the
+files devs.mak (for drivers that are considered "part of"
+Ghostscript and are maintained by the maintainers of the main Ghostscript
+code) and contrib.mak (for user-contributed drivers) used to
+build Ghostscript. (If you got Ghostscript under the Aladdin Free Public License, 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 General Public License for
+more information.)
+
+
+To use device xyz as the initial output device, use the
+command-line switch
+
+
+ -sDEVICE=xyz
+
+
+
+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
+"gs myfile.ps" you might use
+
+
+ gs -sDEVICE=epson myfile.ps
+
+
+
+Alternatively, once you invoke Ghostscript and have its own command prompt
+you can type
+
+
+ (epson) selectdevice
+ (myfile.ps) run
+
+
+
+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 selectdevice procedure, for
+instance like one of these:
+
+
+ (vga) selectdevice
+ (epson) selectdevice
+
+
+
+A third possibility is to define an environment variable
+GS_DEVICE with the name of your desired default device.
+The order of precedence for these alternatives, highest to lowest, is:
+
+
+
selectdevice
+
+
Highest precedence
+
(command line)
+
+
+
GS_DEVICE
+
+
+
(first device built in)
+
+
Default; lowest precedence
+
+
+
Printer resolution
+
+
+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 -r switch:
+
+
+ gs -sDEVICE=printer -rXRESxYRES
+
+
+
+For example, on Epson-compatible printers you have these choices:
+
+
+
gs -sDEVICE=epson
+
+
-r60x72
+
+
9-pin
+
+
lowest resolution
+
+
fastest
+
+
+
-r240x72
+
+
+
+
highest
+
+
slowest
+
+
+
+
-r60x60
+
+
24-pin
+
+
lowest
+
+
fastest
+
+
+
-r360x180
+
+
+
+
highest
+
+
slowest
+
+
+
Output to files
+
+
+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 (PRN); on Unix
+or VMS systems normally to a temporary file for later printing. To send the
+output to a file, use the -sOutputFile= switch (for
+compatibility with older versions of Ghostscript,
+-sOUTPUTFILE= also works). For instance, to direct all
+output into the file ABC.xyz, use
+
+
+gs -sOutputFile=ABC.xyz
+
+
+
+The file name follows the PostScript convention that if a name begins with
+%, the name must be in the form %filedevice
+or %filedevice%file. The legal values of
+filedevice are system-dependent, but the following have consistent meanings
+across systems:
+
+
+
"%{filedevice}%{file}" in -sOutputFile=
+
+
filedevice
+
+
Meaning
+
+
%os%xyz
+
+
An ordinary file named xyz
+
%pipe%cmd
+
+
(if supported) A pipe to an instance of the command cmd
+
%stdout
+
+
The standard output file
+
+
+
+Note that because of this, if you want to specify a file name that actually
+begins with %, you must specify the %os%
+filedevice explicitly: e.g., for output to a file named
+%abc, you need to specify
+-sOutputFile=%os%%abc. Note also that on DOS and MS Windows
+systems, the % 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,
+
+
+gs -sOutputFile=%%pipe%%cmd
+
+
+
One page per file
+
+
+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 printf format specifier
+"%d" (or its extended form like "%02d");
+for instance
+
+
+
"%{n}d" in -sOutputFile=
+
+
Output specification
+
+
Produces the series of 1-page files
+
+
-sOutputFile=ABC%d.xyz
+
+
ABC1.xyz ... ABC10.xyz ...
+
-sOutputFile=ABC%03d.xyz
+
+
ABC001.xyz ... ABC010.xyz ...
+
+
+
+As noted above, on DOS and MS Windows systems, you will have to double the
+% character, e.g.,
+
+
+gs -sOutputFile=ABC%%03d.xyz
+
+
+
Output to a pipe
+
+
+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
+lpr, use the command
+
+
+ gs -sOutputFile=\|lpr
+
+or, as noted above,
+
+ gs -sOutputFile=%pipe%lpr
+
+
+
+(doubling the % 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:
+
+
+ gs -sOutputFile=- -q | ...
+
+or, as noted above,
+
+ gs -sOutputFile=%stdout -q | ...
+
+
+
+(again, doubling the % character on MS Windows systems.)
+In this case you must also use the -q
+switch to prevent Ghostscript from writing messages to standard output
+which become mixed with the intended output stream.
+
+
Output to graphics file formats
+
+
+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
+
+
+gs -sDEVICE=pcxmono -sOutputFile=xyz.pcx
+
+
+
+Here, as with printable files, you can use "%d"
+("%%d" on DOS and MS Windows) to specify one page per output file.
+
+
Bounding box output
+
+
+There is a special bbox "device" that just prints the
+bounding box of each page. You select it in the usual way:
+
+
+Currently, it always prints the bounding box on stderr;
+eventually, it should also recognize -sOutputFile=.
+
+
+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 both the resolution and the page size in
+pixels, e.g.,
+
+
+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:
+
+
+
+
+If the desired paper size is listed in the section on paper sizes known to Ghostscript below, you
+can select it as the default paper size for a single invocation of
+Ghostscript by using the -sPAPERSIZE= switch, for instance
+
+
+-sPAPERSIZE=a4
+-sPAPERSIZE=legal
+
+
+
+Otherwise, let w be the desired paper width and h be the
+desired paper height, in 1/72" units. You can set the page size using the
+pair of switches
+
+
+-dDEVICEWIDTHPOINTS=w
+-dDEVICEHEIGHTPOINTS=h
+
+
+
+
+
+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
+-dFIXEDMEDIA switch on the
+command line.
+
+
Changing the installed default paper size
+
+
+You can change the installed default paper size in installing Ghostscript
+or later, by editing the initialization file gs_init.ps.
+Find the consecutive lines
+
+
+% Optionally choose a default paper size other than U.S. letter.
+% (a4)
+
+
+
+Then to make A4 the default paper size, uncomment the second line to change
+this to
+
+
+% Optionally choose a default paper size other than U.S. letter.
+(a4)
+
+When looking for initialization files (gs_*.ps,
+pdf_*.ps), font files, the Fontmap file,
+and files named on the command line, Ghostscript first tests whether the
+file name specifies an explicit directory.
+
+
+
Testing a file name for an explicit directory
+
System
+
+
Does the name ...
+
+
Unix
+
+
Begin with /, ./ or ../ ?
+
DOS or MS Windows
+
+
Have : as its second character, or
+ begin with /, \,
+ ./, ../, .\, or ..\ ?
+
VMS
+
+
Contain a node, device, root, or directory specification?
+
+
+
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:
+
+
+
The current directory (unless disabled by the
+-P- switch);
+
+
The directories specified by -I
+switches in the command line, if any;
+
+
The directories specified by the GS_LIB
+environment variable, if any;
+
+
The directories specified by the
+GS_LIB_DEFAULT macro (if any) in the makefile
+when this executable was built.
+
+
+
+GS_LIB_DEFAULT,
+GS_LIB, and the
+-I parameter may specify either a single
+directory or a list of directories separated by a character appropriate for
+the operating system (":" on Unix systems,
+"," on VMS systems, and
+";" 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
+-P- switch.
+
+
+Note that Ghostscript does not use this file searching algorithm for the
+run or file
+operators: for these operators, it simply opens the file with the name
+given. To run a file using the searching algorithm, use
+runlibfile instead of
+run.
+
+
Finding PostScript Level 2 resources
+
+
+Ghostscript uses a completely different rule for looking for files
+containing PostScript Level 2 "resources": per the Adobe documentation, it
+concatenates together
+
+
+
the value of the system parameter
+GenericResourceDir (initially
+/Resource/)
+
+
the name of the resource category (for instance, ProcSet)
+
+
the value of the system parameter
+GenericResourcePathSep (initially
+"/")
+
+
the name of the resource instance (for instance, CIDInit)
+
+
+
+To look up fonts, after exhausting the search method described in the
+next section, it concatenates together
+
+
+
the value of the system parameter
+FontResourceDir (initially
+/Resource/Font/)
+
+
the name of the resource font (for instance, Times-Roman)
+
+
+
+Note that even though the system parameters are named "somethingDir", they
+are not just plain directory names: they have "/" on the
+end, so that they can be concatenated with the category name or font name.
+
+
Font lookup
+
+
+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
+-I, GS_LIB, and
+GS_LIB_DEFAULTas described
+above, but also the directory that is the value of the
+FontResourceDir system parameter, and an additional list of
+directories that is the value of the GS_FONTPATH environment
+variable (or the value provided with the -sFONTPATH= switch,
+if present).
+
+
+At startup time, Ghostscript reads in the Fontmap files in
+every directory on the search path (or in the list provided with the
+-sFONTMAP= switch, if present): these files are catalogs of
+fonts and the files that contain them. (See the
+documentation of fonts for details.) Then, when Ghostscript needs to
+find a font that isn't already loaded into memory, it goes through a series
+of steps.
+
+
+
+
+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
+-I, GS_LIB, and
+GS_LIB_DEFAULT), and the file is loaded successfully, and
+loading it defines a font of the desired name, that is the end of the
+process.
+
+
+If this process fails at any step, Ghostscript looks for a file whose name
+is the concatenation of the value of the FontResourceDir
+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 FontResourceDir is normally the
+string /Resource/Font/, but it can be changed with the
+setsystemparams operator: see the PostScript Language
+Reference Manual for details.
+
+
+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.
+
+
+If that too fails, Ghostscript looks at the GS_FONTPATH
+environment variable (or the value provided with the
+-sFONTPATH= 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.
+
+
+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.
+
+
+Finally, if all else fails, it will try to find a substitute for the font
+from among the standard 35 fonts.
+
+
+
+
+
Differences between search path and font path
+
Search path
+
+
Font path
+
+
-I switch
+
+
-sFONTPATH= switch
+
+
GS_LIB and GS_LIB_DEFAULT
+ environment variables
+
+
GS_FONTPATH environment variable
+
+
Consulted first
+
+
Consulted only if search path and
+ FontResourceDir don't provide the file.
+
+
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
+ FontName in the file.
+
Font-name-to-file-name mapping is
+ implicit -- the FontName in the file is
+ used. Aliases are not possible.
+
+
Only fonts and files named in Fontmap are used.
+
+
Every Type 1 font file in each directory is
+ available; if TrueType fonts are supported (the
+ ttfont.dev feature was included when the
+ executable was built), they are also available.
+
+
+
+If you are using one of the following types of computer, you may wish to
+set the environment variable GS_FONTPATH 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 "*"):
+
+
+* On SGI IRIX systems, you must use Fontmap.SGI in
+place of Fontmap or Fontmap.GS, because
+otherwise the entries in Fontmap will take precedence over
+the fonts in the FONTPATH directories.
+
+
+** On Solaris systems simply setting GS_FONTPATH or
+using -sFONTPATH= may not work, because for some reason some
+versions of Ghostscript can't seem to find any of the Type1 fonts in
+/usr/openwin/lib/X11/fonts/Type1/outline. (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 Fontmap.Sol 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
+
+
+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.
+
+
+
+
+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.
+
+
+Adobe Acrobat comes with a set of fourteen Type 1 fonts, on Unix typically
+in a directory called .../Acrobat3/Fonts. 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 on Unix and on DOS (where you can also use
+Adobe Type Manager fonts).
+
+
Temporary files
+
+
+
Where Ghostscript puts temporary files
+
+
Platform
+
+
Filename
+
+
Location
+
+
DOS and OpenVMS
+
+
_temp_XX.XXX
+
+
Current directory
+
OS/2
+
+
gsXXXXXX
+
+
Current directory
+
Unix
+
+
gs_XXXXX
+
+
/tmp
+
+
+
+You can change in which directory Ghostscript creates temporary files by
+setting the TMPDIR or TEMP 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.
+
+
+
GS, GSC (MS Windows only)
+
Specify the names of the Ghostscript executables. GS
+brings up a new typein window and possibly a graphics window;
+GSC uses the DOS console. If these are not set,
+GS defaults to gswin32, and
+GSC defaults to gswin32c.
+
Provides a search path for initialization files and fonts.
+
+
+
+
GS_OPTIONS
+
Defines a list of command-line arguments to be processed before the
+ones actually specified on the command line. For example, setting
+GS_DEVICE to XYZ is equivalent to setting
+GS_OPTIONS to -sDEVICE=XYZ. The contents
+of GS_OPTIONS are not limited to switches; they may include
+actual file names or even "@file" arguments.
+
+
Defines a directory name for temporary files. If both
+TEMP and TMPDIR are defined,
+TMPDIR takes precedence.
+
+
+
+
CID font substitution
+
+
+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.
+
+
+
+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).
+
+
+The simplest method to request a font composed of CID font resource and CMap resource
+is to code
+
+/CIDFont-CMap findfont
+
+in a PostScript document, where CIDFont is a name of any
+CID font resourse, and CMap 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 composefont.
+
+
+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
+"About CIDFnmap of Ghostscript"
+in CJK.htm. However, "CIDFnmap" will be replaced by "cidfmap" in
+Ghostscript 7.2x and later releases.
+
+
+
Using Ghostscript with EPS files
+
+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 %%BoundingBox: 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 %%BoundingBox: be in the header,
+not the trailer.
+
+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
+pdf2ps utility uses Ghostscript to convert
+PDF to (Level 2) PostScript.
+
+
PDF files from standard input
+
+
+The PDF language, unlike the PostScript language, inherently requires
+random access to the file.
+If you provide PDF to standard input using the
+"-" or "-_"
+switch,
+ghostscript will copy it to a temporary file before interpreting the PDF.
+
+
Switches for PDF files
+
+
+
-dFirstPage=pagenumber
+
Begins interpreting on the designated page of the document.
+
+
+
+
-dLastPage=pagenumber
+
Stops interpreting after the designated page of the document.
+
+
+
+
-dPrinted
+
-dPrinted=false
+
Determines whether the file should be displayed or printed using the
+"screen" or "printer" options for annotations and images. With
+-dPrinted, the output will use the file's "print"
+options; with -dPrinted=false, 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
+OutputFile parameter, and the printer options for
+devices that do have this parameter.
+
+
+
+
-dUseCropBox
+
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.
+
+
+
+
-sPDFPassword=password
+
Sets the user or owner password to be used in decoding encrypted
+PDF files.
+
+
+
Problems interpreting a PDF file
+
+
+Occasionally you may try to read or print a *.pdf file that
+Ghostscript doesn't recognize as PDF, even though the same file
+can 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 Portable
+Document Format Reference Manual, version 1.2, which states:
+
+
+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 %PDF-1.2.
+
+
+
+However, in an appendix the manual also says that Adobe
+
+
+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.
+
+
+
+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
+
+
+%PDF
+
+
+
+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 od, you can use
+tail to strip them off. For instance:
+
+
+od -c Macintosh.pdf | more ;# shows that %PDF occurs after 128 characters
+tail +128c Macintosh.pdf >Legal.pdf
+
+
+
+On PCs and other systems you can use the hexl program
+distributed with GNU emacs to convert the PDF file to editable text form.
+After editing, hexl can convert the text form back to
+binary.
+
+
+
+
Notes on specific platforms
+
+
Unix
+
+
+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.
+
+
+
pv.sh
+
Preview a specified page of a dvi file in an X window
+
+
+
+
sysvlp.sh
+
System V 3.2 lp interface for parallel printer
+
+
+
+
pj-gs.sh
+
Printing on an H-P PaintJet under HP-UX
+
+
+
+
unix-lpr.sh
+
Queue filter for lpr under Unix;
+its documentation is intended for system
+administrators
+
+
+
+
lprsetup.sh
+
Setup for unix-lpr.sh
+
+
+
+
+
VMS
+
+
+
To be able to specify switches and file names when invoking the
+interpreter, define gs as a foreign command:
+
+
+$ gs == "$disk:[directory]gs.exe"
+
+
+
+where the "disk" and "directory" specify where
+the Ghostscript executable is located. For instance,
+
+
+$ gs == "$dua1:[ghostscript]gs.exe"
+
+
+
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 ":", it is taken to refer to a logical
+device, for instance
+
+
+If the "directory" name ends with a closing square bracket
+"]", it is taken to refer to a real directory, for instance
+
+
+$ define gs_lib dua1:[ghostscript]
+
+
+
Defining the logical GS_LIB
+
+
+$ define gs_libdisk:[directory]
+
+
+
+allows Ghostscript to find its initialization files in the Ghostscript
+directory even if that's not where the executable resides.
+
+
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
+
+
+$ gs -Isys$login:
+
+
+
+Ghostscript sees the switch as -isys$login,
+which doesn't work. To preserve the case of switches, quote them like
+this:
+
+
+$ gs "-Isys$login:"
+
+
+
If you write printer output to a file with
+-sOutputFile= and then want to print the file later, use
+"PRINT/PASSALL".
+
+
+
+
PDF files (or PostScript files that use the
+setfileposition operator) must be "stream LF" type files to
+work properly on VMS systems. (Note: This definitely matters
+if Ghostscript was compiled with DEC C; we are not sure of the situation if
+you use gcc.) Because of this, if you transfer files by
+FTP, you probably need to do one of these two things after the transfer:
+
+
+
+If you are using on an X Windows display, you can set it up with the node
+name and network transport, for instance
+
+
+ $ set display/create/node="doof.city.com"/transport=tcpip
+
+
+
+and then run Ghostscript by typing gs at the command line.
+
+
+
+
MS Windows
+
+
+You must add gs\bin and
+gs\lib to the PATH, where
+gs is the top-level Ghostscript directory.
+
+
+When passing options to ghostcript through a batch file wrapper such as
+ps2pdf.bat you need to substitute '#' for '=' as the separator
+between options and their arguments. For example:
+
+ps2pdf -sPAPERSIZE#a4 file.ps file.pdf
+
+
+Ghostscript treats '#' the same internally, and the '=' is mangled by
+the command shell.
+
+
+
+
MS-DOS
+
+
+Note: Ghostscript is no longer supported on MS-DOS. This
+documentation is included for historical interest only.
+
+
+You must add gs\bin and
+gs\lib to the PATH, where
+gs is the top-level Ghostscript directory.
+
+
+
+Ghostscript supports many SuperVGA displays directly, most of them with
+more than 16 colors. The complete list is in the file
+devs.mak, part of Ghostscript's
+source code.
+
+
+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
+
+
+ gs386 prologue.ini myfile.ps
+
+
+
+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
+
+
+-sDEVICE=svga16 -dDisplayMode=NNN
+
+
+
+where NNN 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 <bug-gs@aladdin.com> to include in
+future releases.
+
+
+
Display modes for PC display chipsets
+
+
Chipset
+
+
Decimal
+
+
Hex
+
+
+
Acumos AVGA2, AVGA3
+
+
88
+
+
0x58
+
+
Advance Logic AL2101
+
+
43
+
+
0x2B
+
+
Ahead V5000
+
+
113
+
+
0x71
+
+
ATI VGAWONDER, Graphics Ultra etc.
+
+
84
+
+
0x54
+
+
Chips and Technologies
+
+
106
+
+
0x6A
+
+
Cirrus Logic CL-GD 500/600
+
+
100
+
+
0x64
+
+
Cirrus Logic GD 5422
+
+
88
+
+
0x58
+
+
Compaq VGA
+
+
89
+
+
0x59
+
+
CTI
+
+
106
+
+
0x6A
+
*
+
Genoa 5xxx, Sigma VGA
+
+
41
+
+
0x29
+
+
Genoa 6xxx
+
+
106
+
+
0x6A
+
+
MXIC MX 68010
+
+
85
+
+
0x55
+
+
NCR 77C22
+
+
88
+
+
0x58
+
+
OAK Technologies OTI-067, OTI-077, OTI037C
+
+
82
+
+
0x52
+
+
OAK Technologies OTI037C w/ NEL BIOS
+
+
91
+
+
0x5B
+
*
+
Orchid Prodesigner
+
+
41
+
+
0x29
+
+
Paradise
+
+
88
+
+
0x58
+
+
Poach
+
+
106
+
+
0x6A
+
+
Primus
+
+
42
+
+
0x2A
+
+
Realtek RT 3106
+
+
31
+
+
0x1F
+
+
Tecmar
+
+
22
+
+
0x16
+
+
Trident 8900
+
+
91
+
+
0x5B
+
*
+
Tseng ET-3000, ET-4000
+
+
41
+
+
0x29
+
*
+
VEGA
+
+
41
+
+
0x29
+
+
Video 7 SVGA
+
+
98
+
+
0x62
+
+
WD90C11
+
+
92
+
+
0x5C
+
+
Western Digital
+
+
88
+
+
0x58
+
+
+
+
+Note that when passing arguments to batch files (as above) and also with the
+DOS executable gs386.exe build with the Watcom C/C++ compiler,
+you must use '#' rather than '=' between a
+command line switch and its argument, because of a strange design decision
+in the Wacom run-time library.
+
+
+
+
+
X Windows
+
+
+Ghostscript looks for the following resources under the program name
+ghostscript and class name
+Ghostscript; the ones marked "**" are
+calculated from display metrics:
+
+
+To set X resources, put them in a file (such as
+~/.Xdefaults on Unix) in a form like this:
+
+
+
Ghostscript*geometry:
595x842-0+0
+
Ghostscript*xResolution:
72
+
Ghostscript*yResolution:
72
+
+
+
+Then merge these resources into the X server's resource database:
+
+
+ xrdb -merge ~/.Xdefaults
+
+
+
+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.
+
+
+The geometry resource affects only window placement.
+
+
+Resolution is expressed in pixels per inch (1 inch = 25.4mm).
+
+
+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.
+
+
+The palette resource can be used to restrict Ghostscript to
+using a grayscale or monochrome palette.
+
+
+maxRGBRamp and
+maxGrayRamp 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.
+maxDynamicColors controls the maximum
+number of colors that Ghostscript will allocate dynamically in the
+colormap.
+
+
+
Working around bugs in X servers
+
+
+The "use..." resources exist primarily to work around bugs
+in X servers.
+
+
+
Old versions of DEC's X server (DECwindows) have bugs that
+ require setting useXPutImage or
+ useXSetTile to
+ false.
+
+
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
+ useBackingPixmap to
+ false.
+
+
Some servers do not implement tiling properly. This appears
+ as broad bands of color where dither patterns should appear. If
+ this happens, try setting
+ useXSetTile to
+ false.
+
+
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
+ useXPutImage to
+ false.
+
+
+
X fonts
+
+
+To use native X11 fonts, Ghostscript must map PostScript font names to the
+XLFD font names. The resources regularFonts
+(fonts available in standard or ISO-Latin-1 encoding),
+symbolFonts (using Symbol encoding), and
+dingbatFonts (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 "X default font mappings"
+for the full list of default mappings.
+
+
+Users who switch regularly between different X servers may wish to use the
+"*" wild card in place of the foundry name
+(itc,
+monotype,
+linotype,
+b&h, or
+adobe); users who do not switch X servers
+should leave the explicit foundry in the name, since it speeds up access to
+fonts.
+
+
+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.
+
+
Using Ghostscript fonts on X displays
+
+
+Font files distributed with Ghostscript can be used on X Windows displays.
+You can find full instructions in the
+documentation on fonts.
+
+
X device parameters
+
+
+In addition to the device parameters recognized by all devices, 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
+-d switch in the command line (e.g.,
+-dMaxBitmap=10000000), not resources to be defined in the
+~/.Xdefaults file.
+
+
+
AlwaysUpdate <boolean>
+
If true, the driver updates the screen after each
+primitive drawing operation; if false (the default), the
+driver uses an intelligent buffered updating algorithm.
+
+
+
+
MaxBitmap <integer>
+
If the amount of memory required to hold the pixmap for the window is no
+more than the value of MaxBitmap, 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 MaxBitmap, 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
+MaxBitmap is 0.
+
These control various aspects of the driver's buffering behavior. For
+details, please consult the source file gdevx.h.
+
+
+
+
+
SCO Unix
+
+
+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.
+
+
+
+
Switches
+
+
+Unless otherwise noted, these switches can be used on all platforms.
+
+
General switches
+
+
Input control
+
+
+
@filename
+
Causes Ghostscript to read filename 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.
+
+
+
+
--filename arg1 ...
+ -+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 back to the shell.
+
+
+
+
-@filename arg1 ...
+
Does the same thing as -- and -+, but
+expands @filename arguments.
+
+
+
+
-
+ -_
+
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 "Input from a pipe" above.
+
+
+
+
-ctokens ...
+
Interprets arguments as PostScript code up to the next argument that
+begins with "-" followed by a non-digit, or with
+"@". For example, if the file quit.ps
+contains just the word "quit", then
+-c quit on the command line is equivalent to
+quit.ps there. Each argument must be exactly one token, as
+defined by the token operator.
+
+
+
+
-f
+
Interprets following non-switch arguments as file names to be executed
+using the normal run command. Since this is the default
+behavior, -f is useful only for terminating the list of
+tokens for the -c switch.
+
+
+
+
-ffilename
+
Execute the given file, even if its name begins with a
+"-" or "@".
+
+
+
File searching
+
+
+Note that by "library files" here we mean all the files identified using
+the search rule under "How Ghostscript finds
+files" above: Ghostscript's own initialization files, fonts, and files
+named on the command line.
+
+
+
-Idirectories
+
Adds the designated list of directories at the head of the search path
+for library files.
+
+
+
+
-P
+
Makes Ghostscript look first in the current directory for library
+files. This is currently the default.
+
+
+
+
-P-
+
Makes Ghostscript not look first in the current
+directory for library files (unless, of course, the first explicitly
+supplied directory is ".").
+
+
+
Setting parameters
+
+
+
-Dname
+ -dname
+
Define a name in systemdict with value=true.
+
+
+
+
-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. If the token is a non-literal name, it
+must be true, false, or null.
+
+
+
+
-Sname=string
+ -sname=string
+
Define a name in systemdict with a given string as value. This is
+different from -d. For example, -dXYZ=35
+on the command line is equivalent to the program fragment
+
+
+/XYZ 35 def
+
+
+
+whereas -sXYZ=35 is equivalent to
+
+
+/XYZ (35) def
+
+
+
+
+
-uname
+
Un-define a name, cancelling -d or -s.
+
+
+
+Note that the initialization file gs_init.ps makes
+systemdict read-only, so the values of names defined with
+-D, -d, -S, and
+-s cannot be changed -- although, of course, they can be
+superseded by definitions in userdict or other dictionaries.
+However, device parameters set this way (PageSize,
+Margins, etc.) are not read-only, and can
+be changed by code in PostScript files.
+
+
+
-gnumber1xnumber2
+
Equivalent to -dDEVICEWIDTH=number1 and
+-dDEVICEHEIGHT=number2, 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 -dFIXEDMEDIA below.
+
Equivalent to -dDEVICEXRESOLUTION=number1 and
+-dDEVICEYRESOLUTION=number2, 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.
+
+
+
Suppress messages
+
+
+
-q
+
Quiet startup: suppress normal startup messages, and also do the
+equivalent of -dQUIET.
+
+
+
Parameter switches (-d and -s)
+
+
+As noted above, -d and -s define initial
+values for PostScript names. Some of these names are parameters that
+control the interpreter or the graphics engine. You can also use
+-d or -s to define a value for any device
+parameter of the initial device (the one defined with
+-sDEVICE=, or the default device if this switch is not
+used). For example, since the ppmraw device has a numeric
+GrayValues parameter that controls the number of bits per
+component, -sDEVICE=ppmraw -dGrayValues=16 will make this
+the default device and set the number of bits per component to 4 (log2(16)).
+
+
On high-resolution devices (at least 150 dpi resolution, or
+-dDITHERPPI specified), -dCOLORSCREEN
+forces the use of separate halftone screens with different angles for CMYK
+or RGB if halftones are needed (this produces the best-quality output);
+-dCOLORSCREEN=0 uses separate screens with the same
+frequency and angle; -dCOLORSCREEN=false forces the use of
+a single binary screen. The default if COLORSCREEN 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.
+
+
+
+
-dDITHERPPI=lpi
+
Forces all devices to be considered high-resolution, and forces use of
+a halftone screen or screens with lpi lines per inch, disregarding
+the actual device resolution. Reasonable values for lpi are
+N/5 to N/20, where N is the
+resolution in dots per inch.
+
+
+
+
-dDOINTERPOLATE
+
Turns on image interpolation for all images, improving image quality for
+scaled images at the expense of speed. Note that
+-dNOINTERPOLATE overrides -dDOINTERPOLATE if
+both are specified.
+
+
+
+
-dNOCIE
+
Substitutes DeviceGray and DeviceRGB
+for CIEBasedA and CIEBasedABC color spaces respectively. Useful only on
+very slow systems where color accuracy is less important.
+
+
+
+
-dNOINTERPOLATE
+
Turns off image interpolation, improving performance on interpolated
+images at the expense of image quality. -dNOINTERPOLATE
+overrides -dDOINTERPOLATE.
+
+
+
Page parameters
+
+
+
-dFIXEDMEDIA
+
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 -g
+automatically sets -dFIXEDMEDIA, but
+-sPAPERSIZE= does not.
+
+
+
+
-dFIXEDRESOLUTION
+
Causes the media resolution to be fixed similarly. -r
+automatically sets -dFIXEDRESOLUTION.
+
+
+
+
-dORIENT1=true
+ -dORIENT1=false
+
Defines the meaning of the 0 and 1 orientation values for the
+setpage[params] compatibility operators. The default value of
+ORIENT1 is true (set in gs_init.ps), 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.
+-dORIENT1=false 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.
+
+
+
+
-dDEVICEWIDTHPOINTS=w
+ -dDEVICEHEIGHTPOINTS=h
+
Sets the initial page width to w or initial page height to
+h respectively, specified in 1/72" units.
+
+
+
Font-related parameters
+
+
+
-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 memory at the expense of slower rendering.
+DISKFONTS is effective only if the diskfont feature was
+built into the executable; otherwise it is ignored.
+
+
+
+
-dLOCALFONTS
+
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.
+
+
+
+
-dNOCCFONTS
+
Suppresses the use of fonts precompiled into the Ghostscript executable.
+See "Precompiling fonts" in the
+documentation on fonts for details. This is probably useful only for
+debugging.
+
+
+
+
-dNOFONTMAP
+
Suppresses the normal loading of the Fontmap file. This may be useful
+in environments without a file system.
+
+
+
+
-dNOFONTPATH
+
Suppresses consultation of GS_FONTPATH. This may be
+useful for debugging.
+
+
+
+
-dNOPLATFONTS
+
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.
+
+
+
+
-sFONTMAP=filename1;filename2;...
+
Specifies alternate name or names for the Fontmap file. Note that the
+names are separated by ":" on Unix systems, by
+";" on DOS or MS Windows systems, and by
+"," on VMS systems, just as for search paths.
+
+
+
+
-sFONTPATH=dir1;dir2;...
+
Specifies a list of directories that will be scanned when looking for
+fonts not found on the search path, overriding the environment variable
+GS_FONTPATH.
+
+
+
+
-sSUBSTFONT=fontname
+
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 findfont is the actual font
+named "fontname", not a copy of the font with the
+FontName changed to the requested one.
+
+
+
Interaction-related parameters
+
+
+
-dBATCH
+
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.
+
+
+
+
-dNOPAGEPROMPT
+
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.
+
+
+
+
-dNOPAUSE
+
Disables the prompt and pause at the end of each page. Normally one
+should use this (along with -dBATCH) when producing output
+on a printer or to a file; it also may be desirable for applications where
+another program is "driving" Ghostscript.
+
+
+
+
-dNOPROMPT
+
Disables the prompt printed by Ghostscript when it expects interactive
+input, as well as the end-of-page prompt (-dNOPAGEPROMPT);
+also disables the implicit flushpage 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
+currentfile.
+
+
+
+
-dQUIET
+
Suppresses routine information comments on standard output. This is
+currently necessary when redirecting device output to standard output.
+
+
+
+
-dSHORTERRORS
+
Makes certain error and information messages more Adobe-compatible.
+
+
+
+
-sstdout=filename
+
Redirect PostScript %stdout to a file or
+stderr, to avoid it being mixed with device stdout.
+To redirect stdout to stderr use -sstdout=%stderr.
+To cancel redirection of stdout use -sstdout=%stdout
+or -sstdout=-.
+
+
+
+
-dTTYPAUSE
+
Causes Ghostscript to read a character from /dev/tty,
+rather than standard input, at the end of each page. This may be useful if
+input is coming from a pipe. Note that -dTTYPAUSE
+overrides -dNOPAUSE.
+
+
+
Device and output selection parameters
+
+
+
-dNODISPLAY
+
Initializes Ghostscript with a null device (a device that discards the
+output image) rather than the default device or the device selected with
+-sDEVICE=. 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.
+
Selects an alternate output file (or pipe) for the initial output
+device, as described above.
+
+
+
Other parameters
+
+
+
-dDELAYBIND
+
Causes bind to remember all its invocations, but not
+actually execute them until the .bindnow procedure is
+called. Useful only for certain specialized packages like
+pstotext that redefine operators.
+
+
+
+
-dDOPDFMARKS
+
Causes pdfmark to be called for bookmarks,
+annotations, links and cropbox when processing PDF files.
+Normally, pdfmark is only called for these types
+for PostScript files or when the output device requests it
+(e.g. pdfwrite device).
+
+
+
+
-dNOBIND
+
Disables the bind operator. Useful only for debugging.
+
+
+
+
-dNOCACHE
+
Disables character caching. Useful only for debugging.
+
+
+
+
-dNOGC
+
Suppresses the initial automatic enabling of the garbage collector in
+Level 2 systems. (The vmreclaim operator is not disabled.)
+Useful only for debugging.
+
+
+
+
-dNOSAFER (equivalent to -dDELAYSAFER).
+
This flag disables SAFER mode until the .setsafe
+procedure is run. This is intended for clients or scripts that cannot
+operate in SAFER mode. If Ghostscript is started with -dNOSAFER
+or -dDELAYSAFER, PostScript programs are allowed to read, write,
+rename or delete any files in the system that are not protected by operating
+system permissions.
+
This mode should be used with caution, and .setsafe should be
+run prior to running any PostScript file with unknown contents.
+
+
+
+
+
-dSAFER
+
Disables the deletefile and renamefile
+operators, and the ability to open piped commands (%pipe%cmd)
+at all. Only %stdout and %stderr can be opened
+for writing.
+
+This mode also sets the .LockSafetyParams
+parameter of the default device, or the device specified with the -sDEVICE=
+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 -sOutputFile=... on the command line is unrestricted.
+
+SAFER mode also prevents changing the /GenericResourceDir,
+/FontResourceDir and either the /SystemParamsPassword or the /StartJobPassword.
+
+Note: 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 -dNOSAFER
+command line option.
+
+When running -dNOSAFER it is possible to perform a save,
+followed by .setsafe, execute a file or procedure in SAFER mode,
+then use restore to return to NOSAFER mode. In order to prevent
+the save object from being restored by the foreign file or procedure, the
+.runandhide operator should
+be used to hide the save object from the restricted procedure.
+
+
+
+
-dPARANOIDSAFER
+
Disables reading of files other than %stdin, 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.
+
+-dPARANOIDSAFER implies -dSAFER so if
+-dPARANOIDSAFER is given on the command line,
+-dSAFER is optional.
+
+
+
+
-dSTRICT
+
Disables as many Ghostscript extensions as feasible, to be more helpful
+in debugging applications that produce output for Adobe and other RIPs.
+
+
+
+
-dWRITESYSTEMDICT
+
Leaves systemdict writable. This is necessary when
+running special utility programs such as font2c and
+pcharstr, which must bypass normal PostScript access
+protection.
+
+
+
+
+
Improving performance
+
+
+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.
+
+
+
+
+If you are using X Windows, setting the -dMaxBitmap=
+parameter described above may
+dramatically improve performance on files that have a lot of bitmap images.
+
+
+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: -c 3000000 setvmthreshold -f.
+
+
+
+
+
+
Debugging
+
+
+The information here describing the debugging switches is probably
+interesting only to developers. The -Z switch applies only
+if the interpreter was built for a debugging
+configuration. 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.
+
+
+
Switches used in debugging
+
Switch
+
+
Equivalent
+
+
+
+
-A
+
+
-Z@
+
+
Fill empty storage with a distinctive bit pattern for debugging
+
+
-A-
+
+
-Z-@
+
+
Turn off -A
+
-Bsize
+
+
+
+
Run all subsequent files named on the command line (except for
+ -F) through the run_string interface, using a
+ buffer of size bytes
+
-B-
+
+
+
+
Turn off -B: run subsequent files (except for
+ -F) directly in the normal way
+
-E
+
+
-Z#
+
+
Turn on tracing of error returns from operators
+
-E-
+
+
-Z-#
+
+
Turn off -E
+
-Ffile
+
+
+
+
Execute the file with -B1 temporarily in effect
+
-Kn
+
+
+
+
Limit the total amount of memory that the interpreter can have
+ allocated at any one time to nK bytes.
+ n is a positive decimal integer.
+
-Mn
+
+
+
+
Force the interpreter's allocator to acquire additional memory
+ in units of nK bytes, rather than the default
+ (currently 20K on DOS systems, 50K on Unix). n
+ is a positive decimal integer, on DOS systems no greater than
+ 63.
+
-Nn
+
+
+
+
Allocate space for nK names, rather than the
+ default (normally 64K). n may be greater than
+ 64 only if EXTEND_NAMES was defined when the
+ interpreter was compiled .
+
-Zxxx -Z-xxx
+
+
+
+
Turn debugging printout on (off). Each of the xxx
+ characters selects an option. Case is significant: "a" and
+ "A" have different meanings.
+
+
+
0
garbage collector, minimal detail
+
1
type 1 and type 42 font interpreter
+
2
curve subdivider/rasterizer
+
3
curve subdivider/rasterizer, detail
+
4
garbage collector (strings)
+
5
garbage collector (strings, detail)
+
6
garbage collector (chunks, roots)
+
7
garbage collector (objects)
+
8
garbage collector (refs)
+
9
garbage collector (pointers)
+
a
allocator (large blocks only)
+
A
allocator (all calls)
+
b
bitmap image processor
+
B
bitmap images, detail
+
c
color/halftone mapper
+
d
dictionary put/undef
+
D
dictionary lookups
+
e
external (OS-related) calls
+
f
fill algorithm (summary)
+
F
fill algorithm (detail)
+
g
gsave/grestore[all]
+
h
halftone renderer
+
H
halftones, every pixel
+
i
interpreter, just names
+
I
interpreter, everything
+
j
(Japanese) composite fonts
+
k
character cache and xfonts
+
K
character cache, every access
+
l
command lists, bands
+
L
command lists, everything
+
m
makefont and font cache
+
n
name lookup (new names only)
+
o
outliner (stroke)
+
O
stroke detail
+
p
band list paths
+
P
all paths
+
q
clipping
+
r
arc renderer
+
s
streams
+
S
scanner
+
t
tiling algorithm
+
u
undo saver (for save/restore), finalization
+
U
undo saver, more detail
+
v
alpha/transparency
+
V
alpha/transparency, more detail
+
w
compression encoder/decoder
+
x
transformations
+
y
Type 1 hints
+
Y
Type 1 hints, every access
+
z
trapezoid fill
+
#
operator error returns
+
%
externally processed comments
+
*
image and RasterOp parameters
+
:
command list and allocator/time summary
+
~
math functions and Functions
+
'
contexts, create/destroy
+
"
contexts, every operation
+
^
reference counting
+
_
high-level output
+
|
(reserved for experimental code)
+
+
+
+The following switch affects what is printed, but does not select specific
+items for printing:
+
+
+
/
include file name and line number on all trace output
+
+
+
+These switches select debugging options other than what should be printed:
+
+
+
$
set unused parts of object references to
+identifiable garbage values
+
+
use minimum-size stack blocks
+
,
don't use path-based banding
+
`
don't use high-level banded images
+
.
use small-memory table sizes even on large-memory
+machines
+
?
validate pointers before, during and after garbage
+collection, also before and after save and restore; also make other
+allocator validity checks
+
@
fill newly allocated, garbage-collected, and freed
+storage with a marker (a1, c1, and f1 respectively)
+
+
+
+
+
+
Appendix: Paper sizes known to Ghostscript
+
+
+The paper sizes known to Ghostscript are defined at the beginning of the
+initialization file gs_statd.ps; see the comments there for
+more details about the definitions. The table here lists them by name and
+size. gs_statd.ps 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
+
+
+*Note: Initially the B paper sizes are the ISO sizes, e.g.,
+b0 is the same as isob0. Running the file
+lib/jispaper.ps makes the B paper sizes be the JIS sizes,
+e.g., b0 becomes the same as jisb0.
+
+
+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:
+
+
+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/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 @@
+
+
+
+Ghostscript's external font and text interface
+
+
+
+
+
+
+
+
+
+
+
+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.
+
+
+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.
+
+
+Please note that from this point, this file is likely to be useful only
+to a small number of Ghostscript porters and implementors.
+
+
+
+
Types
+
+
+
Type
+
+
Declared / defined in
+
+
Represents
+
+
gs_char
+
+
gsccode.h
+
+
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.
+
gs_glyph
+
+
gsccode.h
+
+
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
+ gs_proc_glyph_name_t procedure to
+ convert it to a string name.
+
gs_proc_glyph_name_t
+
+
gsccode.h
+
+
A procedure that maps a gs_glyph to
+ its string name; see the char_xglyph procedure.
+
gx_xglyph
+
+
gsxfont.h
+
+
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 render_char will
+ turn into a 1-character string and give to the platform's
+ "display string" operation.
+
gx_xfont_procs
+
+
gsxfont.h, gxxfont.h
+
+
The xfont analogue of
+ gx_device_procs, the type of the
+ procedure record that defines an xfont implementation.
+
gx_xfont
+
+
gsxfont.h, gxxfont.h
+
+
The gxfont analogue of gx_device,
+ the type of the basic structure for an xfont.
+
(encoding_index)
+
+
+
+
Not really a type, although it probably should be:
+ an int used to indicate the
+ Encoding used by a font. Defined values are
+
+
0
StandardEncoding
+
1
ISOLatin1Encoding
+
2
SymbolEncoding
+
3
DingbatsEncoding
+
-1
Other encoding
+
+
+
+
+
+
Implementation
+procedures
+
+
+All the procedures that return int results return 0 on
+success, or an appropriate negative error code for error conditions; these
+error codes are defined in gserrors.h. The relevant ones
+are the same as for drivers, and as with drivers,
+if an implementation procedure returns an error, it should use the
+return_error macro -- defined in gx.h,
+which is automatically included by gdevprn.h but not by
+gserrors.h -- rather than a simple return
+statement, for instance
+
+
Look up a font name, UniqueID, and matrix, and return
+an xfont, or NULL if no suitable xfont exists. Use
+mprocs to allocate the xfont and any subsidiary data
+structures. The matrix is the FontMatrix concatenated with
+the CTM, so (roughly speaking) the font size in pixels is
+pmat -> yy × 1000 for a normal
+Type 1 font.
+
+
+Note that this is the only implementation procedure that does not take an
+xfont * as its first argument. In fact, callers of
+lookup_font must use the get_xfont_device
+driver procedure to get the correct device to pass as the first argument to
+lookup_font.
+
Convert a character name to an xglyph code. In the case of
+glyphshow, chr may be
+gs_no_char; for an ordinary show operation,
+if the character code is invalid, glyph may be
+gs_no_glyph.
+
Get the metrics for a character. If the metrics are unavailable,
+return 1.
+
+
+
render_char
+
+
+
int (*render_char)(P7(gx_xfont *xf, gx_xglyph xg,
+gx_device *target, int x, int y, gx_color_index color,
+int required))
+
Render a character. (x,y) 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
+copy_mono operation. If required 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 required=true. If the
+operation cannot be done, return 1.
+
+
+
release
+
+
+
int (*release)(P2(gx_xfont *xf,
+const gs_memory_procs *mprocs))
+
Release any external resources associated with an xfont. If
+mprocs is not NULL, also free any storage
+allocated by lookup_font (including the xfont itself).
+
+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.
+
+
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 "^]*>" nil t)
+ (beginning-of-line) (setq BOH (point))
+ (re-search-forward "\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
" t t)
+
+;; Got the first one, now handle the rest.
+
+ (while (re-search-forward "^]*>" nil t)
+ (setq This (string-to-number
+ (buffer-substring (match-beginning 1) (match-end 1))))
+ (setq Hold This)
+ (replace-match "
" 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 "
\n") (setq This (1- This)))
+ (while (< This Previous) (insert "
\n") (setq This (1+ This)))
+ (setq Previous Hold)
+ )
+
+;; Done with the loop. Clean up by inserting at the end any needed
+;; to get back to the top level.
+
+ (goto-char (point-max))
+ (while (> Previous First) (insert "\n") (setq Previous (1- Previous)))
+
+;; Finally add the trailing whitespace and leading whitespace and header line.
+
+ (insert "\n\n")
+ (goto-char (point-min))
+ (insert "\n
Table of contents
\n\n
\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, )."
+
+(interactive)
+
+(insert "")
+(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
+ ""))
+ (goto-char (point-max)) (insert ""))
+)
+
+;;============================================================
+
+(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 "
" 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 "" g~url "")
+ )
+)
+
+;;============================================================
+
+(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
\n"
+ "
XXXXXXXXXX\n"
+ "
\n"
+ "\t
\n"
+ "\t
\n"
+ "\t
\n"
+ "
\t
\n"
+ ))
+ (goto-char (point-max))
+ (insert "
\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 "&" t t))
+
+(goto-char BEGIN)
+(while (search-forward "<" nil t) (replace-match "<" t t))
+
+(goto-char BEGIN)
+(while (search-forward ">" nil t) (replace-match ">" t t))
+
+(goto-char BEGIN)
+)
+
+;;============================================================
+
+(defun gs-wrap-textfile ()
+
+"Prepare a text file for inclusion between
and
, 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\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 "
\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)
+ (progn
+ (setq Original (buffer-substring (match-beginning 1) (match-end 1)))
+ (replace-match g~thisfile t t nil 1)
+ )
+ (progn
+ (search-forward "" nil t) (end-of-line)
+ (insert (concat "\n"))
+ (setq Original "(UNSET by gs-structure)")
+ )
+ )
+
+(end-of-line)
+(insert (concat "\n"))
+
+;; Place the visible header marker immediately after .
+
+(re-search-forward "]*>" nil t)
+ (end-of-line) (forward-char 1)
+ (insert (concat g~header-begin "\n\n"))
+
+;; Place the headline marker before the first
block.
+
+(search-forward "
. 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 "
" nil t) (beginning-of-line)
+ (insert (concat g~hint-end "\n\n"))
+
+;; The visible header ends with (and includes) the first , and the
+;; contents begin immediately thereafter.
+
+(search-forward "\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 and the trailer begins
+;; immediately thereafter.
+
+(goto-char (point-max)) (search-backward "" 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 .
+
+(goto-char (point-max)) (search-backward "" 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 ""
+ (- (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 @@
+
+
+
+Ghostscript
+
+
+
+
+
+