Detailed History of Ghostscript versions 8.xx

Table of contents

This document is a record of changes in Ghostscript releases numbered 8.xx. For earlier versions, see the the history documents:

History of Ghostscript versions 7.n
History of Ghostscript versions 6.n
History of Ghostscript versions 5.n
History of Ghostscript versions 4.n
History of Ghostscript versions 3.n
History of Ghostscript versions 2.n
History of Ghostscript versions 1.n

For other information, see the Ghostscript overview.


Version 8.51 (2005-04-18)

This is the second stable release in the 8.5x series of Ghostscript. It contains numerous bug fixes and improvements, particularly in the area of PDF 1.6 handling.

Also new in this release is an experimental version of the new level 2 Postscript output device, which may be of interest to developers.

The following bug numbers were open at the time of this release:

405501, 430175, 465936, 493348, 530011, 535932, 578865, 592160, 610478, 614298, 626295, 674418, 685335, 686747, 686842, 686853, 686865, 686919, 686996, 687011, 687039, 687063, 687084, 687095, 687108, 687125, 687146, 687168, 687174, 687193, 687196, 687219, 687221, 687229, 687231, 687243, 687257, 687259, 687271, 687280, 687295, 687297, 687298, 687303, 687314, 687316, 687327, 687342, 687345, 687346, 687360, 687373, 687375, 687397, 687399, 687414, 687435, 687445, 687460, 687475, 687480, 687484, 687485, 687492, 687498, 687514, 687518, 687520, 687523, 687525, 687529, 687531, 687535, 687536, 687545, 687558, 687559, 687560, 687561, 687583, 687593, 687595, 687608, 687611, 687621, 687622, 687628, 687630, 687633, 687642, 687643, 687644, 687650, 687654, 687657, 687663, 687666, 687669, 687674, 687676, 687677, 687678, 687679, 687680, 687682, 687686, 687694, 687695, 687697, 687702, 687707, 687712, 687715, 687721, 687727, 687728, 687729, 687731, 687775, 687780, 687782, 687783, 687793, 687794, 687795, 687796, 687800, 687801, 687805, 687806, 687808, 687809, 687814, 687822, 687825, 687826, 687837, 687844, 687848, 687850, 687853, 687863, 687866, 687868, 687870, 687871, 687875, 687881, 687883, 687887, 687895, 687896, 687901, 687903, 687904, 687907, 687914, 687915, 687918, 687919, 687922, 687931, 687938, 687946, 687948, 687950, 687957, 687960, 687970, 687973, 687974, 687975, 687977, 687978, 687980, 687981, 687983, 687984, 687986, 687989, 687992, 687993, 687994, 687995, 687996, 688000, 688003, 688005, 688006, 688007, 688009, 688010, 688013, 688017, 688020, 688022, 688023, 688024, 688026, 688028, 688032, 688035, 688036, 688037, 688038, 688039, 688040.

Incompatible changes

There are no known incompatible changes at this point.

Changelog

2005-04-18 18:26 Ralph Giles

Update final release date.

[doc/API.htm 1.50, doc/Bug-form.htm 1.46, doc/Bug-info.htm 1.46, doc/C-style.htm 1.52, doc/Commprod.htm 1.38, doc/Copying.htm 1.36, doc/DLL.htm 1.40, doc/Deprecated.htm 1.17, doc/Details8.htm 1.19, doc/Develop.htm 1.146, doc/Devices.htm 1.87, doc/Drivers.htm 1.55, doc/Fonts.htm 1.48, doc/Helpers.htm 1.41, doc/History1.htm 1.36, doc/History2.htm 1.36, doc/History3.htm 1.36, doc/History4.htm 1.36, doc/History5.htm 1.38, doc/History6.htm 1.53, doc/History7.htm 1.41, doc/History8.htm 1.24, doc/Htmstyle.htm 1.41, doc/Install.htm 1.52, doc/Issues.htm 1.49, doc/Language.htm 1.92, doc/Lib.htm 1.40, doc/Maintain.htm 1.47, doc/Make.htm 1.87, doc/News.htm 1.163, doc/Projects.htm 1.64, doc/Ps-style.htm 1.34, doc/Ps2epsi.htm 1.39, doc/Ps2pdf.htm 1.79, doc/Psfiles.htm 1.62, doc/Readme.htm 1.67, doc/Release.htm 1.92, doc/Source.htm 1.36, doc/Testing.htm 1.34, doc/Unix-lpr.htm 1.36, doc/Use.htm 1.132, doc/Xfonts.htm 1.36, doc/gs-vms.hlp 1.34, man/dvipdf.1 1.34, man/font2c.1 1.34, man/gs.1 1.35, man/gslp.1 1.34, man/gsnd.1 1.34, man/pdf2dsc.1 1.33, man/pdf2ps.1 1.35, man/pdfopt.1 1.33, man/pf2afm.1 1.34, man/pfbtopfa.1 1.35, man/printafm.1 1.34, man/ps2ascii.1 1.33, man/ps2epsi.1 1.32, man/ps2pdf.1 1.39, man/ps2pdfwr.1 1.38, man/ps2ps.1 1.41, man/wftopfa.1 1.34, src/version.mak 1.82]

2005-04-15 06:13 Igor Melichev

Psfiles.htm : Documanting a recently addad lib file.

DETAILS :

Fixes a Apr 11 05:15:10 PDT 2005 regression (which actually appeared some time ago).

EXPECTED DIFFERENCES :

None.

[doc/Psfiles.htm 1.61]

2005-04-14 19:10 Raph Levien

Fix: use identity matrix (rather than scaling by font matrix) to prepare
parameters for CDevProc procedure in pdfwrite code path. Fixes bug
#688033.

DETAILS

The problem in the 688033 test file was that the CDevProc procedure
for the font was getting called with values that were already scaled
down by .001, even though the PLRM3 says "all of the numeric values
are expressed in the glyph coordinate system of the font." (5.9.2,
p. 350)

My proposed fix is to pass in the identity matrix, instead of the font
matrix, to the gs_default_glyph_info procedure. This patch was tested
with both the 688033 test file and the test file from 687681, which was
the bug that motivated the changes to pdfwrite CDevProc handling. The
patched code also passed a full local regression.

[src/zchar1.c 1.44]

2005-04-13 23:13 Russell Lang

Add additional files to the Windows source distribution.

[doc/Release.htm 1.91]

2005-04-13 20:04 Ray Johnston

Fix a SEGV when ImageType 4 has MaskColor values outside the range.
Detected with the PDF file from bug 687611 for customer 870.

DETAILS:

The rangecheck error was being thrown with the gx_image_enum allocated
but with many pointers not initialized so the SEGV happened when the
garbage collector tried to enumerate the image_enum.

The fix is simple and low-risk -- free the penum before returning the
rangecheck error.

[src/gximage4.c 1.6]

2005-04-12 22:53 Ralph Giles

Update changelogs for the 8.51 release.

[doc/Changes.htm 1.57, doc/Details.htm 1.16, doc/Details8.htm 1.18, doc/History8.htm 1.23, doc/News.htm 1.162]

2005-04-12 22:21 Ralph Giles

Remove a spurious blockquote.

[doc/News.htm 1.161]

2005-04-12 22:10 Ralph Giles

Propagate release date changes to the other documentation files.

[doc/API.htm 1.49, doc/Bug-form.htm 1.45, doc/Bug-info.htm 1.45, doc/C-style.htm 1.51, doc/Commprod.htm 1.37, doc/Copying.htm 1.35, doc/DLL.htm 1.39, doc/Deprecated.htm 1.16, doc/Details8.htm 1.17, doc/Develop.htm 1.145, doc/Devices.htm 1.86, doc/Drivers.htm 1.54, doc/Fonts.htm 1.47, doc/Helpers.htm 1.40, doc/History1.htm 1.35, doc/History2.htm 1.35, doc/History3.htm 1.35, doc/History4.htm 1.35, doc/History5.htm 1.37, doc/History6.htm 1.52, doc/History7.htm 1.40, doc/History8.htm 1.22, doc/Htmstyle.htm 1.40, doc/Install.htm 1.51, doc/Issues.htm 1.48, doc/Language.htm 1.91, doc/Lib.htm 1.39, doc/Maintain.htm 1.46, doc/Make.htm 1.86, doc/Projects.htm 1.63, doc/Ps-style.htm 1.33, doc/Ps2epsi.htm 1.38, doc/Ps2pdf.htm 1.78, doc/Psfiles.htm 1.60, doc/Readme.htm 1.66, doc/Release.htm 1.90, doc/Source.htm 1.35, doc/Testing.htm 1.33, doc/Unix-lpr.htm 1.35, doc/Use.htm 1.131, doc/Xfonts.htm 1.35, doc/gs-vms.hlp 1.33, man/dvipdf.1 1.33, man/font2c.1 1.33, man/gs.1 1.34, man/gslp.1 1.33, man/gsnd.1 1.33, man/pdf2dsc.1 1.32, man/pdf2ps.1 1.34, man/pdfopt.1 1.32, man/pf2afm.1 1.33, man/pfbtopfa.1 1.34, man/printafm.1 1.33, man/ps2ascii.1 1.32, man/ps2epsi.1 1.31, man/ps2pdf.1 1.38, man/ps2pdfwr.1 1.37, man/ps2ps.1 1.40, man/wftopfa.1 1.33]

2005-04-12 22:05 Ralph Giles

Update copyright dates and release notes for 8.15.

[doc/News.htm 1.160, src/dwsetup.rc 1.14, src/gscdef.c 1.53, src/version.mak 1.81, src/winint.mak 1.26]

2005-04-12 21:20 Ray Johnston

Fix for SEGV when PreserveHalftoneInfo=true is given as a pdfwrite
option. Bug 688018.

DETAILS:

The initial problem was that the num_comp was not being looked at
when HalftoneType 5 was written and if num_comp was 3, the 4th
element of ht_ids[] was being used (UMR-wise). The solution to
this was to only write the three halftones and to use the 'Green'
halftone (arbitrarily) for Default.

After fixing the SEGV, another problem surfaced because the object
dictionary was not being terminated with the ">>".

Since I suspected that the threshold_halftone writers were also
broken I tested with 258-01.ps and found more problems. This
code was also quite broken. Since the Threshold array is the
stream data for HalftoneType 6 and 16, I changed this a lot to
emit valid PDF.

EXPECTED DIFFERENCES:

None, since we don't set PreserveHalftoneInfo.

[src/gdevpdfg.c 1.61]

2005-04-12 00:43 Russell Lang

Make the OS/2 device list almost match that of Windows, with the only
differences being IJS and the Windows or OS/2 specific devices.

[src/os2.mak 1.45]

2005-04-08 23:55 Dan Coby

Fix for 688019  /configurationerror in --setpagedevice--.  The PDF
interpreter was incorrectly determining the size of the page.

DETAILS:

The test file specifies the following media box:

/MediaBox [ 0 1080 1620 0 ]

The PDF 1.6 specification says the following about media box rectangles:

"3.8.4 Rectangles
Rectangles are used to describe locations on a page and bounding boxes for a
variety of objects, such as fonts. A rectangle is written as an array of four
numbers giving the coordinates of a pair of diagonally opposite corners.
Typically, the array takes the form
[llx lly urx ury]
specifying the lower-left x, lower-left y, upper-right x, and upper-right
coordinates of the rectangle, in that order. The other two corners of the
rectangle are then assumed to have coordinates (llx, ury) and (urx, lly).

Note: Although rectangles are conventionally specified by their lower-left and
upperright corners, it is acceptable to specify any two diagonally opposite
corners. Applications that process PDF should be prepared to normalize such
rectangles in situations where specific corners are required."

The PDF interpreter was assuming that the MediaBox and the CropBox were
in the 'typical' form.  This fix consists of creating a pair of procedures
for converting rectangles into the typical form and then using the
procedures.

[lib/pdf_main.ps 1.96]

2005-04-08 23:31 Dan Coby

Removed some extra cntl-M at the end of lines.  These caused problems with
the Borland compiler.

[src/gdevtfax.c 1.10]

2005-04-07 09:12 Igor Melichev

Fix : An MSVC8 warning.

DETAILS :

MSVC claims an implicit type case introduced by the last patch.

EXPECTED DIFFERENCES :

None.

[src/gdevdjet.c 1.13]

2005-04-07 08:44 Igor Melichev

Drivers.htm : Improving the documentation about linear color device virtual functions.

DETAILS :

Bug 688016 "Color(s) that define a gradient fill".

EXPECTED DIFFERENCES :

None.

[doc/Drivers.htm 1.53]

2005-04-06 16:45 Raph Levien

Conveys input tray selection info (/ManualFeed and /MediaPosition)
setpagedevice requests to PCL devices. Fixes bug #687899.

DETAILS

1. The behavior of MediaPosition is changed significantly. Previously,
   it was ignored (i.e. omitted altogether from setpd merging). Just
   adding it to setpd merging would not be good - if set at the PS
   level, then it would get checked for equality at the C level (by
   zmatchmedia), and fail horribly if it didn't match. In accordance
   with the PLRM3 text (it will be honored provided it can satisfy the
   normal media matching), in the new version a mismatch simply adds a
   .001 penalty to the matching score.

2. The ljet4 device now contains ManualFeed and MediaPosition fields,
   with appropriate putparams logic to set them.

3. The MediaPosition and ManualFeed strings now create an ESC & l H
   init string, according to the following logic. ManualFeed sends
   ESC & l 2 H; if ManualFeed is false (or not set), then MediaPosition
   0 sends ESC & l 5 H, and MediaPosition1 sends ESC & l 1 H. If none
   of these are set, then no extra init string is generated.

   Obviously, for this feature to be useful, there needs to be an
InputAttributes dictionary in effect, for which the PageSize of
positions 0 and 1 match the PageSize of the setpagedevice request.
[Actually, if only ManualFeed is desired, then there is no need to
fiddle with InputAttributes].

   I think these changes bring our media selection more in line with
what Adobe intended, and could be useful for embedded PS projects as
well. I believe the risk of unwanted changes is small, but considering
the delicacy of the setpagedevice logic, review and testing is
warranted.

[lib/gs_setpd.ps 1.26, src/gdevdjet.c 1.12, src/zmedia2.c 1.18]

2005-04-05 19:37 Ralph Giles

Disable non-fatal jbig2 debug messages unless JBIG2_DEBUG is defined in the
C preprocessor. Previously, all messages were reported in the general gs
debug build, which was distracting.

Also, initialize the global context pointer to NULL. This isn't necessary
in the standard call order, but is extra insurance against an improper free.

[src/sjbig2.c 1.6]

2005-04-05 16:17 Igor Melichev

ps2write : Fix problems with encodings.

DETAILS :

1. Since we don't want to include numerous encodings in the output,
   opdfread.ps needs Differences to be computed against StandardEncoding.
   gdevpdtw.c is changed to provide a compatibility.

2. Fixed a bug in opdfread.ps when invresing an encoding in which
   a glyph name appears multiple times. Debugged with comparefiles\01_001.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.62, src/gdevpdtw.c 1.42]

2005-04-05 15:44 Igor Melichev

pdfwrite : Implementing a viewer's resource memory control, part 3.

DETAILS :

Fixed a memory management problem in pdfwrite :
a reference to a freed object happened due to
font descriptor components are not explicitely released.
Debugged with ps2write comparefiles\01_001.pdf .
This patch provides a minimal change against that,
rather there are other components,
which would be useful to release explicitly.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.129, src/gdevpdfu.c 1.76, src/gdevpdtd.c 1.22, src/gdevpdtd.h 1.5, src/gdevpdtw.c 1.41]

2005-04-05 11:29 Igor Melichev

ps2write : Implementing a viewer's resource memory control, part 2.

DETAILS :

1. opdfread.ps :
Defined the new procedure CleanAllResources and called it after each page,
which defines /.ClearResources /All.
Currently it cleans all objects and all non-standard fonts.
Daemons, if they are stored in the Registry, are not cleaned.
(BTW, daemons may contain a reference to an object,
but we believe that currently unresolved daemons never appear
in Registry when ClearAllResources is being called).

2. ps2write.bat : Updated to involve the resource memory control.
See the log message of the previous patch for more information.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.61, lib/ps2write.bat 1.12]

2005-04-05 09:48 Igor Melichev

pdfwrite : Implementing a viewer's resource memory control, part 1.

DETAILS :

This patch implements a primitive viewer's resource memory control.

A new device parameter MaxViewerMemorySize specifies the number of bytes
available for storing resources in the viewer's memory.
This parameter defined almost for future extensions.

Currently we distinguish two cases only : if the parameter is greater
than 10000000 bytes, no resource control is being applied,
i.e. pdfwrite assumes that the viewer can store all resources of entire document.
Othervise pdfwrite assumes that the viewer can store resources of a single page.

In the second case pdfwrite cleans internal resource caches after each page,
so that any new resource usage will generate another resource instance
in the output PDF file.

To inform the viewer that the resources may be cleaned,
we add a new key to a page contents stream dictionary.
This is our extension to the PDF specification in order to control
the resource management in the viewer.
The new key name is /.CleanResources.
Currently we provide only the value /All. It means that resources
may be cleaned *after* ending the contents stream.

In future on necessity we can split a page contents stream into substreams
and provide a finer control by resource types with providing
more values for the key /.CleanResources.

When the viewer is informed with allowing to clean resources,
it is not obliged to do so. Further resource appearences simply replace
old ones, if they have same resource name.
Actually now this happens only with font and CID font resources.
Other resource instances may persist in the viewer's memory until
the viewer's garbager frees them when they are not
referred from resource tree dictionaries.

The resource control is mainly intended for ps2write.
An implementation of the viewer's side (in opdfread.ps) will be a separate patch.

Note that when a resource control is being applied,
the output document size may increase significantly.

Currently we don't add MaxViewerMemorySize to user's documentation,
because it depends on another undocumenmted parameter ForOPDFRead
through the ResourcesBeforeUsage flag. First we need to take a decision
whether ps2write will become a new Ghostscript device or it stays a tool
represented with a script. The latter gives more flexibility to users
about composing the header procsets of the generated Postscript document.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.109, src/gdevpdfp.c 1.48, src/gdevpdfu.c 1.75, src/gdevpdfx.h 1.115, src/gdevpdtf.c 1.44, src/gdevpdtf.h 1.28, src/gdevpdti.c 1.43, src/gdevpdtt.c 1.102, src/gdevpdtw.c 1.40]

2005-04-04 23:00 Igor Melichev

Fix : LZWEncode filtyer template didn't provide a set_defaults method.

DETAILS :

A problem happens when converting comparefiles\PT.ps with ps2write :
an encoded stream could not decode. The reason is that pdf_flate_binary
did not set defaults to LZWE template.

1. Provided a set_defaults method (fixes pdf_flate_binary).

2. Used it instead an old hack in gdevpsdi.c (a minor improvement).

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.41, src/slzwe.c 1.4]

2005-04-04 20:33 Igor Melichev

pdfwrite : Improve the font handling options.

DETAILS :

1. Made the ps2write code be permanent with removing the configuration switch PS2WRITE.

2. Renamed OrderResources into ForOPDFRead for a better reflection of its semantics.

3. Defined new flags for a better code readability :

    ResourcesBeforeUsage
    HavePDFWidths
    HaveStrokeColor
    HaveCFF

They are set when ForOPDFRead is true and used to control particular features.

EXPECTED DIFFERENCES :

None.

[lib/ps2write.bat 1.11]

2005-04-04 20:28 Igor Melichev

pdfwrite : Improve the font handling options.

DETAILS :

1. Made the ps2write code be permanent with removing the configuration switch PS2WRITE.

2. Renamed OrderResources into ForOPDFRead for a better reflection of its semantics.

3. Defined new flags for a better code readability :

    ResourcesBeforeUsage
    HavePDFWidths
    HaveStrokeColor
    HaveCFF

They are set when ForOPDFRead is true and used to control particular features.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.108, src/gdevpdfb.c 1.28, src/gdevpdfd.c 1.59, src/gdevpdfg.h 1.41, src/gdevpdfj.c 1.43, src/gdevpdfp.c 1.47, src/gdevpdfu.c 1.74, src/gdevpdfx.h 1.114, src/gdevpdtb.c 1.35, src/gdevpdtt.c 1.101, src/gdevpdtw.c 1.39, src/gdevpsdf.h 1.32, src/gsshade.c 1.15, src/gx.h 1.44, src/gxdevcli.h 1.37, src/gxshade6.c 1.93]

2005-04-04 16:20 Igor Melichev

ps2write : Improve the font handling options.

DETAILS :

1. The option HaveCIDSystem is propagated from ps2write to pdfwrite.
   It is still not implemented.

2. The option HaveTrueTypes is added for controlling the availability of TrueTypes.

3. The option PSVersion is removed due to low usefullness after (2).

EXPECTED DIFFERENCES :

None.

[doc/Ps2pdf.htm 1.77, src/gdevpdfp.c 1.46, src/gdevpdtt.c 1.100, src/gdevpsdf.h 1.31]

2005-04-04 14:38 Igor Melichev

pdfwrite : When generating a PDF 1.2, convert PSLL3 images and shadings into PSLL2 images

DETAILS :

This change propagates recent code from ps2write to pdfwrite.
The old code converts PSLL3 images and shadings into lots of rectangles.
The new code does into an imagemask with a pattern color
(when PatternImagemask == true),
or into a clipped image (when PatternImagemask == false, default).
Note that the latter misses the mask interpolation.

EXPECTED DIFFERENCES :

None.

[doc/Ps2pdf.htm 1.76, src/gdevpdfd.c 1.58, src/gdevpdfi.c 1.70, src/gdevpdfj.c 1.42]

2005-04-04 11:53 Igor Melichev

ps2write : Convert shadings into a clipped image (continued 7).

DETAILS :

1. Check for empty bbox before pdf_setup_masked_image_converter,
   because memory devices with empty bbox fail.

2. Create a copy of a path_intersection before scaling it,
   because it may be shared.

3. Fixed the client name gdev_pdf_fill_path when calling some path functions.

Debugged with 478-01.ps .

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.57]

2005-04-04 10:42 Igor Melichev

pdfwrite : Don't use Indexed with a spacial base color space generating a PDF 1.2.

DETAILS :

1. Indexed over a special base color space is a PDF 1.3 feature.

2. Improving the last patch comparing CompatibilityLevel with 1.3 for making
   such checks more uniform through code.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfc.c 1.52, src/gdevpdfu.c 1.73]

2005-04-04 10:14 Igor Melichev

pdfwrite : Don't use FlateDecode generating a PDF 1.2.

DETAILS :

FlateDecode is a PDF 1.3 feature.
The change is important for ps2write.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.72]

2005-04-04 10:11 Igor Melichev

ps2write : Improving a debug printing.

DETAILS :

1. The errorhandler should print -mark- to simplify the analysis.

2. Removing an unintended 'pstack' that caused HP LaserJet 1320 to discontinue the interpretation.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.60]

2005-04-04 09:32 Igor Melichev

ps2write : Convert shadings into a clipped image (continued 6).

DETAILS :

Fixed a unitialized variable.
Debugged with 468-01-fixed.ps .

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.56]

2005-04-04 08:53 Igor Melichev

ps2write : Dropping the code !PDFW_DELAYED_STREAMS.

DETAILS :

PDFW_DELAYED_STREAMS now becomes a permanent feature.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.107, src/gdevpdfu.c 1.71, src/gdevpdtb.c 1.34, src/gdevpdtd.c 1.21, src/gdevpdtf.c 1.43, src/gdevpdti.c 1.42, src/gdevpdtw.c 1.38, src/gdevpdfx.h 1.113, src/gdevpdtb.h 1.11, src/gdevpdtw.h 1.6]

2005-04-03 18:33 Igor Melichev

ps2write : Convert shadings into a clipped image (continued 5).

DETAILS :

1. Fixed the problem with
<>,
which was mentioned in the last log message.

The shading and masked image conversion now looks complete.

2. Fixed a minor problem with 'const'.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.55]

2005-04-01 17:42 stefan

Fixed null pointer access in pdfwrite.

pdf_put_uncolored_pattern() sets pres to null when it selects a solid color.
It's clients must check for this null as it indicates a
done writing the pattern state.

[src/gdevpdfg.c 1.60]

2005-03-31 20:46 Igor Melichev

ps2write : Convert shadings into a clipped image (continued 4).

DETAILS :

Implement a downsampling when converting a shading into bitmap.

1. A new device parameter MaxShadingBitmapSize controls the downsampling.
   Shadings, which give a (uncompressed) bitmap over the specified size,
   will be scaled down.

2. The scaling algorithm goes to gdevpdfd.c .
   It appears pretty tricky because we need to setup a device with a smaller
   resolution than the target device. Due to that we need to scale paths and colors,
   which are represented in the device space. The function scale_path works for it.

3. The scaling creates a local copy of a device color (which handles the shading)
   and scales the color. Since we can't access further spatial transformations of the color,
   we apply some unusual operation : multiply matrices in the reverse order
   than usual 'concat' does. This makes some useful equations to be soluble
   due to the offset is being scaled as well.

4. A code portion was copied from gx_default_fill_path
   (see comment in code).
   We're unhappy about uncomfortable code structurization.

5. path_scale is implemented with floating point for a debug purpose,
   but in production we use only integers being a power of 2.

6. There is a problem with
   <>
   The problem happens when dividing the scaled bitmap in smaller ones
   due to clip path overflow. This mode to be debugged separately.
   For now set either smaller bitmap size of bigger clip path size.
   Default settings work fine for most cases.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.128, src/gdevpdf.c 1.106, src/gdevpdfd.c 1.54, src/gdevpdfp.c 1.45, src/gdevpdfx.h 1.112, src/spprint.c 1.7]

2005-03-31 06:12 Dan Coby

Fix for 688011 Segment fault with -r150 and the mswindll device.

DETAILS:

The routine gx_image_cached_char creates a mono bit memory device with
the memory structure pointer set to 0.  It then passes this device to
win_render_char which seg faults when it tries to allocate memory for
a bit map.

The fix consists of using the parent device's memory structure for the
mono bit memory device.

[src/gxccache.c 1.33]

2005-03-31 02:34 Jack Moffitt

Fix bug where raster lookups failed on new files causing the regression
tool to stop.  Also, skip processing for files without previous rasters
to compare.

[toolbin/tests/gscheck_pdfwrite.py 1.25, toolbin/tests/gscheck_raster.py 1.15]

2005-03-30 16:33 Raph Levien

Add a discussion of the libjpeg6b component id issue to Issues.htm,
pointing people to a patch. Resolves bug #686980.

[doc/Issues.htm 1.47]

2005-03-30 14:06 Igor Melichev

ps2write : Convert type 3,4 image into a clipped image (continued 3).

DETAILS :

Apply loseless filters for images smaller than 500 Kbytes
(Useful for images like 468-01-fixed.ps).

We would like to apply the compression chooser.
Dalaying it until users request so.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfb.c 1.27]

2005-03-30 13:43 Igor Melichev

ps2write : Convert type 3,4 image into a clipped image (continued 2).

DETAILS :

1. Optimisation: Merge equal lines while converting a mask into clip path.
2. Bug : When the mask has a bigger resolution, scale up the data image and the mask
   to allow the mask to rasterize in the natural resolution
   (debugged with 468-01-fixed.ps).

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.53, src/gdevpdfi.c 1.69]

2005-03-30 12:48 Igor Melichev

ps2write : Convert type 3,4 image into a clipped image (continued).

DETAILS :

1. Improved the prototype of pdf_setup_masked_image_converter.
2. Renamed 'autorelease' into 'write_on_close' for a better reflection of its meaning.
3. Renamed gx_device_pdf::image_mask_matrix into gx_device_pdf::converting_image_matrix.
3. Type 3 images now convert with no scaling to the device space (int pdf_begin_typed_image).
   The mask image of the typoe 3 image is scaled to the size of the data image.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.52, src/gdevpdfi.c 1.68, src/gdevpdfx.h 1.111]

2005-03-29 21:33 Igor Melichev

ps2write : Convert type 4 image into a clipped image.

DETAILS :

Since HP LaserJet 1320 unsatisfactory handles imagemask with a pattern color,
now we implement an alternative method for type 4 imege representation.
The method creates a clipping path and an image rendered with it.
See http://ghostscript.com/pipermail/gs-cvs/2005-March/005356.html
for additional details.

1. Fixed a typoe in lcvd_get_clipping_box_from_tadget.
   The new correct name is lcvd_get_clipping_box_from_target.
2. Fixed choices of allocators in pdf_setup_masked_image_converter.
3. pdf_image_cvd_enum_procs, pdf_image_end_image_cvd work for cleaning up temporary devices
   after a type 4 image has been processed with pdf_setup_masked_image_converter.
4. Added a branch into pdf_begin_typed_image to work with
   pdf_setup_masked_image_converter when
   pdev->OrderResources && !pdev->PatternImagemask.

We still use OrderResources as a general switch for the ps2write mode.
To be improved later.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.51, src/gdevpdfi.c 1.67]

2005-03-29 17:31 Igor Melichev

ps2write : Convert type 3 image into a clipped image.

DETAILS :

Since HP LaserJet 1320 unsatisfactory handles imagemask with a pattern color,
now we implement an alternative method for type 3 imege representation.
The method creates a clipping path and an image rendered with it.
See http://ghostscript.com/pipermail/gs-cvs/2005-March/005356.html
for additional details.

1. Moved pdf_lcvd_t to the pdfwrite scope gdevpdfx.h .
2. pdf_lcvd_t::mask is being allocated dymacially for a compatibility to gx_image3_end_image.
3. Made a garbager discriptor for pdf_lcvd_t since it is allocated dynamically
   for a compatibility with gx_image3_end_image.
4. Applied pdf_put_matrix for writing matrices.
5. Renamed dump_image into pdf_dump_converted_image.
6. Replaced gs_point pdf_lcvd_t::p with gs_matrix pdf_lcvd_t::m.
7. Factored out pdf_setup_masked_image_converter and pdf_remove_masked_image_converter.
8. Added branches to pdf_image3_make_mid and pdf_image3_make_mcde
   to work with pdf_setup_masked_image_converter.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.127, src/gdevpdfd.c 1.50, src/gdevpdfi.c 1.66, src/gdevpdfx.h 1.110]

2005-03-29 14:26 Igor Melichev

Fix : Propagate return codes truoug gx_image3_end_image.

DETAILS :

The change is important for ps2write.
We don't consider it to te a part of the ps2write project,
because it is generallly useful.

EXPECTED DIFFERENCES :

None.

[src/gximage3.c 1.15]

2005-03-28 14:03 Igor Melichev

ps2write : Convert shadings into a clipped image.

DETAILS :

Since HP LaserJet 1320 unsatisfactory handles imagemask with a pattern color,
now we implement an alternative method for shadings representation.
The method creates a clipping path and an image rendered with it.

The new device parameter PatternImagemask specifies whether
imagemask with a pattern color is allowed. Now it defaults to false.
When false, a conversion to a clipped image happens.

The new device parameter MaxClipPathSize specifies a restriction
for clip path segments. When a mask converts into a too big clipping path,
the image and the mask are being subdivided into smaller chunks.

Minor change : Moved the flag OrderResources to gx_device_pdf_s
(it had a too general scope).

A conversion of Type 3 images into clipped images will be a separate patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.105, src/gdevpdfd.c 1.49, src/gdevpdfp.c 1.44, src/gdevpdfx.h 1.109, src/gdevpsdf.h 1.30]

2005-03-25 21:26 Igor Melichev

ps2write : A misprint in option list.

EXPECTED DIFFERENCES :

None.

[lib/ps2write.bat 1.10]

2005-03-25 20:13 Igor Melichev

ps2write : Don't set a pattern space when it is already set (continued 2).

DETAILS :

The previous patch caused a problem with 3d party interpreters.

This patch provides a compatibility to gs3.70 and HP LaserJet 1320.
Since we duplicate color commands for stroking and non-stroking colors,
a dup of 'setpattern' caused a problem, because it tried
to setup a pattern over a pattern.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.59]

2005-03-25 19:31 Igor Melichev

ps2write : Don't set a pattern space when it is already set (continued).

DETAILS :

The previous patch caused a problem with some files,
which set a non-stroke color first.

This patch provides a compatibility to gs3.70 .
Since we duplicate color commands for stroking and non-stroking colors,
a dup of 'setpattern' caused a problem, because it tried
to setup a pattern over a pattern.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.58]

2005-03-25 18:00 Igor Melichev

ps2write : Don't set a pattern space when it is already set.

DETAILS :

This patch provides a compatibility to gs3.70 .
Since we duplicate color commands for stroking and non-stroking colors,
a dup of 'setpattern' caused a problem, because it tried
to setup a pattern over a pattern.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.57]

2005-03-25 17:38 Igor Melichev

ps2write : Implementing the RotatePages and the FitPages options (continued).

DETAILS :

.HWMargins caused a problem with 3d party interpreters.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.56]

2005-03-25 13:07 Igor Melichev

ps2write : Create contents streams for empty pages.

DETAILS :

opdfread can't handle pages with no contents due to object ordering.

Minor change : propagated return codes from pdf_open_contents in pdf_close_contents.
This minor change also affects pdfwrite.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.104, src/gdevpdfu.c 1.70]

2005-03-25 11:13 Igor Melichev

ps2write : Work around HP LaserJet 1320 bugs (continued).

DETAILS :

A previous patch fails when no filters applied.
This one fixes that.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.55]

2005-03-25 10:11 Igor Melichev

ps2write : Improve the handling of encodings.

DETAILS :

1. Fixed a bug in GetMacRomanEncodingInverse.
2. Dropped some unused encodings.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.54, lib/ps2write.bat 1.9]

2005-03-25 08:22 Igor Melichev

ps2write : Implementing the RotatePages and the FitPages options.

DETAILS :

This is a further improvement of the last patch.

When RotatePages is defined in the target device,
the opdfread procset rotates pages for a better fitting
into the page size.

When FitPages is defined in the target device,
the opdfread procset scales pages for a better fitting
into the page size.

Note thet if both options are specified,
the procset first rotates and then scales a page.

No rotations happen if a page fits with no rotation or
if a rotation doesn't improve the fitting.

Rather the RotatePages option looks similar to
the distiller parameter AutoRotatePages,
it affects a PS interpreter in the target printer
rather than the distiller in the ps2write host.

Thge implementation accounts /.HWMargins,
which is Ghostscript specific feature.
It is useful when the printer embeds Ghostscript.

Since now the options may appear either in systemdict,
or in userdict, or in globaldict of the printer.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.53]

2005-03-24 21:37 Igor Melichev

ps2write : Implementing the RotatePages option.

DETAILS :

When RotatePages is defined in the target device,
the opdfread procset rotates pages for a better fitting
into the page size.

Rather the RotatePages option looks similar to
the distiller parameter AutoRotatePages,
it affects a PS interpreter in the target printer
rather than the distiller in the ps2write host.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.52]

2005-03-24 19:34 Igor Melichev

ps2write : Fixing problems with TrueType fonts.

DETAILS :

1. The old code tried to position a non-positionable file reading cmap subtables.
The new code read cmap subtables in the order of the file.

2. 'sfnts' array got an exctra element 'true' causing 'invalidfont' with 3d party interpreters.

3. Improved the debug printout of a Type 42 font dictionary.
The old code printed too big strings causing a problem with CPSI.

Debugged with comparefiles\Bug687597.ps and HP LaserJet 1320.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.51]

2005-03-23 19:45 Dan Coby

Fix for 687434, 687835, and 687982.  These reports are  /vmerror in
--eofill-- or --fill--.  They are caused by the pattern accumulation
device trying to allocate excessively large buffers.

DETAILS:

The pattern accumulation device allocates an image buffer for holding
patterns.  The size of the pattern buffer (prior to this fix) is based
upon the bounding box specified with the pattern.  For the problem files,
the pattern bounding boxes are excessively large.  The vmerrors are the
result.

This fix consists of comparing the pattern bounding boxes to the size
of the page to be imaged.  (All of the files have bounding boxes which
are much larger than the page.)  We determine which part of the pattern
will actually be used and limit the pattern accumulation to the area
which is needed.  Most of this fix consists of stepping the pattern to
check the intersection between the pattern and the page.  The major
complication in this process is simply due to the arbitrary transform
matrix which can be applied between the coordinate space used to define
the pattern and the coordinate frame of the output page.

This fix significantly reduces the buffer sizes required for these
test files.  However it is still possible for a pattern buffer to
exceed available memory.  It is possible to create a solution using some
version of a band list.  However my estimate on that task keeps getting
larger as I look at the details.

[src/gsptype1.c 1.21]

2005-03-23 18:40 Raph Levien

Set PJL RENDERMODE to GRAYSCALE or COLOR depending on whether device is
pxlmono or pxlcolor, respectively. Fixes bug #687990. Thanks to Jonathan
Kamens for the patch.

[src/gdevpxut.c 1.6]

2005-03-23 17:41 Ralph Giles

Add the missing ijs-config.1 manpage so our distributed ijs tree
builds cleanly as a separate package. Include other sync changes
to the 0.35 release. Closes bug 687991.

[ijs/Makefile.am 1.2, ijs/README 1.3, ijs/configure.ac 1.2, ijs/ijs-config.1 1.2, ijs/ijs_spec.pdf 1.2]

2005-03-18 19:52 Igor Melichev

Fix (pdfwrite) : Don't apply ASCII85Encode to page contents streams which appear to be already ASCII (continued 2).

DETAILS :

Last two patches are incomplete - font streams were not ASCII encoded.
This one fixes that (All 3 to be applied).

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.69, src/gdevpdfx.h 1.108, src/gdevpdti.c 1.41]

2005-03-18 17:48 Ralph Giles

Clean up a remaining link to the New-user documentation.

[doc/Bug-info.htm 1.44]

2005-03-18 17:38 Igor Melichev

Fix (pdfwrite) : Don't apply ASCII85Encode to page contents streams which appear to be already ASCII (continued).

DETAILS :

The last patch was buggy. This one fixes that (both to be applied).

It's a bug introduced when implementing PDFW_DELAYED_STREAMS.
Restoring the old behavior now.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.68]

2005-03-18 17:28 Ralph Giles

Link to Commprod for the difference between GPL and AFPL Ghostscript.

[doc/Readme.htm 1.65]

2005-03-18 17:26 Ralph Giles

Remove the out-of-date 'new user' documentation. Most of this is covered by
the readme and the website.

[doc/Fonts.htm 1.46, doc/Helpers.htm 1.39, doc/Install.htm 1.50, doc/New-user.htm 1.56, doc/Readme.htm 1.64, doc/Use.htm 1.130]

2005-03-18 17:15 Ralph Giles

Remove the obsolete Tester.htm documentation file.

[doc/Readme.htm 1.63, doc/Tester.htm 1.35]

2005-03-18 16:15 Igor Melichev

ps2write : Work around HP LaserJet 1320 bugs.

DETAILS :

HP LaserJet 1320 appears to have problems with streams -
see comments in code.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.50]

2005-03-18 14:48 Igor Melichev

Fix (pdfwrite) : Don't apply ASCII85Encode to page contents streams which appear to be already ASCII.

DETAILS :

It's a bug introduced when implementing PDFW_DELAYED_STREAMS.
Restoring the old behavior now.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.67]

2005-03-18 12:15 Igor Melichev

ps2write : Improve the error handler.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.49]

2005-03-18 11:21 Igor Melichev

ps2write : Add EndOfTask character at the end of a task.

EXPECTED DIFFERENCES :

None.

[lib/ps2write.bat 1.8]

2005-03-18 10:36 Igor Melichev

ps2write : Add EndOfTask character at the end of a task.

EXPECTED DIFFERENCES :

None.

[lib/EndOfTask.ps 1.1, lib/ps2write.bat 1.7]

2005-03-17 15:45 Igor Melichev

ps2write : Don't write empty elements of Subrs.

DETAILS :

gdevpsf1.c created an incorrect Type 1 font file due to
'readstring' causes a rangecheck with empty string.
Skipping empty elements of Subrs against that.

An empty element of Subr isn't a correct code since
it must contain at least a 'ret' instruction.
Thus empty element actually means "no element".

EXPECTED DIFFERENCES :

None,
because normally pdfwrite doesan't call this code portion.

[src/gdevpsf1.c 1.21]

2005-03-17 13:08 Igor Melichev

Fix : Building GS with MSVC, use a proper CRTL version (debug|nodebug).

EXPECTED DIFFERENCES :

None.

[src/msvc32.mak 1.71]

2005-03-17 13:06 Igor Melichev

ps2write : Write pages in the proper order.

DETAILS :

Bug 687923 "New ps2write inverts the page order".

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.103, src/gdevpdfu.c 1.66, src/gdevpdfx.h 1.107]

2005-03-17 10:52 Igor Melichev

fuzzy.c : Fixing the error message format.

[toolbin/tests/fuzzy.c 1.18]

2005-03-17 10:45 Igor Melichev

ps2write : Fixing an initial matrix bug.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.48]

2005-03-16 23:04 Alex Cherepanov

Keep the operands of knownoget_safe pseudo-operator on the stack to ensure
proper restoration of the operands when it fails. Correctly adjust the stack
in the caller when knownoget_safe fails.
Fix bug 687473 from the customer 780.

[lib/pdf_main.ps 1.95]

2005-03-16 14:57 Igor Melichev

Fix : MSVC8 warning.

DETAILS :

This change is algorythmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/sjpx.c 1.12, src/spdiff.c 1.9]

2005-03-16 12:27 Igor Melichev

Fix : Coding style and MSVC8 warning in gsciemap.c .

DETAILS :

This change is algorythmically equivalent.

The old code applies macros to generate 3 expressions like this :

(8 >= ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) :
(10))) ? (((pcrd->caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) >> ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10)))] +
(frac)(((long)((pcrd->caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) >> ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10))) + 1] -
(pcrd->caches.EncodeABC[0].fixeds.ints.values)[((tabc[0]) >> ((((1 << 2) * 8 - 9 - 2) < (10)) ?
((1 << 2) * 8 - 9 - 2) : (10)))]) * ((int)(tabc[0]) & ((1 << ((((1 << 2) * 8 - 9 - 2) < (10)) ?
((1 << 2) * 8 - 9 - 2) : (10))) - 1))) >> (((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) :
(10))))) << (8 - ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10)))) :
(((pcrd->caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) >> ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10)))] +
(frac)(((long)((pcrd->caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) >> ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10))) + 1] -
(pcrd->caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) >> ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10)))]) *
((int)(tabc[0]) & ((1 << ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) :
(10))) - 1))) >> -(8 - ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) :
(10))))) >> (((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10))))

(the other 2 ones replace "[0]" with "[1]" and "[2]").

We gues that MSVC8 is not enough intelligent to prove that the static (sub)expression
((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10))
is always within the interval [0, 10] and therefore it claims a possible error.
This patch replaces it with a dynamic constant 's',
so that the warning doesn't appear.
In any case we believe that the huge expression above isn't a
good coding style since humans need to read the code sometimes.

For ones who wish a further simplification,
we're happy to bring some useful definitions :

XXX = ((((1 << 2) * 8 - 9 - 2) < (10)) ? ((1 << 2) * 8 - 9 - 2) : (10))
YYY = ((int)(tabc[0]) & ((1 << XXX) - 1))
ZZZ = ((tabc[0]) >> XXX)
TTT = (pcrd->caches.EncodeABC[0].fixeds.ints.values)

Using them the expression reduces to :

(8 >= XXX) ? ((TTT[ZZZ] + (frac)(((long)(TTT[ZZZ + 1] - TTT[ZZZ]) * YYY) >> (XXX))) << (8 - XXX))
           : ((TTT[ZZZ] + (frac)(((long)(TTT[ZZZ + 1] - TTT[ZZZ]) * YYY) >> (XXX))) >> -(8 - XXX))

EXPECTED DIFFERENCES :

None.

[src/gsciemap.c 1.16]

2005-03-16 09:47 Igor Melichev

ps2write : Don't drop extension glyphs writing an embedded font.

DETAILS :

The pdf interpreter creates glyph copies with unique_name
to resolve glyph name conflicts while converting Widths to Metrics.
Then pdfwrite drops the extended glyph names (made with unique_name),
to aviod font expansion in the output PDF.

We do not wont to port unique_name and related stuff
to opdfread.ps in order to simplify the latter.
Therefore the drop_extension_glyphs and related things must not be called
when pdfwrite works in the ps2write mode.

We still use OrderResources as a general switch for the ps2write mode.
This should be improved later.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtb.c 1.33, src/gdevpdtw.c 1.37]

2005-03-16 09:38 Igor Melichev

ps2write : Improving the processing of True Type encodings.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.47]

2005-03-15 14:14 Igor Melichev

ps2write : Fit a page with MediaBox.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.46]

2005-03-15 11:36 Igor Melichev

Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c 1.41, src/gstype42.c 1.51, src/gxhintn.c 1.58, src/gxshade6.c 1.92]

2005-03-15 11:21 Igor Melichev

ps2write : Fixing minor problems with text placing.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.45]

2005-03-14 18:08 Dan Coby

Fix for 687696 PDF 1.4 transparency can use large chunks of memory.
Prior to this fix the handling of PDF 1.4 transparency features used one
or more full size image buffers.  With high resolutions and large images,
these buffers can be multiple gigabytes.  As a result, we were not able
to handle these files.

DETAILS:

PDF 1.4 transparency is handled by a device which is inserted into the
device chain.  Prior to this fix, this device was via the 'device filter'
logic.  With this fix, the PDF 1.4 transparency device is inserted via
the compositor device mechanism.  This change was made since the device
filter logic did not allow other devices to control where the PDF 1.4
transparency device is placed in the device chain.  There is a device
proc which implements the create compositor action.  This allows more
control than the device filter logic.

The first step in this fix was to convert the PDF 1.4 transparency
logic to use the create compositor mechanism.  For situations in which
the clist logic is not being used, the PDF 1.4 transparency device is
created and placed in the same location in the device chain as it was put
by the device filter logic.  In this situation, there is very little
logical difference in the operation of the PDF 1.4 transparency.

For situations in which the clist is used, there are two PDF 1.4
compositing devices created.  There is one device before the clist when the
clist is being written.  There is a second device after the clist when
the clist data is being read.

The device before the clist serves two purposes, it provides a means for
implementing the process color model for the PDF 1.4 compositing.  (The
PDF 1.4 compositing may used a different process color model from the output
device.)  Thus this device has color_info and encode/decode color procs
which match the PDF 1.4 blending color space.  This device also ensures
that the PDF 1.4 blending parameters (blend mode, shape, opacity, etc.)
are passed through the clist to the second PDF 1.4 device.

The second PDF 1.4 device (the one when the clist is being read) is the
same PDF 1.4 compositing device which is used when the clist is not being
used.  This is the device which does the blending operations.  Since the
device is after the clist, the buffers that it needs are the size of a
single band instead of the full page.  This device is placed prior to
the memory device which is used for drawing the raster data.

Two changes were made in the 'create compositor' logic.  The imager state
was being passed as a 'const'.  It is no longer const since the PDF 1.4
transparency compositing changes the cmap procs in the imager state to not
use transfer functions during color calculations.  The transfer functions
are applied later (and the cmap procs restored) when blended image data
is output from the PDF 1.4 compositing buffers.

The second change to the create compositor logic is the addition of two
more procedures to the gs_composite_type_t.procs list.  These procedures
are used by the clist device create compositor routines.  The first
is used to create the PDF 1.4 clist write device.  The second saves and
restores the color_info field for the clist device (see below).

Default versions of the added gs_composite_t.procs were also added for
use by the other compositor devices.  The defaults are no-ops.

The clist logic has a few changes.  Since the PDF 1.4 compositor device
may use a different process color model from the output device, the number
of colorants and the depth (bits per pixel) can be different for the PDF
1.4 compositor and the output device.  Thus changes were needed in parts
of the clist logic which assumed that these items were constant during the
processing of the clist.  An extra field was added to the device halftone
to indicate the number of colorants in effect when the device halftone was
created.  This data is included when the halftone is serialized for the
clist.  (Fortunately the PDF 1.4 compositing does not use halftones or
transfer functions.  So the device halftones and transfer functions do
not need to be changed when the PDF 1.4 compositor is installed.)

As previously mentioned the create compositor procedures for the clist
writer and reader now call a couple of compositor specific routines.  These
allow the compositor to implement actions related to the clist device.
(The PDF 1.4 compositor uses these routines to create the 'write clist'
PDF 1.4 compositor and to save and restore the clist device color info.
The color_info field of the clist device is changed to match the process
color model of the PDF 1.4 compositor while the PDF 1.4 compositor is active.

A additional device parameter (PageUsesTransparency) was added.  This
parameter is sent by the PDF interpreter to indicate if PDF 1.4 transparency
will be used on the page.  The banding/no banding decision and the size
of a band includes an estimate of the size of the PDF 1.4 blending buffers
if this parameter is true.  Note:  The estimate of the size of the
blending buffers is not exact since this calculation is made before the
actual number of buffers, the number of blending colors and alpha channels
is known.  Fixed values are used for the estimated buffer size.  This is
still much better than the pervious situation, in which the only the
output raster size was being used.  The blending buffers can easily be
30 or more times larger than the raster buffer.

This fix also involves the removal of the PDF 1.4 'marking' devices.
The marking devices were used to actually implement the pixel marking.
The marking devices were created at the start of each high level drawing
operation and deleted after the completion of the operation.  The marking
device action has been merged into the primary PDF 1.4 compositing device.
This change eliminates some device creation overhead.  The overhead would
have been worse since most information about high level drawing operations
is not passed through the clist.  As a result it would have been necessary
to create marking devices for each low level operations.

The following issues are not included in this fix but need to be considered.

1)  The device filter logic is no longer used.  It may be desired to remove
this logic.

2)  We currently have a 'create_compositor' device proc.  However there
is not a 'delete_compositor' device proc.  As a result, compositor devices
can stay in the device chain even when they are no longer needed.  The
current fix turns the PDF 1.4 compositor into a 'forwarding' device.  This
is the same method used by the overprint compositor device.  I do not like
leaving these devices since there is some extra overhead and there may be
possible side effects.  (Testing has been done to try to find side effects
and none has been found with the current code.)

3)  This change only affects devices which can use the clist logic.  This
excludes the 'high' level devices.  These include the 'display', 'x11',
and 'pdfwrite' devices.  Thus these device will continue to use a full
image buffer.  It is possible to extend this fix to use a clist device
for the PDF 1.4 device for these devices.

[src/gdevbbox.c 1.23, src/gdevdflt.c 1.25, src/gdevmem.c 1.9, src/gdevnfwd.c 1.28, src/gdevp14.c 1.27, src/gdevp14.h 1.4, src/gdevprn.c 1.19, src/gdevprn.h 1.14, src/gdevpsdu.c 1.23, src/gsalphac.c 1.8, src/gsht.c 1.23, src/gsistate.c 1.11, src/gsovrc.c 1.9, src/gsropc.c 1.5, src/gstparam.h 1.11, src/gstrans.c 1.19, src/gstrans.h 1.10, src/gxband.h 1.5, src/gxcldev.h 1.14, src/gxclimag.c 1.12, src/gxclist.c 1.15, src/gxclist.h 1.7, src/gxclrast.c 1.33, src/gxclutil.c 1.12, src/gxcmap.c 1.24, src/gxcomp.h 1.7, src/gxdevcli.h 1.36, src/gxdevice.h 1.21, src/gxdevmem.h 1.7, src/gxdht.h 1.9, src/gxdhtserial.c 1.8, src/gxistate.h 1.22, src/lib.mak 1.206, src/zdpnext.c 1.8, src/ztrans.c 1.23, lib/pdf_draw.ps 1.91, lib/pdf_main.ps 1.94]

2005-03-14 17:46 Igor Melichev

ps2write : Assume same color for stroking and non-stroking operations.

DETAILS :

An improvement to opdfread.ps with maintaining different colors
for stroking and non-stroking operations would too complicated.
So we patch pdfwrite against it.

We still use OrderResources as a general switch for ps2write mode.
It should be improved later.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.48]

2005-03-10 16:34 Igor Melichev

Fix (type 1 hinter) : Inconsistent transform coefficients after the dynamic glyph scaling.

DETAILS :

Bug 687939 "Fixed precision problems".

t1_hinter__adjust_matrix_precision did not adjust rational transform coefficients.
Due to that, t1_hinter__align_stem_to_grid caused glyph distortions.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.57]

2005-03-10 14:57 Alex Cherepanov

Initialize ColorSpace parameter in ijs driver to DeviceRGB. This
prevents a PostScript error in "currentpagedevice setpagedevice"
and similar code when ColorSpace is not explicitly initialized.
Fix bug 687013.

[src/gdevijs.c 1.10]

2005-03-10 13:01 Alex Cherepanov

Add FillOrder device parameter to TIFF fax devices and document the
changes in Devices.htm .
Fix bug 687324

DETAILS :
This fix changes the default from FillOrder = 2 to FillOrder = 1.
According to the TIFF 6.0 specification, Section 8, page 32, support of
FillOrder = 2 is not required in a Baseline TIFF compliant reader.

Support of FillOrder will be addressed to tiffpack and tifflzw devices as
a part of bug 614298 resolution.

EXPECTED DIFFERENCES :
None. TIFF devices are not tested by the regression test.

[doc/Devices.htm 1.85, src/gdevtfax.c 1.9]

2005-03-09 12:21 Igor Melichev

Fix (pdfwrite) : Equal image merging could break the Mask object of a type 3 image.

DETAILS :

Bug 687926 "ps2pdf13 Segfaults on eps figure".

The old code set a reference to a Mask object,
which was freed while the equal image merging.
Delay adding the "Mask" entry into a type 3 image dictionary
until the mask is completed and merged
(maybe replaced with an equal one).

Minor change : fixed a typoe in "pdf_image_useage_t".

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.65]

2005-03-09 09:01 Igor Melichev

Fix (pdfwrite) : Don't create a CMap resource list.

DETAILS :

Old revisions created an object for CMap resource list.
That object is not required by the PDF specification,
and it was left unreferenced.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtw.c 1.36]

2005-03-09 08:43 Igor Melichev

Fix : MSVC 8 debug build was broken.

DETAILS :

Since msvccmd.mak version 1.25 a debug build compiles with no debug info.
This patch restores necessary compiler options.

Particularly msvccmd.mak version 1.25 reads :

     # MSVC 8 does not support debug compile and continue /Gi /ZI.

Don't know where it comes from. My copy of MSVC 8
does support it and I do use it.

EXPECTED DIFFERENCES :

None.

[src/msvccmd.mak 1.26]

2005-03-08 07:40 Ralph Giles

Add uncompr.c which supplies the uncompress() zlib utility routine to our
makefile. This routine isn't currently used by ghostscript, but was available
prior to the source re-arrangement in the zlib 1.2.x releases.

[src/zlib.mak 1.10]

2005-03-04 22:12 Russell Lang

Correct HTML error in documentation.

[doc/Use.htm 1.129]

2005-03-04 22:02 Russell Lang

Set the default paper size with DEFAULTPAPERSIZE in gs_init.ps,
which only affects devices that default to A4 or letter paper.
This avoids inappropriately setting the bbox device to
A4 or letter size.

DETAILS:
Some linux distributions change the default paper size
to A4 by uncommenting the following line in gs_init.ps.
  % Optionally choose a default paper size other than U.S. letter.
  % (a4) /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse

Unfortunately this sets the default paper size for all devices,
including the bbox device for which this is not appropriate.
If the bbox device is set to A4 paper and drawing occurs
outside this area, the bbox device will report an incorrect
bounding box.  There may be custom printer devices which don't
support A4 or letter paper.

The default paper size is now set with DEFAULTPAPERSIZE,
which sets PAPERSIZE only if the paper size is not otherwise
set, the device defaulted to A4 or letter.

[doc/Use.htm 1.128, lib/gs_init.ps 1.118]

2005-03-04 22:00 Russell Lang

The display device row alignment must be equal to or greater than
the pointer size, since this is a requirement of the memory devices.
Problem noticed on 64-bit builds.

[src/gdevdsp.c 1.32, src/gdevdsp.h 1.12]

2005-03-04 21:58 Russell Lang

Compile Ghostscript for 64-bit Windows with AMD64 processor.
Change the default install directory to "c:\program files\gs".

DETAILS:
Microsoft Visual Studio .NET 2003 with Windows Server 2003 DDK,
or Microsoft Visual Studio 8 (.NET 2005 beta) are required
to compile for 64-bits.

Dialog boxes return type INT_PTR not BOOL.

Install to the "Program Files" directory as default,
instead of c:\gs.  This allows 32-bit and 64-bit
versions to be installed in separate locations.
For 32-bit GS on 32-bit Windows, "c:\Program Files\gs"
For 32-bit GS on 64-bit Windows, "c:\Program Files (x86)\gs"
For 64-bit GS on 64-bit Windows, "c:\Program Files\gs"
The " (x86)" is added by Windows when a 32-bit program asks
for the "Program Files" folder on 64-bit Windows.
Other languages will translate "Program Files".

The programs still have "32" in their names: gswin32c.exe,
gswin32.exe and gsdll32.dll.  They are distinguished from
the 32-bit versions by their install location.
This avoids changes to many batch files.

The registry entries written by the installer do not
conflict between 32 and 64-bit.
For 32 on 32, or 64 on 64, the location is
  HKLM\Software\AFPL Ghostscript\N.NN
For 32 on 64, Windows adds "WoW6432Node\" to make it
  HKLM\Software\Wow6432Node\AFPL Ghostscript\N.NN

If the "Program Files" folder has a " (x86)" suffix,
this is used as a suffix on the Start Menu items.  This
allows 32-bit and 64-bit GS to be installed without
conflict.  The start menu item for 32-bit GS on 64-bit
Windows is "Ghostscript N.NN (x86)".

Building 64-bit GS on 32-bit Windows can be done
by the usual method - either execute genconf.exe on
a 64-bit platform or hand edit arch.h.

A separate patch will fix the display device DisplayHandle
parameter which is currently truncated to 32-bits.

There is a warning from the linker about exports being
defined multiple ways.  This is not a problem with the
32-bit compile.  This is due to the C code
specifying export and the module definition file
also specifying the export.  Removing the function
names from the module definition file would make the
warning message go away, but may affect 32-bit compiles.

[doc/Make.htm 1.85, src/dwsetup.cpp 1.11, src/dwsetup.rc 1.13, src/dwuninst.cpp 1.6, src/gp_mswin.c 1.25, src/gp_mswin.h 1.7, src/gsdll32.def 1.6, src/msvc32.mak 1.70, src/msvccmd.mak 1.25, src/msvctail.mak 1.11, src/winint.mak 1.25]

2005-03-04 21:56 Russell Lang

Change display device parameter DisplayHandle from an integer
to a string, to add support for 64-bit platforms.

DETAILS:
The display device passes a (void *) handle to callback functions.
The handle is set before the device is opened, and attempting to
change it afterwards is an error.
The handle may be used by the caller to identify an instance of
the display device, for example it may point to the display instance
object in the caller.
This handle was set using a PostScript integer which is 32-bits long,
typically with -dDisplayHandle.
The existing code will not work correctly on 64-bit architectures.

The display device is changed to return a string as the
DisplayHandle parameter.
Previously the handle would be set using -dDisplayHandle=1234.
The changed code allows it to be passed as
 -dDisplayHandle=1234
 -sDisplayHandle=1234
 -sDisplayHandle=10#1234
 -sDisplayHandle=16#04d2
This should be backward compatible, since users of the
display device will most likely only set the DisplayHandle,
not read its value.

The ghostscript example code in dw*.c, dx*.c and dp*.c
does not use DisplayHandle, so is unaffected by this change.
GSview does use DisplayHandle and will require this
change for operation on 64-bit platforms.

It is assumed that size_t is an integer with the same size
as a pointer.

For HEAD, GS_8_1X

[src/gdevdsp.c 1.31, src/gdevdsp.h 1.11]

2005-03-04 14:42 Igor Melichev

Unwinding the last patch, which was erroneusely aplied to a wrong branch.

[src/gdevpdfj.c 1.41]

2005-03-04 14:38 Igor Melichev

pdfwrite : ASCII encoding was not applied to some images when requested.

DETAILS :

It fixes a bug, which has been put when implementing the compression chooser.
This is a part of ps2write development, which is also important for pdfwrite.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfj.c 1.39, src/gdevpdfj.c 1.40]

2005-03-04 10:27 Russell Lang

Fix bug #687958 gswin32: Assertion fails due to a bug in dwtext.c.
Keep argument to isprint() within 0-255.

[src/dwtext.c 1.9]

2005-03-03 19:05 Ray Johnston

Eliminate a performance problem when a TT font has a large 'loca' table.
A fix for 687889 used .sort on the 'loca' table but this takes a long
time if the table is large. Only run the .sort if the table is out of
order which is rare since the TT font spec requires an in-order table.
Bug 687968.

DETAILS:

Apparently our conversion of the 'japan.ps' file creates a TT font with
a loca table that has 20458 entries (even though the original font
in japan.ps didn't have that many). This is needed because there are
many glyphs that are not present, but we need loca table slots that
represent the missing glyphs (same starting offset as next glyph).

The time was being spent doing the '{ lt } .sort' of the array  :-(

I added logic that checked the order as the loca table was converted
to an array so that the .sort could be skipped as long as the table is
in order (which it *should* be for a valid TT font). After this change,
the HEAD time is 1.16 CPU seconds versus 1.08 seconds for gs8.50.
(with the .sort, the time was 257 seconds).

I suppose that we could optimize the .sort (put it into 'C') but
for now I'll just avoid it most of the time.

Note that since the .sort has a procedure callout for the ordering test,
it might not speed up that much in 'C'. That's the other reason that it
is worthwhile to avoid the .sort when possible.

[lib/gs_ttf.ps 1.43]

2005-03-03 13:15 Igor Melichev

pdfwrite : Use character codes instead CIDs when creating a ToUnicode CMap.

DETAILS :

Bug 687954 "copy and pasting asian text problems".

The problem depends on what a Postscript printer driver
puts into the GlyphNames2Unicode table.

GlyphNames2Unicode is an undocumented feature, which PScript5.dll uses to
communicate with Adobe Distiller. A long ago from its name
we concluded that it maps character names to Unicode, and it was
confirmed with multiple documents. Now we got a document
(the test case of the bug 687954), which uses character codes instead CIDs,
(CIDs are usually interpreted as "glyph names" in the case of CID fonts).
In the test document CIDs are not equal to character codes due to the embedded CMap
named WinCharSetFFFF-H2. We did not notice this problem before
due to most old documents from PScript5.dll use an identity CMap WinCharSetFFFF-H,

Now we change Ghostscript with using character codes instead CIDs
as keys to GlyphNames2Unicode. We have no technology for a regression test
of the related behavior. We will pass this revision to users in order to study
consequences of this patch from users' responses.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c 1.40, src/gdevpdte.c 1.70]

2005-03-03 07:50 Igor Melichev

ps2write : Write "/Type/CMap" to a CMap resource dictionary.

DETAILS :

Bug 687955 "ghostscript generated pdf causes error in adobe reader"

EXPECTED DIFFERENCES :

None.

[src/gdevpdtw.c 1.35]

2005-03-02 18:08 Raph Levien

Fix: Move setting of #copies userdict entry outside restore operation
so it doesn't get clobbered. Fixes bug #687964. Thanks to Leon Sha for
the patch.

[src/gdevpsu.c 1.19]

2005-03-01 20:44 Ray Johnston

Fix a problem with .dividesfnts for large Type42 fonts introduced with the
previous commit. Also replace macro with C-Style compliant inline function.

DETAILS:

The previous code constructed a single 'locatable' string of 4 byte entries
from the sorted array of loca entries. This would fail if the original
was 2 byte (u16) offsets, as seen with 'fonts.pdf' in the regression suite.

The new code constructs the "splitarray" list using the sorted array so
that the string is never created (it wasn't used afterwards).

Also, the related file src/gstype42.c was changed to avoid adding another
macro that doesn't follow C-Style. I intentionally left the ACCESS macro
since this would need at least two lines to replace each ACCESS line.

[lib/gs_ttf.ps 1.42, src/gstype42.c 1.50]

2005-02-28 10:00 Igor Melichev

ps2write : Reset the clipping path before starting a page.

DETAILS :

Bug 687952 "Clipping path is ignored on pages after first page of PDF output".
Patch from SaGS.
Actually it resets the clipping path before the first page and after each page.
Resetting it after the last page saves few memory for PDF completion.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.102]

2005-02-27 05:56 Ray Johnston

Fix handling of broken TrueType fonts that have a loca table that is not
in order. Bug 687889 for customer 670.

DETAILS:

This is clearly a questionable TT font since the Apple TT font reference
manual clearly states that the length of glyphs can be inferred from
the difference in successive offsets.

Note that the PostScript code only needs to deal with the sorted 'locatable'
in order to decide where to split the glyf strings in the sfnts array
(in the .dividesfnts proc). Otherwise the PostScript code doesn't care.

If the .dividesfnts uses a sorted locatable, but doesn't replace the 'loca'
table written into the sfnts, then the VMerror occurs because the C code
in 'default_get_outline' calculated the glyph_length for the gs_alloc
using loca table entries that might be out of order.

In order to effect the entire fix, I sorted the 'locatable' for the PS
code in .dividesfnts as well as creating a new 'len_glyphs' array in
the gs_type42_data structure that holds the actual glyph lengths.
The glyph lengths are calculated once when the font is initialized in
gs_type42_font_init. If the 'loca' table is in order, then nothing
changes, but if it is out of order, we get the lengths by finding the
next higher glyph offset anywhere in the loca table.

These changes let the file run and show the same glyphs as Adobe Acrobat
Reader.

[lib/gs_ttf.ps 1.41, src/gstype42.c 1.49, src/gxfont42.h 1.21]

2005-02-26 21:00 Igor Melichev

ps2write : Fixing minor problems with debug printing.

DETAILS :

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.44]

2005-02-26 18:07 Igor Melichev

ps2write : Implementing a conversion of images into ProcessColorModel, step 3 (final).

DETAILS :

1. Attached the "image colors" filter and
provided appropriate color conversions.

2. Changed function prototype to pass filter parameters.

3. Removed all related stubs.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.126, src/gdevpdfi.c 1.64, src/gdevpsdf.h 1.29, src/gdevpsdi.c 1.40, src/gdevpsds.c 1.14, src/gdevpsds.h 1.12]

2005-02-26 13:32 Igor Melichev

ps2write : Implementing a conversion of images into ProcessColorModel, step 2.

DETAILS :

This step generalizes the "image to mask" filter into
a general image color conversion filter.
Also improved return codes from s_image_colors_process
in complience to constraints defined in strimpl.h .

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.39, src/gdevpsds.c 1.13, src/gdevpsds.h 1.11]

2005-02-25 21:08 Igor Melichev

ps2write : Implementing a conversion of images into ProcessColorModel, step 1.

DETAILS :

This patch defines overall logic and data exchange for converting images to
ProcessColorModel color space. For a while, the real convertion is stubbed
with conversion into a bitmask (a 1 bit per sample image).

1. When pdf_begin_typed_image calls pdf_color_space,
a failure means that the image can't represent in the output PDF.
Then we setg up a n image color conversion filter with
psdf_setup_image_colors_filter.

2. The function psdf_setup_image_colors_filter currently is stubbed
with etting up the "image_to_mask" filter instead a general color conversion filter.
Implementing the general filter will be the next step.

3. When conversion happens, pdf_begin_typed_image writes
a ProcessColorModel colore space instead the image color space.
Currently it is stubbed with gs_color_space_index_DeviceGray
to comply with the stub in psdf_setup_image_colors_filter.

4. Multiple bugs (mainly the order of bits in the stream,
and row to tyte alignment) have bin fixed in s_image_to_mask_process.

5. We continue to use pdev->OrderResources as a general switch
for the ps2write mode, rather it's not fully correct.
The new code will be useful for pdfwrite with CompatibilityLevel < 1.3,
so later we'll need to remove the switch from pdf_begin_typed_image.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.63, src/gdevpsdi.c 1.38, src/gdevpdfx.h 1.106, src/gdevpsdf.h 1.28, src/gdevpsds.c 1.12]

2005-02-25 14:02 Igor Melichev

pdfwrite : Simplify data exchange for pdf_color_space.

DETAILS :

1. The old code assumes a constraint explained in the comment :
	/* SRZB 2001-04-25/Bl
	 * Since psdf_setup_image_filters may change the color space
	 * (in case of pdev->params.ConvertCMYKImagesToRGB == true),
	 * we postpone the selection of the PDF color space to here:
	 */
Implement this dependence implicitly with defining a new function
psdf_is_converting_image_to_RGB, in order to cancel the "postpone" constraint.

2. Call pdf_color_space before setting up image filters.
This allows a proper check of the color space compatibility
before image filters are set.
This is important since we'll apply a filter
for the image color space conversion.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.62, src/gdevpsdf.h 1.27, src/gdevpsdi.c 1.37]

2005-02-25 07:58 Igor Melichev

ps2write : Unwind the last patch (disallow ICCBased color spaces when writing a ps2write output).

DETAILS :

When applied the last patch,
we decided to convert ICC profile into a CIEBased color space.
But ICC profiles (especially ones coming from PDF documents from wild)
may contain a general lookup table, and a general lookup
table can't convert into M1*T*M2 transformation,
where Mi are 3D linear transformations, and and
T is unlinear 3-component transformation.
Since a CIEBased color space is restricted with
M1*T*M2 transformation, in a general ICC profile
can't convert into a CIEBased.

Besides that, the ICC-based method can't apply to DeviceN spaces.

Therefore now we choose another implementation strategy.
Single colors will be converted into low level colors in
the ps2write step, and images will be filtered to convert
into low level color spaces.
Will implement a special filter for that.

Due to all above, the last patch appears wrong.
Unwinding it now.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfk.c 1.10]

2005-02-24 19:46 Igor Melichev

ps2write : Allow ICCBased color spaces when writing a ps2write output.

DETAILS :

Since CIEBased is not a PDF 1.2 object, we need to convert it somehow.

One possible way is to write CIEBased into PDF.
We do not choose this way because (1) it will generate an invalid PDF
so that we'll not be able to verify the output with PDF readers;
(2) we have no code for writing a CIEBased color space to PDF or Postscript,
but we do have one for ICCBased.

Another way is to write ICCBased into the ps2write output
and to implement a parsing of ICC profile in opdfread.ps .
We prefer this way since a part of this algorithm (an ICC writer)
already presents in Ghostscript.

Strongly saying, a PDF with ICCBased is not a valid PDF 1.2 document.
But as we noticed before, Adobe PDF viewers simply ignore
pdf level from the document header. So we'll be able to view it
as it is or after a small modification of the header.

We continue to use the flag OrderResources as a general switch for
ps2write mode. Doing so because we still have no
a perfect decision about the list and logics of configuration options.
Later we'll need to bring more order to this field.
Possibly writing a "restricted PDF1.3" would be better that
writing an "extended PDF 1.2".

By the way, pdfwrite appears to have a rudimentary branch
pdf_convert_cie_to_lab, which currently is a stub,
which always fails. We think that this conversion isn't possible
in general due to Lab restricts with a very special class of
transformations. So lakely this branch will never be implemented
and it must always fail.

Please note that with this patch ps2write successfully converts
a smaller class of input files then before it,
because the writer becomes inconsistent with
the reader coded in opdfread.ps . But we do need this step
in the develoipment technology. Actually the files outside the class
were converted into a too long PDF.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfk.c 1.9]

2005-02-24 11:26 Igor Melichev

Fix (pdfwrite) : Improving the heap consistensy with compression chooser.

DETAILS :

When a compression chooser is being installed,
s_add_fimter may insert another NullEncode filter to comply the buffering
between the compression chooser and its target.
After the compression chooser is closed, the old code
left the NullEncode filter unreleased in the heap,
so that the heap consistency check claimed a reference
from it to a freed object, which is the target of the
NullEncode. It's not a real bug sisnce NullEncode was never referred,
But running with -Z? got a failure in the heap consistency check.

This patch generalizes the code with closing all filters in the chain
(including the NullEncode) without a dependence on
features of specific filters.

BTW, we're unappy of all this stuff,
becauase actually the compression chooser filter doesn't need any target.
A dummy one was inserted only to work around a crash in
s_add_filter, in the check of the buffer size compliance,
and now we fix a problem with the dummy thing.
Maybe a simpler way would be patching s_add_filter
to allow NULL target (I mean no target at all,
rather than a null filter as the target),
but we don't want to modify that fundamental thing,
which is handled by another engineer.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfj.c 1.38, src/gdevpsdi.c 1.36]

2005-02-23 15:10 Igor Melichev

ps2write : Improving the compatyibility to another PSLL2 interpreter 5D PDF Creator.

DETAILS :

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.43]

2005-02-23 10:48 Igor Melichev

ps2write : A wrong data were set to sfnts defining a Type 42 font.

DETAILS :

It attached an encoded data.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.42]

2005-02-23 10:08 Igor Melichev

Fix : Erase all pointers initializing a font structure.

DETAILS :

Bug 687951 "Inconsistent heap after 'definefont' fails.".

EXPECTED DIFFERENCES :

None.

[src/gsfont.c 1.35]

2005-02-23 09:57 Igor Melichev

Fix (pdfdwrite) : Don't apply FlateEncode generating a PDF 1.2.

DETAILS :

FlateEncode is a PDF 1.2 and PSLL3 feature.
This patch is important for ps2write project.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.35]

2005-02-22 15:41 Igor Melichev

A new implementation of shadings, step 89.

DETAILS :

This is a partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".

This patch improves the decision how to subdivide a quadrangle patch.

EXPECTED DIFFERENCES :

normal, 72dpi :

"442-01.ps"
"464-01-fixed.ps"
"478-01.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"S2_Digitalproof-Forum_x3k.pdf"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"

normal, 300dpi :

"442-01.ps"
"464-01-fixed.ps"
"478-01.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"S2_Digitalproof-Forum_x3k.pdf"
"SmoothShading.pdf"

[src/gxshade6.c 1.91]

2005-02-18 20:38 Russell Lang

Fix conformance problems in ghostpdf.ppd.  Now tested with cupstestppd.

[lib/ghostpdf.ppd 1.3]

2005-02-17 21:40 Igor Melichev

ps2write : A compatibility to a PSLL@ interpreter gs3_70.

DETAILS :

1. With  GS HEAD 'makepattern' always returns a local dictionary, but
with gs3_70 it depends on current allocation mode.
Forced the local allocation mode for any case.

2. Fixed the file name in the error handler message.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.41]

2005-02-16 22:05 Igor Melichev

ps2write : Fix problems with hex encodings (continued).

DETAILS :

The old code sometimes corrupted data when pdfwrite applies /ASCII85EncodePages true .
The data corruption happened while applying ASCII85Decode filter
together with another filter for inline images or embedded fonts.
The reason is that two instances of the stream dumper shared same buffer.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.40]

2005-02-16 15:29 Igor Melichev

ps2write : Implementing a conversion of type 4 images into an 'imagemask' with a pattern color.

DETAILS :

The mask is being generated with a new 4th alternative stream of pdf_image_writer.
Note it's a completely different way than image type 3.

1. Fixed a typo in 'pdf_image_writer_num_alt_streams'.

2. pdf_image_writer_num_alt_streams is increased to 4,
   and added pdf_image_writer::pres_mask.

3. Garbager methods of pdf_image_writer are updated with (2) in gdevpdfj.c .

4. Factored out pdf_begin_image_data_decoded (an equivalent code change).

5. Factored out pdf_end_and_do_image (an equivalent code change).

6. pdf_begin_write_image now may be called at 2nd time to set up the 4th alternative stream.
   The branches for mask==true work for that.

7. Implenented a new filter image_to_mask for converting a colored
   image with MaskColors into an imagemask (gdevpsds.h, gdevpsds.c).

8. psdf_setup_image_to_mask_filter helps for (7). (gdevpsdf.h, gdevpsdi.c)/

9. pdf_begin_typed_image now creates 4th alternative image stream with
   applying the image_to_mask filter - see the branch
   "if (pic->type->index == 4 && pdev->CompatibilityLevel < 1.3)".
   See comment in there.

10. pdf_image_end_image_data handles the 4th stream
   with the branch "if (pie->writer.alt_writer_count == 2)".

11. pdf_choose_compression_cos preserves the 4th alternative stream (gdevpdfj.c).

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.125, src/gdevpdfg.h 1.40, src/gdevpdfi.c 1.61, src/gdevpdfj.c 1.37, src/gdevpsdf.h 1.26, src/gdevpsdi.c 1.34, src/gdevpsds.c 1.11, src/gdevpsds.h 1.10]

2005-02-16 11:11 Igor Melichev

Fix (pdfwrite) : Improve garbager methods of pdf_image_writer.

DETAILS :

This change should be algorithmically equivalent,
rather the order of pointer enumeration is changed slightly.
The goal is to simplify the ps2write project.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.h 1.39, src/gdevpdfj.c 1.36]

2005-02-16 09:13 Igor Melichev

Fix (pdfwrite) : Implement an explicit initialization of pdf_image_writer.

DETAILS :

This change should be algorithmically equivalent,
rather it initializes more data, which were left uninitiaized
(and hopely unused) by the old code.
The goal is to simplify the ps2write project.

The patch simplifies the logics of pdf_begin_write_image,
and drops its argument, which was added when implementing
the compression chooser.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfb.c 1.26, src/gdevpdfg.h 1.38, src/gdevpdfi.c 1.60, src/gdevpdfj.c 1.35, src/gdevpdfv.c 1.38]

2005-02-16 06:31 Ray Johnston

Add a pdfformaterror Warning for the case where an outline link destination
does not exist (so that the resulting PDF will not have dangling links).

[lib/pdf_main.ps 1.93]

2005-02-16 06:28 Ray Johnston

Tolerate non-printing garbage characters prior to the %PDF header of a PDF
file. Bug 687942 for customer 670.

DETAILS:

This is yet another example of PDF's that Acrobat Reader can handle that
don't quite meet the spec. AR has the advantage that they don't have to
'auto-sense' PostScript, EPS and PDF and they can just ignore garbage
before the %PDF header. We don't have that advantage.

We've had previous proposals to operate the way AR does, but this would
require a command line switch to force PDF language mode (akin to the
PJL ENTER LANGUAGE functionality of PCL).

This is a simple enough patch and does solve at least one customer's
issue so I'm committing this patch. We can always improve on it later.

Note that skipping initial non-printing characters doesn't interfere
with PostScript or EPS recognition or processing (and may help).

[lib/pdf_main.ps 1.92]

2005-02-16 05:01 Raph Levien

Fix: make sure that transfer functions and spot functions are permuted
to the same order as the other halftoning parameters. Fixes bug #687916.

[src/zht2.c 1.13]

2005-02-15 14:47 Igor Melichev

Fix (the filling algorithm) : Drpouts could appear at Y-extremes of the path (continued).

DETAILS :

This is a continuation of the patch
http://ghostscript.com/pipermail/gs-cvs/2005-January/005180.html .

Bug 687940 "Infinite loop in spot_into_scan_lines_fd".

EXPECTED DIFFERENCES :

None.

[src/gxfillsl.h 1.8]

2005-02-14 02:37 Ray Johnston

Provide more robust handling of errors in an attempt to prevent badly
formed error handlers defined in the PS file from causing nested errors
(and the infamous dump-like "Unexpected interpreter error").
Refer to bug 687925.

DETAILS:

Note that broken error handlers are fairly common, so running them in a
.internalstopped context makes sense. The .internalstopped is used to
avoid side effects such as modifying the $error dict contents.

Also note that the -dJOBSERVER may often be needed to actually see the
error message since this forces the use of the "standard" error reporting
to stdout.

Expected Differences:

None.

[lib/gs_init.ps 1.117]

2005-02-13 21:31 Ray Johnston

Fix a problem with the initial matrix when the InputAttributes has a page
size range (four element array) with the lower bounds greater than 0.
Patch submitted by Till Kamppeter for bug 687902.

DETAILS:

The logic was clearly broken. There was an arbitrary MIN_MEDIA_SIZE #define
that was used to allow setting the media size correctly (to the request
instead of the range maximum). The corrected logic determines that a range
is being used when the medium.p{x|y} is not the same as medium.q{x|y}.

Expected Differences:

Since the default InputAttributes only has a single range page size slot,
and the minimum values are 0, 0, this won't change the default behaviour.

[src/zmedia2.c 1.17]

2005-02-12 20:29 Ray Johnston

Fix so that outline links to non-existent pages do not get processed or
included in the outline passed to pdfwrite (via pdfmark). Bug 687917.

DETAILS:

Broken links cause a 'rangecheck in --get--' in the pdfpagenumber proc.
called from 'linkdest'. We now catch errors (any) using stopped and simply
omit the link from the outline that we write.

[lib/pdf_main.ps 1.91]

2005-02-10 23:13 Dan Coby

Fix for 687935 rangecheck in stroke while overprinting on the display device.

DETAILS:

This fix corrects a problem in gx_default_get_bits_rectangle.  The fix
forces the 'actual_data' parameter to NULL when the GB_RETURN_POINTER
option is not included in the parameter options.  A value of NULL in the
actual_data parameter forces the get_bits routine to copy data instead of
simply returning a pointer to the data.

The default implementation of overprinting uses the device get_bit_rectangle
proc to retrieve the current pixel data.  This one of the few situations that
only uses the 'GB_RETURN_COPY' option to the get_bits routine.  (Most cases
use both GB_RETURN_COPY and GB_RETURN_POINTER.)

[src/gdevdgbr.c 1.12]

2005-02-09 19:42 Igor Melichev

ps2write : Fix problems with heh encodings.

DETAILS :

The old code failed when pdfwrite applies /ASCII85EncodePages true .
This patch fixes that.

When reading the generated PS file with Ghostscript,
we observe a problem with ASCII85Decode filter :
images and fonts appear corrupt,
and embedded fonts cause an access violation on Windows.
In same time Adobe Reader reads them fine.
This secondary problem shouldn't be important for the Postscript generation.
It will be fixed separately.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.39, lib/ps2write.bat 1.6]

2005-02-09 18:30 Ray Johnston

Revert to the redistributable Identity-H and Identity-V CMaps (same as
the CVS revision 1.1). Bug 687933.

[Resource/CMap/Identity-H 1.3, Resource/CMap/Identity-V 1.3]

2005-02-09 16:36 Igor Melichev

ps2write : Implementing a conversion of type 3 images into an 'imagemask' with a pattern color.

DETAILS :

1. The main worker is use_image_as_pattern.

2. pdf_image_end_image_object2 transfers the condition for calling use_image_as_pattern.

3. pdf_image_end_image_data handles more cases, including the new USE_AS_PATTERN.
   See comment in code near it. Other 2 cases are equivalent to old ones.

4. Don't write the Mask key when the image is used as the pattern color.

5. New fields are added into pdf_device_s to provide a data transfer for use_image_as_pattern.

6. pdf_do_image is splitted into 2 functions. A further simplification
   would be useful, but we delay it in order to simplify this patch.
   See new comments in code.

7. A comment is inserted into gdevpdfd.c to provide a reference to a similar
   code fragment. Maybe we should factor out a common function.
   Delaying to simplify this patch.

8. Added a 'const' to a pdf_add_resource argument,
   since this patch calls it with a constant.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.124, src/gdevpdfd.c 1.47, src/gdevpdfg.h 1.37, src/gdevpdfi.c 1.59, src/gdevpdfj.c 1.34, src/gdevpdfx.h 1.105, src/gdevpdti.c 1.40]

2005-02-08 16:52 Igor Melichev

Implementing a conversion of a shading to a raster image for high level devices (continued 2).

DETAILS :

1. When a patch possibly is self-overlapping, patch_fill passes an empty path
(instead the patch boundary) to the device. Receiveing an empty path, the device
knows that it must convert the coverage area into a mask.

2. pdfwrite converts self-overlapping patches into an imagemask with a colored pattern color,
which paints the shading image. See the new code and comments in gdevpdfd.c.

3. An auxiliary function is added to gsptype2.c .

4. Probably we'll need to break big patterns into small ones
against the printer RAM overflow. Delaying for a while.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.123, src/gdevpdfd.c 1.46, src/gsptype2.c 1.17, src/gsptype2.h 1.12, src/gxshade6.c 1.90]

2005-02-08 15:57 Igor Melichev

ps2write : Allow image compression.

EXPECTED DIFFERENCES :

None.
3

[lib/ps2write.bat 1.5]

2005-02-07 06:38 Dan Coby

Fix for 687849 Unrecoverable error, converting PDF to TIF.  Igor determined
that the file has a problem that that causes the XREF rebuilding logic to
be invoked and that object 74 0 was not being found.  With this fix, we are
able to rebuild the file.

DETAILS:

The XREF rebuild logic uses a working string while searching for objects.
Object 74 0 was not being found because it is larger than the working
string.  This fix increases the working string size to 65535 bytes (the
maximum size for a string).

[lib/pdf_rbld.ps 1.8]

2005-02-06 21:32 Ray Johnston

Update the currentpoint after processing invisible text. BUg 687860.

DETAILS:

This could be more efficient, but invisible text is not assumed to be
very performance sensitive. I tested the bugs related to this one
(see the bug report) and this patch still works for those.

Expected Differences:

None.

[lib/pdf_ops.ps 1.38]

2005-02-03 05:40 Ray Johnston

Fix for miterlimit value that is smaller than PostScript PLRM allows.
Bug 687895. Somewhat based on patch from Alex Cherepanov.

DETAILS:

The patch from Alex issued a pdfformaterror *** Warning but reading the
PDF specification, the minimum value of 1 given in the PostScript ref
manual is NOT stated, so we clamp the value to a lower bound of 1 silently.

[lib/pdf_draw.ps 1.90]

2005-01-31 15:39 Ray Johnston

Some dependencies were missing that caused the build to fail when a subset
of DEVICE_DEVS were included. Specifically, zlib and the 'display' device
were problems. Bug 687920 for customer #580.

DETAILS:

Apparently the needed modules for zlib have changed, but when a 'png'
device was included, the crc32 module was included anyway.

The display device didn't include several dependencies for the new DeviceN
and Spot Color support: gdevdevn.obj gsequivc.obj gdevdcrd.obj

[src/devs.mak 1.122, src/zlib.mak 1.9]

2005-01-31 03:08 Igor Melichev

Implementing a conversion of a shading to a raster image for high level devices (continued).

DETAILS :

1. In pdf_copy_color_data, allowed the new value 2 for the parameter for_pattern.
In this case non-lossless filters are allowed.

2. In gdev_pdf_fill_path, fixed the grouping of clip paths for all
meshes|patches of a shading.

3. In gdev_pdf_fill_path, used the shading BBox to minimize
the size of the raster image.

4. In gdevpdfp.c allowed CompatibilityLevel=1.1 .
Now this is done mainly for debug purpose,
but likely we'll use it in ps2write when the target doesn't handle TT fonts.

5. The new function gx_dc_pattern2_get_bbox works for (3).

6. The function shade_bbox_transform2fixed has been renamed into
gx_dc_pattern2_shade_bbox_transform2fixed with making its scope bigger
to work for (5). It has been moved into gsptype2.c,
which is mode fundamental than gxshade.c .
The following changes happened due to that : gsptype2.c, gsptype2.h,
gsshade.c, gxshade.c, gxshade1.c, gxshade4.c.
We would like to do more cleanup with replacing it with
gx_dc_pattern2_get_bbox, but currently we delay that to simplify this patch.

7. Introduced a new field patch_curve_t::straight to know whether a patch
boundary is a straight line. patch_fill uses it when passing the
shading coverage area.

8. mesh_triangle now passes the coverage area.
An auxiliary function mesh_triangle_rec is factored out for that.

9. patch_fill checks for self-overlapoped patches
and prints a warning is the patch appears suspicious.
Comments in patch_fill about that have been improved.

10. patch_fill and mesh_triangle check the sign odf the coverage area,
and change the contour direction for making all contours be positive.
This works for proper clipping.

11. Fixed compressed streams in opdfread.ps .

EXPECTED DIFFERENCES :

None.

[src/gdevpdfb.c 1.25, src/gdevpdfd.c 1.45, src/gdevpdfp.c 1.43, src/gsptype2.c 1.16, src/gsptype2.h 1.11, src/gsshade.c 1.14, src/gxshade.c 1.22, src/gxshade.h 1.12, src/gxshade1.c 1.36, src/gxshade4.c 1.28, src/gxshade6.c 1.89, lib/opdfread.ps 1.38, src/gxshade4.h 1.38, src/lib.mak 1.205]

2005-01-31 02:02 Igor Melichev

Fix (pdfwrite) : Improving the check for a degenerate curve.

DETAILS :

This is a minor optimization for the case when a curve degenerates to a dot.
The old code converted it into the PDF instruction 'y', which looks uneven.

EXPECTED DIFFERENCES :

pdfwrite :
"Openhuis_pdf_zw.pdf"

[src/gdevpsdu.c 1.22]

2005-01-30 23:49 Igor Melichev

A new implementation of shadings, step 88.

DETAILS :

The function is_bended could give a wrong result (false instead true) when
the first vector product is zero. This could cause insufficient subdivision.

EXPECTED DIFFERENCES :

normal, 72dpi :

"442-01.ps"
"446-01-fixed.ps"
"483-05-fixed.ps"

normal, 300dpi :

"442-01.ps"

pdfwrite 72dpi :

"442-01.ps"

normal 300dpi :

"442-01.ps"

[src/gxshade6.c 1.88]

2005-01-30 20:59 Igor Melichev

Fix (pdfwrite) : Uninitialized variables when applying LZWEncode.

DETAILS :

Normally pdfwrite doesn't apply LZWEncode since it prefers FlateEncode.
Meanwhile ps2write needs LZWEncode, and we found unitialized variables in there.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.33]

2005-01-28 19:11 Igor Melichev

Implementing a convertion of a shading to a raster image for high level devices.

DETAILS :

If a high level device can't handle a shading,
it is being converted to a raster image.

This patch implements it only in OrderResources mode.
A generalization to "normal" mode will be done in a separate patch.

The generated bitmap sometimes appears too big since it
doesn't accout a bbox of a real shading coverage.
An optimization is coming soon.

1.The device virtual function pattern_manage now handles
a new request pattern_manage__shading_area.
If it returns 1, the graphics library will pass
the shading area as a special call to fill_path,
with passing NULL images\r state and NULL clipping path.
Such call immediately follows pattern_manage(...., pattern_manage__shading_area).
Currently it goes only to a special converter device (see below),
other devices and the default implementation return 0
for pattern_manage(...., pattern_manage__shading_area).

2. A new local type pdf_lcvd_t implements a subclass for
memory device, which is used especially for converting shadings
to raster image. It is defined locally in pdfwrite.
The subcalss redefines 4 device methods :

2.1. fill_rectangle with shifting the device space.
It is used to mapo the shading and its paths to the image coordinate system.

2.2. get_clipping_box returns the target clipping box,
to deceive a cut-off condition in the shading algorythm.

2.3. pattern_manage returns 1 for pattern_manage__shading_area.

2.4. fill_path is used only for handling the shading area.
It sets a clipping when instantiating the bitmap.

3. gdev_pdf_fill_path implements the convertion with (2).

4. gs_shading_fill_path doesn't set up a clipper device
when it works with the shading convertion device.
Instead that the clipping path is being passed through (2.4).

5,. patch_fill in gxshade6.c checks if the devices needs the
shading area, and if so, passes the area throuhg the special call to
fill_path.

EXPECTED DIFFERENCES :

None.

[src/devs.mak 1.121, src/gdevpdfb.c 1.24, src/gdevpdfd.c 1.44, src/gdevpdfg.h 1.36, src/gdevpdfi.c 1.58, src/gdevvec.h 1.16, src/gsshade.c 1.13, src/gx.h 1.43, src/gxdevcli.h 1.35, src/gxshade6.c 1.87]

2005-01-28 18:51 stefan

fix memory leak for indexed color space data when banding.

In gxclrast.c::clist_playback_band()
color_space.params.indexed.lookup.table.data
leaked on a per band basis.  table.size indicates allocated memory
which is freed at the end of the routine.
The reallocate case when multiple colorspaces are used per band was
correctly handled.

Using a more descriptive client name of "color_space indexed table".

[src/gxclrast.c 1.32]

2005-01-28 18:11 Igor Melichev

Fix : gx_forward_pattern_manage missed a return code.

EXPECTED DIFFERENCES :

None.

[src/gdevnfwd.c 1.27]

2005-01-26 18:48 Raph Levien

Fix: Resolve indirect object references in Widths array. Fixes bug
#687906.

[lib/pdf_font.ps 1.76]

2005-01-26 16:39 Jack Moffitt

Fix update_specific so that it gets the correct parameters for pdfwrite
testing.  It was previously using the superset of raster parameters.

[toolbin/tests/update_specific 1.5]

2005-01-25 22:22 Igor Melichev

(pdfwrite) : Don't skip white color while painting a pattern (continued 2).

DETAILS :

This change is important for ps2write only.
It is algorithmically equivalent for other invocations.

1. The patch http://ghostscript.com/pipermail/gs-cvs/2005-January/005163.html
broke the OrderResources mode. Fixed in gdevpdfu.c .
This is another fix to that.

2. Removed the hack about writing non-eexec fonts
because PDF specification doesn't allow it.
Rather ps2write can handle them, we use a PDF viewer
to debug the writer.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.65, src/gdevpdtb.c 1.32]

2005-01-25 21:23 Igor Melichev

Fix (PDF interpreter) : A minor change for fixing the repository consistency.

DETAILS :

A wrong revision of pdf_font.ps was committed by error and then removed.
This minor change in a space provides a right repository synchronization.

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.75]

2005-01-25 20:40 Ray Johnston

Fix for an infinite loop in a PDF file that uses Patterns. Bug 687802
for customer #850.

DETAILS:

The problem was that the DefaultQstate used when making a Pattern
was the device *BEFORE* the pdf14 device filter was inserted as
the device. If the underlying device had a different 'depth' than
the PDF14 device, the pattern cache lookup would always fail which
would then cause the fill to return e_RemapColor and perform the
PaintProc again. The 'depth' comparison is in gsptype1.c in the
gx_pattern_cache_lookup	function.

The fix is to set the DefaultQstate *AFTER* the pushpdf14devicefilter
is performed (and of course also reset it after popdevicefilter
is done).

Expected Differences:

None (we didn't have any regression tests that use Patterns in pages
with transparency). In fact, we only had two pages with ANY transparency:
ai2.pdf and dina3_watermark.pdf.

[lib/pdf_main.ps 1.90]

2005-01-25 20:28 Igor Melichev

ps2write : Improving the output file structure (continued).

DETAILS :

Removed a debug option that was added unintentionally.

EXPECTED DIFFERENCES :

None.

[lib/ps2write.bat 1.4]

2005-01-25 18:39 Igor Melichev

ps2write : Improving the output file structure (continued).

DETAILS :

Removed a debug option that was added unintentionally.

EXPECTED DIFFERENCES :

None.

[lib/ps2write.bat 1.3]

2005-01-25 18:33 Igor Melichev

ps2write : Improving the output file structure.

DETAILS :

1. Merge opdfread.ps and opdferrh.ps .
2. Fix a header commant in opdfread.
3. Remove opdferrh.ps from ps2write.bat and from documentation.
4. Change the documentation since ps2write is not a "device".

EXPECTED DIFFERENCES :

None.

[lib/opdfrerh.ps 1.3]

2005-01-25 18:30 Igor Melichev

ps2write : Improving the output file structure.

DETAILS :

1. Merge opdfread.ps and opdferrh.ps .
2. Fix a header commant in opdfread.
3. Remove opdferrh.ps from ps2write.bat and from documentation.
4. Change the documentation since ps2write is not a "device".

EXPECTED DIFFERENCES :

None.

[doc/Psfiles.htm 1.59, lib/opdfread.ps 1.37, lib/ps2write.bat 1.2]

2005-01-25 18:26 Igor Melichev

(pdfwrite) : Don't skip white color while painting a pattern (continued).

DETAILS :

1. The patch http://ghostscript.com/pipermail/gs-cvs/2005-January/005163.html
broke the OrderResources mode. Fixed in gdevpdfu.c .
2. Error codes were wrongly propagated in gdevpdfd.c .

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.43, src/gdevpdfu.c 1.64]

2005-01-25 11:18 Igor Melichev

Fix (the filling algorithm) : Drpouts could appear at Y-extremes of the path.

DETAILS :

Bug 687717 "Dropouts at Y-extremes when filling a path".

EXPECTED DIFFERENCES :

Normal, 72pdi :

"0.pdf"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"036-01.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"104-01.ps"
"109-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"289-01.ps"
"297-01.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"335-01.ps"
"336-01.ps"
"446-01-fixed.ps"
"455690.pdf"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso1.pdf"
"adesso6.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687546.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"escher.ps"
"file2.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"gslandscape.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"muur.eps"
"Openhuis_pdf_zw.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"ridt91.eps"
"RodinCIDEmbed.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"test.pdf"
"tiger.eps"
"time1.pdf"
"type3xshow.eps"
"unihaken-color.pdf"
"vasarely.ps"
"vsem0093.pdf"

Normal, 300dpi :

"0.pdf"
"001-13.ps"
"002-09.ps"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"01_001.pdf"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"027-13.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"036-01.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"102-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"118-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"175-01.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"231-01.ps"
"237-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"289-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"298-09.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"310-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"321-01.ps"
"321-05.ps"
"321-09.ps"
"321-13.ps"
"327-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
"442-01.ps"
"446-01-fixed.ps"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687472.ps"
"Bug687489.ps"
"Bug687546.ps"
"Bug687598.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687832.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"bulletin.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"CAT_LOGO.ps"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"doretree.ps"
"Es001-01.pdf"
"escher.ps"
"file.pdf"
"file2.pdf"
"Fixed_Original.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"mspro.pdf"
"muur.eps"
"non-sepqxd2distiller.pdf"
"Openhuis_pdf_zw.pdf"
"Original.pdf"
"p2b-100.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"QA_Inv.pdf"
"ridt91.eps"
"RodinCIDEmbed.pdf"
"rotate0.pdf"
"rotate180.pdf"
"rotate270.pdf"
"rotate90.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"Svd.pdf"
"test.pdf"
"tiger.eps"
"time1.pdf"
"Type3stringwidth.ps"
"type3xshow.eps"
"unihaken-color.pdf"
"UnusualFontMatrix.ps"
"vasarely.ps"
"vsem0093.pdf"

pdfwrite,72dpi :

"0.pdf"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"01_001.pdf"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"093-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"118-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"237-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"297-01.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"335-01.ps"
"336-01.ps"
"446-01-fixed.ps"
"455690.pdf"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso1.pdf"
"adesso6.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"annots.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687546.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687832.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"bulletin.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"escher.ps"
"file2.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"gslandscape.pdf"
"GS_Stroke_error.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"mspro.pdf"
"muur.eps"
"Openhuis_pdf_zw.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"RodinCIDEmbed.pdf"
"rotate180.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"test.pdf"
"tiger.eps"
"time1.pdf"
"type3xshow.eps"
"unihaken-color.pdf"
"vasarely.ps"
"vsem0093.pdf"

pdfwrite 300dpi:

"0.pdf"
"001-13.ps"
"002-09.ps"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"01_001.pdf"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"027-13.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"036-01.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"093-01.ps"
"102-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"118-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"175-01.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"231-01.ps"
"237-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"298-09.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"310-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"321-01.ps"
"321-05.ps"
"321-09.ps"
"321-13.ps"
"327-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
"442-01.ps"
"446-01-fixed.ps"
"483-05-fixed.ps"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso1.pdf"
"adesso7.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687472.ps"
"Bug687489.ps"
"Bug687546.ps"
"Bug687598.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687832.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"bulletin.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"CAT_LOGO.ps"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"doretree.ps"
"Es001-01.pdf"
"escher.ps"
"file.pdf"
"file2.pdf"
"Fixed_Original.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"GS_Stroke_error.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"mspro.pdf"
"muur.eps"
"ngnews.pdf"
"ngnews1.pdf"
"non-sepqxd2distiller.pdf"
"Openhuis_pdf_zw.pdf"
"Original.pdf"
"p2b-100.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"QA_Inv.pdf"
"RodinCIDEmbed.pdf"
"rotate0.pdf"
"rotate180.pdf"
"rotate270.pdf"
"rotate90.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"Svd.pdf"
"test.pdf"
"test3.pdf"
"tiger.eps"
"time1.pdf"
"Type3stringwidth.ps"
"type3xshow.eps"
"unihaken-color.pdf"
"UnusualFontMatrix.ps"
"vasarely.ps"
"vsem0093.pdf"
"xngnews.pdf"

[src/gxfill.c 1.121, src/gxfilltr.h 1.12]

2005-01-25 01:19 Ralph Giles

Always rebuild the jasper autoconf header when configure is run to prevent
the persistence of stale versions. Closes bug 687852.

[src/configure.ac 1.50]

2005-01-24 16:03 Igor Melichev

Fix (pdfwrite) : Register charproc XObjects with a page (continued);

DETAILS :

Fixing cygwin/gcc warnings in the last patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.h 1.35, src/gdevpdte.c 1.69, src/gdevpdtx.h 1.4]

2005-01-24 15:37 Igor Melichev

Fix (pdfwrite) : Register charproc XObjects with a page.

DETAILS :

If an XObject is uzed in a charproc,
it has to be added to the page resource list.

Bug 687894 "Wrong handling of Type 3 fonts (?)"

Generalized pdf_font_resource_t::used_fonts, pdf_register_charproc_font and
pdf_used_charproc_fonts for any resource type.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfj.c 1.33, src/gdevpdte.c 1.68, src/gdevpdtf.c 1.42, src/gdevpdtf.h 1.27, src/gdevpdts.c 1.28, src/gdevpdtx.h 1.3]

2005-01-24 12:19 Igor Melichev

Fix (pdfwrite) : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.67, src/gdevpdtt.c 1.99]

2005-01-24 12:00 Igor Melichev

Define more CMap resources.

DETAILS :

Adding more 4 redistributable Adobe CMaps.

EXPECTED DIFFERENCES :

None.

[Resource/CMap/Adobe-CNS1-3 1.1, Resource/CMap/Adobe-GB1-4 1.1, Resource/CMap/Adobe-Japan1-4 1.1, Resource/CMap/Adobe-Korea1-2 1.1]

2005-01-20 05:10 Dan Coby

Add switch -dNO_TN5044 to disable the TN 5044 pusedo operators.  These
operators are needed from some QuarkXpress files but cause probems with
some Illustrator 88 and Corel 9 files.  Also add documentation to Use.htm.
This is part of bug 687884.

[lib/gs_lev2.ps 1.36, doc/Use.htm 1.127]

2005-01-20 00:26 Ray Johnston

Add the "Identity-" CMaps to the decode list.

[lib/gs_ciddc.ps 1.14]

2005-01-20 00:21 Ralph Giles

Correct a comment typo.

[src/sjbig2.h 1.5]

2005-01-19 00:24 Dan Coby

Fix for 687897 There are still devices not switched to new API.
This change implements the DeviceN color related changes in the device
API four these four source files.  These devices are not normally part of
the Ghostscript build but they are present in the GS sources.

[src/gdevccr.c 1.6, src/gdevcp50.c 1.7, src/gdevifno.c 1.6, src/gdevmgr.c 1.8]

2005-01-17 17:36 Ralph Giles

Add new files to the documentation listing.

[doc/Develop.htm 1.144, doc/Psfiles.htm 1.58]

2005-01-17 14:58 Igor Melichev

(pdfwrite) : Don't skip white color while painting a pattern.

DETAILS :

Bug 687890 "pattern misconverted".

1. Don't skip white color while painting a pattern (gdevpdfd.c).

2. The "%PDF-" file tag was erroneusely written into the pattern stream (gdevpdfu.c).

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.42, src/gdevpdfu.c 1.63]

2005-01-13 17:07 Igor Melichev

(ps2write) : Convert unsupported font types into bitmap fonts (continued).

DETAILS :

This patch is a part of ps2write project.
It has no effect with "usual" invocation of Ghostscript.

1. A code for setting the device parameter HaveCIDSystem was missed from the last patch.
Adding it now.

2. Replace a magic constant with a meanful name psdf_version_ll3.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfp.c 1.42, src/gdevpsdf.h 1.25]

2005-01-13 16:58 Igor Melichev

(ps2write) : Convert unsupported font types into bitmap fonts.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "usual" invocation of Ghostscript.

1. If the target device doesn't support Postscript version 2010,
convert Type 42 fonts into bitmap fonts.

2. Ever convert Type1C into bitmaps since Postscript
level 2 can't handle Type 2 charstrings.

3. Convert CIDFontType0 into bitmap if the target device has no
CID system installed or the font has Type 2 subfonts.

4. Convert CIDFontType2 into bitmap if the target device has no
CID system installed or it doesn't support Postscript version 2010.

5. A new device parameter HaveCIDSystem is defined to the pdfwrite device
to provide information for (3), (4).

A new function gs_cid0_has_type2 is defined to implement (3).

Also fixed a header comment gs_cid0_indexed_font, which was entirely wrong.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.98, src/gdevpsdf.h 1.24, src/gsfcid.c 1.14, src/gxfcid.h 1.14]

2005-01-13 12:26 Igor Melichev

(ps2write) : Require lesser encoding resources.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "usual" invocation of Ghostscript.

1. Defined a new device parameter PSVersion to the pdfwrite device.
   It is being ignored without OrderResources.
   Reserved for future development.

2. pdf_refine_encoding_index allows lesser encodings with OrderResources.

3. MacRomanEncoding and MacGlyphEncoding are still needed for True Type fonts.
Their access has been simplified in lib/opdfread.ps, lib/opdfrerh.ps .

4. Created gs/lib/ps2write.bat to simplify the further maintenance
   of the file list to be concatenated.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfp.c 1.41, src/gdevpdtt.c 1.97, src/gdevpsdf.h 1.23, lib/opdfread.ps 1.36, lib/opdfrerh.ps 1.2, lib/ps2write.bat 1.1]

2005-01-12 18:46 Ralph Giles

Update broken Adobe documentation links. Closes bug 687892.

[doc/Ps2epsi.htm 1.37, doc/Ps2pdf.htm 1.75, doc/Readme.htm 1.62, doc/Use.htm 1.126]

2005-01-12 18:02 Ralph Giles

Correct a typo in the installation file list. Closes bug 687891.

[src/unixinst.mak 1.38]

2005-01-12 10:23 Igor Melichev

(ps2write) : Provide a compatibility to Adobe CPSI.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "regular" invocation.

1. Defined an error handler and necessary GS-specific operators in a new file opdfrerh.ps .
2. Defined the missed debug switch TTFDEBUG.
3. Defined a debug printing 'printdict', 'printfont'.
4. Fixed an unconformity in FunctionToProc4 with 'run'.
5. Fixed an unconformity: encoding must not be packed arrays ('packedarray' in opdfrerh.ps).

A minor massive change : inserted a space between '=' to
distinguish temporary and permanent debug printing.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.35, lib/opdfrerh.ps 1.1]

2005-01-12 10:09 Igor Melichev

Fix (pdfwrite) : Wrong options were passed to psf_write_type1_font.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "regular" invocation (when OrderResources=false).

EXPECTED DIFFERENCES :

None.

[src/gdevpdtb.c 1.31]

2005-01-11 12:34 Igor Melichev

[Log message beg]
Fix : Unimplemented CIDFont feature with a Type 3 font descendent (continued).

DETAILS :

This is a partial fix for the bug 687875
"pdfwrite : Type 0 FMapType 9 font with a Type 3 descendent converts to bitmaps".

The old code created two fonts and duplicated the text.
With this path the font still converts to bitmaps,
but the text duplication is fixed.

EXPECTED DIFFERENCES :

pdfwrite Bug687845.ps

[src/gdevpdtt.c 1.96]

2005-01-10 14:54 Alex Cherepanov

Ignore / as a name of BaseEncoding; recover broken PDF files generated
by J.D.Edwards OneWorld (B7333).
Fix bug 687786 from customer 220.

[lib/pdf_font.ps 1.74]

2005-01-10 14:33 Igor Melichev

Fix (the new filling algorithm) : Prevent painting outside the clipping box.

DETAILS :

Bug 687872 "access violation in GS 8.50".

When a trapesoid degenerates to a rectangle,
the old code wrongly truncated it with the clipping box.

Minor change : Moved ybot, ytop definitions closer to their usage.

Due to another known bug 687717, this patch may sometimes cause a regression,
which looks as another missed pixel at a path's Y extreme.
Such regression, when it appears with this patch,
to be considered as a part of the problem 687717.
Expected differences are such cases.

EXPECTED DIFFERENCES :

Normal, 300 dpi :

"Clarke Tate Manns Chinese.ai"
"doretree.ps"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"QA_Inv.pdf"
"shading_prob_800.ps"

pdfwrite 300 dpi :

"doretree.ps"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"QA_Inv.pdf"

[src/gxfilltr.h 1.11]

2005-01-10 11:32 Igor Melichev

Fix : CDevProc|Metrics|Metrics2 did not work with CIDFontType 0 (continued 2).

DETAILS :

Bug 687832 (PDF interpreter) : CID Font in PDF

The CDevProc output was transformed with w CID font leaf's FontMatrix.
See comment in code.

EXPECTED DIFFERENCES :

None.

[src/gxchar.c 1.44]

2005-01-06 17:45 Ray Johnston

Fix for possibly non-compliant PDF where the /DecodeParms for a stream is
an array, but the /F consists of a single filter name. Bug 687861 for
customer 700.

[lib/pdf_base.ps 1.45]

2004-12-25 10:49 Alex Cherepanov

Search the whole PDF file for the last occurrence of %%EOF string starting
from the last 1024 bytes. Following Acrobat example, accept invalid PDF files
that have large number of junk bytes at the end.
Fix bug 687474 from customer 580.

[lib/pdf_main.ps 1.89]

2004-12-23 23:48 Igor Melichev

Fix : CDevProc|Metrics|Metrics2 did not work with CIDFontType 0 (continued).

DETAILS :

Bug 687846 "parenthesis misplaced and text strings too long with vertical text".
The bug title is mosleading - actually all glyphs were shifted,
but parenthesis were shifted in another direction due to a different WMode.

We didn't pass actual glyph width to CDevProc when
use_FontBBox_as_Metrics2 is true - see the patch.
I reacll that I wrote this portion of code from scratch 3 years ago.
Our test base did not include test cases for it.
Now we got one.

EXPECTED DIFFERENCES :

None.

[src/zchar1.c 1.43]

2004-12-22 18:52 Igor Melichev

Fix : Unimplemented CIDFont feature with a Type 3 font descendent.

DETAILS :

Bug 645316 Quark EPS file with CID fonts
Bug 687845 text doesn't appear from embedded japanese font
Bug 687847 text missing from CIDFont

From PLRM3 section 5.11 page 389 :

Under special conditions, a CID can be used when the descendant is a Type 3
base font. The font's BuildGlyph or BuildChar procedure is invoked to render a
character whose code is the last byte originally extracted from the show string.
If this procedure executes setfont to establish a CIDFont as the current font
and then executes a show operation on a string consisting of just that character
code, the code is ignored; instead, the CID determined by the earlier CMap
mapping is used to look up the glyph in the CIDFont. This special case exists
for compatibility with applications that substitute Type 3 fonts for base fonts
in a composite font hierarchy to achieve certain special effects.

This patch fixes the PS interpreter,
but pdfwrite processing needs a separate improvement,
which is described in the new bug 687875.

EXPECTED DIFFERENCES :

None.

[src/gstext.c 1.19, src/gxtext.h 1.16, src/int.mak 1.133, src/zchar.c 1.16]

2004-12-21 20:13 Igor Melichev

Fix (TT interpreter) : Provide a tolerance to the FDef array overflow.

DETAILS :

Bug 687858  /invalidfont in --charpath--.
A buggy TT fopnt defines more functions than the max profile specifies.

EXPECTED DIFFERENCES :

None.

[src/ttobjs.c 1.9]

2004-12-21 11:27 Igor Melichev

Fix (PDF interpreter) : The interpretation must not depend on the font subset prefix.

DETAILS :

Bug 687856 "PDF interpretation depends on the font subset prefix.".

1. Remaned pdfcachefont into pdffindcachedfont for a better reflection of its function.
2. Defined pdfaddcachedfont.
3. Used it immediately when an embedded font is loaded.
4. Added a comment to code. See it for more details.

EXPECTED DIFFERENCES :

pdfwrite tpc2.ps

[lib/pdf_font.ps 1.73]

2004-12-21 08:53 Igor Melichev

Fix (pdfwrite) : Propagate error code from setup_image_compression.

DETAILS :

Bug 687854 "-dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode" doesn't work .

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.32]

2004-12-20 22:35 Igor Melichev

Fix : Targets gconfxx.h and ld.tr had an incorrect dependence in the makefile.

DETAILS :

Bug 687059 "Re-building a ready gswin32.exe".

The old rule

 $(ld_tr) : $(gconfig_h)

wrongly established a dependence opposite to the file modification order.
Diagnosed with inserting "echo xxxxxxxxxxx" after the rule above.
Made the order of targets to be same as the order of
file modifications when they are created with genconf.exe and echogs.exe .

EXPECTED DIFFERENCES :

None.

[src/gs.mak 1.30]

2004-12-20 22:22 Igor Melichev

Fix : Restore missed dependencies on gconfxx.h .

DETAILS :

This is a preparation for fixing the bug
Bug 687059 "Re-building a ready gswin32.exe".

We prefer to commit it separately, since it's definitely an independent bug.

EXPECTED DIFFERENCES :

None.

[src/int.mak 1.132, src/lib.mak 1.204]

2004-12-20 22:17 Igor Melichev

Fix : Completely remove the platform dependent target lib.tr from makefiles.

DETAILS :

This is a preparation for fixing the bug
Bug 687059 "Re-building a ready gswin32.exe".
The file lib.tr was created for old linkers,
which can't handle objs and libs in a single list file.

This change affects FAPI, which only uses a list of libs,
and only on Windows and OS/2 platforms.
We did not test Borland and Watcom compilers,
but unlikely FAPI is compiled with them.

EXPECTED DIFFERENCES :

None.

[src/bcwin32.mak 1.36, src/genconf.c 1.10, src/gs.mak 1.29, src/msvc32.mak 1.69, src/msvccmd.mak 1.24, src/msvclib.mak 1.29, src/os2.mak 1.44, src/watcw32.mak 1.33, src/winint.mak 1.24]

2004-12-19 17:24 Igor Melichev

Fix (pdfwrite) : The "NeverEmbed" logics was broken (continued 2).

DETAILS :

Bug 687836 "Crash with -dNeverEmbed".
Fixes a cast in the previous patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtd.c 1.20]

2004-12-19 17:19 Igor Melichev

Fix (pdfwrite) : The "NeverEmbed" logics was broken (continued).

DETAILS :

Bug 687836 "Crash with -dNeverEmbed".
Fixes 'const' in the previous patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtd.c 1.19]

2004-12-19 17:10 Igor Melichev

Fix (pdfwrite) : The "NeverEmbed" logics was broken.

DETAILS :

Bug 687836 "Crash with -dNeverEmbed".
It was an inaccuracy (incomplete testing) when implementing
PDFW_DELAYED_STREAMS for the ps2write project.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtd.c 1.18]

2004-12-17 20:57 Ray Johnston

Fix for invalid (zero width) BBox in PDF Form Xobject or Annotation.
Bug 687862 for customer 770.

[lib/pdf_draw.ps 1.89]

2004-12-16 12:34 Igor Melichev

Fix (PDF interpreter) : Prefer 'post' to cmap 1.0, because obsolete PDF writers misuse the latter.

DETAILS :

Bug 687828 "pages retain some of earlier pages displayed/"

The bug title above is misleading.
Real problem is missing characters and rendering .notdef instead.

This patch improves hewristics for choosing an encoding
for True Type fonts. Obsolete versions of Distiller and Ghostscript
wrote a cmap 1.0 (Macintosh Roman) into a PDF, which really uses a
random encoding. For example, the test case of the bug 687828
encodes Arabian characters with cmap 1.0.

Thits patch prefers to use 'post' table instead cmap 1.0,
when a 'post' table presents, and font resource dictionary
doesn't specify Encoding.

Also improved a debug printing.

EXPECTED DIFFERENCES :

None.

[lib/gs_ttf.ps 1.40, lib/gs_typ42.ps 1.7]

2004-12-15 23:21 Igor Melichev

Fix : A hang adding over 256 glyphs for a stable font copy.

DETAILS :

Bug 687816 "Hang in named_glyph_slot_hashed".

1. Added gs_copied_font_data_s::num_glyphs to monitor
the current number of glyphs in a stable font copy (gxfcopy.c).

2. copy_glyph_data maintains gs_copied_font_data_s::num_glyphs (gxfcopy.c).

3. gs_copied_can_copy_glyphs checks whether the preallocated
size of the glyphs array doesn't exceed (gxfcopy.c).

4. copy_glyph_data is fixed to return error code when
trying to add a glyph over the preallocated size of the glyphs array (gxfcopy.c).

5. pdf_obtain_font_resource_encoded is changed to handle the case when
new glyphs overflow the font copy (gdevpdtt.c).

The changes above fix the bug, but we also provide an additional optimization
with GLYPHS_SIZE_IS_PRIME 1 (gxfcopy.c):

6. Preallocate at least 257 ghyphs rather than 256 ones by the old code;
This coners a font of 256 glyphs and 1 .notdef  (gxfcopy.c).
(Well, that could fix the hang in the sample case of the bug 687816,
but generally there exist other cases due to the font merging,
which require the changes 1-5 above.

7. Use primes numbers for the size of glyphs array instead powers of 2
against unprodactive expense of RAM (gxfcopy.c).

When the changes 5 was done, a regression happened with tpc2.ps :
pdfwrite generated an incorrect PDF. To fix that, we forced to do more changes :

8. pdf_register_charproc_font recieved a gs_id of the PS font instead
the PDF object id. It caused a problem with multiple muster fonts,
because MM instances have same id as the MM font.
pdf_encode_string is changed to pass a correct resource id (gdevpdte.c),

9. Since tpc2.ps generates hundreds of MM font instances, the field
pdf_font_resource_s::u.s.used_fonts may not have a staticly defined size.
replaced with a dynamicly allocated array (gdevpdtf.h, gdevpdte.c).

10. Garbager descriptor for pdf_font_resource_s is changed to maintain (9).

11. A new function pdf_find_resource_by_resource_id is defined for
the correct implementation of pdf_used_charproc_fonts (gdevpdfu.c).

After it another tpc2.ps regression persisted : the character 'y'
dissapperaed in some words. The following changes are done to fix that :

12. Improved thge hash function in pdf_add_subset_prefix (gdevpdtb.c).

13. Defined FINE_GLYPH_USAGE 1 for a better precision of the font subset,
in the case when a PS interpreter callout happens fro CDevProc or for a Type 3 BuildChar
(gdevpdfx.h, gdevpdte.c). Currently it works for non-CID fonts only.

14. Improved the diagnistics for the missed glyph in a Type 1 font (gs_type1.ps).

Actually the last regression reflects another problem in the PDF interpreter,
which is described in a new bug 687856.

EXPECTED DIFFERENCES :

pdfwrite :

test-setweightvector.ps
tpc2.ps

The distilled tpc2.ps gets 1 progression and 1 regression.
The progression is the glyph width. The regression is an ununiform
stem width while rendering the PDF due to problem in the PDF interpreter.
We describe that problem in the new bug 687857.

[src/gdevpdfu.c 1.62, src/gdevpdfx.h 1.104, src/gdevpdtb.c 1.30, src/gdevpdte.c 1.66, src/gdevpdtf.c 1.41, src/gdevpdtf.h 1.26, src/gdevpdtt.c 1.95, src/gxfcopy.c 1.55, lib/gs_type1.ps 1.16]

2004-12-14 12:42 Igor Melichev

Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 5).

DETAILS :

Interval boundaries for subfunctions of a stitching function got an
artithmetic error, which caused the interval to move outside the
subfunction domain. Bug 687840 "/rangecheck in --fill--".
The effect only appeared with MSVC6 release build.

The hunk #2 of this patch fixes the particular problem, but
we prefer to provide a better safety with the hunk #3.

EXPECTED DIFFERENCES :

None.

[src/gsfunc3.c 1.23]

2004-12-14 09:32 Igor Melichev

Fix (TT grid fitting) : An assertion failed in the spot analyzer (continued).

DETAILS :

A condition for a stem prolongation was too weak.
Bug 687823 "assert in gzspotan.c with ttcf2cid font".

This re-applies the resent patch, which was reverted before 8.50 release. See
http://ghostscript.com/pipermail/gs-cvs/2004-December/005087.html
http://ghostscript.com/pipermail/gs-cvs/2004-December/005091.html

EXPECTED DIFFERENCES :

The list of differences, which are caused by the patch, is applied below.
Meanwhile the baseline was already upgraded with them :
http://ghostscript.com/pipermail/gs-regression/2004-December/001324.html,
and then the patch was reverted. When the patch was reverted,
the reverse difference should have appeared in the regression report,
but it did not appear for an unclear reason.

72dpi :

01_001.pdf
159.pdf
289-01.ps
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf
type42_glyph_index.ps

normal, 300dpi :

01_001.pdf
159.pdf
289-01.ps
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

pdfwrite 300 dpi :

01_001.pdf
159.pdf
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
shading_prob_800.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

[src/gzspotan.c 1.13]

2004-12-13 17:54 Ralph Giles

Bump the version after the 8.50 release.

[lib/gs_init.ps 1.116, src/gscdef.c 1.52, src/version.mak 1.80]


Version 8.50 (2004-12-10)

This is the first release in the new stable series of Ghostscript. In addition to many bug fixes it contains numerous new features. Most obvious will be improved font handling and rasterization, and better support for PDF 1.4 and 1.5 documents.

New features since the last stable release:

This release also has major internal improvements toward thread safety, although we have not yet reached this goal. Nevertheless Ghostscript should be more robust when used as a library, and these changes were an important precursor to complete virtualization.

The following bug numbers were open at the time of this release:

405501, 430175, 446344, 458780, 463688, 465936, 487953, 493348, 526099, 526491, 530011, 535366, 535932, 578865, 592160, 603934, 610478, 614298, 626295, 674418, 677324, 685335, 686747, 686750, 686816, 686819, 686824, 686841, 686842, 686843, 686853, 686865, 686867, 686919, 686980, 686996, 687011, 687012, 687013, 687039, 687059, 687063, 687084, 687086, 687095, 687105, 687108, 687110, 687122, 687125, 687146, 687168, 687174, 687193, 687196, 687203, 687219, 687221, 687229, 687231, 687243, 687251, 687257, 687259, 687271, 687280, 687295, 687297, 687298, 687303, 687314, 687316, 687324, 687327, 687341, 687342, 687345, 687346, 687360, 687373, 687375, 687394, 687397, 687399, 687401, 687410, 687414, 687434, 687435, 687445, 687460, 687468, 687473, 687474, 687475, 687480, 687484, 687485, 687492, 687497, 687498, 687514, 687518, 687520, 687523, 687525, 687529, 687531, 687535, 687536, 687537, 687539, 687541, 687545, 687551, 687558, 687559, 687560, 687561, 687583, 687593, 687595, 687600, 687608, 687611, 687621, 687622, 687628, 687630, 687633, 687642, 687643, 687644, 687650, 687654, 687657, 687661, 687663, 687666, 687669, 687674, 687676, 687677, 687678, 687679, 687680, 687682, 687684, 687686, 687694, 687695, 687696, 687697, 687702, 687707, 687712, 687715, 687717, 687721, 687727, 687728, 687729, 687731, 687735, 687738, 687754, 687756, 687769, 687772, 687775, 687778, 687780, 687782, 687783, 687786, 687791, 687793, 687795, 687796, 687800, 687802, 687803, 687805, 687806, 687808, 687809, 687813, 687814, 687815, 687816, 687820, 687822, 687823, 687825, 687826, 687827, 687828, 687830, 687831, 687832, 687834, 687835, 687836, 687837, 687838, 687840, 687842, 687843, 687844, 687845, 687846, 687847, 687848, 687849.

Incompatible changes

No known incompatible changes at this point

Changelog

2004-12-10 23:48 Ralph Giles

Update 3rd party library versions to match the latest releases.

[src/all-arch.mak 1.16, src/bcwin32.mak 1.35, src/dvx-gcc.mak 1.29, src/macos-mcp.mak 1.33, src/macosx.mak 1.26, src/msvc32.mak 1.68, src/msvclib.mak 1.28, src/openvms.mak 1.39, src/openvms.mmk 1.31, src/os2.mak 1.43, src/ugcclib.mak 1.29, src/unix-gcc.mak 1.48, src/unixansi.mak 1.39, src/watclib.mak 1.24, src/watcw32.mak 1.32]

2004-12-10 23:28 Ralph Giles

Propagate release date and version changes to the documentation.

[doc/API.htm 1.48, doc/Bug-form.htm 1.44, doc/Bug-info.htm 1.43, doc/C-style.htm 1.50, doc/Commprod.htm 1.36, doc/Copying.htm 1.34, doc/DLL.htm 1.38, doc/Deprecated.htm 1.15, doc/Details8.htm 1.15, doc/Develop.htm 1.143, doc/Devices.htm 1.84, doc/Drivers.htm 1.52, doc/Fonts.htm 1.45, doc/Helpers.htm 1.38, doc/History1.htm 1.34, doc/History2.htm 1.34, doc/History3.htm 1.34, doc/History4.htm 1.34, doc/History5.htm 1.36, doc/History6.htm 1.51, doc/History7.htm 1.39, doc/History8.htm 1.20, doc/Htmstyle.htm 1.39, doc/Install.htm 1.49, doc/Issues.htm 1.46, doc/Language.htm 1.90, doc/Lib.htm 1.38, doc/Maintain.htm 1.45, doc/Make.htm 1.84, doc/New-user.htm 1.55, doc/Projects.htm 1.62, doc/Ps-style.htm 1.32, doc/Ps2epsi.htm 1.36, doc/Ps2pdf.htm 1.74, doc/Psfiles.htm 1.57, doc/Readme.htm 1.61, doc/Release.htm 1.89, doc/Source.htm 1.34, doc/Tester.htm 1.34, doc/Testing.htm 1.32, doc/Unix-lpr.htm 1.34, doc/Use.htm 1.125, doc/Xfonts.htm 1.34, doc/gs-vms.hlp 1.32, man/dvipdf.1 1.32, man/font2c.1 1.32, man/gs.1 1.33, man/gslp.1 1.32, man/gsnd.1 1.32, man/pdf2dsc.1 1.31, man/pdf2ps.1 1.33, man/pdfopt.1 1.31, man/pf2afm.1 1.32, man/pfbtopfa.1 1.33, man/printafm.1 1.32, man/ps2ascii.1 1.31, man/ps2epsi.1 1.30, man/ps2pdf.1 1.37, man/ps2pdfwr.1 1.36, man/ps2ps.1 1.39, man/wftopfa.1 1.32]

2004-12-10 23:22 Ralph Giles

Update version and date for the 8.50 release. Also some additions to the
release notes.

[doc/News.htm 1.158, lib/gs_init.ps 1.115, src/gscdef.c 1.51, src/version.mak 1.79]

2004-12-10 23:00 Ralph Giles

Disable JPXDecode support in the default MacOS Codewarrior build, pending
resolution of some functional issues. The autoconf gcc build can be used
as a workaround.

[src/macos-mcp.mak 1.32]

2004-12-10 00:34 Ralph Giles

Correct an ambiguous '#if DEBUG' to an '#ifdef DEBUG'. Part of the fix
for bug 687830.

[src/vdtrace.c 1.10]

2004-12-09 08:27 Ralph Giles

Additional clean up for the MacOS CodeWarrior build. Adds a dependency
on gconfigd.h so it gets built when the project file is generated, and
include a search path for the jasper library headers.

[src/macgenmcpxml.sh 1.12, src/macos-mcp.mak 1.31]

2004-12-09 08:24 Ralph Giles

Update the MacOS test framework to current code.

[src/dmmain.c 1.5, src/dmmain.r 1.2]

2004-12-09 03:47 Ralph Giles

Use #ifdef DEBUG instead of the ambiguous #if DEBUG.

[src/gp_macio.c 1.37]

2004-12-09 02:43 Ralph Giles

Add a missing dependency on the DeviceN code to the tiffsep device.

[src/devs.mak 1.120]

2004-12-09 00:59 Ralph Giles

Modify the MacOS polling implementation to use the new libctx accessor
for the callbacks.

[src/gp_macpoll.c 1.3]

2004-12-08 22:30 Ralph Giles

Update the jbig2 makefile for the latest release. We now require
jbig2dec 0.7 if you want to compile in the jbig2dec source instead
of linking to the shared library.

[src/jbig2.mak 1.9]

2004-12-08 21:35 stefan

Delaying changes for assertions and gzspotan.c till after 8.50 release.

[src/fapi_ft.c 1.14, src/gdevddrw.c 1.27, src/gdevpdfc.c 1.51, src/gdevpsf1.c 1.20, src/gdevpsft.c 1.35, src/gendev.c 1.7, src/gserror.h 1.9, src/gsfcmap.c 1.27, src/gsfunc0.c 1.23, src/gslibctx.c 1.7, src/gsmisc.c 1.22, src/gxccman.c 1.30, src/gxcht.c 1.15, src/gxdhtserial.c 1.7, src/gxfdrop.c 1.16, src/gxpflat.c 1.44, src/gxshade1.c 1.35, src/gxshade6.c 1.86, src/gzspotan.c 1.12, src/siinterp.c 1.7, src/write_t1.c 1.5, src/write_t2.c 1.7]

2004-12-08 19:52 Ralph Giles

Mention the need to run autogen.sh to generate the configure script when
building from CVS.

[doc/Make.htm 1.83]

2004-12-08 19:47 Ralph Giles

MacOS platform build cleanup.

DETAILS:

Since the libctx changes, stdio hasn't been directly available.
Therefore we no longer support '-' as a special filename in
(the obsolete) gp_open_printer(). We change an fprintf(stderr,...)
to an eprintf() which is more correct in any case.

This change also removes the fprintf() and fputs() implementations
in the MacOS build. Metrowerks CW libc has for some time provided
implementations, but they're even less needed now that we're being
a proper library.

[src/gp_macio.c 1.36]

2004-12-08 18:09 Igor Melichev

Fix (TT grid fitting) : An assertion failed in the spot analyzer.

DETAILS :

A condition for a stem prolongation was too weak.
Bug 687823 "assert in gzspotan.c with ttcf2cid font".

EXPECTED DIFFERENCES :

72dpi :

01_001.pdf
159.pdf
289-01.ps
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf
type42_glyph_index.ps

normal, 300dpi :

01_001.pdf
159.pdf
289-01.ps
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

pdfwrite 300 dpi :

01_001.pdf
159.pdf
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
shading_prob_800.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

[src/gzspotan.c 1.11]

2004-12-08 05:04 Ralph Giles

Convert gs_malloc() calls in the MacOS gp_* code to unwrapped libc malloc()
now that gs_malloc() requires a memory pointer, which is not available.

Partial fix for bug 687830.

DETAILS:

Only the call in getenv() is active; the one in gp_init() is not used.

This may have been what the earlier libctx patch was trying to do when
it touched gp_macio.c, changing the function call, but not the arguments,
and breaking the

[src/gp_mac.c 1.17, src/gp_macio.c 1.35]

2004-12-08 01:20 stefan

Pulled silly macro to try to disuade the direct use of assert()

[src/gserror.h 1.8]

2004-12-08 00:31 Alex Cherepanov

Provide back-up definitions of /-| /RD /|- /ND /| /NP for the benefit of
embedded PDF fonts that forget to define them. Issue a warning when they are
used. Don't fix PS interpreter because Distiller doesn't accept such fonts
either.
fix bug 687824

[lib/pdf_font.ps 1.72]

2004-12-08 00:18 stefan

forgot an #undef to correctly disable assert()

[src/gsmisc.c 1.21]

2004-12-08 00:06 stefan

Moved include outside of function body to fix MSVC compile error.

[src/gsmisc.c 1.20]

2004-12-07 23:25 stefan

Added macros for assertions:

GS_ASSERT(false)
returns -1 in a release system
asserts in a debug system

GS_DBG_ASSERT(false)
is a NOP in a release system
asserts in a debug system

Both versions will printf to stderr first.

Raw assert() should not be used.
GS_ASSERT will not compile in a void function, as it returns -1.
This means you can not use assertions to change the standard error return
exception handline mechanism in Ghostscript.
You can use them to catch programmer usage errors in a debug build.

gs_misc::gs_assert() is the one place the operating system's assert is called.
This can be modified in a embedded system, again assert is only called in
a debug build.

[src/fapi_ft.c 1.13, src/gdevddrw.c 1.26, src/gdevpdfc.c 1.50, src/gdevpsf1.c 1.19, src/gdevpsft.c 1.34, src/gdevpx.c 1.15, src/gendev.c 1.6, src/gserror.h 1.7, src/gsfcmap.c 1.26, src/gsfunc0.c 1.22, src/gslibctx.c 1.6, src/gsmisc.c 1.19, src/gxccman.c 1.29, src/gxcht.c 1.14, src/gxdhtserial.c 1.6, src/gxfdrop.c 1.15, src/gxpflat.c 1.43, src/gxshade1.c 1.34, src/gxshade6.c 1.85, src/gzspotan.c 1.10, src/siinterp.c 1.6, src/write_t1.c 1.4, src/write_t2.c 1.6]

2004-12-07 10:24 Igor Melichev

Fix : Disable an unuseful warning from MSVC8.

[src/msvccmd.mak 1.23]

2004-12-07 05:28 Ralph Giles

Correct an incorrect cast in the jpx filter. Bug 687831.

[src/sjpx.c 1.11]

2004-12-07 05:03 Ralph Giles

Add a const qualifier to the jpx filter memory contest. Corrects an error
with Metrowerks CodeWarrior 8.

[src/sjpx.h 1.4]

2004-12-07 02:29 Ralph Giles

Remove the calls to set the TEXT filetype for the source files. This
has not been necessary for the last few versions of CodeWarrior, and
doing it correctly for the hierarchical jasper source is tedious.

[src/macos-mcp.mak 1.30]

2004-12-07 02:25 Ralph Giles

Add jasper.mak to the MacOS CW build.

[src/macos-mcp.mak 1.29]

2004-12-06 18:02 Ralph Giles

Enable compilation of the jasper library source for JPEG 2000 image stream
support in the MacOS Code Warrior build.

[src/macos-mcp.mak 1.28]

2004-12-06 13:17 Igor Melichev

Fix : Improvinmg documentation for recently improced algorythms.

DETAILS :

This patch only changes comments in C code.

EXPECTED DIFFERENCES :

None.

[src/gxfill.c 1.120, src/gxfillsl.h 1.7, src/gxfilltr.h 1.10, src/gxshade6.c 1.84, src/gzspotan.c 1.9]

2004-12-03 06:41 Ralph Giles

Decide to run a recursive configure for the jasper source based on
existence of the new jas_config_ac.h instead of the old jas_config.h

We now require the 1.701.0-gs2 (or later) release to build out of the
box. Other versions can still be used by running their configure
manually and touching this file, or by building a separate shared
library.

[src/configure.ac 1.49]

2004-12-01 20:02 Ray Johnston

Add JPXDecode filter to the default Windows MSVC build. This is based on
the "jasper" source and must be at least version 26 from the svn repository
using svn co http://svn.ghostscript.com:8080/jasper/trunk jasper

DETAILS:

This is a fairly minor modification to the gs MSVC makefiles, but it did
require changing our jasper version (that had accumulated many changes)
to hook in the correct jas_config***.h file and to avoid using windows.h
(so we can build with /Za). See the jasper svn for details of the changes.

EXPECTED DIFFERENCES:

none. (we didn't have any PDF 1.5 files with JPEG2000 images in the
comparefiles).

[src/msvc32.mak 1.67, src/winlib.mak 1.24]

2004-12-01 17:57 Raph Levien

Fix: in implementation of n operator in clip mode, put pathbbox in stopped
context so that completely empty paths have the same behavior as paths
with empty bbox, rather than causing an error. Fixes bug #687820.

DETAILS

   The test file has a "n W n" sequence, which is a request to clip to
a totally empty path. The error comes from code added to pdf_ops.ps v
1.33 to handle the case where a path is defined but has an empty
bbox. See bug 687136 for more details on this change. Comment #8 of
that bug report suggests that our PDF interpreter always maintains a
currentpoint, which would justify the use of an unprotected
pathbbox. However, that assumption seems to be false. This fix wraps
the pathbbox added in the 1.33 change in a stopped context.

[lib/pdf_ops.ps 1.37]

2004-12-01 08:17 Ralph Giles

Add a platform-specific JASPERCFLAGS makefile variable to assist with
proper compilation of the jasper jpeg2k library. Set this variable
correctly in the autoconf build.

DETAILS:

The jasper library natively supports building under both autoconf+cc and
MSVC, but expects a preprocessor define to be set to distinguish the
two. While we do carefully construct a special JAS_CC for compiling the
jasper source into Ghostscript, as with all the other 3rd party
libraries, there is only a facility to set special CFLAGS globally.

This change adds a new top-level makefile variable for passing
platform-specific CFLAGS into gs.mak for addition to that global
set.

Also, set JASPERCFLAGS=-DJAS_CONFIGURE in Makefile.in so that the jasper
sourcr expects the autoconf generated configuration header when
compiling as part of Ghostscript.

[src/Makefile.in 1.40, src/gs.mak 1.28]

2004-11-30 20:31 Russell Lang

Return error code when using -f filename.
Fix bug #687811 strange behavior with -f.

[src/imainarg.c 1.34]

2004-11-29 23:18 Russell Lang

When doing a Windows debug build, link against the debug run time libraries.

[src/msvccmd.mak 1.22]

2004-11-29 03:25 Russell Lang

Correct the SubfontID values in the example substitutions.

[doc/Use.htm 1.124]

2004-11-24 20:09 Russell Lang

Correct errors in .buildnativefontmap procedure.

DETAILS:
The enumeration of fonts returned by .getnativefonts
was being given "array true" which was causing a
typecheck in forall because of a missing exch.
It should have been "true array".

Also, .findfontname was returning a name rather than a
string, so cvn was failing because it was already a name.

[lib/gs_fonts.ps 1.48]

2004-11-24 08:12 Russell Lang

When using CJK Windows TrueType fonts, add the Windows fonts
directory to the GS_LIB registry variable to allow access to this
directory when SAFER is used.

[src/dwsetup.cpp 1.10]

2004-11-23 12:18 Igor Melichev

Fix (TT interpreter) : The component 'usage' buffer size was wrongly computed.

DETAILS :

Bug 687810 "/invalidfont in --@0x1e36c".

Note that the error message appears some misleading due to sbx, sby is placed in ostack
for type42_finish. Rather we could fix it in this particular case in type42_finish,
a complete fix appears too complicated. So for now leave it as it is.

EXPECTED DIFFERENCES :

None.

[src/ttfmain.c 1.32]

2004-11-23 07:44 Igor Melichev

Fix (type 1 hinter) : Bugs in 'flex' with disabled hinting.

DETAILS :

Bug 687812 "Distortion in charpath outline".

1. Wrong poles were exported from the hinter when 'flex' works with disabled hinting.
2. Improved vdtrace commands for a disabled hinting.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.56]

2004-11-22 19:36 Ralph Giles

Null the DEVICE_DEVS_EXTRA variable when calling the link line. This
works around env space limitations on some vendor unicies when a large
set of devices are passed from the make command line through this
variable. Bug 687804.

[src/unixlink.mak 1.7]

2004-11-22 19:25 Ralph Giles

Cast the gx color index to an int inside the switch argument to
avoid problems with the HP-UX 10 compiler which does not accept
64 bit arguments to switch(). Bug 687804.

[src/gdevstc.c 1.11]

2004-11-22 06:47 Ralph Giles

Bump the version number after the 8.33 beta release.

[doc/News.htm 1.157, lib/gs_init.ps 1.114, src/gscdef.c 1.50, src/version.mak 1.78]


Version 8.33 (2004-11-20)

This is a release candidate for the next stable version of Ghostscript.

New features since the last stable release:

The following bug numbers were open at the time of the last release:

405501, 430175, 446344, 458780, 463688, 465936, 487953, 493348, 526099, 526491, 530011, 535366, 535932, 578865, 592160, 603934, 610478, 614298, 626295, 645316, 674418, 677324, 685335, 686747, 686750, 686816, 686819, 686824, 686841, 686842, 686843, 686853, 686865, 686867, 686919, 686980, 686996, 687011, 687012, 687013, 687039, 687063, 687084, 687086, 687095, 687105, 687108, 687110, 687122, 687125, 687146, 687157, 687168, 687174, 687193, 687196, 687203, 687219, 687221, 687229, 687231, 687243, 687251, 687257, 687259, 687271, 687280, 687295, 687297, 687298, 687303, 687314, 687316, 687324, 687327, 687341, 687342, 687345, 687346, 687360, 687373, 687375, 687394, 687397, 687399, 687401, 687410, 687414, 687434, 687435, 687445, 687460, 687468, 687473, 687474, 687475, 687480, 687484, 687485, 687492, 687497, 687498, 687514, 687518, 687520, 687523, 687525, 687529, 687531, 687535, 687536, 687537, 687539, 687541, 687545, 687551, 687558, 687559, 687560, 687561, 687575, 687583, 687593, 687595, 687600, 687608, 687611, 687621, 687622, 687628, 687630, 687633, 687637, 687642, 687643, 687644, 687650, 687654, 687657, 687661, 687663, 687666, 687669, 687674, 687676, 687677, 687678, 687679, 687680, 687682, 687684, 687686, 687694, 687695, 687696, 687697, 687702, 687707, 687712, 687715, 687717, 687721, 687727, 687728, 687729, 687731, 687732, 687735, 687738, 687754, 687756, 687769, 687772, 687775, 687778, 687780, 687782, 687783, 687786, 687791, 687793, 687795, 687796, 687798, 687799, 687800, 687801, 687802, 687803, 687804, 687805, 687806.

Incompatible changes

No known incompatible changes at this point

Changelog

2004-11-20 04:44 Ralph Giles

Propagate release date to all documentation.

[doc/API.htm 1.47, doc/Bug-form.htm 1.43, doc/Bug-info.htm 1.42, doc/C-style.htm 1.49, doc/Commprod.htm 1.35, doc/Copying.htm 1.33, doc/DLL.htm 1.37, doc/Deprecated.htm 1.14, doc/Details8.htm 1.13, doc/Develop.htm 1.142, doc/Devices.htm 1.83, doc/Drivers.htm 1.51, doc/Fonts.htm 1.44, doc/Helpers.htm 1.37, doc/History1.htm 1.33, doc/History2.htm 1.33, doc/History3.htm 1.33, doc/History4.htm 1.33, doc/History5.htm 1.35, doc/History6.htm 1.50, doc/History7.htm 1.38, doc/History8.htm 1.18, doc/Htmstyle.htm 1.38, doc/Install.htm 1.48, doc/Issues.htm 1.45, doc/Language.htm 1.89, doc/Lib.htm 1.37, doc/Maintain.htm 1.44, doc/Make.htm 1.82, doc/New-user.htm 1.54, doc/Projects.htm 1.61, doc/Ps-style.htm 1.31, doc/Ps2epsi.htm 1.35, doc/Ps2pdf.htm 1.73, doc/Psfiles.htm 1.56, doc/Readme.htm 1.60, doc/Release.htm 1.88, doc/Source.htm 1.33, doc/Tester.htm 1.33, doc/Testing.htm 1.31, doc/Unix-lpr.htm 1.33, doc/Use.htm 1.123, doc/Xfonts.htm 1.33, doc/gs-vms.hlp 1.31, man/dvipdf.1 1.31, man/font2c.1 1.31, man/gs.1 1.32, man/gslp.1 1.31, man/gsnd.1 1.31, man/pdf2dsc.1 1.30, man/pdf2ps.1 1.32, man/pdfopt.1 1.30, man/pf2afm.1 1.31, man/pfbtopfa.1 1.32, man/printafm.1 1.31, man/ps2ascii.1 1.30, man/ps2epsi.1 1.29, man/ps2pdf.1 1.36, man/ps2pdfwr.1 1.35, man/ps2ps.1 1.38, man/wftopfa.1 1.31]

2004-11-20 04:41 Ralph Giles

Correct a typo in the reference to the cmpi script.

[doc/Testing.htm 1.30]

2004-11-20 04:40 Ralph Giles

Update release date and product name.

[doc/News.htm 1.155, src/gscdef.c 1.49, src/version.mak 1.77]

2004-11-20 04:33 Ralph Giles

Define SHARE_JASPER=0 by default in the windows build. This doesn't
enable anything, but makes it easier to get going.

[src/winlib.mak 1.23]

2004-11-19 19:56 Ray Johnston

Due to an oversight, JBIG2Decode was omitted from the windows build.
Now it is included in the default FEATURE_DEVS although in the future
this should probably be moved to the pdf.dev

[src/msvc32.mak 1.66]

2004-11-19 04:39 Ray Johnston

Add some missing initializers for glyph_data_t->memory. Related to the
687459 fix.

[src/gdevpsf1.c 1.18, src/gdevpsf2.c 1.33, src/gdevpsfu.c 1.12, src/gsfcid.c 1.13, src/gstype42.c 1.48, src/gxfcopy.c 1.54, src/gxtype1.c 1.41, src/zchar1.c 1.42, src/zfcid0.c 1.25, src/zfcid1.c 1.23]

2004-11-19 01:44 Raph Levien

Copies over new-style color procs when making a null device with a
target, to avoid inconsistent states. Fixes bug #687770.

DETAILS

The problem was a null device (for implementing stringwidth) with
inconsistent color info; the color_info struct specified 4 components,
but the get_color_mapping_procs was
gx_default_DevGray_get_color_mapping_procs, which is the desired value
for null devices instantiated through gs_copydevice
(i.e. -sDEVICE=null). As a result, cm_comps[1] through [3] were left
uninitialized, and, when negative, would crash the halftone logic.

This patch copies over the new-style color mapping procs (the
old-style were already copied) in the gs_make_null_device routine. A
strong argument could be made for changing the logic in
gx_device_copy_color_procs() instead, but it was felt that this change
was more localized.

Dan reviewed this patch during a phone conversation, so I am going ahead
and committing. I'm also opening a new bug to encourage a closer look
at other uses of gx_device_copy_color_procs() to see whether a change
there is beneficial or harmful.

[src/gsdevice.c 1.24]

2004-11-18 17:09 Ray Johnston

Fix regression created by previous patch for bug 687752.

[lib/pdf_draw.ps 1.88]

2004-11-18 11:04 Russell Lang

Update Windows installer to use the current name for the license file,
Public.htm not the older PUBLIC.

[src/winint.mak 1.23]

2004-11-18 06:48 Russell Lang

Add utility mkcidfm.ps to create a cidfmap file based on fonts
found in a directory.
Change MS-Windows installer to optionally update lib/cidfmap
with the CJK fonts found in the Windows font directory.

DETAILS:
Ghostscript does not ship with CJK fonts.
If support for Chinese, Japanese or Korean is added to MS-Windows,
CJK TrueType fonts and font collections are added to the MS-Windows
fonts directory.  These can be used by ghostscript by specifying
mapping and aliases in the lib/cidfmap file.
This patch looks in the MS-Windows fonts directory for known
CJK fonts, and if present it appends appropriate mappings or
aliases to the lib/cidfmap file.
The font names and aliases are currently fixed, but can
be changed by editing mkcidfm.ps.

A new checkbox is added to the installer dialog
"Use Windows TrueType fonts for Chinese, Japanese and Korean"
Only if the user selects this will lib/cidfmap will be updated.
The default behavior is that lib/cidfmap is unchanged.

[doc/Psfiles.htm 1.55, lib/mkcidfm.ps 1.1, src/dwinst.cpp 1.6, src/dwinst.h 1.7, src/dwsetup.cpp 1.9, src/dwsetup.h 1.6, src/dwsetup.rc 1.12, src/dwuninst.cpp 1.5]

2004-11-18 02:20 Ray Johnston

Fix a missing part of the JOBSERVER implementation that makes the ^D a
self-delimitting token. Fixes bug 687779.

[src/iscan.c 1.19]

2004-11-18 01:44 Ray Johnston

Fix for unlimited recursion in 'cs/CS' implementation (actually in a
certain path in 'resolvecolorspace'. Fixes bug 687752 for Artifex
customer 190.

[lib/pdf_draw.ps 1.87]

2004-11-17 19:48 Ray Johnston

Fix bug 687777 to remove the makefile dependency of dscparse from the
pdfwrite device. This allows non-PS to include the pdfwrite.dev in the
build. Also updated zdscpars.c to add needed 'mem' pointer.

[src/devs.mak 1.119, src/int.mak 1.131, src/zdscpars.c 1.17]

2004-11-16 02:53 Igor Melichev

Fix (pdfwrite) : Page context stream was not properly formed when starts with an invisible text.

DETAILS :

Bug 687797 "pdfwrite generates invalid pdf".
The improved condition made consistent with gdevpdte.c ln 501.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.94]

2004-11-15 01:12 Ray Johnston

Fix for Bug 687459 (SEGV) addressing several problems: (i) Elements
fetched from a font dictionary have to be dereferenced into a ref
since pointers change if the dictionary is resized (to add entries);
(ii) The glyph_cache used by gs_font_cid2 fonts needs to be in stable
memory since elements might be added after a 'save' and the list will
still be refereced by the font, so cannot be freed by 'restore';
(iii) The gs_glyph_cache__release was never being called so creating
a memory leak -- font notification (called by gs_font_finalize) is
now used to free the cache list; (iv) The gs_glyph_cache__release
did not work (probably was never tested since it was not being used).

DETAILS:

Using stable_memory means that the objects created need to be freed
properly, that's why the font_notify mechanism was used. This fixes
the problem reported by the bug and doesn't seem to have created
any other problems (regression test passed).

A 'memory' element was added to the gs_glyph_data_s structure so
that the 'bits' can be allocated using the desired memory (stable
memory in the case that we are using the cache). This was deemed
preferable to always using the pfont->memory->stable_memory since
changing to this might cause other problems. This did create a
fair number of changes since every place the get_outline was used,
the glyph_data structure needed to have the 'memory' element set.
We could have used 'NULL' to signal pfont->memory, but this might
have masked uninitialized memory issues that can be tracked with
tools such as valgrind.

The gs_glyph_cache__release was totally broken, and since it was
not previously used, fixing and testing it presents no risk of
other clients relying on broken behaviour.

The implementation of the cache is VERY RUDIMENTARY -- a linked
list of elements with a hard-coded number (32767) limit to the
size of the cache. The size is too small to be useful for Asian
fonts, but making it bigger will result in a lot of time spent
finding a 'miss' condition. At least the current logic has LRU
slot re-use behaviour (which should be retained). Fixing this,
and making the cache limit larger are left for a later change
(post 8.50 release).

EXPECTED DIFFERENCES:

None.

[src/gdevpsft.c 1.33, src/gsgcache.c 1.3, src/gsgcache.h 1.2, src/gsgdata.h 1.5, src/gstype42.c 1.47, src/gxfcopy.c 1.53, src/gxttfb.c 1.36, src/zbfont.c 1.28, src/zfcid0.c 1.24, src/zfcid1.c 1.22]

2004-11-14 01:41 Russell Lang

Add missing header include for setting the display device callback.

[src/imain.c 1.41]

2004-11-13 22:08 Igor Melichev

Fix : toolbin/pdfinflt.ps did not decompress some streams (continued).

DETAILS :

The 2nd Patch from SaGS for the bug 687746
"gs\toolbin\pdfinflt.ps doesn't unpack a stream"

The previous patch contained on over-optimization that leaded to a corrupted
operand stack. "{ [ {proc} {proc} ] }" (note: 2 identical inner procs)
can be optimized:
either as "{ [ {proc} dup    ] }" - use VM for only 1 copy of "{proc}"
or as	  "{ { {proc} {proc} } }" - the 2-element array is allocated
				    only once, by the parser, not at
				    each execution of the enclosing proc
but we cannot apply both these optimizations at the same time.

This error affects PDF files that include a /Filter and/or /DecodeParams
specified as 1-element arrays. PDFs for which these entries are a single
name (for /Filter) or dict (for /DecodeParams) or arrays with 2 or more
elements are not affected.

EXPECTED DIFFERENCES :

None.

[toolbin/pdfinflt.ps 1.7]

2004-11-12 21:28 Russell Lang

Spelling corrections.

[doc/Use.htm 1.122]

2004-11-08 16:56 Ralph Giles

Add the new image comparison tool to the file index in the documentation.

[doc/Testing.htm 1.29]

2004-11-07 21:09 Igor Melichev

Fix : Improve the resource path customization and the related documentation (continued).

DETAILS :

This fixes some minor ambiguities.

[doc/Use.htm 1.121]

2004-11-07 19:57 Igor Melichev

fuzzy.c : Implementing multipage image files.

DETAILS:

Report will contain a line per different page.
Thus the report file may contain multiple lines.

The output image file contains only the the first page difference
due to a restricted capability of available viewers.

Bug 687765 "fuzzy.c : multipage documents unsupported.".

[toolbin/tests/fuzzy.c 1.17]

2004-11-07 19:25 Igor Melichev

Fix : Cygwin/gcc warnings.

DETAILS :

Cygwin/gcc claims an undefined result in spdiff.c
due to possibly undefined order of evaluation of operands of a binary operation.
The hunk #2 now sets 'ti', rather the old code does not.
But we believe that the change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gxdevndi.c 1.5, src/spdiff.c 1.8, src/ttinterp.c 1.16]

2004-11-06 22:20 Ralph Giles

Remove some obsolete assert calls which caused problems on some
platforms due to incorrect string quoting in assert.h.

[src/gxhintn.c 1.55]

2004-11-06 19:30 Ray Johnston

Fix: Python opens files in text mode unless "rb" is needed.

[toolbin/tests/cmpi.py 1.2]

2004-11-06 06:38 Ray Johnston

Add an interactive image compare tool written in Python by a Python
neophyte. Not quite ready for prime-time, but an interesting enough start
to commit. Even though there are bugs in the differencing, responsiveness
and memory usage, it is still sometimes useful. If a version # were to be
applied to this, I would call it 0.1 (at least it is a positive number).

[toolbin/tests/cmpi.py 1.1]

2004-11-05 17:03 Ralph Giles

Update the MacOS X platform-specific makefile. Remove -traditional-cpp.
This was added to work around bugs in earlier releases of Apple's gcc,
but it is not necessary with more recent releases, and conflicts with
newer cpp features used by more recent Ghostscript code. Partial fix
for bug 687787.

[src/macosx.mak 1.25]

2004-11-04 20:31 Russell Lang

Improve documentation for CID fonts.

[doc/Use.htm 1.120]

2004-11-03 17:46 Ralph Giles

Include stdio_.h instead of the system header according to C style.

[src/gslibctx.h 1.5, src/lib.mak 1.203]

2004-11-03 08:23 Ray Johnston

Add handling for missing EOL following the %PDF-#.## string in the header.
Yet another bad file that Acrobat Reader handles. Bug 687781.

DETAILS:

If we get an error doing the 'cvr' to get the version #, trim a character
from the end of the string and try again. Stop if the string becomes empty.

[lib/pdf_main.ps 1.88]

2004-11-03 07:34 Ralph Giles

Add missing opening quotes to the error printouts. This typo came in
as part of an earlier bug fix and prevented compilation. Bug 687784.

[src/gdevsppr.c 1.9]

2004-11-01 21:21 Jack Moffitt

Fixes Bug#687762.  Includes the date specification of the CVS checkout
in the baseline update log.  This then gets propagated to the daily
reports.

[toolbin/tests/update_specific 1.4]

2004-11-01 21:09 Igor Melichev

Fix (pdfwrite) : Forget cancelled resources.

DETAILS :

Bug 687749 "PS to PDF generates very large PDF document"

1. An indeterministic bug fixed in gdevpdfi.c, hunk #1.

2. Implemented a recognition of equal patterns in gdevpdfi.c
and provided a PDF pattern substitution.
We caould not provide a substitution in the PS interpreter
because an accumulated pattern instance doesn't point
to the corresponding client color.

3. pdf_forget_resource is applied when a resource is cancelled and
is not longer needed. This applies to all redundant resources except patterns,
because patterns keep the substitution data.
We would like to save memory from substitured patterns with
a special substitution table,
but we have no time for such optimization now.

4. The function pdf_forget_resource is some slow
because the data structure was not designed for
removing resources from lists.
We would like to implement dual linked lists,
but we have no time for such optimization now.

5. Since pdf_forget_resource is not applied to patters,
we need to prevent a big growth of the number of stored patterns.
We implemented pdf_drop_resources for that purpose
and drop all substitured pattrens after 300 ones
have been accumulated, but not frequenter than once per page.
This solution isn't perfect, but should work for most cases.
If a substituted pattern is dropped erroneusely,
it will be accumulated again, maybe causing some slowdown.

6. Implemented a new device parameter PrintStatistics.
The new function pdf_print_resource_statistics
prints a statistics to stdout.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.101, src/gdevpdfg.c 1.59, src/gdevpdfg.h 1.34, src/gdevpdfi.c 1.57, src/gdevpdfj.c 1.32, src/gdevpdfp.c 1.40, src/gdevpdfu.c 1.61, src/gdevpdfv.c 1.37, src/gdevpdfx.h 1.103, src/gdevpdti.c 1.39, src/gdevpdtt.c 1.93]

2004-11-01 18:21 Ralph Giles

Exempt three new files from the multiple-include protect check. Like the
previous exemptions, these are templates that must be instantiated multiple
times to function properly.

[toolbin/tests/check_source.py 1.11]

2004-11-01 09:15 Ralph Giles

We now implement job server behavior. This is no longer an open issue.

[doc/Issues.htm 1.44]

2004-11-01 09:15 Ralph Giles

Mention the issue with polygon overlap in antialiased rendering.
Closes bug 687742.

[doc/Use.htm 1.119]

2004-10-29 01:04 Russell Lang

Documentation update to fix some dead links.

[doc/Readme.htm 1.59]

2004-10-29 00:07 Russell Lang

Documentation fixes, due to changes in iapi.h.

[doc/API.htm 1.46, doc/Lib.htm 1.36]

2004-10-28 17:34 Igor Melichev

Fix (pdfwrite) : Font size was wrong when definefont applied to a scaled font.

DETAILS :

Bug 687615 "ps2pdf squeezes glyph strings".

This continues the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-August/003487.html (igor486).

EXPECTED DIFFERENCES :

None.

[src/gdevpdtd.c 1.17]

2004-10-28 11:58 Igor Melichev

Fix (vdtrace.c) : Fix gcc warnings and improve C-style.

DETAILS :

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/vdtrace.c 1.9]

2004-10-28 09:26 Igor Melichev

Fix (gswin32) : Opened a window outside the desctop area.

DETAILS :

When the Tracer window was opened with a clean Registry
(particularly at a first run after the operating system instalaton),
the window placement got big negative coordinates.

EXPECTED DIFFERENCES :

None.

[src/dwimg.c 1.17]

2004-10-28 08:39 Igor Melichev

Fix (type 1 interpreter) : Replaced Metrics was missed.

DETAILS :

Bug 687614 "mirrored glyph is rendered at incorrect position".

This patch fixes the problem for raster devices.
Without -dNOCACHE the behavior was indeterministic due to
uninitialized cxs.use_FontBBox_as_Metrics2 in zchar1.c.

We ported the change from gstype1.c to gstype2.c with no special testing
because we have no practical examples of Type 2 with a replaced lsb.
It happens so because Type 2 only appears in PDF, which doesn't replace lsb.

EXPECTED DIFFERENCES :

None.

[src/gstype1.c 1.32, src/gstype2.c 1.36, src/zchar1.c 1.41]

2004-10-28 07:25 Igor Melichev

Fix (pdfwrite) : Glyph positions were wrong for vertical CID fonts (continued 2).

DETAILS :

Bug 687614 "mirrored glyph is rendered at incorrect position".

The new code implements the improved logics :

    /* With WMode 1 v-vector is (WMode 1 origin) - (WMode 0 origin).
       The glyph shifts in the opposite direction.  */
    /* With WMode 0 v-vector is (Metrics sb) - (native sb).
       The glyph shifts in same direction.  */

Also improved the related comments.

EXPECTED DIFFERENCES :

pdfwrite 093-01.ps .

[src/gdevpdte.c 1.65]

2004-10-27 10:56 Igor Melichev

Fix (resource machinery) : Improve the resource path customization and the related documentation (continued).

DETAILS :

A wrong paragraph removed form the documentation.

EXPECTED DIFFERENCES :

None.

[doc/Use.htm 1.118]

2004-10-26 17:28 Ralph Giles

Bump the version info after the 8.32 release.

[doc/News.htm 1.154, lib/gs_init.ps 1.113, src/gscdef.c 1.48, src/version.mak 1.76]

2004-10-26 17:07 Igor Melichev

Fix (resource machinery) : Improve the resource path customization and the related documentation.

DETAILS :

1. Explained the resource locator's logics in Use.htm .
Bug 687767 "Adding -Ic:\windows\fonts breaks CJK fonts".

2. The old code missed some directories when the user specifies a non-absolute
path as GenericResourcePath.

EXPECTED DIFFERENCES :

None.

[doc/Use.htm 1.117, lib/gs_res.ps 1.38]

2004-10-26 09:44 Igor Melichev

Fix (PDF interpreter) : Improve the font substitution and the CID font substitution.

DETAILS :

1. A new procedure .remove_font_name_prefix removes the subset font name prefix
   when computing a substitute font name.
2. Improved a warning when substituting a CID font resource.
3. Improved the documentation about CID font substitution if the PDF interpreter

Bug 687747 "PDF tries substituting but throws /undefinedresource in --findresource--".

EXPECTED DIFFERENCES :

None.

[doc/Use.htm 1.116, lib/pdf_font.ps 1.71]


Version 8.32 (2004-10-26)

This is the third beta release leading up to the stable 8.5x series. It contains numerous bug fixes since the last testing release, but a few outstanding issues remain.

New features since the last stable release:

The following bug numbers were open at the time of the last release:

405501, 430175, 446344, 458780, 463688, 465936, 487953, 493348, 526099, 526491, 530011, 535366, 535932, 578865, 592160, 603934, 610478, 614298, 626295, 645316, 674418, 677324, 685335, 686747, 686750, 686816, 686819, 686824, 686841, 686842, 686843, 686853, 686865, 686867, 686919, 686980, 686996, 687011, 687012, 687013, 687039, 687063, 687084, 687086, 687095, 687105, 687108, 687110, 687122, 687125, 687146, 687157, 687168, 687174, 687179, 687193, 687196, 687203, 687219, 687221, 687229, 687231, 687243, 687251, 687257, 687259, 687271, 687275, 687280, 687295, 687297, 687298, 687303, 687314, 687316, 687324, 687327, 687341, 687342, 687345, 687346, 687360, 687373, 687375, 687394, 687397, 687399, 687401, 687410, 687414, 687434, 687435, 687445, 687459, 687460, 687468, 687473, 687474, 687475, 687480, 687484, 687485, 687492, 687497, 687498, 687514, 687518, 687520, 687523, 687525, 687529, 687531, 687535, 687536, 687537, 687539, 687541, 687545, 687551, 687558, 687559, 687560, 687561, 687575, 687583, 687593, 687595, 687600, 687608, 687611, 687614, 687615, 687621, 687622, 687628, 687630, 687633, 687637, 687642, 687643, 687644, 687650, 687654, 687657, 687661, 687663, 687666, 687669, 687674, 687676, 687677, 687678, 687679, 687680, 687682, 687684, 687686, 687694, 687695, 687696, 687697, 687702, 687707, 687712, 687715, 687717, 687721, 687727, 687728, 687729, 687731, 687732, 687735, 687738, 687742, 687747, 687749, 687752, 687754, 687756, 687762, 687765, 687767, 687769, 687770, 687773.

Incompatible changes

No known incompatible changes at this point

Changelog

2004-10-26 04:31 Ralph Giles

Move a dependency out of order so it's available when needed.

[src/lib.mak 1.202]

2004-10-26 04:25 Ralph Giles

Update version and release date in the documentation.

[doc/API.htm 1.45, doc/Bug-form.htm 1.42, doc/Bug-info.htm 1.41, doc/C-style.htm 1.48, doc/Commprod.htm 1.34, doc/Copying.htm 1.32, doc/DLL.htm 1.36, doc/Deprecated.htm 1.13, doc/Details8.htm 1.11, doc/Develop.htm 1.141, doc/Devices.htm 1.82, doc/Drivers.htm 1.50, doc/Fonts.htm 1.43, doc/Helpers.htm 1.36, doc/History1.htm 1.32, doc/History2.htm 1.32, doc/History3.htm 1.32, doc/History4.htm 1.32, doc/History5.htm 1.34, doc/History6.htm 1.49, doc/History7.htm 1.37, doc/History8.htm 1.15, doc/Htmstyle.htm 1.37, doc/Install.htm 1.47, doc/Issues.htm 1.43, doc/Language.htm 1.88, doc/Lib.htm 1.35, doc/Maintain.htm 1.43, doc/Make.htm 1.81, doc/New-user.htm 1.53, doc/Projects.htm 1.60, doc/Ps-style.htm 1.30, doc/Ps2epsi.htm 1.34, doc/Ps2pdf.htm 1.72, doc/Psfiles.htm 1.54, doc/Readme.htm 1.58, doc/Release.htm 1.87, doc/Source.htm 1.32, doc/Tester.htm 1.32, doc/Testing.htm 1.28, doc/Unix-lpr.htm 1.32, doc/Use.htm 1.115, doc/Xfonts.htm 1.32, doc/gs-vms.hlp 1.30, man/dvipdf.1 1.30, man/font2c.1 1.30, man/gs.1 1.31, man/gslp.1 1.30, man/gsnd.1 1.30, man/pdf2dsc.1 1.29, man/pdf2ps.1 1.31, man/pdfopt.1 1.29, man/pf2afm.1 1.30, man/pfbtopfa.1 1.31, man/printafm.1 1.30, man/ps2ascii.1 1.29, man/ps2epsi.1 1.28, man/ps2pdf.1 1.35, man/ps2pdfwr.1 1.34, man/ps2ps.1 1.37, man/wftopfa.1 1.30]

2004-10-26 04:24 Ralph Giles

Update libpng version to the latest release. There are security
issues with 1.2.5, so upgrading is recommended.

[src/all-arch.mak 1.15, src/bcwin32.mak 1.34, src/dvx-gcc.mak 1.28, src/macos-mcp.mak 1.27, src/macosx.mak 1.24, src/msvc32.mak 1.65, src/msvclib.mak 1.27, src/openvms.mak 1.38, src/openvms.mmk 1.30, src/os2.mak 1.42, src/ugcclib.mak 1.28, src/unix-gcc.mak 1.47, src/unixansi.mak 1.38, src/watclib.mak 1.23, src/watcw32.mak 1.31]

2004-10-26 04:08 Ralph Giles

Back out double-include protection for gxfill*.h. Contrary to C-style,
these are templates that are configured and included multiple times.
They should probably be .c files rather than .h.

[src/gxfillsl.h 1.6, src/gxfilltr.h 1.9, src/gxfillts.h 1.5]

2004-10-26 03:51 Ralph Giles

Add double-include protection to four files that needed it. Also
correct a comment typo in a related file's protection.

[src/gp_os2.h 1.2, src/gxfill.h 1.23, src/gxfillsl.h 1.5, src/gxfilltr.h 1.8, src/gxfillts.h 1.4]

2004-10-26 03:43 Ralph Giles

Add a new-style RCS Id line to the re-instated LZWEncode filter.

[src/slzwe.c 1.3]

2004-10-26 03:41 Ralph Giles

Commute a C++ style comment.

[src/main.h 1.8]

2004-10-26 03:38 Ralph Giles

Exempt the rinkj CVS directories from the documentation reference check.

[toolbin/tests/check_docrefs.py 1.11]

2004-10-26 03:16 Ralph Giles

Revert jbig2 makefile update accidentally included in the last commit.
We want to maintain compatibility with 0.6 for this release.

[src/jbig2.mak 1.8]

2004-10-26 03:12 Ralph Giles

Add the new gsutil.py source to the file catalog

[doc/News.htm 1.152, doc/Testing.htm 1.27]

2004-10-26 03:12 Ralph Giles

Update notes and dates for the 8.32 release.

[src/gscdef.c 1.47, src/jbig2.mak 1.7, src/version.mak 1.75]

2004-10-26 02:50 Ralph Giles

Add libctx memory pointers where required in the compiled-fonts code. This
was missed in the initial commit. Also, add the OBJ directory to the include
path when compiling the font data, since stdpre.h now requires the generate
arch.h header. Closes bug 687758.

[src/cfonts.mak 1.5, src/iccfont.c 1.11]

2004-10-25 15:11 Igor Melichev

Fix : CIDFont-CMap construction didn't work with substituted CID font resources.

DETAILS :

Bug 687766 "CJK cidfmap ignores aliases".

This patch fixes the problem (the change to gs_cidfm.ps)
and provides a debug printing in various modules
related to CID font substitution.

EXPECTED DIFFERENCES :

None.

[lib/gs_cidcm.ps 1.12, lib/gs_cidfm.ps 1.7, lib/gs_fntem.ps 1.8, lib/gs_init.ps 1.112, lib/gs_resmp.ps 1.11]

2004-10-22 08:07 Raph Levien

Fixes copying of paths into clipping path list so that it works even
when the path is allocated with local_segments. Fixes bugs #687401,
#687612, and #687750.

[src/gxcpath.c 1.13]

2004-10-21 17:57 Igor Melichev

Fix (TT interpreter) : Subglyphs were positioned wrongly (continued).

DETAILS :

This fixes the log message of the previous patch in the "expected differences" section.
Bug 687589 "A composite glyph renders wrongly".
Bug 687768 "umlauts misplaced in eps file".

EXPECTED DIFFERENCES :

Testform.v1.0.2.pdf"

[src/ttfmain.c 1.31]

2004-10-21 17:52 Igor Melichev

Fix (TT interpreter) : Subglyphs were positioned wrongly.

DETAILS :

Bug 687589 "A composite glyph renders wrongly".
Bug 687768 "umlauts misplaced in eps file".

EXPECTED DIFFERENCES :

None.

[src/ttfmain.c 1.30]

2004-10-21 15:05 Igor Melichev

Fix (TT interpreter) : A tolerance to bad TT instructions.

DETAILS :

Bug 687764 "/invalidfont in .type42execchar".
Since we met several fonts with bad TT instructions,
we print a warning and continue with ignoring instructions.

EXPECTED DIFFERENCES :

None.

[src/gstype42.c 1.46, src/gxfont42.h 1.20, src/gxttfb.c 1.35, src/ttfmain.c 1.29, src/ttfoutl.h 1.14]

2004-10-20 15:58 Igor Melichev

Fix (pdfwrite) : Glyph positions were wrong for vertical CID fonts (continued).

DETAILS :

Bug 687603 "vertical text misplaced after distilling", reopened.
Bug 687753 "Text not aligned when viewed with Acrobat Reader", re-testing.

Disposition :
D1. The PDF spec requires X-compomenent of v-vector always equals to half glyph width.
D2. AR5 appears to use W|DW to compute the X-component of the v-vector of WMode 1.

The previous patch fixed most problems, but one left unfixed.
When a glyph is used with WMode 0, and later with WMode 1,
the second usage doesn't store Width and V due to the 'used' flag is already set.
This patch introduces 2 separate sets of flags for WNode 0 and WMode 1.

Changes :
1. Defined a new field 'used2' fro WMode 1 in gdevpdtf.h .
2. Allocated the used2 array, provided garbager methods,
   and a resizing on demand in gdevpdtf.c .
3. gdevpdtc.c sets used2.
4. Improved the computation of the v-vector in gdevpdtt.c .
   Now pdf_glyph_widths should be conforming to (D1) and (D2).
5. The coordinate adjustment in gdevpdte.c is not longer useful
   due to (4). Removed.
6. When writing W, W2, glyphs are being enumerated with used, used2
   correspondingly (gdevpdtw.c).
7. The accedd to Widths2 sometimes was incorrect. Now fixed (gdevpdtf.c).
8. gdevpdtc.c misused Widths2 as Widths when storing the WMode 0 width
   as a component of theWMode 1 v-vector. Now fixed.

EXPECTED DIFFERENCES :

Bug687603.ps

[src/gdevpdtc.c 1.39, src/gdevpdte.c 1.64, src/gdevpdtf.c 1.40, src/gdevpdtf.h 1.25, src/gdevpdtt.c 1.92, src/gdevpdtw.c 1.34]

2004-10-20 02:52 Jack Moffitt

Remove quotes from input filenames.

[toolbin/tests/update_specific 1.3]

2004-10-20 01:30 Igor Melichev

Fix (pdfwrite, PDF interpreter) : Glyph positions were wrong for vertical CID fonts.

DETAILS :

Bug 687753 "Text not aligned when viewed with Acrobat Reader".

Disposition :
D1. The PDF spec requires X-compomenent of v-vector always equals to half glyph width.
D2. AR5 appears to use W|DW to compute the X-component of the v-vector of WMode 1.

Changes :
1. With WMode 1, pdf_obtain_cidfont_widths_arrays obtains both Widths and Widths2 arrays
   (gdevpdtf.c, gdevpdtf.h, gdevpdtc.c).
2. For CID fonts gdevpdtc.c computes both WMode 1 and WMode 2 width
   when WMode 1 is requested.
3. Due to (D1), must compensate the half width when computing a glyph position
   in gdevpdte.c (hunk #2).
4. In gdevpdte.c internal data glyph_origin_shift used opposite signs for
   CID and non-CID fonts. Now made uniform.
5. The Type 0 font matrix and the descendent CID font matrix were applied
   in a wrong order in gdevpdte.c .
6. To satisfy (D2) when WMode 1 is only requested,
   write DW 0 when WMode 1 is only requested.
7. After fixing all above, from the test file of the bug 687753 pdfwrite
   generated a PDF, which GS failed interpret due to a curious failure
   with e_dictfull while checking for an absent key /File in the font dictionary.
   Patched zfcid1.c to provide a tolerance.
   Meanwhile we're not sure that it's the best way for fixing that,
   so if someone can bring a better method, feel free to improve.
8. The PDF interpreter is patched to comply with (D2) - pdf_font.ps, hunk #2 .
9. Fixed a bug in .pdfMakeInternalMTXArray : W2 arraytype elements wrongly
   computed the range (debugged with re-distilled Bug687603.ps).

EXPECTED DIFFERENCES :

Bug687603.ps

besides that, it generates an improved PDF for japan-.ps, Type11CDevProc.ps,
but rasters appear same because a change to the PDF interpreter compensates
changes to the PDF writer.

[lib/pdf_font.ps 1.70, src/gdevpdtc.c 1.38, src/gdevpdte.c 1.63, src/gdevpdtf.c 1.39, src/gdevpdtf.h 1.24, src/gdevpdtw.c 1.33, src/zfcid1.c 1.21]

2004-10-18 15:23 Igor Melichev

Fix : Degenerate segments must not paint when caps is not round.

DETAILS :

Bug 687720 "Zero length lines must not stroke".
See comment in code.

EXPECTED DIFFERENCES :

Normal 72 dpi :

"012-05.ps"
"013-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"032-01.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"file2.pdf"

Normal 300 dpi :

"012-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"034-01.ps"
"034-10.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"a.pdf"
"file2.pdf"

pdfwrite 72 dpi :

"012-05.ps"
"013-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"032-01.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"ai2.pdf"
"file2.pdf"

pdfwrite 300 dpi :

"012-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"a.pdf"
"file2.pdf"

[src/gxpdash.c 1.6, src/gxstroke.c 1.13]

2004-10-18 08:43 Igor Melichev

Fix (Type 1 hinter) : Don't align glyph width to pixels.

DETAILS :

See comment in code.
Bug 687719 "PDFWRITE corrupts letter spacing/placement".

When porting this patch to GS_8_1X please note that the default value
of AlignToPixels is different in HEAD andf GS_8_1X.
Therefore this patch may cause differences witg GS_8_1X.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.54]

2004-10-15 18:24 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 9).
Check the Encoding compatibility while merging Type 3 glyph variations.

DETAILS :

Fixes the reopened bug 687660
"incorrect font rendering/missing glyphs from ps2pdf".

pdf_is_same_charproc1 now checks whether we try to replace
a charproc with one taken from a font with a compatible Encoding.
Before now the encoding was ingnored,
causing a subsequent failure (due to an encoding conflict)
when adding glyphs to the font copy, and an infinite loop.
As usual, the encoding compatibility
is being checked within the list of characters of a current text.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h 1.102, src/gdevpdti.c 1.38, src/gdevpdtt.c 1.91, src/gdevpdtt.h 1.25]

2004-10-15 18:18 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 8).
Allocate a single character list per text.

DETAILS :

This change is algorithmically equivalent.
It's a preparation for fixing the reopened bug 687660
"incorrect font rendering/missing glyphs from ps2pdf".

For 1-byte fonts now we allocate a singe instance of
pdf_char_glyph_pairs_t for storing the character list for entire text.
Now it is done once per text as an extention to pdf_text_enum_t.
The intention is to provide an access to it from pdf_find_same_charproc.

CID text is still processed in chunks, which
are delimited by font changes or CDevProc callouts.
It may cause a searchability problem with some viewers,
when converting a composefont with a Type 3 descendent.
But unlikely we'll met such case in practice,
due to we have no exmples of composefont with a Type 3 descendent.

We would like to improve the CID text processing sometimes with
with building a complete character list for a text portion
delimited with font changes. The new algorithm for scan_cmap_text
should be like this : first delimit a single font portion,
then construct the character list for the portion,
and then process the portion with possible CDevProc and charproc callouts.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtc.c 1.37, src/gdevpdte.c 1.62, src/gdevpdtf.c 1.38, src/gdevpdtf.h 1.23, src/gdevpdtt.c 1.90, src/gdevpdtt.h 1.24, src/gxfcopy.c 1.52, src/gxfcopy.h 1.11]

2004-10-15 08:55 Igor Melichev

Fix : toolbin/pdfinflt.ps did not decompress some streams.

DETAILS :

Patch from SaGS for the bug 687746
"gs\toolbin\pdfinflt.ps doesn't unpack a stream"

Current version of pdfinflt.ps uncompresses only streams that have a single
filter applied, and only if that single filter is /FlateDecode. Proposed
patch (attached) ads support for procesing streams with multiple filters.

However, not all decompressing filters can be removed, and not in all cases
it would be desirable to remove them. The /filterstoremove dictionary lists
filters that are to be processed, and omits filters that are to be preserved
in the output. For streams with multiple filters chained together, the new
version of pdfinflt.ps removes all filters from the first in the
decompressing chain up to, but excluding, the first filter that is to be
preserved. The list of preserved filters, with the reason why these are not
removed, follows:

/RunLengthDecode, /CCITTFaxDecode, /DCTDecode:
These are normaly used for compressing raster images. I assume the main
purpose of this tool is to decompress page streams for debugging, and
decompressing images only adds a huge amount of binary data, making harder
to find and examine content streams. If this is not the case, and getting
raw image data is necessary, simply uncomment the lines corresponding to
these filters.

/JBIG2Decode, /JPXDecode:
There's no (standard) PostScript filter that corresponds to these PDF
filters. (I think) GhostScript implements these filters in the PostScript
interpreter, but not for all platforms, so I added some detection code for
them. The preceding paragraph applies too, so I left the lines corresponding
to these filters commented out.

/Crypt (PDF1.5-specific):
This is a generic interface with decryption plug-ins, and has no PostScript
counterpart (and I don't see how it could have one).

EXPECTED DIFFERENCES :

None.

[toolbin/pdfinflt.ps 1.6]

2004-10-14 18:32 Ray Johnston

Add logic to capture the ENTIRE regression report to a rotating log file.
As before the ENTIRE regression report is only emailed on Mondays.

[toolbin/tests/run_nightly 1.29]

2004-10-14 17:28 Igor Melichev

Fix (pdfwrite) : Fixing some Type 3 encoding problems.

DETAILS :

We found that Encoding compatibility was insufficiently checked
with Type 3 glyph variations.

It's a preparation for fixing the reopened bug 687660
"incorrect font rendering/missing glyphs from ps2pdf".

EXPECTED DIFFERENCES :

None.

[src/gdevpdti.c 1.37, src/gdevpdtt.c 1.89]

2004-10-13 15:31 Igor Melichev

Fix (pdfwrite, PDF interpreter) : Correctly handle different widths for same glyph (continued).

DETAILS :

This patch continues a long story about the handling of different widths for same glyph
in a PDF embedded font.
The last patch in this series was
http://www.ghostscript.com/pipermail/gs-cvs/2004-September/004834.html

That patch caused a problem with pdfwrite,
which needs to write an original glyph name
rather than a substituted one.

This change establish a new discipnile for
passing the original glyph name from the PDF interpreter to pdfwrite
inside a substituted glyph name, with using an
implementation specific separator (~GS~).

Before writing a font, we apply copied_drop_extension_glyphs
to remove extended glyph names. We don't like to
modify the font, but choose this minimal solution for now.
A better solution would be to introduce another flag to glyph slots
to mark ones, which to be skipped when writing the embedded font.

Bug 687740 "(pdfwrite) A character dissappeared in ADOBE1-4.pdf".

EXPECTED DIFFERENCES :

pdfwrite :

ADOBE1-4.pdf

[src/gdevpdtb.c 1.29, src/gdevpdtw.c 1.32, src/gxfcopy.c 1.51, src/gxfcopy.h 1.10, src/gxfont.h 1.23, src/gxtype1.c 1.40, lib/pdf_font.ps 1.69]

2004-10-12 23:08 Ray Johnston

Fix LZWEncode filter to use the EarlyChange parameter and also correct the
tifflzw device to initialize EarlyChange to the proper value (1).
Bug 687726.

DETAILS:

The LZWEncode filter failed to use the EarlyChange param but the LZWDecode
did honor this setting. The LZWEncode always acted as if EarlyChange = 1
which since that was the default, worked as long as the Decoder wasn't set
for EarlyChange == 0.

Also, now that the Encoder honors EarlyChange = 0, the tifflzw device needed
to have the flag set correctly (it needs EarlyChange == 1).

EXPECTED DIFFERENCES:

430-01.ps

[src/gdevtfax.c 1.8, src/slzwe.c 1.2]

2004-10-08 22:55 Igor Melichev

Fix (pdfwrite) : *bfrange boundaries may differ in the last byte only.

DETAILS :

The PDF specification requires so.
Bug 687737 "can't select text in distilled pdf".

EXPECTED DIFFERENCES :

None.

[src/gsfcmap.c 1.25]

2004-10-08 13:27 Igor Melichev

Fix (pdfwrite) : The function same_type42_hinting was indeterministic.

DETAILS :

It compares few TrueType tables for equality,
but didn't work out the case when a table is absent.
In that case the bahavior was indeterministic.

Bug 687736 "pdfwrite hangs (or takes really long) on input file".
It created too many font copies and spent lots of time
for garbage collection.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c 1.50]

2004-10-07 21:12 Alex Cherepanov

Don't overwrite CFLAGS variable if it is already defined.
Bug 687739

[src/msvc32.mak 1.64]

2004-10-07 05:18 Ray Johnston

Fix initialization of C stack streams that did not perform s_init().
Bug 687709 that could result in a Segmentation Fault (SEGV)

DETAILS:
The normal s_alloc() streams included s_init() on the allocated stream,
but C stack streams could have uninitialized elements in the stream struct.
Since this was UMR related, and affected the clist mode, the jpeg device
and the pswrite device (and possibly some pdfwrite data), this would be
different on different platforms.

The premature 'CloseTarget' action when the stream->close_strm was not
initialized as 0 (false) would show up as a SEGV when the -Z@ was used.
Other problems that this patch fixes are not linked to a test file at
the current time.

This change also corrects a trivial typo and a NUL character found in
src/gxtype1.c as a header file related warning in src/imain.c

[src/gdevjpeg.c 1.8, src/gdevlj56.c 1.6, src/gdevpdfc.c 1.49, src/gdevpdfm.c 1.47, src/gdevpdtb.c 1.28, src/gdevpdtw.c 1.31, src/gdevps.c 1.40, src/gdevpsf1.c 1.17, src/gdevpsf2.c 1.32, src/gdevpsft.c 1.32, src/gdevpsim.c 1.14, src/gdevpsu.c 1.18, src/gsfunc4.c 1.16, src/gxclimag.c 1.11, src/gxclpath.c 1.20, src/gxclrast.c 1.31, src/gxclread.c 1.13, src/gxfcopy.c 1.49, src/gxtype1.c 1.39, src/iccfont.c 1.10, src/imain.c 1.40, src/imainarg.c 1.33, src/stream.c 1.26]

2004-10-06 14:12 Ralph Giles

Add a missing dependency on version.mak to the generation of gconfigd.h.
Without this the revision number isn't correctly updated in an incremental
build. Closes bug 687733.

[src/gs.mak 1.27, src/version.mak 1.74]

2004-10-06 11:32 Igor Melichev

Fix (TrueType interpreter) : Calls to user defined instructions were not implemented.

DETAILS :

This implements IDEF and user defined instructions calls
according to the TrueType specification by Apple
http://developer.apple.com/fonts/TTRefMan/ .

EXPECTED DIFFERENCES :

None.

[src/ttinterp.c 1.15, src/ttobjs.c 1.8, src/ttobjs.h 1.6]

2004-10-05 12:45 Igor Melichev

Fix : The 'gslibctx' patch had broken FAPI.

DETAILS :

A memory context pointer was added with no initialization.

EXPECTED DIFFERENCES :

None.

[src/zfapi.c 1.53]

2004-10-05 10:24 Igor Melichev

Fix (Type 1 hinter) : 'int32' conflicts with AIX compiler standard types.

DETAILS :

Bug 687723 "type conflicts in gxhintn.h"

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.53, src/gxhintn.h 1.23, src/lib.mak 1.201]

2004-10-04 17:28 Igor Melichev

Fix : Optimize gs_c_decode with a binary search.

DETAILS :

Bug 687102 "Optimize gs_c_decode".
Patch from John Desrosiers.

EXPECTED DIFFERENCES :

None.

[src/gscedata.c 1.5, src/gscedata.h 1.4, src/gscencs.c 1.8, toolbin/encs2c.ps 1.5]

2004-10-02 01:45 Alex Cherepanov

Add TrivialCMYK color space, which simulates standard PostScript CMYK
to RGB conversion on device-independent level.
Fix bug 687711

[DETAILS]
Recent versions of Adobe Acrobat simulate on screen the appearance
of printed documents when the color of an object is specified
in DeviceCMYK color space. The resulting dark colors can be undesirable
for presentation graphics. TrivialCMYK can help when the user had
RGB colors in mind, but for some reason used CMYK colors instead in the
document.

[Resource/ColorSpace/DefaultCMYK 1.4, Resource/ColorSpace/DefaultRGB 1.4, Resource/ColorSpace/TrivialCMYK 1.1]

2004-10-01 23:36 Russell Lang

Change OS/2 gx_color_index from 32 to 64 bits to allow better
support for DeviceN.

[src/os2.mak 1.41]

2004-10-01 23:35 Russell Lang

Fix for 687706 Display device 8-bit native incorrectly dithers grays.
This is a partial fix and also needs Dan Coby's fixes to the post
DeviceN halftoning.  The DeviceRGBK color model is added.

DETAILS:
Prior to GS 8, the display device 8-bit native format would use 32
gray levels to avoid halftoning, and a 4x4x4 color cube which did use
halftoning.  The halftoning logic was changed with the introduction
of DeviceN and in GS 8 both grays and colors were being halftoned.

The DeviceRGBK color model is added and used by the display device
native 8-bit format.  The RGB color space to RGBK color model
conversion converts pure RGB grays to the K (black/gray additive)
component.  This allows the 32 gray levels to be recognised by the
halftoning logic as being sufficient to avoid halftoning.

[src/gdevdsp.c 1.30, src/gxcmap.c 1.23, src/gxcmap.h 1.12, src/zcolor.c 1.21]

2004-10-01 03:40 Dan Coby

Fix for 687718 The tiffsep device fails when the size of gx_color_index is 32 bits

DETAILS:

The comments on bug 687705 "Compile of 8.31 fails on OS/2" point out that the
tiffsep device fails during device initialization if the size of
gx_color_index is 32 bits.

This is due to a recent change which made the default number of components for
this device equal to 8.  This works if the size of gx_color_index is 64 bits.
But it fails with 32 bits.

This fix changes the default number of components for this device to be
based upon the size of gx_color_index.  It also changes the psdcmyk device
to use the same logic for its default number of components.

This fix also includes changes to doc/Devices.htm which explains that the number
of components will differ based upon the size of gx_color_index (and a link
giving more details on gx_color_index).  More information about the parameters
for the tiffsep device is given including an example command line.

[doc/Drivers.htm 1.49, src/gdevpsd.c 1.18, src/gdevtsep.c 1.5]

2004-09-30 17:31 Igor Melichev

Fix : Moving type1_cis_get_metrics to the graphics library.

DETAILS :

Doing so since copied_type1_glyph_outline calls it.
This change is algorithmically equivalent.
Thanks to Stefan for pointing this out.

EXPECTED DIFFERENCES :

None.

[src/gxtype1.c 1.38, src/zchar1.c 1.40]

2004-09-30 06:37 Dan Coby

This is a partial fix for 687706 Display device 8-bit native incorrectly
dithers grays.  Russell Lang is improving the 8-bit (256 color) display
device to allow more shades of gray.  This change is required for that
effort.

DETAILS:

The pre 8.00 release had more gray levels for the 8-bit display device
but the pre 8.00 release had other related problems in halftoning.  The
fix for those problems eliminated the extra gray levels.

Russell's effort dug up some problems with the handling of halftones
for devices in which the max_color and max_gray values are different
and gray_index is set to an actual component number.  This fix corrects
those problems.

Russell has a patch for the remainder of the effort.  His changes
involve changing the 256 color display device to use a DeviceRGBK process
color model:  red, green, blue and an additive black (gray).  New
device color mapping procs also have been created for this process color
model.  (This is the first example of this process color model in
Ghostscript.)

[src/gxdevice.h 1.20, src/gxdevndi.c 1.4]

2004-09-29 21:36 Igor Melichev

Fix (the filling algorithm) : Unite trapezoids if they have a common side.

DETAILS :

Bug 687716 "Assertion fails in gzspotan.c".
The spot analyzer can't reconstruct the topology when there are
two trapezoids with a common side.

We patched the spot decomposition algorithm with
uniting such trapezoids, because (1) it's too hard to
unite them in the "spotan" device, and (2)
the post-condition of the spot decomposer simplifies.

For more details see a new comment in code.

This patch causes a rendering difference.
We believe that a big part of differences happens due to the bug 687717,
which is currently unfixed due to the QA overload.

If the bug 687717 is fixed before this patch,
a small rendering difference can also appear,
because we unite trapezoids by the equality of x_current, x_next,
which have an arithmetic error. Therefore ununited trapezoids
may have a pixel center between them, which is not painted,
but shifting a boundary to x_current, x_next the pixel center
may fall into a trapezoid, then it is covered by the union and painted.

Besides that, with dropout prevention, a pixel set for the union of
two trapezoids may differ from the union of pixel sets for ununited trapezoids
when at least one of the trapezoids is narrow.
Particularly, two narrow trapezoids may paint 2 pixels,
but its (narrow) union does a single pixel.
Contacting trapesoids are not regular in characters,
which only use a dropout prevention,
but the test file of the bug 687698 (same as for 687667)
demonstrates some ones in a CJK TT font,
which composes hieroglyphs from subglyphs with a deformation and shifting.

EXPECTED DIFFERENCES :

normal 72dpi :

"181-01.ps"
"222-05.ps"
"222-09.ps"
"289-01.ps"
"307-07.ps"
"86554321.pdf"
"bulletin.pdf"
"KozukaB-ILEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"waterfal.ps"

normal 300dpi :

"012-05.ps"
"012-09.ps"
"013-05.ps"
"013-09.ps"
"123-05.ps"
"123-09.ps"
"222-09.ps"
"289-01.ps"
"307-07.ps"
"86554321.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"

pdfwrite 72dpi :

"181-01.ps"
"222-05.ps"
"222-09.ps"
"307-07.ps"
"86554321.pdf"
"Bug687603.ps"
"bulletin.pdf"
"KozukaB-ILEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"

pdfwrite 300dpi :

"012-05.ps"
"012-09.ps"
"013-05.ps"
"013-09.ps"
"123-05.ps"
"123-09.ps"
"222-09.ps"
"307-07.ps"
"86554321.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"

[src/gxfilltr.h 1.7]

2004-09-29 19:10 Igor Melichev

Fix (pdfwrite) : Handle more than 32 TrueType subglyphs.

DETAILS :

Bug 687698  "Cannot extract the embedded font" error message

1. The old code run out an implementation limit MAX_GLYPH_PIECES.
2. Error code was not propagated.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c 1.48]

2004-09-29 11:34 Igor Melichev

Fix : Don't apply fill adjustment when stroking a character.

DETAILS :

Bug 687667 "Line width in a Type 1 stroked font".

EXPECTED DIFFERENCES :

-r300 CAT_LOGO.ps

[src/zchar1.c 1.39]

2004-09-28 21:45 Igor Melichev

Fix : Pattern metrics was imprecize.

DETAILS :

Bug 687581 "A pattern truncated".
This bug is a regression since the December 09 2003 revision.

We still think that we insufficiently understand the Adobe's method,
but now we've got one closer to CPSI than it was before the December 09 2003 revision.
Particularly the pattern step now appears better than on December 09 2003.

This patch includes a change, which is well defined by the math :
the usage of float2fixed_rounded instead float2fixed.
It is a part of the PRECISE_CURRENTPOINT stuff.

The rest of the patch is a kind of hewristic.
We guessed that a pattern size should always round up to allow
a similar logics as for a clipping - "any part of pixel inside".

As before December 09 2003, we improved the case with neither skewing nor rotation.
A further work on the general case may be useful.

At last, some old problems, which existed on December 09 2003,
are still unfixed. An example is -r300 298-09.ps :
a line appears outside the pattern box.
For now living them as they are, because
the primary purpose of this patch is to fix regressions.

EXPECTED DIFFERENCES :

normal 72 dpi :

"176-01.ps"
"255-01.ps"
257-01.ps"  (A dashed line became wider due to a CTM
             coefficient slightly increased,
             and therefore it now looks contiguous.
             It's not a regression.)
"269-01.ps"
"289-01.ps"
"296-01.ps"
"303-01.ps"
"Bug687396.ps"

normal 300 dpi :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"027-13.ps"
"034-10.ps"
"035-07.ps"
"045-01.ps"
"083-09.ps"
"103-01.ps"
"118-01.ps"
"123-09.ps"
"169-09.ps"
"176-01.ps"
"192-01.ps"
"205-09.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"222-09.ps"
"231-01.ps"
"250-01.ps"
"257-01.ps"
"264-01.ps"
"269-01.ps"
"289-01.ps"
"297-01.ps"
"298-09.ps"
"307-07.ps"
"310-04.ps"
"311-03.ps"
"468-01.ps"
"Bug687396.ps"
"mspro.pdf"

pdfwrite 72 dpi :

"176-01.ps"
"212-01.ps"
"214-01.ps"
"257-01.ps" (same as above)
"269-01.ps"
"303-01.ps"
"Bug687396.ps"

pdfwrite 300 dpi :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"017-01.ps"
"027-13.ps"
"034-10.ps"
"035-07.ps"
"045-01.ps"
"083-09.ps"
"103-01.ps"
"118-01.ps"
"123-09.ps"
"169-09.ps"
"176-01.ps"
"192-01.ps"
"205-09.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"222-09.ps"
"231-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"297-01.ps"
"298-09.ps"
"307-07.ps"
"310-04.ps"
"311-03.ps"
"321-09.ps"
"327-01.ps"
"468-01.ps"
"Bug687396.ps"
"mspro.pdf"

[src/gsptype1.c 1.20]

2004-09-28 05:34 Ralph Giles

Export the prototype for gcst_get_memory_ptr() which is now used by
ilocate.c as well as igc.c to igc.h so it is available in both files.
Remove the cast that was papering over the warning this causes.
Completes the fix for bug 687617.

[src/igc.c 1.14, src/igc.h 1.9, src/ilocate.c 1.12]

2004-09-28 02:26 Alex Cherepanov

Remove a comment about LZW-compatible code that is no longer apply.
Bug 687554.

[src/Makefile.in 1.39, src/openvms.mmk 1.29]

2004-09-28 00:45 Ralph Giles

Cast the read standard illuminant to icIlluminant instead of
icStandardFlare inside icmMeasurement_read() inside the icc
library. Not really our code, but resolves an enum mis-match
warning. Bug 687694.

[icclib/icc.c 1.10]

2004-09-28 00:35 Ralph Giles

Add string_.h to some files missing prototypes. Bug 687694.

[src/devs.mak 1.118, src/gdevps.c 1.39, src/gxpflat.c 1.42, src/lib.mak 1.200]

2004-09-28 00:25 Ralph Giles

Add stdio_.h to the makefile dependencies for gslibctx.c.

[src/lib.mak 1.199]

2004-09-28 00:08 Ralph Giles

Properly include the portability version of the stdio error. Corrects
type confict problems on HP-UX. Closes bug 687689.

[src/gslibctx.c 1.5]

2004-09-27 21:14 Russell Lang

Fix bug #687705 Compile of 8.31 fails on OS/2.

[src/gdevos2p.c 1.9, src/gp_os2.c 1.32, src/os2.mak 1.40]

2004-09-27 13:13 Igor Melichev

Fix (Type 1 hinter) : A further improvement of the glyph rendering quality, step 3.

DETAILS :

Don't reset zone alignment.
Bug 687578 "T1 hinter disturbs stem width", Comment #8.

EXPECTED DIFFERENCES :

normal 72 dpi :

"045-01.ps"     ("s" now aligns with the upper zone).
"Bug687603.ps"

normal 300 dpi :

"CIDembedded.pdf"  ("b", "d" now aligns with the bottom zone).

pdfwrite 72 dpi :

"045-01.ps"

pdfwrite 300 dpi :

"chess.ps" (a sloped line hints better).
"CIDembedded.pdf"

[src/gxhintn.c 1.52]

2004-09-27 04:55 Ray Johnston

Fix SEGV caused by premature free of the bbox device with high level
devices that use the bbox_device of the vector high level device.
Bug 687631.

DETAILS:

The vector device allocated a bbox device, but never incremented the
reference count past zero, so any use of the device that added a forwarding
device with that bbox_device as the target would free the bbox device
when that forwarding device closed. This happens with clipped images
or images that use ROP's since a clipping ROP forwarding could be used.

[src/gdevvec.c 1.25]

2004-09-26 21:17 Ray Johnston

Add missing source file (it hadn't been 'added', so it did not get included
on the previous LZWEncode commit.

[src/slzwe.c 1.1]

2004-09-26 16:19 Ray Johnston

Add the LZWEncode filter that actually compresses using the LZW method,
rather than the dummy encoder in slzwce.c that expanded the input, but
that avoided the patent issues. Bug 687554.

Also fix a long standing issue in filter closing that failed to flush the
target stream after the final s_process_write_buf with 'last' == true.
Bug 224134.

DETAILS:

The LZWEncode filter was moved over from an older version of Ghostscript
that actually had a working LZWEncode.

The s_filter_close logic (discussed at length in bug 224134) was fixed
to be consistent with the specification and with Adobe. While the
target stream is not closed (per the specification unless CloseTarget is
true), the specification *DOES* call for an automatic 'flushfile' which
is supposed to be propagated down the filter chain.

[doc/Develop.htm 1.140, doc/Issues.htm 1.42, doc/Projects.htm 1.59, doc/Ps2pdf.htm 1.71, src/bcwin32.mak 1.33, src/dvx-gcc.mak 1.27, src/lib.mak 1.198, src/macos-mcp.mak 1.26, src/macosx.mak 1.23, src/msvc32.mak 1.63, src/msvclib.mak 1.26, src/openvms.mak 1.37, src/os2.mak 1.39, src/slzwce.c 1.5, src/stream.c 1.25, src/unix-gcc.mak 1.46, src/unixansi.mak 1.37, src/watcw32.mak 1.30, src/zfilter2.c 1.6]

2004-09-25 21:48 Jack Moffitt

Fix error with automatic baseline creation for files which contain spaces
in their names.

[toolbin/tests/gscheck_pdfwrite.py 1.24, toolbin/tests/gscheck_raster.py 1.14]

2004-09-25 20:27 Ralph Giles

Remove the 'makegnu' utility. It is out of date, and recent changes to
the documentation structure have rendered its automation more-or-less
unnecessary. The appropriate steps to convert releases are now
documented in doc/Release.htm.

[toolbin/makegnu.tcl 1.6]

2004-09-25 20:24 Ralph Giles

Toolbin cleanup. Remove the extensionless shell wrappers for convenience
utilities, except for gsmake where is aesthetically reasonable. Typing
the script extensions for these little-used commands isn't a hardship.

[toolbin/cvs2hist 1.4, toolbin/makefonts 1.4, toolbin/makegnu 1.4, toolbin/makehist 1.4, toolbin/makemaster 1.4, toolbin/makeset 1.4, toolbin/maketars 1.4, toolbin/makewin 1.4, toolbin/tmake 1.4]

2004-09-25 20:19 Ralph Giles

Update some remaining occurances of 'GNU Ghostscript' to 'GPL
Ghostscript'.

[doc/Commprod.htm 1.33, doc/Make.htm 1.80, doc/New-user.htm 1.52, doc/Public.htm 1.7, doc/Readme.htm 1.57]

2004-09-22 15:35 Igor Melichev

Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/zchar1.c 1.38]

2004-09-22 15:32 Igor Melichev

Fix (pdfwrite) : Alwasys write the file ID in hexadecimal encoding.

DETAILS :

Bug 687688  "PDF file identifier uses non-alphanumeric characters".
The previous patch was committed by error.
This one fixes that, unwinding the last patch.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.100, src/gdevpdfu.c 1.60]

2004-09-22 15:23 Igor Melichev

Fix (pdfwrite) : Alwasys write the file ID in hexadecimal encoding.

DETAILS :

Bug 687688  "PDF file identifier uses non-alphanumeric characters".

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.59]

2004-09-22 14:15 Igor Melichev

Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.

[src/ichar1.h 1.12]

2004-09-22 13:52 Igor Melichev

CDevProc|Metrics|Metrics2 did not work with CIDFontType 0.

DETAILS :

Bug 687681 "Character spacing incorrect".
The old implementation, which comes from the gs-cjk team,
has a bug accessing the replaced metrics of a CIDFontType 0 font,
which effectively caused the replaced metric to be ignored with CIDFontType 0 fonts.

1. Bug : With CIDFontType 0, CDevProc|Metrics|Metrics2 was searched
   in the descendent type 1 or 2 font rather than in the parent type 9 font.

   1.1. A Type 9 font needs to be accessed via a descendent Type 1|2 font
        in pfont->procs.glyph_info. Added a new field gs_type1_data_s::parent,
        and provided an access through it with a new function gs_font_parent.

   1.2. Metrics|Metrics2 is now accessed through gs_font_parent.

   1.3. To access CDevProc implemented a new function zchar_get_CDevProc,
        which also works through gs_font_parent.

   1.4. gs_type1_data_s::parent needs to reset while a type 9 font finalization,
        due to a reason, which we could not understand for sure.
        Likely descendent fonts appear to have a bigger lifetime than
        their parent type 9 font. Probably the descendents are pointed from
        somewhere besides FDArray (maybe the font registry ?
        or maybe after scaling the type 9 font from a type 9 copy ?),
        and we think it's not good.
        We believe that they should be released together with the type 9 font.
        For now leaving it as it is, working around with a hack notify_remove_font_type9.

   1.5. In stable font copies gs_type1_data_s::parent is set to NULL
        to simplify the finalization. They are not used now.

2. Bug : In some cases the glyph bytecode was used instead the CID
   as a key for searching a Metrics|Metrics2 element (zchar1.c).

3. Bug : The PDF interpreter wrongly scaled W,W2,DW,DW2 for CIDFontTYpe0 (pdf_font.ps).

4. pdfwrite : Improved the generation of W, W2 for CID fonts,
   because after implementing (1) re-distilled 401-01.ps rendered incorrectly.

   4.1. Prefer a non-zero width when computing DW, DW2 (gdevpdtw.c)
        (debugged with 401-01.ps).

   4.2. Don't skip zero W, W2 elements. The old code recognized zeros as
        unused glyphs, but must do with the real glyph set in the font copy
        (debugged with the test file of the bug 687681).

5. zcharstring_outline still ignores CDevProc. We believe that it is correct,
   because it is used to compute font features with no dependence on
   the relaced metrics.

6. pdfwrite : Allowed a CDevProc callout for CIDFontType 0, because
   pdfwrite needs to know replaced widths, as well as it was done a half year ago
   for CIDFontType2. Actually after implementing (1) pdfwrite stopped
   to work correctly when re-distilling a PDF file with CIDFontType0,
   due to now it uses W,W2,DW,DW2.

   6.1. A new function z1_set_cache is defined for this purpose
        similarly to zchar42_set_cache.

   6.2. gs_font_procs::glyph_outline now retrieves the side bearing and width.
        Added a new argument 'sbw' to all implementations.

      6.2.1. Currently this function extension is implemented for charstring fonts only,
          which need to interpret a charstring to retrieve the info :
          type 1,2,9, because we don't want to run the type 1 interpreter 2 times
          for getting sbw and bbox. Other font types retrieve zeros,
          which currently are not used.

      6.2.2. type1_cis_get_metrics has been made public.

7. We believe that the implementation of W,W2,DW,DW2 in the PDF interpreter,
   which was contributed by the gs-cjk team, is unreasonably overcomplicated,
   because it is based on CDevProc, which needs an interpreter callout,
   which appears extremily hard from pdfwrite.
   For now leaving it as it is (except a small improvement in (3)).
   We would like to generate Metrics, Metrics2 instead that.
   Note that a small part of this patch (the part (1)) is necessary
   for generating Metrics, Metrics2 for CIDFontTYpe 0.

EXPECTED DIFFERENCES :

Almost all differences are a single pixel glyph shift.

normal 72dpi :

"Altona.Page_3.2002-09-27.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

normal 300dpi :

"289-01.ps"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"
"CIDembedded.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

pdfwrite 72dpi :

"Altona.Page_3.2002-09-27.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

pdfwrite 300dpi :

"CIDembedded.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

[src/gdevpdtt.c 1.88, src/gdevpdtw.c 1.30, src/gsfont.c 1.34, src/gstype42.c 1.45, src/gxfcopy.c 1.47, src/gxfont.h 1.22, src/gxfont1.h 1.13, src/gxtype1.c 1.37, src/gxtype1.h 1.19, src/ichar1.h 1.11, src/icharout.h 1.10, src/zchar.c 1.15, src/zchar1.c 1.37, src/zcharout.c 1.13, src/zfcid0.c 1.23, src/zfcid1.c 1.20, src/zfont1.c 1.13, src/zfont42.c 1.21, lib/pdf_font.ps 1.68]

2004-09-22 00:37 Dan Coby

Move the definition of gs_overprint_t from gsovrc.c to gsovrc.h.  This
makes this structure definition available to future devices which may
want to define their own overprint compositor.

[src/gsovrc.c 1.8, src/gsovrc.h 1.4, src/lib.mak 1.197]

2004-09-21 22:30 Dan Coby

Correct some gcc warnings.

[src/gdevdevn.c 1.23, src/zcolor.c 1.20]

2004-09-21 10:00 Igor Melichev

Fix (pdfwrite) : Generate an error message when pdfmark points beyond the last page.

DETAILS :

Fixes the bug 687693 "A dangling reference from DOCVIEW pdfmark".
We want to return error code, but currently we don't due to
bug 687686 "Ghostscript creates bad xref from ADOBE1-4.pdf".

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.99, src/gdevpdfm.c 1.46, src/gdevpdfx.h 1.101]

2004-09-20 23:28 Dan Coby

Partial fix for 687657 Text in transparency mask yields rangecheck in
discardtransparencymask.

DETAILS:

Three problems have been found with this file.

The rangecheck is actually a secondary effect.  The actual problem
was a typecheck in setrgbcolor.  However that error occurred inside
a stopped context.

1) The file has a mask group.  This group specifies a color space (CS).
The previous code set the current color space to the given value.
However the FillColorSpace and StrokeColorSpace were not set.  As a
result, a DeviceRGB color space was being used instead of the specified
DeviceGray color space.  This resulted in a mismatch in the number
of operands when the color as set (1 versus 3).  The fix consists of
setting both StrokeColorSpace and FillColorSpace when a mask group
contains a CS value.

2) The file uses scn for setting color values for a DeviceGray color
space.  FillColor and StrokeColor can contain wither a single numeric
value (which is common but not required for DeviceGray) or an array
of values for all other color spaces.  The scn and SCN operators were
always assuming that these values always contained arrays.  The fix
consists of checking for the non array cases in the operators.

3) The appearance produced by Ghostscript with the test file does not
match Adobe.  A solid magenta rectangle is produced by Ghostscript.
Adobe shows magenta text.  This problem is NOT fixed by this patch.
Note:  If the test file is opened with Illustrator CS and then saved,
Ghostscript does produced the same appearance as Adobe for the saved
file.  The reason for the differences are not currently known.  However
there are some more details in the bug report on this issue.

[lib/pdf_draw.ps 1.86, lib/pdf_ops.ps 1.36]

2004-09-20 22:14 Dan Coby

Fix for 687403 Poor halftoning for 16 color (4 bit) devices.

DETAILS:

This bug is a brother to bug 687390.  That bug was for 256
color (8 bit) devices.  Russell Lang suggested testing the 4 bit
devices and they were found to have problems caused by the same
logical error.  The halftoning logic assumes that all components
for a device have the same number of shades.  This was not true
for the implementations of the 4 and 8 bit color devices.
This fix converts the 16 color devices to using a 2x2x2 cube.

Note:  A possible future enhancement would be to convert these
devices to using a 4 level gray for shades of pure gray (R = G
= B).

[src/gdevbmp.c 1.10, src/gdevdsp.c 1.29, src/gdevmgr.c 1.7, src/gdevmswn.c 1.12, src/gdevpccm.c 1.7, src/gdevpccm.h 1.8, src/gdevpcfb.c 1.6, src/gdevpcx.c 1.8, src/gdevpm.c 1.10, src/gdevpng.c 1.11]

2004-09-20 21:42 Dan Coby

Fix for 687664 tiffsep sometimes producing apparently corrupt files
sometimes.

DETAILS:

The tiffsep device did not properly handle multiple page input files.
This change adds multiple page handling to the tiffsep device.  Most
of the various tiff related routines already properly handled multiple
pages so changes were only required inside the tiffsep device.

The changes consists of:

1.  Moving several variables which were local to tiffsep_print_page
into the tiffsep device structure and adding initialization.  These
variables provide state information to the general tiff handling
routines and the file pointers for the separation files.

2.  Add logic for determining if the output file name includes a
numeric format specification.  If so then we create individual separation
files for each page.  If not then we create a single file for each
separation.

3.  A device close procedure was added to ensure that the separation
files were closed.

[src/gdevtsep.c 1.4]

2004-09-20 16:21 Igor Melichev

Fix (pdfwrite) : Could merge fonts with insufficient subrs.

DETAILS :

Bug 687675 "ps2pdf13 gives ERROR -15 closing the device"
happened due to an inaccurate computation of Subrs array inclusion.

EXPECTED DIFFERENCES :

None.

[src/gxfcopy.c 1.46]

2004-09-20 13:06 Igor Melichev

Fix : Degenerate curves could cause a too big number of flattened curve segnments.

DETAILS :

Bug 687653 "-dNOTRANSPARENCY still allocates large buffers".
Actually the problem happens due to the bbox device
sets a high resolution, and degenerate curves with zero X or Y variation
use "the conservative method" in gx_curve_log2_samples.
With this change degenerate curves will render as line segments.

EXPECTED DIFFERENCES :

golfer.eps At 72dpi (a 2 pixels difference).

[src/gxpcopy.c 1.23]

2004-09-20 10:50 Russell Lang

Fixes bug #687690 MSVC6 warning in dwimg.c.

[src/dwimg.c 1.16]

2004-09-20 09:59 Igor Melichev

Fix : vd_save caused a yntax error in a release build.

DETAILS :

See the comment added to vdtrace.h :
   /* NOTE :
  	    Use vd_save at end of the definition group of a  block,
  	    because in release build it compiles to the empty operator. */

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.83, src/vdtrace.h 1.14]

2004-09-20 06:48 Raph Levien

Changes bbox device forwarding logic so that get_page_device requests
are always forwarded to the target. Fixes bug #687421. Note: this change
backs out a change made to gdevnfwd.c between GS 4.70 and 4.80, with a
confusing explanation in the change notes. Changes to the page device
behavior in forwarding devices would not be surprising. See the code
review notes linked from the bug for more details.

[src/gdevbbox.c 1.22, src/gdevnfwd.c 1.26, src/gsovrc.c 1.7]

2004-09-20 06:13 Ray Johnston

Fix handling of CMaps to be able to handle large number of CMap entries
seen with some (Adobe) CMap files. Also fix name of a CMap file and
remove garbage at the end of one of our CMap files. Bug 687555.
Thanks to Alex Cherepanov for the changes to allow large CMaps.

[Resource/CMap/Adobe-CNS1-ETen-B5 1.2, Resource/CMap/Adobe-CNS1-ETenms-B5 1.1, Resource/CMap/Adobe-Korea1-H-Mac 1.2, lib/gs_cmap.ps 1.18, src/zfcmap.c 1.16]

2004-09-20 00:19 Jack Moffitt

Sets explicit umask for nightly regression run.  Fixes Bug #687648.

[toolbin/tests/run_nightly 1.28]

2004-09-19 23:56 Jack Moffitt

Fix support for filenames that include spaces.  Also add '.ai' as a PDF
type extension.

[toolbin/tests/gstestgs.py 1.24]

2004-09-19 23:55 Jack Moffitt

Fix a typo made by someone's previous commit.

[toolbin/tests/gscheck_pdfwrite.py 1.23]

2004-09-19 17:05 Jack Moffitt

Added new gsutil module for utility functions.  Changed all file extension
checks to use new gsutil.check_extension().  Added support for '.ai' as
a file extension.  This should fix the problem of several files in
comparefiles not making it into the nightly runs.

[toolbin/tests/gscheck_pdfwrite.py 1.22, toolbin/tests/gscheck_raster.py 1.13, toolbin/tests/gsutil.py 1.1, toolbin/tests/make_testdb 1.13, toolbin/tests/revert_baseline 1.13, toolbin/tests/revert_pdfbaseline 1.11, toolbin/tests/update_baseline 1.14, toolbin/tests/update_pdfbaseline 1.10]

2004-09-19 16:32 Jack Moffitt

Add log rotation for the Ghostscript stdout and stderr logs.  Fixes
Bug #687574.

[toolbin/tests/run_nightly 1.27, toolbin/tests/testing.cfg.example 1.6]

2004-09-18 22:00 Russell Lang

Fixes bug #687683 "gswin32c : Ctrl+C doesn't stop the application".
Make Ctrl+C in the image window act the same as Ctrl+C in the
console window, which generates a signal to exit the process.

[src/dwimg.c 1.15]

2004-09-17 06:14 Dan Coby

Fix for 687625 Incorrect spot color behavior in tiffsep.  Garbage
text was being printed for the spot color names.

DETAILS:

The problem was with the allocation and GC enumeration logic for the
storage for the storage for the spot color names.  Thus the problem
was only apparent after the GC relocation logic had executed.

The fix involves adding enumeration logic for the gs_param_string
structure and correcting the allocation of storage for the data.

Note:  The file src/gdevdevn.c was missed in the previous commit on
this topic.

[src/gdevdevn.c 1.22]

2004-09-17 05:55 Dan Coby

Fix for 687625 Incorrect spot color behavior in tiffsep.  Garbage
text was being printed for the spot color names.

DETAILS:

The problem was with the allocation and GC enumeration logic for the
storage for the storage for the spot color names.  Thus the problem
was only apparent after the GC relocation logic had executed.

The fix involves adding enumeration logic for the gs_param_string
structure and correcting the allocation of storage for the data.

[src/gsparam.h 1.12]

2004-09-17 05:42 Ralph Giles

Use PSOBJDIR as a staging area for the name-rewritten scripts at unix
install time. We previously used 'sed -i' to modify the installed file
in place, but this option is a recent extension and insufficiently
portable. The install script also isn't capable enough to accept files
through pipes, so we much have an intermediate staging area. PSOBJDIR
should be a safe place to write to for this purpose. Fix for 686863.

[src/unixinst.mak 1.37]

2004-09-16 15:14 Igor Melichev

Fix (PDF interpreter) : Correctly handle different widths for same glyph.

DETAILS :

Bug 687672  "incorrect font rendering".

An Encoding may specify various character codes for same glyph, and
Widths may specify different widths for those codes.
Thus same glyph may be used with different widths.

This patch continues a long story about the handling of different widths for same glyph,
which includes my old hacks (pdf_font.ps Revision 1.22 and 1.26)
and Alex's change pdf_font.ps Revision 1.57 .
Alex defines new glyph names for same glyph to resolve the widths conflict.
After the Alex's change my old hacks appear low useful, and can be removed.

This patch
1. Removes the hacks;
2. Improves the Alex's change with the case when CharStrings has no referred glyph
   (debugged with 1_2001.pdf)
3. Improves the Alex's change with minimizing a number of newly generated names,
   because the test file of the bug 687672 maps many charcodes to .notdef with various widths.

Here is a list of bugs related to this change :

687672
623292
467492
517474
444366

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.67, lib/pdf_ops.ps 1.35]

2004-09-16 08:03 Igor Melichev

Fix : A library context was not provided for bbox device.

DETAILS :

BBox device needs a library context for gs_next_id called from gx_image_enum_common_init.
It was not provided when the bbox device has no target.

We assume that the bbox device behavior doesn't depend on availability of a memory pointer -
likely it is so from reading the code.

Bug 687671 "epswriter it's not working at all."

EXPECTED DIFFERENCES :

None.

[src/gdevbbox.c 1.21, src/gdevbbox.h 1.6, src/gdevvec.c 1.24, src/gslib.c 1.15, src/gximag3x.c 1.20]

2004-09-16 07:46 Ralph Giles

Fix a typo in and earlier commit.

[src/unixinst.mak 1.36]

2004-09-16 06:57 Igor Melichev

Fix : A syntax error in a recent patch.

EXPECTED DIFFERENCES :

None.

[src/gdevbbox.c 1.20]

2004-09-15 19:41 Ray Johnston

Remove trailing ^M on lines in several commits by alexcher.

[src/dwimg.h 1.11, src/dwmain.c 1.21, src/dwmainc.c 1.24, src/dwtrace.h 1.7, src/gdevbbox.c 1.19, src/gdevwdib.c 1.9, src/gs.c 1.14, src/iscannum.c 1.10, src/stream.c 1.24, src/unistd_.h 1.12, src/zdevice.c 1.10]

2004-09-15 11:46 Alex Cherepanov

Fix the problems reported by HP aC++/C compiler but unrelated to the crash.
Partial fix for 687643

[DETAILS]
gs.c, int.mak - include the prototype of gs_malloc_init()
ttfmain.c - fix partly initialized FixMatrix m;
gdevpsd.c - allocate 4 elements for CMYK, not 3

[src/gdevpsd.c 1.17, src/gs.c 1.13, src/int.mak 1.130, src/ttfmain.c 1.28]

2004-09-15 07:59 Igor Melichev

A new implementation of shadings, step 87.

DETAILS :

Contrary to PLRM3 page 689, Background was not ignored with shfill.
Adding gs_pattern2_instance_s::shfill for that.
Bug 687673 "Axial shadings differ from Adobe".

EXPECTED DIFFERENCES :

Background isn't painted with 'shfill' (a progression) :
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"

[src/gscolor3.c 1.9, src/gsptype2.c 1.15, src/gsptype2.h 1.10, src/lib.mak 1.196]

2004-09-15 07:21 Igor Melichev

A new implementation of shadings, step 86.

DETAILS :

1. Implemented gx_shade_background with a compatible INTERPATCH_PADDING logic
   for filling a background.
2. The clipping logic in gdevdsha.c must be "any ppart of pixel inside",
   as it is in other places.
3. Dont need adjust_swapped_boundary for clipping rectangles (gxshade6.c).
4. INTERPATCH_PADDING is enlarged to half pixel. See comment in code.
5. Optimized with a better clipping in gx_shade_trapezoid.

Completes the fix for 687585 "A shading renders narrower than its background".

EXPECTED DIFFERENCES :

Shadings render slightly different :

"442-01.ps"
"446-01-fixed.ps"
"464-01.ps"
"478-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"self-intersect2.ps"
"shading_prob_800.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

[src/gdevdsha.c 1.11, src/gsshade.c 1.12, src/gxshade4.h 1.37, src/gxshade6.c 1.82]

2004-09-14 21:38 Russell Lang

Add custom page size to PostScript Printer Description file.

[lib/ghostpdf.ppd 1.2]

2004-09-14 06:45 Russell Lang

Fixes bug 687542 Print with pswrite gives 'Could not open the
file \\spool\yourprinter'. Add a %printer% IODevice for OS/2,
which opens to a temporary file then later copies it to the
print spooler.  This will need "%printer%yourprinter",
not "\\spool\yourprinter".
This is needed to make pswrite write to a printer queue.

[doc/Develop.htm 1.139, src/gp_os2.c 1.31, src/gp_os2.h 1.1, src/gp_os2pr.c 1.1, src/os2.mak 1.38]

2004-09-14 06:42 Russell Lang

Add support for 4-bit/pixel CMYK to the display device clients for
Windows and gtk+.

[src/dwimg.c 1.14, src/dxmain.c 1.15, src/gdevdsp.c 1.28]

2004-09-13 22:32 Ray Johnston

Ignore MediaPosition when selecting a media type. Adobe CPSI does it this
way, and the PLRM suggests that this is advisory only. Bug 687547 for
customer 780.

DETAILS:

Adobe CPSI also ignores this parameter without generating any error or
warning. The PLRM says:

  This parameter does not override the normal media selection process
  described in the text, but if specified it will be honored--provided it can
  satisfy the input media request in a manner consistent with normal media
  selection--even if the media source it specifies is not the best available
  match for the requested attributes.

Since an input PS file is unlikely to have a PPD that accurately reflects
the 'slot' numbers of our InputAttributes dictionary, we also ignore this
option and instead give the 'best fit' based on size and orientation (and
other parameters that may exist).

[lib/gs_setpd.ps 1.25]

2004-09-13 22:08 Ray Johnston

Handle CS/cs PDF operators that have a colorspace array as an operand
instead of a name as the specification requires (yet another broken PDF
that Acrobat Reader handles without complaint). Issue pdfformaterror when
bad CS operands are seen. Bug 687610 for customer 770.

[lib/pdf_draw.ps 1.85]

2004-09-13 18:32 Igor Melichev

A new implementation of shadings, step 85.

DETAILS :

Propagate error codes from shade_bbox_transform2fixed.

EXPECTED DIFFERENCES :

None.

[src/gxshade1.c 1.33, src/gxshade4.c 1.27, src/gxshade4.h 1.36, src/gxshade6.c 1.81]

2004-09-13 16:01 Igor Melichev

A new implementation of shadings, step 84.

DETAILS :

Fixed a Cygwin/gcc warning.

EXPECTED DIFFERENCES :

None.

[src/gsshade.c 1.11]

2004-09-13 15:52 Igor Melichev

A new implementation of shadings, step 83.

DETAILS :

This is a partial fix for the bug
687585 "A shading renders narrower than its background".
It fixes various secondary problems :

1. gx_default_fill_linear_color_scanline could miss pixels at the end of the scanline
   (bug 687585 "A shading renders narrower than its background", the right boundary).

2. decompose_linear_color could miss pixels when swapping axes of the clip rectangle.
   (bug 687585 "A shading renders narrower than its background", the top boundary).
   Defined adjust_swapped_boundary and applied for this purpose.

3. mesh_padding cauld miss pixels  when swapping axes of the padding.
   Defined adjust_swapped_boundary and applied for this purpose.

4. Moved the fill adjustment from gx_dc_pattern2_fill_path to gsshade.c
   and disabled it in the NEW_SHADINGS build, because NEW_SHADINGS build never
   needs it. Instead that it applies mesh_padding.
   The new function gx_dc_pattern2_fill_path_adjusted access the new functionality
   from outside gsshade6.c .
   Also renamed gx_dc_pattern2_fill_path_adjusted with gx_dc_pattern2_fill_path
   for a better reflection of its new purpose.

5. Implemented VD_TRACE_DOWN in try_device_linear_color.
   The old code did a misleading drawing.

6. Fixed a conflict of the 's' flag in the -T argument.
   Changed the documentation to reflect that.

EXPECTED DIFFERENCES :

Shading render slightly different :

72 dpi :
"446-01-fixed.ps"
"483-01.ps"
"483-05-fixed.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"  (a strong progression)
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"

300dpi :

"442-01.ps"
"446-01-fixed.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"BEST8-99-Path.fh7.pdf"  (a strong progression)
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai" (a strong progression)

[src/gdevdsha.c 1.10, doc/Use.htm 1.114, src/gsptype2.c 1.14, src/gsptype2.h 1.9, src/gsshade.c 1.10, src/gsshade.h 1.8, src/gxfill.c 1.119, src/gxshade6.c 1.80, src/gxstroke.c 1.12, src/lib.mak 1.195]

2004-09-13 07:13 Igor Melichev

Fix : Improve the error reporting about a dangling resource map record.

DETAILS :

When a resource map record pointed to an undefined resource,
it printed "undefinedresource in GetSize". With this inprovement
it prints the substituted resource name instead GetSize.

EXPECTED DIFFERENCES :

None.

[lib/gs_cidfm.ps 1.6]

2004-09-12 19:12 Igor Melichev

A new implementation of shadings, step 82.

DETAILS :

The preceeding patch was incorrect in the point (1)
"constant_color_quadrangle painted a triangle when the quadrangle is degenerate.".
There exist cases when quadrangle degenerates to a triangle, and
the patched code skipped it. This putch fixes that.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.79]

2004-09-09 21:01 Igor Melichev

Fix : Type 3 charproc must inherit flattnes from the text context.

DETAILS :

Bug 687582 "Flatness in a Type 3 font".
The feature has been tested with Adobe CPSI.

EXPECTED DIFFERENCES :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"020-01.ps"
"027-05.ps"
"032-07.ps"
"045-01.ps"
"083-09.ps"
"093-01.ps"
"103-01.ps"
"118-01.ps"
"136-01.ps"
"165-01.ps"
"192-01.ps"
"205-09.ps"
"231-01.ps"
"233-01.ps"
"238-01.ps"
"251-01.ps"
"281-01.ps"
"289-01.ps"
"298-09.ps"
"308-04.ps"
"311-03.ps"
"321-09.ps"
"409-01.ps"
"a.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"
"Bug687207.ps"
"Type3stringwidth.ps"

[src/gxpaint.c 1.5, src/lib.mak 1.194]

2004-09-09 20:52 Ray Johnston

Fixes for security problems not fixed in previous commit and fixes for
other problems identified by SaGS in bug report -- detecting recursion,
allowing r/w strings in procedures (but not in PermitFile arrays).
Bug 687559.

[lib/gs_lev2.ps 1.35]

2004-09-09 17:47 Igor Melichev

A new implementation of shadings, step 81.

DETAILS :

1. constant_color_quadrangle painted a triangle when the quadrangle is degenerate.
2. rangecheck happened if the path lies entirely within an Extend area of an axial shading.
3. Due to a poor precision of t0, t1, Extend areas were painted when they have a zero width.
Bug 687646  .

EXPECTED DIFFERENCES :

"442-01.ps"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"

[src/gxshade1.c 1.32, src/gxshade6.c 1.78]

2004-09-09 12:44 Igor Melichev

fuzzy.c : Improving the return codes.

DETAILS:

Return 2 on "out of window",
return 1 with a difference within the window,
return 0 otherwize (files equal).

[toolbin/tests/fuzzy.c 1.16]

2004-09-09 11:33 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 7).

DETAILS :

A flag to be reset when going to the next character.
Bug 687660 "incorrect font rendering/missing glyphs from ps2pdf"

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.61]

2004-09-09 11:24 Igor Melichev

Fix (Type 1 hinter) : A further improvement of the glyph rendering quality, step 2.

DETAILS :

Switch on the new code in gxhintn.h, gxhintn.c .
See the preceeding log message about the configuration flags :
http://www.ghostscript.com/pipermail/gs-cvs/2004-September/004792.html .
Fixes bugs
687578 "T1 hinter disturbs stem width"
687579 "Type 1 hinter disturbs glyph height"
687588  "A CJK TT rendering worse"

EXPECTED DIFFERENCES :

A massive glyph rendering difference :
about 50% of files at 72dpi, and about 95% of files at 300dpi.

[src/gxhintn.h 1.22]

2004-09-08 10:13 Igor Melichev

Fix (Type 1 hinter) : A further improvement of the glyph rendering quality, step 1.

DETAILS :

This change is algorithmically equivalent,
because new code is disabled wirth configuration switches
listed below.

1. FINE_STEM_COMPLEXES
   1.1. Stem complex could miss a common boundary.
   1.2. Stem width could be distorsed due to a common boundary missing
        (Bug 687578 "T1 hinter disturbs stem width".).
   1.3. Overall hint (if presents) should have a bigger priority.
2. ALIGN_BY_STEM_MIDDLE
   2.1. A stem middle could be shifted too much due to
        independent grid-fitting of boundaries and the change 1.2 -
        see 'i' in ccc-.pdf attached to Bug 687578.
        Fixed with an improved alignment with t1_hinter__align_stem_to_grid.
   2.2. This isn't applicable for top|bottom zones from the TT stem recognizer,
        because we want to force outer boundaries to keep the glyph height.
   2.3. 033-52-5873.pdf defines "pseodo-stem" hints,
        which have only one boundary corresponding to real poles.
        recognize them with t1_hinter__mark_existing_stems,
        and don't apply the improved alignment,
        because those stems designate outer glyph boundaries,
        which we want to force the uniform glyph height.
        Apparently fixes Bug 687579 "Type 1 hinter disturbs glyph height".
3. OPPOSITE_STEM_COORD_BUG_FIX
   Aligning a stem width, the resolutions by X and Y were exchenged.
4. TT_AUTOHINT_TOPZONE_BUG_FIX
   topzone and botzone were mixed when come from the TT stem recognizer.

Also improved general comments in gxhintn.c .

EXPECTED DIFFERENCES :

None (the new code disabled).

[src/gxhintn.c 1.51, src/gxhintn.h 1.21]

2004-09-08 09:36 Igor Melichev

fuzzy.c : Improving the report message.

DETAILS:

Print report message if any difference found.
Before now it was printed only if out of window.
Return error code only if out of window,
as it was before.

[toolbin/tests/fuzzy.c 1.15]

2004-09-08 07:00 Ralph Giles

Translate the name of the gs executable stored in the utility scripts at
install-time on unix. Closes bug 686863.

DETAILS:

The autoconf build supports a --with-gs= option for setting the
name of the Ghostscript executable, which is stored in the makefiles as
'$(GS)', but scripts such at ps2pdf that expect to make invoke
Ghostscript made no use of this variable, causing version skew at best,
complete failure of that popular utility at worst. We therefore now
rewrite the hard-coded name each time we install the utility scripts.

[src/unixinst.mak 1.35]

2004-09-08 06:28 Ralph Giles

Propagate autotools build system changes from the GS_8_1X branch. Use
the proper macro for the 'rm' function, and a more specific test for
locating the local libpng library source.

[src/Makefile.in 1.38, src/configure.ac 1.48]

2004-09-06 21:23 Ray Johnston

Change regression test flags to use new JOBSERVER flag. Older flags are
retained to allow older regression testing to still use this module.

[toolbin/tests/gstestgs.py 1.23]

2004-09-06 07:26 Ray Johnston

Add some job server related support. The -dJOBSERVER option defines the
^D to start a new encapsulated job, and the ^D is changed to be a self-
delimitting token in the scanner. Fixes 687079.

DETAILS:

For backward compatibility, -dNOOUTERSAVE is retained, but this does
*NOT* define the ^D to start a new encapsulated job. As specified in the
updates to doc/Use.htm, in order to avoid an /invalidrestore error,
the input should be from stdin otherwise the restore done as part of the
new job encapsulation (restore returns to the server state) will encounter
a file object that was created after the encapsulation save.

This allows 289-01.ps to complete IFF the -dJOBSERVER option is used
during regression testing. Thus the only (eventual) regression change
will be:

289-01.ps

[doc/Use.htm 1.113, lib/gs_init.ps 1.111, lib/gs_lev2.ps 1.34, src/scantab.c 1.5]

2004-09-03 20:23 Ray Johnston

Add missing memory argument in 'I' interp debug printing. Also remove
local prototype for debug_print_ref in favor of using idebug.h. Fixes
SEGV when using -ZI or (I) true .setdebug.

[src/int.mak 1.129, src/interp.c 1.20]

2004-09-02 21:49 Ralph Giles

Use the MTIME define from the stat module rather than a numerical index
to specify the modification time in python. Propagates a similar change
from gscheck_raster.py.

[toolbin/tests/gscheck_pdfwrite.py 1.21]

2004-09-02 21:30 Ralph Giles

Propagate memory pointer gs_malloc() changes to the optional lj3100sw
device. Patch from Harald Koenig. Closes bug 687636.

[src/gdevl31s.c 1.5]

2004-09-02 08:26 Igor Melichev

Fix : Unwind an unintentional change to setup_image_compression.

DETAILS :

I guess that gdevpsdi.c revision 1.30 was unintentionally modified with the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-August/004681.html

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.31]

2004-08-31 22:07 Dan Coby

Fix for 687640 Unable to set default halftones for PDF.

DETAILS:

To support both PS level 1 and PS level 2 interpreting modes,
Ghostscript defines two routines for setting a default halftone.
PS level 1 does not support resources.  Thus for PS 1 we have
.setdefaultscreen which sets a default halftone which is defined
inside of gs_init.ps.  For PS 2, we have .setdefaulthalftone
which is similar to .setdefaultscreen except that it also checks
for a default halftone resource.

The PDF interpreter's handler for the /HT gstate parameter
called .setdefaultscreen if the parameter value was /Default.
This fix changes the handler to use .setdefaulthalftone instead.
This results in the PDF interpreter using the default halftone
resource if it is present.

[lib/pdf_draw.ps 1.84]

2004-08-31 20:36 Ray Johnston

Fix ResourceForAll Category procedure to make sure that the path given
by GenericResourceDir systemparam is included in the enumeration.
Bug 687641.

[lib/gs_res.ps 1.37]

2004-08-31 20:05 Ralph Giles

Bump version after the 8.31 beta release.

[doc/News.htm 1.151, lib/gs_init.ps 1.110, src/gscdef.c 1.46, src/version.mak 1.73]

2004-08-31 19:23 Alex Cherepanov

Trap C stack overflow exception on Borland C and MSVC. Without the
trap the application silently terminates when C stack overflows.
Fix bug 687461

[DETAILS]
Watcom C 1.2 doesn't need the trap. It is also the only compiler tested
that converts trailing recursion to iteration. GCC 3.2 on Windows still
generates programs that fail silently but I don't know how to fix this.
GCC 2.95 on Linux reports the stack overflow.

[src/dwmain.c 1.20, src/dwmainc.c 1.23, src/windows_.h 1.7, src/winint.mak 1.22]

2004-08-31 13:49 Igor Melichev

Fix : Arcs were imprecise (continued).

DETAILS :

A previous patch had a minor portability defect :
PRECISE_CURRENTPOINT was used before defined.

EXPECTED DIFFERENCES :

None.

[src/gxmatrix.h 1.10]

2004-08-31 13:23 Igor Melichev

Fix : Arcs were imprecise.

DETAILS :

Bug 687584 "An extra element painting a circle.".

The problem happened due to the PRECISE_CURRENTPOINT patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-March/004333.html
appears incomplete : arcs were not improved.
This patch fixes that.

1. Applied gs_point_transform2fixed_rounding in arc_add
to be consistent with the precise current point.

2. Renamed float2fixed_rounding with float2fixed_rounded
and made it global.

3. Moved the definition of PRECISE_CURRENTPOINT
to the appropriate scope.

We leave many places in code, in which
the unrounded transform is still applied,
but those places do not deal with the current point.

EXPECTED DIFFERENCES :

Massive difference with acrs :

normal, 72 dpi :
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"027-05.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"103-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"192-01.ps"
"237-01.ps"
"244-01.ps"
"289-01.ps"
"298-09.ps"
"308-04.ps"
"311-03.ps"
"321-09.ps"
"Bug687207.ps"
"vasarely.ps"

normal 300 dpi :

"213-01.ps"
"214-01.ps"
"244-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"258-01.ps"
"270-01.ps"
"289-01.ps"
"014-01.ps"
"014-01.ps"
"014-13.ps"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"027-05.ps"
"031-01.ps"
"032-01.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"103-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"192-01.ps"
"237-01.ps"
"244-01.ps"
"298-09.ps"
"308-04.ps"
"311-03.ps"
"321-09.ps"
"Bug687207.ps"
"vasarely.ps"

pdfwrite, 72 dpi :

"012-01.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"032-01.ps"
"034-10.ps"
"123-01.ps"
"123-05.ps"
"192-01.ps"
"298-09.ps"
"321-09.ps"
"vasarely.ps"

pdfwrite 300 dpi :

"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"027-05.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"109-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"192-01.ps"
"220-01.ps"
"237-01.ps"
"245-17.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"269-01.ps"
"270-01.ps"
"298-09.ps"
"308-04.ps"
"321-09.ps"
"442-01.ps"
"446-01.ps"
"Bug687207.ps"
"vasarely.ps"

[src/gsmatrix.c 1.8, src/gspath.c 1.10, src/gspath1.c 1.10, src/gxfixed.h 1.9, src/gxmatrix.h 1.9, src/gxstate.h 1.11]

2004-08-31 09:07 Igor Melichev

Implementing Visual Trace for 'stroke'.

DETAILS :

It is necessary for analyzing the Bug 687584,
and it is useful in general.

EXPECTED DIFFERENCES :

None.

[doc/Use.htm 1.112, src/gxfill.c 1.118, src/gxstroke.c 1.11, src/lib.mak 1.193, src/vdtrace.h 1.13]

2004-08-30 21:45 Dan Coby

Fix for 687607   Text missing with TextALphaBits=2 and tiffsep device.

DETAILS:

The TextAlphaBits and GraphicsAlphaBits device parameters were not working
for devices with a depth of more than 32 bits.  The fix involves replacing
the copy_alpha device procs in the 40, 48, 56, and 64 bit memory devices
with the gx_default_copy_alpha routine.  These devices previously had a
copy_alpha routine which did nothing.  This was a mistake from when these
devices were created as part of the DeviceN work.

[src/gdevm40.c 1.2, src/gdevm48.c 1.2, src/gdevm56.c 1.3, src/gdevm64.c 1.3]

2004-08-30 16:45 Ray Johnston

Fix for security problems with user parameters, in particular the
/PermitFileReading array. Also corrects handling of parameter arrays
that contain a 'mark'. Fixes bug 687559. Thanks to mat. Gh. Savulescu
(SaGS) for the bug report and for a suggested patch.

[lib/gs_lev2.ps 1.33]


Version 8.31 (2004-08-28)

This is a beta release of the development tree. It contains a number of new features and is made available for those interested in testing the new version before it becomes the next stable release.

This second beta contains a large number of bug fixes over the earlier 8.30 version.

New features since the last stable release:

The following bug numbers were open at the time of release:

405501, 430175, 446344, 456692, 458780, 463688, 465936, 487953, 493348, 526099, 526491, 530011, 535366, 535932, 578865, 592160, 603934, 610478, 614298, 626295, 634036, 645316, 674418, 677324, 685335, 686747, 686750, 686816, 686819, 686824, 686841, 686842, 686843, 686853, 686863, 686865, 686867, 686902, 686919, 686980, 686996, 687011, 687012, 687013, 687039, 687063, 687079, 687084, 687086, 687095, 687102, 687105, 687108, 687110, 687122, 687125, 687146, 687157, 687168, 687174, 687179, 687193, 687196, 687203, 687219, 687221, 687229, 687231, 687243, 687251, 687257, 687259, 687271, 687275, 687280, 687295, 687297, 687298, 687303, 687314, 687316, 687324, 687327, 687341, 687342, 687345, 687346, 687360, 687373, 687375, 687394, 687397, 687399, 687401, 687403, 687410, 687414, 687421, 687434, 687435, 687445, 687459, 687460, 687461, 687467, 687468, 687473, 687474, 687475, 687479, 687480, 687484, 687485, 687490, 687492, 687497, 687498, 687501, 687512, 687514, 687516, 687518, 687520, 687523, 687524, 687525, 687528, 687529, 687531, 687535, 687536, 687537, 687539, 687541, 687542, 687545, 687547, 687551, 687552, 687554, 687555, 687558, 687559, 687560, 687561, 687571, 687574, 687575, 687577, 687578, 687579, 687581, 687582, 687583, 687584, 687585, 687586, 687588, 687589, 687590, 687592, 687593, 687595, 687600, 687601, 687607, 687608, 687610, 687611, 687612, 687614, 687615, 687616, 687617, 687621, 687622, 687625, 687627, 687628, 687630, 687631, 687632, 687633, 687634.

Incompatible changes

No known incompatible changes at the time of release.

Changelog

2004-08-28 22:10 Ralph Giles

Update the version and date on the VMS help file.

[doc/gs-vms.hlp 1.29]

2004-08-28 21:52 Ralph Giles

Update release date on documentation.

[doc/API.htm 1.44, doc/Bug-form.htm 1.41, doc/Bug-info.htm 1.40, doc/C-style.htm 1.47, doc/Commprod.htm 1.32, doc/Copying.htm 1.31, doc/DLL.htm 1.35, doc/Deprecated.htm 1.12, doc/Details8.htm 1.9, doc/Develop.htm 1.138, doc/Devices.htm 1.81, doc/Drivers.htm 1.48, doc/Fonts.htm 1.42, doc/Helpers.htm 1.35, doc/History1.htm 1.31, doc/History2.htm 1.31, doc/History3.htm 1.31, doc/History4.htm 1.31, doc/History5.htm 1.33, doc/History6.htm 1.48, doc/History7.htm 1.36, doc/History8.htm 1.13, doc/Htmstyle.htm 1.36, doc/Install.htm 1.46, doc/Issues.htm 1.41, doc/Language.htm 1.87, doc/Lib.htm 1.34, doc/Maintain.htm 1.42, doc/Make.htm 1.79, doc/New-user.htm 1.51, doc/Projects.htm 1.58, doc/Ps-style.htm 1.29, doc/Ps2epsi.htm 1.33, doc/Ps2pdf.htm 1.70, doc/Psfiles.htm 1.53, doc/Readme.htm 1.56, doc/Release.htm 1.86, doc/Source.htm 1.31, doc/Tester.htm 1.31, doc/Testing.htm 1.26, doc/Unix-lpr.htm 1.31, doc/Use.htm 1.111, doc/Xfonts.htm 1.31, man/dvipdf.1 1.29, man/font2c.1 1.29, man/gs.1 1.30, man/gslp.1 1.29, man/gsnd.1 1.29, man/pdf2dsc.1 1.28, man/pdf2ps.1 1.30, man/pdfopt.1 1.28, man/pf2afm.1 1.29, man/pfbtopfa.1 1.30, man/printafm.1 1.29, man/ps2ascii.1 1.28, man/ps2epsi.1 1.27, man/ps2pdf.1 1.34, man/ps2pdfwr.1 1.33, man/ps2ps.1 1.36, man/wftopfa.1 1.29]

2004-08-28 21:47 Ralph Giles

Change the product name to BETA RELEASE

[src/gscdef.c 1.45]

2004-08-28 21:47 Ralph Giles

Add recent new files to the listings in the documentation.

[doc/Develop.htm 1.137, doc/Psfiles.htm 1.52]

2004-08-28 21:28 Ralph Giles

Update release notes and open bug list for the 8.31 beta release. Bump
the release date as well.

[doc/News.htm 1.150, src/version.mak 1.72]

2004-08-26 09:13 Russell Lang

Fix half-toning for display device, bug 687629.

DETAILS:
Prior to DeviceN, dither_gray/max_gray were used if ncomp==1.
With DeviceN, dither_gray/max_gray are used if gray_index >= 0.
The display device was not correctly setting gray_index for
native 1-bit/pixel format.

[src/gdevdsp.c 1.27]

2004-08-26 00:15 Ray Johnston

Fix for image matrix having negative values.  Thanks to Len Sorenson
for submitting this patch (author unknown).  Bug #687411.

DETAILS:

The error is using floor to round a value without checking if it might
be negative first. There were actually two places that did this even
though the patch that was originally submitted only was for one of them.

[src/gximag3x.c 1.19]

2004-08-26 00:04 Ray Johnston

Close the font file after the font has been processed (loaded into VM).
This prevents a problem with using up too many file handles detected on
Solaris. Thanks to Alex Cherepanov for the patch. Bug #687066.

DETAILS:

The patch has no effect on the cache. There is no point of not closing
the file after the content has been copied to memory.

On GNU/Linux GS has 250K VMThreshold and 1024 handles. That's enough.
On Windows GS has 1M VNThreshold and 512 handles. This is still OK.
On Solaris GS has 1M VMThreshold and 256 handles. Handles can be used up
before garbage collection starts. The following program fails on Solaris.

(a)(w) file closefile
1000 { (a)(r) file pop } repeat

Dependence on VMThreshold indicates that GC is not activated by
open(2) failing with EMFILE . This is a real bug, the patch is
just a work around that we may need to fix later, but not likely to
be a problem.

[lib/gs_type1.ps 1.15]

2004-08-25 23:52 Ray Johnston

Fix to close streams at EOF (not only filter streams), as required by
the PLRM. Thanks to Alex Cherepanov for this patch. Bug #687505.

DETAILS:

This is similar to a patch that I had developed and tested prior to
Alex's patch. I had tested my patch, then Alex's against the regression
suite and determined that it does not cause any differences.

Alex's patch conforms to my analysis of the problem and the fix.

[src/stream.c 1.23]

2004-08-25 15:56 Alex Cherepanov

Bind all operators in DefaultGray, DefaultRGB, DefaultCMYK color spaces.
Partial fix for the bug 687608

[Resource/ColorSpace/DefaultCMYK 1.3, Resource/ColorSpace/DefaultGray 1.3, Resource/ColorSpace/DefaultRGB 1.3]

2004-08-24 17:51 Igor Melichev

Fix (pdfwrite) : A page compression type change could cause a crash.

DETAILS :

Bug 687626 "A crash in pdfwrite".
It crashed after the compression is changed from none to Flate
with setdevparams inside a page.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.98, src/gdevpdfu.c 1.58, src/gdevpdfx.h 1.100]

2004-08-24 15:36 Igor Melichev

Fix : gs_lib_ctx was wrongly accessed while looking up a dictionary stack extension.

DETAILS :

Bug 687623  A crash in the interp.c

EXPECTED DIFFERENCES :

Fixes crash with re-distilled files :
251-01.ps
Bug687044.ps
Bug687489.ps
test-setweightvector.ps,
tpc2.ps

[src/idstack.c 1.7]

2004-08-24 15:36 Igor Melichev

Fix : gs_lib_ctx was not accessible while clist_playback_band.

DETAILS :

Bug 687624 "A crash in gp_check_interrupts".

EXPECTED DIFFERENCES :

Fixes crash with re-distilled files :
Svd.pdf
test.pdf

[src/gxclread.c 1.12]

2004-08-24 12:52 Igor Melichev

Fix (TT interpreter) : Provide a tolerance to an inconsistent cvt length.

DETAILS :

Bug 687604 "/invalidfont in --show-- error".

We analyzed UFST and Free Type 2.
UFST has same problem.
FreeType 2 provides a tolerance, which we port now.
Note that now we don't port a tolerance for other CVT commands.

EXPECTED DIFFERENCES :

None.

[src/ttinterp.c 1.14]

2004-08-24 10:58 Igor Melichev

Fix (TT interpreter) : A minor portability problem.

DETAILS :

A preprocessor statement didn't start in the first column.
Occasionally discovered readin the code.
Some time ago it was claimed as non-portable.

EXPECTED DIFFERENCES :

None.

[src/ttload.c 1.6]

2004-08-24 09:10 Igor Melichev

Fix : Makefiles missed a dependency.

DETAILS :

After rebuilding the last revision got a crash due to gp_mspol.c
was not recompiled. Found out that gslibctx_h was
wrongly defined in lib.mak .
Also changed the including of stdio.h in gslibctx.h to
a C library file (IMO it should be so).

EXPECTED DIFFERENCES :

None.

[src/gslibctx.h 1.4, src/lib.mak 1.192]

2004-08-23 09:57 Russell Lang

Allow the display device row alignment to be changed from the
default 4 bytes to 8, 16, 32 or 64 bytes.

DETAILS:
If the image is allocated in video display memory, an alignment
such as 16 bytes (128-bit memory) may be required.
This is implemented by making the underlying memory device
use a larger width than the display device.

[src/gdevdsp.c 1.26, src/gdevdsp.h 1.10]

2004-08-19 21:52 Russell Lang

Changed iapi to use a void* instead of a gs_main_instance pointer.

[src/dmmain.c 1.4, src/dpmain.c 1.12, src/dwmainc.c 1.22, src/dxmain.c 1.14, src/dxmainc.c 1.10]

2004-08-19 19:33 stefan

Changed iapi to use a void* instead of a gs_main_instance pointer.
Cleaned up warning related to function pointer signature miss-matches.

DETAILS:

iapi.h no longer defines a type for gs_main_instance *
This will likely need to be put back in for backward compatibility.

The iapi interface now uses a void * instance handle reflecting
that it is an opaque type to the outside world.

Note that function pointer argument miss-matches generate warnings in
msvc but not in gcc.  These have been fixed.

[src/dwmain.c 1.19, src/gdevpdtw.c 1.29, src/gdevpsf.h 1.27, src/gdevpsfm.c 1.15, src/gsalloc.c 1.22, src/gsccode.h 1.14, src/gscpixel.c 1.13, src/gscpixel.h 1.7, src/gscspace.c 1.18, src/gsdevice.c 1.23, src/gslibctx.c 1.4, src/gslibctx.h 1.3, src/gxccman.c 1.28, src/gxfcache.h 1.27, src/iapi.c 1.12, src/iapi.h 1.13, src/idict.c 1.12, src/ilocate.c 1.11, src/iutil.c 1.11, src/iutil.h 1.8, src/sdctc.c 1.6, src/zchar32.c 1.5, src/zcssepr.c 1.16, src/zfont.c 1.12, src/zpacked.c 1.7]

2004-08-19 10:50 Russell Lang

Add a PPD for PostScript to be used by ghostscript ps2pdf.

[doc/Develop.htm 1.136, doc/Ps2pdf.htm 1.69, lib/ghostpdf.inf 1.1, lib/ghostpdf.ppd 1.1]

2004-08-19 07:38 Russell Lang

Enable progressive updates for the image window of
the MS-Windows ghostscript command line program.
Change update method to use a Windows timer.

DETAILS:
In the MS-Windows GUI executable (i.e. text window managed by
ghostscript rather than using a system console window), the image
window is progressively updated every second or so as each page
is drawn.  The console executable did not do this.

The update code for both GUI and console executables is changed to
use a timer.  The display update code is called whenever particular
device drawing operations happen, and if a timer is not already
running, it starts an update timer.  The minimum update interval
is shortened from 1s to 100ms. The time to refresh the window is
measured, and the update interval may be increased to make sure
that updates account for no more than 10% of processing.
The update interval is decreased if subsequent updates are
much quicker.  The timer is stopped by any sync.

[src/dwimg.c 1.13, src/dwimg.h 1.10, src/dwmainc.c 1.21]

2004-08-18 22:25 stefan

Fixed dependancies for gslibctx.h

[src/int.mak 1.128, src/lib.mak 1.191]

2004-08-18 22:24 stefan

Removed redundant include.

[src/gsmalloc.c 1.13]

2004-08-18 20:44 Igor Melichev

Fix (pdfwrite) : Check for glyph name conflicts while font merging.

DETAILS :

Bug 687597  pdf created by pdfwrite has garbled text (spr 3994)

1. When a document embeds 2 fonts with same name, same hinting
and same glyph names but different charstrings, the old code
didn't compare charstrings and erroneusely merged fonts.

2. pdf_obtain_font_resource_encoded didn't compare the hinting
because same_type1_hinting computed a too strong condition
(this change is not strongly neccessary for the bug).

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.87, src/gxfcopy.c 1.45]

2004-08-18 14:40 Igor Melichev

Fix (pdfwrite) : Wrong glyph positions with CIDFontType2 with no vmtx.

DETAILS :

Bug 687603  vertical text misplaced after distilling .

1. When computing the glyph position, must account that we write
DW2[0 0] when there is no vmtx.

2. Computing a DW2, the advance got a wrong sign.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.86]

2004-08-18 04:48 Dan Coby

Implementation of 687496 transparency and CMYK support.

DETAILS:

This change extends our current implementation of the PDF 1.4
transparency to include blending in a DeviceCMYK color space.
There is also a partial implementation of a DeviceGray blending
space.  However I do not have a method of generating test data
for a DeviceGray blending space.  Currently the choice of a
blending color space is based upon the process color model of
the output device.

Note:  There two differences expected in the regression testing.
These are with ai2.pdf and dina3_watermark.pdf.

[src/gdevp14.c 1.26, src/gxblend.c 1.6, src/lib.mak 1.190]

2004-08-17 20:21 Ray Johnston

Add PDFSTEP debug aid. Prints a step number at end of PDFDEBUG line, and
sync's the display, then reads a number of steps to skip ( == single
step). This is rudimentary but somewhat useful. Invoked with -dPDFSTEP.

[lib/pdf_base.ps 1.44]

2004-08-17 19:56 Ralph Giles

Bump the version number after the last beta release.

[lib/gs_init.ps 1.109, src/gscdef.c 1.44, src/version.mak 1.71]

2004-08-17 19:39 Ralph Giles

Remove references to the FreeType license. Artifex Software, Inc. has
purchased rights to the FreeType 1 code and the work included here is
relicensed under the same terms as with the rest of the Ghostscript code.

[LICENSE 1.4, doc/FTL.txt 1.3]

2004-08-17 18:59 Ray Johnston

Add support for PDF single stepping debug aid (PDFSTEP). Actual interpreter
changes made separately.

[lib/gs_init.ps 1.108]

2004-08-17 17:53 Ray Johnston

Handle invalid PDF's that use 0.0 font scaling (Tf operator). Fixes bug
687606 for customer number 780.

DETAILS:

If the font scale is 0.0, then just use a very small value. This may result
in a small unwanted dot, but that is probably not an issue since it is
an invalid value. The better approach for 'invisible' text is to use
TextRenderingMode 3. The 'pdfformaterror' function is used to complain
about this so the problem might get fixed by the PDF Creator.

[lib/pdf_ops.ps 1.34]

2004-08-14 02:06 Russell Lang

Correct the previous MSVC 8 updates to allow compilation with debugging.

[src/msvc32.mak 1.62, src/msvccmd.mak 1.21]

2004-08-13 12:59 stefan

Added missing parameter types to prototype.

[src/gpcheck.h 1.9]

2004-08-13 04:57 Russell Lang

Detect the version of Microsoft Visual C++ from the version of nmake.

[doc/Make.htm 1.78, src/msvc32.mak 1.61]

2004-08-13 00:16 Russell Lang

Add support for compiling with the beta of Microsoft Visual
Studio 2005, also known as MSVC 8.

DETAILS:
Add new MSVC_MINOR_VERSION=1 to distinguish Microsoft Visual
Studio .NET 2003 (MSVC 7.1) from Microsoft Visual Studio .NET
(MSVC 7.0)
Add new MSVC_VERSION=8 for Microsoft Visual Studio 2005
Ignore deprecated warnings from MSVC 8 with /wd4996, because
insecure CRTL functions like strcpy and sprintf are now
marked as deprecated.
Remove /Ze which is always the default and is unknown to MSVC 8.
Replace /O with /O2.  The former is not documented for MSVC 5 - 8
and is unknown to MSVC 8.
Remove /Gs and /Ge for MSVC 8.  Stack checking is now always done.

[doc/Make.htm 1.77, src/msvc32.mak 1.60, src/msvccmd.mak 1.20]

2004-08-11 14:33 stefan

Added memory pointers to gsmalloc use by jpg2000 interface.

DETAILS:

Added jpx_memory to the stream state since the memory pointer
in a normal stream object in often NULL indicating a stack object.

[src/sjpx.c 1.10, src/sjpx.h 1.3, src/zfjpx.c 1.2]

2004-08-11 13:36 Ray Johnston

When scaling factors of /ImageMatrix in a image mask for ImageType3 are
negative, translation offset values for image mask rendering are
incorrect and it makes abnormal output (eg. white lines).
This patch fixes this bug #686843. Thanks to Len Sorensen for the analysis.

[src/gximag3x.c 1.18]

2004-08-11 13:33 Ray Johnston

When scaling factors of /ImageMatrix in a image mask for ImageType3 are
negative, translation offset values for image mask rendering are
incorrect and it makes abnormal output (eg. white lines).
This patch fixes this bug #686843. Thanks to Len Sorensen for the analysis.

[src/gximage3.c 1.14]

2004-08-11 12:58 Ray Johnston

Fix bug 687038 that resulted in a crash if the initial device was not
pdfwrite.

DETAILS:

This was almost fixed by recent changes to gs_pdfwr.ps and
gs_setpd.ps for bugs 687325, 687436 and 687458.

Unfourtunately, the initialization of parameters only occurred
if the initial device was pdfwrite. A second patch removing
the initial device constraint on the '1010' .schedule_init
process was committed and fixes the problem.

Note that there was a work-around that if -dPDFSETTINGS=... was
given on the command line, it also worked.

EXPECTED DIFFERENCES:

none, since we don't test for this usage.

[lib/gs_pdfwr.ps 1.39]

2004-08-10 13:02 stefan

Added memory_t pointers to gs_malloc() gs_free() calls in
devices that aren't normally built.

[src/gdev3b1.c 1.5, src/gdevadmp.c 1.6, src/gdevccr.c 1.5, src/gdevcif.c 1.6, src/gdevcp50.c 1.6, src/gdevcslw.c 1.5, src/gdevhl7x.c 1.10, src/gdevimgn.c 1.7, src/gdevlp8k.c 1.5, src/gdevlxm.c 1.5, src/gdevmgr.c 1.6, src/gdevn533.c 1.6, src/gdevo182.c 1.6, src/gdevokii.c 1.7, src/gdevos2p.c 1.8, src/gdevp14.c 1.25, src/gdevphex.c 1.7, src/gdevpsdi.c 1.30, src/gdevsgi.c 1.6, src/gdevsj48.c 1.5, src/gdevsppr.c 1.8, src/gdevsunr.c 1.7, src/gdevwddb.c 1.7, src/gdevwprn.c 1.10, src/gp_macio.c 1.34]

2004-08-10 12:59 stefan

fixed bug with iapi, removed gs_lib_finit()'s call of gs_malloc_release.

DETAILS:

The problem is that single instance and multi instance interfaces
both call gs_to_exit() with different meanings.

If gs_lib_init0 was called then it should malloc_release
single instance exit library means free all.

If the iapi interface was used then the memory
should not be freed since gs_lib_finit() and gs_to_exit()
are called when the interpreter is exited but there is a
seperate delete_instance call that should free the memory

[src/gsinit.c 1.7]

2004-08-09 17:02 stefan

Fixed uninitialized fstdio2 pointer.

[src/gslibctx.c 1.3]

2004-08-05 20:17 stefan

Fixed incorrect function pointer prototype,
const gs_memory_t *  argument was missing.

[src/gxfcache.h 1.26, src/gxfcopy.c 1.44]

2004-08-05 20:15 stefan

Valid memory pointer used create a tile_clip device instead of NULL.

Details :

This needs to be leak checked.

[src/gxp1fill.c 1.6]

2004-08-05 17:02 stefan

Windows only:
check_interrupts() with a mem pointer to access the poll function.

DETAILS :

This is windows specific since only windows uses the polling
function in check_interrupts() macros.  If the gs_dll interface
is used then a single instance is forced since the design of that
interface forces one thread per process.  The iapi interface can not
but enabled for more than one thread until the stream calling check_interrupts()
calls are fixed.

process_interrupts(NULL) calls are currently hacked to access a global memory
pointer intended for access to stderr.  This is a place holder until the
stream object changed that guarantee a valid memory pointer in process_stream
calls are committed.  Basically it is common to allocate a stream object on the
stack and use it in a functional manor with an uninitialized memory pointer in the
object.

[src/gdevdbit.c 1.11, src/gdevddrw.c 1.25, src/gdevwpr2.c 1.18, src/gdevwprn.c 1.9, src/gp_macpoll.c 1.2, src/gp_mslib.c 1.6, src/gp_mspol.c 1.5, src/gp_mswin.c 1.24, src/gxclrast.c 1.30, src/gxclread.c 1.11, src/gxclutil.c 1.11, src/gxdtfill.h 1.27, src/sfxfd.c 1.10, src/sfxstdio.c 1.9]

2004-08-04 23:40 stefan

fixed typo in last commit.

[src/gpcheck.h 1.8]

2004-08-04 23:33 stefan

gs_memory_t pointer additions for msvc build.

DETAILS :

Mostly gs_malloc() and gs_free() additions of a gs_memory_t argument.

Not gsdll.c forces a single instance.

[src/gdev4081.c 1.6, src/gdev4693.c 1.9, src/gdev8510.c 1.7, src/gdevdm24.c 1.8, src/gdevdsp.c 1.25, src/gdevescp.c 1.7, src/gdevmswn.c 1.11, src/gdevmsxf.c 1.8, src/gdevpjet.c 1.7, src/gdevwpr2.c 1.17, src/gp_mspol.c 1.4, src/gpcheck.h 1.7, src/gsargs.c 1.9, src/gsdll.c 1.12, src/gsmisc.c 1.18, src/gxccache.c 1.32, src/gxclutil.c 1.10, src/imain.h 1.9, src/interp.c 1.19, src/main.h 1.7, src/msvc32.mak 1.59, src/sfxstdio.c 1.8]

2004-08-04 19:36 stefan

Addition of a Library Context to start the process of removing globals.

DETAILS :

The goals is to remove globals from the system, this includes static
globals that would hinder multiple threads from running at once.

gs_lib_ctx is intended to be used as the opaque "handle" object
that a client would use to associate with a thread running through
the library.  Independent of a gs or a language switch build, this
needs a new iapi2.h that allows the use of better job control from the
client side.

gs_lib_ctx is stashed under the gs_memory_t object and all memory objects
used by a thread refer to the same gs_lib_ctx.  This storage location was
choosen as a convenence since a memory_t pointer is common throughout the
system.  Most of the turmoil is adding memory_t pointers to functions that
used global variables but didn't have a memory pointer.

FILE stdin, stdout, stderr are one per process by default.
stdin and stdout may be changed but stderr may not.
FILE stderr is one per process and shouldn't be changed.
Note the stderr_fn is also one per process, changing this function pointer
will not help as most users of stderr printing do not have a thread handle.
Changing to a thread local storage mechanism can solve this.

gs_id's  are currently per thread with each thread starting over at  1.
This can be moved to per process with mutexes if so desired.

A library context has a pointer to the top_of_system the intent is that this
a void handle avaliable to make top of the system calls without knowing the
data type.  In a postscript only  build this would be gs_main_instance but
in a language switched build this would be an object above that main_universe.

Other members of gs_lib_ctx_t are nothing more than global objects relocated
to this "bag".  gs_name_table, dict_autoexpand  are examples of this.  There
are a few more globals that will be moved.

At the moment iapi is still constrained to one thread, since some of the
globals haven't been removed yet.

The display device's callback function setting is supported for now
but this interface should be changed to a sDEVICE style call.

gs_memory_t is the base type the abstract type gs_raw_memory_t is gone,
this means that all memory types must derive from gs_memory_t.
In addition to a pointer to the gs_lib_ctx there is a pointer to a
non_gc_memory this will always point to a non garbage collected memory,
it maybe the current object or an object below the current gargabe
collected memory space.  This can be used were the previous code
used the global gs_malloc_memory.  gs_malloc() now takes a memory pointer,
it finds the non-gc memory from a valid memory pointer and allocates from it.

The gdevbit device has an improved algorthym for converting from cmyk to rgb,
this is never used by postscript but for pcl rops it puts the k plane into rgb.

[src/bfont.h 1.10, src/devs.mak 1.117, src/dstack.h 1.6, src/files.h 1.10, src/gdevbj10.c 1.9, src/gdevcdj.c 1.15, src/gdevdcrd.c 1.6, src/gdevepsc.c 1.11, src/gdevepsn.c 1.9, src/gdevijs.c 1.9, src/gdevp14.c 1.24, src/gdevpdfb.c 1.23, src/gdevpdfc.c 1.48, src/gdevpdfg.c 1.58, src/gdevpdfg.h 1.33, src/gdevpdfi.c 1.56, src/gdevpdfk.c 1.8, src/gdevpdfv.c 1.36, src/gdevpdti.c 1.36, src/gdevplnx.c 1.10, src/gdevprn.c 1.18, src/gdevprna.c 1.6, src/gdevpsdi.c 1.29, src/gdevpxat.h 1.6, src/gdevpxen.h 1.6, src/gdevstc.c 1.10, src/gdevupd.c 1.16, src/gdevvec.c 1.23, src/gdevxcmp.c 1.9, src/gdevxxf.c 1.9, src/gp_mac.c 1.16, src/gs.c 1.12, src/gs_dll_call.h 1.1, src/gsalloc.c 1.21, src/gsalloc.h 1.7, src/gsalphac.c 1.7, src/gsccode.h 1.13, src/gscdevn.c 1.21, src/gscolor.c 1.14, src/gscolor1.c 1.11, src/gscolor3.c 1.8, src/gscparam.c 1.10, src/gscpixel.c 1.12, src/gscpixel.h 1.6, src/gscrd.c 1.6, src/gscrd.h 1.7, src/gscscie.c 1.12, src/gscsepr.c 1.27, src/gscspace.c 1.17, src/gscspace.h 1.14, src/gsdevice.c 1.22, src/gsequivc.c 1.5, src/gsexit.h 1.10, src/gsfcid2.c 1.6, src/gsfcmap.c 1.24, src/gsfcmap1.c 1.7, src/gsfont.c 1.33, src/gsht.c 1.22, src/gsht1.c 1.15, src/gshtx.c 1.6, src/gsimage.c 1.12, src/gsinit.c 1.6, src/gsio.h 1.8, src/gsiodevs.c 1.6, src/gsistate.c 1.10, src/gslib.c 1.14, src/gslib.h 1.6, src/gslibctx.c 1.2, src/gslibctx.h 1.2, src/gsmalloc.c 1.12, src/gsmalloc.h 1.6, src/gsmemlok.c 1.6, src/gsmemory.c 1.9, src/gsmemory.h 1.8, src/gsmemraw.h 1.8, src/gsmemret.c 1.5, src/gsmisc.c 1.17, src/gsovrc.c 1.6, src/gspcolor.c 1.14, src/gsptype1.c 1.19, src/gsstate.c 1.24, src/gsstruct.h 1.18, src/gsstype.h 1.6, src/gsutil.c 1.10, src/gsutil.h 1.8, src/gxacpath.c 1.10, src/gxalloc.h 1.11, src/gxccache.c 1.31, src/gxccman.c 1.27, src/gxcht.c 1.13, src/gxclbits.c 1.9, src/gxclrast.c 1.29, src/gxclread.c 1.10, src/gxclrect.c 1.7, src/gxcpath.c 1.12, src/gxcspace.h 1.13, src/gxdevcli.h 1.34, src/gxdevice.h 1.19, src/gxdhtserial.c 1.5, src/gxfcmap.h 1.16, src/gxfcopy.c 1.43, src/gxht.c 1.16, src/gxht.h 1.9, src/gximag3x.c 1.17, src/gximage.c 1.7, src/gxpcmap.c 1.13, src/gxttfb.c 1.34, src/gzht.h 1.13, src/ialloc.c 1.7, src/ialloc.h 1.6, src/iapi.c 1.11, src/ibnum.c 1.8, src/ibnum.h 1.8, src/ichar.h 1.7, src/icharout.h 1.9, src/icid.h 1.8, src/icie.h 1.7, src/icstate.h 1.13, src/idebug.c 1.9, src/idebug.h 1.6, src/idict.c 1.11, src/idict.h 1.6, src/idparam.c 1.9, src/idparam.h 1.7, src/idstack.c 1.6, src/ifapi.h 1.19, src/ifont.h 1.14, src/ifont1.h 1.7, src/ifont42.h 1.9, src/igc.c 1.13, src/igc.h 1.8, src/igcref.c 1.6, src/iimage.h 1.7, src/iinit.c 1.10, src/ilocate.c 1.10, src/imain.c 1.39, src/imainarg.c 1.32, src/iminst.h 1.8, src/iname.h 1.5, src/interp.c 1.18, src/iparam.c 1.10, src/iplugin.c 1.5, src/iplugin.h 1.5, src/isave.c 1.11, src/isave.h 1.7, src/iscan.c 1.18, src/iscanbin.c 1.14, src/iutil.c 1.10, src/iutil.h 1.7, src/lib.mak 1.189, src/sdctc.c 1.5, src/std.h 1.12, src/szlibc.c 1.6, src/ttload.c 1.5, src/zarray.c 1.5, src/zbfont.c 1.27, src/zchar.c 1.14, src/zchar1.c 1.36, src/zcharout.c 1.12, src/zcharx.c 1.7, src/zcid.c 1.9, src/zcie.c 1.12, src/zcolor.c 1.19, src/zcontext.c 1.11, src/zcontrol.c 1.11, src/zcrd.c 1.8, src/zcsdevn.c 1.12, src/zcsindex.c 1.7, src/zcspixel.c 1.5, src/zcssepr.c 1.15, src/zdevice.c 1.9, src/zdevice2.c 1.9, src/zdict.c 1.6, src/zdps.c 1.8, src/zdps1.c 1.7, src/zfapi.c 1.52, src/zfcid0.c 1.22, src/zfcid1.c 1.19, src/zfcmap.c 1.15, src/zfile.c 1.41, src/zfileio.c 1.17, src/zfont.c 1.11, src/zfont0.c 1.7, src/zfont1.c 1.12, src/zfont2.c 1.7, src/zfont32.c 1.5, src/zfont42.c 1.20, src/zfontenum.c 1.4, src/zfrsd.c 1.10, src/zfunc.c 1.14, src/zfunc3.c 1.7, src/zfunc4.c 1.12, src/zgeneric.c 1.8, src/zgstate.c 1.10, src/zht2.c 1.12, src/zht2.h 1.3, src/zicc.c 1.7, src/zimage.c 1.14, src/zimage3.c 1.7, src/ziodevs.c 1.9, src/ziodevsc.c 1.7, src/zmatrix.c 1.8, src/zmedia2.c 1.16, src/zmisc.c 1.7, src/zmisc2.c 1.7, src/zmisc3.c 1.6, src/zpacked.c 1.6, src/zpcolor.c 1.15, src/zrelbit.c 1.6, src/zshade.c 1.15, src/zstring.c 1.6, src/ztoken.c 1.14, src/ztrans.c 1.22, src/ztype.c 1.8, src/zupath.c 1.10, src/zusparam.c 1.13, src/zvmem.c 1.8]

2004-08-04 01:00 Ralph Giles

add a .cvsignore list for generated files

[contrib/pscolor/.cvsignore 1.1]

2004-08-04 00:55 Ralph Giles

Add variable declaration for the path to the ghostscript executable to
the unix wrapper scripts. This simplifies changing the invocation name.
Partial fix for bug 686863.

[lib/bdftops 1.5, lib/dumphint 1.2, lib/dvipdf 1.5, lib/eps2eps 1.6, lib/font2c 1.4, lib/gsbj 1.4, lib/gsdj 1.4, lib/gsdj500 1.4, lib/gslj 1.4, lib/gslp 1.4, lib/gsnd 1.4, lib/pdf2dsc 1.6, lib/pdf2ps 1.7, lib/pdfopt 1.7, lib/pf2afm 1.5, lib/pfbtopfa 1.6, lib/pphs 1.4, lib/ps2ascii 1.7, lib/ps2epsi 1.10, lib/ps2pdfwr 1.10, lib/ps2ps 1.7, lib/pv.sh 1.4, lib/unix-lpr.sh 1.5, lib/wftopfa 1.4]

2004-08-02 03:33 Igor Melichev

Fix : .OrigFont was not provided when an embeded font is defined.

DETAILS :

Bug 687598 "Courier CE font problems".
The test case embeds a font with an instandard FontMatrix [ 0.00039 0 0 0.00039 0 0 ].
For passing it to pdfwrite, the procedure .completefont adds the
/.OrigFont key to the font dictionary. However the key was added after
.buildfont1 is called, and the device did not recieve the information at the time.
This patch moves the .OrigFont setting ahead to the .buildfont* call.

EXPECTED DIFFERENCES :

None.

[lib/gs_fonts.ps 1.47]

2004-07-30 21:32 Dan Coby

More work upon 687551 Implement the remaining TN 5044 procedures.
This commit implements the setcmykoverprint procedure.

DETAILS:

We received a posting against 687551.  This posting indicated that some
files in arXiv.org were failing with the current version of Ghostscript
but worked with older versions.  The files were all created by a package
called Canvas by Deneba Systems.  They failed because setcmykoverprint
was not defined.

Evidently the people at Deneba Systems did not read the following comment
from page 15 of TN 5044:

"Note The setcmykoverprint operator has not been adopted by the industry.
It remains on the list of color convention operators because it has some
perceived usefulness, but it is not supported by any shipping host-based
separation applications today."

The even stranger detail is that the Deneba Systems people have a
dummy version of this procedure that does not implement overprinting.
Thus if they do not need overprinting, they have no need to use this
procedure.

The files also fail with Distiller 6.0, Illustrator CS, and Photoshop 6.0.
However this change allows these files to work with current Ghostscript.

The change consists of putting in a dummy version of the setcmykoverprint
procedure.  This version does not actually implement overprinting.

[lib/gs_lev2.ps 1.32]

2004-07-29 19:19 Igor Melichev

Fix : True Type font loader : numLoca run out the PS string size limit.

DETAILS :

Bug 687599 "/rangecheck in --string--".
This patch increases the maximal 'loca' size to 64528 bytes,
which is enough for the customer's file.
A further improvement would be to allow more 'loca' segments
(currently arbitrary restricted with 2 for a minor code simplification).

EXPECTED DIFFERENCES :

None.

[lib/gs_ttf.ps 1.39]

2004-07-29 17:46 Igor Melichev

1. Fix (PS interpreter) : The FontBBox validation check was too strong.
2. Fix (pdfwrite) : Explicitely set line parameters in a charproc.

DETAILS :

Bug 687594 "Barcode Width".
See comments in the new code.

This solution is a partial one.
With the current architecture of the Postscript interpreter,
a device can't recognize whether a PS charproc sets line parameters or not.
Therefore we copy to PDF the values, which appear at a first use
within a charproc. The old code copied only values, which differ from defaults.
The new behavior appears closer to Adobe Distiller.

A complete solution should copy the PS behavior to PDF,
i.e. the PDF charproc should set those and only those parameters,
which are set by the PS charproc. For doing that we need flags in the graphic state structure
per each graphic state parameter, reset all them before running a charproc,
and set whenever a parameter is changed. Without the flag, when the charproc sets
a value equal to the old one (which was inherited from the context of
the glyph usage), the event of setting is lost and causes a line width and other problems.
We don't want such a deep change now, and go with the partial solution,
because the partial solution appears enough for customer's needs.
Likely Adobe Distiller have same architectural problem, and resolves it in same manner.

EXPECTED DIFFERENCES :

pdfwrite, 72dpi :
012-09.ps
013-09.ps
014-09.ps
015-09.ps
083-09.ps
123-09.ps
205-09.ps
250-01.ps
296-01.ps
298-09.ps
321-09.ps

pdfwrite 300dpi :

012-09.ps
013-09.ps
014-09.ps
015-09.ps
027-05.ps
032-07.ps
034-10.ps
083-09.ps
093-01.ps
123-09.ps
169-09.ps
205-09.ps
212-01.ps
213-01.ps
214-01.ps
222-09.ps
238-01.ps
250-01.ps
296-01.ps
298-09.ps
307-07.ps
321-09.ps

[src/gdevpdtt.c 1.85, src/gslparam.h 1.5, src/zchar.c 1.13]

2004-07-28 19:46 Ralph Giles

test commit; verifying the cvs announcement list is working.

[src/Makefile.in 1.37]

2004-07-28 10:09 Igor Melichev

Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 4).

DETAILS :

FunctionType 3 did not account stitches with reversed interval boundaries : lower > upper.
Also added a tolerance to a small noise.
687573 Error: /rangecheck in --.shfill--

EXPECTED DIFFERENCES :

None.

[src/gsfunc3.c 1.22]

2004-07-26 23:33 Dan Coby

Fix for 687572 AFPL Ghostscript 8.14 fails with some PDF files.

DETAILS:

The given file uses the scn operator inside of a form.  The scn
operator is used for defining a color with DeviceN color spaces.
The scn operator uses .pdfcount (inside of scresolve) to determine
the number of parameters.  However inside a form, there is an extra
dictionary on the stack.

The fix consists of adjusting pdfemptycount (which is used by .pdfcount)
to match the stack depth while executing a form.  After the form is
executed, pdfemptycount is returned to its previous value.

[lib/pdf_draw.ps 1.83]

2004-07-26 23:21 Dan Coby

Fix for 687591 Overprint Preview is not documented.  This change adds
documentaion for how Ghostscript handles overprinting and spot colors
to Use.htm.

[doc/Use.htm 1.110]

2004-07-24 08:12 Igor Melichev

ps2write step 39 : Implementing embedded TrueType fonts (continued).

DETAILS :

This fixes the problem with True Type encoding :
account 'post' when 'cmap' can't give a character mapping.
Debugged wit 159.pdf , the character /registered.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps,
UnusualFontMatrix.ps, 159.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.34]

2004-07-23 19:11 Igor Melichev

ps2write step 39 : Implementing embedded TrueType fonts.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps,
UnusualFontMatrix.ps, 159.pdf .

Embedded fonts work, but there exist an encoding problem with 159.pdf .
The PS reader must have AdobeGlyphList and MacRomanEncoding.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.33]

2004-07-22 17:35 Igor Melichev

ps2write step 38 : Implementing embedded Type 1 fonts.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps,
UnusualFontMatrix.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.32]

2004-07-22 13:04 Igor Melichev

ps2write step 38 : Write font data after the font descriptor.

DETAILS :

opdfread.ps will use this constraint to provide
a proper context for interpreting font data.
Rather we need this constraint with ps2write only,
we always implement it to simplify the code.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtb.c 1.27, src/gdevpdtb.h 1.10, src/gdevpdtd.c 1.16]

2004-07-22 11:08 Igor Melichev

ps2write step 37 : Don't convert Type 1 into CFF when generating ps2write output.

DETAILS :

1. Applied the Type 1 font writer.
2. Rather Type1C is a PDF 1.2 feature, we can't write it into a ps2write output.
   We use the OrderResources parameter to decide about (not)converting Type 1
   into Type1C (i.e. into CFF), because we want to write some PDF1.2 objects
   into a ps2write output (for example - function objects,
   because we don't want to convert them in C code).
3. The parameter OrderResources isn't a good switch for deciding about CFF
   due to the parameter name, but currently we don't want to define one more parameter.
   Maybe will improve it later.
4. Fixed a bug, which wrote "/Length1 -1" with Type1C.
5. CONVERT_CFF_TO_TYPE1 is reserved for further development.
6. Fixed Cygwin/gcc warnings in gdevpdfg.c .

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.c 1.57, src/gdevpdfx.h 1.99, src/gdevpdtb.c 1.26]

2004-07-22 07:56 Igor Melichev

ps2write step 36 : Switching on the new code DELAYED_STREAMS, PS2WRITE.

DETAILS :

See log messages of previous patches.

EXPECTED DIFFERENCES :

None.

[src/gdevvec.h 1.15]

2004-07-20 07:08 Ray Johnston

Fix to make sure that device deactivation is invoked before final close
of the device when exit. Bug #687557.

DETAILS:

It is not known whether or not this ever worked, but this change does
make sure that the .uninstalldevice gets invoked before the final
closedevice on exit.

EXPECTED DIFFERENCES.

None detected with regression suite.

[src/imain.c 1.38]

2004-07-17 18:44 Ray Johnston

Fix so that compiled fonts have the dictionary permissions set correctly.
Bug 687444 for customer #531.

DETAILS:

Previously the 'dict_attrs' parameter was ignored. I compared the attrs
of the compiled font to a font loaded from a PFB file using:

%! -------------------------------------------------------------------------
% Procedure to check attributes of all elements of a dictionary
% used to check Font dict contents.

/dumpattrs {    % object dumpattrs -
  dup { rcheck } stopped { pop (?) } { { (r) } { (-) } ifelse } ifelse print
  dup { wcheck } stopped { pop (?) } { { (w) } { (-) } ifelse } ifelse print
  dup { xcheck } stopped { pop (?) } { { (x) } { (-) } ifelse } ifelse print
  (    ) print type = flush
} bind def

/chkattrs {     % dict chkattrs -       and lots of formatted output
  (Dictionary:     ) print dup dumpattrs
  { exch
    (    /                    ) dup dup 4 -1 roll
    20 string cvs
    5 exch putinterval print
    (    /                    ) 0 exch putinterval
    dumpattrs
  } forall
} bind def

/Helvetica findfont chkattrs
quit

%--------------------------------------------------------------------------

[src/iccfont.c 1.9]

2004-07-16 22:14 Igor Melichev

Fix (pdfwrite) : Provide a delayed stream writing.

DETAILS :

The ps2write requires length of streams to be written before the stream.
This implements pdf_begin_data_stream with opening a stream object in a temporary file,
using a methgod similar to pdf_enter_substream.
With the new mechanizm the output file doesn't need to be positionable,
and the generated PDF appears more effective because the number of objects is smaller.

Also fixed a bug in gdevpdfu.c : crashed when encrypted with no page compression.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.97, src/gdevpdfu.c 1.57, src/gdevpdfx.h 1.98, src/gdevpdtb.c 1.25, src/gdevpdtf.c 1.37, src/gdevpdti.c 1.35, src/gdevpdtw.c 1.28, src/gdevpdtw.h 1.5]

2004-07-15 16:39 Igor Melichev

Fix (pdfwrite) : Discard the output file seekability requirement in the /PS pdfmark implementation.

DETAILS :

The ps2write requires length of streams to be written before the stream.
The implementation of /PS pdfmark wrote a length in a separate object after the stream.
Now /PS pdfmark is implemented with pdf_enter_substream,
which writes the length directly into the object dictionary.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.45]

2004-07-15 12:37 Igor Melichev

Fix (pdfwrite) : text.operation was inconsistent after replacing TEXT_FROM_GLYPHS.

DETAILS :

Bug 687563 "segfault during pdfwrite".
text.operation became inconsistent after replacing
TEXT_FROM_*_GLYPH* with TEXT_FROM_STRING.
Declared a stronger constraint for process_text_modify_width,
and documented the trick with text indices in process_plain_text.

EXPECTED DIFFERENCES :

pdfwtite -r300 tpc2.ps

[src/gdevpdtc.c 1.36, src/gdevpdte.c 1.60]

2004-07-14 18:21 Ray Johnston

Sort the output in filename order to make comparison of daily db's easier.

[toolbin/tests/dump_testdb 1.7]

2004-07-14 17:57 Igor Melichev

ps2write step 35 : Fixing more problems with color spaces.

DETAILS :

The alternative space of [/Indexed [/Separation ...] ...] was not resolved.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 473-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.31]

2004-07-14 17:57 Igor Melichev

Fix (pdfwrite) : Don't write DeviceN, DevicePixel colors with CompatibilityLevel<=1.2 .

DETAILS :

PDF 1.2 doesn't define DeviceN, DevicePixel.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfc.c 1.47, src/gdevpdfg.c 1.56]

2004-07-14 15:59 Ralph Giles

Include string_.h for missing prototypes of strlen() &c. Bug 687541.

[src/gscdevn.c 1.20, src/gsfcmap.c 1.23, src/gsht1.c 1.14, src/int.mak 1.127, src/lib.mak 1.188, src/zfile1.c 1.12]

2004-07-14 15:38 Ralph Giles

Cast pointer type to avoid a warning. Bug 687541.

[src/sjpx.c 1.9]

2004-07-14 15:34 Ralph Giles

Correct some types to unsigned to match the gp_file_name_combine() prototype.
Partial fix for bug 687541.

[src/gp_unix_cache.c 1.3]

2004-07-14 14:24 Ray Johnston

Fix to pdfwrite initialization to make sure initial distiller params are
incorporated into the device. Also add collection of distillerparams when
building currentpagedevice. Fixes bugs 687325, 687436 and 687458.

DETAILS:

Earlier change to use .putdeviceparamsonly in gs_pdfwr.ps so that the
use of setdistillerparams does not reinitialize the device caused the
initial parameter settings to not be set in the device. The change to
gs_pdfwr.ps accomplishes this.

Part of the investigation by Igor Melichev discovered that the values of
disillerparams would not be correctly reflected in the pagedevice. The
change to gs_setpd.ps collects the currentdistillerparams when the device
is pdfwrite and merges new values into the pagedevice dictionary. The
method is similar to that used for the dynamicppkeys such as PageCount
that can be changed by the device. For the distillerparams, the values
are changed dynamically by setdistillerparams.

EXPECTED DIFFERENCES.

Rotation of several files is restored to the correct value given by
gs8.11:

541.pdf
mspro.pdf
new_rect_nr.pdf
pstopdf.pdf
xes2ps-problem.pdf

[lib/gs_pdfwr.ps 1.38, lib/gs_setpd.ps 1.24]

2004-07-13 19:52 Igor Melichev

ps2write step 34 : Applying filters to the page contents stream.

DETAILS :

Due to the device parameter problem in the PS interpreter,
the distilled PT.ps had a filtered contents stream in spite of we disabled filters.
Fixing it now to avoid the dependence on another project.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.30]

2004-07-13 19:31 Igor Melichev

ps2write step 33 : Fixing problems with color spaces in image XObjects.

DETAILS :

1. The Separation color space needs to resolve and substitute the alternative color space.
2. The Pattern color space needs to resolve and substitute the base color space.
3. Removed an obsolete temporary debug printing.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf .

EXPECTED DIFFERENCES :

None.
`

[lib/opdfread.ps 1.29]

2004-07-13 18:58 Igor Melichev

ps2write step 32 : Fixing problems with color spaces in inline images.

DETAILS :

Inline images use local allocation mode for image data.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.28]

2004-07-13 15:58 Igor Melichev

ps2write step 31 : Implementing DecodeParms for filters.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 245-01.ps, 415-01.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.27]

2004-07-13 15:13 Igor Melichev

ps2write step 30 : Continue the implementation of color spaces.

DETAILS :

1. Implemented Lab.
2. A pattern color space specification can contain an indirect reference.
3. Moved the StreamDumperBuffer definition to the proper place.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 245-01.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.26]

2004-07-13 13:44 Igor Melichev

ps2write step 29 : The inplementation of FunctionType 4 was wrong.

DETAILS :

The test case 245-01.ps .
Also implemented a debug printing of the uncompressed data steram.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.25]

2004-07-13 12:38 Igor Melichev

Fix (pdfwrite) : Don't write shadings with CompatibilityLevel<=1.2 .

DETAILS :

Bug 687567 "pdfwrite : Shadings are written with CompatibilityLevel=1.2" :
Shadings are not allowed in PDF 1.2 .
This patch simply forwards to the default implementation,
causing a shading to decompose into thousands of constant color areas.

Probably a convertion to an image would be a better solution -
delaying it for a while, because our current goal is to make
ps2write working somehow.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.41, src/gdevpdfg.c 1.55]

2004-07-13 12:02 Igor Melichev

Fix (pdfwrite) : Wrong /Matrix from /BP pdfmark (continued).

DETAILS :

Fixing a misprint in the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-May/004502.html
Thanks to SaGS for pointing it out.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.44]

2004-07-13 11:09 Igor Melichev

Fix (pdfwrite) : Dont create the alternative image compression if a loseless compression is only allowed.

DETAILS :

It is an optimization.
The problem was occasionally found when working on the bug 687325,
rather that bug is irrelevant. It created 2 alternative streams with same filters.
This change rejects the creation of the second stream in such cases.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.55, src/gdevpsdi.c 1.28]

2004-07-10 08:55 Igor Melichev

ps2write step 28 : Fixing tab characters in the source code (continued).

DETAILS :

This change is syntactically equivalent.
Also removed an unuseful comment.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.24]

2004-07-10 08:04 Igor Melichev

ps2write step 27 : Implemented FunctionType 4.

DETAILS :

245-01.ps contains one.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.23]

2004-07-09 20:54 Igor Melichev

ps2write step 26 : Fixing tab characters in the source code.

DETAILS :

This change is syntactically equivalent.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.22]

2004-07-09 20:28 Igor Melichev

ps2write step 25 : Fixing various problems in functions and color spaces.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.21]

2004-07-09 16:52 Igor Melichev

ps2write step 24 : An initial implementation of functions.

DETAILS :

1-argument FunctionType 0 is converted to a Postscript procedure.
The Order is ignored. 3d order functions interpolate as 1st order.
Maybe we'll convert them in C in pdfwrite.
N-argument FunctionType 0 are coded but not tested yet.
Other function types are not coded.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf, 000040cf.000_60.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.20]

2004-07-08 17:15 Igor Melichev

ps2write step 23 : Implementing Indexed and Separation (continued).

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf, 000040cf.000_60.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.19]

2004-07-08 15:28 Igor Melichev

ps2write step 22 : Implementing Indexed and Separation.

DETAILS :

SubstitutePDFColorSpace factored out from ResolveColorSpace.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf, 000040cf.000_60.pdf .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.18]

2004-07-08 14:00 Igor Melichev

ps2write step 20 : Implementing CalGray, CalRGB.

DETAILS :

- implemented the color space cache PDFColorSpaces;
- improved the procedure 'error';
- a bug in Register : s|gt|ge;
- moved color procedures before image procedures;
- a bug in the CompleteOutlineImage comment.
- ResolveColorSpace now converts CalGray, CalRGB.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.17]

2004-07-08 11:12 Igor Melichev

ps2write step 20 : The implementations of Q,q,CharProc were incomplete.

DETAILS :

Minor change : collected work data definitions in a single place.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.16]

2004-07-08 10:06 Igor Melichev

ps2write step 17 : Implementing Patterns.

DETAILS :

Tested with Bug687546.ps, 035-01.ps, 035-07.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.15]

2004-07-08 08:03 Igor Melichev

ps2write step 18 : Fix : Length was written to a wrong file position.

DETAILS :

Fixes a bug in the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-July/004607.html .
Thanks to Ray Johnston for pointing it out.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.43]

2004-07-07 15:19 Igor Melichev

ps2write step 17 : Image XForm implementation.

DETAILS :

Tested with Bug687546.ps, 035-01.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.14]

2004-07-07 14:24 Igor Melichev

ps2write step 16 : Inline image implementation.

DETAILS :

Tested with Bug687546.ps, TESTIMG.PS .
The interpretation completes, but some images render wrongly.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.13]

2004-07-07 11:42 Igor Melichev

ps2write step 15 : Fix : ObjectRegistry expansion code was wrong.

DETAILS :

Tested with Bug687546.ps, 148-01.ps .
148-01.ps still fails due to unimplemented images.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.12]

2004-07-07 11:00 Igor Melichev

ps2write step 14 : Fix : fonts may have no Encoding.

DETAILS :

Tested with Bug687546.ps, 148-01.ps .
148-01.ps still fails due to unimplemented images.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.11]

2004-07-07 10:40 Igor Melichev

ps2write step 13 : Implementing Type 3 fonts.

DETAILS :

A minor restructurization of the code and a debug printout improvement.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.10]

2004-07-07 10:19 Igor Melichev

ps2write step 12 : Implementing Type 3 fonts.

DETAILS :

1. Implemented a delayed stream interpretation.
2. Implemented Type 3 fonts.
3. Renamed UnRefD with ResolveD.
4. Debug switches are bound.

Tested with Bug687546.ps - now it renders fine.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.9]

2004-07-07 09:33 Russell Lang

Fixes bug 687451 "default resolution for display device"
Set the display resolution from the MS-Windows display resolution,
using a device parameter -dDisplayResolution=DPI.

DETAILS:
The initial resolution must be set in display_put_params.
Setting it in display_open is too late because this leaves
the device resolution and currentpagedevice reporting
different values.  Callbacks can't be used in display_put_params
because the callback structure is not yet initialized.
This leaves a device parameter on the command line as
the cleanest implementation.
If HWResolution is set (e.g. from -r72), then use that.
Otherwise, if DisplayResolution is set, use that in the
initial display_put_params.  After that, ignore all further
use of DisplayResolution.
The Windows client adds -dDisplayResolution=DPI to the
command lines, similar to the existing -dDisplayFormat.
The Windows client gets the resolution from the GDI.
The default Windows display resolution is 96dpi (the same
as the display device).  This can be changed to 120dpi by
selecting "large fonts", or other values in recent versions
of Windows.

[doc/Devices.htm 1.80, src/dwmain.c 1.18, src/dwmainc.c 1.20, src/gdevdsp.c 1.24, src/gdevdsp.h 1.9, src/gdevdsp2.h 1.8]

2004-07-07 09:09 Russell Lang

Fixes bug 687562 "vector devices close output file incorrectly".
Vector devices open the output file with gx_device_open_output_file,
so should close it with gx_device_close_output_file, not fclose.
This was preventing pswrite from correctly closing special
files such as "%printer%Printer Name" on Windows and OS/2.

[src/gdevvec.c 1.22]

2004-07-07 09:07 Russell Lang

In the Windows %printer% IODevice, the existing thread handle
is closed automatically when the thread finishes.  Duplicate
the thread handle so we always have a valid handle for waiting
and closing.

DETAILS:
When the thread finishes, the CRTL _endthread is closing
the existing handle.  During debugging, it was found that
waiting on the thread handle was Ok because the thread
was still running, but by the time CloseHandle ran the
thread handle was invalid.

IODevices are effectively static, so iodev->state is initialized
once at the start of the interpreter.  There is no need to
test if iodev->state is valid.

[src/gp_msprn.c 1.4]

2004-07-06 22:15 Dan Coby

Fix for 687565 Incorrect equiv color for Orange in Altona test file.
The altona test file Altona_Visual_bb_1v1_x3.pdf contains a spot color
called Orange.  An incorrect equivalent CMYK color is being determined for
this spot color.  The result is that the spot color is being displayed as
black for the devices which handle spot colors and attempt to determine
equivalent CMYK colors for the spot colors.  These are the psdcmyk,
tiffsep, and display (with -dDisplayFormat=16#a0800) devices.

DETAILS:

The Orange spot color is used in two different DeviceN color spaces.  The
first color space has components named 'None'.  These components are used
as part of a special feature described in section 4.5 of the PDF 1.5 spec.
This feature uses the None components as a means for passing values to
the color space's alternate tint transform function.  In the example in
the spec., these values are an equivalent color in the alternate color
space.

Our logic for determining an equivalent CMYK color for a spot colorant
sets all color components except for the desired spot color to zero and
then uses the tint transform function to form an alternate color.  This
results in the equivalent CMYK color being black since the None values
contain the real information for the tint transform function.

This change consists of check for the presence of DeviceN color space
components named None.  If any are detected then the equivalent CMYK
color logic exits rather than determine an invalid color.  This is
sufficient for this case since the second color space which contains
the Orange spot color does not have the None components.  For the
general case, a solution needs to be found which samples colors given
actual values for the None components.

[src/gsequivc.c 1.4]

2004-07-06 19:27 Igor Melichev

ps2write step 11 : Implementing Metrics for Type 1,2,42 fonts (continued).

DETAILS :

The previous patch appeares incomplete due to MissingWidth. Now fixing.
CID fonts and Type 3 fonts are still stubbed.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.8]

2004-07-06 19:04 Igor Melichev

ps2write step 10 : Implementing Metrics for Type 1,2,42 fonts.

DETAILS :

CID fonts and Type 3 fonts are still stubbed.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.7]

2004-07-06 17:44 Igor Melichev

ps2write step 9 : Implementing Encoding for Type 1,2,42 fonts.

DETAILS :

CID fonts and Type 3 fonts are still stubbed.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.6]

2004-07-06 13:48 Igor Melichev

ps2write step 8 : Implementing ExtGState.

DETAILS :

Function objects are subbed yet.
Debugged with Bug687546.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.5]

2004-07-06 12:05 Igor Melichev

ps2write step 7 : Implementing text rendering operastors.

DETAILS :

Font loading is stubbed yet.
Debugged with Bug687546.ps .
TextRenderingMode!=0 isn't debugged yet.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.4]

2004-07-05 21:16 Igor Melichev

ps2write step 6 : :Providing a page stream execution context.

DETAILS :

Most operators are eother stubbed or unimplemented,
but the interpretation runs and prints a trace.
Debugged wioth Bug687546.ps .

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.3]

2004-07-05 17:03 Igor Melichev

ps2write step 5 : Page streams must interpret immediately.

DETAILS :

This works against a huge memory consumption.
Also improved comments, the module structurization and error processing.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.2]

2004-07-05 17:03 Igor Melichev

ps2write step 4 : Stream data length must preceed the stream.

DETAILS :

The new code is disabled with PS2WRITE 0 in gdevvec.h .

pdf_begin_data_stream, pdfmark_PS wrote a stream data length after the stream object.
With OrderResources true we write a direct object instead that.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.42, src/gdevpdfu.c 1.56, src/gdevpdfx.h 1.97]

2004-07-05 12:55 Igor Melichev

ps2write step 3 : Initial commit for the Ordered PDF Reader.

DETAILS :

This revision only reads PDF objects into VM.

EXPECTED DIFFERENCES :

None.

[lib/opdfread.ps 1.1]

2004-07-03 10:51 Russell Lang

Log Message:
Fixes bug 686956 Display device does not support separations.
Add support for separations to display device.
This requires a change to the display callback structure.
Support is maintained for clients using version 1 of the structure.

DETAILS:
Add support for a new color format, DISPLAY_COLORS_SEPARATION,
which supports CMYK and spot colors.  A new callback
display_separation() is used to tell the client about
the names and CMYK equivalents of each separation.
The callback structure version number is incremented to 2
to show that has changed.  The display devices checks
whether it is passed the older v1 structure or the newer
v2 structure, and only calls the new separation callback
if it was given a v2 structure.
Only 8-bit/pixel, up to 8 components and 64-bit depth are supported.
In the Windows and gtk+ clients, a subset of these 8 separations
can be selected for display.
The new code is based on the tiffsep device.

[doc/API.htm 1.43, doc/Devices.htm 1.79, src/dwimg.c 1.12, src/dwimg.h 1.9, src/dwmain.c 1.17, src/dwmainc.c 1.19, src/dxmain.c 1.13, src/gdevdsp.c 1.23, src/gdevdsp.h 1.8, src/gdevdsp2.h 1.7, src/idisp.c 1.7]

2004-07-01 19:23 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 6).

DETAILS :

Bug 687546 pdfwrite : Type 3 glyph variations (was: ps2pdf segfaults)
Relates to 687044, 687472, 687489, 687546.
charproc_just_accumulated was not properly initialized on some circumstances.

EXPECTED DIFFERENCES :

Bug687546.ps (new)

[src/gdevpdtt.c 1.84]

2004-07-01 18:27 Dan Coby

Correct some warnings from the MSVC compiler.

[src/gscdevn.c 1.19, src/gscsepr.c 1.26, src/gsht.c 1.21, src/gzht.h 1.12]

2004-07-01 04:41 Dan Coby

This change creates common routines for handling the DeviceN related
device parameters (SeparationColorNames, SeparationOrder, and
MaxSeparations).  The change also splits up some common routines that
were assuming that the device was a 'printer' device.

[src/devs.mak 1.116, src/gdevdevn.c 1.21, src/gdevdevn.h 1.10, src/gdevnfwd.c 1.25, src/gdevpsd.c 1.16, src/gdevtsep.c 1.3, src/gdevxcf.c 1.9, src/gxcmap.c 1.22, src/gxcmap.h 1.11]

2004-06-30 17:37 Raph Levien

Fixes nonportable code in the vasarely.ps example file so that keeps
to reasonable page size values even when default clippath is very
large (as is the case with the bbox device). Fixes bug #687549.

[examples/vasarely.ps 1.3]

2004-06-30 14:55 Igor Melichev

Fix (pdsfwrite) : Compression of XObjects implicitely depended on CompressFonts (continued).

DETAILS :

Fixing a compiler error with PS2WRITE 1.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfu.c 1.55]

2004-06-30 14:50 Igor Melichev

Fix (pdsfwrite) : Compression of XObjects implicitely depended on CompressFonts.

DETAILS :

This patch makes the dependence explicit.
Have no idea which distiller parameter must controll patterns and forms,
so keeping the old dependence.
With OrderResources=true pages now depend on CompressPages.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.54, src/gdevpdfm.c 1.41, src/gdevpdfu.c 1.54, src/gdevpdfx.h 1.96, src/gdevpdti.c 1.34]

2004-06-30 14:35 Igor Melichev

ps2write part 2 : Delay writing pages.

DETAILS :

The new code is disabled with PS2WRITE 0 in gdevvec.h .

With OrderResources=true it writes pages at the end of the document,
after all resources are written to PDF.
Before that pages are accumulated in a temporary file.

OrderResources has been moved from distiller parameters to device parameters.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.96, src/gdevpdfg.c 1.54, src/gdevpdfp.c 1.39, src/gdevpdfu.c 1.53, src/gdevpdfx.h 1.95, src/gdevpsdf.h 1.22, src/gdevpsdp.c 1.14]

2004-06-30 11:54 Igor Melichev

ps2write part 1 : starting the project.

DETAILS :

Define a new temporary configuration switch PS2WRITE.
The new code is disabled with PS2WRITE 0 in gdevvec.h .

Our development strategy is to make pdfwrite to generate an output,
which a PS interpreter can handle with a special procset.
For a while we'll not define a new ps2write device,
but enhance the pdfwrite device with a new feature.

A new temporary distiller parameter OrderResources will make pdfwrite
to keep a proper resource ordering for generating a PS output.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdf.h 1.21, src/gdevpsdp.c 1.13, src/gdevvec.h 1.14]

2004-06-30 08:15 Igor Melichev

Fix : MSVC compiler warning.

EXPECTED DIFFERENCES :

None.

[src/gdevtsep.c 1.2]

2004-06-29 22:46 Dan Coby

Fix for 687553 rangecheck in .sethalftone5 and SeparationOrder.

DETAILS:

If a file specifies a type 5 halftone and the SeparationOrder device
parameter is specified then a rangecheck can occur.  This happens when
the halftone includes two or more colorants that are not in the
SeparationOrder parameter or one colorant and a 'Default' value.

The problem occurs because the get_color_comp_index device procs use
GX_DEVICE_COLOR_MAX_COMPONENTS to indicate colorants which are not
being imaged due to the colorant not be included in the list for the
SeparationOrder device parameter.  However the
gs_color_name_component_number routine was using the same value to
indicate 'Default' halftones.

The fix consists of modifying gs_color_name_component_number to look
for GX_DEVICE_COLOR_MAX_COMPONENTS from the get_color_comp_index
device proc.  If found then the component is treated the same as
a component that is not present in the device.  The halftoning
logic is only concerned with the colorants which are actually being
used by the device.

[src/gsht.c 1.20]

2004-06-29 22:27 Dan Coby

Correct spelling in a comment.

[src/gxcmap.h 1.10]

2004-06-29 21:01 Dan Coby

Change the default handling of the MaxSeparations device parameter.  This
parameter is only used by some of the DeviceN mode devices (which have
their own handling of this parameter).  The default handler now simply
ignores this parameter.  However it does read the parameter.  Not reading
the parameter was causing problems with PDF files and page devices.

[src/gsdparam.c 1.17]

2004-06-29 01:05 Ralph Giles

Add contributed pscolor utility by Carsten Hammer. This splits a ps
document into two, one consisting only of black and white pages, and
one of color pages. Useful for printing on separate devices.

Submitted under bug 602263.

The Makefile needs updating for the new location.

[contrib/pscolor/Makefile 1.1, contrib/pscolor/instream.yy 1.1, contrib/pscolor/test.c 1.1]

2004-06-28 17:13 Igor Melichev

Fix : True Type grid fitting must not apply to FAPI fonts.

DETAILS :

Bug 687543 "FAPI: Type 42 is broken".

EXPECTED DIFFERENCES :

None.

[src/gxccman.c 1.26, src/lib.mak 1.187]

2004-06-24 10:10 Igor Melichev

Fix : A dangling pointer from TExecution_Context could cause a memory corruption.

DETAILS :

The pointed area was never used and the pointer was not listed in the garbager descriptor.
Due to the latter it was not relocated and a wrong object was released through it.
Bug 687533  "segmentation fault on this PS file"

We still keep the pointer defined, because we don't want to change FreeType structures.
But now we don't allocate the area for its referent.

Minor change (ttinterp.c) : skip allocating a debug data of zero size.

EXPECTED DIFFERENCES :

None.

[src/ttfmemd.c 1.7, src/ttinterp.c 1.13, src/ttobjs.c 1.7]

2004-06-24 09:51 Igor Melichev

Fix: Unwinding the recent change to gsdparam.c becauase it breaks the PDF interpreter.

DETAILS :

All comparefiles/*.pdf failed with -sDEVICE=ppmraw after the change
http://www.ghostscript.com/pipermail/gs-cvs/2004-June/004575.html .

EXPECTED DIFFERENCES :

See DETAILS.

[src/gsdparam.c 1.16]

2004-06-24 07:20 Dan Coby

Add source file src/gdevtsep.c.  This file is part of the implementation
687440 and 542629.

[src/gdevtsep.c 1.1]

2004-06-24 06:54 Dan Coby

Add the src/gdevtsep.c file.  This contains the tiffgray, tiff32nc, and
tiffsep devices.

[doc/Develop.htm 1.135]

2004-06-24 06:51 Igor Melichev

Fix (TT interpreter) : The implementation of INSTCTRL did not follow the TT specification by Apple.

DETAILS :

Bug 687526 /invalidfont in --show--
See http://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html#INSTCTRL
The old implementation comes from FreeType.

EXPECTED DIFFERENCES :

None.

[src/ttinterp.c 1.12]

2004-06-24 06:48 Dan Coby

This change implements the enhancements described in 542629 CMYK
tiff driver and 687440 Support for outputting PDF separations
separately.  This change implements three devices:  tiffgray
which produces an 8 bit gray output with uncompressed data,
tiff32nc which produces 32 bit CMYK with uncompressed data, and
tiffsep which produces a tiffgray file for each separation
(CMYK and spot colors) and it also produces a CMYK output file
which is created using the CMYK image data plus the spot
colors image data.  The spot colors are converted to CMYK using
the logic in 687431.

DETAILS:

This change requires that 687504 be included in the sources.

The tiffgray and tiff32nc devices are logically similar to the
tiff24nc device except for the use of gray and CMYK process
color models.

The tiffsep device uses much of the logic which has been created
for the psdcmyk and spotcmyk devices.  These include logic for
implementing the SeparationOrder setpagedevice parameter 687423,
logic for determining an equivalent CMYK color to spot colors
687431, and automatically detecting spot colors (without requiring
that they be specified via the SeparationColorNames setpagedevice
parameter 687504.

The tiffsep device also prints the names of any spot colors
detected within a document to stderr.  (stderr is also use for the
output from the bbox device.)  For each spot color the name of
the color is printed preceded by '%%SeparationName:  '.  This
provides a mechanism for external applications to be informed about
the names of spot colors with a document.

Due to the 64 bit pixel size limitation, the tiffsep can handle
a maximum of 8 colorants per pass.  However it is possible to
handle more than 8 colorants by doing multiple passes.  For each
pass after the first one, the names of all of the separations need
to be specified via the SeparationColorNames parameter and the
names of the desired separations need to be specified via the
SeparationOrder parameter.  When colorants are selected via the
SeparationOrder parameter, the composite CMYK output contains
the equivalent CMYK data only from the selected colorants.  It is
possible to create an overall CMYK composite for more than 8
colorants by then adding together (via an external application like
imagemagick) the composite CMYK output files from the individual
Ghostscript passes.

Internally each spot color is assigned a spot color number.  These
numbers start with 0 for the first spot color.  The spot color
numbers are assigned in the same order as the names are printed to
stderr (see above).  This order also matches the ordering in the
SeparationColorNames list, if this parameter is specified.  The
spot color numbers are not affected by the SeparationOrder parameter.

This device creates multiple output files.  The file specified
via the OutputFile command line parameter is used to contain the
composite CMYK equivalent.  File names for the separations for the
CMYK planes are created by appending '.Cyan.tif', '.Magenta.tif'
'.Yellow.tif' or '.Black.tif' to the to the end of the file name
specified via the OutputFile parameter.  File names for the spot
color separation files are created by appending '.sn.tif' (where n
is the spot color number) to the end of the file name specified via
the OutputFile parameter.

The src/gdevtsep.c source file does have a compile time option for
including/not the '.tif' at the end of the created file name.  It
also has a compile time option for using the name of the spot color
as part of the file name.  However this is not enabled since there
may be conflicts with spot color names (in which Adobe allows almost
anything) and the operating system's conventions on file naming.

This change consists of the new source module src/gdevtsep.c,
changes to devs.mak for defining the new devices, changes to the
various top level make files for including these devices in their
DEVICE_DEVS definitions, and changes to the documentation files.

[doc/Devices.htm 1.78, src/Makefile.in 1.36, src/devs.mak 1.115, src/dvx-gcc.mak 1.26, src/gdevdevn.h 1.9, src/gsdparam.c 1.15, src/macos-mcp.mak 1.25, src/msvc32.mak 1.58, src/openvms.mak 1.36, src/os2.mak 1.37, src/unix-gcc.mak 1.45, src/unixansi.mak 1.36, src/watcw32.mak 1.29]

2004-06-24 06:47 Igor Melichev

A new implementation of shadings, step 80.

DETAILS :

A stronger prevention of a tiny decomposition of a color.
It works against glitches in function|color monotonity|linearity checks.

EXPECTED DIFFERENCES :

72dpi :
Altona-Testsuite_p2_S_x3.pdf
Clarke Tate Manns Chinese.ai
S2_Digitalproof-Forum_x3k.pdf

300dpi :
Clarke Tate Manns Chinese.ai
S2_Digitalproof-Forum_x3k.pdf

[src/gxshade6.c 1.77]

2004-06-24 05:03 Dan Coby

Fix for 687534 Unable to determine equivalent CMYK for spot colors
that are only used with overprint.

DETAILS:

The given test file uses spot colors.  However the psdcmyk device
was creating output files which did not contain equivalent CMYK
colors for the spot colors.  The cause was that the previous
version of the logic was capturing the equivalent CMYK colors
when the psdcmyk device's high drawing procs were called.  However
if overprinting is enabled, then the overprint device was inserting
its own versions of these routines.  Since it only took one call
to a high level drawing handler, the previous logic would capture
the equivalent CMYK colors if there were any drawing operations
with a spot color that did not have overprinting enabled.

The fix consists of moving the capturing of the equivalent CMYK
colors to a new device proc.  This new device proc is called
update_spot_equivalent_colors.  This device proc is called whenever
a Separation or a DeviceN color space is installed.

The default version of the proc does nothing.  Thus there is only
a small amount of overhead added for the installation of Separation
and DeviceN color spaces for devices which do not need the equivalent
CMYK colors for spot colors.

Most of the change consists of the standard details of adding a
new device proc.  There are several places that have to be updated
when this is done.  The documentation in doc/Drivers.htm was updated
to include this new proc.  The high level drawing handlers in the
psdcmyk devices were removed and a new psd_update_spot_equivalent_colors
procedure was added.  Some minor changes were made in the logic in
gsequivc.c since it is no longer necessary to scan through base and
alternate color spaces looking for Separation and DeviceN color spaces.
The comments at the beginning of gsequivc.c was changed to reflect
the changes in the logic for capturing equivalent CMYK colors for
spot colors.

[doc/Drivers.htm 1.47, src/gdevbbox.c 1.18, src/gdevdflt.c 1.24, src/gdevnfwd.c 1.24, src/gdevprn.c 1.17, src/gdevpsd.c 1.15, src/gdevrops.c 1.12, src/gscdevn.c 1.18, src/gscsepr.c 1.25, src/gsequivc.c 1.3, src/gsequivc.h 1.2, src/gxclip.c 1.15, src/gxclip2.c 1.11, src/gxclipm.c 1.13, src/gxclist.c 1.14, src/gxdevcli.h 1.33, src/gxdevice.h 1.18]

2004-06-24 03:17 Ray Johnston

Minor change to avoid a spurious compiler warning about 't' used before
initialized. Fixes bug #687412.

DETAILS:

This is an invalid warning, since 't' is always initialized before use,
however the extensive use of macros confuses some compilers. IMO, this
is an abuse of macros, but this is endemic in the older GS code.

[src/spdiff.c 1.7]

2004-06-23 20:37 Alex Cherepanov

Disable idiom recognition feature during execution of .bindnow
because it has no effect except burning a few seconds of CPU time.
Fix bug 687521

[lib/gs_init.ps 1.107]

2004-06-23 18:57 stefan

Fixed CMYK to RGB conversion.

Used in rop code where RGB -> CMYK -> RGB needs to work correctly
in the black and white cases.

[src/gdevbit.c 1.10]

2004-06-23 18:50 stefan

Fix macro to use it's arguments.  Platform specific, under exersized code.

[src/gxfarith.h 1.7]

2004-06-23 09:04 Igor Melichev

Fix (ps2ascii) : Provide a tolerance to old versions of dvips output.

DETAILS :

Bug 531300  "ps2ascii chokes on ch-xoff and ch-* routines".
Patch from Mike attached to the bug.

EXPECTED DIFFERENCES :

None.

[lib/ps2ascii.ps 1.10]

2004-06-19 04:01 Ray Johnston

Add new CMaps and update older ones to latest. Bug #687470. Thanks to
A. Cherepanov for providing part of the newer files.

[Resource/CMap/83pv-RKSJ-H 1.2, Resource/CMap/90ms-RKSJ-H 1.2, Resource/CMap/90ms-RKSJ-UCS2 1.1, Resource/CMap/90ms-RKSJ-V 1.2, Resource/CMap/90msp-RKSJ-H 1.1, Resource/CMap/90msp-RKSJ-V 1.1, Resource/CMap/90pv-RKSJ-H 1.2, Resource/CMap/90pv-RKSJ-UCS2 1.1, Resource/CMap/90pv-RKSJ-UCS2C 1.1, Resource/CMap/90pv-RKSJ-V 1.2, Resource/CMap/Add-RKSJ-H 1.2, Resource/CMap/Add-RKSJ-V 1.2, Resource/CMap/Adobe-CNS1-B5pc 1.1, Resource/CMap/Adobe-CNS1-ETen-B5 1.1, Resource/CMap/Adobe-CNS1-H-CID 1.1, Resource/CMap/Adobe-CNS1-H-Host 1.1, Resource/CMap/Adobe-CNS1-H-Mac 1.1, Resource/CMap/Adobe-CNS1-UCS2 1.1, Resource/CMap/Adobe-GB1-GBK-EUC 1.1, Resource/CMap/Adobe-GB1-GBpc-EUC 1.1, Resource/CMap/Adobe-GB1-H-CID 1.1, Resource/CMap/Adobe-GB1-H-Host 1.1, Resource/CMap/Adobe-GB1-H-Mac 1.1, Resource/CMap/Adobe-GB1-UCS2 1.1, Resource/CMap/Adobe-Japan1-90ms-RKSJ 1.1, Resource/CMap/Adobe-Japan1-90pv-RKSJ 1.1, Resource/CMap/Adobe-Japan1-H-CID 1.1, Resource/CMap/Adobe-Japan1-H-Host 1.1, Resource/CMap/Adobe-Japan1-H-Mac 1.1, Resource/CMap/Adobe-Japan1-PS-H 1.1, Resource/CMap/Adobe-Japan1-PS-V 1.1, Resource/CMap/Adobe-Japan1-UCS2 1.1, Resource/CMap/Adobe-Korea1-H-CID 1.1, Resource/CMap/Adobe-Korea1-H-Host 1.1, Resource/CMap/Adobe-Korea1-H-Mac 1.1, Resource/CMap/Adobe-Korea1-KSCms-UHC 1.1, Resource/CMap/Adobe-Korea1-KSCpc-EUC 1.1, Resource/CMap/Adobe-Korea1-UCS2 1.1, Resource/CMap/B5pc-H 1.1, Resource/CMap/B5pc-UCS2 1.1, Resource/CMap/B5pc-UCS2C 1.1, Resource/CMap/B5pc-V 1.1, Resource/CMap/CNS-EUC-H 1.1, Resource/CMap/CNS-EUC-V 1.1, Resource/CMap/EUC-H 1.2, Resource/CMap/EUC-V 1.2, Resource/CMap/Ext-RKSJ-H 1.2, Resource/CMap/Ext-RKSJ-V 1.2, Resource/CMap/GB-EUC-H 1.1, Resource/CMap/GB-EUC-V 1.1, Resource/CMap/GBK-EUC-H 1.2, Resource/CMap/GBK-EUC-UCS2 1.1, Resource/CMap/GBK-EUC-V 1.2, Resource/CMap/GBK2K-H 1.1, Resource/CMap/GBK2K-V 1.1, Resource/CMap/GBKp-EUC-H 1.1, Resource/CMap/GBKp-EUC-V 1.1, Resource/CMap/GBT-EUC-H 1.1, Resource/CMap/GBT-EUC-V 1.1, Resource/CMap/GBpc-EUC-H 1.1, Resource/CMap/GBpc-EUC-UCS2 1.1, Resource/CMap/GBpc-EUC-UCS2C 1.1, Resource/CMap/GBpc-EUC-V 1.1, Resource/CMap/H 1.2, Resource/CMap/HKdla-B5-H 1.1, Resource/CMap/HKdla-B5-V 1.1, Resource/CMap/HKdlb-B5-H 1.1, Resource/CMap/HKdlb-B5-V 1.1, Resource/CMap/HKgccs-B5-H 1.1, Resource/CMap/HKgccs-B5-V 1.1, Resource/CMap/HKm314-B5-H 1.1, Resource/CMap/HKm314-B5-V 1.1, Resource/CMap/HKm471-B5-H 1.1, Resource/CMap/HKm471-B5-V 1.1, Resource/CMap/HKscs-B5-H 1.1, Resource/CMap/HKscs-B5-V 1.1, Resource/CMap/Identity-H 1.2, Resource/CMap/Identity-V 1.2, Resource/CMap/KSC-EUC-H 1.1, Resource/CMap/KSC-EUC-V 1.1, Resource/CMap/KSCms-UHC-H 1.2, Resource/CMap/KSCms-UHC-HW-H 1.1, Resource/CMap/KSCms-UHC-HW-V 1.1, Resource/CMap/KSCms-UHC-UCS2 1.1, Resource/CMap/KSCms-UHC-V 1.2, Resource/CMap/KSCpc-EUC-H 1.1, Resource/CMap/KSCpc-EUC-UCS2 1.1, Resource/CMap/KSCpc-EUC-UCS2C 1.1, Resource/CMap/UCS2-90ms-RKSJ 1.1, Resource/CMap/UCS2-90pv-RKSJ 1.1, Resource/CMap/UCS2-B5pc 1.1, Resource/CMap/UCS2-ETen-B5 1.1, Resource/CMap/UCS2-GBK-EUC 1.1, Resource/CMap/UCS2-GBpc-EUC 1.1, Resource/CMap/UCS2-KSCms-UHC 1.1, Resource/CMap/UCS2-KSCpc-EUC 1.1, Resource/CMap/UniCNS-UCS2-H 1.2, Resource/CMap/UniCNS-UCS2-V 1.2, Resource/CMap/UniGB-UCS2-H 1.2, Resource/CMap/UniGB-UCS2-V 1.2, Resource/CMap/UniJIS-UCS2-H 1.2, Resource/CMap/UniJIS-UCS2-HW-H 1.1, Resource/CMap/UniJIS-UCS2-HW-V 1.1, Resource/CMap/UniJIS-UCS2-V 1.2, Resource/CMap/UniKS-UCS2-H 1.2, Resource/CMap/UniKS-UCS2-V 1.2, Resource/CMap/V 1.2]

2004-06-18 17:46 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 5).

DETAILS :

pdf_set_charproc_attrs went out the pw array range,
and caused an indeterministic behavior with Bug687044.ps .

EXPECTED DIFFERENCES :

Not detected on Windows, but the old revision was indeterministic.

[src/gdevpdti.c 1.33, src/gdevpdfx.h 1.94, src/gdevpdtt.c 1.83]

2004-06-18 07:00 Dan Coby

687504 Enhancement: Imaging spot colors without using the
SeparationColorNames parameter.

DETAILS:

The purpose of this enhancement is to provide an example of how
to implement imaging spot colors without requiring that they be
specified in advance via the SeparationColorNames setpagedevice
parameter.  Note:  Spot colors are only supported on a few devices
which have output file formats which allow for spot colors.  These
are currently the psdcmyk, spotcmyk, and xcfcmyk devices.

This commit only implements this feature on the psdcmyk, spotcmyk
and devicen devices.

In order to implement this feature, a device needs to be able to
allocate image buffer memory for each colorant and to detect when
a new colorant is being used inside of a color space.  The
implementation has the following pieces:

1.  The handling of the MaxSeparation setpagedevice parameter was
extended.  Previously this parameter was always set to one.  For
most devices it now indicates the number of colorants being used
by the device.  For most devices this is a fixed quantity, however
for the psdcmyk device, this parameter can be used to tell the
device to allocate image buffer memory for up to eight colorants.
(The eight colorant limit is due to the fact that the psdcmyk
device uses 8 bits per colorant and we currently have a 64 bit
maximum pixel size.)

2.  The devices already have a 'get_color_comp_index' routine which
is used to query if a colorant is supported by the device.  However
this routine is used for both real components in color spaces and also
for some special cases.  For instance, the same halftone may be used
either for a cyan or a red colorant.  To handle this case, the halftoning
setup logic will query the get_color_comp_index routine to check if
cyan is supported by the device.  If not then a query is made to see
if the device supports red.  By monitoring the names of the components
passed to get_color_comp_index routine, a device can detect when a new spot
color is being used.  However it is necessary to be able to detect
the special cases so that the device does not believe that it has a
'red' spot color.  To do this the third parameter of the
get_color_comp_index device proc was logically modified to indicate
if a name represents a name actually in a color space or one of the
special case situations.  Previously this parameter was not being used.

3.  The get_color_comp_index routine for the psdcmyk device was
modified to look for new spot colors and to add then to its list of
colorants if there was space available.  Note:  This also required
that the psdcmyk device have its own structure descriptor, pointer
enumeration and relocation procedures.  The macro which was used to
define the psdcmyk and psdrgb devices needed to be changed since the
previous macro used the st_device_printer structure descriptor instead
of the new structure descriptor for the psd devices.

[src/gdevdevn.c 1.20, src/gdevdevn.h 1.8, src/gdevnfwd.c 1.23, src/gdevperm.c 1.4, src/gdevpsd.c 1.14, src/gdevxcf.c 1.8, src/gscdevn.c 1.17, src/gscsepr.c 1.24, src/gscspace.c 1.16, src/gsdparam.c 1.14, src/gsht.c 1.19, src/gxcmap.c 1.21, src/gxcmap.h 1.9]

2004-06-17 21:42 Ralph Giles

Protect genarch's test for sizeof(long long) with and #ifdef HAVE_LONG_LONG
since a number of platforms (particularly MSVC) do not support this type.

[src/genarch.c 1.11, src/stdint_.h 1.5]

2004-06-17 13:05 Alex Cherepanov

Round elements of Mask array to the nearest integer following implementation
of AR4, AR5, AR6.
Fix bug 687494 from customer 580.

[lib/pdf_draw.ps 1.82]

2004-06-17 11:14 Igor Melichev

Fix : Arithmetic errors could cause a function monotonity misrecongition.

DETAILS :

Bug 687511 "shadinds: infinite recursion".

EXPECTED DIFFERENCES :

Not detected on Windows.
On Linux expecting a difference with :
Altona-Testsuite_p2_S_x3.pdf
S2_Digitalproof-Forum_x3k.pdf

[src/gsfunc0.c 1.21]

2004-06-16 20:01 Alex Cherepanov

Fix parsing of -2147483648.5, min_int followed by a fractional part.
Fix bug 687500

[src/iscannum.c 1.9]

2004-06-16 11:22 Igor Melichev

Fix (pdfwrite) : Allow named object reference in the Action key of /ANN pdfmark.

DETAILS :

Bug 687386  "-dEmbedAllFonts does not work".

It's a PDF 1.5 feature. We still incompletely support PDF 1.5 .

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.40]

2004-06-16 09:27 Ralph Giles

Protect against cache values containing spaces. This shouldn't be a problem, the change is more for consistency.

[src/configure.ac 1.47]

2004-06-16 09:27 Ralph Giles

Try to use long long as a 64 bit type in the genarch fallback stdint definitions. Fix for bug 687514.

[src/genarch.c 1.10, src/stdint_.h 1.4]

2004-06-15 20:28 Igor Melichev

Fix (pdfwrite) : A wrong CFF string index randiomization.

DETAILS :

Bug 687507 "pdfwrite device closes with -15".

1. Randomization parameters for cff_string_index were computed wrongly,
causing the search to skip some items. As a consequence,
some strings were added to the table many times, causing
a groth of the table while CFF size estimation iterations,
and psf_write_type2_font returned error due to "offset > End_offset".

2. If an error happened writing a font after pdf_begin_fontfile is done,
unconditionally call pdf_end_fontfile to provide a consistent stream state.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtb.c 1.24, src/gdevpsf2.c 1.31, src/lib.mak 1.186]

2004-06-15 15:27 Alex Cherepanov

Make pdf_dominant_rotation() return unknown text rotation for the file
without text. It returned 0 rotation before, which excluded consideration
of DSC comments later on.
Fix bug 687515

[src/gdevpdf.c 1.95]

2004-06-10 19:09 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 4).

DETAILS :

Recent changes about charproc variations caused an appearence of idle entries
in the xref table. Those entries pointed to zero length objects
and were never referred.

Idle entries appeared due to the substream accumulator reserved an object id
before entering a substream, but later the object (a charproc) was cancelled.

This patch delays the reservation of an object id until we decide
that the object won't be cancelled. Added a new argument of pdf_enter_substream
for this purpose.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfi.c 1.53, src/gdevpdfm.c 1.39, src/gdevpdfx.h 1.93, src/gdevpdti.c 1.32]

2004-06-10 16:41 Igor Melichev

A new implementation of shadings, step 80.

DETAILS :

Propagated error codes from is_color_monotonic, is_color_linear.
Should fix the bug 687511 "shadinds: infitite recursion".

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.76]

2004-06-09 20:47 Igor Melichev

Fix (type 1 hinter) : an indeterministic bug in t1_hinter__simplify_representation.

DETAILS :

Bug 687508 "segfault with cvs head".

1. An old defect in the code :
when contour_count is greater than hint_count,
and the hinting is disabled by one axis,
random hints could appear,
causing indeterministic effects.

2. this->grid_fit_x ans this->grid_fit_y were erroneusely exchanged.

EXPECTED DIFFERENCES :

72dpi :

036-01.ps
Bug687044.ps
Faktura.pdf
kazmir.pdf
RealCities.pdf
test.pdf
xgfddg.pdf

[src/gxhintn.c 1.50]

2004-06-09 12:07 Igor Melichev

Fix (type 1 hinter) :
1. Ever align the Y-coordinate of a glyph origin to pixels.
2. Improve the unaligned pole interpolation;
3. Set a waeaker angle threshold in t1_hinter__is_stem_hint_applicable.
4. Allow an offset fuzz in t1_hinter__is_stem_hint_applicable.
5. Align upper/lower horizontal stems by the upper/lower edge.
6. A dependency was missed in lib.mak .

DETAILS :

Bug 687419 "poor font rendering on X11 with gs 8.14".

The intention of this change is to improve the rendering quality
with TextAlphaBits > 1, but actually it modifies glyph rendering in all cases.

1.
The test file of the bug 687419 shows that we had 3
inconsistent requirements :
- the analigned glyph origin;
- uniform glyph size;
- and contrast stems.
Since an uniform glyph height looks critical,
we drop the analygned Y-coordinate of the glyph origin.
In other words, now we ever align
the Y-coordinate of the glyph origin to pixels.
This also reduces the number of glyph raster variants in the cache.

2.
The old interpolation algorithm could cause
significant distortions with flex-like serifs, which are not marked with flex.
The character 'L' in the test document of the bug 687419 demonstrates that.
If the path goes outside the interpolation interval
and have no turns, now we shift the "outer" parts rather than
breaking the path at extremal poles. (We wanted this change
a long ago but haven't got a strong reason for it.)

3.
The threshold in t1_hinter__is_stem_hint_applicable changed from
1/3 to 9/10. This makes more stems to recognize. The reason for that
is the same character "L".

4.
Allowed a blue_fuzz offset t1_hinter__is_stem_hint_applicable.
Debugged with comparefiles/tpc2.ps .

5. In the test file of the bug 687419 the small font has no
upper alignment zone for lowercase. This caused an uniform glyph height
due to wide and norrow horizontal stems aligned ocasionally
by top or bottom. Implemented a choice of the aligned edge
depending on the Y-coordinate of stem middle relative to
the glyph middle.

6. gxhintn_h was defined in lib.mak after it is used at once.

EXPECTED DIFFERENCES :

Almost all comparefiles render differently.

[src/gxchar.c 1.43, src/gxhintn.c 1.49, src/lib.mak 1.185, src/gxhintn.h 1.20]

2004-06-08 11:42 Igor Melichev

Fix (pdfwrite) : Merge equal ExtGState objects.

DETAILS :

Bug 687487 "(pdfwrite) redundant ExtGState objects".

Now we represent ExtGState objects as cos_dict_t instances,
and perform a full comparizon before writing them into the output PDF.
Redundant equal objects are being substituted and skipped.

This patch consists of 4 parts :

1. Creting an ExtGstate object, replaced old calls to stream functions
with calls to cos_dict_t functions.

2. Implemented the comparizon/substitution logic in pdf_end_gstate.

3. pdf_prepare_drawing now doesn't pass keys to
pdf_update_halftone, pdf_update_transfer, pdf_write_transfer_map,
because we don't want them to become a part of a value.
Instead that we made them to be keys of the cos_dict_t instance.

4. Defined new functions cos_dict_put_c_key_bool and cos_dict_put_string_copy
to simplify the new code.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfg.c 1.53, src/gdevpdfo.c 1.30, src/gdevpdfo.h 1.19]

2004-06-03 17:12 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 3).

DETAILS :

Must check FontMatrix when deciding about same charproc.

EXPECTED DIFFERENCES :

None.

[src/gdevpdti.c 1.31]

2004-06-02 17:45 Igor Melichev

Fix (pdfwrite) : 1. After used a process color, continue using it for same client color space.
2. A bug in pdf_set_initial_color could miss some color commands.

DETAILS :

1. Bug 687197 "ps2pdf creates incorrect PDF".
Defined nad maintained new flags pdev->fill_used_process_color and pdev->stroke_used_process_color
for vector devices. The function pdf_reset_color use them when the cclient color space
isn't embeddable.

2. Occasionally found that pdf_set_initial_color set saved colors to pdev->vg_initial
rather than to argument pointers. This could loose some color commands with a small probability,
so that some objects could get a wrong color.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfb.c 1.22, src/gdevpdfd.c 1.40, src/gdevpdfg.c 1.52, src/gdevpdfg.h 1.32, src/gdevpdfp.c 1.38, src/gdevpdtt.c 1.82, src/gdevpdfx.h 1.92, src/gdevvec.h 1.13]

2004-06-02 13:19 Igor Melichev

Fix (pdfwrite) : ConvertCMYKImagesToRGB crashed.

DETAILS :

Bug 687428 "ConvertCMYKImagesToRGB does not produce a PDF-File".
It made a pointer from global memory to C stack.
Fixed with allocating the structure dinamically.
It produces a small garbage, which is not critical in pdfwrite.

EXPECTED DIFFERENCES :

None.

[src/gdevpsdi.c 1.27]

2004-06-02 12:14 Igor Melichev

Fix : 'midpoint' formula was wrong.

DETAILS :

Bug 687463 "The 'midpoint' formula is wrong".

EXPECTED DIFFERENCES :

I didn't detect any on Windows.
After recent changes this stuff works only with curves,
which can't flatten with 2^12 segments,
and which are not a part of a shading,
so likely the probability of a difference is small.

[src/gxpflat.c 1.41, src/gxshade6.c 1.75]

2004-06-02 00:37 Ralph Giles

Correct a typo. Thanks to Russell for catching this one.

[doc/Make.htm 1.76]

2004-06-01 21:13 Dan Coby

Fix for 687477 Bad incremental update to a PDF file.

DETAILS:

The given test file had a bad incremental update.  This update
has two problems:

1.  The trailer dict only had a Prev entry.  None of the required
entries were present.  To fix this problem, entries from previous
trailer dicts are placed into the initial trailer dict if there is
no entry with the same key in the initial trailer dict.

2.  The update had an xref table with two entries.  One of them
was bad.  (Not a very good percentage.)  To fix this problem,
all entries in the composite xref table are scanned to verify that
they point to a valid objects.  If not then the rebuild logic is
used to attempt to recover the xref data.  This can be disabled
by adding -dNoVerifyXref to the command line.  In most cases,
the verification time is not noticeable but I did find a file with
104,000 xref entries and it took about 2 seconds to verify the
xref table.

[lib/pdf_base.ps 1.43, lib/pdf_main.ps 1.87, lib/pdf_rbld.ps 1.7]

2004-06-01 17:20 Igor Melichev

Fix : A Cygwin/gcc warning.

DETAILS :

The prefious patch appeared incomplete. Now fixing.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfx.h 1.91]

2004-06-01 17:06 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 2).

DETAILS :

This is a final step of fixing the bug 687489
"pdfwrite creates invalid Type3 font -- missing characters".

This patch provides a check whether a color was changed while
a PS charproc interpretation. A color command is written
into the PDF charproc if and only if the PS charproc changed the color.

This patch discovers a bug in Adobe Acrobat Reader 5 :
with the test document of the bug 687489 it paints an "invisible" text in the 4th page.
That text isn't visible when viewing with Adobe reader 6 and with GS.
The text is painted with a white color, but AR 5 erroneusly paints it with black.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfd.c 1.39, src/gdevpdfg.c 1.51, src/gdevpdfg.h 1.31, src/gdevpdtt.c 1.81]

2004-06-01 17:03 Igor Melichev

High level devices may need a device color while executing stringwidth.

DETAILS :

This is second step of fixing the bug 687489
"pdfwrite creates invalid Type3 font -- missing characters".
The problem happens due to the old code could run a charproc while
executing a stringwidth, when device color is not evaluated.

This patch provides the device color loading with no dependence
on the text operation.
dev_proc(dev, text_begin) now receives a device color in any case.
THIS IS AN INCOMPATIBLE CHANGE : if an old device depends on
a device color ability, it will malfunction.

EXPECTED DIFFERENCES :

None.

[src/gstext.c 1.18]

2004-06-01 13:42 Igor Melichev

(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued).

DETAILS :

This is a preparation for fixing the bug 687489
"pdfwrite creates invalid Type3 font -- missing characters".
The problem happens due to the old code could run a charproc while
executing a stringwidth, when the PDF viewer state isn't syncronized
with the PS graphic state.
We don't synchronize in this case because stringwidth doesn't paint.

Our intention is to know whether a charproc changes graphic state parameters :
current color, line width, etc. For doing so we need
(1) to save the viewer state in the viewer state stack,
and then (2) synchronize with the PS graphic state without
writing commands to the PDF. This patch does provide (1)
but does not implement (2) because we want to check
the change (1) for no regressions.
The change (2) will be a separate step.

Saving a viewer state in a stack when entering a charproc
was contributed with the recent patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-May/004507.html
as an improvement of pdf_enter_substream, which was called from
pdf_install_charproc_accum called from pdf_text_set_cache.
In other words, the viewer state saving was deferred until setcachedevice/setcharwidth.
However we need to save the viewer state in the beginning of a PS charproc.

This patch moves the call to pdf_enter_substream from pdf_install_charproc_accum
to the TEXT_PROCESS_RENDER branch of pdf_text_process.
We believe that the new logic is more straight :
we start the charproc stream accumulation immediately before the PS interpreter
enters a charproc interpretation.

Minor changes :

1. Defined pdf_start_charproc_accum as a symmetric one for pdf_end_charproc_accum.
2. Renamed pdf_install_charproc_accum into pdf_set_charproc_attrs.
3. Improved the argument list of pdf_prepare_text_drawing.

EXPECTED DIFFERENCES :

None.

[src/gdevpdti.c 1.30, src/gdevpdfx.h 1.90, src/gdevpdtt.c 1.80]

2004-06-01 02:37 Alex Cherepanov

Aviod a PostScript error in ps2ascii when the source file uses composite fonts.
For now, dump the strings in the unmodified encoding when the corresponding
font is composite.
Fix bug 687466.

[lib/ps2ascii.ps 1.9]


Version 8.30 (2004-05-29)

This is an beta release of the development tree. It contains numerous new features and is made available for those interested in testing out the new version before it becomes the next stable release.

New features in this version :

The following bug numbers were open at the time of the last release:

405501, 414947, 430175, 446344, 456692, 458780, 463688, 465936, 487460, 487953, 493348, 509829, 513731, 514194, 526099, 526491, 530011, 535366, 535932, 542629, 555072, 558151, 572865, 578865, 592160, 592837, 601336, 602263, 603934, 605830, 607850, 610478, 611898, 614298, 617523, 626295, 634036, 634358, 645316, 651644, 667301, 669654, 674417, 674418, 677324, 677430, 680301, 681469, 685335, 686747, 686750, 686752, 686816, 686819, 686824, 686833, 686834, 686841, 686842, 686843, 686853, 686860, 686863, 686865, 686867, 686873, 686889, 686896, 686897, 686902, 686904, 686919, 686930, 686936, 686937, 686954, 686956, 686958, 686963, 686980, 686996, 686999, 687011, 687012, 687013, 687020, 687021, 687029, 687038, 687039, 687050, 687063, 687066, 687072, 687079, 687084, 687085, 687086, 687093, 687095, 687102, 687105, 687108, 687110, 687122, 687123, 687125, 687137, 687145, 687146, 687155, 687157, 687163, 687168, 687171, 687174, 687179, 687181, 687193, 687196, 687197, 687203, 687211, 687214, 687219, 687221, 687229, 687230, 687231, 687243, 687251, 687257, 687259, 687271, 687275, 687280, 687289, 687295, 687297, 687298, 687303, 687304, 687314, 687316, 687322, 687324, 687325, 687327, 687331, 687341, 687342, 687345, 687346, 687355, 687360, 687364, 687369, 687373, 687375, 687380, 687386, 687388, 687392, 687394, 687395, 687397, 687398, 687399, 687401, 687403, 687406, 687407, 687410, 687411, 687412, 687414, 687419, 687421, 687424, 687426, 687428, 687434, 687435, 687436, 687437, 687438, 687440, 687441, 687442, 687444, 687445, 687446, 687448, 687451, 687452, 687454, 687458, 687459, 687460, 687461, 687463, 687465, 687466, 687467, 687468, 687470, 687471, 687473, 687474, 687475, 687476, 687477, 687479, 687480, 687481, 687484, 687485, 687486, 687487, 687489, 687490, 687491.

Incompatible changes

No known incompatible changes at this point

Changelog

2004-05-31 06:02 Dan Coby

Correct various compiler warnings from MSVC and gcc.  Fix for 
687441.

[src/gdevdevn.h1.7, src/gdevdevn.c 1.19, src/gdevpsd.c 1.13, src/gsequivc.c 1.2]

2004-05-31 05:34 Ralph Giles

JPXDecode support is only enabled for the autoconf build. Mention this
in the release notes, and add some brief notes to the MSVC makefile
about how to make it build.

[doc/News.htm 1.149, src/msvc32.mak 1.57]

2004-05-31 05:08 Ralph Giles

Update the open bug list in the release notes.

[doc/News.htm 1.148]

2004-05-30 09:50 Russell Lang

Enable separable_and_linear and separable for the display device.
Fixes bug #687442.

DETAILS:
Enable separable_and_linear for gray, RGB and CMYK formats.
The display device needs to explicitly call check_device_separable
because it is closed and reopened when the callback is set,
which causes linear_and_separable to be reset.
Set the gray_index which is not set by check_device_separable.
Prevent the unimplemented DISPLAY_ALPHA_FIRST and
DISPLAY_ALPHA_LAST from being used.
Make it clear that the display_map_rgb_color_rgb and
display_map_color_rgb_rgb functions only work with 8bits/pixel.

[src/gdevdsp.c 1.22]

2004-05-29 21:07 Raph Levien

Added more news items, in preparation for 8.30 release.

[doc/News.htm 1.147]

2004-05-29 02:19 Ralph Giles

Relocate the gxhldevc_h macro out of order so all its dependencies are
available.

[src/lib.mak 1.184]

2004-05-29 02:10 Ralph Giles

Correct a dependency typo.

[src/lib.mak 1.183]

2004-05-29 01:21 Ralph Giles

Update documenation dates and version category for release.

[doc/API.htm 1.42, doc/Bug-form.htm 1.40, doc/Bug-info.htm 1.39, doc/C-style.htm 1.46, doc/Commprod.htm 1.31, doc/Copying.htm 1.30, doc/DLL.htm 1.34, doc/Deprecated.htm 1.11, doc/Details8.htm 1.6, doc/Develop.htm 1.134, doc/Devices.htm 1.77, doc/Drivers.htm 1.46, doc/Fonts.htm 1.41, doc/Helpers.htm 1.34, doc/History1.htm 1.30, doc/History2.htm 1.30, doc/History3.htm 1.30, doc/History4.htm 1.30, doc/History5.htm 1.32, doc/History6.htm 1.47, doc/History7.htm 1.35, doc/History8.htm 1.10, doc/Htmstyle.htm 1.35, doc/Install.htm 1.45, doc/Issues.htm 1.40, doc/Language.htm 1.86, doc/Lib.htm 1.33, doc/Maintain.htm 1.41, doc/Make.htm 1.75, doc/New-user.htm 1.50, doc/News.htm 1.146, doc/Projects.htm 1.57, doc/Ps-style.htm 1.28, doc/Ps2epsi.htm 1.32, doc/Ps2pdf.htm 1.68, doc/Psfiles.htm 1.51, doc/Readme.htm 1.55, doc/Release.htm 1.85, doc/Source.htm 1.30, doc/Tester.htm 1.30, doc/Testing.htm 1.25, doc/Unix-lpr.htm 1.30, doc/Use.htm 1.109, doc/Xfonts.htm 1.30, man/dvipdf.1 1.28, man/font2c.1 1.28, man/gs.1 1.29, man/gslp.1 1.28, man/gsnd.1 1.28, man/pdf2dsc.1 1.27, man/pdf2ps.1 1.29, man/pdfopt.1 1.27, man/pf2afm.1 1.28, man/pfbtopfa.1 1.29, man/printafm.1 1.28, man/ps2ascii.1 1.27, man/ps2epsi.1 1.26, man/ps2pdf.1 1.33, man/ps2pdfwr.1 1.32, man/ps2ps.1 1.35, man/wftopfa.1 1.28, src/gscdef.c 1.43, src/version.mak 1.70]

2004-05-29 01:11 Ralph Giles

Add new rinkj driver files to the index in Develop.htm.

[doc/Develop.htm 1.133]

2004-05-28 23:58 Raph Levien

Add sample setup file for Rinkj driver, more documentation.

[doc/Devices.htm 1.76, lib/rinkj-2200-setup 1.1]

2004-05-28 23:50 Raph Levien

Adds basic documentation for Rinkj driver, update copyright banners.

[doc/Devices.htm 1.75, src/rinkj/evenbetter-rll.c 1.2, src/rinkj/evenbetter-rll.h 1.2, src/rinkj/rinkj-byte-stream.c 1.2, src/rinkj/rinkj-byte-stream.h 1.2, src/rinkj/rinkj-config.c 1.2, src/rinkj/rinkj-config.h 1.2, src/rinkj/rinkj-device.c 1.2, src/rinkj/rinkj-device.h 1.2, src/rinkj/rinkj-dither.c 1.2, src/rinkj/rinkj-dither.h 1.2, src/rinkj/rinkj-epson870.c 1.2, src/rinkj/rinkj-epson870.h 1.2, src/rinkj/rinkj-screen-eb.c 1.2, src/rinkj/rinkj-screen-eb.h 1.2]

2004-05-28 23:26 Dan Coby

This change implements "687431 Add determining equivalent CMYK
colors for spot colors".  This change currently only affects the
psdcmyk device.

DETAILS:

For a description of the implementation see the comments at
the beginning of gsequivc.c.

In addition to the comments in gsequivc.c, the gs_separation
structure was changed to simplify it.  The gs_separation_info
structure was removed and the names filed moved into the
gs_separations structure.

[src/devs.mak 1.114, src/gdevdevn.c 1.18, src/gdevdevn.h 1.6, src/gdevprn.c 1.16, src/gdevpsd.c 1.12, src/gsequivc.c 1.1, src/gsequivc.h 1.1]

2004-05-28 23:09 Ralph Giles

Use ST_MTIME instead of the ctime to determine the date of the last
baseline update. Partial fix for bug 687481.

[toolbin/tests/gscheck_raster.py 1.12]

2004-05-28 23:02 Raph Levien

Initial commit of rinkj (resplendent inkjet) drivers, using ETS screening.

[src/devs.mak 1.113, src/gdevrinkj.c 1.1, src/rinkj/evenbetter-rll.c 1.1, src/rinkj/evenbetter-rll.h 1.1, src/rinkj/rinkj-byte-stream.c 1.1, src/rinkj/rinkj-byte-stream.h 1.1, src/rinkj/rinkj-config.c 1.1, src/rinkj/rinkj-config.h 1.1, src/rinkj/rinkj-device.c 1.1, src/rinkj/rinkj-device.h 1.1, src/rinkj/rinkj-dither.c 1.1, src/rinkj/rinkj-dither.h 1.1, src/rinkj/rinkj-epson870.c 1.1, src/rinkj/rinkj-epson870.h 1.1, src/rinkj/rinkj-screen-eb.c 1.1, src/rinkj/rinkj-screen-eb.h 1.1]

2004-05-28 07:08 Igor Melichev

Fix (PDF interpreter) : Wrong processing of a big CIDToGIDMap.

DETAILS :

Bug 687471 problem with japanese fonts

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.66]

2004-05-27 19:05 Igor Melichev

(pdfwrite) : 1. Implementing a dynamic recongnition for Type 3 charproc variations;
2. Bug : Viewer state could desynchronize when entering a charproc accumulation.

DETAILS :

Bug 687472 "barcode wrongly converted to type3 font".

Type 3 glyph variations may appear if BuildChar uses setcharwidth.
If a charproc uses setcharwidth, we perform the charproc accumulation
for each character occurance, and compare the accumulated stream with older
ones if they exist. In the case of exact equality
(including the character name and character code),
the old charproc is used. Othervise we embed a new one.

If the character code was used with another charproc,
we create another PDF font to resolve the conflict.
Thus a single PS Type 3 font may convert into several
PDF Type 3 fonts, and the text may be broken into smaller pieces.
Particularly this happens with the test file of the bug 687472.
Viewers must account that implementing the text serchability.

A new array pdfont->u.simple.s.type3.cached is used to remember whether
a charproc uses setcachedevice[2]. If a character used it at ones,
we assume that all further its occurances to do same.
We think that this assumption is implied by PLRM.

Viewer state was not saved when entering a charproc accumulation,
and was not restored after exiting it (a bug).
This could cause wrong object attributes
and excessive commands written into PDF.
This patch fixes that.

Some PDFs become longer due to excessive ExtGState objects
generated for dropped copies of charprocs.
Opened a new bug 687487 for tracking this issue.

EXPECTED DIFFERENCES :

An unimportant difference with pdfwrite -r72 :
136-01.ps
prob1.pdf
tpc2.ps
xes2ps-problem.pdf

An unimportant difference with pdfwrite -r300 :
260-01.ps
tpc2.ps
xes2ps-problem.pdf

[src/gdevpdf.c 1.94, src/gdevpdfg.c 1.50, src/devs.mak 1.112, src/gdevpdfg.h 1.30, src/gdevpdfj.c 1.31, src/gdevpdfu.c 1.52, src/gdevpdfx.h 1.89, src/gdevpdte.c 1.59, src/gdevpdtf.c 1.36, src/gdevpdtf.h 1.22, src/gdevpdti.c 1.29, src/gdevpdtt.c 1.79, src/gdevpdtt.h 1.23]

2004-05-27 10:28 Igor Melichev

(pdfwrite) : Delaying the charproc insertion until it is accumulated.

DETAILS :

This change is a part of the work on the bug 687472 "barcode wrongly converted to type3 font".
Our intention is to recognize Type 3 glyph variations,
which may appear if BuildChar uses setcharwidth.

For the case of no error while charproc accumulation
this change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gdevpdtt.c 1.78, src/gdevpdfx.h 1.88]

2004-05-27 10:25 Igor Melichev

(pdfwrite) : Delaying the charproc insertion until it is accumulated.

DETAILS :

This change is a part of the work on the bug 687472 "barcode wrongly converted to type3 font".
Our intention is to recognize Type 3 glyph variations,
which may appear if BuildChar uses setcharwidth.

For the case of no error while charproc accumulation
this change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.

[src/gdevpdf.c 1.93, src/gdevpdti.c 1.28]

2004-05-27 03:22 Ralph Giles

Handle some errors that could halt the regression run.

DETAILS:

When running a raster comparison, the test case generates a ShortDescription
that includes the modification date of the baseline raster date. If no such
file exists, the baseline gs is run to create an entry. However, if that
insertion attempt fails, there is no baseline raster for reference. While
the test case itself handled this properly, the ShortDescription logic did
not, throwing an error that terminated the whole run.

Also, makesum was returning '0' instead of None on failure, which was
incompatible with the use of its return value as a dbm key. It now
returns None in that case, and when it cannot stat the file argument
at all.

[toolbin/tests/gscheck_raster.py 1.11, toolbin/tests/gssum.py 1.7]

2004-05-26 15:49 Ray Johnston

Fix reference count of overprint compositor so that it doesn't get freed
too early. Fixes SEGV of bug #687425 for customer #1110.

DETAILS:

This only showed up when banding was being used.

This only showed up when a high level image was being rendered from the
clist since this installed a 'clipper' device on top of the overprint
compositor. When the clipper device was closed, the finalization proc
decremented the reference count for the 'target' device of the clipper
which was the overprint compositor. When the overprint reference count
was decremented to 0, it was freed even though it was being used by
the clist renderer.

EXPECTED DIFFERENCES:

None.

[src/gxclrast.c 1.28]

2004-05-26 08:44 Igor Melichev

Fix (pdfwrite) : Wrong /Matrix from /BP pdfmark.

DETAILS :

Bug 687430 "Wrong transformation matrix with Form XObjects".
Patch from sags5495 at hotmail dot com (SaGS), adopted by igorm.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.38]

2004-05-26 04:10 Dan Coby

Log message:

Revised fix for 687418 WTS does not work with bitcmyk driver.

DETAILS:

The changes in this revised fix are pretty extensive.  Note:  This
patch includes several items from Russell Lang.  I am including these
since they are required for the proper execution of the patch and
it does not seem reasonable to require possible testers or reviewers
to have to track down and install these patches separately.

The list of changes includes:

1.  Added logic to check_device_separable to also set the gray_index
value.  This suggestion came from Russell Lang.

2.  Add verification that a colorants bits are consecutive.  (from
Russell Lang in:
http://www.ghostscript.com/pipermail/gs-code-review/2004-May/004501.html

3.  Changes to gx_default_encode_color and gx_default_decode_color
to use position and bit count info from the device's color_info data.
(Also from Russell Lang in the previously mentioned submission.)
(See the comments in item 21 below about the gx_default_decode_color
routine.)

4.  Included test routines. (Also from Russell Lang in the previously
mentioned submission.)

5.  Added calls to check_device_separable prior to calls to the
various 'fill_in_procs' routines (gx_device_fill_in_procs,
gx_forward_fill_in_procs, fill_in_procs).  The fill_in_procs routines
use the separable information in choosing default routines for
the encode_color and decode_color routines.  Thus we have a chicken
and egg problem since check_device_separable also uses the device's
encode_color routine.  The test routines from Russell were a great
help in debugging

Also various changes that were found while testing this patch:

6.  The various color deskjet drivers (gdevcdj.c) was incorrectly setting
the dither_grays and dither_colors values to 5 instead of 256.  (I
have no idea why.)  The max_gray and max_color values were set to
being set correctly to 255.

7.  The color deskjet devices (gdevcdj.c) were doing BG and UCR
removal inside of the encode_color routines.  These devices use the
default color_mapping_procs which also do these tasks.  The code in
the encode_color_routine was removed since it could cause conflicts
with the overprint routines.  The code in the encode_color routine
was also using a fixed BG/UCR logic (from PS level 2).

8.  Corrected a problem in the color desk jet decode_color routine
which was always returning zero for the black value.

9.  Changed the casting for values assigned to the std_colorant_names
field.  Note:  MSVC and gcc complain about different conditions.
There does not seem to be a combination that will keep both happy.
This set produces no complaints from gcc.

10.  Corrected the setting of dither_grays and dither_colors for the
devicen device.  Previously this was being set to 1 when it should have
been set to 256.  Found by Russell Lang.

11.  Modified check_device_separable to only check for appropriate
values of the max_gray/dither_grays and max_color/dither_colors
pairs only for gray/color devices.

12.  Added check for encode_color routines which encode zero
bits for a colorant.  Previously this condition would have caused
an infinitely in check_device_separable.  Change suggested by
Russell Lang.

13.  Removed a previous call to set_linear_color_bits_mask_shift
in gx_default_fill_in_procs.  This has been logically replaced by
the calls to check_device_separable which have been added.

14.  Corrected a problem in the ppm_map_rgb_color in gdevpbm.c.
This routine was calling gx_default_encode_color which requires

15.  Corrected problem in pcx256 device which incorrectly setting
the dither_grays and dither_colors values.

16.  Removed the check_process_color_names routine from gdevpsd.c
since it not used.

17.  Modified the dci_alpha_values macro in gxdevcli.h.  This
macro was setting some devices as 'separable' but was not setting
the related color_info fields (comp_shift, comp_bits, comp_mask).
Now this macro sets a devices as 'unknown'.  The check_device_separable
routine will change this for devices which are separable.  Devices
which want to change their process color model need to either set
themselves as 'unknown' and let check_device_separable handle things
or else the device needs to setup its own values for separable
color_info fields.

18.  Added a call to check_device_separable into gdev_x_open in
gdevxini.c.  With this addition, the x11 device is detected as being
sperable.  This is need since the x11 device sets up a color map in
gdev_x_open.  Prior to this, the encode_color routine for he x11 device
returns 0 regardless of its input.

19.  Modified the uniprint device (gdevupd.c) and color laser jet
devices (gdevcljc.) to use 256 instead of 5 for its dither_gray and
dither_color values with devices that have 8 bits per colorant.  This
is appropriate since the the max_gray and max_color values are 255.
(I do not know why these values were being set to 5.  This same error
was found in gdevcdj.c.  My only guess is that it was a typo in gdevcdj.c.
Since this device is recommended as an example of how to code a color
raster device (in Devices.htm), the error was propogated into the
other devices.

20.  Added more comments to gxdevcli.h explaining the use of the
gray_index, max_gray, dither_grays, max_color, and dither_colors
fields in the device color_info structure.

21.  Changed the gx_default_decode_color routine (again).  Russell
Lang created two revisions to this routine as part of his efforts on
this task.  However one version was slow but produced the desired
results.  The second version was faster but its output was slightly
different.  This revision produces the same output as the first
version but does so without the while loops that slowed its operation.

Note:  There is another related submission from Russell Lang that is
not included in this patch.  This consists of changes to the display
device for making it 'separable'.  This change is needed for Igor's
linear shading work.
http://www.ghostscript.com/pipermail/gs-code-review/2004-May/004500.html

[src/gdevcdj.c 1.14, src/gdevcljc.c 1.7, src/gdevcmap.c 1.6, src/gdevdevn.c 1.17, src/gdevdevn.h 1.5, src/gdevdflt.c 1.23, src/gdevdsp.c 1.21, src/gdevmem.c 1.8, src/gdevp14.c 1.23, src/gdevp2up.c 1.6, src/gdevpbm.c 1.11, src/gdevpcx.c 1.7, src/gdevplnx.c 1.9, src/gdevpnga.c 1.9, src/gdevprn.c 1.15, src/gdevpsd.c 1.11, src/gdevrops.c 1.11, src/gdevupd.c 1.15, src/gdevxalt.c 1.11, src/gdevxcf.c 1.7, src/gdevxini.c 1.14, src/gsdevice.c 1.21, src/gslib.c 1.13, src/gxcmap.c 1.20, src/gxdevcli.h 1.32, src/gximag3x.c 1.16, src/gximage3.c 1.13, src/gxpcmap.c 1.12, src/zcolor.c 1.18, doc/Language.htm 1.85]

2004-05-25 10:41 Igor Melichev

Fix (pdfwrite) : Form XObject`s /BBox could contain reals in exponential format.

DETAILS :

Bug 687429 Form XObject`s /BBox may contain reals in exponential format.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfm.c 1.37]

2004-05-25 09:20 Igor Melichev

Fix an MSVC compiler warning.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.58]

2004-05-24 23:35 Ralph Giles

Add a missing header include for gsutil.h which provides the prototype  for bytes_compare(). Corrects a gcc warning.

[src/devs.mak 1.111, src/gdevpdte.c 1.57]

2004-05-24 17:56 Dan Coby

Fix for 687453 Problem with overprinting and shading.

DETAILS:

The given test file is a PDF file.  PDF allows for separate overprint
parameters for stroke and fill operations.  (There are also separate
parameters for other conditions in PDF.)  Usually this is handled by
the PDF interpreter by calling either setfillstate or setstrokestate
at the start of the handler for each operator.  However this call
was missing from the sh (shfill) handler.

[lib/pdf_draw.ps 1.81]

2004-05-24 12:21 Alex Cherepanov

Add /WhiteIsOpaque page device parameter to provide user interface to the
corresponding bbox device flag. Fix a bug introduced in gdevbbox.c v.1.9
(for bug 645531) that left bdev->white and bdev->black uninitialized,
resulting in black objects skipped as white.
Fix bugs 687410, 687478

[src/gdevbbox.c 1.17, doc/Devices.htm 1.74]

2004-05-20 17:06 Igor Melichev

Fix (pdfwrite) : Add Encoding element even if the font has no glyph.

DETAILS :

Debugged with the test file of the bug 687464
"Problem converting from PS to PDF. 2 latin characters did not convert properly." :
different PDFs generated with URW fonts and with Soft Horizon fonts
rather none of them were embeded.

The old code did not add a glyph to Encoding if the PS font has no glyph defined.
Due to that, if the source encoding uses an instand glyph,
the instandard glyph was not written to Differences,
causing a standard glyph erroneusely appeared instead the instandard glyph.
With this patch an Encoding element and a ToUnicode element are created in any case :
either the glyph is defined in the PS font, or not.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.56]

2004-05-20 07:41 Ralph Giles

Apply a recursive 'configure' step to the autoconf build to generate
required code for the jasper library.

DETAILS:

The jasper library also ships with an autoconf build framework for POSIX
systems. Unfortunately, it relies on this framework to generate a header
file with defines describing the local system. This header, located in
jasper/src/libjasper/include/jas_config.h can be generated by hand from
the jas_config.h.in template, but it must be available when we're directly
compiling the source as part of Ghostscript.

We could attempt to construct one of our own, but within the confines
of an autoconf build, using jasper's native configure is more robust.
We could also go ahead and use recursive make to build the library
natively, but we would need a static makefile for non-autoconf builds.

Jasper provides an alternate header, jas_config2.h for use with MSVC.

[src/configure.ac 1.46]

2004-05-20 07:34 Ralph Giles

Add the jasper include path when compiling the JPXDecode filter so the
headers can be found if they're not already installed on the system.
Required to compile in the jasper library source from a fresh distribution
of the third-party library.

[src/int.mak 1.126, src/lib.mak 1.182]

2004-05-19 11:09 Igor Melichev

Documenting the new implementation of shadings.

[doc/News.htm 1.145]

2004-05-18 13:42 Igor Melichev

A new implementation of shadings, step 79.

DETAILS :

Removed unused variables.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.74]

2004-05-18 11:07 Igor Melichev

A new implementation of shadings, step 78.

DETAILS :

Implementing gx_color_map_procs::is_halftoned and use it in shadings
to know whether linear color functions are applicable.

EXPECTED DIFFERENCES :

None.

[src/gdevp14.c 1.22, src/gdevplnx.c 1.8, src/gxcmap.c 1.19, src/gxcmap.h 1.8, src/gxshade6.c 1.73]

2004-05-18 10:36 Igor Melichev

A new implementation of shadings, step 78.

DETAILS :

Implementing gx_color_map_procs::is_halftoned and use it in shadings
to know whether linear color functions are applicable.

EXPECTED DIFFERENCES :

None.

[src/gdevp14.c 1.21]

2004-05-18 09:57 Igor Melichev

Documenting the new implementation of shadings.

[doc/Drivers.htm 1.45]

2004-05-17 17:27 Ralph Giles

Reword the description of the new shading implementation.

[doc/News.htm 1.144]

2004-05-17 12:24 Igor Melichev

A new implementation of shadings, step 77 (release candidate).

DETAILS :

1. A bug in is_quadrangle_color_linear caused an indeterministic choice of subdivision.
2. Provided a better order of filling wedges.
3. Mesh padding now stronger follows the V-boundary of a patch.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"

[src/gxshade6.c 1.72]

2004-05-13 15:24 Alex Cherepanov

Remove unused label.
Partial fix for bug 687441.

[src/gdevwpr2.c 1.16]

2004-05-13 13:03 Igor Melichev

Documenting the new implementation of shadings, step 76.

[doc/News.htm 1.143]

2004-05-13 12:52 Igor Melichev

A new implementation of shadings, step 76.
Switching new radial shadings on.
Radial shadings render in 3...10 times faster.
Radial shadings are not longer restricted with 8bpc.

EXPECTED DIFFERENCES :

"442-01.ps"
"483-01.ps"
"Clarke Tate Manns Chinese.ai"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"

[src/gxshade4.h 1.35]

2004-05-13 12:46 Igor Melichev

A new implementation of shadings, step 75.

DETAILS :

This is a continuation to the previous patch :
  4. Optimized for constant color :
    Fix : pfs->monotonic_color was not properly restored.

EXPECTED DIFFERENCES :

"442-01.ps"
"464-01.ps"
"483-01.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"STEUER-RollingMesh 1(linear).ai"

[src/gxshade6.c 1.71]

2004-05-13 11:40 Igor Melichev

A new implementation of shadings, step 74.

DETAILS :

In the enabled code :

1. Non-linear color quadrangles are subdivided into quadrangles.
   This complies the color approximation with the specified smoothness.
2. Skipped quadrangles and triangles outside the clipping area.
3. Fixed the 'midpoint' formula. It was wrong and coused excessive subdivision.

In the disabled code (NEW_RADIAL_SHADINGS 0 in gxshade4.h) :

1. Debugged Extensions.
2. mesh_padding and wedges with zero length sides were tested.
3. Skipped painting outside the clipping area.
4. Optimized for constant color.

Known problems left :
1. With self-intersecting patches, outer wedges may paint in a wrong order.
This can cause such dropout that a lower part of the patch penetrates
through the upper part in single pixels.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

[src/gxshade1.c 1.31, src/gxshade4.h 1.34, src/gxshade6.c 1.70]

2004-05-12 21:33 Igor Melichev

A new implementation of shadings, step 73.

DETAILS :

The new code is disabled with NEW_RADIAL_SHADINGS in gxshade4.h .

The old implementation of the radial shading extensions appears
incompatible with the tensor representation of the radial shading
due to different spatial subdivision. Collisions at extension
boundaries caused dropouts.

Besides that, the old implementation
can't handle the case in which circles contact each another and one
circle is inside another. Also we suspect that with the old implementation
the trailing extension can overlap the shading when represented as "triangles".

This patch implements extensions with tensor patches.
Rather they have a constant color, we need the wedge logics
to work with them. Also we reworked the analyzis of
special cases of mutual placement of the base circles.

The new code works, but there are known problems :

1. Extensions to be tested systematically.
2. Debug mesh_padding and wedges with zero length sides.
3. Skip painting outside the clipping area.
4. Optimize for constant color.
5. Why "STEUER-RollingMesh 2(radial).ai-.pdf" generates so many triangles ?
6. Outer wedges may break the order of painting.

EXPECTED DIFFERENCES :

None.

[src/gxshade1.c 1.30, src/gxshade4.h 1.33, src/gxshade6.c 1.69]

2004-05-12 20:12 Igor Melichev

A new implementation of shadings, step 72.

DETAILS :

1. Another continuation for the bug in LAZY_WEDGES of the step 65 :
"color was desynchronized with vertices when filling a wedge."
Previous attempts to fix it appear wrong.
This one implements entirely different logics.
The division count is now a property of a division point.

2. Fixed the wrong order of colors in ln 2800 in the function "triangles".

EXPECTED DIFFERENCES :

"442-01.ps"
"483-01.ps"

[src/gxdtfill.h 1.26, src/gxshade4.h 1.32, src/gxshade6.c 1.68]

2004-05-12 18:08 Jack Moffitt

Fix regression reports (the previous commit accidentally did the exact
opposite of what we wanted).  Also, cleaned up the way the report is built
so that it is much less confusing.

[toolbin/tests/run_nightly 1.26]

2004-05-12 15:37 Alex Cherepanov

Avoid a numeric exception; throw /rangecheck when .getbitsrect operator is
invoked with raster width = 0.
Fix bug 687223.

[src/zdevice.c 1.8]

2004-05-12 11:33 Igor Melichev

A new implementation of shadings, step 72.

DETAILS :

1. A continuation for the bug in LAZY_WEDGES of the step 65 :
"color was desynchronized with vertices when filling a wedge." :
open_wedge_median did not set l->from_last_side.

2. A bug : Color linearity check missed the shading function linearity check.
Debugged with "MLC2\PROB322-shadings\Clarke Tate Manns Chinese-1.ai.pdf"
(the big yellow radial gradient) and NEW_RADIAL_SHADINGS 1.

EXPECTED DIFFERENCES :

"442-01.ps"
"464-01.ps"
"483-01.ps"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"STEUER-RollingMesh 1(linear).ai"

[src/gxshade6.c 1.67]

2004-05-12 00:04 Alex Cherepanov

Fix some warnings about unused variables and undeclared functions
generated by MSVC with warning level 3. Move the definition of WARNOPT
and add ifdef's.
Partial fix for bug 687441.

[DETAILS]
Although nmake overrides internal definitions when called from command line,
it doesn't do so when the makefile is invoked from Development Studio.

[src/dwimg.c 1.11, src/dwimg.h 1.8, src/dwmain.c 1.16, src/dwmainc.c 1.18, src/dwtrace.h 1.6, src/gdevm64.c 1.2, src/gdevwdib.c 1.8, src/msvc32.mak 1.56, src/msvccmd.mak 1.19, src/unistd_.h 1.11]

2004-05-11 20:48 Alex Cherepanov

GCC with -ffast-math compiles ang/90. as ang*(1/90.), losing precission.
This doesn't happen when the numeral is replaced with a non-const variable.
So we define the variable to work around the GCC problem.
Fix bug 687420.

[src/gsmisc.c 1.16]

2004-05-11 20:26 Alex Cherepanov

Ignore 0-length tables that occur in PDF files generated by Crystal.
Fix bug 687457.

[lib/gs_ttf.ps 1.38]

2004-05-11 11:13 Igor Melichev

A new implementation of shadings, step 70.

DETAILS :

Fixing a bug in fill_wedge_from_list_rec :
wedge vertices can't identify by their coordinates,
because dividing a short bar could get same coordinates as one of its end.
wedge_vertex_list_elem_t::level now works for the identification.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.31, src/gxshade6.c 1.66]

2004-05-11 10:41 Igor Melichev

A new implementation of shadings, step 69.

DETAILS :

Implementing radial shading with tensor shadings.

The new code is disabled with NEW_RADIAL_SHADINGS in gxshade4.h .
The new code works but it discovered a problem in fill_wedge_from_list_rec :
wedge vertices can't identify by their coordinates.
The problem appears an important bug to be fixed separately.

EXPECTED DIFFERENCES :

None.

[src/gspath.h 1.7, src/gspath1.c 1.9, src/gxshade1.c 1.29, src/gxshade4.h 1.30]

2004-05-06 19:06 Dan Coby

Correct a problem in the fix for 687418 detected by Russell Lang.  Also
make the routine check_device_separable public for use by the display
device.  The prototype is in gxdevice.h.

[src/gdevdflt.c 1.22, src/gxdevice.h 1.17]

2004-05-06 17:19 Dan Coby

Disable the fix for 687418.  This is causing many errors in the regression
tests.  These need to be investigated.

[src/gdevdflt.c 1.21]

2004-05-06 16:26 Jack Moffitt

Repress the full report except on Mondays.

[toolbin/tests/run_nightly 1.25]

2004-05-06 14:01 Igor Melichev

A new implementation of shadings, step 68.
Switching linear color device fucntions on.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"478-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"BEST8-99-Path.fh7.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

[src/gxshade4.h 1.29]

2004-05-06 13:25 Igor Melichev

A new implementation of shadings, step 67.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Provided a consistency of 'unlenear' to 'is_color_linear'

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.65]

2004-05-06 13:03 Igor Melichev

A new implementation of shadings, step 66.

DETAILS :

Improving the recognition of linear devices with a hack for a halftone check.
The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Debugged with pkmraw.
This to be rivised by the color team.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.64]

2004-05-06 12:34 Igor Melichev

A new implementation of shadings, step 65.

DETAILS :

A bug in LAZY_WEDGES :
color was desynchronized with vertices when filling a wedge.

The bug was not detected because
the color difference appears small due to small wedges.
It appears big with USE_LINEAR_COLOR_PROCS 1 with -r300 483-01.ps.

EXPECTED DIFFERENCES :

300dpi :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"
"442-01.ps"

72dpi:

"442-01.ps"
"446-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"

[src/gxshade6.c 1.63, src/gxshade4.h 1.28]

2004-05-06 08:41 Igor Melichev

A new implementation of shadings, step 64.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

Fixing various problems with linear color :
1. Clipping didn't work with linear color.
2. gx_default_fill_linear_color_scanline missed some clipping by X.
3. Zero smoothness caused an infinite recursion.
4. The number of device color components was wrong.

EXPECTED DIFFERENCES :

None.

[src/gdevdsha.c 1.9, src/gxclip.c 1.14, src/gxshade6.c 1.62]

2004-05-06 07:46 Ralph Giles

Limit the number of timing runs we're willing to do to detect the cache
size, preventing an infinite loop if the os timing calls never measure
appreciable elapsed time. After a patch from Patrick TJ McPhee. Bug 687095.

DETAILS:

It looks like there's a bug in some versions of FreeBSD which cause
time_clear() to always return 0, even though the loop is being run.
This is clearly incorrect behaviour of clock() on these systems,
or the user is mistaken in debugging the problem, since we've been
unable to reproduce. But in either case our code is arguably wrong.

The later measurements will obviously not detect a nonlinearity if
the timing loop continues to return 0. However, they will terminate
at MAX_BLOCK (4MB) and so the misdetection isn't egregious. It was
only the estimation of the measurement error that could loop forever.

[src/genarch.c 1.9]

2004-05-06 06:20 Dan Coby

Make check_device_separable private to avoid a warning from gcc.

[src/gdevdflt.c 1.20]

2004-05-06 05:49 Dan Coby

Fix for 687455.  The overprint logic creates a temporary device which is
used to initialize a set of procedures.  This temp device is only paritally
initialized.  The partially initialized device is being set up as a
forwarding device but the target device is not yet present.  This created
a problem when check_device_separable executed.  This change sets the temp
device to 'not separable' so check_device_separable does not try to do
anything.

[src/gsovrc.c 1.5]

2004-05-06 05:19 Igor Melichev

A new implementation of shadings, step 63.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

Fixing various problems with linear color :
1. Applyed compiler independent data types int32_t.
2. Implemented ends_from_fa with X-independent gradients,
   because the decomposiotion by color linearity breaks
   at coordinates which are not trapezoid corners.
   Added a comment to gxdevcli.h to document it.
3. X-gradient denominator was wrong.
4. X-gradient numerator left wrong from the step 58.
5. gx_default_fill_linear_color_scanline ignored the clipping by X.
6. A_fill_region missed the path bbox.
7. Implemented is_color_linear for a proper subdivision by color.
8. decompose_linear_color now applies a linear color
   instead fill_triangle_wedge. See a comment in fill_triangle_wedge.
   Also for mesh_padding.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.24, src/gdevdsha.c 1.8, src/gdevnfwd.c 1.22, src/gxdevcli.h 1.31, src/gxdtfill.h 1.25, src/gxshade1.c 1.28, src/gxshade6.c 1.61]

2004-05-06 05:17 Igor Melichev

Implementing is_monotonic for cubic interpolation functions (continued 2).

DETAILS :

Some monotonic functions were not recognized.
1. Fix : A bug (identifier conflict) in clamp_poles, dimension_monotonity.
2. Fix : Allow the reversed order of boundaries (gsfunc0.c ln 980-983).

EXPECTED DIFFERENCES :

464-01.ps

[src/gsfunc0.c 1.20]

2004-05-05 23:55 Dan Coby

Fix for 687418 WTS does not work with bitcmyk driver.  This fix
is applicable to most devices.

DETAILS:

WTS screening, overprinting, halftoning for more than five colorants
and the fast halftoning logic need to be able to create gx_color_index
values without using the encode_color routine.  This only works if a
device is 'separable'.  However, by default, most devices indicate
'unknown'.  This change implements a heuristic for checking if a
device is separable.  If so then it also determines the various
related parameter values (comp_shift, comp_bits, comp_mask).

[src/gdevdflt.c 1.19]

2004-05-05 22:52 Ralph Giles

Document that we no longer support loading truetype CJK fonts directly from
/Resources/CIDFont as worked in 7.0x for Japanese fonts. This has been replaced
by the more general, if less convenience, cidfmap mechanism. Closes bug 686949.

[doc/Fonts.htm 1.40, doc/Use.htm 1.108]

2004-05-05 09:45 Igor Melichev

A new implementation of shadings, step 62.

DETAILS :

1. Implemented gx_cspace_is_linear_in_line and applied it for
checking the stripe transversal color lnearity.
2. Generalized 'is_halftoned' to 'unlinear'.
3. is_color_span_v_linear must not apply when 'unlinear'.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gscspace.c 1.15, src/gxshade4.h 1.27, src/gxshade6.c 1.60]

2004-05-05 09:02 Igor Melichev

A new implementation of shadings, step 61.

DETAILS :

1. is_color_span_v_linear allows wider stripes.
2. quadrangle_color_change doesn't yield color_change_gradient with USE_LINEAR_COLOR_PROCS.
   Thus it prefers color_change_linear, allowing bigger quadrangles.
Both changes improve the performance.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
In the enabled code removed redundant computations from quadrangle_color_change.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.59]

2004-05-05 09:01 Igor Melichev

Implementing is_monotonic for cubic interpolation functions (continued 1).

DETAILS :

1. Fix : subcurve expression applied wrong signs to t01, t11.
2. Suppress small noize while computing a subcurve.
Both changes recognize more monotonic curves.

EXPECTED DIFFERENCES :

464-01.ps

[src/gsfunc0.c 1.19]

2004-05-05 06:35 Igor Melichev

A new implementation of shadings, step 60.

DETAILS :

Define frac31 with int32_t to minimize compiler dependence.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gxdevcli.h 1.30, src/lib.mak 1.181]

2004-05-04 21:31 Ralph Giles

Replace locally-defined (u)int32 typedefs with the stdint_.h types now
that they're universally available. This avoids conflict with typedefs
that are pulled in from sys/types.h on some systems. Bug 687404.

[src/gdevupd.c 1.14]

2004-05-04 18:14 Igor Melichev

A new implementation of shadings, step 59.

DETAILS :

Moved the device pointer from gs_fill_attributes to a separate argument
in order to simplify the implementation of forwarding devices.
A farwarding device 'clipper' works for almost all shadings.

Also fixed a bug in middle_frac31_color from the previous patch.
It was not detected because normally this function isn't called.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.23, src/gdevdsha.c 1.7, src/gdevnfwd.c 1.21, src/gxdevcli.h 1.29, src/gxdtfill.h 1.24, src/gxshade6.c 1.58]

2004-05-04 17:53 Igor Melichev

A new implementation of shadings, step 58.

DETAILS :

Replaced frac32 with frac31 to represent negative color difference.
We could do with frac32 and with additional arguments about the
ending color, but we don't want the performance flaw.
31 bits should be enough precise.
Also removed hacks about fitting negative differences into int32_t.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.22, src/gdevdsha.c 1.6, src/gdevnfwd.c 1.20, src/gxdevcli.h 1.28, src/gxdtfill.h 1.23, src/gxshade6.c 1.57]

2004-05-02 21:24 Ralph Giles

Add recent new files to the listing in the developer documentation.

[doc/Develop.htm 1.132]

2004-05-02 20:30 Ralph Giles

Add the JPXDecode implementation to the list of files in the documentation.

[doc/Develop.htm 1.131]

2004-05-02 19:37 Ralph Giles

Add a missing file to the testsuite documentation.

[doc/Testing.htm 1.24]

2004-05-02 19:26 Ralph Giles

Return the number of failures on exit so an external program can take action on the results. Previously, our tests always returned 0.
----------------------------------------------------------------------

[toolbin/tests/gstestutils.py 1.12]

2004-05-02 19:23 Ray Johnston

Remove dependency on python2.2. Tested with python 2.3.3. Primary problem
was that calendar module no longer has a localtime member, used time instead.

[toolbin/tests/check_all.py 1.6, toolbin/tests/check_comments.py 1.4, toolbin/tests/check_dirs.py 1.9, toolbin/tests/check_docrefs.py 1.10, toolbin/tests/check_source.py 1.10, toolbin/tests/dump_testdb 1.6, toolbin/tests/get_baselines 1.3, toolbin/tests/gscheck_all.py 1.6, toolbin/tests/gscheck_fuzzypdf.py 1.8, toolbin/tests/gscheck_pdfwrite.py 1.20, toolbin/tests/gscheck_raster.py 1.10, toolbin/tests/make_testdb 1.12, toolbin/tests/make_two_pdfversions 1.8, toolbin/tests/make_two_versions 1.13, toolbin/tests/revert_baseline 1.12, toolbin/tests/revert_pdfbaseline 1.10, toolbin/tests/run_nightly 1.24, toolbin/tests/run_regression 1.13, toolbin/tests/testdiff 1.5, toolbin/tests/update_baseline 1.13, toolbin/tests/update_pdfbaseline 1.9]

2004-05-02 19:00 Ralph Giles

Avoid failing when testing.cfg isn't available. This allows check_all.py to be run on a fresh checkout just by passing --gsroot=. on the commandline. Previously this option could only be used to override a required version in testing.cfg

[toolbin/tests/gstestutils.py 1.11]

2004-04-30 22:31 Ralph Giles

Provide a dummy 'make check' target in the autoconf build. Some users have requested this,
and it's available on the GPL 7.0x releases.

[src/Makefile.in 1.35]

2004-04-29 18:51 Dan Coby

Remove some more compiler warnings.  Found by Igor.  687441.

[src/gdevpsd.c 1.10]

2004-04-29 16:18 Igor Melichev

A new implementation of shadings, step 57.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
1. Likely QUADRANGLES 1 appears unusefil. Documenting that.
2. Implementing mesh_padding with linear color.
3. Minor improvements to conmments.
4. Stronger conditions against color stairs in triangle_by_4, color_change_small.

EXPECTED DIFFERENCES :

None.

[src/gxdevcli.h 1.27, src/gxshade4.h 1.26, src/gxshade6.c 1.56]

2004-04-29 13:47 Igor Melichev

A new implementation of shadings, step 56.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The previous patch appears incomplete. Now fixed.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.25]

2004-04-29 13:40 Igor Melichev

A new implementation of shadings, step 55.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Implemented a check whether the device halftones.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.55]

2004-04-29 12:38 Igor Melichev

A new implementation of shadings, step 54.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

1. Color computations were wrong.
2. clist didn't implement linear color functions.
   This patch stubs them, but fill_linear_color_trapesoid should write
   into clist.
3. The clipping rectangle was missed for shading Type 0, 5.

It still has problems with clipping with 446-01.ps .
Also likely we should replace frac32 with frac31 to provide signed values.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.21, src/gdevdsha.c 1.5, src/gdevnfwd.c 1.19, src/gxclist.c 1.13, src/gxdevcli.h 1.26, src/gxdtfill.h 1.22, src/gxshade1.c 1.27, src/gxshade4.c 1.26]

2004-04-29 06:14 Igor Melichev

A new implementation of shadings, step 53.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
This patch implements wedges with a linear color.
USE_LINEAR_COLOR_PROCS 1 passed a simple test with ppmraw.
Other devices are not yet supported due to problems with
checking for a halftoning.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.20, src/gxdtfill.h 1.21, src/gxshade6.c 1.54]

2004-04-29 04:37 Igor Melichev

A new implementation of shadings, step 52.

DETAILS :

Linear color passed a simple test with ppmraw, except wedges.
The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
This patch fixes numerows errors in the desabled code.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.19, src/gdevdsha.c 1.4, src/gscspace.c 1.14, src/gxdtfill.h 1.20, src/gxshade6.c 1.53, src/lib.mak 1.180]

2004-04-28 16:41 Dan Coby

Fix for 687441 New: MSVC warnings.  Correct some warning messages from
MSVC.

[src/devs.mak 1.110, src/gdevpsd.c 1.9, src/gdevdevn.c 1.16, src/gdevdevn.h 1.4]

2004-04-28 15:24 Igor Melichev

A new implementation of shadings, step 51.

DETAILS :
Colors were wrongly converted to frac32. Should do through device color.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The new code is not debugged yet.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.52]

2004-04-28 09:39 Igor Melichev

A new implementation of shadings, step 50.

DETAILS :

1. gx_default_fill_linear_color_triangle wrongly checked for a large color span.
2. fill_linear_color_* procs were not set for clip devices.
3. cs_is_linear were defined with a wrong argument list.
4. Optimized the prototype of cs_proc_is_linear.
5. Gradient buffers were not allocated in gxdtfill.h .
6. Attaching fill_linear_color_triangle to triangle_by_4 in shadings.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The new code is not debugged yet.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.18, src/gdevrops.c 1.10, src/gscspace.c 1.13, src/gxclip.c 1.13, src/gxclip2.c 1.10, src/gxclipm.c 1.12, src/gxcspace.h 1.12, src/gxdtfill.h 1.19, src/gxshade4.h 1.24, src/gxshade6.c 1.51]

2004-04-28 05:39 Dan Coby

Implement 687423  Implement SeparationOrder for psdcmyk device.

DETAILS:

The following changes are for implementing the SeparationOrder
parameter for the psdcmyk device.

The change consists of the following:

1.  Several routines which were duplicated in the spotcmyk
and psdcmyk devices were restructured to allow the use of
common subroutines.  As part of this effort the various
common DeviceN related parameters were separated into a
substructure (call devn_params).  This allows the use of
common routines even though the devices do not have the
same overall device description structure.

2.  Changes to the src/gdevpsd.c module for actually collecting
the SeparationOrder parameter data and then using it.  Note:
The treatment of separations is different for the process
color model colorants versus the spot colors.  The colorants for
the process color model do not have their order changed.  The
output file always starts with information for the CMYK channels.
If one of these colorants is not specified in the SeparationOrder,
then the output channel data in the file will simply be 'blank'.
Spot colors follow CMYK data.  They are rearranged.  Only the
spot colors specified are output.

3.  Several checks in src/gdevdflt.c and src/gxcmap.c had to
be removed or modified.  These checks were assuming that a
device with a single component uses a gray process color
model and a device with three components used RGB.

[src/gdevdevn.c 1.15, src/gdevdevn.h 1.3, src/gdevdflt.c 1.18, src/gdevpsd.c 1.8, src/gsdparam.c 1.13]

2004-04-28 04:06 Igor Melichev

A new implementation of shadings, step 49.

DETAILS :

1. gx_default_fill_linear_color_trapezoid wrongly subdivided big areas :
   the edge height was not reduced. It could cause an infinite loop.

2. Removed c_prec, x_prec.

The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.17, src/gxdtfill.h 1.18]

2004-04-28 02:35 Igor Melichev

A new implementation of shadings, step 48a.

DETAILS :

Removing the unused gdevdsha.h .

EXPECTED DIFFERENCES :

None.

[src/gdevdsha.h 1.2]

2004-04-28 02:26 Igor Melichev

A new implementation of shadings, step 48.

DETAILS :

Removing a code of dead development branches.

EXPECTED DIFFERENCES :

None.

[src/gxshade4.h 1.23, src/gxshade6.c 1.50]

2004-04-27 08:26 Igor Melichev

A new implementation of shadings, step 47.

DETAILS :

Implementing gx_default_fill_linear_color_triangle, step 2 :
fixing interface problems.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.16, src/gxdevcli.h 1.25]

2004-04-27 08:12 Igor Melichev

A new implementation of shadings, step 46.

DETAILS :

Implementing gx_default_fill_linear_color_triangle.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.15, src/gxdevcli.h 1.24]

2004-04-27 06:04 Ralph Giles

Add makefile support for compiling in the jasper JPEG 2000 library,
needed to support the JPXDecode filter in PDF 1.5. Currently only
enabled in the autoconf build, but porting the changes to other top-level
makefiles should now work.

[src/Makefile.in 1.34, src/configure.ac 1.45, src/gs.mak 1.26, src/jasper.mak 1.1, src/lib.mak 1.179]

2004-04-27 06:01 Ralph Giles

Correct two typos in the jasper local source directory detection. It was
erroneously resetting the jbig2dec local source directory and not reporting
the found location correctly.

[src/configure.ac 1.44]

2004-04-27 05:43 Igor Melichev

A new implementation of shadings, step 45.

DETAILS :

Implementing a linear color for filling a trapezoid.
This patch provides necessary data exchange.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.

[src/gdevddrw.c 1.14, src/gdevdsha.c 1.3, src/gdevnfwd.c 1.18, src/gxdevcli.h 1.23, src/gxdtfill.h 1.17, src/lib.mak 1.178]

2004-04-23 12:30 Alex Cherepanov

Keep calculation in signed types to avoid conversion of the negative
int to the big positive long, which caused infinite loop on Alpha in
t1_hinter__adjust_matrix_precision() inline function.
Fix bug 687417.

[src/gxhintn.c 1.48]

2004-04-22 06:38 Ralph Giles

Document the use of .setpdfwrite and the relation of vmthreshold to the
accumulation of shared object data in the pdfwrite device. Closes bug
687409.

[doc/Language.htm 1.84, doc/Ps2pdf.htm 1.67, doc/Use.htm 1.107]

2004-04-17 18:30 Igor Melichev

A new implementation of shadings, step 44.

DETAILS :

The function fill_pixel appears unuseful.
Now it is replaced with fill_linear_color_scanline.
This patch also defines a default implementation.

EXPECTED DIFFERENCES :

None.

[src/gdevdflt.c 1.17, src/gdevdsha.c 1.2, src/gdevnfwd.c 1.17, src/gxdevcli.h 1.22, src/gxdevice.h 1.16, src/lib.mak 1.177]

2004-04-15 22:50 Igor Melichev

Implementing color mapping linearity checks, step 2.

DETAILS :

Fix the color index decomposition in gx_cspace_is_linear_in_triangle.

EXPECTED DIFFERENCES :

None.

[src/gscspace.c 1.12]

2004-04-15 17:26 Ray Johnston

Fix to make sure that both stroke (CA) and non-stroke (ca) opacity is set.
Support for customer #32 that wants to create transparent effects in PDF
from PostScript input.

DETAILS:

Previously the opacity was set for one or the other (whichever was first)
and only updated when the value changed. Since the 'state' only retained
a single value, the following PS snippet would not set the CA value as it
should to 0.5. Since we never use the 'b/B' fill + stroke painting methods
(our graphics library currently has no device function for this), a PDF
that contains a 'b' method will be decomposed into a 'f' followed by 's'
operation, setting the opacity from the PDF interpreter's retained ca/CA
between the operations.

PostScript snippet to test this:

<< /CompatibilityLevel 1.4 >> setpagedevice
	% work around rectfill mapping directly to device fill_rectangle
/rectfill { gsave 4 2 roll moveto 1 index 0 rlineto
  0 exch rlineto neg 0 rlineto closepath fill grestore
} bind def
	% Do some background -- not transparent painting mode
0 0 0 setrgbcolor 0 0 600 700 rectfill
.7 .7 .7 setrgbcolor 200 0 400 700 rectfill
1 1 1 setrgbcolor 400 0 200 700 rectfill
	% Go to a transparent painting mode
/Normal .setblendmode .5 .setshapealpha
	% paint some shapes transparently
.9 .8 .1 setrgbcolor 100 100 450 450 rectfill
	% The next stroke is non-transparent w/o the patch
.2 .2 .9 setrgbcolor 50 setlinewidth 50 700 moveto 450 -650 rlineto stroke
.7 .setshapealpha
.9 .3 .3 setrgbcolor 50 setlinewidth 50 50 moveto 450 650 rlineto stroke
showpage quit

[src/gdevpdfg.c 1.49]

2004-04-15 16:47 Ray Johnston

Correction to previous commit that caused Subtype value to be consumed
if it was not a null name. Valid files would fail.

[lib/pdf_font.ps 1.65]

2004-04-14 00:02 Dan Coby

Fix 687189 for bbox_forward_add_rect infinite recursion.
This problem caused segment faults or apparent hangs with
the x11alpha device.  This fix also works for 656414
segfault when using x11alpha

DETAILS:

The problem was due to the bounding box device creating
more and more bounding box devices in the device chain
when the overprint compositor was being used.  The x11alpha
device uses the bounding box device.  The overprint logic
uses the 'create compositor' logic when a change is made
in the status of the overprint or overprint mode parameters.
However a new compositor is not created each time.  Instead
the overprint device simply updates its parameters.  The
bounding box device has its own create compositor.  This
routine would call its target device's create compositor
routine and then wraps a new bounding box device around the
target's compositor.  The combination of many create
compositor calls from the overprint logic and the fact that
the bounding box device adds a new bounding box device
could result in hundreds of bounding devices in the chain.

The fix consists of checking if the bounding box's target
device actually created a new compositor device.  Only when
a new compositor was added is a new bounding box also added
to the chain.

[src/gdevbbox.c 1.16]

2004-04-13 23:25 Dan Coby

Fix for 687402 Missing color on annots.pdf.  This is actually
not an error.  Instead it is due to some confusion about the
displaying of link annotations.

DETAILS:

To prevent confusion, the following two paragraphs of explanation
were added to the first page of the examples/annots.pdf example file.

"IMPORTANT NOTE ABOUT THIS PAGE: This page was created for the testing
 the display of link annotation parameters. The file was created using
 Adobe Acrobat 5.0 (and modified using Acrobat 6.0). The displaying of
 each annotation is specified in the annotation. By default, Acrobat sets
 link annotations so that they are normally displayed by 'viewer'
 applications. They are not normally displayed in printed output. That is
 the case with these annotations.

 Ghostscript checks the display specifications for each annotation. By
 default, Ghostscript assumes that the output is 'printed' if the
 'OutputFile' parameter is defined. Adding '-dPrinted=false' to the command
 line will force Ghostscript to display 'viewer' annotations in all output.
 Adding '-dPrinted=true' will disable the displaying of these annotations."

[examples/annots.pdf 1.2]

2004-04-13 16:32 Ray Johnston

Handle (yet another) invalid PDF that Adobe Acrobat can open. If the
Font /Subtype is / then assume Type1. Also issue a **** WARNING message.
Bug #687422 for Artifex customer #670.

DETAILS:

This is a simple patch, with known limitations if the actual font type
cannot be handled by the buildType1 procedure. Only Type1 and MMfonts
will work correctly. Since the PDF is invalid, we will leave more vigorous
handling until another different PDF file surfaces.

[lib/pdf_font.ps 1.64]

2004-04-10 17:14 Alex Cherepanov

Use ld_length instead of length because RMap is a long dictionary.
Fix bug 687363.

[toolbin/pdfinflt.ps 1.5]

2004-04-09 06:20 Igor Melichev

A new implementation of shadings, step 44.

DETAILS :

Propagate return codes frpom patch_color_to_device_color.

EXPECTED DIFFERENCES :

None.

[src/gxshade6.c 1.49]

2004-04-08 16:18 Ralph Giles

Correct DOS line endings accidentally committed to the repository.
Bug 687415.

[lib/dumphint.ps 1.2, src/dwdll.c 1.7, src/dwimg.c 1.10, src/dwnodll.c 1.6, src/errors.h 1.10, src/gp_dosfs.c 1.17, src/gp_vms.c 1.38, src/gscolor.c 1.13, src/gscolor1.c 1.10, src/math_.h 1.7, src/windows_.h 1.6, src/zfont42.c 1.19, toolbin/tests/fuzzy.c 1.14]

2004-04-08 07:59 Igor Melichev

Implementing color mapping linearity checks, step 1.

DETAILS :

Color mapping linearity check rutines will be used to improve
the performance and quality of shadings. They check
whether a color mapping is quazi-linear within a subdomain.
The subdomain is specified as a convex hull of a set of colors.

This patch defines prototypes and the default implemetation.
They are not called and not debugged.
The purpose of this commit is a codebase synchronization before a project switch.

EXPECTED DIFFERENCES :

None.

[src/gscdevn.c 1.16, src/gscolor2.c 1.20, src/gscpixel.c 1.11, src/gscscie.c 1.11, src/gscsepr.c 1.23, src/gscspace.c 1.11, src/gsicc.c 1.13, src/gspcolor.c 1.13, src/gxcspace.h 1.11]

2004-04-07 15:10 Raph Levien

Fix: Disables platfonts when antialiasing is in effect. Improves rendering
quality, and fixes bug 687368.

[src/gxchar.c 1.42]

2004-04-02 14:21 Igor Melichev

Fix (pdfwrite) : /XObject <<-1 0 R>> was written to a pattern dictionary.

DETAILS :

Bug 687396 "PDF Conversion of PS doc fails with large image"
happened to a delayed object ID assignment.
Delay adding the resource until an ID is assigned.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfj.c 1.30]

2004-04-02 07:06 Igor Melichev

Fix : Restoring the non-cache-device constraint in setcolor.

DETAILS :

It was removed by a recent patch, but PLRM3 page 215 requires it.

EXPECTED DIFFERENCES :

None.

[src/gscolor2.c 1.19]

2004-04-02 02:19 Ray Johnston

Dump output from 'attrib -H dosdefault' to the bit bucket (nul:) to
eliminate a potentially confusing warning.

[src/msvccmd.mak 1.18]

2004-04-01 20:39 Igor Melichev

Fix (Type 1 hinter) : Skip empty hint ranges, improved.

DETAILS :

The previous patch caused a regression with 86554321.pdf .
This one fixes that.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.47]

2004-04-01 19:58 Igor Melichev

Fix (Type 1 hinter) : Skip empty hint ranges.

DETAILS :

Bug 687393 "Hang with 8.14 from command line".
The test document embeds a font with a hint mask,
which defines a stem range with 'closepath' only.
t1_hinter__skip_stem couldn't handle this case,
because we exclude 'closepath' from the pole list.
We believe that the font is buggy, but provide a tolerance.

EXPECTED DIFFERENCES :

None.

[src/gxhintn.c 1.46]

2004-04-01 13:35 Igor Melichev

Fix : Cygwin/gcc compiler warnings.

DETAILS :

./src/gstext.c:83: warning: suggest explicit braces to avoid ambiguous `else'

EXPECTED DIFFERENCES :

None.

[src/gstext.c 1.17]

2004-04-01 13:23 Igor Melichev

Fix : MSVC6 compiler warnings.

DETAILS :

An "initialized data" warning appeared when MSVC6 performs a release build
with inline optimizations on (The inline optimization inlines small function bodies,
being not marked with the inline keyword).

1. The "uninitialized data" warning in alloc_name_index_is_since_save
in isave.c was a real bug with an indeterministic behavior :
nref.tas.rsize was accessed by names_index_inline from names_string_inline
from alloc_name_is_since_save from alloc_name_index_is_since_save
with no advance initialization.
This bug was not detected because this function is only
invoked when a 'save' unwinds glyph names added to an incremental font,
but doesn't unwind the font - we have no such examples.
IMO existing PS drivers never cvreate such documents.

2. The "uninitialized data" warning in cos_array_add_object appears due to
cos_copy_element_value copies entire 'value' when another variant of an union
has a bigger size and was uninitialized.
The copying of the uninitialized data looks not harmful due to the 'int' type,
but generally it could cause an interrupt on platforms with a tagged memory.
We prefer to suppress the warning with an unuseful initialization,
because the processor time consumption is pretty small and happens not frequently.

EXPECTED DIFFERENCES :

None.

[src/gdevpdfo.c 1.29, src/isave.c 1.10]

2004-04-01 11:43 Igor Melichev

A new implementation of shadings, step 43.

DETAILS :

Defining new device virtual functions for filling with a linear color.
This only defines but never uses them.

EXPECTED DIFFERENCES :

None.

[src/gdevdflt.c 1.16, src/gdevdsha.c 1.1, src/gdevdsha.h 1.1, src/gdevnfwd.c 1.16, src/gxdevcli.h 1.21, src/gxdevice.h 1.15, src/lib.mak 1.176]

2004-04-01 11:30 Igor Melichev

Fix : setcachedevice must not depend on a BuildChar color and on gx_show_text_retry.

DETAILS :

1. The bug 687391 "assert src/gxccman.c:557 again" happened
   because BuildChar changed the current color before
   setcachedevice calls compute_glyph_raster_params,
   and the raster params computed differently than
   during the advance glyph raster cache lookup.

2. Removed
     if (pgs->in_cachedevice)
 	return_error(gs_error_undefined);
   from gs_setcolor,
   because I can't guess it's reason/purpose.
   It looks as a rudiment from a pre-repository versions.

3. The assertion also failed with
   "-dTextAlphaBits=4 -dLastPage=1 comparefiles\xgfddg.pdf".
   In gx_add_cached_char added the case "cc->pair == NULL" :
	    /* gx_show_text_retry could reset it when bbox_draw
	       discovered an insufficient FontBBox and enlarged it.
	       Glyph raster params could change then. */

4. gx_show_text_retry must reset penum->pair due to possible FontBBox change,
   see (3).

5. The cc_set_pair macro to be applied for changing cc->pair
   to provide consistent data for font_dir_reloc_ptrs.

EXPECTED DIFFERENCES :

None with regular regression test.

Normal with -r72 -dTextAlphaBits=4 -dAlignToPixels=0 :

"213-01.ps"
"214-01.ps"
"244-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"258-01.ps"
"270-01.ps"

Normal with -r300 -dTextAlphaBits=4 -dAlignToPixels=0 :

"245-07.ps"
"270-01.ps"

-dTextAlphaBits=2 : not tested.
-dAlignToPixels=1 : not tested.

[src/gscolor2.c 1.18, src/gxccache.c 1.30, src/gxccman.c 1.25, src/gxchar.c 1.41, src/gxtext.h 1.15]

2004-04-01 06:46 Ray Johnston

Fix for premature freeing of a 'image' device (makeimagedevice or the
similar makewordimagedevice). Bug #687227. Thanks to Alex Cherepanov for
the patch.

[src/gsdevmem.c 1.6]

2004-04-01 06:14 Ray Johnston

Fix for inherited MediaBox for the page Group dictionary (transparency).
Bug #687293. Thanks to Felix Pahl for the analysis and fix.

[lib/pdf_main.ps 1.86]

2004-04-01 04:51 Dan Coby

Fix for 687390 GhostScript 8.11 inserts rendering artifacts
with GIFs as source.  The actual problem is an error which
resulted in a pale yellow being shown as a pale pink.  This
occurs when dithering on devices which use a 256 color palette.

DETAILS

The halftoning logic assumes that there are the same number
of shades of each color.  However the 256 color palette
devices were using a 7x7x5 color cube.  I.e. there were 7
shades of red and green, however there were only 5 shades of
blue.  The data in the device's color_info (max_color, max_gray,
dither_colors, and dither_grays) indicated that there were
7 shades.  The halftoning logic, using this information, was
attempting to display the given pale yellow color by dithering
between 6/7ths and 7/7ths of each component.  However the
encode_color routine returned colors which include solid blue
for all cases.  This biased the resulting halftoned color
toward blue.

The fix involves changing the 256 color palette devices to
use a 6x6x6 color cube.  The same routine pc_8bit_map_rgb_color
is used for all of the 256 color palette devices.  Thus the
change consists of modifying this routine and the associated
pc_8bit_map_color_rgb routine.  The specification of each of
the devices has to be changed to represent the change in the
cube size.

[src/gdevbmp.c 1.9, src/gdevcgm.c 1.10, src/gdevp2up.c 1.5, src/gdevpccm.c 1.6, src/gdevpccm.h 1.7, src/gdevpcx.c 1.6, src/gdevpng.c 1.10, src/gdevsvga.c 1.6]

2004-03-25 17:35 Igor Melichev

Fix (PDF interpreter) : Stack balance was broken when a CID font is not embedded.

DETAILS :

It was broken since pdf_font.ps rev.1.59.
Bug 687384 "/invalid font in -dict-".

EXPECTED DIFFERENCES :

None.

[lib/pdf_font.ps 1.63]

2004-03-25 14:46 Igor Melichev

Fix (Type 1 hinter) : Use a weaker condition for horizontal stem recognition.

DETAILS :

Alignment zones were not applied due to a quazy horizontal segment
was not considered as a hiorizontal one. We think that the font
has an inaccurate glyph design, but we provide more tolerance.
Likely Adobe does the same.

Bug 687385 "fonts different heights with 75 dpi".

EXPECTED DIFFERENCES :

72 dpi :

251-01.ps
289-01.ps
455690.pdf
86554321.pdf
alphabet.ps
dave.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
prob.pdf"
RealCities.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf

300 dpi :

033-52-5873.pdf
289-01.ps
455690.pdf
86554321.pdf
alphabet.ps
bulletin.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
pdfopt_bug.pdf
prob.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf

[src/gxhintn.c 1.45]

2004-03-24 23:46 Ralph Giles

Remove an empty '#' line. Closes bug 687377.

[src/stdint_.h 1.3]

2004-03-24 08:56 Ray Johnston

Fix for unnecessary re-link when building on Windows. Bug #687059.

DETAILS:

Since 'dosdefault' was not being made, make always did the link. Create
a dummy "result" being a file named dosdefault and make works as Igor
wants.

[src/msvccmd.mak 1.17]

2004-03-24 07:30 Igor Melichev

Fix (pdfwrite) : TK was written into a charproc.

DETAILS :

Bug 687382 "fonts not printed with pdf 1.4".

EXPECTED DIFFERENCES :

None.
Ghostscript PDF interpreter appears insensible to it. Adobe does.

[src/gdevpdfg.c 1.48]

2004-03-24 07:29 Ralph Giles

Make use of the SYS_TYPES_HAS_STDINT_TYPES define we set in the configure script. After a patch
from Alex Cherepanov. Bug 687377.

Also, adopt elif, since we've been using it elsewhere to no ill effect.

[src/stdint_.h 1.2]

2004-03-24 06:38 Ray Johnston

Fix for incorrect Annotation scaling when an Appearance (/AP) had
scaling that was not unity (1) and the Subtype was not /Stamp.
Fixes Bug #687288 for customer #32.

DETAILS:

The scaling difference in the annotation (object 14 0) was due to
Ghostscript not recognizing the bsiTextStamp annotation Subtype.

Careful reading of the Adobe PDF specification says that if there
is an Appearace stream (/AP dict), then the Form XObject should be
scaled using the method that we perviously only used for /Stamp
Subtype annotations (calcstampscale). The section of the PDF 1.5
Reference Manual is 8.4.4.

The patch is fairly simple, but testing of the regression suite
showed one file, foo.pdf, that was missing the require /Rect entry
in the Annot dict. The patch includes a check and warning for this
problem.

EXPECTED DIFFERENCES:

With this patch, some of the regression files will have slightly
different scaling for some of the annotations, but the differences
are all too small to compare to Adobe. The largest variations are
seen with annots.pdf (our test file) where the scaling ranges from
a low of 0.979191 to a high of 1.01636. The files are:

filename                        scaling range (was 1)
01_001.PDF                      1.0
SyscoCorrugatedprintcard.pdf    1.0 .. 1.00268
annots.pdf                      0.979191 .. 1.01636
rf1025.PDF                      0.998471

IMO, these are all close enough to be considered progressions.

[lib/pdf_draw.ps 1.80]

2004-03-24 06:20 Ralph Giles

Adobe no longer provides a public link to DistillerParameters.pdf. Link to a hopefully somewhat
stable directory from which the inspired user can register and download the documentation.

[doc/Ps2pdf.htm 1.66]

2004-03-24 06:12 Dan Coby

Fix for 687364 rangecheck in buildshading2 from Quark XPress PS file.
This fix involves the creation of the findcmykcustomcolor and
setcustomcolor functions.

DETAILS:

Ray found that the error message was due to an invalid shading
dictionary being given to shfill.  The dictionary has a function
which has a single input and a single output.  The numbers are
determined from the sizes of the Domain and Range arrays.  Since
the shading dictionary is using a DeviceCMYK color space, Ghostscript
is generating a rangecheck since the function does not have four
outputs.

The file is generating an invalid shading dictionary.  Specifically
it generates:

sh:  << /Coords [0 0 0 1] /ColorSpace [/DeviceCMYK] /Function <<
/BitsPerSample 8 /Ra
nge [0 1] /FunctionType 0 /Domain [0 1] /DataSource
(\200\200\200\201\201\202\202\203
\203\204\204\205\205\206\206\207\207\210\210\211\211\212\212\213\213\214\214
\215\215\
216\216\217\217\220\220\221\221\222\222\223\223\224\224\225\225\226\226\227\
227\230\2
30\231\231\232\232\233\233\234\234\235\235\236\236\237\237\240\240\241\241\2
42\242\24
3\243\244\244\245\245\246\246\247\247\250\250\251\251\252\252\253\253\254\25
4\255\255
\256\256\257\257\260\260\261\261\262\262\263\263\264\264\265\265\266\266\267
\267\270\
270\271\271\272\272\273\273\274\274\275\275\276\276\277\277\300\300\301\301\
302\302\3
03\303\304\304\305\305\306\306\307\307\310\310\311\311\312\312\313\313\314\3
14\315\31
5\316\316\317\317\320\320\321\321\322\322\323\323\324\324\325\325\326\326\32
7\327\330
\330\331\331\332\332\333\333\334\334\335\335\336\336\337\337\340\340\341\341
\342\342\
343\343\344\344\345\345\346\346\347\347\350\350\351\351\352\352\353\353\354\
354\355\3
55\356\356\357\357\360\360\361\361\362\362\363\363\364\364\365\365\366\366\3
67\367\37
0\370\371\371\372\372\373\373\374\374\375\375\376\376\377) /Order 1 /Size
[256] >> /S
hadingType 2 >>

The file was sent into Adobe Distiller 6.0.  Inside the resulting
PDF file there is a very different shading dictionary:  Specifically:

/sh: << /ColorSpace [/Separation /MEZZO__1 /DeviceCMYK -array-] /Coords [0 0
0 1] /Function << /Decode [0 1] /FilePosition 460412 /Range [0 1] /Filter
/FlateDecode /BitsPerSample 8 /Encode [0 255] /Length 255 /FunctionType 0
/File -file- /Domain [0 1] /DataSource
(\200\200\200\201\201\202\202\203\203\204\204\205\205\206\206\207\207\210\21
0\211\211\212\212\213\213\214\214\215\215\216\216\217\217\220\220\221\221\22
2\222\223\223\224\224\225\225\226\226\227\227\230\230\231\231\232\232\233\23
3\234\234\235\235\236\236\237\237\240\240\241\241\242\242\243\243\244\244\24
5\245\246\246\247\247\250\250\251\251\252\252\253\253\254\254\255\255\256\25
6\257\257\260\260\261\261\262\262\263\263\264\264\265\265\266\266\267\267\27
0\270\271\271\272\272\273\273\274\274\275\275\276\276\277\277\300\300\301\30
1\302\302\303\303\304\304\305\305\306\306\307\307\310\310\311\311\312\312\31
3\313\314\314\315\315\316\316\317\317\320\320\321\321\322\322\323\323\324\32
4\325\325\326\326\327\327\330\330\331\331\332\332\333\333\334\334\335\335\33
6\336\337\337\340\340\341\341\342\342\343\343\344\344\345\345\346\346\347\34
7\350\350\351\351\352\352\353\353\354\354\355\355\356\356\357\357\360\360\36
1\361\362\362\363\363\364\364\365\365\366\366\367\367\370\370\371\371\372\37
2\373\373\374\374\375\375\376\376\377) /Size [256] >> /ShadingType 2 >>

This dictionary has a Separation color space.  The given function
is a reasonable function to use with the Separation color space.
As Ray mentioned, it is not correct for a DeviceCMYK color space.

The file is generating a different dictionary for the two interpreters.
In the case of Ghostscript, the dictionary is invalid,

Backtracking through the various procsets inside of the given file
shows that is a mess of function definitions, followed by replacement
of the functions with new definitions.  Some of it may be Quarks.
Some of it is labeled:

%%BeginResource: file Jaws_custom_colour_blend_level3_emulation 2.1 0

The results of the search are:

1.  Ghostscript does not define 'setcustomcolor' but Adobe Distiller
6.0 does define it.

2.  The procsets in the file do provide a definition for
setcustomcolor.  Actually the file provides about 16 versions of
setcustomcolor.  However the versions provided in the file do
not work.

The PLRM does not mention setcustomcolor.  However it is
described in Adobe's "Technical Note #5044 Color Separation
Conventions for PostScript Language Programs".  TN 5044 says:

"The following "operators" are not defined in the PostScript
Language Reference Manual, but should be used as pseudo-operators
in your PostScript language output. Separation applications from
Adobe Systems and other vendors will redefine these convention
operators to separate your documents.  Your application should
conditionally define procedures with these special names, as shown
later in this document."

The fix to the problem is to provide the functions:
findcmykcustomcolor and setcustomcolor.  These are placed at the
end of the lib/gs_lev2.ps.  They are placed there because the
implementation requires Separation color spaces which is a level
2 feature.

[lib/gs_lev2.ps 1.31]

2004-03-23 12:30 Igor Melichev

Fix : GenericResourceDir was not listed in PermitFileReading.

DETAILS :

Problems happened when gs/lib is specified with -I, and gs/Resource is not.
Bug 687381 "pdfwrite can't start with -dSAFER -Id:/path/lib".

EXPECTED DIFFERENCES :

None.

[lib/gs_init.ps 1.106]

2004-03-23 06:59 Ralph Giles

Correct a number of warnings.

DETAILS:

Apply const appropriately so gcc doesn't warn about assignment of string
literals.

Remove an inappropriate const in a function argument.

ifdef out the debug printout function since it's not called without
JPX_DEBUG.

[src/sjpx.c 1.8]

2004-03-22 01:23 Ralph Giles

SunOS 5.9 does not properly replace files with ln -sf. Unlink the
existing files instead. Closes bug 687378.

[autogen.sh 1.4]

2004-03-21 22:35 Ray Johnston

Fix for a long standing problem that could cause characters to be dropped
when reading a file with the 'read' operator. Bug #687374 for customer #310.

DETAILS:

This was caused by the zread function reading the character (sgetc)
prior to invoking the 'push' macro which could return with
e_stackoverflow (discarding the character). The stackoverflow can
happen more frequently than at MaxOpStack level since the stack
is allocated as blocks, using the e_stackoverflow to signal the
need to add more stack blocks, then retrying the operation.
Fix for characters dropped from a file when using the 'read' operator.
Bug #687374 for customer #310.

DETAILS:

This was caused by the zread function reading the character (sgetc)
prior to invoking the 'push' macro which could return with
e_stackoverflow (discarding the character). The stackoverflow can
happen more frequently than at MaxOpStack level since the stack
is allocated as blocks, using the e_stackoverflow to signal the
need to add more stack blocks, then retrying the operation.

[src/zfileio.c 1.16]

2004-03-19 10:08 Igor Melichev

Fix (TT interpreter) : Subglyphs could be placed to wrong coordinates.

DETAILS :

1. When a subglyph position is specified with a reference to an outline point,
the index of the point was interpreted wrongly and could use an
undefined data with an indeterministic result.

Bug 687366 "Font missing umlaut".

2. Shifting a subglyph, matrices like [xx 0 0 1 0 0] were misinterpreted as identity.

EXPECTED DIFFERENCES :

Testform.v1.0.2.pdf - a progression with umlaut over 'u' in the word 
"Drummer".

[src/ttfmain.c 1.27]

2004-03-19 09:52 Igor Melichev

Fix (pdfwrite) : Zero text length caused an access to an uninitialized data.

DETAILS :

Detected by Dan with MSVC .NET 2003.
Rather the result did not depend on the data,
the access could cause a floating point interrupt.

EXPECTED DIFFERENCES :

None.

[src/gdevpdte.c 1.55]

2004-03-19 08:30 Ray Johnston

Fix to implement PDF specification for '/' as a valid name as opposed to
the PS token scanning. Previously //name would be incorrectly scanned as
an immediately evaluated name rather than two names '/' and '/name' which
is correct. Fixes Bug #687277 for customer #440.

DETAILS:

Care is taken to reset the scanner behaviour after a PDF file is finished
and also after an invalid number is scanned. Note that to reset the flag,
the parameter must be set to 'null', not 'false' due to the implementation
in the ztoken.c. Caveat impelementor.

Previously the PDFScanRules was set when an invalid number was found and
was never reset, so this may result is *LOTS* of pdfformaterror messages
for files that have lots of invalid format numbers, but that's what they
get. If this is ever a problem, reseting the PDFScanInvNum can be moved
to pdf_main.ps where PDFScanRules is set to null.

No expected differences.

[lib/pdf_base.ps 1.42, lib/pdf_main.ps 1.85, src/iscan.c 1.17, src/iscan.h 1.9, src/iscannum.c 1.8, src/ztoken.c 1.13]

2004-03-19 05:37 Ralph Giles

Rename the DEBUG_JPX symbol to JPX_DEBUG to match the others we've
defined for the JPXDecode source.

[src/sjpx.c 1.7]

2004-03-19 05:36 Ralph Giles

Correct our YCrCb to RGB conversion code. Subtract the proper bias to
center the chromaticity channels around zero if they are returned
unsigned. Move the clamp routines to after the conversion to RGB where
it does some good. Thanks to Raph Levien for his help with this code.

We now use our conversion code by default, since there are some problems
with the jasper library's conversion on big-endian platforms. The jasper
conversion can be reenabled by defining JPX_USE_JASPER_CM in the
preprocessor.

[src/sjpx.c 1.6]

2004-03-18 17:56 Ray Johnston

Fix name of file in raster directory so that update_pdfbaseline will be
run when needed (when new files are added).

[toolbin/tests/gscheck_pdfwrite.py 1.19]

2004-03-18 16:59 Igor Melichev

A new implementation of shadings, step 43.

DETAILS :

1. An optimization :

If an area has a monotonic color,
each subarea has a monotonic color as well,
so the color monotonity doesn't need to recompute.
Doing so because the color monotonity function is not fast
when appied to a ShadingType 1 with a bicubic color interpolation.

2. Bug: is_color_monotonic returned 'true' when the intrval
has zero width by the 1st coordinate.
This is wrong for with ShadingType 1, which uses a 2-argument function.
( The check was a rudiment from a 1 month old implementation of fn_Sd_is_monotonic,
  which returned 'false' when the low boundary is at the end of some cell,
  and the upper boundary is at the beginning of the next cell.
  Actually this case is a zero width interval and the function must return true.
)

EXPECTED DIFFERENCES :

A minor difference in colors :

442-01.ps
464-01.ps
Clarke Tate Manns Chinese.ai
STEUER-RollingMesh 1(linear).ai

[src/gxshade4.h 1.22, src/gxshade6.c 1.48]

2004-03-18 12:33 Igor Melichev

Implementing is_monotonic for cubic interpolation functions.

DETAILS :

The old code ignores extremes of a cubic interpolation function
(except ones at a cell bound