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.70 (2009-07-31)

This is the first release in a new stable series of Ghostscript releases. The GhostPDL release number has been set to 8.70 as well, to make it easier to identify corresponding releases.

This release fixes a large number of issues with transparency, especially as it interacts with color space conversion, mask contexts and patterns. There have also been a number of significant fixes to font handling, especially when generating PDF. And there are numerous robustness, correctness and performance improvements.

New generic Esc/Page devices, eplmono and eplcolor were added to the contrib directory. A new cdnj500 device was added to support the HP DesignJet 500.

The licensing of the Free version of the core Ghostscript code has been changed to GPLv3 or later. Previously, the core code was GPLv2 only. Ghostscript can now be used with GPLv3 applications, and can no longer be used with applications that are GPLv2-only.

This release also includes security fixes addressing CVE-2009-0583 and CVE-2009-0792.

The following bugs were open at the time of release:

226943, 430175, 465936, 493348, 535932, 567421, 578865, 614298, 626295, 686853, 686865, 687084, 687095, 687146, 687193, 687257, 687271, 687280, 687295, 687297, 687327, 687375, 687414, 687475, 687492, 687514, 687520, 687536, 687561, 687593, 687608, 687630, 687650, 687666, 687674, 687677, 687695, 687697, 687702, 687715, 687721, 687728, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687887, 687903, 687904, 687915, 687931, 687950, 687981, 687983, 688007, 688022, 688024, 688026, 688036, 688042, 688064, 688081, 688130, 688166, 688184, 688187, 688204, 688210, 688215, 688227, 688267, 688269, 688280, 688288, 688312, 688318, 688320, 688333, 688361, 688363, 688372, 688386, 688387, 688389, 688395, 688413, 688436, 688437, 688440, 688448, 688475, 688483, 688495, 688528, 688533, 688539, 688540, 688542, 688557, 688565, 688580, 688581, 688604, 688605, 688616, 688617, 688627, 688636, 688638, 688647, 688651, 688655, 688673, 688699, 688709, 688710, 688714, 688731, 688757, 688777, 688797, 688818, 688829, 688843, 688845, 688846, 688871, 688872, 688926, 688933, 688942, 688949, 688969, 688978, 688990, 688994, 688999, 689003, 689011, 689013, 689025, 689031, 689032, 689040, 689044, 689046, 689048, 689057, 689076, 689077, 689078, 689093, 689094, 689098, 689133, 689137, 689145, 689150, 689153, 689161, 689167, 689184, 689188, 689195, 689199, 689222, 689224, 689236, 689247, 689248, 689252, 689253, 689278, 689279, 689283, 689289, 689290, 689308, 689331, 689335, 689340, 689341, 689376, 689378, 689392, 689396, 689418, 689419, 689421, 689423, 689439, 689450, 689451, 689456, 689460, 689484, 689487, 689489, 689490, 689498, 689500, 689502, 689506, 689507, 689512, 689518, 689522, 689546, 689549, 689554, 689557, 689560, 689566, 689577, 689581, 689584, 689585, 689591, 689592, 689595, 689598, 689601, 689606, 689616, 689625, 689627, 689636, 689641, 689653, 689658, 689663, 689670, 689674, 689681, 689682, 689684, 689689, 689690, 689691, 689697, 689698, 689704, 689705, 689709, 689710, 689711, 689715, 689721, 689725, 689726, 689734, 689737, 689741, 689756, 689759, 689761, 689767, 689772, 689775, 689778, 689781, 689786, 689792, 689793, 689794, 689799, 689801, 689805, 689808, 689823, 689836, 689840, 689853, 689856, 689858, 689859, 689860, 689861, 689862, 689868, 689869, 689870, 689871, 689878, 689883, 689885, 689910, 689915, 689916, 689917, 689928, 689930, 689933, 689937, 689938, 689939, 689940, 689941, 689942, 689943, 689947, 689950, 689951, 689957, 689969, 689972, 689974, 689980, 689986, 689991, 689996, 689997, 690003, 690005, 690007, 690009, 690020, 690024, 690025, 690026, 690029, 690033, 690036, 690043, 690053, 690054, 690061, 690066, 690068, 690069, 690073, 690083, 690084, 690085, 690093, 690094, 690098, 690110, 690119, 690125, 690126, 690131, 690132, 690137, 690143, 690146, 690160, 690162, 690171, 690176, 690180, 690182, 690191, 690192, 690199, 690200, 690207, 690208, 690212, 690214, 690216, 690224, 690226, 690229, 690235, 690241, 690246, 690249, 690250, 690251, 690253, 690261, 690262, 690265, 690268, 690275, 690278, 690281, 690282, 690285, 690290, 690293, 690294, 690296, 690297, 690299, 690320, 690322, 690324, 690325, 690328, 690329, 690333, 690339, 690340, 690345, 690346, 690351, 690356, 690360, 690366, 690369, 690375, 690384, 690392, 690393, 690394, 690396, 690398, 690406, 690409, 690412, 690413, 690415, 690417, 690419, 690428, 690429, 690435, 690436, 690441, 690442, 690444, 690445, 690446, 690448, 690451, 690453, 690455, 690462, 690466, 690468, 690469, 690470, 690471, 690473, 690476, 690477, 690479, 690482, 690485, 690486, 690487, 690490, 690496, 690497, 690499, 690504, 690506, 690508, 690519, 690524, 690526, 690530, 690531, 690534, 690535, 690536, 690537, 690538, 690541, 690543, 690544, 690545, 690549, 690551, 690552, 690553, 690554, 690556, 690557, 690559, 690560, 690561, 690562, 690563, 690564, 690565, 690566, 690567, 690568, 690569, 690570, 690571, 690572, 690573, 690575, 690578, 690580, 690581, 690585, 690594, 690595, 690596, 690598, 690600, 690601, 690602, 690603, 690604, 690605, 690606, 690607, 690610, 690612, 690615, 690617, 690620, 690621, 690622, 690626, 690627, 690630, 690631, 690633, 690636, 690638, 690639, 690641, 690642, 690643, 690646, 690649, 690650, 690651, 690652, 690653, 690658, 690661, 690664, 690665, 690667, 690668, 690669, 690670, 690671, 690673, 690674, 690675, 690676.

Incompatible changes

The size of PostScript integers has been limited to 32 bits. Previously they used the C long type resulting in 64 bits of precision on LP64 systems (like Linux on x86_64). As of this release all platforms match the recommended implementation limits in the specification.

Changelog

2009-07-31T17:56:00.606748Z Ralph Giles

Bump release date for the final 8.70.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2009-07-30T22:33:02.933395Z Ralph Giles

Update the release notes for the licensing change.

[doc/History8.htm doc/News.htm doc/Details8.htm]

2009-07-30T22:31:07.319480Z Ralph Giles

Relicense GPL Ghostscript under the GPLv3 or later.

[doc/COPYING LICENSE]

2009-07-28T19:46:52.330831Z Ralph Giles

Update change logs for 8.70rc1.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

2009-07-28T19:35:06.647161Z Ralph Giles

Update release version and date for 8.70rc1.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2009-07-28T19:30:52.619540Z Ralph Giles

Document the cat.ps utility.

[doc/Psfiles.htm]

2009-07-28T19:11:13.726309Z Ralph Giles

Add release notes for 8.70rc1.

[doc/News.htm]

2009-07-28T18:20:58.792176Z Alex Cherepanov

Change the operand types of encode_binary_token() to match the
the type of PostScript integers in the ref structure. Bug 690660.

[psi/iscanbin.c psi/btoken.h]

2009-07-28T17:16:43.839663Z Ralph Giles

Bump the release number to 8.70.

The numerous transparency and smask fixes justify a new minor number.

[base/version.mak Resource/Init/gs_init.ps doc/News.htm]

2009-07-28T16:55:34.923668Z Alex Cherepanov

Fix incorrect right shift on 64-bit platforms. PLRM defines bitshift operator
as a logical shift. On 64-bit platform, the integer operand was promoted to
64-bit long value, shifted, and assigned back to 32-bit int, effectively
emulating the sign extension.

[psi/zrelbit.c]

2009-07-28T16:49:26.940894Z Ralph Giles

Work around problems with XInitImage and large rasters.

Patch from Russ Cox, fixes Bugs 689547 and 689561.

Details:

The patch sets bitmap_pad, and passes 0 for bytes_per_line in
cases were current xorg can correctly generate a value. Russ writes:

I have tracked down the problem, and it appears to be a bad interaction
between
gs and recent sanity checking in the X library.

In particular, sometimes x_copy_image in gdevx.c gets called with wide
widths but narrow raster values.  Even though the raster is apparently
wrong, the X graphics operations would work okay with that value.  But
new versions of X11 have various checks in XInitImage, one of which is
that the raster is greater than or equal to the width of the image times
the depth.

To see that this diagnosis is correct, replacing the call to XInitImage
with a call to _XInitImageFuncPtrs (which is just XInitImage without the
sanity checking) makes gs start working.  But of course
_XInitImageFuncPtrs is not a public interface function and thus probably
not the best fix.  Replacing the "bytes_per_line = raster" with
"bytes_per_line = 0" (which makes X compute the value from width and
depth) works fine in the zoom levels that would otherwise crash but
causes the previously-working zoom levels to shear the image (or worse),
presumably because the "obvious" raster is not the right one at those
levels.

Also, the new XInitImage also requires bitmap_pad be set always.

The patch below also fixes the problem -- I can run "gv pprof.ps" at all
zoom levels, and I can also zoom into regular documents.

Perhaps it is not the right fix -- perhaps the actual bug is that
x_copy_image is being called with a bad raster value in the first place.
But it does work.

[base/gdevx.c]

2009-07-28T16:20:51.749226Z Ken Sharp

Fix (pdfwrite): Excessive redefinitions of CIDFonts causing memory exhaustion

Details:
bug #690642: "conversion to PDF aborts after 800 pages"

When instantiating a CIDFont with TrueType outlines, the TrueType interpretation code
tries to name the font using the name table from the TrueType font. If there is no name
table (as is the case for CIDFonts with TT outlines) it instead uses the XUID as the
name.

The XUID is incremented on every use, this means that each time the font is instantiated
(up to once per page when the job is PDF) we create a new CIDFont with a new name.
pdfwrite is unable to determine that these are all in fact the same original font, and
creates many fonts in the output file, eventually leading to memory exhaustion.

This change creates a new key in the current dictionary '/PDFCIDFontName', while
processing a CIDFont with TrueType outlines for a PDF file, which is the same as the
CIDFont BaseFont name. Since PDF can only have one descendant font per CIDFont this
should not cause name collisions. To avoid interference with PostScript the key is
removed from the current dictionary after use.

In the TrueType interpreter, if we are handling a CIDRFont then after loading the TT
tables we check to see if /PDFCIDFontName is defined. If it is we use it to replace the
/FontName and /CIFontName values. This means we only ever create the font with a single
name, which avoids the confusion with pdfwrite.

With this change pdfwrite only emits a single font and, usefully, it has the same name
as the font in the original PDF file. 

[Resource/Init/pdf_font.ps Resource/Init/gs_ttf.ps]

2009-07-28T07:48:19.388013Z Ralph Giles

Add bounds checking to various icclib functions.

Based on a set of patches by Jan Lieskovsky at Red Hat,
addressing CVE-2009-0583 and CVE-2009-0792.

Details:

Various _get_size and _write methods in icclib 2.01 were vulnerable to
integer overflow from corrupt or malicious profile data. This commit
makes a number of changes to address this.

First, it enforces bounds checking on array indicies generated through
tag data lookup or floating point calculations, either throwing an error
or clamping, depending on the context.

Second, it converts a number of malloc(nelement*size) calls into
calloc(nelements, size), passing responsibility for overflow control
to the standard library. This works on recent glibc, MacOS 10.4 (at
least) and MSVC 2005 (at least; I believe MSVC 6 doesn't check for
overflow). Systems which overcommit memory allocations generally also
lazily zero pages, so the performance implications of an overflow in
calloc() resulting in a huge allocation (or the same happening at the
request of corrupt or malicious ICC profile data) are not as bad as
might appear relative to the original malloc(). From the other side,
multi-processing systems must often zero pages delivered to malloc
anyway to prevent information leakage.

On top of Jan's patches, this commit uses a fallback for SIZE_MAX, a
stdint.h define which isn't available on all platforms (notably MSVC),
and changes a number error message to match the malloc->calloc changes.

It fixes a serious bug where the new error checking code incorrectly
rejected valid profiles with an MLUT but no black point tag.
icc_get_luobj() always tried to load the black point tag, and if it
wasn't found, icc_read_tag() would set an error flag, which was later
picked up in icmLut_read() by the check added for the results of
icmLut_get_size(). Since the black point tag is optional, and icclib
already substitutes a default (0,0,0) black point if none is contained
in the profile, we just reset the error condition within
icc_get_luobj(). vtm2k.pdf is a good testfile for this issue.

Likewise, the length of lookup tables was limited to 100 points, as a 
resource consumption constraint, but the spec allows LUTs with up
to 255 points. Bug690495.pdf from the regression suite triggered
this problem.

Thanks to Michael Vrhel for these last two fixes.

[icclib/icc.c]

2009-07-27T16:59:50.188520Z Till Kamppeter

Update of the Esc/Page laser printer drivers from Epson and Avasys, new output devices "eplmono" and "eplcolor", and new media types.

[contrib/contrib.mak contrib/eplaser/gdevescv.h base/configure.ac contrib/eplaser/gdevescv.c]

2009-07-27T00:30:35.025070Z Marcos H. Woehrmann

The fill adjustment change in r9882 was too great; this rev changes it to 0.3 (from the original 0.25).

[base/gsstate.c]

2009-07-24T19:03:05.883160Z Ray Johnston

Add some debug that can be handy in tracing memory usage with the chunk manager.
This code has not effect on non-debug builds.

[base/gsmchunk.c]

2009-07-24T14:21:19.243209Z Ken Sharp

Fix (pdfwrite) : Incorrect table in /Unicode /Decoding Resource

Details
Bug #690648 "many incorrectly encoded Latin Extended-A characters"

The job in this issue contains a subset incrementally downloaded TrueType font where
the Encoding is such that the first glyph encountered is encoded at character
position 1, the second at position two and so on. In addition there is no
GlyphNames2Unicode dictionary.

pdfwrite tries, whenever possible, to write a ToUnicode CMap into the output PDF file
which allows Acrobat and other consumers to copy and paste text using Unicode values.
Since there is no Unicode information in the file, and the Encoding is distinctly 
non-standard, we fall all the way back to using the glyph names as a last ditch
attempt to generate the Unicode information.

This relies on the /Unicode /decoding resource, it seems that many glyphs in this
resource were (and possibly still may be) encoded at the wrong Unicode code points. 
This patch fixes the glyphs raised in the bug report, there may be others.

[Resource/Decoding/Unicode]

2009-07-23T17:34:17.505092Z Henry Stiles

Temporarily address bug #690646 with a fatter fill adjustment default.
This will only affect tests with resolutions less than 150 dpi.  The
change makes superfluous code in gs_init.ps which initializes the
default fill adjust to .5 iff the resolution is greater than or equal
to 150 dpi.

[base/gsstate.c]

2009-07-22T21:09:42.692668Z Michael Vrhel

The commits provides proper transparency support for fills with patterns that contain transparency. This is a merge of the pattern_trans branch into the trunk. 

DETAILS:

When a pattern contains a transparency, it should be blended with the underlying objects according to the current extended graphic state settings (e.g. knockout, blend mode etc).  Prior to this commit, patterns with transparency behaved always as knockout fills.  This fixes Bug 690467 and fixes issues for files that contain transparency patterns in the regression suite when using the pbm output device.
When a transparency is present in a pattern, a pdf14 device is pushed.  Pattern accumulation will then occur in the transparency buffer.  When the accumulation completes, the buffer that is created is no longer passed to the pattern tile object gx_pattern_trans_t through pdf14_put_image, but instead the buffer and various details about the buffer are placed in the existing planar form into a new member of gx_pattern_trans_t called ttrans.  
When a  path is to be filled with the pattern, we will be in pdf14_fill_path.  If the color to fill with is of type pattern1_color, then we will do a call to pdf14_tile_pattern_fill which pushes a transparency group the size of the path that we are filling, in the base color space of the tile.  We decompose the path to a rectangle list which is then filled using gx_trans_pattern_fill_rect.  If the fill is simple, i.e. if the tile step size and tile size are the same, then a straight forward non-overlapping fill of the rectangle occurs.  Otherwise a more complex filling occurs where the tiles may overlap.  If the tiles overlap, then blending will need to occur.  Optimizations were implemented to avoid blending if it is not required.  In addition, memcpy was used for the inner loop filling (rows) when dealing with the non overlapped case.  Going from planar data in the tile buffer to planar data in the transparency group that we are filling is much more efficient then switching between planar to chunky and back to planar like we would have had to do if we had used pdf14_put_image and stored the tile data in the buffer that is used for the nontransparency case.  Once the fill completes, the transparency group is popped, which will perform the appropriate blending with the parent group in the proper color space.
Currently it is not allowed to have the transparency tile stored as a clist.  Instead the tile is always stored in the ttrans object.  It would probably be worthwhile to fix this at some point.  When we are doing clist processing, code was added to write  (gx_dc_pattern_trans_write_raster) and read (gx_dc_pattern_read_trans_buff) the ttrans object to and from the clist.  

DIFFERENCES EXPECTED:

tests_private/comparefiles/Bug688631.pdf (pbmraw 600dpi) tests_private/comparefiles/Bug688728a.pdf (pbmraw 600dpi) tests_private/comparefiles/Bug688728b.pdf (pbmraw 600dpi)
tests_private/comparefiles/Bug689422.pdf (ppmraw 600dpi)
tests_private/comparefiles/Bug689422.pdf (pkmraw 600dpi)
tests_private/comparefiles/Bug688728.pdf (pbmraw 600dpi)

[psi/zpcolor.c base/gdevp14.c base/gsptype1.c base/lib.mak base/gdevp14.h base/gxpcmap.c base/gsptype1.h psi/int.mak base/gxpcolor.h base/gxcolor2.h /trunk/gs base/gxp1fill.c]

2009-07-21T13:43:27.037336Z Ken Sharp

Enhancement (pdfwrite) : Add a new switch 'PDFACompatibilityPolicy to control PDF/A
creation when encountering invalid content.

Details
Bug #690500 "gs 8.63. Option dPDFA generating no pdf/a compliant files because of F
key." 

In the reported issue the input PDF file contains a Link annotation with no /F (Flags)
key defined. PDF/A states that only annotations with the 'Print' bit of the Flags field
are permitted. pdfwrite was emitting the annotation, thus creating an invalid PDF/A
file.

The new switch PDFCompatibilityPolicy allows the user to select the behaviour for these
kinds of events. The value defaults to 0, where the behaviour matches Acrobat, the file
is created, but is not PDF/A compliant, a warning to this effect is given. When set to
1, the content will be omitted, resulting in a compliant PDF/A file, a warning is
given for each piece of omitted content. Values other than 0 or 1 are treated as 0 and
a warning is given that the value is not understood.

Currently only implemented for annotations, it is expected this will be extended over
time.

[base/gdevpdfm.c base/gdevpdfx.h base/gdevpdfp.c doc/Ps2pdf.htm base/gdevpdfb.h]

2009-07-21T04:50:01.508924Z Alex Cherepanov

Add output buffer alignment code to one of the image handling branches
where it was omitted. Fix a SEGV on Sparc platform that cannot access
misaligned data. Bug 690613.

[base/gxiscale.c]

2009-07-20T05:10:46.340795Z Alex Cherepanov

Unobfuscate image scaling code: remove dead code, expand macros and typedefs.
All changes are algorithmically equivalent.

[base/siscale.c]

2009-07-19T03:58:54.979499Z Alex Cherepanov

Fix a typo in compile time flag that prevented GNU libiconv to emulate
system libiconv and caused link errors on the systems that use GNU headers
but system libraries. Bug 690123.

[contrib/opvp/gdevopvp.c]

2009-07-17T15:19:24.111289Z Alex Cherepanov

Initialize bit accumulator in LZW encoder to clear a Purify warning about
using an uninitialised value in an expression. The value itself is unimportant
because all bits that may affect the result are shifted out.

[base/slzwe.c]

2009-07-17T14:00:35.203729Z Alex Cherepanov

Fix processiong of numeric entry in /W2 array. Bug 690635.

[Resource/Init/pdf_font.ps]

2009-07-15T13:07:48.754703Z Ken Sharp

Fix (pdfwrite): Crash with font errors.

Details:
bug #690505: "Regression: More issues with pdfwrite and various nightly regression
files"

The font 'encode_char' method can return a 0 error code, but set the returned glyph
name to 'gs_no_glyph' to indicate that a glyph could nto be found in a valid font.

pdfwrite was then trying to get the glyph information for the 'gs_no_glyph' glyph, which
caused a crash in dict_index. Fixed by detecting the gs_no_glyph and returning an error.

[base/gdevpdte.c]

2009-07-14T03:35:22.419126Z Alex Cherepanov

Switch the order of an assignment and condition to fix (harmless) reading of
uninitialized memory. Clear a Purify warning.

[base/gxhintn.c]

2009-07-13T01:50:06.521945Z Ray Johnston

Add a couple of utilities for extracting Fonts and ICC Profiles from a
PDF. I had these laying around and the need for these comes up from 
time to time. See the top of each PostScript file for usage.

DETAILS:

It is the responsibility of creators of PDF's to not embed fonts that
are identified as not to be embedded. Ghostscript (as of rev 8603)
respects the TrueType FSType FontInfo.

The copyright and license of fonts and ICC profiles in a PDF will
still be in force. Any knowledgeable user can use Ghostscript
(or many other tools) to extract this information. We provide this
utility mostly to provide the 'source' for GPL'ed fonts as required
by fonts. Fonts are programs and distribution requires distribution
of 'source', so this lets users get the source and (using a font
editor) modify the font. See bug 690533 (if you must).

[toolbin/extractICCprofiles.ps toolbin/extractFonts.ps]

2009-07-11T17:49:45.436921Z Ralph Giles

Change the GPL Ghostscript license to GPLv2 or later, instead of GPLv2-only.

[LICENSE]

2009-07-09T13:09:11.914398Z Alex Cherepanov

Don't take empty string for an answer when searching 'name' table in TrueType
font because some MS fonts have empty strings for platform IDs MS doesn't
use. Bug 690611, customer 0.

[Resource/Init/gs_ttf.ps]

2009-07-09T05:59:44.622957Z Henry Stiles

Remove ad hoc code to draw thin rectangles.  It appears this code is
obsolete with respect to the current fill code.  Many fills adjusted
with this code will actually render without enlargement.  Differences
noted in the following files were insignificant or improvements.

comparefiles/012-05.ps
comparefiles/013-05.ps
comparefiles/067a_unc-stroke.pdf
comparefiles/298-09.ps
comparefiles/321-09.ps
comparefiles/86554321.pdf
comparefiles/Bug687603.ps
comparefiles/Bug687724.pdf
comparefiles/Bug687840.pdf
comparefiles/Bug687901.ps
comparefiles/Bug688485.pdf
comparefiles/Bug688631.pdf
comparefiles/Bug688807.pdf
comparefiles/Bug689083.pdf
comparefiles/Bug689516.pdf
comparefiles/Bug689842.pdf
comparefiles/Bug689918.pdf
comparefiles/Bug689978.pdf
comparefiles/Bug690115.pdf
comparefiles/Bug690206.pdf
comparefiles/Bug690395.pdf
comparefiles/Clarke-Tate-Manns-Chinese.ai
comparefiles/H00216q.pdf
comparefiles/LMG-40-7161-RU-DUC-01.pdf
comparefiles/Testform.v1.0.2.pdf
comparefiles/WD0010L0.pdf
comparefiles/annots.pdf
comparefiles/bug_687457.pdf
comparefiles/bulletin.pdf
comparefiles/knight.pdf
comparefiles/messenger.pdf
comparefiles/messenger16.pdf
comparefiles/p2b-100.pdf
comparefiles/z400454b01d4-1.pdf
pdf/PDFIA1.7_SUBSET/CATX2140.pdf
pdf/PDFIA1.7_SUBSET/CATX5233.pdf
pdf/PDFIA1.7_SUBSET/CATX9004.pdf
pdf/PDFIA1.7_SUBSET/CATX9214.pdf
pdf/PDFIA1.7_SUBSET/CATX9558.pdf
pdf/PDFIA1.7_SUBSET/IA3Z0005.pdf
pdf/PDFIA1.7_SUBSET/IA3Z0302.pdf
pdf/PDFIA1.7_SUBSET/IA3Z1351.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3225.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3356.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3359.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3519.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3778.pdf
pdf/PDFIA1.7_SUBSET/IA3Z4373.pdf
pdf/PDFIA1.7_SUBSET/IA3Z4663.pdf
ps/ps3cet/11-01.PS
ps/ps3cet/11-26C.PS
ps/ps3cet/12-05.PS
ps/ps3cet/13-01.PS
ps/ps3cet/13-02.PS
ps/ps3cet/13-03.PS
ps/ps3cet/13-10.PS
ps/ps3cet/13-12.PS
ps/ps3cet/13-13.PS
ps/ps3cet/13-15.PS
ps/ps3cet/13-16.PS
ps/ps3cet/13-17.PS
ps/ps3cet/13-18.PS
ps/ps3cet/13-19.PS
ps/ps3cet/13-20.PS
ps/ps3cet/13-22.PS
ps/ps3cet/13-26.PS
ps/ps3cet/13-27.PS
ps/ps3cet/13-28.PS
ps/ps3cet/13-29.PS
ps/ps3cet/14-08.PS
ps/ps3cet/23-25.PS
ps/ps3cet/29-03.PS


[base/gxpaint.c base/gxcpath.c base/gxttfb.c base/gdevtrac.c base/gxacpath.c base/gxpaint.h base/gdevbbox.c base/gdevpdfd.c base/gxshade.c base/gxfill.c base/gxstroke.c base/gxclrast.c]

2009-07-09T00:28:02.323867Z Alex Cherepanov

Set default color and colorspace for colored pattern stream that relies on
default values; keep the color unset as required for uncolored pattern.
Bug 690609, customer 531.

[Resource/Init/pdf_draw.ps]

2009-07-08T14:18:43.038306Z Henry Stiles

This patch is a continuation of revision 9842, to derive the fill
adjustment parameter from the graphics state and not assume the value
is 1/2.  Interestingly, the patch seems to result in improvements for
postscript in several regression test files.  For example cet file
13-13.ps page 3 appears to improve the clipping of the large (W)
character.  Previously the (W) character obscured the line on the top
border of the page, now the line is visible.  Unfortunately the non
banded result is still wrong and with the fix does not match the
banded output.  Analysis of this issue is incomplete and ongoing.

[base/gxclrast.c]

2009-07-08T13:56:15.311074Z Ken Sharp

Fix (CID fonts): The fallback when totally failing to find a character code in a CMap
sets the CID to 0 (/.notdef) but failed to select a descendant font.

Details:
bug #690372 "Error: /undefined in %Type0BuildGlyph"

The PDF file is fundamentally flawed, the font uses the /Identity-H CMap for a font, but
the font uses single bytes for each character code, where the CMap expects 2 bytes for
every character code.

The font code falls back to using CID 0 (the /.notdef equivalent), but failed to select
a descendant font before returning. Because no descendant was selected GS was attempting
to extract the glyph from the type 0 font, which has no glyphs, and therefore failed 
with an undefined error.

The code has been modified to select a descendant font before continuing under these 
conditions.

[base/gschar0.c]

2009-07-08T06:02:40.134274Z Ray Johnston

Fix for segfault caused by dereference of a stale pointer (pgs->dev_color).
Bug 690519 detected with pkmraw during regression testing.

DETAILS:

If a GC was run during a pattern accum in the PS interpreter, the pgs->dev_color
structure could be moved. This was not tracked, probably because the dev_color
was assumed to be "dynamic". The fix performs gx_unset_dev_color during the
pattern_paint_cleanup (in zpcolor.c). This minimal change is all that is needed
since only the PS interpreter runs a "real" GC that moves structures.

[psi/zpcolor.c]

2009-07-06T17:20:39.998539Z Henry Stiles

The fill adjustment associated with the clipping path should be
derived from the graphics state, not set to the constant 1/2.  This
change results in many improvement for pcl which uses center of pixel
(fill adjust == 0) rendering.  It should result in no change for
postscript or pdf at high resolution, but we do expect many difference
at lower resolutions, where fill adjust is set to 1/4.  In the latter
case postscript and pdf paint with fill adjust set to 1/4 while
clipping paths are created with a fill adjustment of 1/2 which is
incorrect.

[base/lib.mak base/gxacpath.c]

2009-07-06T08:51:30.498667Z Ken Sharp

Fix (graphics library) : Conversion to base colour space of an /Indexed colour space was
not catering for spaces with a string lookup instead of a procedural lookup.

Details
Bug #690587 "setcolorspace + currentgray crashes GS 8.64"

The conversion from a colour in an indexed space to its alternate assumed a procedural
lookup and failed badly if the space had a string lookup.

[psi/zcolor.c]

2009-07-04T22:45:06.512463Z Alex Cherepanov

Add a check for a null value of SMask attribute in ExtGState. This also works
for invalid SMask reference, which is already converted to null.
Bug 690597, customer 870.

[Resource/Init/pdf_draw.ps]

2009-07-03T21:59:49.616755Z Ray Johnston

Fix for crash when tiles are outside printable areas seen with bug 690558.

DETAILS:

The 'fit_copy' macro adjusts the x, y, w, and h values, but since this is
a procedural macro and the 'FOR_RUNS' macro (also procedural) declares
local variables, for 'C' the 'FOR_RUNS ... END_RUNS' needs to be in
a block. The only real changes are the additions of 'fit_copy()'.

[base/gxclip2.c]

2009-07-03T09:27:02.706358Z Ken Sharp

Enhancement (TrueType fonts): Add support for Adobe's use of Identity CMap in PDF files,
when substituting a TrueType font, mapped as a CIDFont from disk, for a missing CIDFont.

Details:
bug #688515 "Need method to map CIDFonts to TrueType fonts when Ordering is Identity"
This issue also covers issues #689499, #688813, #689623 and #690483. 

When using a native TrueType font from disk as a replacement for a CIDFont, GS needs a
way to convert the character code used in the input file (either PostScript or PDF) into
a TrueType glyph ID (GID). 

When the TrueType font is declared (in cidfmap), the CSI entry contains an Ordering, this is concatenated with the CMAP declared in the actual TrueType font. This
information is used to create a CIDDecoding resource, certain  combinations (defined in
.CMapChooser) create CIDDecoding resources 'on the fly'.

A CIDDecoding resource simply maps a character code directly to a GID. Normally this
resource, when automatically created, is manufactured by converting the character code
to an internal code (using the declared CMap from cidfmap) and then converting the 
internal code to a GID using the TrueType CMAP table. Most often the internal code
is a Unicode code point.

The investigation in 688515 makes it clear that when we have an Identity CMap in a
PDF file the character code should be treated as the GID. This makes it very easy for 
us to construct a CIDDecoding resource, its a simple one-to-one. Unfortunately the 
existing machinery relies upon a CMap, and there is already a mapping for 
Identity.Symbol (An Identity CMap with a font whose CMAP table is a Symbol table).
We don't want to break this existing functionality, so the new code adds an entry
in .CMapChooser for Identity.Unicode (only to avoid errors) and then in the 
function which actually loads the TT font (load_sfnts in gs_cidtt.ps) we check
specifically for an Identity.Unicode Decoding. If we find one then we call a new
routine to create an Identity mapping (CIDMap) from character code to GID.

[psi/zcid.c psi/icid.h Resource/Init/gs_ciddc.ps Resource/Init/gs_cidtt.ps psi/zfcid1.c]

2009-07-02T00:38:01.021625Z Till Kamppeter

Use "Perceptual" as render intent for the presentation quality setting in the "cdnj500" (HP DesignJet) driver.

[contrib/gdevcd8.c]

2009-06-30T00:06:33.029648Z Alex Cherepanov

Extract all documents from PDF collection to temporary files and process them
in the order they are listed in the /Names array. Bug 690422, customer 531.

[Resource/Init/pdf_main.ps]

2009-06-29T12:33:28.939766Z Ken Sharp

gs_ciddc.ps is now in Resource/Init, not in lib as was stated in the documentation.

[doc/Language.htm]

2009-06-29T09:33:50.558685Z Ken Sharp

Enhancement (pdfwrite & ps2write) : Optionally convert Separation and DeviceN spaces to their alternate space.

Detalis:
bug #690582 "Disabel /Separation and /DeviceN colour space preservation"

When creating a colour space for output, allow the user to insist that Separation and
DeviceN spaces be converted to their alternate space.

[base/gdevpdfx.h base/gdevpdfp.c doc/Ps2pdf.htm base/gdevpdfc.c base/gdevpdfb.h]

2009-06-26T12:42:29.607606Z Alex Cherepanov

Look into JPX stream to get color space and color depth when it is omitted
from the image dictionary. Bug 690518, customer 850.

DETAILS:
This is a minimal implementation that intentionally uses device dependent
color spaces instead of device-independent ones for full backward
compatibility. 

[Resource/Init/pdf_base.ps Resource/Init/pdf_draw.ps]

2009-06-23T22:24:57.094170Z Michael Vrhel

Fix for bug690546.  Problem was caused by double application of opacity for knockout fills.  The opacity was being applied in the alpha value and in the opacity value.  The alpha value is the product of the shape and opacity and can be used directly.

[base/gdevp14.c]

2009-06-23T07:24:50.757746Z Ken Sharp

Fix (pdfwrite) : Update 'where_used' in case object is used across pages

Details
Bug #690056 "Error with embedded image in generated PDF: XObject not found"

Pdfwrite tries to detect reuse of objects, and only emit a single copy when this occurs.
However on return from pdf_substitute_resource several places do not set the
'where_used' field. If the object is used on a different page to the one where it is 
defined, this causes it not to be listed in the page Resources.

Update two of the places where this occurs to resolve the problem.

[base/gdevpdft.c]

2009-06-22T11:22:48.383638Z Russell Lang

Add the Windows installer manifest when building with Visual Studio 2008.

[psi/msvc32.mak]

2009-06-22T07:41:34.716284Z Ken Sharp

Fix a technically uninitialised variable (Coverity warning).

[base/gdevpdti.c]

2009-06-22T07:41:01.524464Z Ken Sharp

Fix a minor Coverity warning about implicit function declarations.

[base/gdevpdfb.c]

2009-06-21T21:22:33.385661Z Russell Lang

Add manifest files to the Windows setup and uninstall programs,
to force Windows Vista to run them as Administrator.
Bug 690510.

[psi/dwsetup_x64.manifest psi/dwuninst_x64.manifest psi/dwsetup_x86.manifest psi/dwuninst_x86.manifest]

2009-06-21T04:38:47.415879Z Russell Lang

Remove support for cross compiling of Win64 ghostscript on
Windows 32-bit using Visual Studio .NET 2003 with a 
Win64 compatible DDK.
Ghostscript for Win64 must now be built on 64-bit Windows,
to assist with compiled resources. 
Visual Studio 2005 and 2008 are currently supported for 64-bit.

[doc/Make.htm base/msvccmd.mak psi/msvc32.mak]

2009-06-21T04:23:05.005351Z Russell Lang

Add manifest files to the Windows setup and uninstall programs,
to force Windows Vista to run them as Administrator.

[doc/Develop.htm psi/msvc32.mak]

2009-06-20T17:29:39.375319Z Alex Cherepanov

Add TrimBox support and a corresponding -dUseTrimBox option. Bug 690547.

[Resource/Init/pdf_main.ps doc/Use.htm]

2009-06-19T12:14:20.778442Z Ken Sharp

Fix (pdfwrite) : Make type 3 bitmap font text-searchable if possible

Details
Bug #690430 "PCL to PDF creates non-searchable text with incorrect font bbox"

There were several changes which needed to be made here, in particular

1) Prevent the PDF text routines updating the text state when using type 3 bitmap
   fonts, as this caused each glyph to be emitted individually.

2) Change the way bitmap glyphs are recorded and drawn, previously each glyph origin
   was the top of the glyph, which meant that different height glyphs had effectively
   differing baselines. The need to shift y position caused glyphs to appear on 
   different PDF 'lines', which prevented searching

3) Hone some internal heuristics which prevented large kerning values and caused glyphs 
   to be placed individually.

[base/gdevpdti.h base/gdevpdfx.h base/gdevpdts.c base/gdevpdfb.c base/gdevpdt.h base/gdevpdti.c]

2009-06-19T10:53:11.324517Z Ken Sharp

Add a couple of missing initialisers to the PDF device structure. Spotted this problem while working on another issue.

[base/gdevpdfb.h]

2009-06-18T22:06:41.250732Z Marcos H. Woehrmann


Add A5 to the list of PCL output paper sizes.  Thanks to peter.berndts@oce.com for the patch.

Fixes bug 690532.

[base/gdevpcl.h base/gdevpcl.c]

2009-06-18T05:16:48.708579Z Ralph Giles

Handle 4-bit grayscale JPXDecode images.

This is a minimal patch to fix bug 690174.

The file has a JPXDecode stream with 4 bits per component. The image
dictionary has the correct matching /BitsPerComponent and /ColorSpace
keys, but the stream filter was returning the pixel data as the low
nibble in 8 bit pixels.

This is a minimal fix: if the first component of the data is 4 bpc,
divide the stride in half, then in copy_row_gray, pack two pixels
per byte when returning the data.

[base/sjpx.c]

2009-06-17T03:25:25.702690Z Alex Cherepanov

Fix memory corruption caused by long names. The length of name in the scanner
buffer may exceed the maximum name size and should be checked. Bug 690523.

[psi/iscan.c]

2009-06-17T02:17:49.344749Z Alex Cherepanov

Fix detection of extra Q operators in the page contents stream, which never
worked before. Remove some level 1 rudiments and comment the code.
Bug 690540, customer 750.

[Resource/Init/pdf_ops.ps]

2009-06-16T22:05:41.362092Z Henry Stiles

Add a graphics library rom file system variable.  For now this will be
used to hold the icc and wts files associated with the wtsimdi device.
No expected differences.

[base/lib.mak]

2009-06-14T22:57:22.467309Z Michael Vrhel

Fix for access violation that can occur when processing PS files with spot colors into a sep device.

DIFFERENCES EXPECTED:
None

DETAILS:
Number of separations was being obtained from page_spot_colors but should be obtained from separations.num_separations.  This was causing the elements of map_comp_to_sep[comp_num] to not be properly initialized for later use in tiffsep_print_page.

[base/gdevtsep.c]

2009-06-13T14:33:18.520606Z Alex Cherepanov

Export t1_glyph_equivalence table, which provides alternative glyph names.
Modify pf2afm.ps to disable glyph aliasing and generate AFM files that
match the font. Bug 689014.

[Resource/Init/gs_type1.ps lib/pf2afm.ps]

2009-06-13T01:20:00.314754Z Marcos H. Woehrmann

Add yet another _NMAKE_VER check (9.00.30729.01) to msvc32.mak to
detect MSVC_VERSION 9 (there has be a better way of doing this).
This surpresses a couple of warnings for each cl invocation but
shouldn't effect the build.

[psi/msvc32.mak]

2009-06-10T13:10:31.212563Z Ken Sharp

Fix (pdfwrite): Bug in pdfmark processing

Details
Bug #690525 "hyperlinks in pdf off by one page since revision 9779"

Revision 9779 fixed a problem when a DOCVIEW pdfmark did not specify a /Page or View to
open the file on. This caused an extra page reference to be created, which caused an
invalid xref to be created.

This was fixed by altering the page count, but this caused real DEST pdfmarks not to
work properly under some conditions.

Restored the page count, and used the presence of either a /Page or /View pdfmark to
generate a page number, if neither is present no page number is created. This fixes
both issues.

[base/gdevpdfm.c]

2009-06-09T03:32:01.703357Z Henry Stiles

Changed to use memset when filling white and black lines of a
rectangle.  This provides about a 10% speedup over copying a byte at a
time when printing long jobs where a significant amount of time is
spent whitening the page, this improvement was observed on a 2.53 GHz
Intel Core 2 Duo (Mac OS X) and we expect similar results on other
platforms.  No expected changes, the code is functionally equivalent.

[base/gdevwts.c]

2009-06-08T18:16:29.884697Z Ray Johnston

Provide for filling zero width areas to prevent dropout in some strange stroked
characters. This seems to be the intent of the code, and definitely conforms to
the PS PLRM, but the PDF Reference Manual says zero width fills may or may not
be filled (although Adobe Acrobat does). This is not (yet) enabled by default,
but is provided to simplify regression analysis and for customer 531, bug 690466.

DETAILS:

The original code in gxfill.c seems quite strange in that usually it will fill
horizontal areas sue to the 'adjust_above' and 'adjust_below', but depending
on the coordinate, this would sometimes NOT include the horizontal segment.

The change to gxfilltr.h adds vertical segments when PSEUDO_RASTERIZATION
is in the 'template' (as before) as well as when FILL_ADJUST is in the
'template' and the 'adjust' left and right values are > 0.

[base/gxfilltr.h base/gxfill.c]

2009-06-08T03:10:40.894198Z Henry Stiles

Previously we identified a banding device by checking if its
get_bits_rectangle procedure was the same as the procedure used in the
constant procedure declarations gs_clist_device_procs.  This
conditional has not been correct since the multi-threaded code, the
get_bits_rectangle() procedure is overridden with a new procedure
get_bits_rectangle_mt() and all devices were detected as non-banding.
We change the procedure checked to be open_device and don't expect
this to be overridden, but the code is still somewhat awkward.

The broken conditional resulted in non deterministic behavior in the
wtsimdi device, indirectly causing the complexity array to be
uninitialized.

[base/gdevprn.c]

2009-06-05T12:52:53.651342Z Ken Sharp

Fix (pdfwrite) : Bug with DOCVIEW pdfmark handling

Details
bug #690514 "PageMode DOCVIEW pdfmarks result in broken PDF file"

Using the the /PageMode DOCVIEW pdfmark without using another DOCVIEW pdfmark
which directly references a page (eg specifying the page to open on via /Page)
results in a spurious extra entry in the xref table, referencing the first page
object.

This is caused by the pdfwrite routine 'pdfmark_make_dest' which calls
'pdfmark_page_number'. If there is no specified /Page in the pdfmark, then a new
page reference for the 'next' page is allocated in the xref table, using the
location of the current page. This is the source of the spurious entry.

Note that the DOCVIEW code seems to assume that there be at most one /Page or /View
pdfmark in the array.

Fixed by decrementing the page count in pdfmark_page_number if the string being
parsed for a page number is empty.

[base/gdevpdfm.c]

2009-06-05T05:55:54.211001Z Alex Cherepanov

Switch to 32-bit PostScript integers on 64 bit platform. Bug 690474.

[psi/iparam.c psi/zfile.c psi/zfunc4.c psi/zcontrol.c psi/ibnum.c psi/ztype.c psi/zdict.c psi/iscannum.c psi/idparam.c psi/zfcid0.c psi/ibnum.h psi/zdps.c psi/zmath.c psi/iscanbin.c psi/iutil.c psi/iref.h psi/iscan.c psi/idebug.c psi/zstack.c psi/ziodev.c psi/zarith.c base/gsalloc.c psi/zgeneric.c]

2009-06-05T04:25:51.460104Z Alex Cherepanov

Validate /Border attribute of annotations. Following AR, use invisible border
when /Border value is incorrect. Bug 690509.

[Resource/Init/pdf_main.ps Resource/Init/pdf_draw.ps]

2009-05-31T02:50:09.248528Z Alex Cherepanov

Current PDF font loader fails when Type 1 font executes 'restore' at the end
of the file and discards all the collected data. The patch breaks the check
for /UniqueID in the font to force a branch without 'restore'. Bug 690502.

[Resource/Init/pdf_font.ps]

2009-05-30T00:22:20.429756Z Ray Johnston

Fix the file stream opening logic so that when the open failed, it did not leave
buffers and other structures up to the GC for collection. This only affected PS
and PDF, but happened on files that needed fonts that were not immediately in the
Fontmap. This resulted in up to on the files from bug 690422.

DETAILS:

Since the file streams were allocated in 'system' VM, and the 'limit' was not
set when the vmthreshold was set, this "leak" could result in excessive GC
colletion operations.

[base/sfxcommon.c base/stream.c]

2009-05-29T14:02:04.750188Z Ken Sharp

Fix (Graphics library) : Inappropriate testing of shading co-ordinates

Details
The Gouraud free-form mesh shading code was testing to see if the Xmin and Xmax
co-ordinates of the Decode array were the same, and flagging an error if so. The spec
does not say this is an error and Acrobat happily displays the PDF. In addition there
was no test against Ymin and Ymax, so the test has been removed

[base/gsshade.c]

2009-05-29T06:48:44.622628Z Ralph Giles

Update the included copy of jbig2dec with the 0.10 release.

This merges changed made to the version of the gs tree with upstream
fixes, including the buffer overrun fix for CVE-2009-0196. See
CHANGES for a more complete summary.

[jbig2dec/aclocal.m4 jbig2dec/config_win32.h jbig2dec/sha1.c jbig2dec/jbig2_metadata.c jbig2dec/jbig2_image_pbm.c jbig2dec/install-sh jbig2dec/jbig2.c jbig2dec/jbig2_generic.h jbig2dec/jbig2_image.c jbig2dec/configure jbig2dec/Makefile.in jbig2dec/jbig2_metadata.h jbig2dec/jbig2.h jbig2dec/jbig2_priv.h jbig2dec/jbig2_image_png.c jbig2dec/jbig2_image.h jbig2dec/depcomp jbig2dec/compile jbig2dec/jbig2dec.c jbig2dec/os_types.h jbig2dec/config.h jbig2dec/configure.ac jbig2dec/jbig2_arith.c jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_arith.h jbig2dec/jbig2_page.c jbig2dec/jbig2_symbol_dict.h jbig2dec/jbig2_arith_int.c jbig2dec/jbig2_hufftab.h jbig2dec/jbig2_huffman.c jbig2dec/jbig2_text.c jbig2dec/jbig2_arith_int.h jbig2dec/jbig2_text.h jbig2dec/jbig2_huffman.h jbig2dec/jbig2_mmr.c jbig2dec/jbig2_refinement.c jbig2dec/jbig2_arith_iaid.c jbig2dec/jbig2_mmr.h jbig2dec/memcmp.c jbig2dec/test_jbig2dec.py jbig2dec/jbig2_arith_iaid.h jbig2dec/config.h.in jbig2dec/jbig2_segment.c jbig2dec/Makefile.am jbig2dec/missing jbig2dec/jbig2_generic.c]

2009-05-25T13:38:00.787533Z Ken Sharp

Fix (colour handling): improper handling of ICCBased space with a /Alternate ICCBased
    space

Details:
bug #690495 "Error: /typecheck in --@0x1007f6f0--"

It is technically possible (apparently) for a PDF file to contain an ICCBased space
which has an /Alternate space which is also an ICCBased space. The existing
validation code assumed this would not be the case and reused a reference if the
latter space had no /Alternate in order to select an appropriate final Alternate.

This led to the latter ICCBased space being replaced by the selected default space,
which meant we had fewer spaces than expected when actually setting the space.

Fixed by inserting the selected appropriate default space into the ICC dictionary as
an /Alternate and revalidating the modified space.

[psi/zcolor.c]

2009-05-24T10:16:57.483100Z Ralph Giles

Fix an uninitialized variable warning in FAPI_do_char.

Details:

Previously the local variable 'code' was used for incidental return 
value checks, but *also* to set cr.is_glyph_index in in the CID font 
case. This is because cid_to_TT_charcode() returns 1 on success, but
if it can't find a character code for the given cid, it sets the
character code to zero and returns zero itself to indicate failure.

Zero makes more sense as a glyph id (.notdef) than as a character
code, so in this case it's appropriate to set is_glyph_index based
on this. The other paths which set 'code' all deal with truetype
fonts, so the default success value of zero is also correct.

However, there were in theory code paths where code was never set,
and so is_glyph_index was being set from an unitialized value; thus
the gcc warning. And the double-use of the variable 'code' was hard
to read. This commit adds a separate boolean to track whether we've
found a character code or not and sets cr.is_glyph_index based on
that.

[psi/zfapi.c]

2009-05-23T19:11:37.254849Z Ralph Giles

Remove an unnecessary duplicate typedef. Coverity issue 4183.

[base/gdevp14.h]

2009-05-23T19:02:08.125913Z Ralph Giles

Remove an unnecessary header include.

Coverity issue 2497.

[base/lib.mak base/sjpx.c]

2009-05-23T18:37:21.743759Z Ralph Giles

Remove some unused variables.

I've left one, the subarray_index, since it may be intended for future 
development. The others were all trivial.

[psi/zfapi.c]

2009-05-23T16:59:58.327296Z Ralph Giles

Correct a cut-and-paste error in r9742.

The blend values array logic for multiple master fonts was writing
integer element values with a floating point specifier. These are
normally floats, which is probably why the error wasn't noticed in
testing. Flagged by Coverity as issue 4326.

[psi/zfapi.c]

2009-05-23T15:36:33.756259Z Alex Cherepanov

Trap /ioerror and load the font by name when embedded font stream is
unreadable. Bug 690492.

[Resource/Init/pdf_font.ps]

2009-05-22T09:11:26.614602Z Ralph Giles

Remove a duplicate gs_memory_t structure member from the trace device.

In r8803 the image_enum memory pointer was moved from the various
subclasses into the common portion of the structure (the superclass).
In oversight, that change was not make to gdevtrac.c, breaking
compilation because of the now-duplicate member name. This went
unnoticed until now because the trace device isn't part of any
standard build.

Note that I've only fixed the compile error. I have not verified
that the trace device still functions properly.

[base/gdevtrac.c]

2009-05-22T09:03:35.793845Z Ralph Giles

Correct a typo in the unused gsparam2.c.

This was broken in r2849, but went unnoticed because the parameter
api rewrite was never developed further. This file isn't part of
any standard build.

[base/gsparam2.c]

2009-05-21T23:46:45.296083Z Marcos H. Woehrmann


Minor changes for Luratech decoders command line options.

[base/Makefile.in]

2009-05-21T19:16:25.645959Z Ralph Giles

Update documentation with the new location for dmmain.

[doc/Develop.htm]

2009-05-21T19:13:36.537944Z Ralph Giles

Move the Classic MacOS gsapi client example code to psi, where it more 
properly belongs.

[base/dmmain.r base/dmmain.c psi/dmmain.r psi/dmmain.c]

2009-05-21T19:11:13.444391Z Ralph Giles

Comment improvement in the font api implementation.

[psi/zfapi.c base/gxfapiu.c base/gxfapiu.h]

2009-05-21T12:40:07.902153Z Till Kamppeter

The "ps2write" output device produces PostScript which is not DSC-conforming, so do not advertize it as DSC-conforming with a "%!PS-Adobe-..." magic string. Use "%!" instead. Otherwise the "pstops" CUPS filter cannot handle this output (Ubuntu bug #377011).

[base/gdevpdfu.c]

2009-05-20T22:33:12.105223Z Till Kamppeter

pstoraster did not work when called with an input file name as the 6th command line argument.

[cups/pstoraster.in]

2009-05-20T22:30:48.432212Z Till Kamppeter

Fixed recognition of page size via /cupsPageSizeName. All page sizes were considered custom sizes if /cupsPageSizeName was not set.

[cups/gdevcups.c]

2009-05-20T12:17:22.906937Z Tor Andersson

Reformat code to improve readability and fix messed up tab/space indentation. Also removed the m_ prefix on struct fields.

[psi/fapi_ft.c]

2009-05-19T22:57:04.259848Z Alex Cherepanov

When /Length attribute is incorrect, PDF interpreter removes it from the
stream dictionary. Add support of missing /Length attribute to the pattern
handling code. Bug 690488.

[Resource/Init/pdf_draw.ps]

2009-05-16T15:29:35.814286Z Alex Cherepanov

Bind all procedures in ps2ai.ps to prevent errors caused by redefined
operators, such as redefinition of 'length' as a number in
examples/colorcir.ps. Bug 690484.

[lib/ps2ai.ps]

2009-05-15T12:13:25.677962Z Ken Sharp

Fix (FAPI) : FAPI doesn't support Multiple Master fonts

Details
The FAPI code manufactures a stream containing font data for the benefit of FreeType.
However, when manufacturing a type 1 font stream it did not account for the possibility
of a Multiple Master font (or instance of a MM font). This caused FreeType to generate
an error when trying to process glyphs using MM operations.

Extended the existing code to manufacture the WeightVector array, $Blend procedure,
BlendDesignMap array, BlendDesignPositions array and BlendAxisTypes array if present
in the original font.

[psi/zfapi.c psi/ifapi.h psi/write_t1.c]

2009-05-13T23:37:28.142726Z Alex Cherepanov

Consider PDF files that has /StmF attribute but no /CF attribute as having
ARC4 encryption. Bug 690478.

[Resource/Init/pdf_sec.ps]

2009-05-12T20:22:11.794604Z Marcos H. Woehrmann

Removed reference to obsolete file (lwf_jp2_geo.h) that has been merged into lwf_jp2.h.

[base/lwf_jp2.mak]

2009-05-12T10:10:53.385307Z Ken Sharp

Fix (ps2write) : Crash caused when converting large shading to image.

DETAILS :

Bug 690475 "ps2write" segfaults on PDF file of CUPS test suite".

When converting a shading to an image for PostScript output, and the resulting image is
large (> 512Kb), the code attempts to select an appropriate compression filter. As part
of doign this it probes the colour space in an attempt to determine what kind of space
it is. However this doesn't work when we have created the image ourselves, as tehre is
no associated imager state to probe the colour space resulting in a crash.

Modified the compression selection code to not probe the space if there is no imager
state.

[base/gdevpsdi.c]

2009-05-11T15:19:46.521973Z Ken Sharp

Fix (FAPI) : Type 2 fonts with local Subrs fail

Details
Type 2 (CFF) fonts may have both local and global subroutines. Normally fonts will only
contain a global set, while FontSet fonts may contain both a global set, and a local set
per font.

The FAPI code, when converting an internal GS representation back into a CFF stream,
incorrectly conflated the local and global Subrs into a single GSubrs (global subrs)
dict. Additionally it pushed the local subrs first. The result of this is that glyphs
using a callgsubr operator retrieved the subroutine, and glyphs using a callsubr would
fail because no local Subrs were defined.

Extended the FAPI code to retrieve the local and global subrs separately, to write a
local /Subrs dict if required, and to correctly calculate the /Subrs offset and store
it in the font Private dict when a /Subrs dict is present.

[psi/zfapi.c psi/ifapi.h psi/write_t2.c]

2009-05-10T20:56:12.436440Z Henry Stiles

Fill in omitted paper sizes as part of fixing bug #689677.  Thanks to
Jeffrey Vance for providing several of these paper dimensions.  No
regression differences are expected.

[base/gdevpxen.h]

2009-05-10T16:44:00.640518Z Marcos H. Woehrmann

Use 32 bits for fixed coordinates even on 64 bit cpus.

Details:

The fixed coordinate system used to be dependent on the size of a long.
On x86_64 and other 64 bit systems this was 8 bytes but 4 bytes on other
systems. 

Fixes Bug 690434.


[base/gxfixed.h]

2009-05-10T02:59:01.912309Z Ray Johnston

Fix regression caused by the changes to make PCL work. Bug 690463.

DETAILS:

The primary culprit was that the 'iblock' calculation didn't work if the
entire 'cbuf' wasn't empty. The token scanner sometimes refilled when there
was still data in the buffer. The 's_block_read_seek' also needed to make
sure that the cursor.r ptr and limit (srptr and srlimit) is set correctly
before loading the block at the new position. Tested with PCL and PS on
the cluster (and of coures on my Windows machine).

[base/gsiorom.c]

2009-05-08T13:13:26.891026Z Ken Sharp

Fix : Windows drag&drop has a fixed path limit of 80 characters.

Details
Bug #690461 "ghostscript can't handle files with long name-paths"

The real issue is that the drag-and-drop interface had a fixed buffer of 80
characters, and was unable to process files beyond that limit.

It looks like the original code was from some boiler plate sample. Updated the code
to use the DragQeryFiles API call to find the length of the full path specification
and then malloc a buffer to hold it. Although we would never normally use the system
malloc call, this should not be a problem in the Windows-specific code.

[psi/dwtext.c psi/dwimg.c]

2009-05-07T15:45:58.755801Z Ken Sharp

Fix PostScript interpreter : ICC colour space could cause crash

Details
Bug 690472 "ghostscript crashes on pdf file"

The code to parse the /Range from an ICC profile stores the data in an array of floats.
However, when the Range data was present, the values were incorrectly stored at array
locations twice the proper index.

This could lead to buffer overflow which in this case corrupted the ICC dictionary being
used, causing a crash.

Surprisingly this did not come up in testing.

[psi/zcolor.c]

2009-05-07T13:06:10.554451Z Ken Sharp

Fix (FAPI) : FAPI doesn't handle Encoding arrays of type mixed_array

Details
It seems that fonts can sometimes have a 't_mixedarray' Encoding array, odd but true.
The FAPI code assumed that Encodings would either be t_array or t_shortarray. Altered
the code to allow for t_mixedarray as well.

[psi/zfapi.c]

2009-05-07T12:46:25.039496Z Ken Sharp

Fix (FAPI) : FAPI fails when FontBBox is missing

Details
(see also rev 9692) The FAPI code attempts to modify the FontBBox in the font
dictionary after rebuilding a font with a non-GS font renderer. If the FontBBox is
missing this creates an error condition. This is generally correct, FontBBox is a 
mandatory entry in a font dictionary.

However, the code can be called to define a (PDF) type1C font, a CFF font, and it is
possible (Bug689740.pdf) that the top DICT does not contain a FontBBox. In this case
we should inherit the FontBBox from the FontDescriptor in the PDF file, but we don't
have a mechanism to do that. 

Since PDF isn't a programming language the scope for using the FontBBox is pretty
limited, so for now I've chosen to ignore the error.

[psi/zfapi.c]

2009-05-05T10:40:10.582721Z Ken Sharp

The revision 9699 to quiet a Coverity warning incorrectly tested a char * instead of a
char ** for NULL.

[base/gdevpdtc.c]

2009-05-05T10:28:48.253152Z Ken Sharp

revision 9714 reformatted a test in a way which left dead code behind. Put the test
back as it was, there was no functional difference anyway, this was just done for
investigative purposes.

[psi/zfapi.c]

2009-05-04T10:59:18.106139Z Till Kamppeter

Removed "cupsEvenDuplex" PPD keyword handling from the "cups" output device again. This keyword is already handled by the pstops and pdftopdf CUPS filters.

[cups/gdevcups.c]

2009-05-02T03:12:55.350064Z Alex Cherepanov

Commit .h file missed by the previous revision. Bug 690318, customer 631.

[base/gdevtifs.h]

2009-05-02T00:38:13.087492Z Ray Johnston

Supprt -dBigEndian=[true | false] so that the TIFF can be optimized for a
target host on a machine of another 'endian' byte orientation. This is a
mostly worthless change since the raster data doesn't change (only 16 or
32-bit values have endian issues). Thanks to wendyst2 at gmail.com for
this fix. Bug #690318.

[base/gdevtifs.c base/gdevtsep.c base/gdevtfnx.c base/gdevtfax.c]

2009-05-02T00:03:15.297730Z Ray Johnston

Add an 'IODevice' aware layer for filesystem enumeration 'gs_enumerate_*'
which needs to be used whenever the file is not known to be on the default
iodev (%os% by default). Use this in the PDL parser to open fonts so that
COMPILE_INITS=1 does not need the fonts on the disk.

The default PXL/PCL builds now use COMPILE_INITS=1.

Fixes bug #690367.

DETAILS:

The %rom%ttfonts/ path is placed BEFORE the built-in paths in pjparse.c,
but NOTE: the PCLFONTSOURCE environment variable will still supersede
the internal paths including %rom%ttfonts.

[base/gxiodev.h base/gsiorom.c base/gsiodev.c]

2009-05-01T03:39:24.695161Z Alex Cherepanov

Check for unbalanced q/Q operators in content streams of PDF forms.
Add missing Q when needed and issue a warning. Bug 690449, customer 870.

[Resource/Init/pdf_draw.ps]

2009-04-30T18:34:49.698412Z Michael Vrhel

Fix for case when blending color space of soft mask is not specified.

DETAILS:

When the blending color space for the soft mask is not specified, the blending color space is set to UNKNOWN.  This is later resolved when the compositor action is handled.  In this case, the parents color space or the device color space is used for blending.  The code was in place 
to do this for a transparency group that did not have a defined color space but not for a soft mask. This caused bug 690457 with gxps which should now be resolved.

[base/gdevp14.c base/gstrans.c]

2009-04-30T13:14:10.674985Z Ken Sharp

Fix (FAPI): Incremental Type 42 font with GlyphDirectory & missing glyphs fails

Details
The FAPI code assumed that the routine to extract glyph data from sfnts would always
work when a GlyphDirectory is present, and used glyf + loca if this routine failed, 
assuming that this meant there was no GlyphDirectory. However, the test file
Bug687845.ps contains a type 42 incrementally downloaded font which uses a
GlyphDirectory and also attempts to access glyphs which aren't defined in the
GlyphDirectory.

This caused the code to try and use the loca and glyf tables, which aren't present,
which caused an error.

Modified the FAPI code to return a glyph length of 0 when we have a GlyphDirectory but
no defined glyph. This causes GS to render nothing, which matches the regular result as
well as the action of Acrobat.

[psi/zfapi.c]

2009-04-30T11:15:04.348733Z Till Kamppeter

Adde support for the "*APDuplexRequiresFlippedMargin:" PPD keyword to the "cups" output device, fixed also the margin handling for custom paper sizes.

[cups/gdevcups.c]

2009-04-30T10:41:48.084860Z Till Kamppeter

Fixed unprintable margin handling of the "cups" output device.

[cups/gdevcups.c]

2009-04-29T18:02:50.832175Z Ralph Giles

Whitespace, line length and C-style improvements to gscolorbuffer.[ch].

These files tend to use 8 spaces instead of tabs; I haven't corrected
many of these.

[base/gscolorbuffer.c base/gscolorbuffer.h]

2009-04-29T17:02:43.113835Z Ralph Giles

Remove a documentation reference to the gsindent script, which was
removed in r8455.

[doc/C-style.htm]

2009-04-29T16:56:02.841961Z Ralph Giles

Always initialize the color_remap function pointer.

Details:

NULL here means a straight memcpy, and the first case statement set
that explicitly as a fallback. However, the second did not, so it
was possible to reach the check on line 204 without initializing
color_remap.

[base/gscolorbuffer.c]

2009-04-29T16:39:58.702496Z Ralph Giles

Set native line endings and keyword substitution on gscolorbuffer.[ch].

[base/gscolorbuffer.c base/gscolorbuffer.h]

2009-04-29T11:27:38.521368Z Marcos H. Woehrmann

Fixed compiler warning about /* within comment.

[base/gdevp14.c]

2009-04-28T22:11:03.867873Z Ralph Giles

Remove the unused including of gxlum.h in the inferno device.

The luminance weighting contants aren't used in the inferno driver.

[base/gdevifno.c base/contrib.mak]

2009-04-28T22:06:04.042908Z Ralph Giles

Remove the stdlib.h include from the inferno device.

This is no longer needed since the malloc/free calls were replaced
with gs allocator calls in r9687.

[base/gdevifno.c]

2009-04-28T18:41:43.426030Z Till Kamppeter

"cups" output device: Added support for "cupsEvenDuplex" PPD keyword.

[cups/gdevcups.c]

2009-04-28T16:44:09.981559Z Till Kamppeter

"cups" output device: Added support for the new "*cupsBackSide:" PPD keyword, fixed "*cupsFlipDuplex:" for landscape documents.

[cups/gdevcups.c]

2009-04-28T15:10:49.837556Z Alex Cherepanov

Take measures against Type 1 fonts that do 'systemdict begin' and
bypass all our font loading tricks. Bug 690450, customer 870.

[Resource/Init/pdf_font.ps]

2009-04-28T13:31:02.272975Z Ken Sharp

Ensure the pointer to standard cmap names is properly initialised before dereferencing
it. This is only to silence Coverity, the pointer is initialised to a static array and so
should never be invalid.

[base/gdevpdtc.c]

2009-04-28T13:23:46.582627Z Ken Sharp

Correct a potential buffer overrun. This looks like an oversight, the maximum size is
properly calculated taking the buffer length and data size into account, and used to
copy the data, but the trailing 0x00 (C string terminator) was written using the data
size without checking for a buffer overrun.

Warning from Coverity.

[base/gstype42.c]

2009-04-28T13:16:17.700417Z Ken Sharp

Check return value from cos_dict_put_key when writing document metadata. Warning from Coverity.

[base/gdevpdfe.c]

2009-04-28T09:04:10.426584Z Ken Sharp

Fix (pdfwrite) : Enlarge the hardcoded threshold for subsetting True Type fonts.

DETAILS :
Patch and log supplied by Leonardo.

Bug 689236 "pdfwrite disregards -dSubsetFont= with TrueType". 

This fixes the valid part of the bug, which is related
to not-subsetting True Type fonts. The supplied example
exceeds the hardcoded constant of 500 glyphs,
so the font was always subset. Here we enlarge
the threshold to a more reasonable value. Note it doesn't
affect regular runs with "standard" distiller parameters.

ref# leo2079.

[base/gdevpdtb.c]

2009-04-27T16:24:33.581172Z Ken Sharp

Fix (FAPI) : FAPI fails when FontBBox is a packed array

Details
The FPAI code attempts to modify the FontBBox in the font dictionary after rebuilding a
font with a non-GS font renderer. However it assumed that the FontBBox would always be a regular array, capable of handling real numbers.

Some fonts have FontBBox arrays which only contain small integers, and which are 
therefore stored as packed arrays (t_shortarray in GS). This was cuasing the FAPI code
to throw an error.

Modified the code to replace the packed array with a full array before filling in the
new values, if the original array was packed.

[psi/zfapi.c]

2009-04-27T16:02:10.792862Z Till Kamppeter

Let "cups" output device take into account page size names.

The "cups" output device has selected the page size for determining
the margins only by the size and not by the name. So it was not
possible to have different page size entries with the same size and
different margins in the PPD, for example for fullbleed. This is fixed
now.

Fix done after a report from the HPLIP team on the OpenPrinting Summit
2009.

[cups/gdevcups.c]

2009-04-27T06:25:19.306977Z Alex Cherepanov

Fix 2 oversights in AES decryption code: (1) add enumeration of ctx member in
AES state. Unmovable blocks are still garbage collected and need enumeration;
(2) use correct names to access /CFM attribute in PDF file.
Bug 688958, customers 870, 850, 531.

[base/saes.h Resource/Init/pdf_sec.ps]

2009-04-24T17:39:56.201358Z Ralph Giles

Replace malloc with gs_alloc_bytes in the inferno device.

Details:

The inferno device allocates an image writer struct in initwriteimage,
and later frees it when a null buffer is passed to writeimageblock.

We prefer to use gs_alloc_bytes instead of calling system malloc
because it respects memory contraints requested by the client. Note
however that the w pointer is local to inferno_print_page and not
traceable. This is fine and the structure doesn't have a lifetime
outside that function. If it did, it would need to be stored and
enumerated in inferno_device.

Note that this requires modifying the two utility functions to take
a memory pool pointer.

[base/gdevifno.c]

2009-04-24T17:39:54.075505Z Ralph Giles

Dynamically allocate the inferno line buffer.

Previously, the scanline buffer was a 16k stack allocation. We still
reject bitmaps larger than that because of format limitations (so large
jobs above 300 dpi often fail with the inferno device) but now we
only allocate as much storage as needed, and on the heap instead of
the stack.

[base/gdevifno.c]

2009-04-24T14:10:48.907852Z Ken Sharp

Enahncement (FAPI) : Allow FAPI to work with pdfwrite.

DETAILS :

FreeType could not be used with pdfwrite for any purpose, even to render
fonts for bitmap fallback. This seems overly pessimistic. 

This patch allows FAPI font rendering engines to work with pdfwrite, this 
will mean the FAPI interface is used for the selected types of font (see 
FAPI for documentation) including CharString decoding and especially 
rendering to bitmaps for type 3 font fallback.

In general pdfwrite uses its own routines to write and convert font types as
required, but it does not render any kind of font data, so if it is unable
to handle a font type it relies on the graphics library to render the glyph
to a bitmap, which is then stored in a type 3 font.

The FAPI code checks the device parameters to see if 'EmbedFontObjects' is 
true, and does not attempt to use the FAPI for fonts if it is. So firstly we
alter the device parameters in pdfwrite to set this to false.

The FAPI code was assuming that the text enumerator it received would always
be a 'show' enumerator, and extracted a pointer to the graphics state from it.
Of course if the device is pdfwrite then the text enumerator will instead be 
a pdf_text_enum. Modified the code to check the object type of the enumerator
and use the pointer to the imager state (checking it is a st_gs_state type)
if this is not a show enumerator. Also only update the 'cc' fields in the 
enumerator if this is a show enumerator.

Note that because the CharString and font validation is handled by the font
rendering engine, it may differ from the GS engine regarding the validity
of fonts.

[psi/zfapi.c base/gdevpdfp.c]

2009-04-24T01:06:32.141706Z Ralph Giles

Allocate the inferno device's color cube dynamically.

DETAILS:

The inferno device generates a color cube on device open, ostensibly
to speed up the palette mapping. Previously this was stored in a
global array, adding 16 or 32 KB to the constant memory footprint
of ghostscript.

Instead, this commit allocates the color cube dynamically, storing
a pointer to it in the inferno_device structure. A custom structure
descriptor is added, and propagated through the new prn_device
construction macros, so it can be traced by the garbage collector.

In this way, the memory is only used when the inferno device is active.

[base/gdevifno.c]

2009-04-24T01:06:30.215529Z Ralph Giles

Add a new prn_device_stype_body() construction macro.

Previously, all the printer device structures assumed there were no
additional pointer members in any subclass, and always installed the
st_device_printer structure descriptor. This may account for why so
few devices bother with point enumeration. Or perhaps it's the other
way around.

In any case, this commit adds two new construction macros for
filling in device structure templates: prn_device_stype_body and
prn_device_margins_stype_body. These take an additional argument,
the address of the subclass structure descriptor, after the device
name, and propagate it to the std_device_full_body_type macros.

[base/gdevprn.h]

2009-04-24T01:06:28.058835Z Ralph Giles

Comment out the prototype for a commented out function in the inferno driver.

Fixes a gcc warning.

[base/gdevifno.c]

2009-04-24T01:06:25.015250Z Ralph Giles

Add a prototype for init_p9color() in the inferno driver.

Fixes a warning on gcc.

[base/gdevifno.c]

2009-04-24T01:06:22.357332Z Ralph Giles

Remove trailing whitespace in the inferno driver.

[base/gdevifno.c]

2009-04-22T19:51:30.624349Z Michael Vrhel

Allow inline images in pdfwrite.

DETAILS:  

This had been disabled during the softmask branch work.  With the fix that Ray did to avoid having softmask images to be processed outside the 3X code with an extra softmask group, we can re-enable this.  From a test that Ken did we need the ability to do in-line to avoid creating large files in certain cases with pdfwrite.

[base/gdevpdfi.c]

2009-04-21T15:01:01.102780Z Ken Sharp

Initialise a couple of structure members to avoid a Coverity warning.

[base/gdevpdfg.c]

2009-04-21T07:55:30.518210Z Ken Sharp

Add a check for a NULL pointer before using it. In fact this should not be possible
but it silences another Coverity warning.

[base/gdevpdtc.c]

2009-04-20T19:35:15.102625Z Michael Vrhel

Add missing gscolorbuffer.c and gscolorbuffer.h that should have been in soft mask branch merge.  See previous commit message for differences and details.

[base/gscolorbuffer.c base/gscolorbuffer.h]

2009-04-20T19:16:24.907829Z Michael Vrhel

This is a merge of the smask_work branch into the trunk.  The merge fixes issues related to missing soft masks, improperly rendered soft masks and transparency group color spaces.  It addresses a number of bugs including 688728 689422 689512 689931 688601 689968 690958 690115 690157 and 690170.    

DETAILS:
This commit is a compilation of changes that occurred in the smask_work SVN branch.  That branch was created with rev 9134 on Oct 8 2008.  The final commit to that branch was with rev.  9665.  For extreme details on the changes in this commit, you can review the commit messages within that branch.
Soft masks:  The basic architecture for the soft mask remains in place; where by the soft mask is composed with the popping of the transparency group.  In performing soft mask operations, the current code pushes a soft mask, which creates a new buffer.  This buffer is then rendered into.  Once the soft mask drawing is completed, the soft mask is popped.  This operation moves the soft mask buffer into the mask buffer of the parent transparency group.  When that transparency group is popped, it should be composed with its parent layer, while being adjusted with the soft mask buffer values.  If there was never a transparency group that was popped following the soft mask, then the soft mask would not be applied.  The solution to this issue involved changes in pdfdraw.ps that forced the creation of a transparency group when one had not yet been created if a soft mask push was to occur.  When this extra group is popped, the soft mask will then be applied.  The PDF interpreter knows that a SMask exists in the ExtGstate when 'SoftMask' is not null. Since the ExtGState elements are part of the top dict, the 'begin' .. 'end'  part of the 'q' and 'Q' operators, respectively, take care of keeping the SoftMask current.  When a transparency group is executed, the SoftMask is set to null since the SMask saved in the pdf14 'maskbuf' element will be applied during the blending when the transparency group is popped.
Soft masks are now drawn in the specified group color space.  Previously, the soft mask was drawn in the target device color space and then the K channel for the CMYK case or the R channel for the RGB case were used as the soft mask luminance channel.   Now the mapping from the DeviceRGB or DeviceCMYK to a luminance component is performed as specified by the PDF specification.  If the color space is CIE based, the base device space is used.  This CIE case does not follow the PDF specification but does follow what occurs with Acrobat Reader.    Previously the code carried around the soft mask buffer as an RGB or CMYK buffer.  It is now represented by a gray buffer.
Transparency groups: Color space changes for transparency groups are now followed.  Previously, the target device color space was always used for blending.  Now the proper color space is used, with the exception of ICC and other CIE based spaces.  For those spaces the base device color space is used.  The ICC and CIE based spaces will be addressed when the ICC branch is merged.  Changing the current code to do forward and backward mappings with the ICC color spaces is beyond the work scope of the smask_work branch.    In the presence of nested transparency groups, the parent color space can be different than the child color space.  When the child is popped, its contents are now converted from the child’s color space to the parent’s color space.  Note that if the output device is a separation device, the transparency group color space is ignored and the blending is performed amongst the channels, which can be numerous if there are many spot colors.  Also note that for soft mask groups, the alternate tint transform is always used for spot colors.
To achieve these fixes, a number of changes besides those already mentioned above were required.  These include:
A dynamic update of the pdf14 device colorinfo value based upon the color space of the current transparency group.  This information is used often in deciding how to encode and decode the color data.  In the case of the clist writer and reader, the code often ends up forwarding certain operations to the target device in which case we no longer would have the colorinfo of the pdf14 device.  The solutions to this problem required the addition of a clist_color_info member value to the clist writer device.  This value is updated in the same manner that the pdf14 device will be updated during the clist reader phase thereby ensuring the proper color information is written and read.  Also required was the addition of a trans_device item to the imager state.  This was needed due to the fact that the clist writer forwards its fill path command to the target device.  In the shading code, if we have a DeviceN color space we eventually get back to pdf14_cmap functions, assuming we have a RGB or CMYK target device.  These cmap functions should make use of the clist device to map to the proper blending color space NOT the target device color space.  In the current code, the cmap functions can only see the target device and the imager state hence the solution to add trans_device to the imager state.  This is only used during clist writing and assigned during the clist writers PDF14 fill path at which point it is assigned the address of the clist writer device.  During the PDF14 cmap functions, if the trans_device is not NULL in the imager state we use that device's color mapping procs instead of the target device color mapping procs.  In this approach, we maintain access to the transparency group color space and its procedures through the imager state.  Finally, shading fills should NOT occur in the device color space when we are within a transparency group with a different color space.  To avoid this issue a boolean named has_transparency was added to the imager state.  Now if we find that we are in a transparency group during the shading fills, then the is_linear_color_applicable operation will return a false and the target color space is not used for blending.
To maintain the changing pdf14 color space information in the presence of nested groups, parent_color_info_procs was added to the already nested pdf14_buf_s where the new pdf14_parent_color_t contains the information related to the parent’s color space.   This handles the nesting of color information for the clist reader.  For the clist writer, pdf14buf is always NULL.  For this case, a pointer to a pdf14_parent_t was added to pdf14_device_s.  A stack was created and the color information is pushed on and popped off the stack as the transparency groups are pushed and popped during the clist writer phase.  
Changes were also required in pdfdraw.ps to handle the case when a transparency group does NOT define a color space.  In this case, the parent’s group color space (or the target device color space if we are at the first level) should be used.
In the presence of a monochrome target device, the previous code PDF14 device was still pushing an RGB buffer initially.  This is now changed and a monochrome buffer is created. 
There was much confusion in the code relating to the number of colors, separations, spot colors, and process colors.  This became clear when looking at a file that had over 100 colorants. GX_DEVICE_COLOR_MAX_COMPONENTS defines the max number of different colors that we currently encode.  This should include both the process colors and the spot colors.  Many parts of the code looked at these colors differently. Some portions of the code treated the number of spot colors and/or separations as having a range to GX_DEVICE_COLOR_MAX_COMPONENTS, while other parts include the process color AND the spot colors in that range.   The changes here ensure that GX_DEVICE_COLOR_MAX_COMPONENTS defines the max number for all process and spot colors.  
The current code did not recognize patterns with transparency in PDF.  Now, the presence of transparency in a pattern is detected.  If a transparency component is found, the pdf14 compositor is installed.    
Finally, pdf_draw.ps was modified so that when an image is encountered with a softmask (/doimagesmask) AND the output device is pdfwrite then we do avoid the DoImage that is used to fill the softmask buffer for the pdf14 device.  The pdfwrite device will obtain the maskdata as part of image3x.  Previously, the mask image was at times being placed in-line for the pdfwrite device during the DoImage that is associated with storing the softmask buffer in the pdf14device.  In the old flow, the SMask image was effectively being processed twice.
    

[psi/zcolor.c base/gxclimag.c base/gxpcmap.c base/gdevdevn.c psi/ztrans.c base/gsovrc.c base/gdevpdft.c base/gxblend1.c base/gxcie.h /trunk/gs base/gxshade6.c base/gxclpath.c base/gsptype1.c base/gsccolor.h base/gsptype1.h base/gsistate.c base/gximag3x.c base/gscspace.c base/gxclutil.c base/lib.mak base/gxistate.h base/gscspace.h Resource/Init/pdf_main.ps psi/int.mak Resource/Init/pdf_draw.ps psi/zpcolor.c base/gxdevcli.h Resource/Init/pdf_ops.ps base/gdevp14.c base/gxclrect.c base/gxclist.c base/gdevp14.h base/gdevtsep.c base/gxdcolor.c base/gstrans.c base/gxclist.h base/gstparam.h base/gxblend.c base/gstrans.h base/gdevpdfi.c base/gxblend.h]

2009-04-20T17:44:20.115590Z Till Kamppeter

Added "cdnj500" device to support HP DesignJet 500 (patch from Timur Maximov).

[contrib/gdevcd8.c contrib/contrib.mak base/configure.ac]

2009-04-20T15:59:07.741446Z Ken Sharp

Update revision 9658 to silence a second Coverity warning and potential dereference of
a NULL pointer. Should still be impossible and is definitely an error condition.

[base/gdevpdtc.c]

2009-04-20T15:54:38.325839Z Ken Sharp

Add a check to ensure a font pointer is valid before dereferencing it. This should 
always be the case, but its worth checking to avoid a crash and should silence a Coverity
warning.

[base/gdevpdtc.c]

2009-04-20T15:43:56.142408Z Ken Sharp

initialise first_visit in the gs_cpath_enum structure with a dummy value. This will be
overwritten when the enumerator actually starts, this is only to silence a warning
from Coverity.

[base/gxcpath.c]

2009-04-20T14:59:33.677002Z Ken Sharp

Initialise a member of a struct to silence a Coverity warning. The warning about use of
an uninitialised variable is actually bogus, the value is copied, but not otherwise used.

[base/gdevpdfg.c]

2009-04-20T14:31:15.938087Z Ken Sharp

Check the length of the 'binary mode' file access string before strcat'ing it, to 
prevent a potential (but not actual) buffer overflow. Silences a Coverity warning.

[base/gdevpdf.c]

2009-04-20T14:27:28.365570Z Ken Sharp

Reformat a conditional sprintf to silence a Coverity warning.

[base/gdevpdfu.c]

2009-04-20T12:38:51.604664Z Ken Sharp

Fix (colour) : Ensure /UseCIEColor sets for initial space correctly.

Details
bug #690432 "/UseCIEColor not working with default colour space"

The change to process colour and colour space in C instead of in PostScript overlooked 
code in gs_setpd.ps  which interacts badly with an optimisation.

The optimisation skips changing colour space if its the same as the current space. But
if /UseCIEColor has changed value we must not skip the change. This was achieved 
previously by only skipping the change if UseCIEColor was false, and setting the space
to something other than DeviceGray in gs_setpd.ps.

We take advantage of the same trickery by always setting the space to something other
than DeviceGray in gs_setpd.ps, in the knowledge that initgraphics will switch the 
current space back to DeviceGray. Because the spaces don't match we will process the
change, getting the correct result for UseCIEColor.

[Resource/Init/gs_setpd.ps]

2009-04-20T12:07:28.372687Z Alex Cherepanov

Some broken TrueType 1 fonts may declare more tables than they actualy have.
Use .peekstring instead of for readstring for resding the font directory to
avoid positioning non-seekable input stream past the 1st table data.
Bug 690423, customer 580.

[Resource/Init/gs_ttf.ps]

2009-04-20T06:56:10.039816Z Ken Sharp

Fix (pdfwrite) : Work aroung wrong numGlyphs.

DETAILS :
Patch and log supplied by Leonardo.

Bug 690047 "Incorrect cmap generated by pdfwrite".

If a source True Type font defines numGlyphs lesser then
the actually defined number of glyphs,
the old code writes an incorrect True Type header with
wrong offsets to subtables.

Since in nowadays the number of glyphs may be increased
due to font merging, we decided to write the extended subtables
with a bigger number of glyphs. See comments in code.
See enlarged_numGlyphs and related code portions.
The original numGlyphs is kept unchanged for easier debugging.

For an easier debugging added checks into psf_write_truetype_data
for comparing actual subtable offsets with ones written
into the True Type header. The new structure subtable_positions
works for that.

Also improved a printing in gs_type42_font_init.
The old code can print occasional garbage beyond the font name end.
 
ref# leo2077.

[base/gstype42.c base/gdevpsft.c]

2009-04-18T22:07:42.659183Z Ray Johnston

Improve the documentation related to the %rom$ file system, searching when the
executable is built with COMPILE_INITS=1 (the current default on most platforms)
and the (mostly deprecated) older methods for compiling Type 1 fonts and Halftone
into threshold arrays.

[doc/Use.htm doc/Make.htm]

2009-04-17T08:16:45.715059Z Ken Sharp

Change #include of stdlib.h to use angle bracket form to avoid local path searches.

[base/gdevpdfj.c]

2009-04-17T00:32:26.343700Z Ralph Giles

Remove unnecessary includes of gserrors.h in the jpeg stream module.

Fixes two coverity warnings.

[base/lib.mak base/sjpegd.c base/sjpege.c]

2009-04-16T16:00:34.882286Z Ken Sharp

Fix (pdfwrite): Ignore missing side bearing/width in type 1 fonts.

Details:
Bug #689573: "glyphs with no (h)sbw cause error with pdfwrite".

Fonts which contain glyphs that do not begin with a sbw or hsbw operator are
technically invalid, but Acrobat Distiller, and other PostScript rips, ignore
the error and render the glyph with a side bearing and width of 0.

Modified the type 1 font code and the type 1 to type 2 (CFF) conversion code
to assume that such glyphs have a width and side bearing of 0 and are not a
cause for error.

[base/gstype1.c base/gxtype1.c base/gdevpsfx.c]

2009-04-15T20:08:27.661663Z Alex Cherepanov

Some broken Type 1 fonts define some of the attributes in the external scope
instead of defining them in the font dictionary. The patch tries to pick
the keys from the external scope and put them back to the font dictionary.
Bug 690418, customer 1110.

[Resource/Init/pdf_font.ps]

2009-04-15T19:18:47.976886Z Henry Stiles

On modern processors the c library's memset is usually faster than our
custom inline coding.  At least, using memset on recent windows, mac,
and linux platforms is appreciably faster for very long simple jobs
where erasing the page is significant relative to total job time.
Using the library's memcpy needs more investigation, it does not seem
to have significant impact on performance and also results in many
regressions which we haven't checked.

[base/gdevm24.c]

2009-04-15T06:50:51.933830Z Alex Cherepanov

Detect /Pages node without /Kids and bail out early. The code that tries
to determine the number of pages in the document takes such node as a /Page
node, which causes very long search for the last page. Bug 690389.

[Resource/Init/pdf_main.ps]

2009-04-14T04:56:06.103942Z Alex Cherepanov

Write color to the clip list even when it has no variable data, as in
[/Separation/None ...]. Fix a bug introduced by r. 8770 that causes rendering
of invisible objects with the last visible color. Bug 690395, customer 330.

[base/gxclpath.c]

2009-04-13T07:39:20.206752Z Ken Sharp

Silence some Coverity warnings (reasonable warnings, but not actually problems).

[base/gdevpdfj.c base/gdevpdtb.c base/gdevpdfe.c]

2009-04-13T07:31:25.084782Z Ken Sharp

Fix a typo in a comment.

[base/gdevpdtt.c]

2009-04-11T12:20:22.013355Z Alex Cherepanov

Repair broken PDF files created by "OKI HotKey" that misspell "endobj"
as "enbobj". Bug 690397.

[Resource/Init/pdf_base.ps]

2009-04-11T04:59:50.073474Z Ray Johnston

Fix for crash on 18-02B in clist code. The clist cbuf (on the stack) would
write past the end of the buffer are polluting the next varaible on the
stack (data_bits). Fixes 690399.

DETAILS:

This problem was introduced with r8712 (leonardo). The return value for
gx_dc_pattern_read_raster should be the number of bytes consumed, but in some
(rare) cases it would return 0, causing a later contamination of a byte past the
end of a buffer on the stack, polluting another value. The effect would be
dependent on the 'endian-ness' since only one byte was overwritten.

Also 'protection' for this condition was added in top_up_cbuf to prevent
future problems.

[base/gsptype1.c base/gxclrast.c]

2009-04-10T17:36:04.582061Z Ralph Giles

Remove the reference to needing to compile in pdfwrite, which is 
confusing to casual users. The pdfwrite device is part of all the
default builds.

[doc/Ps2pdf.htm]

2009-04-09T13:57:24.013138Z Ken Sharp

Fix (pdfwrite) : Omitted to write CIDToGIDMap when it was Identity, even if writing PDFA

Details
When writing CIDFontType2 fonts we should emit a CIDToGIDMap entry, which we do. However
if the map is the identity then we are permitted to omit it. Unless, of course, we are
writing a PDF/A compliant file, in which case we must write /Identity.

[base/gdevpdtw.c]

2009-04-09T08:44:23.319707Z Ken Sharp

Accidentally removed the prototype for pdf_document_metadata. Restored.

[base/gdevpdfg.h]

2009-04-09T08:37:55.568580Z Ken Sharp

Fix (pdfwrite): remove unused code for Font metadata.

Details:
Bug #690391: "PDF/A support generates invalid object references to font metadata".

The code for writing font metadata in PDF/A output was temporarily disabled
to fix problems with PDF/A output. 

It seems Acrobat cannot be persuaded to validate any file containing font
Metadata as PDF/A compliant, and Distiller cannot be persuaded to create
a PDF file containing font metadata.

The code has now been permanently removed.

[base/gdevpdfg.h base/gdevpdtb.c base/gdevpdfe.c]

2009-04-08T21:11:18.174166Z Ray Johnston

The massive 'DeviceN' commit (r2925) broke this. The correct b_w w_b
palette should not rely on color_info.polarity, but instead needs to
be determined from the value of color black. Inverted if black is not
0. Bug 690314 for customer #661.

DETAILS:

In page buffer mode, the 'palette' was set up during the first ht painting
operation from gdevmr1.c. This code was only used in clist mode when making
the 'buffer device' for the band.

[base/gdevmem.c]

2009-04-07T16:07:22.605043Z Ken Sharp

Removed the function pdf_color_space, which simply called pdf_color_space_named, with
two additional fixed parameters, NULL and 0.

Because these two function called each other Coverity seemed unable to deal with the
recursion and logged numerous STACK_USE errors. Also, its much easier to follow a single
function when debugging.

[base/gdevpdfk.c base/gdevpdfg.h base/gdevpdfb.c base/gdevpdfc.c base/gdevpdft.c base/gdevpdfv.c base/gdevpdfg.c base/gdevpdfi.c]

2009-04-07T10:20:02.752832Z Ken Sharp

Fix (ps2epsi): rounding problems calculating bbox.

Details:
Bug #688500 "ps2epsi produces too-narrow bounding box (2)".

Text and linework rendered at low resolution can differ by a few pixels from
that rendered at higher resolution because of serifs, miters etc. The ps2epsi 
script rendered the job at low resolution and used that both to calculate the 
bounding box, as well as for the epsi preview. This could lead to small errors 
if the job was re-rendered at a higher resolution

The new approach is to use the bbox device in Ghostscript to calculate a more
accurate bounding box. This has meant altering the scripts for all the
operating systems.

Also, the ps2epsi.bat file did not work correctly under Windows Vista. A
new 'cat.ps' file has been added to gs/lib. This uses the %infile% and
%outfile% environment variables and concatenates the two files together.
This only affects the Windows batch file.

[lib/ps2epsi lib/ps2epsi.ps lib/ps2epsi.cmd lib/cat.ps lib/ps2epsi.bat]

2009-04-06T15:30:47.928660Z Ken Sharp

Fix (pdfwrite): Incorrect handling of short images with subsampling.

Details:
bug #690350 "Conversion to pdf of a color pcl file generated by pjxl300 
gsview 4.9 driver"

The PCL file consists of a single large image covering the page. However,
the PCL interpreter calls 'process_zero_rows' (rtraster.c) which has the
side effect (sometimes at least) of closing the image and restarting it.

Pdfwrite already has code to handle a short image like this, it replaces
the image dictionary /Height value with the number of rows of data
actually received. However, if subsampling is enabled, this can be
incorrect, some of the rows of received data may have been discarded.

Altered pdf_end_image_binary to check if subsampling is taking place and
if it is to calculate the subsample factor and divide the number of rows
of data received by the subsample factor before storing as the new /Height.

[base/gdevpdfj.c]

2009-04-06T13:48:44.630941Z Alex Cherepanov

Skip Identity /TR function in soft mask dictionary on PostScript level instead
of passing {} to .begintransparencymaskgroup because ref_function() only
accepts function made of data and operator %execfunction. Bug 690379.

[Resource/Init/pdf_draw.ps]

2009-04-04T16:36:15.613476Z Alex Cherepanov

Revert initial /PolicyNotFount to 1. The previous value, 7, introduced by ESP
Ghostscript merger (rev. 8026) was non-standard and handled by Ghostscript
like 0. Fix '/undefined in --setpagedevice--' error in CUPS mode
(-dNOMEDIAATTRS) when setpagedevice request has unsupported keys. Bug 690376.

[Resource/Init/gs_setpd.ps]

2009-04-04T10:10:56.584771Z Ken Sharp

Enhancement (pdfwrite) : Allow pdfwrite to produce multiple copies of pages. New flag
        'DoNumCopies' added.

Details
Bug #690355 : "pdfwrite ignores the "#copies" setting in PostScript input"

The pdfwrite device follows the behaviour of Acrobat Distiller and ignores the /#copies
and /NumCopies settings in PostScript. This is at least partly because these can't be
expected to work properly with Destination annotations specifying a page as the
destination (eg Link or Outline annotations).

However CUPS (and potentially other PDF workflow applications) may have no way of
determining that application-produced PostScript requires multiple copies to be 
printed, after the file has been converted to PDF.

For the benefit of such applications a new flag 'DoNumCopies' has been added, if 
present then pdfwrite will duplicate each page in the output as many times as the 
/#copies or /NumCopies current setting.

There is currently no provision for reordering the pages, the duplicates follow the 
original immediately in page order.

[base/gdevpdfx.h base/gdevpdf.c base/gdevpdfp.c doc/Ps2pdf.htm base/gdevpdfu.c]

2009-03-31T15:21:50.984238Z Ken Sharp

Another case of the return value from pdf_attached_font_resource not being checked.

[base/gdevpdtt.c]

2009-03-31T15:17:52.100598Z Ken Sharp

Revision 9604 left an uninitialised variable being used. Moved usage beyond initialisation.

[psi/zfapi.c]

2009-03-31T14:59:18.448263Z Ken Sharp

Check the return value from pdf_attached_font_resource to silence a Coverity warning.

[base/gdevpdtt.c]

2009-03-31T14:52:09.178132Z Ken Sharp

Check the return value from pdf_open_docuemnt to fix a Coverity warning.

[base/gdevpdfu.c]

2009-03-31T14:41:29.436551Z Ken Sharp

Remove some unused code relating to embedding font metadata in PDF files.

[base/gdevpdfe.c]

2009-03-31T14:33:47.297209Z Ken Sharp

Remove unused variable 'glyph_index' from FAPI_do_char (gcc warning)

[psi/zfapi.c]

2009-03-31T14:30:14.712906Z Ken Sharp

Remove a bunch of unused headers to silence Coverity warnings.

[base/gdevpdfj.c psi/zfapi.c base/gdevpdfm.c base/gdevpdfo.c base/gdevpdtb.c base/gdevpdfp.c base/gdevpdtc.c base/gdevpdfr.c base/gdevpdte.c base/gdevpdtf.c base/gdevpdfu.c base/gdevpdti.c base/gdevpsfm.c base/gdevpdf.c base/gdevpsf2.c base/gdevps.c]

2009-03-31T14:01:20.321673Z Ken Sharp

Fix (pdfwrite): Incorrect handling of type 1 counter control hints.

Details:
bug #690349 "corrupt PDF is generated out of PostScript-file with asian fonts"

When converting type 1 outlines to type 2 outlines, we were not catering for
OtherSubrs 12 or 13 (counter control hints) in the first pass over the font.
These operators take a large number of arguments, and these were being left 
on the font operand stack. This quickly resulted in a stack overflow and an 
invalidfont error. We now remove the operands from the stack when we encounter 
them.

In addition, the code for writing CIDFontType0 fonts which called the conversion
routine was not checking the return value, and carried on trying to embed the font
anyway.

[base/gdevpsf2.c base/gdevpsfx.c]

2009-03-30T16:26:53.447317Z Ken Sharp

Fix (fonts): Potential dereference of NULL pointer.

Details
Flagged by Coverity, the FAPI code used op_show_find to get the text enumerator, but
did not check the return value, which can be NULL for a failure. Later the enumerator
is dereferenced, potentially causing a crash. This is actually almost certainly
impossible since this is a finish routine and the enumerator is known to have existed
previously, but its good to be safe.

[psi/zfapi.c]

2009-03-28T23:47:38.237280Z Alex Cherepanov

Recognize composite fonts and process descendant fonts according to
-dShowEmbeddedFonts flag. Bug 690363.

[toolbin/pdf_info.ps]

2009-03-28T21:03:25.515606Z Alex Cherepanov

Accept a string (instead of a name) as a possible /FontName value in
FontDescriptor. Recover broken PDF file generated by "MapForm". Bug 690365.

[Resource/Init/pdf_font.ps]

2009-03-28T19:32:04.398772Z Alex Cherepanov

Ignore /XObject attribute if it's not a dictionary. Recover broken
PDF file generated by "Allegro Design Publisher". Bug 690364, customer 870.

[Resource/Init/pdf_main.ps]

2009-03-26T13:46:29.711009Z Ken Sharp

Fix (pdfwrite) : NeverEmbed/AlwaysEmbed not working properly.

DETAILS :

Patch and Log supplied by Leonardo.

Bug 689610 "Possible /NeverEmbed vs /AlwaysEmbed problem"
The root of the problem is that (1) empty arrays did not work,
and (2) existing values of the parameters (before setdistillerparams)
were not properly accounted for in setdistillerparams.
 

In the old code, PS and C parts of "embed" parameters implementation
are inconsistent each to another and to the documentation. Replacing both with the
right logic defined in the Adobe Distiller Parameters specification.
The comment in gdevpsdp.c line 81 is kept as the basic interface definition.

Note: in the old code param_read_embed_array could not distinguish empty array from
no array,  but it is important for the Adobe logic.
Also psdf_put_embed_param parameters did not correspond  to the documentation in
gdevpsdp.c ln 81.

ref# leo2073.

[Resource/Init/gs_pdfwr.ps base/gdevpsdp.c]

2009-03-25T13:00:06.154261Z Till Kamppeter

Fixes in the "cups" (CUPS Raster) output device driver:

Fixed segmentation fault due to missing definition of get_color_comp_index() function. Used dummy function gx_error_get_color_comp_index() now (bug 690338).

Updated some (currently not used) functions to the current internal API of Ghostscript.

Made pre-initialization of device data structure complete.

[cups/gdevcups.c]

2009-03-25T05:14:39.001280Z Alex Cherepanov

Don't apply mapped transfer function to the uninitialised buffer. Old code
had no effect other than causing Valgrind warnings. Bug 688908.

[base/gsht1.c]

2009-03-25T05:01:11.445938Z Alex Cherepanov

When CCITTEncode'd stream is not properly terminated and used as an embedded
image, the filter may consume 'E' from 'EI'. Change PDF interpreter to accept
'I' as a synonym to 'EI'. Bug 690300, customer 353.

[Resource/Init/pdf_draw.ps]

2009-03-24T17:07:50.052635Z Ken Sharp

Remove some #ifdef code and some C++ style comments from the FreeType bridge code.

[psi/fapi_ft.c]

2009-03-24T15:55:25.161400Z Ken Sharp

Fix (fonts) : Sheared/rotated text incorrect with FreeType bridge

Details
The FreeType code uses a different order for the transformation matrix elements, we
were sending the matrix in PostScript order, resulting in incorrect transformations.

[psi/fapi_ft.c]

2009-03-23T15:19:13.060013Z Ken Sharp

Fix (pdfwrite) : Wrong page orientation with italic font.

DETAILS :

Patch and log message submitted by Leonardo.

Bug 689574 "italic/oblique fonts produce incorrect page orientation". 

Replacing text orientation recognition trick with a right math.

ref# leo2072.

[base/gdevpdtt.c]

2009-03-23T14:14:38.656422Z Ken Sharp

Fix (fonts) : Coverity warning

Details:
Move a NULL pointer check so that it is performed before dereferencing the pointer.
Warning flagged by Coverity.

[psi/zfapi.c]

2009-03-23T13:48:49.969966Z Ken Sharp

Fix (pdfwrite) : Skip OpenType tables EBDT, EBLC, EBSC.

DETAILS :

Patch and log message submitted by Leonardo.

This fixes the large size of the PDF output reported in
Bug 689209 "ps2pdf doesn't subset embedded bitmaps".
The patch skips Open Type tables that are not required by
the PDF specification.

A better fix would be subsetting EBDT, EBLC, EBSC
(probably what the user wants), but we have not enough
examples for testing all possible formats of those tables.
Also it will be necessary to compact the glyph index space
and re-index subglyphs, otherwise the subclassed EBLC
is still too big. In general subsetting TrueType fonts is still
a future goal.
 

[base/gdevpsft.c]

2009-03-23T09:40:03.808902Z Ken Sharp

Fix (fonts): Allow copying TT descandants of CIDFonts with no name table.

Details:
bug #690348 "Error "/invalidfont" when generating PDF"

The PDF file for this contains an embedded TrueType font, configured as a CIDFont, and
the TT name table is empty (not missing, but empty). This is probably technically
illegal.

However, we don't actually require the name table, or other font information, when
copying these fonts for pdfwrite, so we simply ignore this error in this case.

[base/gxfcopy.c]

2009-03-22T04:43:07.001485Z Alex Cherepanov

Initialize Jbig2TextRegionParams.sbrat even when it is not used in
calculations because it's included in error messages causing Valgrind
warnings.

[jbig2dec/jbig2_text.c]

2009-03-20T08:26:50.704630Z Ken Sharp

Fix (pswrite) : extra '%' output in DSC comment

Details:
bug #690347 "pswrite device generates %%%%BeginPageSetup"

Revision 9396 moved the emission of the %%PageBoundingBox comment, but due to an
oversight caused the %%BeginPageSetup comment to be emitted with too may '%' characters.

[base/gdevpsu.c]

2009-03-19T21:19:31.945883Z Alex Cherepanov

Allocate a file name string returned by .tempfile independently of the
file object. Don't free the file name string when the file is closed.
Fix a Valgrind warning and potential SEGV.

[psi/zfile.c]

2009-03-19T17:01:34.362845Z Ken Sharp

Fix (fonts): Uninitialised variables in FreeType bridge.

Details:
bug #690344 "FreeType bridge produces lots of 'clipping glyph' warnings"

The FreeType bridge code failed to initialise some member variables of a structure when
retrieving glyph metrics, leading to spurious warnings.

[psi/fapi_ft.c]

2009-03-19T16:40:12.949694Z Ken Sharp

Fix (fonts): PaintType 2 fonts not working.

Details:
bug #689826 "FT_BRIDGE crashes with CID fonts"

The initial problem is that a required table, TT_cmap, was NULL, and was not tested
by the CID decoding module before attempting to use it.

Further investigation revealed a fair number of problems surrounding this are. The 
problems stem from the use of a native TrueType font on disk to replace a CIDFont (not 
from an actual CIDFont as the summary suggests). When using a CIDFont the character
code is mapped to a CID using the CMap and the CID is directly used to extract the 
glyph program from the font's CharStrings dictionary.

With a TrueType font that is not sufficient, TrueType fonts use Glyph IDs (GID) and
have a completely different method of mapping the encodings. We attempt to handle this
by converting the CID to a Unicode value, and then use the TT Unicode CMAP subtable to
convert the Unicode value to a GID.

With GS' own font handling this works, because we extract the CMAP subtable and carry
it around in the font. WHen using FreeType this is not done, and so the conversion
fails.

Modified the FAPI interface to create a new method 'check_cmap_for_glyph' which will
allow us to interrogate the TT CMAP subtable from the FAPI server. Copied sections of
CID decoding from zcid.c to zfapi.c in order to perform the same checks as our own 
code and use the correct Unicode value.

[psi/fapi_ft.c psi/zfapi.c psi/ifapi.h psi/fapiufst.c]

2009-03-19T16:10:19.044766Z Ken Sharp

Fix (fonts): PaintType 2 fonts not working.

Details:
bug #690343 "Fonts with PaintType 2 (outline) not working with FreeType bridge"

The FAPI code seems to assume that it will always get an 'e_limitcheck' error when no
raster is available. This seems to be true for glyphs too large to cache, but is not
the case when the font is intended to be an outline. In this case there is no raster, 
but the error return is not e_limitcheck.

Rather than rely on an error value, modified the code so that if the font has a 
non-zero PainType, we assume that we only have an outline.

[psi/zfapi.c]

2009-03-19T15:59:50.732428Z Ken Sharp

Fix (fonts): Crash caused by missing tests.

Details:
bug #690342 "GPF/segment violation using FreeType bridge"

When using a TrueType font to substitute for a CIDFont, there is no BuildCHar, and so
trying to resolve the name will fail, resulting in a GPF. Fixed by testing the name
objects before attempting to resolve them.

[psi/zfapi.c]

2009-03-19T01:48:02.632278Z Henry Stiles

Fix 689822, the previous code did not free the palette associated with
an indexed color space to remain backward compatible wih pcl and
pclxl.  The previous setup, before 8928, allowed the clients to manage
the table for memory.  The commented out code in this module was a
workaround until we fixed the pcl clients.

[base/gscolor2.c]

2009-03-18T22:58:18.105967Z Ralph Giles

Backslash-escape nested parentheses in ps strings.

This isn't necessary with the gs scanner, but is considered good practice.
Thanks to Ray Johnston for raising the issue.

[Resource/Init/pdf_draw.ps]

2009-03-18T21:58:18.821466Z Ralph Giles

Correct diction in unbalanced q/Q warnings.

[Resource/Init/pdf_ops.ps Resource/Init/pdf_main.ps Resource/Init/pdf_draw.ps]

2009-03-15T22:42:53.413236Z Alex Cherepanov

Add hagaki (Japanese postcard) paper size to the list of known paper sizes
because this format is widely used in Japan and popular PAPERSIZE option
takes a paper name. Bug 690213.

[doc/Use.htm Resource/Init/gs_statd.ps]

2009-03-14T05:44:00.168304Z Ray Johnston

Fix chunk_resize_object to retain the old data and add gs_debug['A'] debug
printing.

[base/gsmchunk.c]

2009-03-13T00:19:17.919125Z Ralph Giles

Correct some comment typos in the icclib wrapper.

Also removes trailing whitespace.

[base/gsicc.c]

2009-03-12T19:43:29.615649Z Ray Johnston

Fix Segfault in the 'resize_object' of the chunk memory wrapper.

DETAILS:

A typical (unfortunately) instance of using (part of) an object after
it has been freed.

[base/gsmchunk.c]

2009-03-12T13:32:23.551227Z Alex Cherepanov

Remove code that has no effect other than moving uninitialized data around
and causing Coverity warning.

[psi/iutil2.c]

2009-03-12T00:18:03.727459Z Marcos H. Woehrmann

Fixed typo introduced in r9545.

[base/gdevp14.c]

2009-03-11T22:00:55.007444Z Ray Johnston

Set the log_op (ROP) to a straightforward value when doing the pdf14 put_image
ignoring the input imager state log_op. Bug 690321.

DETAILS:

The rev 8170 alludes to doing something to prevent a similar problem (bug
689186: see DETAILS comment #2 in the log message), but this was NOT the
correct solution. When writing the transparency buffer to the target device
in the pdf14 POP_DEVICE using the "put_image" proc, we really need to use
a ROP that simply allows us to copy the image in 'normal' mode i.e. use
rop3_default.

The state of the low bits of the clist_playback_band imager_state.log_op is
rather arbitrary at the end of the band and not relevant to the put_image
operation.

[base/gdevp14.c]

2009-03-11T13:46:33.591266Z Alex Cherepanov

Move a variable declaration to the outer block to prevent out-of-scope access
and a corresponding Coverity warning.

[psi/idict.c]

2009-03-11T12:51:21.059563Z Alex Cherepanov

Propagate error code from gs_path_enum_next() upstream in operator
.getpath . Fix a Coverity warning.

[psi/zupath.c]

2009-03-10T00:07:03.756709Z Ralph Giles

Add the soclean and debugclean targets to distclean. Bug 690263.

[base/Makefile.in]

2009-03-07T22:59:15.942227Z Alex Cherepanov

Increase operand stack to 100000 elements and change stack overflow handling.

DETAILS:
Following Adobe implementation, copy only a few top elements of the stack
to the corresponding element of the $error dictionary when the stack
overflows. Adobe copies up to 500 top elements, we copy up to 65535. This
feature enables Ghostscript to have maximum stack sizes larger than 65535.
The maximum operand stack size is set to 100000 to match Adobe interpreters.
The large stack size is needed for some PDF files that construct large
dictionaries using << ... >> operators. Bug 690307, customer 850.

[Resource/Init/gs_init.ps psi/interp.c]

2009-03-07T21:46:16.367445Z Till Kamppeter

Let pdftoraster CUPS filter not be build with CUPS < 1.2 and allow suppressing build of pdftoraster via command line option (needed for Mac OS X).

[cups/cups.mak base/Makefile.in base/configure.ac]

2009-03-05T09:56:07.987614Z Ralph Giles

Look for the 'cmap' table in the font dictionary and use it when mapping
a cid to a character code when using the FAPI bridge.

This replaces a segfault with an invalid font error. Bug 689826.

Details:

This clause in FAPI_do_char() was explicitly calling
cid_to_TT_charcode() with a NULL TT_cmap argument, which that function
dereferenced, causing a segfault. As far as Ken and I can tell, that
function can't do anything useful without the cmap table from the
underlying font, so it makes the most sense the resolve the segfault
this way.

However, the ps library code doesn't set this key in the font
dictionary, so for now this just replaces the segfault with an
/invalidfont in --.FAPIBuildGlyph-- error. We could continue
silently by ignoring the mapping if the cmap isn't available down
in TT_char_code_from_CID_no_subst() in which case that font just
would not render as part of the document. We expect to fix this on
the postscript side, so I felt this was a better course for now.

[psi/zfapi.c]

2009-03-04T13:27:07.376818Z Ken Sharp

Fix the FreeType bridge code for outlines (result of charpath). 

The previous code assumed that co-ordinates returned by FT were in a 16.16 fixed
precision format, whereas they are actually in a 26.6 form. Rescale the 26.6 to 16.16
before returning to FAPI so that the conversion into GS co-ordinates works correctly.

[psi/fapi_ft.c]

2009-03-03T16:23:24.892806Z Ken Sharp

Fix (colour): Faulty error handling

Details:
bug #690312 "gs stalls, never returns on attached figure"

The job causes the 'base' (Gray, RGB, CMYK) colour code to be executed with a completely
full stack, which causes a stackoverflow because this routine needs to push the colour
space name onto the operand stack.

However, the operand stack wasn't being checked until after the continuation procedure 
had been pushed onto the execution stack, so after the error handling, we returned to
the continuation procedure, but without an appropriate operand stack. This caused a
loop to run without bounds.

Fixed by checking the operand stack beforesetting up the execution stack for the
continuation and aborting if it is full. Desk checking revealed another potential case
of the same problem, fixed in the same patch.

[psi/zcolor.c]

2009-03-02T19:54:01.945423Z Ray Johnston

Add mention of 'vewrgb.ps'. See the source for usage.

[doc/Psfiles.htm]

2009-03-02T19:47:28.992085Z Ralph Giles

Update copyright header and file metadata for viewrgb.ps.

[lib/viewrgb.ps]

2009-03-02T18:45:32.781041Z Ray Johnston

Add support for BITS=2, remove left over debugging messages. Note that
this has only been tested for BITS=1, BITS=2, BITS=8. BITS=4 is not
supported (Indexed color space is limited to palette of 4096 colors).

[lib/viewrgb.ps]

2009-03-02T17:44:22.371407Z Ray Johnston

Add a utility to view bitrgb files (derived from viewcmyk.ps)

[lib/viewrgb.ps]

2009-03-02T06:13:02.641888Z Alex Cherepanov

When /JBIG2Decode filter takes /.jbig2globalctx parameter and retains a
pointer to it, the filter must not be allocated in global memory if the
parameter is local. Bug 690308.

[psi/zfjbig2.c]

2009-02-28T00:03:41.220730Z Ralph Giles

Remove a continued line in a makefile variable.

Solaris 'make' doesn't like this. Bug 690311.

[psi/psromfs.mak]

2009-02-26T04:07:56.132242Z Ray Johnston

Fix for access to potentially uninitialized memory in gx_hld_get_gstate_ptr
when called with an imager_state that is on the stack (as it is when this
is called from the clist). Valgrind spotted this. See coment #5 in Bug
690299.

DETAILS:

The previous method of checking the object type depended on access BEFORE
the pointer. This was (margnially) OK for allocated objects, but NOT OK
when the structure is stack based.

[base/gsstate.c base/gxclist.c base/gxistate.h base/gdevvec.c base/gxhldevc.c]

2009-02-26T03:51:58.114906Z Ray Johnston

Add some documentation on a useful debugging PS operator and it's C code hook.

[doc/Language.htm]

2009-02-23T19:17:44.665816Z Marcos H. Woehrmann


Change the maxval value for pkm and pkmraw files from 1 to 255.

Details:

Some programs (notably Adobe Photoshop through at least CS4) do not
correctly read PPM files that have a maxval!=255, displaying them
as all black (technically not entirely black, but with pixels set
to 0 or 1).  

This change causes Ghostscript to set maxval to 255 and scale the
output bitmap to 0..255.  Because PBM doesn't pack pixels in the
PPM raw format the output file size will not change; PPM files will
up to double in size (previously each pixel used 6 bytes, "1 1 1 ",
now each pixel uses up to 12 bytes, "255 255 255 ").

[base/gdevpbm.c]

2009-02-23T11:35:26.753646Z Ken Sharp

Fix (ps2write)

Details
The Debug flag for the new 'center pages' switch was incorrectly spelled as PDFR_DEBUG1 instead of PDFR_DEBUG.

[Resource/Init/opdfread.ps]

2009-02-21T20:59:34.903436Z Ralph Giles

Update the msvc build of the freetype bridge for the new link scheme.

This commmit fixes some errors in the earlier untested update. In addition, the earlier FT_LIB (singular) makefile variable is resurrected for the msvc build only. It is necessary because the freetype project file embeds the release number of build variant in the library filename. If FT_LIB is not set it defaults to the multi-threaded debug build of the 2.3.8 release. Obviously this should be changed when building a binary for release, or against a different version of the freetype library.

[base/winlib.mak doc/Make.htm]

2009-02-20T23:17:14.675067Z Ralph Giles

Replace the hardcoded reference to the FreeType library subpaths with a
more direct specification of compile and link flags.

The msvc build is untested.

Details:

Previously, the top level makefile was supposed to define a path to the
freetype source directory, along with the platform-specific library
filename extension. From this the ft bridge makefile section generated
specific references for include paths and the library. This only worked
with a specific version of the library.

This commit removes the variable for passing the library extension,
and relies on the top-level makefile to provide the link commands,
passed in the FT_LIBS variable. Such link commands are generally
platform-specific anyway, so FT_LIB_EXT was redundant. Likewise,
the include path specifiers must be part of the FT_CFLAGS variable.

Previously, FT_LIBS was called FT_LIB. We generally use _LIB for a
single library name. Having the plural LIBS is more common for an
actual link command, which may include flags and other libraries
which are dependencies. This variable is used in the second way.

The build documentation is also updated to reflect the new scheme,
and mention the incremental font support, which seems to be disabled
in most builds.

[base/winlib.mak doc/Make.htm psi/int.mak]

2009-02-20T23:17:10.859552Z Ralph Giles

Add some missing dependencies to the interpreter makefile.

Strangely, these don't help ensure arch.h is built before write_t2.c.

[psi/int.mak]

2009-02-20T23:17:08.595733Z Ralph Giles

Replace 'Free Type' with 'FreeType' in the build documentation.

[doc/Make.htm]

2009-02-20T23:17:05.547619Z Ralph Giles

Update freetype includes to the currently recommended scheme.

Details:

In freetype2, the recommended method of including the headers is to
include <ft2build.h>, depending on a -I line on the compiler's command
line to select the particular location for this, usually something like
$(INCLUDE_DIR)/freetype/

This header defines macros which expand to includes for particular
features, depending on how the particular freetype instance being
built is configured.

This means that we can't have explicit dependencies on the headers we
use, so those references are also removed. This has a side effect of
making it much easier to link with a system version of freetype.

However, the fapi_ft bridge requires freetype's incremental fonts
feature, which seems not to be enabled by default.

[psi/fapi_ft.c psi/int.mak]

2009-02-20T19:10:04.104225Z Alex Cherepanov

Check that gs_init.ps can be found at $(GenericResourceDir)Init/gs_init.ps
Issue a warning if this file cannot be found. Bug 690289.

[Resource/Init/gs_res.ps]

2009-02-19T18:53:21.845051Z Ralph Giles

Update our internal copy of the libpng source to the 1.2.35 release.

[libpng]

2009-02-19T18:52:24.164375Z Ralph Giles

Move the libpng source out of the way for an upgrade.

[libpng]

2009-02-19T17:13:36.155519Z Ray Johnston

Fix for segfault reported as bug 690051 caused by the assumption that the architecture
had 32-bit integers. Thanks to Wendy for the patch.

[base/gdevsgi.h base/gdevsgi.c]

2009-02-17T20:40:38.935981Z Alex Cherepanov

Remove obsolete information from Use.htm. Ghostscript now accepts PDF from
standard input and, since rev. 610 flushpage occurs even with -dNOPROMPT .

[doc/Use.htm]

2009-02-16T20:00:17.223054Z Ralph Giles

Set native eol-style on the jasper library source. Bug 690292.

[jasper/src/libjasper/include/jasper/jas_types.h jasper/src/libjasper/jpc/jpc_cs.c jasper/src/libjasper/mif/mif_cod.h jasper/src/libjasper/pgx/pgx_enc.c jasper/src/libjasper/bmp/bmp_cod.c jasper/src/libjasper/jpc/jpc_cs.h jasper/src/libjasper/ras/ras_dec.c jasper/src/libjasper/pgx/pgx_enc.h jasper/src/libjasper/bmp/bmp_cod.h jasper/src/libjasper/base/jas_version.c jasper/src/libjasper/jpc/jpc_qmfb.c jasper/src/libjasper/ras/ras_cod.c jasper/src/libjasper/base/jas_iccdata.c jasper/src/libjasper/base/jas_seq.c jasper/src/libjasper/jpg/jpg_val.c jasper/src/libjasper/jpc/jpc_qmfb.h jasper/src/libjasper/jpc/jpc_fix.h jasper/src/libjasper/jpc/jpc_tagtree.c jasper/src/libjasper/ras/ras_cod.h jasper/src/libjasper/pgx/pgx_dec.c jasper/src/libjasper/jpc/jpc_tagtree.h jasper/src/libjasper/base/jas_getopt.c jasper/src/libjasper/jpc/jpc_mqenc.c jasper/src/libjasper/include/jasper/jas_getopt.h jasper/src/libjasper/jpg/jpg_dummy.c jasper/src/libjasper/jpc/jpc_bs.c jasper/src/libjasper/include/jasper/jas_init.h jasper/src/libjasper/jpc/jpc_enc.c jasper/src/libjasper/base/jas_string.c jasper/src/libjasper/base/jas_malloc.c jasper/src/libjasper/include/jasper/jas_string.h jasper/src/libjasper/include/jasper/jas_malloc.h jasper/src/libjasper/jpc/jpc_mqenc.h jasper/src/libjasper/pgx/pgx_cod.c jasper/src/libjasper/jpc/jpc_bs.h jasper/src/libjasper/jpc/jpc_t1enc.c jasper/src/libjasper/jpc/jpc_enc.h jasper/src/libjasper/jpg/jpg_enc.c jasper/src/libjasper/pgx/pgx_cod.h jasper/src/libjasper/jpc/jpc_t1enc.h jasper/src/libjasper/jpg/jpg_enc.h jasper/src/libjasper/include/jasper/jas_version.h jasper/src/libjasper/include/jasper/jas_seq.h jasper/src/libjasper/jpc/jpc_mqdec.c jasper/src/libjasper/include/jasper/jas_math.h jasper/src/libjasper/base/jas_stream.c jasper/src/libjasper/jpc/jpc_flt.h jasper/src/libjasper/jpc/jpc_dec.c jasper/src/libjasper/include/jasper/jas_stream.h jasper/src/libjasper/base/jas_icc.c jasper/src/libjasper/jpc/jpc_mqdec.h jasper/src/libjasper/jpc/jpc_t1dec.c jasper/src/libjasper/jpc/jpc_dec.h jasper/src/libjasper/pnm/pnm_enc.c jasper/src/libjasper/jpg/jpg_dec.c jasper/src/libjasper/jp2/jp2_enc.c jasper/src/libjasper/jpc/jpc_mqcod.c jasper/src/libjasper/jpc/jpc_t1dec.h jasper/src/libjasper/pnm/pnm_enc.h jasper/src/libjasper/base/jas_tvp.c jasper/src/libjasper/jpc/jpc_mqcod.h jasper/src/libjasper/jpc/jpc_t1cod.c jasper/src/libjasper/jpc/jpc_cod.h jasper/src/libjasper/jpc/jpc_t2enc.c jasper/src/libjasper/jpc/jpc_util.c jasper/src/libjasper/jpc/jpc_t1cod.h jasper/src/libjasper/jpc/jpc_t2enc.h jasper/src/libjasper/jpc/jpc_util.h jasper/src/libjasper/jpg/jpg_cod.h jasper/src/libjasper/jpc/jpc_mct.c jasper/src/libjasper/include/jasper/jas_image.h jasper/src/libjasper/include/jasper/jas_debug.h jasper/src/libjasper/pnm/pnm_dec.c jasper/src/libjasper/jpc/jpc_mct.h jasper/src/libjasper/include/jasper/jas_config_win32.h jasper/src/libjasper/jpc/jpc_math.c jasper/src/libjasper/jp2/jp2_dec.c jasper/src/libjasper/jpg/jpg_jpeglib.h jasper/src/libjasper/jpc/jpc_math.h jasper/src/libjasper/jp2/jp2_dec.h jasper/src/libjasper/base/jas_cm.c jasper/src/libjasper/include/jasper/jas_icc.h jasper/src/libjasper/include/jasper/jas_cm.h jasper/src/libjasper/jpc/jpc_t2dec.c jasper/src/libjasper/pnm/pnm_cod.c jasper/src/libjasper/base/jas_init.c jasper/src/libjasper/jp2/jp2_cod.c jasper/src/libjasper/include/jasper/jas_config.h jasper/src/libjasper/jpc/jpc_t2dec.h jasper/src/libjasper/pnm/pnm_cod.h jasper/src/libjasper/jp2/jp2_cod.h jasper/src/libjasper/bmp/bmp_enc.c jasper/src/libjasper/include/jasper/jas_tvp.h jasper/src/libjasper/jpc/jpc_t2cod.c jasper/src/libjasper/bmp/bmp_enc.h jasper/src/libjasper/jpc/jpc_t2cod.h jasper/src/libjasper/base/jas_image.c jasper/src/libjasper/base/jas_debug.c jasper/src/libjasper/include/jasper/jas_fix.h jasper/src/libjasper/ras/ras_enc.c jasper/src/libjasper/include/jasper/jasper.h jasper/src/libjasper/ras/ras_enc.h jasper/src/libjasper/jpc/jpc_tsfb.c jasper/src/libjasper/bmp/bmp_dec.c jasper/src/libjasper/jpc/jpc_tsfb.h jasper/src/libjasper/mif/mif_cod.c]

2009-02-16T19:58:09.175955Z Ralph Giles

Convert a jasper source file to unix line endings. Bug 690292.

[jasper/src/libjasper/jpc/jpc_qmfb.c]

2009-02-14T00:46:58.521562Z Ralph Giles

Don't strip dynamic driver modules when linking them.

This is better done at the install or packaging stages if space is a 
concern.

Also, propagate LDFLAGS to the link command line. This may or may not be 
what you want, but is more likely to help helpful than not.

After a patch by Kevin Pyle. Bug 690288. Originally Gentoo bug 215913.

[base/devs.mak]

2009-02-13T09:22:34.492616Z Ken Sharp

Fix (TrueType interpreter): Ignore a 'faulty font' condition

Details:
bug #689760 "Missing characters: Failed to interpret TT instructions"

The font in question is technically invalid. The problem occurs in function 1 of the
FPGM table:

	00069: PUSHB[2]              0    21 
	00072: JMPR       
	00073: ABS        
	00074: DUP        
	00075: ROLL       
	00076: RCVT       
	00077: DUP        
	00078: ROLL       
	00079: SUB        
	00080: ABS        
	00081: PUSHB[1]             50 
	00083: LT         
	00084: IF         
	00085: SWAP       
	00086: EIF        
	00087: POP        
	00088: ROUND[Black] 
	00089: PUSHB[1]             64 
	00091: MAX        
	00092: ENDF       

The JMPR (jump relative) instruction is intended to resume execution at the ENDF
instruction, but the number of bytes is miscounted, falling of the end of the function.
I suspect some TT interpreters catch this by spotting the fact that the IP is past the
end of the function.

We don't seem to be able to check if we've fallen off a function, because we don't store
function lengths, so this code works around the problem by checking the opcode after we
apply the JMPR but befopre resuming execution. If the opcode is *not* ENDF, but the 
preceding opcode was, assume that we have a counting problem, and move the IP back one
instruction.

Also applied the same work around to JROT and JROF instructions.

[base/ttinterp.c]

2009-02-12T21:07:53.759360Z Alex Cherepanov

Limit the length of a buffer string for CCITTFaxEncode compression in
Type 32 font to 65535. Old code used worst case estimation (5x expansion)
that exceeded maximum string size for large glyphs. Bug 690286.

[Resource/Init/gs_typ32.ps]

2009-02-11T20:35:13.542448Z Henry Stiles

Revert the last change which was completely wrong.  The system does
not support depth 3 as Ray pointed out.  As it turns out the depth is
corrected so there is no difference in output between the two
configurations.

[base/gdevbit.c]

2009-02-11T19:37:42.026795Z Henry Stiles

The default bitrgb device prototype specified a depth of 4 instead of
3.  This change will break all regression tests that use bitrgb
(hopefully).

[base/gdevbit.c]

2009-02-11T15:41:25.950909Z Ken Sharp

Fix (TrueType interpreter): Ignore a 'faulty font' error

Details:
bug #689471 "Error in Processing Type42 Charstrings"

The font in question is missing a glyph in the GLYF table, which is used 
as a component by a composite glyph. A later instruction then tries to access 
a non-existent point (probably defined in the missing component), which causes
an error.

FreeType 1 and 2 both ignore this error unless pedantic_hinting is set, other
TrueType interpreters behave similarly.

Modified the code in Ins_MIAP to ignore errors of this type, and continue.

[base/ttinterp.c]

2009-02-10T19:55:40.527955Z Ralph Giles

Move some components of the freetype bridge to the interpreter source 
directory.

These should have been put there in the source tree reorganization.

[base/write_t1.c base/wrfont.c base/write_t2.c psi/write_t1.c psi/wrfont.c psi/write_t2.c base/write_t1.h base/wrfont.h base/write_t2.h psi/write_t1.h psi/wrfont.h psi/write_t2.h]

2009-02-10T17:38:02.642910Z Marcos H. Woehrmann

Make the font cache determinstic.

Details:

Previously the font cache order was based on the value of the pair
pointer.  On some (most?) computers this resulted in the cache being
filled in a deterministic way but not on the the cluster used for
regression testing.  The cache fill order is important because it
affects which entries are removed when the cache is full which
matters because re-rendered glyphs can differ from the cached
rendering (a separate bug, 690281, has been opened for this issue).

Fixes bugs 690232 and 690233.

[base/gxfcache.h base/gsfont.c base/gxccman.c]

2009-02-10T11:56:30.899368Z Ken Sharp

Fix (graphics library): Rotated/skewed text not anti-aliased

Details:
bug #688032 "Rotated text is not antialiased."

A specific test in 'show_set_scale' disabled oversampling of text if it was
rotated or skewed. Testing indicates that anti-aliasing does provide some improvement 
in text, even when it is rotated or skewed, so this test has been removed.

Also removed the compile-time option to not cache rotated glyphs by removing the
#define CACHE_ROTATED_CHARS and the test against it in show_state_setup. This allowed
the removal of the routine 'is_matrix_good_for_caching'.

[base/gxchar.c]

2009-02-10T02:17:30.702347Z Ralph Giles

Propagate LDFLAGS when linking the pdftoraster utility. Bug 690279.

Also, move the cups link libraries to the end of the command line
for tools that require dependency order.

[cups/cups.mak]

2009-02-09T22:18:20.864249Z Ralph Giles

Protect some printf-like calls in the pcl3 output device from spurious
format specifiers. This eliminates a security-related gcc warning.

Details:

I believe the previous code was actually safe. However, this approach is
more robust. If any of the string buffers passed to errprintf() happened
to contain a format specifier (like %d) an out of bounds stack reference
could result.

This allows the default build to complete with -Werror=format-security,
which the Mandriva linux distribution is reported to be using.

[contrib/pcl3/eprn/gdeveprn.c contrib/pcl3/src/gdevpcl3.c]

2009-02-09T22:18:18.594295Z Ralph Giles

Have gs_throw_code() print the corresponding error string literally to
avoid interpretation of spurious format specifiers. This removes a
security-related gcc warning.

Details:

The previous code was safe. gs_(re)throw_code() called gs_errstr() to
convert the code to a printable string, and these contain no format
specifiers. However, the new method is more robust, and allows
compilation with -Werror=format-security which Madriva is reportedly
using by default.

[base/gserror.h]

2009-02-09T00:32:35.099915Z Alex Cherepanov

Add a reference to doc/Use.htm#CIDFontSubstitution to the message about
CIDFont substitution based on registery and ordering data. Bug 690102.

[Resource/Init/pdf_font.ps]

2009-02-08T06:05:54.380114Z Alex Cherepanov

Correct handling of the operand stack overflow requires one more element than
the normal case. The maximum operand stack size has been reduced by 1 element
relatively to the size set by rev. 6889 for the bug 688764. Bug 690209.

[Resource/Init/gs_init.ps]

2009-02-06T19:17:54.834304Z Ray Johnston

Fix for 0 length files from the bit*** devices when -dLastLine was not set.
The LastLine now defaults to the last line of the page (height-1). Bug 690217.
Thanks to Piotr Strzelczyk for spotting this.

DETAILS:

Note that this prevents output of a single line at the top (line 0), but this
was mostly just for testing to emulate custom devices that only call 'get_bits'
on less than all of the lines which had the potential to confuse the thread
lookahead prediction logic in the multi-threaded rendering case.

[base/gdevbit.c]

2009-02-05T13:29:10.275517Z Ken Sharp

New feature (pswrite): Center pages on output, new switch -dCenterPages

Details:
bug #690100 "Enhancement request: create centered output when reading PDF"

Added a new switch to the collection of media handling controls supported by ps2write. The new CenterPages switch will center the output image on the media, regardless of the size of the media (if the output is larger than the media it will be truncated, but the image will still be centered on the media).

This switch is compatible with the RotatePages control, but not with SetPageSize or FitPages. Like the other switches it can be set as an argument to ps2write when creating a PostScript file (which fixes the result) or it can be supplied to the consuming interpreter in some fashion.

Updated ps2ps2.htm with the new details.

[doc/Ps2ps2.htm base/gdevpdfx.h base/gdevpdfp.c Resource/Init/opdfread.ps base/gdevpdfu.c]

2009-02-04T08:45:21.899308Z Ken Sharp

Fix (pdfwrite): Limit on CIDFont size too low

Details:
bug #688736 "ps2pdf does not work on these files"

The 'remaining' issue in these files is the 'error -15' problem. This is caused when writing out a subset CIDFont, and the subset grows to be a large font in its own right.

The way that CFF fonts are written, there is interaction between certain parts. The offset of various tables depends on the size of the Top Dict, but the Top Dict contains the offsets of the CharStrings and the CharSet, so its size is partially dependent on those offsets....

The code in psf_write_cid0_font() initially assigns large values (0x7fffff) to the offsets, then iterates over the data quickly converging on a suitable size of offset, which allows calculation of the Top Dict. 

The problem was that 0x7fffff was too small for the offset of the Font Dict, (which comes after the CharStrings) if the CharStrings table was very large (~8MB). While this is probably adequate in 'real life', because its unlikely a real job would contain so many different glyphs, it is simple to solve by increasing the original 'guess' from 0x7fffff to 0x1ffffff (~32MB), which should be enough for any font.

[base/gdevpsf2.c]

2009-02-04T08:44:40.067265Z Ken Sharp

Fix (pswrite): Incorrect A3 page size

Details:
bug #690259 "A3 pagesize pointsize definition wrong in gdevpsu.c"

The definition of the A3 paper size was 842 by 1190 in psw_write_page_header(). The definitions elsewhere in GS have a height of 1191 (which is closer to the ISO metric paper size).

Modified the page height to be 1191, also modified the media matching code so that it allows +/- 5 points when matching media.

Thanks to Roland Friedwagner for debugging the problem and supplying a patch, and to Alex Cherepanov for suggesting the media matching.

[base/gdevpsu.c]

2009-02-04T03:39:35.058845Z Alex Cherepanov

Keep reading the data sources until all of them reach EOF instead of bailing
out when the first one reaches EOF. Different data sources can use different
compression techniques and buffer sizes. The mask in masked images also has
different length than other streams.
Bug 690237, customer 850.

[psi/zimage.c]

2009-02-03T23:56:30.290105Z Alex Cherepanov

Add one more header type to the list of possible CFF headers.
Bug 690256, customer 210.

[Resource/Init/pdf_font.ps]

2009-02-03T19:23:42.937693Z Ralph Giles

Bump version number and product name after the 8.64 release.

[base/gscdef.c base/version.mak Resource/Init/gs_init.ps doc/News.htm]

2009-02-03T17:03:41.696119Z Ralph Giles

Update release date and change logs for the 8.64 release.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2009-02-02T19:13:01.319812Z Ralph Giles

Update change logs and release date for 8.64rc3.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2009-02-02T08:58:11.805173Z Ray Johnston

Fix broken bbox device caused by the 'fillpage' commit of rev 9288. This
resolves bug 690260 and other cases where the bbox was all 0's.

DETAILS:

When the 'RECT_IS_PAGE' check was removed, the BBOX_INIT_BOX function was
invoked unconditionally MUCH too often, leading to an empty bbox (0's)
which also caused the x11 device to not update many areas from the under-
lying image24 buffer to the screen. The 'BBOX_INIT_BOX' should only be
needed when the params change the geometry or when 'fillpage' is done.

[base/gdevbbox.c]


Version 8.64 (2009-02-02)

This is the fifth scheduled release in the stable Ghostscript 8.6x series.

Approximately 100 bugs have been fixed since the 8.63 release.

Of particular note in this release are improvements to overprint and spot color support in documents with transparency, improvements to PDF and PS output, proper handling of PDF-specific text rendering modes and support for reading AES-encrypted PDF documents.

Also improved is handling of CJK text, especially in vertical writing modes, memory footprint processing some files at high resolution and support for using the system's default paper size on unix.

The interpreter's handling of color spaces has been moved from PostScript code to C.

A number of the included printer drivers and cups wrappers have been updated to support a PDF-based workflow. Also fixed are several long-standing bugs in the pcl drivers with respect to duplex, resolution and paper tray selection.

The following bugs were open at the time of the last release:

226943, 430175, 465936, 493348, 535932, 578865, 614298, 626295, 686853, 686865, 687011, 687084, 687095, 687146, 687193, 687257, 687271, 687280, 687295, 687297, 687303, 687327, 687375, 687414, 687475, 687492, 687514, 687520, 687536, 687561, 687593, 687608, 687630, 687650, 687666, 687674, 687677, 687695, 687697, 687702, 687715, 687721, 687728, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687850, 687887, 687903, 687904, 687915, 687931, 687950, 687981, 687983, 688007, 688022, 688024, 688026, 688032, 688036, 688042, 688061, 688064, 688081, 688130, 688166, 688184, 688187, 688204, 688210, 688215, 688227, 688267, 688269, 688280, 688288, 688312, 688318, 688320, 688333, 688342, 688361, 688363, 688372, 688386, 688387, 688389, 688395, 688413, 688436, 688437, 688440, 688448, 688473, 688475, 688483, 688495, 688500, 688515, 688528, 688533, 688539, 688540, 688542, 688557, 688565, 688580, 688581, 688601, 688604, 688605, 688607, 688616, 688617, 688627, 688636, 688638, 688647, 688651, 688655, 688673, 688699, 688708, 688709, 688710, 688714, 688728, 688731, 688736, 688757, 688777, 688797, 688818, 688829, 688843, 688846, 688871, 688872, 688908, 688918, 688919, 688926, 688933, 688942, 688949, 688958, 688969, 688978, 688990, 688994, 688999, 689003, 689011, 689013, 689025, 689028, 689031, 689032, 689040, 689044, 689046, 689048, 689057, 689060, 689070, 689076, 689077, 689078, 689081, 689093, 689094, 689098, 689133, 689137, 689145, 689150, 689153, 689161, 689167, 689174, 689184, 689188, 689195, 689198, 689199, 689209, 689222, 689224, 689236, 689247, 689248, 689252, 689253, 689278, 689279, 689280, 689283, 689289, 689290, 689295, 689308, 689331, 689335, 689340, 689341, 689361, 689370, 689376, 689378, 689392, 689396, 689418, 689419, 689421, 689422, 689423, 689438, 689439, 689450, 689451, 689456, 689460, 689471, 689484, 689487, 689489, 689490, 689498, 689500, 689502, 689506, 689507, 689512, 689518, 689522, 689546, 689547, 689549, 689554, 689557, 689560, 689561, 689563, 689566, 689571, 689573, 689574, 689581, 689584, 689585, 689591, 689592, 689595, 689598, 689601, 689606, 689610, 689616, 689623, 689625, 689627, 689632, 689636, 689641, 689653, 689657, 689658, 689663, 689670, 689674, 689681, 689682, 689684, 689689, 689690, 689691, 689697, 689698, 689704, 689705, 689709, 689710, 689711, 689715, 689721, 689725, 689726, 689727, 689734, 689737, 689741, 689747, 689752, 689756, 689759, 689760, 689761, 689767, 689769, 689772, 689775, 689778, 689781, 689786, 689792, 689793, 689794, 689799, 689801, 689805, 689808, 689817, 689822, 689823, 689826, 689835, 689836, 689840, 689853, 689856, 689858, 689859, 689860, 689861, 689862, 689868, 689869, 689870, 689871, 689878, 689883, 689885, 689910, 689915, 689916, 689917, 689928, 689929, 689930, 689931, 689933, 689937, 689938, 689939, 689940, 689941, 689942, 689943, 689947, 689950, 689951, 689952, 689957, 689968, 689969, 689972, 689974, 689980, 689986, 689991, 689996, 689997, 690003, 690005, 690006, 690007, 690009, 690020, 690022, 690024, 690025, 690026, 690029, 690033, 690036, 690043, 690047, 690051, 690053, 690054, 690056, 690057, 690058, 690061, 690066, 690068, 690069, 690073, 690083, 690084, 690085, 690093, 690094, 690098, 690100, 690102, 690110, 690115, 690119, 690123, 690125, 690126, 690131, 690132, 690137, 690143, 690146, 690157, 690160, 690162, 690170, 690171, 690174, 690176, 690180, 690182, 690183, 690184, 690185, 690189, 690191, 690192, 690199, 690200, 690203, 690207, 690208, 690209, 690212, 690213, 690214, 690216, 690218, 690224, 690225, 690226, 690229, 690230, 690232, 690233, 690234, 690235, 690237, 690238, 690239, 690241, 690246, 690247, 690248, 690249, 690250, 690251, 690253, 690256, 690259, 690261, 690262, 690263, 690264.

Incompatible changes

In this release the C source files have been split into two new directories. Interpreter source files are now in psi and the graphics library and output devices are now in base. Previously everything was in src. This may cause problems with existing references in external build files or when applying patches generated against an older version.

The compiled in font set in Resource/Fonts has been updated to the version from the 8.11 release. This is the same set which was recommended prior to the 8.63.

Changelog

2009-02-02T08:58:11.805173Z Ray Johnston

Fix broken bbox device caused by the 'fillpage' commit of rev 9288. This
resolves bug 690260 and other cases where the bbox was all 0's.

DETAILS:

When the 'RECT_IS_PAGE' check was removed, the BBOX_INIT_BOX function was
invoked unconditionally MUCH too often, leading to an empty bbox (0's)
which also caused the x11 device to not update many areas from the under-
lying image24 buffer to the screen. The 'BBOX_INIT_BOX' should only be
needed when the params change the geometry or when 'fillpage' is done.

[base/gdevbbox.c]

2009-02-02T08:52:01.582216Z Ray Johnston

Revert the patch of 9314 that caused a problem with the Ubuntu bug 160203
(https://bugs.launchpad.net/ubuntu/+source/ghostscript/+bug/160203). This
patch appears to be a fix for a much older (~2004) version of gs and should
not be needed as of rev 8161 that resolved segfaults when there is a NULL
get_color_mapping_procs pointer. The mapping of 'black' and 'white' is
needed to properly allow for non-white painting in the bbox device to
avoid 0 0 0 0 BoundingBox.

[base/gdevbbox.c]

2009-01-30T21:10:55.690493Z Russell Lang

Add the default papersize module to the OS/2 build.

[psi/os2.mak]

2009-01-27T23:04:37.869301Z Ralph Giles

Update the directory listing the license for the source code
reorganization.

[LICENSE]

2009-01-27T22:40:23.384111Z Ralph Giles

Update internal copyright string.

[base/gscdef.c]

2009-01-27T21:00:23.120021Z Ralph Giles

Update changelogs and release dates for 8.64rc2.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2009-01-27T20:50:54.789641Z Ralph Giles

Update the release notes for 8.64rc2.

The x11alpha issue has been worked around.

Add some comments from Till Kamppeter.

[doc/News.htm]

2009-01-27T20:43:39.460217Z Ralph Giles

Fix fillpage in the x11alpha device.

This reverts an incorrect code change which prevented the fillpage
method of the x11alpha device from clearing the buffer. Bug 690255.

Details:

In r9288, a new fillpage method was added. This is a stub in printer
devices, but is overridden to detect page flushes in some high
level devices. That commit included incomplete changes to gdevxini.c
which didn't compile. Alex suggested a fix in 690202, which was
committed as r9294 after approval from the author of 9288. This was
what broke page clearing in the x11alpha device.

This commit removes the changes both commits made to the x11 devices and
restores gdevxini.c to its state prior as of r9287.

[base/gdevxini.c]

2009-01-27T20:43:37.567128Z Ralph Giles

Update documentation on the COMPILE_INITS makefile variable.
In particular, it's normally no longer 0.

Thanks to Ken Sharp for pointing this out.

[base/gs.mak]

2009-01-27T20:43:33.967975Z Ralph Giles

Escape significant characters when generating html changelog entries.

[toolbin/split_changelog.py]

2009-01-27T00:18:29.136711Z Ralph Giles

Remove $(GS_LIB)\Resource directory from the search path in the msvc 
build to shadowing the compiled in version.

GS_LIB is set in the Windows registery by the installer, but it does not 
currently install a duplicate copy of the Resource tree in the 
filesystem. Having this directory in the search path caused Ghostscript 
to use it for Resource lookup to the exclusion of the %rom% version, and 
since the files weren't installed there, Ghostscript would error out in 
the initialization phase.

Files like cidfmap and available fonts can still be overridden by 
putting them in $(GS_LIB)\lib and $(GS_LIB)\fonts.

Patch from Russell Lang.

[psi/dwsetup.cpp]

2009-01-26T19:25:28.295228Z Ralph Giles

Update changelogs for 8.64rc1.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

2009-01-26T18:59:39.072673Z Ralph Giles

Release notes for 8.64rc1.

[doc/News.htm]

2009-01-26T18:05:53.102397Z Ralph Giles

Propagate release number and date to the documentation.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2009-01-26T18:04:16.208144Z Ralph Giles

Bump release numbers and copyright dates for 8.64rc1.

[base/gscdef.c base/version.mak doc/News.htm psi/dwsetup.rc psi/winint.mak doc/Release.htm]

2009-01-26T18:02:43.525231Z Ralph Giles

Work around an issue with comment parsing in the pre.tcl release script.

My tclsh seems to be broken.

[toolbin/pre.tcl]

2009-01-26T18:02:41.107170Z Ralph Giles

Update the pre.tcl release script for the new source locations.

[toolbin/pre.tcl]

2009-01-26T18:02:37.633990Z Ralph Giles

Update the pre.tcl release script for the new gs_init.ps location.

The essential ps library files were moved from lib to Resource/Init for
clarity and simpler behavior with compile-inits.

[toolbin/pre.tcl]

2009-01-26T17:33:36.155851Z Ken Sharp

Fix (pswrite): Incorrect PageBoundingBox comment location

Details:
The new %%PageBoundingBox comment was being emitted between a %%BeginPageSetup and %%EndPageSetup comment pair, which was causing it to be ignored by CUPS.

Moved the bounding box in front of the page setup comment

[base/gdevpsu.c]

2009-01-26T17:16:47.546837Z Ken Sharp

Yet more tidying up in the batch file. Adds release builds to the solution, better directory handling, a usage comment in the batch file and, if invoked without parameters, a usage printout for the user.

[toolbin/msvcxml.bat]

2009-01-25T06:59:45.428302Z Ralph Giles

Make the GS_SPLIT_LIBS configure function only recognize -l at the start 
of an argument, to avoid false positives from hyphens inside linker 
arguments. Bug 690254.

[base/configure.ac]

2009-01-24T09:31:46.808669Z Ken Sharp

This batch file, to generate a MSVC solution for building GS, was invalidated by the source re-organisation, and the inclusion of the resources in a ROM file system.

Fixed various aspects so that it now works again, basically.

[toolbin/msvcxml.bat]

2009-01-24T09:05:50.373013Z Ken Sharp

Add a check when comparing clip paths to see if both are NULL. Silences a Coverity warning and one day might conceivably prevent a crash.

[base/gdevpdfd.c]

2009-01-23T22:53:02.093705Z Ralph Giles

Convert 24 bit RGB data to grayscale when printing in monochrome with
eplaser device. Previously the RGB data was sent as is, resulting in
a stretched and truncated page image.

Patch from Olaf Meeuwissen. Bug 690252.

[contrib/eplaser/gdevescv.c]

2009-01-23T19:04:40.484432Z Alex Cherepanov

Continue the the fix from rev. 9384, plug 2 more ways that caused multiple
inclusion of page objects into the linearized file. Bug 690140, customer 932.

[lib/pdfopt.ps]

2009-01-23T03:10:05.467096Z Ralph Giles

Use the page parameters set on the X11 device when called by Ghostview.

This patch allows gv to control the output page parameters, overriding
document and gs default settings. Since it has been tested in the
Debian distribution and is contingent on being wrapped by the viewer,
I consider it low risk.

Original patch by William Bader. Bug 688943.

[base/gdevxini.c]

2009-01-22T13:53:18.843673Z Ken Sharp

Initialise two uninitialised variables. Not thought to be a real problem, but worth making certain. Flagged by Coverity.

[base/gdevpsf1.c base/gdevpsfx.c]

2009-01-22T13:15:07.920292Z Ken Sharp

Check the return value of gdev_prepare_stroke. Another warning from Coverity.

[base/gdevps.c]

2009-01-22T02:53:01.653019Z Alex Cherepanov

Fix multiple inclusion of page objects referenced from beads array.
Bug 690140, customer 932.

[lib/pdfopt.ps]

2009-01-22T01:48:31.483983Z Ray Johnston

Fix for Segfault with tiffsep devics when a file has more than 64 spot colors
and uses transparency. Clean up indentations to C-style. Problem seen with
Bug 690157.

DETAILS:

The number of channels needed in the pdf14 device is one greater than the
number of separations, to allow for the alpha channel (gxblend.h) and the
'comps' variable needs to be at a gx_color_index size to avoid truncation.

Note that the output from tiffsep and psdcmyk is still incorrect -- there
is a gray background in the black channel that is not expected. Also, the
color swatches defined as Alternate colors do not appear in the output,
only the Separations and the device (process) colors.

Also note that this does not address comment #5 from bug 690157 since the
default behavior when the maximum number of separations is reached is to
silently use the Alternate color.

This patch is primarily designed to cure the segfault (buffer OOB) issue.

[base/gdevp14.c base/gxblend.h]

2009-01-22T01:17:35.554315Z Alex Cherepanov

Check for and skip null objects (and other junk) in the /Anots array.
Bug 690244.

[Resource/Init/pdf_main.ps]

2009-01-21T15:34:55.892148Z Ken Sharp

Add a couple of error return checks which were missing. Picked up by Coverity.

[psi/zcolor.c psi/zicc.c]

2009-01-19T11:13:05.930829Z Ken Sharp

Revision 8951 missed an important part of the fix for pswrite, emitting a %%PageBoundingBox for each
page of the output.

[base/gdevpsu.c]

2009-01-19T09:47:56.340575Z Ken Sharp

Fix (pswrite): %%BoundingBox comment geenration
   (ps2write): media selection and %%BoundingBox generation

Details:
bug #690236 "Ghostscript is not able to convert PDF to PostScript 
maintaining the input document's page sizes"

The pswrite bug is actually in the consuming applications, which are unable to 
process the media selection requests in the pswrite output and instead use DSC
comments to select the media. pswrite attempts to use the bbox deice to generate a
%%BoundingBox comment, but because this is a high-level device, no marks are made, so 
the BoundingBox is 0 0 0 0. 

Fixed by using the media size instead if this case is detected.


ps2write did not generate a %%BoundingBox, or any other DSC comment at all, because it
does not produce DSC PostScript (there is a request to address this already #690064).
Also the media selection in the ps2write output is disabled by default, forcing users
to find some means to set particular keys in userdict on the target device.

Fixed by emitting a %%BoundingBox equal to the media size of the first page (NB as
this is not DSC, other pages will be selected incorrectly if this is all the
application uses). Also allow the use of the /SetPageSize, /RotatePages and /FitPages
keys during ps2write processing to emit a PostScript file with these keys already
set, thus allowing media selection to take place without further user intervention.

[doc/Ps2ps2.htm base/gdevpdfx.h base/gdevpsu.c base/gdevpdfp.c base/gdevpdfu.c base/gdevpdfb.h]

2009-01-18T19:57:58.223740Z Alex Cherepanov

Fix SEGV in 'inferno' device caused by insufficient memory allocation. Pass
correct device type to prn_device_body() macro. thanks to Wendy for the patch.

[base/gdevifno.c]

2009-01-16T18:38:48.474888Z Ken Sharp

Fix (pdfwrite): Invalid metadata for PDF/A output

Details:
bug #690046 "Ghostscript doesn't produce valid PDF/A-1B files"

Now that we have an example file, the remaining issues are resolved:

1) The recommended tags for font metadata in the ISO spec are not present in the XMP schema, resulting in Acrobat preflight complaining. Distiller does not (and never has, apparently) write font metadata for PDF/A files, and the spec says only that files 'should' contain metadata. For now we disable writing font metadata to match Distiller.

2) When converting TrueType fonts into CIDFonts, for PDF/A compatability, we must also write a CIDSet resource. The code was creating and initialising a table containing an explicit 256 entries, but the CIDSet resource was writing as many entries as there are glyphs in the base font. If this was larger we wrote uninitialised data to the CIDSet. Altererd to create and initialise a table the size of the number of glyphs in the base font.

[base/gdevpdtd.c base/gdevpdfe.c]

2009-01-16T05:03:44.102465Z Ralph Giles

Move the font api bridge implementations to the psi directory.

Bug 690231, fixes the language switch build with ufst.

These are referenced from int.mak and depend on interpreter-level 
headers. So while the font api should be part of the graphics library, 
these files actually belong in the interpreter.

[psi/fapi_ft.c base/fapiufst.c psi/fapiufst.c base/fapi_ft.c]

2009-01-15T15:22:39.193218Z Ken Sharp

Update a comment to say why the minimum file size is 4KB

[lib/pdfopt.ps]

2009-01-15T15:20:15.993430Z Ken Sharp

Fix (pdfopt): Minimum optimised file size changed in Acrobat 9

Details:
bug #690210 "Inconsistent "fast web view' results"

It seems Acrobat 9 will decide that any file less than 4Kb in size is not optimised for fast web view, regardless of content. Previous versions of Acrobat insisted on a minimum of 1Kb.

[lib/pdfopt.ps]

2009-01-15T09:16:00.166572Z Ken Sharp

Fix (pdfwrite)

Details:
revision 9346 sets the about member of the XMP metadata to empty ("") unconditionally, this should only be done when writing PDF/A files.

[base/gdevpdfe.c]

2009-01-15T07:52:13.786371Z Alex Cherepanov

Fix compilation on Windows NT, which doesn't define LOCALE_IPAPERSIZE.

[base/gp_wpapr.c]

2009-01-14T22:58:56.327548Z Ralph Giles

Check for a null target_info in bbox_image_end_image before
trying to free it. Fixes bug 680019.

[base/gdevbbox.c]

2009-01-14T11:15:24.692365Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued 7).

DETAILS :

Bug 690228 "pcl6 regression".

Don't write a pattern in the short form (just tile id)
to the "all bands" list if some bands don't store same tile id.
Otherwise those bands would be confused and try to call pattern_load,
which is not supported while a clist playback. 

[base/gxclpath.c]

2009-01-13T22:17:21.104569Z Alex Cherepanov

Return 0 when accessing Type1C font table out of range or the table is too
short and display a warning if possible. Bug 690050, customer 353.

DETAILS:
Old code smashed the stack when operator read was unsuccessful and failed
shortly afterwards. New code tolerates PDF files produced by 'Exstream
Dialogue', which have Type1C fonts with overlapping tables, which Ghostscript
shortens to non-overlapping length. Thanks to Ray for the origimal patch.

[Resource/Init/gs_cff.ps]

2009-01-13T18:38:37.869412Z Ray Johnston

Revert .outputattrkeys to the list prior to rev 8026 to fix problems with
Duplex introduced with that change. Bug 690041.

[Resource/Init/gs_setpd.ps]

2009-01-12T19:33:58.722824Z Ralph Giles

Fix a gcc warning in gxshade6.c.

When VD_TRACE is not defined, vdtrace.h defines most of its operations
as DO_NOTHING, but with was not done for vd_restore and vd_disable,
causing compiler warnings in gxshade6.c, where vd_disable is called
as the sole body of an if() statement.

Bug 690204.

[base/vdtrace.h]

2009-01-12T16:51:59.689070Z Ken Sharp

Fix (pdfwrite): Invalid metadata for PDF/A output

Details:
bug #690046 "Ghostscript doesn't produce valid PDF/A-1B files"

This does not, unfortunately, address some of the issues raised in the bug report,
without a sample PostScript file to work from these cannot currently be addressed.

However, there were significant problems with the XMP metadata being written:
1) The rdf attribute 'about' has changed, it is no longer recommended to use a UUID,
it should be left empty or formatted as a URI. Altered to empty.
2) The Adobe parser does not like mix and match of attributes and properties, if we
are setting properties, we can't use (at least some) attributes.
3) The preferred schema namespace prefix for the XMP basic schema is now 'xmp' not
'xap'.
4) Date syntax was incorrect for GMT. XMP specifies *either* 'Z' *or* +/-hh:mm. We
were writing 'Z00:00' (that is, both alternatives).

Also added support for the /Subject and /Keywords elements of the Document Info
dictionary, if these are present, as per the patch from Florian Haenel.

[base/gdevpdfe.c]

2009-01-10T22:11:18.954264Z Till Kamppeter

Add "-sstdout=%stderr" to scripts that call gs so that they don't corrupt their own output when outputing to stdout (Thanks to Dan Sheridan (djs at adelard dot com), Ubuntu bug #314439).

[lib/eps2eps lib/ps2pdfwr lib/ps2ps lib/ps2ps2 lib/dvipdf]

2009-01-09T08:53:40.554994Z Till Kamppeter

Added support for GNU Hurd (patch from Debian package).

[base/configure.ac]

2009-01-09T00:28:18.396434Z Ray Johnston

Correct very minor typo.

[Resource/Init/pdf_base.ps]

2009-01-08T21:28:55.852108Z Till Kamppeter

Small correction on ./configure magic for libpaper.

[base/configure.ac]

2009-01-08T12:51:35.348058Z Till Kamppeter

Added auto-detection for libpaper to the configure script

[base/configure.ac]

2009-01-08T12:43:28.851914Z Igor Melichev

Fix (TT font handler) : Wrong glyph posiitions with vertical writing mode (continued).

DETAILS :

Bug 689304 "improper handling of vertical japanese text".

This is fourth partial patch for the bug 689304.
It adds a code for processing CoverageFormat2,
which is used by IPAfont00203.

Besides that, in the old CoverageFormat1 code
subst.GlyphCount was used instead cov.GlyphCount . 
It didn't cause a problem because (we guess)
normally they are equal.

The field CoverageFormat2::RangeRecord is renamed into 
RangeArray to avoid possible conflict with same name for
a structure type. Rather it is a correct C,
we're not sure that all compilers accept it with no warning.

[base/gstype42.c]

2009-01-08T09:17:18.162362Z Russell Lang

Automatically select the default paper size from the locale
on the Windows platform, and make provision for doing this
on Linux.

DETAILS:
This adds a new platform function gp_defaultpapersize and a new 
operator .defaultpapersize.
In order of priority, the paper size is set from PAPERSIZE,
DEFAULTPAPERSIZE, .defaultpapersize, or the compiled in
device paper size.

It has been tested on Windows 98, XP and Vista.

[base/openvms.mmk base/lib.mak base/gp_paper.c doc/Use.htm doc/Develop.htm base/unix-aux.mak base/macos-mcp.mak psi/zmisc.c psi/os2.mak base/winlib.mak base/watclib.mak base/gp.h Resource/Init/gs_init.ps base/openvms.mak base/gp_upapr.c base/gp_wpapr.c doc/Language.htm]

2009-01-08T08:04:41.159684Z Russell Lang

Fix stackunderflow when specified PAPERSIZE is unknown.
Ghostscript will now use the device default page size when
PAPERSIZE is unknown.

[Resource/Init/gs_init.ps]

2009-01-07T17:36:55.528046Z Michael Vrhel

Fix for overprinting with transparency.  This fixes bugs related to the lack of overprint support when there is transparency present in the file. 

DETAILS: Previously if a sep device is used when processing a file that contains both transparency and overprinting, the overprinted colors would blow away the other sep colors.  In this commit, there was one fix to improper geometry in pfd14_cmykspot_put_image.  The remaining changes involved 1) passing overprint compositor actions to the pdf14 device, which occurs during the clist reading phase (in pdf14_create_compositor)  2) adding over_print and overprint mode to the pdf14 clist parameters (this follows the same process that is currently done for text knockout, blend mode etc) and 3) adding the actual fill support in pdf14_mark_fill_rectangle. 

EXPECTED DIFFERENCES:  In the regression tests Bug688631.pdf and Bug690206.pdf will have slight differences due to the blending of spot colors when the color space is subtractive. This matches what is seen in AR.

[base/gdevp14.c base/gdevp14.h base/gstrans.h]

2009-01-07T08:33:14.825057Z Ken Sharp

Fix (PDF Interpreter): Default Unicode decoding clashing with ToUnicode CMap

Details:
bug #690190 "Problem with -dProvideUnicode"

The ProvideUnicode switch creates a (read only) default Unicode decoding resource, presumably to use as a default ToUnicode Cmap when creating PDF files.

This interferes with PDF files which contain a real ToUnicode CMap, as the resource is read only and so cannot be updated with the content of the ToUnicode CMap.

Fixed by checking to see if the GlyphNamesToUnicode dictionary is writeable, and if it is not, creating a new one, when processing a ToUnicode CMap.

[Resource/Init/pdf_font.ps]

2009-01-06T14:38:01.194845Z Ken Sharp

Fix (pdfwrite): Missing glyphs in CIDFont causing errors.

Details:
Bug #690139: "Regression: Error writing PDF file: Missing glyph CID=0 in Bug689614.pdf".

When we find that a string in a PDF file uses a glyph which is not present in the current CIDFont we substitute the .notdef glyph (CID=0). However, if we do not have a width for the .notdef (this is the first missing glyph) we proceed to get one, and then attempt to run the CDevProc for the font.

This, unfortunately, attempts to use the original (missing) glyph, and so fails with a rangecheck error. Added a check to catch this condition and skip the CDevProc and caching.

Also improved the error message slightly.

[base/gdevpdtc.c]

2009-01-06T14:11:30.802229Z Igor Melichev

Fix (PDF interpreter) : A more explanatory message when a CID font is missing.

DETAILS :

Bug 688770 "/undefinedresource in --findresource--".

The patch prints which CID font is missing,
and a better explanation about CID font substitution and
about the related exit with error.  

[Resource/Init/pdf_font.ps]

2009-01-05T17:17:01.015629Z Marcos H. Woehrmann

Removed old code that failed in 2009.

[toolbin/bugsByEngineer.pl]

2009-01-05T14:02:04.227069Z Till Kamppeter

Added examples of PostScript files with CJK text

[examples/cjk examples/cjk/all_ag1.ps examples/cjk/iso2022.ps examples/cjk/all_aj1.ps examples/cjk/all_aj2.ps examples/cjk/all_ak1.ps examples/cjk/gscjk_ac.ps examples/cjk/iso2022v.ps examples/cjk/gscjk_ag.ps examples/cjk/gscjk_aj.ps examples/cjk/all_ac1.ps examples/cjk/article9.ps examples/cjk/gscjk_ak.ps]

2009-01-05T10:34:13.766328Z Till Kamppeter

Accidentally committed an obsolete patch. Reverted.

[base/gdevxini.c]

2009-01-04T20:20:47.824575Z Till Kamppeter

Fix sigbus/segfaults on sparc, hppa, etc. Debian bug 453903.

See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=453903 for details.

[psi/store.h]

2009-01-04T20:15:19.267170Z Till Kamppeter

Improved man pages of ps2pdf.

[man/ps2pdf.1 man/de/ps2pdf.1]

2009-01-04T20:13:28.072664Z Till Kamppeter

Fixed syntax error in gs.css.

[doc/gs.css]

2009-01-04T20:11:57.725211Z Till Kamppeter

Assorted script fixes.

[lib/ps2epsi lib/dumphint lib/dvipdf]

2009-01-04T20:07:04.350954Z Till Kamppeter

Fix insecure script in toolbin.

[toolbin/pre.tcl]

2009-01-04T20:05:41.434499Z Till Kamppeter

Typo fixes in "gs" man page.

[man/gs.1]

2009-01-04T20:03:38.607601Z Till Kamppeter

Fix segfault in X device when page size changes.

[base/gdevxini.c]

2009-01-04T20:01:10.696570Z Till Kamppeter

Adjust the margins for Epson dot matrix printer drivers

[base/gdevepsn.c]

2009-01-04T19:58:54.777417Z Till Kamppeter

Fix a problem with Brother 7x0 GDI, contributed to Debian by B. Janssen.

[base/gdevhl7x.c]

2009-01-04T19:57:07.064594Z Till Kamppeter

Fix segmentation fault on -sDEVICE=bbox, contributed to Debian by Yaroslav Halchenko.

Original issue reported in
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=250290 and
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=254877

[base/gdevbbox.c]

2009-01-03T22:45:50.335886Z Michael Vrhel

Debug raw dumping code that I have found useful in my debug of transparency and overprint issues.  

DETAILS : Open images with Photoshop in the raw format with the dimensions given in the file name.

EXPECTED DIFFERENCES :  None



[base/gxblend.c base/gxblend.h]

2009-01-03T19:51:08.451624Z Igor Melichev

Fix (graphics) : Incorrect bounds for clipping list.

DETAILS :

Bug 690060 "Regression: ball not round in Altona_Visual_1v2a_x3.pdf"

The bug persists since the repository was created. 
The revision 8020 brought an attempt to fix it,
but really it just replaced one wrong code with another wrong one.
Coding the right formula now.

[base/gxcpath.c]

2009-01-01T05:34:09.090806Z Alex Cherepanov

Continue to access the stream while reading a string (sgets()) until the
string is filled, EOF is reached, or an error occurs. Don't return after
first partial read. Bug 690152.

DETAILS:
Old code did this only for 1-byte reads, which commonly occur during
reading stdin one byte at a time. Repeated reading is now extended to
reads of any size.

[base/stream.c]

2008-12-30T18:58:17.371540Z Igor Melichev

Fix (garbager) : Wrong object marks when the object is freed by a garbager callback.

DETAILS :

Debugged on Vista x64 with running a 32 bits debug build of revision 9299 
with this command line :

..\..\gs-hd\bin\gswin32c.exe -IF:\AFPL\gs-hd\Resource\Init;f:\afpl\fonts -Z$?@ -r300 
       -dMaxBitmap=1000000  -dNOOUTERSAVE -sDEVICE=ppmraw -sOutputFile=out.ppm -dBATCH 
       -dNOPAUSE "H:\AuxFiles\CompareFiles\084-01.ps"  

1. The main change (gsalloc.c) :

The bug persists since the repository was created. 
When an object is freed after the garbager marking phase and before the
relocation phase, the heap consistency check misrecognizes it
as a free object pointed from an useful object. It happens because
the smark field was left unchanged ("marked") but the object status 
changed to 'freed', which must be unmarked.

In the test case such thing happens when a names subtable is freed
with this stack :
    i_free_object()  Line 721
    name_free_sub()  Line 541
    name_scan_sub()  Line 582
    names_trace_finish()  Line 416
    gs_gc_reclaim()  Line 371 

The patch resets the mark whenever i_free_object is called,
so that any freed object automatically becomes unmarked.
We could do it more delicate with checking whether a garbager
is on stack with a new special flag in gs_ref_memory_t,
but we don't see enough reasons for such complex check.

2. Minor change (igc.c) : 

Provide a right operand when gs_abort is called from  
gc_objects_set_reloc. The old code crashed due to dereferencing NULL.

[psi/igc.c base/gsalloc.c]

2008-12-29T18:25:08.338456Z Marcos H. Woehrmann

Script to print out open customer/P1/regression bugs by engineer.

Usage:  bugsByEngineer.pl >report.txt

[toolbin/bugsByEngineer.pl]

2008-12-29T06:43:42.727931Z Michael Vrhel

Fix for Bug 689895.  gx_put_blended_image_cmykspot was improperly inverting the alpha channel.   

[base/gxblend1.c]

2008-12-28T16:03:29.366807Z Alex Cherepanov

Use a proper destructor to free a file stream when access to the file is not
permitted in the safe mode, not just close the file and drop the rest of the
file structure. Bug 689975.

[psi/zfile.c]

2008-12-26T07:25:31.122671Z Alex Cherepanov

Fix 3 last cases of missing prototypes in MS Windows build.

[base/lib.mak psi/int.mak psi/zfcid1.c base/gxblend1.c base/gdevddrw.c]

2008-12-26T04:48:20.570500Z Alex Cherepanov

Remove the last 2 unused variables from Ghostscript code base.

[psi/dwtrace.c base/gdevdjet.c]

2008-12-24T20:33:22.470682Z Alex Cherepanov

Fix a buffer overflow in base font writer module of pdfwrite defice.
Allocate sufficient buffer for the worst case. Bug 690211.

[base/gdevpdtb.c]

2008-12-24T15:36:40.083208Z Ken Sharp

Fix (pdfwrite): Image with SMask fails when inside transparency group.

Details:
Bug #690139: "Regression: pdfwrite creates empty file".

The PDF Interpreter internally surrounds SMask images with an extra transparency group definition. If emitted to PDF this is invalid and causes Acrobat to complain. This was fixed in revision 6878 (bug 688767) by adding an extra parameter  'Image_with_SMask' to the dictionary.

The pdfwrite code checks for the existence of this in the group, and if present (and true) skips the transparency group begin. It also sets a flag in the device, to skip the end of the group as well.

However, the flag is only reset when a new transparency group is begun. If the SMask was nested inside a group then the flag remained set, causing the 'end' for all enclosing groups to be skipped as well. This caused empty output or, in extreme cases, a 'rangecheck' error in discardtransparencygroup, because we overflowed an internal stack.

We now set the device flag to false after we have skipped an end group.

[base/gdevpdft.c]

2008-12-23T09:05:30.676239Z Ken Sharp

Fix (pdfwrite): DSC comments interfering with Page Tree Orientation.

Details:
Bug #689922 "Rotation issues with pdfwrite and multiple operations".

When writing out a PDF file, pdfwrite adds /Rotate keys to individual pages, and if the document is gnerally rotated (eg landscape) will set a /Rotate key in the pages treee. This causes all pages which do not have their own value to inherit this as a default.

Unfortunately, the page tree code uses the same logic as the individual page, whch honours DSC '%%Orientation' and '%%ViewingOrientation' comments. If the last file processed contained one of these, this would become the default for all pages, regardless of their actual orientation. This would cause pages to be inappropriately rotated.

Fixed by clearing the DSC information before writing the orientation for the page tree, by this time all the pages that require it have already been written with their own value.

[base/gdevpdf.c]

2008-12-21T14:34:29.309508Z Igor Melichev

Fix (PS interpreter) : The operator 'gstate' leaked memory.

DETAILS :

Bug 689849 "gstate leaks memory"

The old code of gsave executes 'ref_save' without a clear reason. 
The patch disables it with #if 0.
For a while we keep the old code for an easier
understanding of an unexpected behavior difference, if any.
 

[psi/zdps1.c]

2008-12-21T07:46:52.896538Z Alex Cherepanov

Implement Algorithm 8.1 from PDF 1.6 Reference. Map /BBox of the appearance
stream transformed by /Matrix onto the annotation rectangle.
Bug 690195, customer 770.

[psi/zmatrix.c psi/int.mak Resource/Init/pdf_draw.ps]

2008-12-19T16:50:41.185072Z Ken Sharp

Fix: Problem with /DeviceN [/All].

Details:
Bug #690177 "Separation names become operator names.".

/DeviceN [/All] is technically illegal, but is allowed by Acrobat. We convert this to a /Separation /All colour space for compatibility. An error in the processing of this kind of space led to a string object being used in place of a name object to create the named space.

This led to 'peculiar' plate names instead of 'All', which caused no problems when rendering to CMYK (the alternate is used and sets all inks). However if rendering to a device with additional spot plates not alll plates would be marked as they should be for a /All space. Also pdfwrite produced incorrectly named plates in the output PDF file.

[psi/zcolor.c]

2008-12-19T01:53:18.887063Z Ralph Giles

Warn when the JPX ColorSpace key workaround is activated.

Details:

We don't use pdfformaterror because this is our failing, not the files.
But we call stderrprint to generate the output so it doesn't mangle
device output on stdout.

Suggested by Ray Johnston.

[Resource/Init/pdf_draw.ps]

2008-12-19T01:53:17.038875Z Ralph Giles

Assume unlabled JPXDecode streams are 8 bit DeviceRGB.

This is a work-around for bugs 688159, 689058 and 689509.

Details:

The PDF spec allows the ColorSpace and BitsPerComponent keys of a
JPXDecode filtered image dictionary to be left out, in which case
the interpreter is expected to obtain this information by examining
the stream.

This change does not implement that, but in most cases the image
is RGB, and 8 bits per component; assuming this format allows
correct rendering of all wild files we've seen of this type.

[Resource/Init/pdf_draw.ps]

2008-12-18T23:37:32.655756Z Alex Cherepanov

Change accessors to cmap data to support cmap subtables exceeding 64K-1 bytes.
Bug 690206, customer 870.

[Resource/Init/gs_ttf.ps]

2008-12-16T18:35:55.343539Z Ralph Giles

Fix a typo in commit r9288 which broke the X11 device build. Bug 690202.

Patch by Alex Cherepanov.

[base/gdevxini.c]

2008-12-16T17:52:13.417519Z Ralph Giles

Add the CVS directory to the romfs exclusion list. Bug 690205.

Details:

Currently the mkromfs script just includes the entire file tree under
Resource/ but the presence of any extraneous directories there confuses
the enumeration machinery. We have a exclusion for the .svn directory
so builds out of svn work, but apparently some people have a CVS mirror?

Anyway, it isn't difficult to add an additional exclusion for CVS
metadata. This isn't an issue for git, darcs or mercurial because they
keep all their repository data in the top-level directory.

[base/lib.mak]

2008-12-15T17:15:06.646171Z Ken Sharp

Enhancement (pdfwrite): Add support for the fillpage method.

Details:
The new fillpage device method can be used to detect occurences of erasepage more reliably (and probably more cheaply in performance terms) than the previous checks in the fill_rectangle methods. 

Removed the old code which checked the rectangle size against the page size, the colour against white, and the transparency stack depth, from the fill_rectangle methods. Added a new routine gdev_pdf_fillpage to implement the new fillpage device method.

[base/gdevpdfx.h base/gdevpdfd.c base/gdevpdfb.h]

2008-12-13T20:05:37.951803Z Igor Melichev

Enhancement (graphics) : Implement new device virtual method 'fillpage'.

DETAILS :

The new method improves the handling of 'erasepage' and 'fillpage'
for high level devices, bbox device. Also it is a preparation for
optimizing 'erasepage' for printer devices as for bug 690131.

When erasing a page, the old code passes fill_rectangle through
the device interface. However some devises need to recognize it
as a special high level operation and distinguish from an usual
rectangle filling. The old code implemented some trics for that.
This patch replaces the tricks with a strong logic for bbox device.
The pdfwrite device to be improved separately.

The old function gx_fillpage is now splitted into two parts,
one of which works before the device interface, and another one
after it. The second one looks as a default implementation
for the 'fillpage' device virtual method. Forwarding devices
implement new function gx_forward_fillpage.


[base/gdevrops.c base/gdevdflt.c base/gdevbbox.c base/gxcldev.h base/gxclipm.c base/gsovrc.c base/gxdevice.h base/gdevnfwd.c base/gspaint.c base/gdevddrw.c base/gxclip2.c base/gdevprn.h base/gdevp14.c base/gxdevcli.h base/gxclrect.c base/gdevxini.c base/gxclist.c base/gxclist.h base/gxclip.c base/gxclrast.c]

2008-12-13T16:54:17.751950Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued 6).

DETAILS :

This is a further improvement for the bug 690133
"Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi".
Also it is a preparation for a partial fix for the bug 690131 "Optimize consecutive setpagedevice". 

The last partch appears syntactically incorrect, now fixing.

[base/gxclpath.c]

2008-12-13T12:55:14.082194Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued 5).

DETAILS :

This is a further improvement for the bug 690133
"Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi".
Also it is a preparation for a partial fix for the bug 690131 "Optimize consecutive setpagedevice". 

The last partch wrongly distributed the saved pattern id for all bands
when writing a non-pattern color to all bands.
We believe it never happens the current revision with reasonable banding settings,
but fix fix it for code consistency and for avoiding problems
with further revisions.

[base/gxclpath.c]

2008-12-13T11:14:54.029422Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued 4).

DETAILS :

This is a further improvement for the bug 690133
"Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi".
Also it is a preparation for a partial fix for the bug 690131 "Optimize consecutive setpagedevice". 

This patch passes the coverage rectangle of a graphic element
for a better computation in cmd_put_drawing_color of the size 
would be consumed while serializing a color to clist
with copying to all covered bands.
When we need to force writing to all bands,
we pass a NULL instead the coverage rectangle.

[base/gxclpath.c base/gxclimag.c base/gxclrect.c base/gxclpath.h base/gxcldev.h]

2008-12-13T10:18:02.260144Z Ken Sharp

Fix (pdfwrite): Fonts with unusual FontMatrix generating incorrect FontBBox.

Details:
bug #689879 "wrong FontBBox in PDF file"

Fonts other than type 3 may not have a FontMatrix in PDF, these fonts are assumed to be on a 1000x1000 design grid. Most fonts already are, and embedded TrueType fonts are already catered for, but some unusual fonts have a non-standard (not [0.001 0 0 0.001 0 0]) FontMatrix. The matrix is accounted for when scaling the font, so the Tf operator is correct in the page content stream, but the FontBBox was calculated using the unscaled glyph outline.

We now scale the font outline into a 1000x1000 design grid before calculating the bounding box, so that the FontBBox entry will be correct.

[base/gdevpdtd.c]

2008-12-13T10:13:47.692668Z Ken Sharp

Fix (pdfwrite): Tidy up code.

Details:
Tidy up some code for bug #690118; When writing TrueType hmtx/vmtx, define a new function put_short which is functionally identical to put_ushort but doesn't truncate the sign bit. Use this instead of put_ushort when the value to be written may be negative. Add 0.5 to the floating point calculations and floor() the result so that we get the nearest approximation to the float when writing out the short.

A small number of files exhibit a number of single pixel differences in position or rendering of glyphs with this change. In all cases comparing the rendered result of the new PDF file with the rendered result of the original file shows no differences, so I consider these to be progressions.

[base/gdevpsft.c]

2008-12-10T19:10:43.669416Z Ralph Giles

Set standard properties on pdf_main.ps. Bug 690198.

[Resource/Init/pdf_main.ps]

2008-12-10T07:29:39.713832Z Igor Melichev

Fix (PDF interpreter) : Avoid extra erasepage, part 1.

DETAILS :

This is the first partial fix for the 
bug 690131 "Optimize consecutive setpagedevice".

The PDF interpreter calls extra setpagedevice for initializing the number of spot colors.
First it happens in pdfshowpage_setpage, and we merge that call
with another one that sets other multiple page parameters. 
Second in pdfshowpage_finish we replace it with .setpagedevice, 
which doesn't call .postinstall that calls erasepage.

[Resource/Init/pdf_main.ps]

2008-12-09T17:30:40.898715Z Marcos H. Woehrmann


Fix for weird math issue under AIX that cause problems in glpyh spacing when
writing type42 fonts for ps2write and pdfwrite.

This fixes bug 690118.

Details:

For reasons that I don't undertand under AIX (ushort) (double * double)
produces a 0 if the first double is > -1 and < 0 (and the sum is < -1).
Presumably the cast happens before the multiplication, but this isn't
reasonable and doesn't occur on other operating systems, even running
the same version of gcc.  Temporarily assigning the sum to a float and
then casting to a ushort resolves the problem.

The temporary assignment should be removed by the optimizer, so there
shouldn't be a performance hit (I did check, the optimized code is still
correct under AIX).


[base/gdevpsft.c]

2008-12-09T08:45:20.654566Z Ken Sharp

Fix (pdfwrite): regression with type 3 fonts using show charpath stroke combinations.

Details:
bug #690196 "regression: file for bug 689687"

The recent changes for text rendering modes caused a regression with Quark's type 3 font for special text effects, when optimising a show followed by charpath stroke into a single 'Tj' with a text rendering mode of 2 in the resulting PDF file.

Fixed by ceasing to treat type 3 fonts specially and applying the same optimisation as for other font types. A couple of other Quark files exhibit very small differences, comparing these to the rendered output of the original files the new result seems closer to the original. (ie a progression)

Also resolved a compiler warning.

[base/gdevpdtc.c base/gdevpdfd.c]

2008-12-09T08:01:43.121661Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued 3).

DETAILS :

Bug 690133 "Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi".

When filling a path with a pattern, the old code
stores the pattern to all bands that are covered with the path.
If the pattern is represented with a long clist, 
it consumes too big memory for the page clist.

If the pattern is big, the new code writes it 
to the "all bands" list instead replicating it to bands. 
Therefore the overall memory is smaller.

The decision about storing a pattern to "all bands"
should also depend on the number of bands.
This patch doesn't account that because current data flows
don't pass the number of bands to the point where
the decision must be taken. It may need a further improvement.

The threshold for "big" pattern is arbitrary set to 1Mb.
It may need an improvement also. It's another threshold 
than one for representing a pattern as a raster or a clist.

[base/gxclpath.c base/gxclutil.c base/gxcldev.h]

2008-12-09T07:58:55.697280Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued 2).

DETAILS :

This patch is important for the bug Bug 690133 
"Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi",
but it is not restricted with its case.

When writing a pattern color to a band,
the old code uses the "saved color" structure
for remembering which color has been stored for the band.
In the case of pattern it stores the client's pattern id.
However it doesn't provide enough resolution because
a client's pattern may be instantiated with various CTMs.
The new code uses the pattern tile id to distinguish the pattern instances.

We're not sure why saved color structure stores the client's pattern id only.
It should be so for pdfwrite, but need to check whether other
cases are possible. Therefore the current change is kind of hackish.
See comment in code.

[base/gxclpath.c]

2008-12-08T08:17:55.714566Z Ken Sharp

Fix (pdfwrite): Large type 1 or 2 fonts caused errors with text.

Details:
bug #690144 "Files render properly with gs, but are misformatted in ps2pdf"

Revision 8235 added support to pdfwrite for type 0 fonts with type 1 or type 2 (CFF) descendant fonts, emitting these as subsets of the original instead of rendering the glyphs and embedding type 3 fonts with bitmap images. This results in better quality and smaller files.

However type 1 or 2 fonts which are too large for an arbitrary Ghostscript limit (> 65537 glyphs) can not be copied. This 'should' have fallen back to the old mechanism, but some data had been altered which led to this failing.

The fix for this comprises 3 parts:

1) Mmodified scan_cmap_text to save the data we modify for subsetting, and restore it if pdf_obtain_font_resource_unencoded fails, which then falls back to the 'default' type 3 mechanism (in case of future problems in this area). 

2) Increased the limit of glyphs (for type 1 or 2 fonts) in gs_copy_font. Added a new parameter 'max_reserved_glyphs'. If this is -1 then we reserve enough space for the number of glyphs in the original font. Otherwise we reserve space for the specified maximum. This limit only applies to font type 1 or 2, and is used by pdfwrite to avoid making excessively large font copies.

3) Modified pdf_base_alloc so that if the font is large (and is not one of the standard 13 fonts), we don't allocate a complete copy for our 'subset', we only allocate as many glyphs as will fit in a standard Encoding, 256, plus  one for the required .notdef making 257 in total. We also avoid making a second 'complete' copy of the font, because we will never write the complete font.

[base/gdevpdtb.c base/gxfcopy.c base/gdevpdtc.c base/gxfcopy.h]

2008-12-05T07:39:06.671710Z Alex Cherepanov

Check the whole Decode array to detect special cases of identity and inverse
decoding. Previous test analyzed every channel separately and misidentified
decoding arrays like [0 1 1 0 0 1]. Bug 690178.

[base/gxipixel.c]

2008-12-05T04:44:51.989860Z Alex Cherepanov

Adds special, tolerant to singular matrix processing, to the case when
ImageMatrix is differs from the CTM by the translation vector only, which
happens in cached character rendering. The patch clears PostScript errors
during text rendering with singular CTM. Bug 690179, customer 870.

[base/gxipixel.c base/gsimage.c base/gxccache.c]

2008-11-29T14:33:26.712726Z Alex Cherepanov

Ignore /ToUnicode attribute when it points to an object other then a stream.
Bug 680138.

[Resource/Init/pdf_font.ps]

2008-11-29T12:27:04.428583Z Till Kamppeter

The pstopxl CUPS filter did not remove its temporary file.

[cups/pstopxl.in]

2008-11-27T15:05:37.010932Z Ken Sharp

Fix (pdfwrite): more issues with PDF Text rendering modes.

Details:
Bug #689692 Colour and linewidth is not set correct for text with rendermode STROKE
and FILLSTROKE
Bug #Bug690025 pxlmono driver prints some glyphs as squares when the input is PostScript generated by Ghostscript

This follows on from revision 9196 and further addresses problems with PDF text rendering modes. Fundamentally the problem is that the PDF text matrix (Tm) should not affect the stroke width. However PostScript only has one transformation matrix, so when we get a Tm, the PDF interpreter modifies the CTM accordingly. This alters the (effective) stroke width, resulting in incorrect output.

This patch modifies the CTM before executing a stroke in modes 2 & 6, and for mode 1 modifies the stroke width by calculating what it would have been if the CTM were the identity at the time the text block began. Since pdfwrite emits text in an identity CTM, this corrects the problem.

The pdfwrite code for combining show/charpath/stroke operations into a single text rendering mode has been modified to expect the CTM to be correct, and to utilise it, when emitting the combined operation.


[Resource/Init/pdf_ops.ps base/gdevpdts.c base/gdevpdfd.c base/gdevpdts.h base/gdevpdfg.c]

2008-11-27T05:20:05.725774Z Alex Cherepanov

Use the same name (/PDFType3Untitled) for all Type 3 fonts without /FontName
attribute. PDF interpreter doesn't need unique names and the previous attempt
to generate unique names didn't work. Bug 689358.

[Resource/Init/pdf_font.ps]

2008-11-27T01:58:54.354925Z Alex Cherepanov

Restore language level after loading pdfwrite.ps for consistency and
compatibility with PS utilities. Also pick a few nits that may cause errors
if some of start-up files ever loaded in level 1 mode. Thanks to SaGS
for the patch. Bug 688151.

[lib/pdfwrite.ps Resource/Init/gs_dpnxt.ps Resource/Init/gs_cff.ps]

2008-11-25T17:19:23.759068Z Till Kamppeter

Fixed paper tray selection for the PCL 4/5/5e drivers (bug 690182). Works fine now with "-dMediaPosition=..." and for all possible trays. Needs review to see whether it does not break anything else.

[base/gdevdjet.c]

2008-11-24T23:04:21.969628Z Alex Cherepanov

Skip everything before 'begincodespacerange' in ToUnicode CMap stream
to avoid PostScript errors in CMap headers. PDF interpreter doesn't
need any data from the header. Bug 689842, customer 870.

[Resource/Init/pdf_font.ps]

2008-11-24T19:15:04.507271Z Till Kamppeter

Fixed input tray selection support in the PCL-XL drivers ("pxlmono"/"pxlcolor"), fixes on CUPS filter and PPDs to make input tray selection actually work.

[base/gdevpx.c cups/pstopxl.in cups/pxlmono.ppd cups/pxlcolor.ppd]

2008-11-24T11:01:42.358113Z Till Kamppeter

Made the CUPS filters and PPDs for PCL-XL also work with PDF as input data format

[cups/pstopxl.in cups/pxlmono.ppd cups/pxlcolor.ppd]

2008-11-23T20:36:12.040586Z Igor Melichev

Fix (CID font emulation) : CID from another writing mode rendered a wrong glyph (continued)

DETAILS :

This improve3s the second partial fix for Bug 689304  
"improper handling of vertical japanese text", related to Comment #30, #31. 

The revision 9213 appears buggy.
When a SubstCID resource is not available,
the stack balance is broken.

[Resource/Init/gs_cidtt.ps]

2008-11-21T14:24:21.693040Z Till Kamppeter

The "cups" output device was logging way to much in CUPS' debug logging mode. Moved some logging to debug2.

[cups/gdevcups.c]

2008-11-21T05:31:10.447898Z Alex Cherepanov

Add a check for bogus '>>' after 'endstream' to recover files generated 
by 'Kroll Background Screening'. Bug 690161.

[Resource/Init/pdf_base.ps]

2008-11-20T21:11:09.954526Z Alex Cherepanov

Move validation of the page tree after installation of the decryption handler
because access to encrypted xref streams needs decryption. Fix regression
introduced by the rev. 8933. Bug 690175.

[Resource/Init/pdf_main.ps]

2008-11-20T19:31:36.700423Z Ralph Giles

Add AES support to the pdf interpreter.

This commit adds convenience wrappers around the aes stream
implementation to pdf_sec.ps, and calls them when appropriate,
based on the crypt filter methods defined in the file Trailer's
Encrypt dictionary. Bug 688958.

It also includes comment and whitespace cleanup.

[Resource/Init/pdf_sec.ps]

2008-11-17T19:43:47.727833Z Alex Cherepanov

Add missing initialization of read_id field in reusable streams.

DETAILS:
This error was detected by Valgrind. I don't have any samples where this fix
affects the output.


[psi/zfrsd.c]

2008-11-17T10:41:13.803460Z Ken Sharp

Fix (pdfwrite): Not considering all glyphs in a string when noting first/last character

Details:
Bug 690166: extra space after apostrophe when distilled
Revision 8235 added support for type 0 fotns with type 1 or 2 descendants, this required using pdf_adjust_first_last_char so that we correctly noted the used glyphs, and stored their widths.

An oversight in calling the function resulted in only the first glyph in the string being considered.

[base/gdevpdtc.c]

2008-11-16T14:47:49.851717Z Igor Melichev

Fix (PS interpreter) : Eliminate unuseful transfer of left side bearing to type42_finish.

DETAILS :

This change is algorithmically equivalent.

type42_finish never uses lsb data that could be passed to it via
operand stack from some clients. This patch removes those data
and related arguments of some C functions.

[psi/zchar42.c psi/zchar42.h psi/zchar.c]

2008-11-16T12:15:46.619814Z Igor Melichev

Fix (TT font handler) : Wrong glyph posiitions with vertical vcriting mode.

DETAILS :

Bug 689304 "improper handling of vertical japanese text".

This is third partial patch for the bug 689304.
The old formulas were obtained impirically and don't
give the right result. The new ones are coded with a better understanding
of the problem. See comments in code for more details. 

Rather the patch closes the bug, we want to do some additional
equivalent changes for cleaning the code. Another patch coming soon.

[psi/zchar42.c]

2008-11-15T14:07:27.807825Z Ken Sharp

Fix PS interpreter: issues with ICCBased spaces

Details:
Bug #690169 Regression: seg fault reading  Bug689830.pdf, Bug689831.pdf, and annots.pdf

The 9218 revision to restore the 'optional' nature of the Alternate in ICCBased colour spaces was unfortunately incomplete. This led to us trying to set a 'null' colour space when a PDF file had a damaged and unusable ICC specification.

We now use the technique specified in the PDF Reference, take the value of 'N' from the space and use that to select an appropriate alternate, when one is not specified.

[psi/zcolor.c]

2008-11-13T14:23:05.749468Z Alex Cherepanov

Skip null entries in /Annots array. Bug 690161.

[Resource/Init/pdf_main.ps]

2008-11-13T02:02:49.620374Z Ray Johnston

Revert 8.63 behavior where the /Alternate key/value pair in ICCBased param dictionaries
is optional. Bug 690165 for customer 850.

DETAILS:

This allows:

[ /ICCBased << /N 3 /DataSource (srgb.icc) (r) file >> ] setcolorspace

to work, where srgb.icc is the path to an 'input' ICC color profile.

Until Ghostscript has support for ICC profiles throughout, this is useful to
allow for setting the Resource/ColorSpace/Default*** colorspaces (or
defining the ColorSpace resources) using ICC profiles.

[psi/zcolor.c]

2008-11-10T19:01:57.531817Z Igor Melichev

Fix (clist writer) : A crash when transparent object appears over the page top.

DETAILS :

Bug 690149 "PDF-file can not be converted".

The transparency compositor cropping caused an attempt to
Write to a non-existing band over the page top.
This patch skips writing such compositor commands. 


[base/gxclimag.c]

2008-11-09T20:38:08.817663Z Igor Melichev

Fix (CID font emulation) : CID from another writing mode rendered a wrong glyph (part 2).

DETAILS :

This change fixes the previous change's commitment error.
This log message describes the union of the 2 changes.

This is a second partial fix for Bug 689304
"improper handling of vertical japanese text", related to Comment #30, #31.

When emulating a CID font with an Open Type font, a CID is first
mapped to an OpenType encoding and then to a glyph index.
However OpenType provides same character codes for glyph variants,
which render differently depending on writing mode.
The glyph '(' is an example.

This patch works for OpenType fonts only, which provide a GSUB for vertical 
writing mode.
It is not working for True Type collections with no GSUB.
They need a further improvement.

The patch assumes that all interpreters initialize a Type 42 font with 
zeroing all its fields.
Postscript interpreter does so since a long ago, but we're not sure about 
others.
They may need an improvement.

1. Define a new resource category SubstCID (Resource/Init/gs_ciddc.ps).

2. Provide a tool for generating resources for that category 
(toolbin/GenSubstCID).

3. Provide resources for various orderings (Resource/SubstCID/CNS1-WMode,
Resource/SubstCID/GB1-WMode, Resource/SubstCID/Japan1-WMode, 
Resource/SubstCID/Korea1-WMode).

4. When loading a TrueType or OpenType font for a CID font emulation, 
associate an
appropriate SubstCID resource to it (Resource/Init\gs_cidtt.ps).
(We do associate the resource with TrueType hoping that some
True Type fonts may provide GSUB).

5. Define a new structure gs_subst_CID_on_WMode_s for storing that 
information
for the graphics library (base\gxfcid.h), and its garbager descriptor 
(base/gsfcid.c).
Since it may duplicate for several fonts, it is shared and 
reference-counted.

6. The new function get_subst_CID_on_WMode loads the resource data for the 
graphics library
in psi\zfcid1.c . Note it is implemented for PS interpreter only.

7. Generalized gs_type42_substitute_glyph_index_vertical with providing a 
CID in base/gstype42.c
and made it be a virtual function of gs_font_type42 (base/gxfont42.c).
We're not sure how other interpreters initialize the font, so
we're checking it for NULL for safety and use 
gs_type42_substitute_glyph_index_vertical
as a default implementation.

8. font11_substitute_glyph_index_vertical is another implementation of that 
function, which
accounts gs_subst_CID_on_WMode_s data for providing a right glyph depending 
on WMode.
Rather a SubstCID resource provides a substitution, currently
we only use the fact that a CID is substituted, and never use
the substituting CID. Nevertheless we prefer to define and store the 
resource
in the complete form for possible improvements in future (zfcid1.c).

9. release_subst_CID_on_WMode automatically releases the resource data
when all fonts (that use it) are released.

10. Added SubstCID to the ROM file system in psi/psromfs.mak .

11. Minor unrelated fix : propagate errors from gs_font_notify_register for 
(7) in base/gstype42.c .

[psi/zchar42.c Resource/Init/gs_ciddc.ps Resource/Init/gs_cidtt.ps psi/int.mak psi/zfcid1.c psi/zfont42.c]

2008-11-09T19:09:30.285684Z Igor Melichev

Fix (CID font emulation) : CID from another writing mode rendered a wrong 
glyph (part 1).
This revision is incomplete due to a commitment error. Please use next 
revision.

DETAILS :

This is a second partial fix for Bug 689304
"improper handling of vertical japanese text", related to Comment #30, #31.

When emulating a CID font with an Open Type font, a CID is first
mapped to an OpenType encoding and then to a glyph index.
However OpenType provides same character codes for glyph variants,
which render differently depending on writing mode.
The glyph '(' is an example.

This patch works for OpenType fonts only, which provide a GSUB for vertical 
writing mode.
It is not working for True Type collections with no GSUB.
They need a further improvement.

The patch assumes that all interpreters initialize a Type 42 font with 
zeroing all its fields.
Postscript interpreter does so since a long ago, but we're not sure about 
others.
They may need an improvement.

1. Define a new resource category SubstCID (Resource/Init/gs_ciddc.ps).

2. Provide a tool for generating resources for that category 
(toolbin/GenSubstCID).

3. Provide resources for various orderings (Resource/SubstCID/CNS1-WMode,
Resource/SubstCID/GB1-WMode, Resource/SubstCID/Japan1-WMode, 
Resource/SubstCID/Korea1-WMode).

4. When loading a TrueType or OpenType font for a CID font emulation, 
associate an
appropriate SubstCID resource to it (Resource/Init\gs_cidtt.ps).
(We do associate the resource with TrueType hoping that some
True Type fonts may provide GSUB).

5. Define a new structure gs_subst_CID_on_WMode_s for storing that 
information
for the graphics library (base\gxfcid.h), and its garbager descriptor 
(base/gsfcid.c).
Since it may duplicate for several fonts, it is shared and 
reference-counted.

6. The new function get_subst_CID_on_WMode loads the resource data for the 
graphics library
in psi\zfcid1.c . Note it is implemented for PS interpreter only.

7. Generalized gs_type42_substitute_glyph_index_vertical with providing a 
CID in base/gstype42.c
and made it be a virtual function of gs_font_type42 (base/gxfont42.c).
We're not sure how other interpreters initialize the font, so
we're checking it for NULL for safety and use 
gs_type42_substitute_glyph_index_vertical
as a default implementation.

8. font11_substitute_glyph_index_vertical is another implementation of that 
function, which
accounts gs_subst_CID_on_WMode_s data for providing a right glyph depending 
on WMode.
Rather a SubstCID resource provides a substitution, currently
we only use the fact that a CID is substituted, and never use
the substituting CID. Nevertheless we prefer to define and store the 
resource
in the complete form for possible improvements in future (zfcid1.c).

9. release_subst_CID_on_WMode automatically releases the resource data
when all fonts (that use it) are released.

10. Added SubstCID to the ROM file system in psi/psromfs.mak .

11. Minor unrelated fix : propagate errors from gs_font_notify_register for 
(7) in base/gstype42.c .

[Resource/SubstCID/CNS1-WMode base/gxfcid.h Resource/SubstCID base/lib.mak Resource/SubstCID/GB1-WMode Resource/SubstCID/Japan1-WMode base/gsfcid.c base/gxfont42.h psi/psromfs.mak base/gstype42.c toolbin/GenSubstCID.ps Resource/SubstCID/Korea1-WMode]

2008-11-07T18:49:34.403723Z Ralph Giles

Remove a duplicate typedef for stream_arcfour_state.

Details:

The duplicate (opaque pointer) typedef in gdevpdfx.h was
redundant and any users that dereferenced members or allocated
the struct on the stack already included sarc4.h.

I believe the idea here was just to hide the structure details
from some hypothetical user of the pdf_crypt api. However, the
stream state structure should either be opaque, with only the
typedef in sarc4.h or it should be public and using it requires
sarc4.h. The duplication isn't justified in either case.

Since stream state structures generally are public so they can
be stack-allocated, we decided to remove the duplicate typedef.

Also adds a missing dependency to the makefile.

Issue originally reported by the coverity hfa checker.

[base/gdevpdfx.h base/devs.mak]

2008-11-06T23:51:27.600449Z Marcos H. Woehrmann

Updates to nightly regressions to allow them to run under Mac OS X.  

Details:

Change uname parameters from '-m -o' to '-m -s'
Don't appened ".db" to filename when opening database.
Replace sendmail python function with call to /usr/bin/sendmail.
Archive daily rasters.
Change location of gscdef.c from src to base.
Call time from /usr/local/bin (/usr/bin/time doesn't take -f option).

Note that some of these changes are not compatible with peeves.

[toolbin/tests/make_baselinedb.py toolbin/tests/gscheck_raster.py toolbin/tests/testdiff.py toolbin/tests/compare_checksums.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/build_revision.py toolbin/tests/check_dirs.py toolbin/tests/compare_checksumdb.py toolbin/tests/gsconf.py toolbin/tests/get_baseline_log.py toolbin/tests/run_nightly.py toolbin/tests/gstestgs.py toolbin/tests/run_regression.py toolbin/tests/update_baseline.py]

2008-11-06T23:30:55.150402Z Marcos H. Woehrmann

Stopped generating 600 dpi raster files when running make_missing since they were never being tested.

[toolbin/tests/gsparamsets.py]

2008-11-06T23:27:54.191464Z Marcos H. Woehrmann

Made some messages prettier.

[toolbin/tests/testdiff.py]

2008-11-06T23:25:02.686517Z Marcos H. Woehrmann

Fixed typo.

[toolbin/tests/update_baseline.py]

2008-11-06T20:13:19.335714Z Igor Melichev

Fix (graphics) : A missed dependency in makefile.

[base/lib.mak]

2008-11-06T20:04:26.632073Z Igor Melichev

Fix (clist interpreter) : A faster procesing without a preliminary clearing of the band buffer.

DETAILS :

The preliminary cleaning of the buffer appears unuseful because erasepage
in the clist code performs same function.

[base/gxclread.c]

2008-11-06T19:09:39.284217Z Ralph Giles

Remove an unused variable.

[base/gdevpdtt.c]

2008-11-06T19:09:37.330669Z Ralph Giles

Add a missing include for pdf_prepare_stroke().

[base/gdevpdts.c base/devs.mak]

2008-11-05T20:41:22.951927Z Ralph Giles

Remove psromfs.mak from ugcclib.mak.

This makefile is ostensibly for the graphics library only.

[base/ugcclib.mak]

2008-11-05T20:41:06.620266Z Ralph Giles

Add -lpthread to ugcclib.mak. It is now required by sync=posync.

[base/ugcclib.mak]

2008-11-05T08:26:19.980667Z Ken Sharp

Fix (pdfwrite): several issues with PaintType 2 (stroked fonts) and PDF Text rendering modes.

Details:
Bug #690136 Differences in character stroke width
Bug #689970 major artefacts in pdfwriter output
Bug #688267 Ghostscript need native PDF graphic state
Bug #689654 pdfwrite ignores font /PaintType 1
Bug #689692 Colour and linewidth is not set correct for text with rendermode STROKE
and FILLSTROKE

The current implementation of text rendering modes has some problems. I've been able to address most of these in this patch by:

1) Making the charpath detection slightly less picky. This picks up more instances of filled text followed by 'charpath stroke', combining correctly into a PDF text  rendering mode.

2) Relaxing the criteria for detecting a Tr mode involving stroking.

3) Removing some spurious scaling, and applying a better scale factor when using stroked fonts (Paint Type 2).

There are still problems with this code, and they are insuperable in the current architecture of pdfwrite/PDF interpreter. Specifically; Text render mode 6 (fill, stroke and clip) doe snot work properly, text which is stroked using a linewidth set  outside the text block, and with a non-identity CTM and non-identity text matrix  results in incorrect stroke widths.

This will need to be addressed further under bug #688267, which is an enhancement. In the meantime this patch significantly improves the current implementation. Note; bug #689692 is still slightly incorrect with this patch, though improved. Bug #690025 is unchanged (still incorrect).

[base/gdevpdts.c base/gdevpdtt.c]

2008-11-04T05:07:32.360011Z Alex Cherepanov

Add support for indirect objects in /W and /W2 entries in the CIDFont
dictionary. Bug 690151.

[Resource/Init/pdf_font.ps]

2008-11-04T03:33:52.379523Z Alex Cherepanov

Export (i.e. don't undefine) runpdfpagerange procedure for the benefit
of PDF manipulation utilities. Bug 690153.

[Resource/Init/pdf_main.ps]

2008-11-03T06:26:32.640021Z Alex Cherepanov

Fix a bug in object stream handling that sometimes dropped incremental
updates. Bug 690141.

DETAILS:
An incremental update can replace only some of the objects in the
object stream. Old code didn't check xref tables and resolfed all 
unresolved objects from the stream. Once resolved, an object is no
longer accessed through xref.

[Resource/Init/pdf_base.ps]

2008-11-03T04:28:51.792909Z Ray Johnston

Fix Floating Point excpetion caused by improper initializer of a private device
structure subclassed (in the klunky C ghostscript fashion) from the gx_device_printers_s
structure. Restructure a macro in base/gdevprn.h to help prevent similar bit rot in the
future.  Bug 690122.

DETAILS:

The problem was with devices that use the contrib/lips4/gdevlprn.h header
files. The lp_duplex_device_body_rest_ and lp_device_body_rest_ macros that
initialized the prn_device structure 'common' elements were out of date with
respect to the revision in the gx_device_printer_s structure made for the
multi-threaded rendering. The num_render_threads_requested integer was added.

I restructured the prn_device_body_rest2_ in base/gdevprn.h so that the
contrib/lips4/gdevlprn.h initialization macro could use this to minimize the
likelihood of bit rot in the future.

I did a search for other devices that might have the same problem and did not
find them (although I may have missed them).

[base/gdevprn.h contrib/lips4/gdevlprn.h]

2008-10-28T03:15:52.084170Z Alex Cherepanov

Don't assume that the top of the dictionary stack is writable or can be made
writable by allocating a new PDF graphic state. The latter cannot be done in
pdfinflt.ps and similar clients. This patch replaces my previous fix (r. 9124)
for the bug 690088. Bug 690134.

[Resource/Init/pdf_base.ps]

2008-10-28T00:43:49.468966Z Alex Cherepanov

Ignore named encodings for known symbolic fonts. Bug 690135, customer 580.

DETAILS:
Acrobat reader appears to know that /WinAnsiEncoding is not compatible with
Wingdings2. The patch looks up the font name in a table to determine whether
the font is symbolic because corresponding /Flags attribute is unreliable.

[Resource/Init/pdf_font.ps]

2008-10-27T21:53:17.877952Z Ralph Giles

Update the documentation reference to psromfs.mak.

This file moved from base to psi in r9126.

[doc/Develop.htm]

2008-10-25T04:34:30.742669Z Michael Vrhel

Fix for bug 690103.  This issue was introduced with r8868 where spatial interpolation in the source color space was introduced.  The part that was missing in that commit was to handle the case where we had 8 bit image data that was non CIE based and NOT encoded with [0 1] .

DETAILS:

This patch was tested with forced interpolation on a set of files that are known to have issues with interpolation. It performed properly on those and on the customer's bug file. 

The part that was missing in the old code was the case where we have encoded
(not [0 1]) nonindexed 8 bit image data that is not CIE based.	For this case,
it was not getting properly decoded prior to interpolation.  

[base/lib.mak base/gscspace.h base/gxiscale.c base/gscspace.c]

2008-10-24T14:51:44.819826Z Igor Melichev

Fix (TT font handler) : Properly process a broken TTC header.

DETAILS :

Bug 690105 "seg fault reading pcl file"

1. Check for TTC version header and print error if it is unknown.
2. Fixing the formatting according to C-style.htm .

[base/gstype42.c]

2008-10-23T04:33:29.326096Z Marcos H. Woehrmann

Make gx_sort_ht_order() deterministic.

DETAILS:

The gx_sort_ht_order() routine sorts the halftone mask values.
These values are often the same and qsort() does not guarantee the
order of equal elements.  However, the order appears to be significant
for the output (differences in the nightly regression are seen on
different computers).  And it's also possible that this indeterminism
is part of the cluster regression problem.

This revision sorts equal masks by index value.

DIFFERENCES EXPECTED:

Some of the pbmraw or pkmraw nightly regressions may have minor
differences in the dithering pattern.

[base/gsht.c]

2008-10-23T04:28:42.566180Z Marcos H. Woehrmann

Changed decleration of det from float to double in gs_matrix_invert().  

DETAILS:

On peeves the results of gs_matrix_invert() change depending on
whether or not compiler optimization is enabled if det is declared
as a float.  I believe this is due to the optimized code never
storing the det value so it never get shortened to a float; by
declaring it as a double the unoptimized code should act the same.

[base/gsmatrix.c]

2008-10-21T18:09:59.854984Z Ralph Giles

Fix a makefile dependency which should have been added in r8872.

[base/lib.mak]

2008-10-21T16:26:09.248809Z Igor Melichev

Fix (PS intetreter) : Crash in garbager when resetting marks in names table.

DETAILS :

Bug 690129 "MSVC8 x64 debug build crashes in names_trace_finish"

1. The real bug : the old code sometimes removes an element from nt->sub table with name_scan_sub,
and then resets marks in the element that has same table index. 
If the removed element is the last one,
it tryes to process an uninitialised element and crashes indeterministically.
The new variable save_count works for that.
The bug persisted since the repository was created.

2. Minor change : an optimization : The old code checked twice
for the loop exit condition. To fix it we changed the type of
the variable 'i' and changed the loop condition.

[psi/iname.c]

2008-10-21T10:35:52.809111Z Ken Sharp

Fix (pdfwrite): Conversion of PaintType 0 fonts to text rendering mode
1 sometimes produced incorrect stroke width.

Details:
Bug #690116 "StrokeWidth of outline font too small"

pdfwrite converts fonts with a PaintType of 0 (outline fonts) to a normal
font, but sets the text rendering mode to 1. The calculation of the 
required stroke width was insufficient in some cases.

[base/gdevpdts.c base/gdevpdtt.c base/gdevpdts.h]

2008-10-19T20:32:03.940940Z Alex Cherepanov

Search for 'startxref' instead of '%%EOF' in PDF recovery code because
'%%EOF' is mangled more ofthen than 'startxref'. Bug 690071, customer 384.

[Resource/Init/pdf_rbld.ps]

2008-10-19T01:23:28.662366Z Alex Cherepanov

Extend the size of the array for procedures scheduled for binding in DELAYBIND
mode to 2000. Prevent an overflow when 3rd party code (such as Ubuntu CJKV
patch) binds many new procedures. Bug 690124.

[Resource/Init/gs_init.ps]

2008-10-18T10:52:42.057112Z Till Kamppeter

Fixed bug #690032: bjc600/bjc800 drivers do not work with PDF input

[base/gdevcdj.c]

2008-10-18T03:11:41.445457Z Alex Cherepanov

Fix a bug in a new reusable stream implementation introduced in rev. 8810.
Take into account unread data left in the stream buffer before refilling
the buffer. Bug 690090, customers 384, 581, 661.

[psi/zfrsd.c]

2008-10-17T22:58:21.764880Z Ralph Giles

Update properties for cups driver files.

[cups/pstoraster.in cups/pdftoraster.c cups/pstopxl.in cups/pxlmono.ppd cups/cups.mak cups/gdevcups.c cups/pxlcolor.ppd]

2008-10-17T22:57:38.635737Z Till Kamppeter

Use $(PDFTORASTER_XE) for path to compiled pdftoraster binary

[cups/cups.mak]

2008-10-17T21:46:27.567328Z Till Kamppeter

Put new files under MIT license,

[cups/pdftoraster.c cups/pdftoraster.convs]

2008-10-17T20:50:06.903656Z Igor Melichev

Fix (clist writer) : Wrong compositor cropping when a shading is entirely clipped out (continued).

DETAILS :

Bug 690106 "Regression: /unregistered in --run--" 

The recent patch for the subject is not sufficient because
an empty clipping condition cannot be anticipated in the clist writer.
To fix it we introduce a new flag gx_device_clist_writer_s::cropping_saved
especially for clist_fill_path to know whether it was called recursively
for passing an untrivial clipping path for a shading. The cropping must be restored
in the outer call iff it is set.

[base/gxclpath.c base/gxclist.c base/gxclist.h]

2008-10-17T20:27:04.052662Z Till Kamppeter

Added Ghostscript-based pdftoraster filter

[cups/pdftoraster.c cups/cups.mak cups/pdftoraster.convs]

2008-10-17T16:49:58.474885Z Till Kamppeter

Fixed several bugs, like crash if input is PDF (bug #690101), duplex not working, ...

[cups/gdevcups.c]

2008-10-17T13:44:34.259593Z Alex Cherepanov

Consider /Identity CMap compatible with any CIDFont /Ordering. Bug 690120.

[Resource/Init/gs_cidcm.ps]

2008-10-17T09:31:35.914027Z Ken Sharp

Fix (pdfwrite): ICCBased color spaces in input PDF files, /Alternate space converted to
ICCBased in output PDF file.

Details:
Bug #690038 "Regression: ghostscript cannot read ghostscript produced PDF file."

The PDF interpreter always runs with (in effect) /UseCIEColor set to true. This converts
process spaces to CIE color spaces, which are emitted in the PDF as ICCBased color
spaces when using pdfwrite/ps2write.

However, for ICCBased color spaces this caused the /Alternate space of the ICCBased
space to become another ICCBased space, which is legal but silly, and caused the GS PDF
interpreter problems.

Modified the alternate space extraction routines so that they can use the UseCIE flag in
the color handling code to prevent the base space being  substituted with a CIE space,
when the parent space is an ICCBased space.

Also discovered in passing that zfsample.c and zfunc4.c use zcolor.h but the makefile
did not have dependencies for them. Fixed.

[psi/zcolor.c psi/zfunc4.c psi/zcolor.h psi/int.mak psi/zfsample.c]

2008-10-15T17:47:00.008618Z Ray Johnston

Switch file I/O of 'opdfread.ps' to 'strmio' that supports the %rom% file system
as well as the default (%os%) file system. Bug 690074.

[base/gdevpdfu.c base/devs.mak]

2008-10-15T07:06:40.437422Z Ken Sharp

Revision 9154 accidentally left a temporary C++ style comment in place.

[psi/zicc.c]

2008-10-15T04:51:30.597312Z Michael Vrhel

Fix for bug 689961.

There was a problem with the testing to determine if a color space mapping was linear within a triangle and along a line.  The old code assumed the number of components was the same in the client and device color space.  In general this is not true, especially if we have a DeviceN color space with one color and a CMYK output device, which was the test case given.  

[base/gscspace.c]

2008-10-15T01:32:43.847670Z Ralph Giles

Exclude local repository files from other version control systems
from clusterpush.

[toolbin/clusterpush.sh]

2008-10-15T01:32:39.731625Z Ralph Giles

Read git commit names if an svn revision number isn't available.

[toolbin/clusterpush.sh]

2008-10-15T01:32:33.815878Z Ralph Giles

Update the clusterpush script for the new source locations.

Previously we copied the baseline from the last ghostpcl run on the
cluster, but since the ghostpdl tree moved to the public repository it
runs in an updating directory like gs.

Also, compare return codes numerically instead of as a string.

[toolbin/clusterpush.sh]

2008-10-14T18:27:24.066580Z Ken Sharp

Fix (PS interpreter): .seticcspace leaving operand on stack.

Details:
Bug #690039 "failure to read ICC profiles generated by  
Adobe Photoshop Version 7 and 9".

ICC profiles in PostScript comments are handled by the comment 
parsing code in gs_icc.ps, using the .seticcspace operator. After
the recent change to handle colour in 'C' rather than PostScript,
the .seticcspace operator was not removing its argument from the 
operand stack.

This led to the comment processing for other purposes (specifically
pdfwrite in this case) generating errors, as the stack had been disturbed.

Altered the 'seticc' routine (called by .seticcspace) to remove the
operand from the stack. Also required altering the C colour processing
to increment the operand stack and pass the operand that way, when 
calling seticc for PDF interpretation.

[psi/zcolor.c psi/zicc.c]

2008-10-13T21:03:48.526048Z Till Kamppeter

Make Duplex with the "pxlcolor" and "pxlmono" drivers work (standard command line options "-dDuplex" and "-dTumble").

[base/gdevpx.c]

2008-10-12T06:38:18.212672Z Alex Cherepanov

Remove spurious un-definition of GlobalSubrs attribute during loading of
OpenType CFF fonts as CIDFont resources. Bug 690113, customer 1110.

[Resource/Init/gs_cff.ps]

2008-10-10T08:51:42.858031Z Ken Sharp

The update for opdfread.ps in revision 8706 missed a required routine 'putu32'.

Details:
putu32, used to update the offsets of TrueType tables in the TrueType header, uses
putu16, which was accidentally omitted. This (oddly) didn't seem to cause a problem with
testing but did for the customer. Added the missing routine.

[Resource/Init/opdfread.ps]

2008-10-09T19:48:14.487705Z Alex Cherepanov

Scale widget annotations in x and y directions to fit the BBox of the
appearance stream into the annotation rectangle. Old code considered
y direction only. Bug 690109.

DETAILS:
This implementation is mainly based on the experiments with AR5.

[Resource/Init/pdf_draw.ps]

2008-10-09T17:53:10.358436Z Ray Johnston

Increase stack size to allow GS to run on older NT versions. Thanks to Alex
for pointing this out.

[psi/dw32c.def]

2008-10-08T15:03:58.878575Z Ray Johnston

Increase stack size to allow GS to run on older NT versions. Thanks to Alex
for pointing this out.

[psi/dwmain32.def]

2008-10-08T13:40:55.237034Z Ken Sharp

Log:
Fix: ps2write. Very large TrueType fonts (>64Kb), when converted to Type 42
fonts for use in PostScript, must contain an /sfnts entry, which is an
array of strings comprising the TT font. There are restrictions on where
the original data is split to form the strings, which ps2write was not
honouring.

DETAILS:
Bug #690044 "Printer error (49,4C02) with ps2write output"
Bug #690012 "Error with ps2write output ps file when Unicode font is used"
Bug #690030 "Issue with NeverEmbed flag with ps2write device for some of the fonts"

There are five changes made to opdfread.ps in order to fix these problems:

1) The VM allocation mode used by opdfread is now local throughout, where 
   previously it was global. Judging by the number of local hacks, this 
   has frequently caused problems in the past.

2) There was a problem if a Font Descriptor contained neither a FontFile
   nor a FontFile2 entry. This was due to not embedding fonts, but caused
   the code to enter an infinte loop looking for one or the other.

3) After encountering the 'xref' in the PDF file, the code simply
   flushed the input file. This could potentially cause a problem if the
   EOF was not signalled back to the interpreter. This was theorised to
   be one of the issues, and fixed in passing, even though it was not
   in fact causing a problem.

4) The sfnts array is now built up from strings which follow the rules
   laid out in the Type 42 Font Format specification (tech note 5012)
   In particular the glyf table is now split on glyph boundaries. This
   only seems to cause problems for Adobe interpreters.

5) The 'post' table processing was modified to use an array of strings
   instead of a single string, if the table was >64Kb.

[Resource/Init/opdfread.ps]

2008-10-08T07:43:52.342922Z Igor Melichev

TT fonts : An initial implementation of GSUB.

DETAILS :

This is a partial fix for bug 689304  
"improper handling of vertical japanese text".
It works for brackets and punctuation signs orientation
when a vertical CJK text is painted with an 
Open Type font that defines a GSUB table.

The curent implementation always chooses a Format 1 
substitution table that substitutes single glyphs to single glyphs.
It doesn't account LangSys and feature tables.
Such logic is owned from the CJK patch attached to the bug 689304.
It may need further improvements.

Opposite to CJK group we implement it in C to allow
to it to work for other interpreters besides Postscript.

Interpreters may need to add an explicit call to 
the new function gs_type42_substitute_glyph_index_vertical
to involve the new functionality. This happens due to
a compatibility to PS interpreter that needs to call
the new function from the interpreter code rather than from
the graphics library.

See comments in code for more details.

[psi/zchar42.c base/gxfont42.h base/gstype42.c Resource/Init/gs_ttf.ps]

2008-10-08T05:56:27.963219Z Ray Johnston

Fix Windows stack overflow when NumRenderingThreads > 0. This was identified
during testing for bug 690108 (see comments, #1 and #2). This is a work around
as it does not address the excessive stack usage, but does work around the
problem by throwing memory at it. Bug 690198.

[base/gp_wsync.c]

2008-10-07T20:05:58.844384Z Ray Johnston

Restore function of NumRenderingThreads > 0 that was inadvertently disabled
by previous commit to this module.

DETAILS:
The segfault was fixed by making sure that the clist structure was initialized
as a 'reader', but this included setting ymin=0, which meant that the following
test for crdev->render_threads == NULL always reverted to single threaded
rendering.

Note that this also will return the error if "clist_close_writer_and_init_reader"
returns an error value (<0), which is consistent with the behavior of the
clist_get_bite_rectangle function (NumRenderingThreads==0).

[base/gxclthrd.c]

2008-10-05T17:51:25.414873Z Ray Johnston

Fix SEGV when NumRenderingThreads > 0 caused by improper clist reader phase
initialization. Bug #690108.

DETAILS:
Make sure that the clsit device is initialized to 'reader' mode before checking
the 'render_threads' element of the reader device. Prevents a SEGV when the
corresponding element of the 'writer' device structure was non-zero at the end
of the page since the render_threads table will not have been allocated and
some other (invalid) pointer would be used instead.

[base/gxclread.c base/gxclthrd.c]

2008-10-02T19:33:22.695690Z Ralph Giles

Move psromfs.mak to the interpreter source tree.

This file defines variables used by lib.mak, but the resources are all 
related to the ps interpreter, so it makes more sense to keep it there.
It is only included by top-level makefiles, so this doesn't violate
the dependency boundary.

[psi/os2.mak base/bcwin32.mak base/ugcclib.mak base/psromfs.mak psi/psromfs.mak base/macosx.mak base/watcw32.mak base/Makefile.in base/unix-gcc.mak base/unixansi.mak ijs/unix.mak psi/msvc32.mak base/macos-mcp.mak]

2008-09-30T19:01:35.905183Z Ray Johnston

Clean up a few coverity gripes (nothing important)

[base/gxclthrd.c]

2008-09-27T01:39:36.090759Z Alex Cherepanov

Set the temporary value of PDFDEBUG flag using 'gput' procedure instead of
'def' because initial PDF graphic state is represented by a read-only
dictionary. Bug 690088.

[Resource/Init/pdf_base.ps]

2008-09-25T23:48:03.662203Z Alex Cherepanov

Process invalid PDF operator QBT as Q BT .
Bug 690089, customer 384.

[Resource/Init/pdf_draw.ps]

2008-09-25T13:36:55.133901Z Igor Melichev

Fix (printer devices) : Allow retries for raster buffer allocation when BufferSpace is default.

DETAILS :

Bug 690055 "seg fault at higher resolutions". 

1. The old code implements a branch with increasing the buffer space
when a clist writer initialization fails with limitcheck and
the buffer size is default.
However the clist writer initialization never returns limitcheck,
it does return rangecheck instead. I guess the bug is in the
retry condition so I change it to rangecheck.

2. When the buffer space size is not default,
the old code crashes while setpagedevice,
if the device was opened. The clist initialization
returns with an inconsistent clist writer state 
and the device still has is_open flag set.
The new code resets is_open if the clist writer initialization
fails while setpagedevice.    

Thanks to Ray for participation.


[base/gxclist.c base/gdevprn.c]

2008-09-25T10:10:03.369546Z Igor Melichev

Fix (clist writer) : Wrong compositor cropping when a shading is entirely clipped out.

DETAILS :

Bug 690078 "clist error in fts_41xx.xps and fts_39xx.xps".

clist_fill_path implements a special processing of a clipping path for shadings.
It falls back to gx_default_fill_path, which accounts both filling path and clipping patch.
Doing so, gx_default_fill_path passes the clipping path to the clist writer
as a high level object with calling clist_fill_path with a NULL color.

However the 2 calls to clist_fill_path differently processed the
case of the empty clipping : the first call did not return immediately
and restored the compositor cropping interval after returning from gx_default_fill_path, 
but the second call does return immediately and did not save the interval before
the clipping path is written. Thus the interval was restored to a wrong state 
that occasionally left from a preceeding filling operation.

This patch moves the check for empty clipping ahead the main
processing in clist_fill_path, so that the 2 calls do same thing
about the skipping of an empty clipping.

[base/gxclpath.c]

2008-09-24T11:07:46.268855Z Ralph Giles

Initial support for aes decryption streams.

Details:

This adds an AESDecode filter to the interpreter which wraps the
new aes stream implementation.

[psi/zfaes.c psi/int.mak]

2008-09-24T11:07:43.989804Z Ralph Giles

Initial support for aes decryption streams.

Details:

This adds support for compiling the xyssl aes implementation added
in r8870, and a stream library wrapper which calls it.

Note that while an s_aes_set_key() procedure is provided to set a
key in an allocated stream state, it merely stores the key, and the
actual allocation of the aes_context structure and initialization
with the key happen the first time the stream's process() method is
called.

This is because a typical call to filter_read() in the interpreter
binding will end up memcpy()ing this to its own separately allocated
stream state. This preserves any static initialization performed by
the caller, such as passing in the key, but the xyssl aes_context
structure includes an internal pointer, and this is not updated when
the state is copied.

The internal pointer provides an indirect reference to support optional
storage of the sbox in secure memory. We're not using this feature, so
we could remove it, or update the pointer ourselves when our process()
method is first called. However, working around the issue by delaying
all opaque initialization until the stream is working is more robust.

[base/saes.c base/lib.mak base/saes.h]

2008-09-23T18:57:30.153977Z Igor Melichev

Fix (PS interpreter) : Incorrect data in garbager descriptor for reusable stream state.

DETAILS :

The bug was introduced in rev 8810.
It defines a wrong offset for a relocating pointer.
The reason is an inaccurate copy-and-replace coding.
Fortunately the offset pointed to a static data pointer,
which the garbager filtered out with an error message.

[psi/zfrsd.c]

2008-09-22T10:56:52.199700Z Ken Sharp

Remove a number of no longer required includes from the source, and update the makefile to remove the dependencies.

Local regression testing shows no differences, local builds correctly generate executable.

[base/gdevpdfm.c base/gdevpsdp.c base/gdevpdt.c base/gdevpdfo.c base/gdevpdf.c base/gdevpsdu.c base/gdevpdfd.c base/gdevpdfu.c base/gdevpdfv.c base/gdevpsdi.c base/gdevpdfg.c base/devs.mak]

2008-09-19T23:31:25.043936Z Ralph Giles

Fix a double fclose().

fuzzy_diff_images() doesn't open the files it reads from, so it should
not close them when cleaning up. The caller takes care of this on line
764, right after calling fuzzy_diff_images().

[toolbin/tests/fuzzy.c]

2008-09-19T21:45:10.190751Z Ralph Giles

Correct two typos in error message strings.

[toolbin/tests/fuzzy.c]

2008-09-19T21:45:09.139047Z Ralph Giles

Move the freport initizialization out of fuzzy_diff_images() to silence
a gcc uninitialized variable warning.

[toolbin/tests/fuzzy.c]

2008-09-19T21:45:08.203062Z Ralph Giles

Remove trailing whitespace.

[toolbin/tests/fuzzy.c]

2008-09-19T21:45:06.338528Z Ralph Giles

Fix a gcc warning. Bug 690054.

Details:

The gs_note_error() macro can't be called like a normal function. In
non-debug builds it reduces to its argument, generating an empty
statement. Placing it after a return or on the right hand side of an
assignment prevents this warning.

[base/gdev8510.c]

2008-09-19T16:22:32.262870Z Ralph Giles

Include our math_.h wrapper instead of math.h.

Details:

We have header_.h wrappers for most system headers which include various 
platform-specific #ifdef trees to ensure the symbols we use are defined.

Except for some of the bootstrap code, these wrappers should always be 
used instead of the system headers.

[psi/zcolor.c psi/int.mak]

2008-09-19T16:08:02.308202Z Ralph Giles

Also remove gscolor1.h from the zcolor.c dependency list.

[psi/int.mak]

2008-09-19T13:44:55.520555Z Ken Sharp

Remove gscolor1.h. We no longer use gs_setcmykcolor here and so this header is not required.

[psi/zcolor.c]

2008-09-19T00:01:51.675092Z Ralph Giles

Use a portable path separator in gs.mak.

[base/gs.mak]

2008-09-18T23:55:26.486186Z Ralph Giles

Remove a spurious $(_I) and add use portable $(D_)...$(_D) for defines
as needed by the openvms build. Bug 690084.

[base/libpng.mak base/devs.mak]

2008-09-18T23:50:07.487730Z Ralph Giles

Fix typos in third-party library paths introduced in r6514. Bug 690084.

[base/openvms.mmk]

2008-09-18T23:31:16.150062Z Ralph Giles

Additional leading space characters before colons in makefiles. Bug 690084.

[base/lib.mak contrib/contrib.mak]

2008-09-18T20:32:08.326447Z Ralph Giles

Space makefile colons for the benefit of VMS. Bug 690084.

OpenVMS supports a basic makefile syntax, but requires a space on both 
sides of the dependency colon. We try to maintain this in our 
cross-platform makefiles. 

[contrib/contrib.mak base/contrib.mak base/devs.mak]

2008-09-18T18:23:22.617130Z Ralph Giles

Move time_.h to the top of the include list.

[base/mkromfs.c]

2008-09-18T00:37:45.093298Z Ralph Giles

The SunPro compiler doesn't handle variable length arrays in structs.

Bug 689079. Patch from Jon Peatfield.

[contrib/opvp/opvp.h]

2008-09-18T00:37:43.189925Z Ralph Giles

Clean up whitespace in the opvp device source.

[contrib/opvp/opvp.h contrib/opvp/gdevopvp.c]

2008-09-18T00:37:41.259902Z Ralph Giles

Fix: default to MITER line joins in the opvp device. Bug 689079.

The previous default was BUTT, which is a line cap, not a join. This
looks like it was a cut-and-paste error. Patch from Jon Peatfield.

[contrib/opvp/gdevopvp.c]

2008-09-18T00:37:38.655050Z Ralph Giles

Fix: don't treat char as unsigned in the opvp device. Bug 690079.

[contrib/opvp/gdevopvp.c]

2008-09-18T00:12:11.086491Z Ralph Giles

Enable jasper assembly optimizations with _MSC_VER instead of _WIN32 so the MSVC-specific inline code won't be passed to gcc in mingw builds.

Bug 690070.

[jasper/src/libjasper/jpc/jpc_qmfb.c]

2008-09-16T00:29:06.813229Z Ralph Giles

Remove an inadvertent semicolon in gs_throw_code, added in r9037.

[base/gserror.h]

2008-09-14T12:20:56.043501Z Alex Cherepanov

Allocate missing FontInfo dictionary in a matching global or local memory and
use .forceput to override read-only status of the font directory. Bug 690063.

[Resource/Init/pdf_font.ps]

2008-09-13T20:22:25.237944Z Ralph Giles

Move the dxmain.c and dxmainc.c front ends to the interpreter source 
directory.

[base/dxmain.c psi/dxmain.c base/unix-dll.mak base/dxmainc.c psi/dxmainc.c]

2008-09-12T08:05:54.684727Z Ken Sharp

The CIEBasedDEF/DEFG colour space validation did not insist that the dictionary contain a
/Table entry, which is a required entry. It also did not limit the numeric values in the
/Table array to integers, reals are not allowed.

[psi/zcolor.c]

2008-09-11T16:03:58.760444Z Ray Johnston

Add support for passing the requested number of copies through to the PXL
output file. Tested on an actual HP printer.

[base/gdevpx.c]

2008-09-10T21:35:24.802228Z Ralph Giles

Change two more printf(%x) uses with pointers to use %p.

Update copyright.

[base/gxclmem.c]

2008-09-10T21:33:26.724052Z Ray Johnston

Replace non-standard %P with %p for pointer printing.

[base/gxclmem.c]

2008-09-09T21:00:54.348833Z Ralph Giles

Ask gcc to warn about declarations beyond the start of a block.

[base/configure.ac]

2008-09-09T20:31:37.982033Z Ralph Giles

Move variable declarations to the top of blocks in the fontconfig 
support code.

Also fixes a gcc warning about passing int 0 instead of NULL to 
terminate an argument list.

[base/gp_unix.c]

2008-09-09T18:45:27.627887Z Ralph Giles

Add a space to the product name between the family and release names.

[base/gscdef.c]

2008-09-09T17:48:26.542519Z Ralph Giles

Move some interpreter headers from base to psi.

These were missed in the original merge of the reorganization patch.
Also, add missing makefile dependencies for these new headers.

[base/zcolor.h base/zicc.h psi/zcolor.h psi/zicc.h base/zcie.h psi/zcie.h psi/int.mak]

2008-09-09T14:33:31.847337Z Ken Sharp

Henry's coverage test revealed that a couple of 'belt and braces' checks in the RGB->HSB
conversion were impossible to trigger. Removed those checks.

[psi/zcolor.c]

2008-09-06T09:57:38.114441Z Ken Sharp

Address some more issues raised by Coverity. Check return values in some places which were
not previously checked, initialise some variables, and remove some dead code.

Local regression testing of pdfwrite shows no differences.

[base/gdevpdtd.c base/gdevpdtt.c base/gdevpdte.c base/gdevpdtf.c base/gdevpdfe.c base/gdevpdtw.c base/gdevpdti.c]

2008-09-04T15:46:56.923276Z Igor Melichev

Fix : Divide gdevp14.c into 2 modules.

DETAILS :

This change is syntactically equivalent.
The purpose is to minimize dependencies between projects.
The new module gxblend1.c keeps color blending algorithms moved from gdevp14.

[base/gdevp14.c base/lib.mak base/gdevp14.h base/gxblend.c base/gxblend1.c base/gdevdevn.h base/gxblend.h]

2008-09-04T14:06:17.707413Z Igor Melichev

Fix (graphics) : Preovide a right check for incorrect call to pdf14_pop_transparency_group.
 
DETAILS :

This patch doesn't change behavior with regular runs.
In hypothetic cases, when .entransparencygroup is called with no
L
due to unreferencin null pointer.

[base/gdevp14.c]

2008-09-04T10:05:54.831940Z Ken Sharp

More minor issues reported by Coverity. An unchecked return code from cos_dict_find_c_key,
and some dead code.

[base/gdevpdfm.c]

2008-09-04T10:04:10.193139Z Ken Sharp

A couple of issues detected by Coverity. Firstly an error condition could lead to a file being
left open. Secondly a call to pdf_restore_viewer_state which didn't check the return value.

[base/gdevpdfu.c]

2008-09-04T10:02:04.794387Z Ken Sharp

More very minor dead code removal, again as noted by Coverity.

[base/gdevpdtb.c]

2008-09-04T10:01:12.562540Z Ken Sharp

Remove some dead code from cmap handling, as noted by Coverity.

[base/gdevpdtc.c]

2008-09-04T09:59:11.733313Z Ken Sharp

Check the return code from pdf_write_resource_objects when closing a page. Fixes Coverity
warning.

[base/gdevpdf.c]

2008-09-03T20:49:13.486158Z Ray Johnston

Add protection for the "finish" exit point for potential (no longer exists
since rev 9062) case when f==NULL when code >= 0. Belt and suspenders couldn't
hurt to improve maintainability (prevent future problems). Original problem
reported by Coverity analysis.

[base/gxclmem.c]

2008-09-03T12:20:27.869178Z Igor Melichev

Fix : gcc compiler warnings (continued).

DETAILS :

Repair a file broken due to Far 1.70 editor glitch on Vista.

[psi/zfunc4.c]

2008-09-03T11:42:35.783010Z Igor Melichev

Fix : gcc compiler warnings.

DETAILS :

This patch fixes only those ones which either were approved or belong to my ownership.

[base/gxclread.c base/gxpcopy.c base/gxclpage.c psi/zfunc4.c base/gxclutil.c base/gxclmem.c base/lib.mak base/gxiscale.c base/gxclmem.h base/gdevpdtd.c psi/int.mak psi/zfsample.c base/gdevpdte.c base/gximage1.c base/gsovrc.c base/gdevprn.c base/gxstroke.c psi/zfunc.c base/gspath1.c base/gxshade6.c psi/zfrsd.c base/gxclpath.c psi/zfunc.h psi/igcstr.c base/mkromfs.c base/gstype42.c base/gdevdsha.c base/gxfill.c base/gxclrast.c]

2008-09-02T18:37:07.959806Z Till Kamppeter

Fixed small bug in the patch to add a PJL command for setting the resolution to
the pxlmono/pxlcolor drivers (rev 9060).

[base/gdevpxut.c]

2008-09-02T09:06:41.787945Z Till Kamppeter

Let pxlmono/pxlcolor drivers add resolution setting to the PJL header. Printers need the PJL command to set the resolution (see bug 689230). Now the printing resolution can be easily controlled with the "-r" command line option.

[base/gdevpxut.c]

2008-09-01T17:03:20.988497Z Alex Cherepanov

Fix incorrect error code test in the calculator function validation
procedure.

[psi/zfunc4.c]

2008-09-01T16:53:43.689721Z Ken Sharp

Resolve another gcc compiler warning. The test was incorrect, now it is correctly taking the
text render mode into account.

Local regression testing shows no differences.

[base/gdevpdts.c]

2008-09-01T08:49:44.722693Z Ken Sharp

Fix a warning from older versions of gcc. Spotted by Russell Lang when doing OS/2 build. 
Oddly, newer versions of gcc don't spot this, even though the code was technically
redundant.

Also remove some commented out code that should not have been present, and fix a couple
of warnings produced by recent versions of gcc regarding unused local variables and code.

Local regression testing exhibits no differences.

[base/gdevpdtt.c]

2008-08-31T00:28:20.047781Z Russell Lang

Add a makefile target for a Windows source zip file, 
used in building a release.

[psi/winint.mak]

2008-08-30T23:23:04.017387Z Alex Cherepanov

Make PDF interpreter run our /Install procedure after the user's procedure
because: (1) PDF interpreter caches the CTM, (2) the user's procedure may
replace CTM by calling setmatrix. Bug 689914, customer 770.

[Resource/Init/pdf_main.ps]

2008-08-30T14:07:29.736170Z Igor Melichev

Fix (PS interpreter) : Wrong dependencies in makefile.

[psi/int.mak]

2008-08-30T13:38:27.563236Z Russell Lang

Fix gcc warning on OS/2.

[base/gdevdsp.c]

2008-08-30T13:31:29.235544Z Russell Lang

Fix the OS/2 build after the source reorganization.
Remove the os2pm device and the old DLL interface for OS/2, 
to avoid direct links from the graphics library into the 
PS interpreter.

[base/gp_os2.c base/os2.mak psi/dpmain.c psi/gsos2.def base/gsos2.icx doc/Develop.htm psi/gsos2.rc base/pcwin.mak base/dpmain.c base/gsos2.def psi/os2.mak base/mkromfs.c base/gsos2.rc psi/gsdllos2.h psi/gsos2.icx base/gp_os2fs.c base/gdevpm.c psi/gsdll2.def base/devs.mak]

2008-08-29T19:47:13.384972Z Ralph Giles

Update the Visual Studio project file generator for
the new source locations. Untested.

[toolbin/msvcxml.bat]

2008-08-29T18:46:21.860372Z Ralph Giles

Split the source tree into two new directories.

PSSRC files are now in 'gs/psi'.
GLSRC files are now in 'gs/base'.

This is to facilitate build modularization and merging in the ghostpdl 
tree.

NOTE: msvc32.mak is now in psi, not src.

[/trunk/ghostpdl/language_switch/pspcl6_msvc.mak /trunk/ghostpdl/main/pcl6_gcc.mak src /trunk/ghostpdl/tools/check_deps.py doc/Develop.htm psi /trunk/ghostpdl/svg/svg_gcc.mak /trunk/ghostpdl/xps/xps_msvc.mak /trunk/ghostpdl/main/pcl6_msvc.mak /trunk/ghostpdl/doc/ghostpdl.tex /trunk/ghostpdl/psi/psitop.c doc/API.htm doc/Issues.htm /trunk/ghostpdl/svg/svg_msvc.mak /trunk/ghostpdl/language_switch/pspcl6_gcc.mak doc/Make.htm doc/Drivers.htm base autogen.sh doc/Release.htm doc/C-style.htm /trunk/ghostpdl/doc/ghostpdl.txt /trunk/ghostpdl/xps/xps_gcc.mak]

2008-08-28T19:47:00.816950Z Ralph Giles

Replace 3d with 3rd in the documentation and regularize '3(r)d party' as 
'third-party'. Bug 690004.

[doc/Use.htm doc/Lib.htm]

2008-08-28T02:40:07.463083Z Ralph Giles

Use the new gs_rethrow_code() macro in svgwrite.

[src/gdevsvg.c]

2008-08-28T02:40:06.379728Z Ralph Giles

Add gs_throw_code() and gs_rethrow_code() macros for use in situations
where the normal error string does not fit or is redundant.

[src/gserror.h]

2008-08-28T02:40:04.423296Z Ralph Giles

Fix some code style issues in the svgwrite device.

We can't use gs_note_error() as we were because it returns the error
code which generates an empty statement warning with gcc. Use gs_throw()
instead for now.

[src/gdevsvg.c]

2008-08-28T00:36:33.257400Z Ralph Giles

Update warnings policy; we agreed to fix all warnings.

[doc/C-style.htm]

2008-08-28T00:03:40.520992Z Ralph Giles

Document the motivation for a source style item.

Details:

There has been some controvesy over the rule that single-statement 
bodies of control structs must be on their own line. Specifically:

  if (code < 0)
    return code;

instad of:

  if (code < 0) return code;

despite the latter being less obtrusive for common error checks.

Several developers have requested this because it allows setting a 
breakpoint directly on the return statement instead of a conditional 
return on the conditional line, or a breakpoint at the return inside
the single source line. This is therefore a practical issue, not just
one of readability and style.

[doc/C-style.htm]

2008-08-27T17:27:24.986727Z Ralph Giles

Fix more html conformance problems with the documentation.

[doc/Ps2ps2.htm doc/Fonts.htm doc/Use.htm doc/Ps2pdf.htm doc/Develop.htm doc/Deprecated.htm doc/Install.htm doc/API.htm doc/Issues.htm doc/Make.htm doc/Drivers.htm doc/Release.htm doc/C-style.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm]

2008-08-27T02:57:23.718740Z Ralph Giles

Remove Humor.htm.

The joke has gotten old, and blogs are a better medium for this sort of 
thing.

[doc/Humor.htm doc/Readme.htm]

2008-08-27T02:16:43.113337Z Ralph Giles

Remove the obsolete HTML style guidelines.

We no longer expect readers to look at the raw html in a text editor. 
Documentation should declare its format specification and conform to it, 
attempting to match local style where appropriate.

[doc/Htmstyle.htm doc/Readme.htm]

2008-08-27T02:14:10.447789Z Ralph Giles

Replace the awkward <b><tt> construction with css-styled <code> elements.

[doc/History7.htm doc/Fonts.htm doc/Projects.htm doc/Ps2ps2.htm doc/Use.htm doc/Readme.htm doc/Develop.htm doc/Ps2pdf.htm doc/Deprecated.htm doc/Source.htm doc/Helpers.htm doc/Psfiles.htm doc/Lib.htm doc/Install.htm doc/Htmstyle.htm doc/API.htm doc/gs.css doc/DLL.htm doc/Make.htm doc/Drivers.htm doc/Unix-lpr.htm doc/Commprod.htm doc/C-style.htm doc/Ps-style.htm doc/Release.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm doc/Ps2epsi.htm]

2008-08-26T21:50:26.926408Z Ralph Giles

Cast away signed/unsigned char warnings in gdevsvg.

Patch from Igor Melichev. Also cleaned up some trailing whitespace.

[src/gdevsvg.c]

2008-08-26T21:40:55.546109Z Ralph Giles

Remove references to bits64 from the source style documentation. It is 
superceeded by the stdint types.

[doc/C-style.htm]

2008-08-26T15:59:38.718117Z Igor Melichev

Fix (PDF interpreter) : Implementing a temporary option for development needs of images with soft mask. 

DETAILS :

It doesn't chamge the behavior for regular runs.
The new temporary option is for development purpose only.
It will be removed after the complete implementation of images with soft mask is done.

[Resource/Init/pdf_draw.ps]

2008-08-26T15:31:03.416051Z Igor Melichev

Fix (PDF interpreter) : A wrong comment about procedure operands for is_big_mask .

DETAILS :

It changes a comment only.

[Resource/Init/pdf_draw.ps]

2008-08-26T07:02:55.610521Z Igor Melichev

Fix (graphics) : Scanline algorithm missed pixels at horizontal boundaries.

DETAILS :

Bug 689402 "Regression: differences in dina3_watermark.pdf".

The defect looks as an unimplemented branch.
which persists since Ghostscript 8.00 released on Decebmer 2002
or longer. We could get a similar problem when runnung Bug687832.pdf
with Ghostscript 7.04 (it can't handle dina3_watermark.pdf),
and our reading of its code shows that the problem presents in it.
So the problem is really antique.
 
The bottom of the problem is that fill adjustment was not applied 
to some horizontal segments. Due to that some pixel centers are not covered 
when they must be.

[src/gxfillsl.h]

2008-08-23T16:39:21.950258Z Alex Cherepanov

Fix 6 Coverity warings about local variables hiding function arguments
by renaming local variables.

[src/gsbitops.c]

2008-08-23T01:05:47.610764Z Russell Lang

Remove reference from Windows image window code back to PostScript interpreter,
to allow the image window code to be used with non-interpreter builds.

[src/dwimg.h src/winint.mak src/dwmain.c src/dwmain.rc doc/Develop.htm src/dwmainc.c src/dwmain.h src/dwimg.c src/dwres.h]

2008-08-22T16:34:36.763761Z Ralph Giles

Move the dw source files from GLSRC to PSSRC. Items in GLSRC shouldn't 
depend on items in PSSRC. This is in preparation for the code 
reorganization.

Details:

A number of these files, dwtext, dwtrace, and with some modifications 
dwimg don't actually have PSSRC dependencies, but it's easier to keep 
all the files built by winint.mak there for now. They can be moved back
into the base library later when they're useful for other builds.

[src/winint.mak]

2008-08-22T01:13:28.560292Z Ralph Giles

Remove an unnecesary iapi.h include.

[src/winint.mak src/dwimg.c]

2008-08-22T01:11:24.167807Z Ralph Giles

Remove trailing whitespace.

[src/dwimg.h src/dwimg.c]

2008-08-21T23:26:24.907412Z Ralph Giles

Add a missing return value check. Coverity issue 1847.

[src/zcolor.c]

2008-08-21T22:55:00.562927Z Ralph Giles

Correct a double free introduced in r9005.

[src/gp_unix_cache.c]

2008-08-21T21:51:24.194924Z Ralph Giles

Remove trailing whitespace.

[src/ztrans.c]

2008-08-21T08:35:09.363063Z Ken Sharp

Submission for revision 9008 initialised the wrong 'pfn' variable. 

Details:
Accidentally changed the use in 'zbuildfunction' instead of 'buildfunction'. Correcting.

[src/zfunc.c]

2008-08-21T08:33:31.319105Z Ken Sharp

Fix some more Coverity warnings

Details:
Two places where a return value (from names_ref) was not being checked, one inadvertent
piece of dead code (duplicating a previous error check) and one genuine case of a variable
which could potentially be used uninitialsed.

[src/zcolor.c]

2008-08-21T08:28:49.451522Z Ken Sharp

Silence an 'uninitialised variable' warning from Coverity.

Details:
Function initialisation is a bit round about. We pass a function pointer to
make_sampled_function, which assigns it to a local variable. That variable is passed to
gs_function_Sd_init, which immediately zeros it....

Since the pointer is never actually used, setting it to NULL should silence the warning.

[src/zfunc.c]

2008-08-20T23:58:43.536642Z Ralph Giles

Replace an abs() call with our any_abs() macro. Also remove an 
unnecessary math_.h include.

Details:

A call to abs() was added in r8942. Technically the prototype for this 
is in stdlib.h, but it's a built-in in most compilers so this didn't 
raise a warning. We do include stdlib.h elsewhere, usually for qsort() 
or malloc(), but abs() is only called from comment pseudo code; in 
practice the any_abs() macro or fabs() from math.h are used instead.
Because this isn't in an inner loop, speed isn't important, so we prefer 
the macro to a system header include for consistency.

Sine the beginning of repository history, gdevbit.c has included math.h, 
but I don't see any math library calls now, so it as been removed.

[src/gdevbit.c src/devs.mak]

2008-08-20T23:22:49.144680Z Ralph Giles

Check for and propagate failures to find matching component indexes in 
jpx streams.

[src/sjpx.c]

2008-08-20T22:09:49.649774Z Ralph Giles

Further cleanups to the unix persistent cache error handling.

[src/gp_unix_cache.c]

2008-08-20T21:32:28.795836Z Ralph Giles

Fix memory and file handle leaks in the unix persistent cache error 
handling. Also document that it is not re-entrant.

[src/gp_unix_cache.c]

2008-08-20T19:46:20.907096Z Ralph Giles

Remove trailing whitespace.

[src/gp_unix_cache.c]

2008-08-20T19:09:44.615235Z Ralph Giles

Add a cast in svgwrite to be explicit that we're only using the lower 24 
bits of the color index.

[src/gdevsvg.c]

2008-08-20T18:26:10.369143Z Ralph Giles

Fix __func__ on the default (non-C99) gcc build.

Details:

__func__ is a variable in C99. The earlier __FUNCTION__ is a magic 
preproccessor define in MSVC 7 and later, so the #if defined() clause 
enabled it. However, in GCC it is a magic string literal instead and so 
this clause did not enable it. Therefore we add an explicit check for 
the appropriate GCC version and define the same substitution for that 
compiler.

[src/gserror.h]

2008-08-20T01:54:36.820847Z Ralph Giles

Add the svgwrite device to the default windows build.
Bug 690028.

[src/msvc32.mak]

2008-08-19T04:07:40.862102Z Ralph Giles

Remove the jasper dependency from jpxtopdf. It's straightforward to 
parse the image header ourselves.

[toolbin/jpxtopdf.c]

2008-08-17T12:31:25.491176Z Alex Cherepanov

Fix a bug in error checking code introduced in the rev. 8996 in pamcmyk32
device. Bug 689583.

[src/gdevpbm.c]

2008-08-17T06:19:35.130662Z Alex Cherepanov

Check return values from all stdio functions in all pnm drivers and propagate
error codes upwards. Bug 689583.

[src/gdevpbm.c]

2008-08-17T01:19:23.099945Z Alex Cherepanov

Add one more NMAKE version recognized as MSVC 7.
Bug 689816, customer 351.

[src/msvc32.mak]

2008-08-16T04:18:20.474141Z Alex Cherepanov

Work around a bug in a PDF file produced by "Nitro PDF Driver". Assume invalid
operator '-' to be a number 0. Bug 690012, 

[Resource/Init/pdf_main.ps]

2008-08-16T02:00:51.387588Z Alex Cherepanov

Fix parsing of large embedded TrueType fonts by ps2write header: (1) read the
file into multiple strings for sfnts array. (2) use multiple reads to skip
over large parts of the file. Also modify Type42 font reader to allow TrueType
objects to span sfnts string boundaries. Bug 690012.

[src/gxttfb.c Resource/Init/opdfread.ps]

2008-08-14T17:54:06.399403Z Alex Cherepanov

Use GNU iconv.h header in compatibility mode unless we link with GNU libiconv.
This is needed for compiling gs with gcc under HP-UX 11.11.

DETAILS:
gdevopvp.c uses some basic functionality from iconv library but none of GNU
extensions. So the native implementation is searched first.

GNU header uses different names in the library and defines some macros to map
iconv* names to GNU libiconv* names.

gcc looks for GNU version of iconv.h first, which requires a compatibility
flag to link with the native libraries.

So the compatibility flag is set when iconv* functions are not found but
libiconv* functions are found.

[src/configure.ac contrib/opvp/gdevopvp.c]

2008-08-13T01:56:36.856132Z Ray Johnston

Update the fonts to those that the nightly and cluster regressions have
been using all along. The -Ifonts in the regression script was causing
the contents of Resource/Font to be ignored. These fonts are the std-8.11
version.

Note we probably next need to move to the newer version of these fonts
with the metrics fixed, but this is a first step.

DETAILS:
These are files that were part of the distribution 8.11 files that really
can't live in the Resource/Font directory since some applications or
test files will enumerate (with 'resourceforall') the directory and will
get errors if files are there that are not fonts.
___________________________________________________________________________
				README:
This is release 1.0.7pre22 of Valek Filippov's improved versions of the URW
type 1 font collection, repackaged for distribution with Ghostscript.

Cyrillized free URW fonts.

These fonts were made from the free URW fonts distributed with ghostcript.
There are NO changes in the latin part of them (I hope).
Cyrillic glyphs were added by copying suitable latin ones
and painting oulines of unique cyrillic glyphs in same style as the others.
For all modification pfaedit was used.
The license for result is (of course) same as for original fonts,
i.e. GPL with an exception that you can put these fonts in your own non-GPLed
documents. (Looks like LGPL from my point of view =).

The "sources" of these fonts in the native pfaedit format are available
at ftp://ftp.gnome.ru/fonts/sources

The great font editor pfaedit is available at http://pfaedit.sf.net.
That page also includes some links to fonts created by
George Williams -- the author of pfaedit.

Acknowledgements:
I would like to thank George Williams, the pfaedit's author and developer.
He is the most bug-reporter/feature-requester friendly developer
I ever saw in my not so short life. At some moment in the future
I must write a book about him: "George Williams and my best experience
in bug-reporting." George also greatly helped me bug-hunting these fonts,
explained to me some very important things about fonts and font design,
quickly adopted pfaedit to my needs (or pointed me to The Right Place in
documentation where I found better way of doing things).

I would like to thank Alexey Novodvorsky (aka AEN), who
pointed me to pfaedit and George Williams' fonts, explained
The Task to me. He is also one of the main participators in the
development of Sysiphus -- free repository of free software.
I didn't loose my time for compiling/installing and supporting
my linux box coz I used the result of Sysiphus developers' works.

I would like to thank Sergey Vlasov, who tested these fonts and reported
about bugs. Also he help me to make some bug-reports to George about
pfaedit bugs.

I would like Dmitry 40in, who did big QA for some font outlines, drawn some glyphs,
and explain some The Truths for me.

I would like to thank Vlad Harchev (aka hvv), who
proofread this text for me.

Also I have to thank RMS for GPL and URW for releasing the fonts
under it.

Thank you very much!
Valek Filippov frob@df.ru
(C)opyLeft 2001
______________________________________________________________________________________
				TODO:
- fix all missed glyphs.
- change suitable glyphs with references.
- improve bearings of glyphs (thanks Dmitry 40in who pointed me to this)
- improve outlines of some cyrillic glyphs 
______________________________________________________________________________________
				Changelog:
2002-11-22  Valek Filippov  <frob@df.ru>

    Fixed bug that broke printing from QT.
    
2002-11-16  Valek Filippov  <frob@df.ru>

   Fixed some cyrillic (russian) glyphs in NimbusMono.
   NimbusMono Ascend/Descend were changed to match the visible
   size of the other font if same point-size is used.

2002-10-12  Valek Filippov  <frob@df.ru>

   Regenerated coz I screwed up UIDs.
   Partly applied Owen Tailor tweaks.
   (Really GWW changed pfaedit autohinter after OT sugggestion,
   so other OT tweaks are aoutomade by pfaedit)
   
2002-08-17  Valek Filippov  <frob@df.ru>

    Regenerated from 9-aug pfaedit version.
    Mostly for testing of new cubic->quad bezier conversion.

2002-07-22  Valek Filippov  <frob@df.ru>

    Regenerated from 22-07 pfaedit version.
    I still haven't enough time for correct serbian glyphs from Danilo
    integration =(

2002-05-19  Valek Filippov  <frob@df.ru>

    Regenerated from 18-05 pfaedit version.
    Restored original UIDs.
    Made otf versions again =)

2002-03-06  Valek Filippov  <frob@df.ru>

    Added pfms. Forced using of original kerning.
    d* and s* files were missed (fixed now).

2002-03-04  Valek Filippov  <frob@df.ru>

    Improved Bookman and Gothic. All fonts were regenerated
    (fix 'Delta', improved hinting). pfms are temporary excluded.

2002-02-03  Valek Filippov  <frob@df.ru>

    Improved Bookman Light/DemiBold. At 2002-01-07 I put
    non latest version of Chancery -- fixed.

2002-01-18  Valek Filippov  <frob@df.ru>

    All fonts regenerated again, coz AEN found bug in names translation.
    NimbusRomNo9-Regu greatly improved. NimbusRomNo9-Bold, NimbusSans{Cond}-{Regu,Bold}
    partially improved.

2002-01-07  Valek Filippov  <frob@df.ru>

    Bookman improved. Chancery added.

2002-01-04  Valek Filippov  <frob@df.ru>

    All fonts were regenerated.
    TTF-instructions were improved, some non-russian cyrillic
    fixed, "fi" and "fl" ligatures ligaturized where were not.
    Implemented some changes that Dmitry suggested,
    NimbusMono-Regular is partially made by him.
    Added COPYING. Generated pfm-files.
    Added fonts.dir and fonts.scale from gnu-gs-fonts.
    
2001-12-14  Valek Filippov  <frob@df.ru>

    Full tarball was made.

    NimbusRomNo9 regenerated. Added 'numero sign',
    'infinity' and 'Omega' (in Regu -- by Dmitry 40in).
    OTF versions removed until the best time.
    Dmitry supposed that URW'd presented 'beta'-version
    of fonts to community, coz bearings for original URW
    are not perfect. 1st attempt to fix it.  

2001-12-12  Valek Filippov  <frob@df.ru>

    Schoolbook extended to 'val3' and regenerated.
    Palladio extended to 'val3' and regenerated.
    Bookman extended to 'val3' and regenerated.
    Gothic extended to 'val3' and regenerated.
    Some glyphs still missed.       

    NimbusMono regenerated with modern pfaedit
    (bug with xterm fixed). Some 0x4** glyphs fixed.
    Added "number sign" and "infinity". Thanks to
    Dmitry 40in and Anton Zinoviev who criticized me
    about it. 

2001-12-08  Valek Filippov  <frob@df.ru>

    Added updated version of NimbusSansCond.
    Changes same like for NimbusSans
    (except: otf version not added).
    
2001-12-07  Valek Filippov  <frob@df.ru>

    Added updated version of NimbusMono.
    (Lat Ext-A, full 0x400 except 'glagolic', some chars are still
     missed; ttf hinting regenerated; otf version added;
     'Cyr De, de, L, l, Ch, ch' fixed).

2001-12-06  Valek Filippov  <frob@df.ru>

    Added updated version of NimbusSans.
    (Lat Ext-A, full 0x400 except 'glagolic', some chars are still
     missed; ttf hinting regenerated; otf version added;
     'Cyr De, de, L, l, Ch, ch' fixed).
    
2001-12-05  Valek Filippov  <frob@df.ru>

    Kern pairs from original URW had missed at the 11-nov version.
    Added OpenType version of fonts.

2001-11-11  Valek Filippov <frob@df.ru>
    
    NimbusRomanNo9
    Regular: added all uni0400 (except ancient cyrillic /glagolic?/).
             04bc-04bf, 04a8-9, 04d8, 04da still missed.
	     added all glyphs from Lat Ext-A (uni0100-017F) that was missed
	     in original URW (45 glyphs).
	     Most of accented chars and part of cyrillics changed
	     with references.
	     TTF hinting regenerated with modern PfaEdit.
    Bold: same but also missed 0494, 04a6, 04c3
    Italic, BoldItalic: same but missed many non-russian cyrillics.
______________________________________________________________________________________
				README.tweaks
Nimbus Sans L Regular, Nimbus Mono L Regular, Nimbus Mono L Oblique
all come from a more recent version of the cyrillic URW fonts.

The hints on Nimbus Sans Regular have been modified in the
following ways:

25 June 2002

 - Added ghost hint to the top of 4 to keep it from being
   taller than the other digits.
 - Reduced the width of the left stem hint for H to 83
   (probably no real differences)
 - Changed the StemSnapV values from [78 85 94] to [78 83 92]
   (and fixed up StdVW accordingly)
   This corresponds to the values in the font (which are 83/93
   for lower case and upper case stems) better and makes
   the width-88 stems on M and N snap to to upper case 
   widths not lower-case widths.

29 June 2002

 - Removed odd vertical stem hints (width of horizontal
   stems) from f, F, t, E, yen sign, fi ligature, 
   fl ligature, AE ligature, R, Lstroke, OE ligature,
   lstroke, E" variants, t, variants, Eth, Dstoke, etc.
 - Fixed hints on 1 to be two ghost hints instead of one
   hint the height of the font
 - fix bottom stem of u to have integer coordinates
 - fixed hints on |
 - fixed hints on inverted exclamation mark

The hints on Nimbus Mono L Oblique have been modified in the
following ways:

 - Removed vertical stem hints from horizontal serifs on
   roman characters.
  
Owen Taylor

[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusSanL-Bold Resource/Font/NimbusRomNo9L-Medi Resource/Font/Dingbats Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font/NimbusMonL-Bold Resource/Font/NimbusRomNo9L-MediItal Resource/Font/NimbusSanL-BoldItal Resource/Font/URWGothicL-Demi Resource/Font/StandardSymL Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/CenturySchL-Bold Resource/Font/URWBookmanL-Ligh Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusSanL-BoldCondItal Resource/Font/NimbusMonL-BoldObli Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/NimbusSanL-ReguItal Resource/Font/URWGothicL-BookObli Resource/Font/URWPalladioL-Ital]

2008-08-12T23:44:53.919723Z Ray Johnston

Remove 'Actual Fonts' references in the Fontmap that connected the URW FontName
to an 8.3 filename that we no longer use.

[Resource/Init/Fontmap.GS]

2008-08-12T21:04:38.048281Z Ray Johnston

Move opdfread.ps to Resource/Init since this is needed by the 'ps2write' device.

[lib/opdfread.ps Resource/Init/opdfread.ps]

2008-08-12T14:42:02.961911Z Ken Sharp

Fix: Genoa file renders incorrectly with current color code

Details:
A typo in the DeviceGray code used an array of doubles instead of floats, causing incorrect
values to be returned by currenthsbcolor.

[src/zcolor.c]

2008-08-12T13:41:08.386171Z Ken Sharp

Yet another minor change in the color work.

The test file 'foo0-ge-64k.pdf' demonstrated an error with NChannel processing. The old
PostScript based code simply ignored errors when setting the NChannel Colorant spaces, we
now do the same.

[src/zcolor.c]

2008-08-12T09:17:56.269901Z Ken Sharp

Another small change to the color code. The issue Michael has been looking at (#689950)
uses a DeviceN space with an NChannel Colorants dictionary. A mistake in the NChannel
parameter checking meant that the Colorants were never evaluated.

[src/zcolor.c]

2008-08-12T07:37:45.162884Z Igor Melichev

Fix (PS interpreter) : Wrong glyph positions with CIDFontType 2 WMode 1.

DETAILS :

Bug 688058 "Vertical Japanese characters shift upper right direction". 
Bug 689559 "centerline of vertical CJK text is wrong when external TrueType CJK font is used.". 

The old code wrongly computes glyph positions when a CIDFontType 2 WMode 1
font has no metrics and includes vmtx. The patch properly computes
the V vector using top side bearing and font bounding box.
See comments in code.

This patch fixes the glyph positions and closes the original bugs, 
but we still observe other 2 problems with the 688058 test case :

1. 2 characters are substitutes with hollow boxes.
2. pdfwrite generates a PDF with a wrong glyph positions.

Opened bugs 690006, 690007 for them. 

[src/zchar42.c]

2008-08-12T07:35:33.506225Z Igor Melichev

Fix (TT interpreter) : AVector bug workaround was wrong.

DETAILS :

Bug 689820 "rendering of embbeded font with very low quality".

The problem may happens only when a glyph is bigger than [-UnitsPerEm*2, UnitsPerEm*2].
The old code includes a workaround for an antique AVBector bug.
However for detecting it the old code supplied a glyph bbox 
with a wrong coordinate representation (scale).

The test case supplies a glyph, in which some points have x-coordinate
greater than UnitsPerEm*2, so the workaround
converted all curves into lines. 

The patch provides the right bbox data.

[src/ttfmain.c]

2008-08-12T07:31:19.650883Z Igor Melichev

Fix (graphics) : A clist-based pattern supplied a wrong clipping box.

DETAILS :

Bug 689851 "Portions of output missing".

The test document paints an imagemask with a pattern 1 color, 
which contains a Type 1 image, which represents the graphics 
that one can view there.

The pattern appears so big as Ghostscript converts it into a clist.
When rendering the inner image to the clist,
It calls get_clipping_box to know whether the image portion
falls inside the painting area. But the old code
appears to use a wrong implementation of the get_clipping_box method, 
which was inherited from the page clist writer and retrieves the page size.
Here we need the pattern cell size instead the page size.
The patch sets up the right implementation for get_clipping_box.

[src/gxpcmap.c src/gximask.c]

2008-08-12T01:49:02.711432Z Alex Cherepanov

Fix single '~' expansion in generic POSIX persistent-cache implementation.

[src/gp_unix_cache.c]

2008-08-12T01:31:32.498041Z Alex Cherepanov

Fix a potential crash after failed memory allocation in RAM-based command list.

[src/gxclmem.c]

2008-08-12T00:53:52.298682Z Alex Cherepanov

Fix a typo in get_data() macro used by PDF 1.4 composition devices
because the typo caused dependency on the side effect order.

[src/gdevp14.c]

2008-08-11T23:01:09.304118Z Alex Cherepanov

Add a missing break statement after 16-bit Burn blending mode case.

[src/gxblend.c]

2008-08-11T19:11:45.049525Z Ralph Giles

Clean up the configure help entries for optional features.

[src/configure.ac]

2008-08-11T18:58:27.188200Z Ralph Giles

Don't run configure if autoconf failed to regenerate it.

[autogen.sh]

2008-08-11T18:31:30.295468Z Ralph Giles

Add a --disable-cairo option to block linking to libcairo for packagers.
Bug 689999.

[src/configure.ac]

2008-08-11T15:10:06.472831Z Ken Sharp

Further to the PostScript color work, clear up a couple of warnings which exhibit using gcc
on Linux, but not MSVC.

[src/zfunc.c src/zfunc4.c]

2008-08-11T14:16:18.397362Z Ken Sharp

Move the interpretation of PostScript (and PDF) color spaces from PostScript into C. 

DETAILS:
This has required a large number of changes, there are a few new .c or .h files, a
number of PostScript files have been removed, and a few others simplified. A few
documentation '.htm' files have also been modified to reflect these changes.

[src/int.mak src/zpcolor.c src/zicc.c Resource/Init/gs_devn.ps src/zcssepr.c Resource/Init/gs_cspace.ps src/zcie.c src/zicc.h src/zcie.h src/zcspixel.c Resource/Init/gs_lev2.ps Resource/Init/gs_ciecs3.ps Resource/Init/gs_sepr.ps src/zcolor.c src/ifunc.h src/zfunc4.c src/zcsdevn.c src/zcolor.h Resource/Init/gs_patrn.ps src/zfsample.c doc/Develop.htm src/zfunc.c Resource/Init/gs_ll3.ps src/zcsindex.c doc/Psfiles.htm Resource/Init/gs_icc.ps Resource/Init/gs_devpxl.ps src/gscolor2.h Resource/Init/gs_init.ps Resource/Init/gs_devcs.ps Resource/Init/gs_indxd.ps Resource/Init/gs_ciecs2.ps]

2008-08-11T12:19:24.825877Z Ken Sharp

Change the description for the -dNOCIE switch, since it wasn't apparently clear enough
which device spaces were substituted for which CIEBased spaces.

[doc/Use.htm]

2008-08-08T05:39:21.132225Z Ralph Giles

Re-add pdf_draw.ps which was dropped in r8954, since the CET regression
requires it.

[Resource/Init/pdf_draw.ps]

2008-08-08T04:22:38.494595Z Ray Johnston

Massive commit discussed before the freeze to move the PostScript initialization
files to Resource/Init. This obviates the need for geninit when COMPILE_INITS=1.
A followup change will enhance mkromfs to allow it to 'strip' comments and white
space from PostScript input files somewhat reducing the compressed storage needed
for the files in Resource/Init. All files mentioned in int.mak with 'ADDMOD ...
-ps ...' are included as well as those that would have been included via gs_init.ps
%% Replace lines.

Builds tested on Windows and Cygwin for the various executables (gs, pcl6, pspcl6
and gxps).

The default LIBPATH and GenericResourceDir are adjusted accordingly.

[Resource/Init/gs_typ32.ps /trunk/ghostpdl/main/pcl6_gcc.mak Resource/Init src/cfonts.mak lib/gs_dbt_e.ps Resource/Init/gs_dscp.ps lib/gs_statd.ps lib/gs_fapi.ps Resource/Init/gs_devn.ps Resource/Init/gs_agl.ps lib/cidfmap src/iccinit0.c lib/gs_epsf.ps lib/gs_dpnxt.ps lib/pdf_draw.ps lib/gs_icc.ps lib/gs_diskf.ps src/all-arch.mak Resource/Init/gs_fapi.ps lib/gs_init.ps lib/pdf_font.ps lib/gs_ciddc.ps lib/gs_diskn.ps src/ccfont.h lib/pdf_base.ps Resource/Init/gs_dps.ps lib/gs_sym_e.ps lib/gs_btokn.ps Resource/Init/xlatmap Resource/Init/gs_epsf.ps lib/gs_resmp.ps Resource/Init/gs_init.ps src/gs.mak src/wmin.mak lib/gs_wan_e.ps src/Makefile.in Resource/Init/gs_indxd.ps Resource/Init/gs_cidtt.ps src/macos-mcp.mak Resource/Init/gs_img.ps lib/gs_type1.ps lib/pdf_cslayer.ps Resource/Init/gs_setpd.ps lib/gs_dps1.ps Resource/Init/gs_mgl_e.ps src/psromfs.mak lib/gs_lev2.ps lib/gs_pdf_e.ps Resource/Init/gs_fonts.ps src/icfontab.c Resource/Init/gs_mex_e.ps Resource/Init/gs_ttf.ps lib/gs_pdfwr.ps Resource/Init/gs_std_e.ps lib/gs_cidfn.ps /trunk/ghostpdl/common/msvc_top.mak src/geninit.c src/bcwin32.mak src/imain.c Resource/Init/pdf_cslayer.ps lib/gs_ll3.ps lib/Fontmap Resource/Init/gs_dps1.ps src/iccinit1.c Resource/Init/gs_lev2.ps lib/gs_css_e.ps lib/gs_ccfnt.ps Resource/Init/gs_l2img.ps lib/gs_frsd.ps Resource/Init/gs_cet.ps lib/gs_devpxl.ps lib/gs_trap.ps Resource/Init/FCOfontmap-PCLPS2 src/macosx.mak Resource/Init/gs_patrn.ps Resource/Init/pdf_main.ps lib/gs_ciecs2.ps Resource/Init/gs_res.ps Resource/Init/gs_il1_e.ps lib/gs_cidcm.ps lib/gs_cmap.ps src/openvms.mmk lib/gs_typ32.ps Resource/Init/gs_frsd.ps Resource/Init/gs_mro_e.ps Resource/Init/gs_devpxl.ps Resource/Init/gs_devcs.ps Resource/Init/gs_trap.ps Resource/Init/gs_ciecs2.ps Resource/Init/gs_fntem.ps lib/gs_cspace.ps lib/gs_agl.ps Resource/Init/gs_cmap.ps Resource/Init/gs_typ42.ps Resource/Init/gs_cidfm.ps Resource/Init/pdf_rbld.ps src/int.mak lib/pdf_sec.ps src/msvclib.mak src/imainarg.c /trunk/ghostpdl/main/pcl6_msvc.mak Resource/Init/gs_cff.ps Resource/Init/gs_cspace.ps lib/gs_dps.ps src/msvc32.mak src/unix-gcc.mak lib/xlatmap Resource/Init/pdf_sec.ps src/zfile.c lib/pdf_ops.ps Resource/Init/gs_dbt_e.ps Resource/Init/gs_statd.ps lib/gs_indxd.ps lib/gs_cidtt.ps lib/gs_dps2.ps src/unixansi.mak lib/gs_img.ps Resource/Init/cidfmap lib/gs_setpd.ps Resource/Init/gs_dpnxt.ps Resource/Init/gs_icc.ps lib/gs_mgl_e.ps Resource/Init/gs_diskf.ps Resource/Init/pdf_ops.ps src/winint.mak lib/gs_fonts.ps Resource/Init/gs_ciddc.ps Resource/Init/pdf_font.ps Resource/Init/gs_dps2.ps Resource/Init/gs_diskn.ps lib/gs_mex_e.ps lib/gs_ttf.ps lib/gs_std_e.ps Resource/Init/pdf_base.ps lib/gs_resst.ps Resource/Init/gs_sym_e.ps Resource/Init/gs_btokn.ps src/wctail.mak lib/Fontmap.GS src/watclib.mak /trunk/ghostpdl/language_switch/pspcl6_msvc.mak lib/gs_sepr.ps lib/gs_ciecs3.ps lib/gs_l2img.ps Resource/Init/gs_resmp.ps lib/gs_cet.ps Resource/Init/gs_wan_e.ps src/iccfont.c lib/FCOfontmap-PCLPS2 lib/gs_patrn.ps lib/pdf_main.ps Resource/Init/Fontmap.GS Resource/Init/gs_type1.ps lib/gs_res.ps lib/gs_il1_e.ps /trunk/ghostpdl/language_switch/pspcl6_gcc.mak Resource/Init/gs_ciecs3.ps Resource/Init/gs_sepr.ps lib/gs_mro_e.ps Resource/Init/gs_pdf_e.ps lib/gs_devcs.ps src/openvms.mak Resource/Init/gs_pdfwr.ps Resource/Init/gs_cidfn.ps src/watcw32.mak lib/gs_fntem.ps Resource/Init/Fontmap Resource/Init/gs_ll3.ps Resource/Init/gs_css_e.ps src/os2.mak lib/gs_cidfm.ps lib/gs_typ42.ps lib/pdf_rbld.ps src/ugcclib.mak lib/gs_dscp.ps lib/gs_devn.ps lib/gs_cff.ps Resource/Init/gs_cidcm.ps]

2008-08-08T04:03:54.625369Z Ray Johnston

Fix 'rangecheck in showpage' with NumRenderingThreads>0 if the lines requeested do
not range from 0 forward or height-1 backwards. Bug from customer 531 and 850.
Also fix problems with reversion to non-multithreaded rendering with file and memory
based BAND_LIST_STORAGE.

DETAILS:

The 'clist_get_band_from_thread' logic had a known deficiency if the device did not
request lines ranging from the top or bottom of the page. The fix assumes that the
normal direction is from line 0 forward unless the first line requested is the last
line of the page, setting the lookahead_direction. If a request is made for a band
other than the next one in the expected direction, the lookahead_direction is 
reversed and threads are started for the requested band and the bands following in
the new direction. This effectively recovers from an incorrect guess, but since
there is no limit on the number of times that the recovery is performed, also allows
for lines/bands to be requested in arbitrary order.

The customer uses a custom device, but the 'bit' devices were recently enhanced
with -dFirstLine= and -dLastLine= parameters to allow testing.

The re-opening of the clist files was changed to use 'a+' to avoid erasing the
file if multi-threaded rendering was shut down (clist_teardown_render_threads),
and rendering was reverted to single threaded mode.

The memory based clist (BAND_LIST_STORAGE=memory) was supplemented to better
track re-opening and allow for 'a' mode and avoid memory leak of the original
'base' named memfile structure. The customers mentioned above also use the
BAND_LIST_STORAGE=memory for performance reasons (realizing a 10% gain in
throughput over file based clist).

[src/gxclmem.c src/gxclthrd.c src/gxclmem.h]

2008-08-07T19:20:04.322235Z Igor Melichev

Fix (graphics) : Redundant patterns in clist (continued),

DETAILS :

Bug 689995 "segfault with 09-34.PS"

1. (the bug fix) A recent patch doesn't account patterns with no tile,
which represent an empty pattern.  
This change inserts checks for empty tiles
and process them with no optimization (redundantly), 
because they are small and are not cached.
See comments in code.

2. pcls->band_complexity.uses_color accummulated a pattern address bits instead
a real data. This bug was introduced when serializing colors to clist.
nevertheless this bug has no visible effect because 'pure' is overlayed with 
a tile address, which can't be equal to 0 or 0xffffff.
So formally this part of the change is algorithmically equivalent,
but it is important for redability. 

Note that when serializing a pattern to clist, 'uses_color' is not properly
computed and needs further development. see new bug 689997.

Minor change : removed the second call to gs_dc_get_pattern_id for a faster code.

[src/gsptype1.c src/gxclpath.c]

2008-08-07T05:20:08.759100Z Alex Cherepanov

A pointer to allocated memory was used before checking it for 0. This bug
was discovered by Klocwork static code analyzer.

[src/scfd.c]

2008-08-07T00:02:14.784953Z Ralph Giles

Add the PSSRC dir to the includes of contrib devices that depend on
the ps interpreter so they can be build when that directory is different
from src.

[contrib/contrib.mak]

2008-08-07T00:02:13.283150Z Ralph Giles

Use graphics library instead of interpreter error codes in the gomni
device.

[contrib/gomni.c]

2008-08-06T19:57:07.199634Z Ralph Giles

Remove references to malloc/free memory management not used since r8192.

[src/lib.mak src/gsncdummy.c]

2008-08-06T19:51:21.189161Z Ralph Giles

Remove trailing whitespace.

[src/gsncdummy.c]

2008-08-06T19:49:05.961384Z Ralph Giles

Use graphics library instead of interpreter-level rangecheck errors.    

[src/gsncdummy.c]

2008-08-06T18:28:20.524086Z Ray Johnston

Add a capability to select the first and last line to be emitted to the
output file. This was needed to support some customers (531 and 850) that
do something similar in their devices. Adds -dFirstLine=# and -dLastLine=#
to this device. Line numbers are from 0 to height-1, and may be in reverse
order. Probably not much use other than testing, but it doesn't hurt if it
is there.

[src/gdevbit.c]

2008-08-06T07:22:26.679682Z Igor Melichev

Fix (graphics) : Redundant patterns in clist.

DETAILS :

Bug 689865 "clist stores redundant patterns".

The change is pretty simple because the clist reader already implememnts
a pattern cache. We just add pattern id to gx_clist_state
and provide a short format (just the id) when writing and reading
a pattern color to/from clist at second time. A new function gs_dc_get_pattern_id
allows to access the pattern id through closures of color elements.

Note it remembers up to 2 pattern ids for a band
(one for the specific band, and another for "all bands").
A better way would be to remember all patterns cached for a band,
but it would need to save all cached ids individually for each band while clist writing.
We don't want to enlarge the clist writer storage now.

Minor change : Some dependencies of gxclpath.c were missed in makefile. 

[src/gsptype1.c src/lib.mak src/gsptype1.h src/gxcldev.h src/gxclpath.c]

2008-08-06T06:24:44.864622Z Igor Melichev

Fix (graphics) : Memory leak from Indexed color space.

DETAILS :

Bug 689990 "pcl6.exe crash with gs revision 8928".

This change partially unwinds the revision 8928 change
and reopens the bug 89822 "Memory leaks during rendering clist."
See comment in code. 

[src/gscolor2.c]

2008-08-05T20:44:34.621109Z Ralph Giles

Move pointer dereferences to after the NULL check.

[src/ttobjs.c]

2008-08-03T17:54:46.281366Z Alex Cherepanov

Detect and reject PDF files with circular references in the page tree.
Avoid an infinite loop. Bug 689954.

[lib/pdf_main.ps]

2008-08-03T17:23:40.990280Z Ralph Giles

Update ignore list for the ijs directory.

[ijs]

2008-08-03T17:17:10.771824Z Ralph Giles

Clean up the cairo minimum version check introduced in r8929.

[src/configure.ac]

2008-08-03T16:30:42.166329Z Igor Melichev

Fix (graphics) : A slow stroking with big patterns.

DETAILS :

Bug 689966 "c329.bin hang with bitcmyk in clist code".


1. The stroking algorithm includes a branch for a 'faster' rasterizing
with an idempotential color. That branch paints each stroke independently of others.
However that branch doesn't apply an optimization for big patterns,
which the general filling algorithm implements. It caused the too slow rendering,
because a clist-based pattern is played back for each parallelogram.
This change disables the 'faster' srtoking with big patterns,
so that the faster filling algorithm works fine for stroking.

2. Revert the revision 8851 change, which was a temporary workaround for the problem,
The default value for MAX_PATTERN_BITMAP_SIZE is now restored back to 1Mb.

[src/lib.mak src/gxpcmap.c src/gxstroke.c]

2008-08-03T15:47:58.770546Z Alex Cherepanov

Cairo device requires at least v. 1.2.0 of the Cairo library to build.

[src/configure.ac]

2008-08-03T12:26:41.949878Z Igor Melichev

Fix (graphics) : Memory leak from Indexed color space.

DETAILS :

Bug 689822 "Memory leaks during rendering clist."

The finalize function doesn't release 'table,
which is allocated when use_proc == 1.

Minor change : improved a debug printing in gsmchunk.c :
A meanful name is better than an unknown address.
 

[src/gsmchunk.c src/gscolor2.c]

2008-08-03T12:25:39.705021Z Alex Cherepanov

Give a name to a continuation operator %ztoken_continue to avoid printing
its address, which varies between builds and causes spurious regression
reports.

[src/ztoken.c]

2008-08-03T07:49:59.678670Z Russell Lang

Fix the OS/2 build, which was broken because it was trying to use the 
Windows synchronisation code.  
While OS/2 does support thread synchronsation, there is no ghostscript 
implementation for the OS/2 platform, and no interest in writing one.

[src/os2.mak]

2008-08-02T15:10:41.076927Z Alex Cherepanov

Replace a conditional expression with an 'if' statement. The former
requires a prototype for mkstemp64() that is not available on AIX.

[src/gp_unifs.c]

2008-08-01T21:43:44.587346Z Ralph Giles

Document needing to remove autom4te.cache from the jasper directory.

[doc/Release.htm]

2008-08-01T21:43:42.361706Z Ralph Giles

We can no longer run the full build with -dBufferSpace=100000. The
minimum to complete the smoke test seems to be around 120000, but
use 200000 as future insurance.

[doc/Release.htm]

2008-08-01T20:57:40.076512Z Alex Cherepanov

Reduce heap size limit (/Zm) on MSVC6 to fix internal compiler error
when COMPILE_INITS=1.

[src/msvccmd.mak]

2008-08-01T20:55:00.712414Z Ralph Giles

Add a mapping of commit ids to author names.

This is used by split_changelog.py to do the replacement when building 
the History files. The changes to that script to make use of this file
were inadvertently included in r8917.

[doc/AUTHORS]

2008-08-01T20:22:16.068978Z Ralph Giles

Bump the version and product name post-release.

[doc/News.htm toolbin/split_changelog.py lib/gs_init.ps src/gscdef.c src/version.mak]

2008-08-01T18:08:18.641815Z Ralph Giles

Update change logs for the 8.53 release.

[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]

Version 8.63 (2008-08-01)

This is the fourth scheduled release in the stable Ghostscipt 8.6x series. It corresponds to the 1.53 release of GhostPDL.

Approximately 238 bugs have been fixed since version 8.62. Of particular note are robustness and performance improvements with large files, invalid PDF, and font handling.

The major new feature of this release is multithreaded rendering. This can be requested by passing -dNumRenderingThreads=n on the command line. The input document is first parsed, and then each page is split into n bands which are rendered concurrently. This can provide a significant reduction in processing time on multi-core systems.

Images are now always interpolated in their source colorspace. This improves correctness for XPS documents and avoids bypassing the custom color management callbacks for interpolated images. Interpolation and color management are both expensive operations, so this affects performance with large images. The effect can be positive or negative depending on the file and the target resolution. If performance is a problem, we suggest running with -dNOINTERPOLATION.

Support for OpenPrinting Vector devices has been upgraded to version 1.0.

There are two new devices in this release, both experimental. Behdad Esfahbod has contributed a cairo output device which uses the cairo graphics library to generate PDF, SVG, EPS, or PNG files, based on the requested filename extension. The svgwrite device directly outputs Scalable Vector Graphics, the W3C XML vector graphics format. Both support only vector art at this point; text and images will not be represented efficiently.

The following bugs were open at the time of release:

226943, 430175, 465936, 493348, 535932, 578865, 614298, 626295, 686747, 686853, 686865, 687000, 687011, 687084, 687095, 687146, 687193, 687257, 687271, 687280, 687295, 687297, 687303, 687327, 687375, 687414, 687475, 687492, 687514, 687520, 687536, 687561, 687593, 687608, 687630, 687650, 687666, 687674, 687677, 687695, 687697, 687702, 687715, 687721, 687728, 687729, 687731, 687775, 687780, 687782, 687793, 687796, 687805, 687850, 687887, 687903, 687904, 687915, 687931, 687950, 687957, 687981, 687983, 688007, 688022, 688024, 688026, 688032, 688036, 688042, 688058, 688061, 688064, 688066, 688081, 688095, 688129, 688130, 688151, 688159, 688166, 688184, 688187, 688204, 688207, 688210, 688215, 688227, 688267, 688269, 688280, 688288, 688312, 688318, 688320, 688333, 688342, 688359, 688361, 688363, 688372, 688378, 688386, 688387, 688389, 688395, 688413, 688436, 688437, 688440, 688448, 688473, 688475, 688483, 688495, 688500, 688515, 688528, 688533, 688539, 688540, 688542, 688557, 688565, 688573, 688580, 688581, 688588, 688601, 688604, 688605, 688616, 688617, 688619, 688627, 688636, 688638, 688647, 688651, 688653, 688655, 688673, 688696, 688697, 688699, 688708, 688709, 688710, 688714, 688717, 688728, 688731, 688736, 688739, 688757, 688770, 688774, 688777, 688778, 688797, 688818, 688829, 688843, 688846, 688871, 688872, 688876, 688908, 688918, 688919, 688923, 688926, 688933, 688942, 688943, 688949, 688952, 688958, 688969, 688976, 688978, 688986, 688990, 688994, 688999, 689003, 689011, 689013, 689022, 689025, 689028, 689031, 689032, 689040, 689044, 689046, 689048, 689057, 689058, 689060, 689070, 689076, 689077, 689078, 689080, 689081, 689093, 689094, 689098, 689116, 689128, 689129, 689130, 689133, 689137, 689145, 689146, 689148, 689150, 689153, 689154, 689161, 689167, 689174, 689184, 689188, 689195, 689198, 689199, 689209, 689222, 689224, 689230, 689236, 689247, 689248, 689252, 689253, 689264, 689278, 689279, 689280, 689283, 689289, 689290, 689295, 689304, 689305, 689308, 689313, 689331, 689335, 689340, 689341, 689358, 689361, 689363, 689370, 689376, 689378, 689392, 689396, 689402, 689418, 689419, 689421, 689422, 689423, 689431, 689438, 689439, 689444, 689450, 689451, 689456, 689460, 689462, 689463, 689471, 689484, 689487, 689489, 689490, 689498, 689500, 689502, 689506, 689507, 689509, 689512, 689518, 689521, 689522, 689546, 689547, 689549, 689554, 689557, 689559, 689560, 689561, 689563, 689566, 689567, 689571, 689573, 689574, 689581, 689583, 689584, 689585, 689591, 689592, 689595, 689598, 689601, 689606, 689610, 689616, 689618, 689623, 689625, 689627, 689628, 689632, 689636, 689641, 689652, 689653, 689654, 689657, 689658, 689663, 689666, 689669, 689670, 689674, 689681, 689682, 689684, 689689, 689690, 689691, 689692, 689697, 689698, 689702, 689704, 689705, 689709, 689710, 689711, 689715, 689716, 689721, 689722, 689725, 689726, 689727, 689729, 689734, 689737, 689741, 689747, 689752, 689756, 689758, 689759, 689760, 689761, 689767, 689769, 689772, 689773, 689775, 689778, 689781, 689786, 689789, 689790, 689792, 689793, 689794, 689799, 689801, 689805, 689808, 689816, 689817, 689820, 689822, 689823, 689826, 689834, 689835, 689836, 689840, 689842, 689849, 689850, 689851, 689853, 689856, 689858, 689859, 689860, 689861, 689862, 689865, 689868, 689869, 689870, 689871, 689872, 689877, 689878, 689879, 689880, 689881, 689883, 689885, 689890, 689891, 689895, 689901, 689902, 689903, 689904, 689905, 689909, 689910, 689914, 689915, 689916, 689917, 689922, 689923, 689928, 689929, 689930, 689931, 689933, 689935, 689937, 689938, 689939, 689940, 689941, 689942, 689943, 689947, 689950, 689951, 689952, 689954, 689955, 689957, 689961, 689966, 689968, 689969, 689970, 689972, 689974, 689975, 689980.

Incompatible changes

The maximum number of color components has been reduced to 8 (from 252) as a performance improvement. Eight is the largest number commonly used and the largest number for which we support continuous tone images. Users with special needs can restore the previous behavior by setting the GS_CLIENT_COLOR_MAX_COMPONENTS preprocessor symbol to the required number of components at compile time.

The -Z: debugging option now uses 'realtime' instead of 'usertime' when reporting timing information on unix-like systems. This has always been the case on windows-like systems.

Obsolete makefiles for the DesqView environment have been removed.

Changelog

2008-08-01T17:53:17.331788Z Ralph Giles

Bump the product name an date for the 8.63 release.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2008-07-31T21:06:50.284451Z Ralph Giles

Update change logs for 8.63rc3.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2008-07-29T20:35:41.916113Z Ray Johnston

Fix problem with NumRenderingThreads>0 with devices that request data from
the bottom up such as the 'bmp*' devices. Bug 689985.

[src/gxclthrd.c]

2008-07-29T19:11:31.677116Z Alex Cherepanov

Add support to NULL pointers in t_structs or t_astructs objects to execstack
operator. Thanks to Ken for the analysis. Bug 689535.

DETAILS:
The issue is to do with devices handling patterns as high-level objects, which
is why it affects pdfwrite (which can handle patterns itself) but not regular
rendering. In zpcolor.c, pattern_paint_prepare(), there are two control paths,
one for devices which handle patterns as high-level objects, and one for
devices which don't. If the device can't handle high level objects, we install
a pattern accumulation device.

In this case, the flag internal_accum is set, we create the pattern accumulator
device and open it:

    if (internal_accum) {
	gs_memory_t *storage_memory = gstate_pattern_cache(pgs)->memory;

	pdev = gx_pattern_accum_alloc(imemory, storage_memory, pinst,
"pattern_paint_prepare");
	if (pdev == 0)
	    return_error(e_VMerror);
	code = (*dev_proc(pdev, open_device)) ((gx_device *) pdev);
...
...
}

Later the two control paths rejoin and we put some objects on the execution
stack:

    push_mark_estack(es_other, pattern_paint_cleanup);
    ++esp;
    make_istruct(esp, 0, pdev);

Now notice that we construct the structure on esp using pdev, but we *don't*
create pdev if we can handle patterns, so its left as NULL and we end up
pushing an empty t_struct.

Leo's question in comment 10 is whether this is legal, the answer appears to be
yes, but its debatable. 

In pattern_paint_finish we do this:

    gx_device_forward *pdev = r_ptr(esp - 1, gx_device_forward);

    if (pdev != NULL) {
	gx_color_tile *ctile;
	int code = gx_pattern_cache_add_entry((gs_imager_state *)igs,
					  pdev, &ctile);

That is, if the structure *isn't* NULL we do something with it, we ignore it if
it is NULL. Either way we then do this:

    esp -= 3;

Removing all the objects from the execution stack that we added. Notice that
the structure we pushed onto the execution stack isn't actually 'executed', its
just data used by the pattern handler.

Now, all this works just fine in normal practice, however the job here uses a
CIEBased colour space, and being from an Adobe application it tries to set the
ColorRendering. Since we don't implement a ColorRendering resource category,
this causes an error (handled in a stopped context).

The default error handler uses execstack, and this is where the actual error
finally occurs, because execstack can't handle the empty structure.

[src/zcontrol.c]

2008-07-29T18:06:37.196198Z Ralph Giles

Update change logs for 8.63rc2.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2008-07-29T11:01:11.006826Z Russell Lang

Allow compilation with Microsoft Visual Studio 2008 (VC 9.0).
Include lib files in the Windows installer when using COMPILE_INITS=1.

[src/winint.mak src/msvc32.mak]

2008-07-28T22:23:04.128314Z Michael Vrhel

Fix for Bug 689983.  This was introduced with the source space interpolation code.  Fixes indexing direction in source data when we have indexed data, interpolation and a negative xx value in the geometric transformation.

[src/gxiscale.c]

2008-07-28T20:44:43.542926Z Ralph Giles

Update change logs for 8.63rc1.

[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]

2008-07-28T19:41:25.163173Z Ralph Giles

Fix a syntax error from r8548.

This wasn't noticed because double.dev isn't part of the default build.

[src/zdouble.c]

2008-07-28T18:58:41.634974Z Ralph Giles

Update release date and product name for 8.63rc1.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]

2008-07-28T18:55:01.811159Z Ralph Giles

Update news for 8.63rc1.

[doc/News.htm]

2008-07-28T12:01:51.595271Z Alex Cherepanov

Fix extraction of the default subfile from PDF file collection on save
level 0. Export the file name as a PS name from PDF interpreter instance
to protect the name from restore. Bug 689981.

DETAILS:
Exporting this value as a global composite object doesn't work when PDF
interpreter runs on the save level 0. If we ever implement processing of
multiple files from PDF collection the interface will need some changes.

[lib/pdf_main.ps]

2008-07-28T10:10:53.373341Z Igor Melichev

Fix (clist writer) : Improve the logic about zero tile id.

DETAILS :

Thanks to Peter for participation. See comment in code.

[src/gxclrect.c]

2008-07-28T07:52:42.264750Z Igor Melichev

Fix (printer) : A check for buffer space overflow was dramatically overestimated.

DETAILS :

In the old code :

    new_height < max_ulong/(mem_space + (new_height * pdf14_trans_buffer_size))

Where pdf14_trans_buffer_size is (raster * NUM_PDF14_BUFFERS).

equivalent to :

    
    new_height * (mem_space + (new_height * (raster * NUM_PDF14_BUFFERS))) < max_ulong


equivalent to :

    new_height * mem_space + new_height * new_height * raster * NUM_PDF14_BUFFERS < max_ulong


So it counts new_height quadratically, but it must be the linear multiple by the raster.

Debugged with the test case of the bug 689982.
It creates a 15Mb raster, but could not switch off the banding
even with -dMaxBitmap=1000000000 .

[src/gdevprn.c]

2008-07-27T21:06:38.633515Z Igor Melichev

Fix (shading) : Empty clipping was entirely lost.

DETAILS :

Bug 689982 "A wrong shading raster".

The old code doesn't account that gx_cpath_from_rectangle
may normalize the given rectangle.

[src/gxfill.c]

2008-07-27T19:10:02.737363Z Ralph Giles

Metadata updates for the new zfile header.

[src/zfile.h doc/Develop.htm]

2008-07-27T16:07:30.174721Z Ray Johnston

Remove (complete) duplication of the contents. Cosmetic change only.

[src/zfile.h]

2008-07-27T16:01:28.177923Z Igor Melichev

Fix (clist) : Skip writing unuseful data with linear color triangle.

DETAILS :

This fixes a minor problem what was discovered while working on 
bug 689918 "Ghostscript 8.62 and 8.63 segmentation fault".

cmd_write_trapezoid_cmd wrote an unused data to clist when 
processing a linear color triangle. The variables ybot, ytop are never used
while a clist interpretation. In same time the data are not initialized
in that case, so they imply an indeterministic content and length of the clist. 

[src/gxclrast.c src/gxclrect.c]

2008-07-27T09:38:42.451745Z Igor Melichev

Fix (True Type font loader) : Can't work around unsorted 'loca' when 'loca' is not loaded.

DETAILS :

Bug 689893 "Regression: CID font emulation is broken." 

A work around against unsorted 'loca' and its recent improvements
assume that 'loca' presents in sfnts. It is not true
when a CID font is emulated with a True Type disk font,
because in that case the font machinery delay loading
'loca' and 'glyp' elements until a real request from a document.
For more details see comments added in code.

[src/bfont.h src/zfcid1.c src/gstype42.c src/zfont42.c]

2008-07-27T09:29:37.311275Z Igor Melichev

Fix (PDF interpreter) : A temporary work around huge images with a soft mask.

DETAILS :

Bug 689080 "PDF Crash with Transparency at 2880 dpi".

 
This is a temporary workaraound for the problem,
see comment in code.

With this patch the test case doesn't crash,
but it needs  -dBufferSpace=500000000 to complete in 15 minutes
on Core 2 Duo 2.4 MHz with debug build.
The test case is pretty big anyway - it generates a 4.2 gigapixel raster.

Thankls to Ray for obtaining the buffer space from a device.

I think the old code is incorrect because it looks applying the
mask two times : first when installing a mask buffer with
.begintransparencymaskimage in doimagesmask, and second time when
processing a Type 103 image in C code. The raster difference
is likely caused by that. I don't perform a deeper analyzis,
because it's a temporary fix which needs to be replaced soon.
All that is written in this paragraph are not sure,
because there is no time for a deeper analyzis before 8.63 release.
When we'll complete Type 103 images (with rasterizing after clist
and with a proper handling in pdfwrite), .begintransparencymaskimage
will likely go away.

[lib/pdf_draw.ps]

2008-07-27T07:03:42.852634Z Russell Lang

When building the Windows installer with COMPILE_INITS=1, 
do not include the Resource and lib initialization files as
separate files in the installer zip archive.

[src/winint.mak]

2008-07-27T02:52:11.521293Z Alex Cherepanov

Fix direct access to a subfile in the %rom% file system by reusable
stream. Bug 689976, customers 661, 580.

DETAILS:
1. Open the source file of the reusable stream as a general stream,
   rather than an os-based file stream.
2. Take into account file_offset member when accessing the stream.

[src/zfile.h src/gsiorom.c src/int.mak src/zfrsd.c src/zfile.c]

2008-07-25T22:51:14.900519Z Russell Lang

Change Windows installer to remove "GPL Ghostscript Fonts" target.
Ghostscript now includes fonts in the Resource directory, 
and no longer needs the fonts previously installed in 
"C:\Program Files\gs\fonts".

[src/dwsetup.rc src/winint.mak src/dwsetup.h src/dwsetup.cpp]

2008-07-25T01:10:39.451286Z Alex Cherepanov

Use reusable stream when the data stream of type 0 function doesn't fit into
a string. Bug 689978, customer 770.

[lib/pdf_draw.ps]

2008-07-24T17:28:51.809318Z Ralph Giles

Fix source style warnings from the nightly regression.

[src/aes.h doc/Develop.htm toolbin/clusterpush.sh]

2008-07-24T02:06:07.385871Z Michael Vrhel

Clean up of // comment in code and debug ifdef that should have been removed for r8868

[src/gxiscale.c]

2008-07-24T00:42:06.095459Z Ralph Giles

Change the XYSSL AES implementation to better match our conventions.

[src/aes.h src/aes.c]

2008-07-24T00:42:04.729720Z Ralph Giles

Change the XYSSL AES implementation to build in isolation.

[src/aes.c]

2008-07-24T00:42:02.863201Z Ralph Giles

Replace Brian Gladman's AES implementation with a no-advertising BSD
version from XYSSL 0.9. Used with permission of Christophe Devine.

[src/aes.h src/aes.c]

2008-07-24T00:42:01.337493Z Ralph Giles

Fix some compile problems in Brian Gladman's AES implementation
and disable 'on the fly keying' routines we don't need.

[src/aes.h src/aes.c]

2008-07-23T23:29:39.935990Z Michael Vrhel

Fix for Bug 689246.  When performing interpolation, the interpolation is now performed in the source colorspace as opposed to the device space.  Custom color callback is no longer bypassed by direct concretization as it was previously.

DETAILS:

Previous code would take device color 8 bit values and do the interpolation.  That portion of the code is the same.   For cases where we have nondevice color the handling is now different.  Indexed colors are mapped to their base space and interpolated.  This is followed by a remap operation.  Device independent colors are interpolated followed by a remap operation.  

Note that for cases where there is a significant enlargement occurring and we are not in a device color space, there can be a performance cost due to current inefficiencies in our color remapping operations.  This can be costly if you have a CMYK CRD MLUT for example.  There is currently a project underway to improve the efficiency of the color flow.  For the current time, if this is an issue, improved speed can be achieved by invoking -dNOINTERPOLATION

[src/lib.mak src/gxiscale.c src/gxcolor2.h src/gximage.h src/gscindex.h src/gscolor2.c]

2008-07-23T22:52:50.086155Z Ray Johnston

Fix possible use of uninitialized variable 'mem_space'. Compute the value
when no-transparency is in effect prior to adding in the space needed for
transparency. Thanks to Michael Vrhel for spotting this.

[src/gdevprn.c]

2008-07-23T21:55:21.014656Z Igor Melichev

Fix (graphics) : Write tile id into a pattern clist (continued).

DETAILS :

Bug 689818 "Regression: Test file imagemask-with-pattern.ps fails with banding and pbmraw ".

The last patch appears incomplete, now fifing it.

[src/gxclrast.c]

2008-07-22T21:03:07.709088Z Ray Johnston

Turn off the NOISY 'VERBOSE' setting by default.

[src/rinkj/rinkj-epson870.c]

2008-07-22T18:32:34.998275Z Ray Johnston

Change the default GS_CLIENT_COLOR_MAX_COMPONENTS to 8 (down from 252).
This improves the performance for files with many images. This limits
the number of DeviceN components and the number of separations that
can be generated in the default build and causes 'limitcheck' errors
on CET tests that attempt to set a 250 component DeviceN space.

THIS IS NOT BACKWARDS COMPATIBLE, but the change in ths single file
so this can readily be rebuilt by customers that need more components
or anyone that demands conformance to this implementation dependent
result on the CET. Note that not all Adobe implementations support
250 components as CPSI does.

Currently only the tiffsep and psdcmyk devices can generate more than
8 separations, and then only when USE_COMPRESSED_ENCODING is used to
fit more than 8 components in a 64-bit color value.

This partly reverts rev 7159.

[src/gsccolor.h]

2008-07-22T14:23:25.922113Z Ken Sharp

Fix (pdfwrite): limit checking of CIDfonts for 'fixed width' property.

Details:
Bug 689963 "Infinite loop converting PostScript to PDF"

In fact the loop is not infinite, but it does take a long time. When checking to see if a
font is non-proportional, ie all glyphs have the same width, and the font is a CIDFont, we
did not stop testing when the CID exceeded the maximum CID in the font instance. Instead
we continued to the full CID range (0xffffffff). Because the TrueType code returns a
default for missing glyphs if the font was truly non-proportional then it would take a
long time to search the entire range.

(zfcid1.c): In z11_enumerate_glyph, check the requested CID against the CIDCount for the
font. Return a rangecheck if we exceed it.

I believe only pdfwrite uses this code currently.

[src/zfcid1.c]

2008-07-22T06:24:14.072316Z Igor Melichev

Fix (graphics) : Write tile id into a pattern clist.

DETAILS :

Bug 689818 "Regression: Test file imagemask-with-pattern.ps fails with banding and pbmraw ".

The old code doesn't write a tile id when writing the tile to clist,
because the clist interpreter doesn't use tile id.
This causes a failure after we implemented clist-based patterns.
While playing back a pattrn clist to a page clist writer device, 
the clist writer does need a tile id
for choosing an entry of an internal hash table.

Actually the failure happens due to a strange check 
"tile->id != gx_no_bitmap_id" in 
clist_strip_tile_rectangle in gxclrect.c ln 479.
It is not clear what it was intended for.
When a tile id is zerfo, the check skips writing tile size to clist,
so that a zerodevide happens during the clist playback.
 
We decided to provide meanful ids 
because the clist writer needs them anyway.
Fixing the check to be a subject of a separate patch
(if a fix is really necessary).

This patch simply writes tile id when the clist
is for a pattern. A new nacro IS_CLIST_FOR_PATTERN(cdev)
Defines the condition for that. 
Some internal functions change prototypes
with adding a new boolean argument for_pattern to know
whether a clist is for a pattern.

[src/gxclbits.c src/gxclist.h src/gdevprn.c src/gxclrast.c]

2008-07-21T23:23:13.534369Z Ralph Giles

Update the license statement for Kevin Hartig's hana fonts.

They are now under the SIL Open Font License 1.1 with reserved font
names Calligraphic-Hiragana and Calligraphic-Katakana.

See Bug 688674 for the relicensing declaration.

[lib/Fontmap.GS]

2008-07-21T20:22:21.005889Z Ray Johnston

Remove obsolete and probably non-working support for ancient DesqView (DOS
multi-taksing). This probably should have been dropped when we dropped 16-bit
support.

[src/dvx-tail.mak src/dvx-gcc.mak src/dvx-head.mak]

2008-07-21T18:55:31.311238Z Alex Cherepanov

Wrap string data source into a procedure when /ImscaleDecode filter is
installed, to ensure repeated reading of the string when the imagemask
needs more data than has the string. Allocate new composite objects
with the same global status as old ones. Bug 689889, customer 330.

[lib/gs_img.ps]

2008-07-18T20:53:54.538069Z Ray Johnston

Fix for Seg fault caused by wrap around of an unsigned long. Seen at 600 dpi
to pkmraw with Bug689369.pdf and -dBufferSpace=32000000.

DETAILS:

While the pdf14_trans_buffer_size was small enough, the mem_space calculation
would wrap around.

[src/gdevprn.c]

2008-07-17T20:11:52.225244Z Ray Johnston

Increase the default threshold for using the (much slower) pattern clist accumulator.
The 32Mb threshold is tolerable for most host systems and this can be modified during
the build with -DMAX_PATTERN_BITMAP_SIZE=___ (possibly using the makefile XCFLAGS).

Only embedded systems may want to set this to a smaller value.

This is a temnporary workaround for bug 689966. Improving the performance of the
pattern clist accumulator will be considered a future enhancement.

[src/gxpcmap.c]

2008-07-17T05:51:19.136291Z Ray Johnston

Update documentation to describe multi-threaded rendering (NumRenderingThreads)
and improve the documentation about the clist/banding parameters and the effect
on performance. Addresses issues raised in bug 689668.

[doc/Use.htm doc/Language.htm]

2008-07-17T02:34:01.869133Z Ralph Giles

Write pure white as a background in the pngalpha device. Bug 689934.

Details:

Russell Lang reports this caused problems originally, but it seems to 
work now, so reverting the behaviour per his request.

[src/gdevpng.c]

2008-07-16T17:19:29.238633Z Igor Melichev

Fix (transparency) : A mask buffer could left unreleased due to banding.

DETAILS :

Bug 689944 "Reference to free object".

See comment in code. 

[src/gdevp14.c]

2008-07-16T15:00:17.682927Z Alex Cherepanov

Ignore out-of-range UniqueID in embedded Type 1 PDF fonts. Bug 689973.

[lib/pdf_font.ps]

2008-07-15T20:29:13.383262Z Ralph Giles

Remove the obsolete pnga device. Bug 689971.

This was a test framework used in the development of the PDF 1.4
compositor. It's no longer used.

[src/devs.mak src/gdevpnga.c]

2008-07-15T13:27:29.996709Z Alex Cherepanov

Cache the pattern instance in the PDF pattern object to prevent reprated
pattern instantiation and improve performance. Bug 689896, customer 531.

[lib/pdf_ops.ps]

2008-07-14T18:53:40.636598Z Marcos H. Woehrmann


Allows the Epson AcuLaser device output to be sent to a pipe (closes bug 689953).

Thanks to j@uriah.heep.sax.de (Joerg Wunsch) for the patch.

[contrib/eplaser/gdevescv.c]

2008-07-13T22:06:19.770532Z Henry Stiles

Rop devices now require access to an allocator instance.  Fixes crash
in running pxl fts file T326.BIN with a halftoning device.  The bug
was reported by a potential customer and a bugzilla report was never
filed.

[src/gdevrops.c]

2008-07-12T01:43:13.151852Z Alex Cherepanov

Use /.notdef instead of null in the array of PostScript names of TTF glyphs.
This saves the trouble of checking for null values and fixes a case where
a null entry slipped through. Bug 689962, customer 384.

[lib/gs_ttf.ps]

2008-07-11T23:10:56.624279Z Ralph Giles

Restore the 2_fracs image class to the psl2lib device.

It was inadvertently removed in r8828.

[src/lib.mak]

2008-07-11T23:10:55.549110Z Ralph Giles

Make the search for the most recent ghostpcl revision more robust.
Thanks to Henry Stiles for the extra quoting idea.

[toolbin/clusterpush.sh]

2008-07-11T21:10:49.148153Z Ralph Giles

Merge clusterpush changes from the ghostpcl tree.

[toolbin/clusterpush.sh]

2008-07-11T18:00:13.808434Z Ralph Giles

Check return codes of remote commands and abort if there's a problem.

Previously we continued which could confusingly return the wrong
regression report at the end if the connection drops while waiting
for the run to complete.

[toolbin/clusterpush.sh]

2008-07-11T05:06:07.316809Z Alex Cherepanov

TrueType instruction definitions (IDEF) are addressed by a single byte index. 
So there cannot be mode than 256 different instructions. Nevertheless, a
request a for larger array for instruction definitions should not be a fatal
error. Bug 689960, customer 330.

[src/ttobjs.c]

2008-07-10T23:36:00.202299Z Ralph Giles

Add the so build directories to the clusterpush exclude list.

[toolbin/clusterpush.sh]

2008-07-10T23:35:56.971501Z Ralph Giles

Move the interpolation image class from the ps2 dev to the core graphics
library so it is available to all languages.

[src/lib.mak]

2008-07-10T17:00:39.840394Z Ralph Giles

Documentation update: we support Separation, DeviceN and a number of PDF 1.7 features.

[doc/Language.htm]

2008-07-09T22:59:00.503580Z Alex Cherepanov

Use '%PDF-' instead of '%PDF-1.' to recognize PDF files because PDFsharp 0.8.2
generates '%PDF-0.0' and Acrobat accepts this. Bug 689949, customer 384.

[lib/pdf_main.ps]

2008-07-07T14:17:54.881290Z Ken Sharp

Update the documentation for the NOCIE switch, noting that this also affects the CIEBasedDEF
and CIEBasedDEFG spaces, substituting DeviceRGB and DeviceCMYK for the CIE spaces.

[doc/Use.htm]

2008-07-07T13:43:38.233194Z Ken Sharp

Fix warnings from the JPX decoder when using Visual Studio 9.

Details:
A compiler warning was disabled if the MSVC_VERSION variable was exactly 8, changed to
>7 so that it is also disabled for later versions of the compiler

[src/msvccmd.mak]

2008-07-07T08:56:59.749169Z Ken Sharp

Fix (pdfwrite): Images ina DeviceN space with more than 60 inks caused a crash.

Details:
Bug #689864 "Regression: 09-34.PS core dumps with pdfwrite"

When emitting an image, using the Flate encoder, the number of colorants in 
the DeviceN space was not checked against the maximum permitted. Since the 
encoder uses a fixed buffer whose size depends on the maximum number of inks, this
could cause a write beyond the end of the buffer.

(spngpx.h) Increase the maximum number of colorants to 256
(spngp.c) Return error if the number of colorants in the space
          exceeds the maximum permitted.

I can't check the generated PDF file, as no PDF reader seems able to open a PDF 
file with more than 32 inks, the architectural limit in the current version 
of Acrobat.

[src/spngpx.h src/spngp.c]

2008-07-06T00:45:19.690811Z Ray Johnston

Fix address/value problem. How this ever seemed to work, who knows.
Thanks to Matthias Kilian for this patch.

[src/gdevwts.c]

2008-07-04T20:35:41.686667Z Alex Cherepanov

Fix a bug in the error recovery code that handles invalid font streams.
Bug 689936, customer 661.

[lib/pdf_font.ps]

2008-07-04T18:20:44.681886Z Ralph Giles

Parse common color space keys in JPXDecode filtered images and pass them
to the filter, allowing JPX-encoded CMYK images to display properly.
Fixes bug 688807.

DETAILS:

The fundamental issue is that the jasper library does not support the
ISO 15444-2 (JPX) extensions to the JP2 format for handling full ICC
and CMYK color spaces. So while the the PDF image dictionary and the
JPX streams both specify a CMYK ICC profile describing the image, jasper
ignores the extended colr boxes and marks the image as sRGB + an unknown
component, just based on it having three or more components. Our stream
implementation used this information and tried to return RGB pixels when
the graphics library expected CMYK, causing errors or hangs.

Jasper should be amended to handle these extensions. However, since in
PDF a color space in the image's stream dictionary overrides what is in
the stream, I felt implementing the override was the more useful
resolution.

This patch doesn't handle all color spaces, just Device* and ICCBased,
which are the most common. In the case of ICCBased spaces, we try to
look up the alternate, and use that if it is a Device* space; otherwise
we guess based on the number of components.

[src/zfjpx.c src/sjpx.c]

2008-07-03T18:25:55.494578Z Ralph Giles

Clean up the state machine in s_jpxd_process.

DETAILS:

The state machine didn't always respect the calling conventions for
filter process routines, and could return '0' (more input needed) when
'last' was true (no more input exists).

Also, the jas_stream member of the filter state isn't currently
necessary and has been moved to s_jpxd_decode_image(). Originally
it was envisioned that the jas_stream could seek on the filter's
source ghostscript stream and so would need a longer lifetime than
we're currently using. This has now been simplified to a local variable.

[src/sjpx.c src/sjpx.h]

2008-07-03T18:25:54.527696Z Ralph Giles

Fix a hang in s_jpxd_process. Bug 688807.

DETAILS:

The problem file contains a CMYK JPX stream, which jasper does not
recognize, treating it as sRGB with an extra component. This causes
us to try an return 3-component data, and end up looping forever if
only a fraction of the expected pixel is available at the end of a
line.

Check for this event and return an error instead.

[src/sjpx.c]

2008-07-03T18:25:52.592596Z Ralph Giles

Remove trailing whitespace from the jpx stream implementation.

[src/sjpx_luratech.h src/sjpx.c src/sjpx.h src/sjpx_luratech.c]

2008-07-03T13:03:11.896225Z Igor Melichev

Fix (clist writer) : Indeterminizm writing a degenerate curve.

DETAILS :

Bug 689911 Shifting raster data, Windows MSVC 8 non-debug build. 

In function cmd_put_path the variable 'prev' was wrongly localized 
in the loop body when need to save/pass data from the previous cycle.
It worked fine with debug build, because the compiler 
always commits variables to RAM for debug purpose. 
With release build the variable 'prev' never changes 
because formally speaking the program never uses its value
after it is initialized.

The bug persists since the repository was created on March 9 2000.
The old behavior may be indeterministic.

With MSVC8 the effect is occasionaly visible when a degenerate curve
{x y x y x y x y} is written into clist. 
See the simplified test case attached to the bug report.
 

[src/gxclpath.c]

2008-07-01T10:22:25.835951Z Igor Melichev

Fix (clist writer) : The maximal compositor command size was wrong.

DETAILS :

Bug 689927 "rangecheck in c_pdf14trans_write() causing 'unregistered' error". 

The bug was introduced in revision 8587.
See comments in code.
Thanks to Ray and Marcos for participation.
 

[src/gstparam.h src/gdevp14.c]

2008-06-30T23:56:04.281753Z Ralph Giles

Document the output filename behavior of ps2pdf in the manpage.
Bug 689920.

[man/ps2pdf.1]

2008-06-30T18:15:51.663545Z Ralph Giles

Add a missing header dependency.

[src/lib.mak]

2008-06-30T00:05:40.080596Z Alex Cherepanov

Add one more way to store data of the reusable stream: an array of strings.
Read the input stream into an array of strings during reusable stream
construction and use the array directly as a data storage.
Bug 689476, customer 190.

[src/int.mak src/gxshade.c lib/gs_frsd.ps src/zfrsd.c]

2008-06-28T14:53:32.570212Z Alex Cherepanov

Make /?dblacute and /?hungarumlaut glyph names equivalent in Type 1 fonts.
Add a missing glyph when the font is loaded if another glyph is defined.
Bug 689014, customer 580.

[lib/gs_type1.ps]

2008-06-26T19:17:37.366443Z Alex Cherepanov

Use extended name table by default and adjust the settings to have
up to 1M names of up to 1K characters long. Bug 689913.

[src/inamedef.h src/inameidx.h src/inamestr.h]

2008-06-25T16:18:57.687888Z Marcos H. Woehrmann

Fixed compile for Linux.

[contrib/opvp/gdevopvp.c]

2008-06-24T14:16:29.258940Z Igor Melichev

Fix (graphics) : Clean image enumerator before releasing it.

DETAILS :

Bug 688845 "Segmentation Fault on EPS 2 PDF conversion", comment #38.

Adobe Illustrator creates a Postscript document, 
in which an image data procedure executes 'save',
and the corresponding 'restore' appears after the image end.
DCue to that the image enumerator is freed at a higher save level than
it was allocated, so that gs_free_object works idle. 
Nevertheless pointers must not in the structure,
because they may point to blocks already released
by the client's subclass method for end_image.
Leaving them uncleaned caused a real crash in the garbager - see bug 688845.

The patch defines the new function gs_image_free_enum,
which is intendend for a safe releasing of an image enumerator
from Postscript interpreter.
It cleans the entire subclassed enumerator,
including all possible pointers created by subclasses.
All end_image implementations,
which may be called from Postscript interpreter,
must call this function for releasing image enumerators.

The 'memory' pointer moved from subclasses to gx_image_enum_common.
We believe that in the old code all subclasses define and initialize it.

Working on this patch we suspected memory leaks 
from image enumerators with some devices.
Particularly we suspect that subclasses if gx_device_vector
(pdfwrite, ps2write, etc.) never release image enumerators (not sure).
This patch does not do any attempt to re[pair such leaks, 
because we want the new code doesn't
change the behavour too much in order to simplify the testing.
A work on leaks to be done separately.

[src/gxiparam.h src/gxidata.c src/gsimage.h src/gdevvec.c src/gximage.h src/gximag3x.c src/gdevplnx.c src/devs.mak src/gdevvec.h src/gdevpdfi.c src/gxclimag.c src/lib.mak src/gdevpx.c src/gdevtrac.c src/gdevbbox.c src/gximage1.c src/gximage3.c]

2008-06-22T06:43:28.997699Z Ralph Giles

Rename the svg device to svgwrite to avoid conflict with the SVG interpreter.

The device is still selected as -sDEVICE=svg, just the name used internally
has been changed.

[src/Makefile.in src/gdevsvg.c src/devs.mak]

2008-06-21T14:06:00.424638Z Igor Melichev

Fix (TT interpreter) : A work around a wrong maxPoints.

DETAILS :

Bug 689907 "problem reading PDF: Failed to interpret TT instructions in font 80000001".

The test csae embeds a TT font subset with an incorrect maxPoints.
This is a simple work around that.
 

[src/ttobjs.c]

2008-06-16T16:12:37.522247Z Marcos H. Woehrmann

Updated to latest versions of files from ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/aj16.tar.Z

Closes bug 689735.

[Resource/CMap/UniJIS2004-UTF32-H Resource/CMap/UniJIS2004-UTF16-H Resource/CMap/UniJIS2004-UTF8-H Resource/CMap/UniJISX0213-UTF32-H Resource/CMap/UniJIS-UTF32-H Resource/CMap/UniJIS-UTF16-H Resource/CMap/UniJIS-UTF8-H Resource/CMap/UniJISX02132004-UTF32-H]

2008-06-11T16:24:24.671679Z Michael Vrhel

Undoing change introduced in rev 8794.  This change will need to occur after Bug 689889 is handled.   rev 8749 introduced 37 differences in the regression.  

[src/simscale.c]

2008-06-10T20:37:05.090668Z Michael Vrhel

For bug 689888.  This fixes the hang in the while loop.  If end of file occurs during the reading of the stream it is passed along by the filter.  However, proper output does not occur due to a different issue.  Another bug was opened related to this postscript noncompliance of string reading reuse in imaging operators.  See 689889.  

[src/simscale.c]

2008-06-09T23:02:50.347013Z Ralph Giles

Add a modified version of the clusterpush script from the ghostpcl tree.

[toolbin/clusterpush.sh]

2008-06-09T13:46:08.406410Z Alex Cherepanov

Use a dictionary (instead of an array) to represent cmap table in
a TrueType font because the array cannot accept fonts that have both
0x0 and 0xFFFF codes. Bug 689136, customer 870.

[src/icid.h src/zfcid1.c lib/gs_ttf.ps src/zcid.c]

2008-06-09T07:33:57.606022Z Igor Melichev

Fix (stroking) : Prevent unpainted gaps between neighbour strokes that could appear due to stroke adjustment.

DETAILS :

Bug 687974 "pdf file has banding with ghostscript but not with acrobat". 

The test case includes a gradient, which is represented
as a set of paralel strokes. Due to stroke widths equals to fractional pixels, 
stroke adjustment shifts some of them so that
an unpainted gap appears between strokes and the gradient looks striped.
Note the test document is created with Quark Express 4.11 .

This patch implements a hewristic recognizer for parallel contacting strokes
and suppresses stroke adjustment for them. See comments in code 
for more details.

Note that the recognizer data are associated with a device but they
are not a device property. We store them in a device structure because
we haven't got an associated structure in the graphic state,
and we don't want to introduce one now against extra complexity
with memory management. Also the recognizer code
Appears to be distributed along multiple functions and we would like
to apply a better incapsulation. Nevertheless the encapsulation
would cause CPU time expense for multiple small function calls
unless we create new macros. So commonly we're unhappy of
this code but we don't see a better solution.

Also note that the recognizer data is copied from/to clipper
device when the stroking algorithm installs and deinstalls a clipper.
So the data actually is not a property of a device.
Also they're not a part of graphic state because they must live
across gsave/grestore (the test case requires so). 
 

[src/gsimage.c src/gstext.c src/gxdevice.h src/gdevbit.c src/gspaint.c src/gxclip.c src/gxstroke.c src/gxdevcli.h]

2008-06-05T21:52:58.268146Z Ralph Giles

Remove the executable property from the included fonts.

[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusRomNo9L-Medi Resource/Font/NimbusSanL-Bold Resource/Font/Dingbats Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font/NimbusMonL-Bold Resource/Font/URWGothicL-Demi Resource/Font/NimbusSanL-BoldItal Resource/Font/NimbusRomNo9L-MediItal Resource/Font/StandardSymL Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/CenturySchL-Bold Resource/Font/URWBookmanL-Ligh Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusSanL-BoldCondItal Resource/Font/NimbusMonL-BoldObli Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/URWGothicL-BookObli Resource/Font/NimbusSanL-ReguItal Resource/Font/URWPalladioL-Ital]

2008-06-05T00:26:20.566472Z Alex Cherepanov

Replace incorrect FontMatrix in CFF CIDFont with a most common value to
recover a PDF file that Acrobat 8 manages to shows correctly. Bug 688517.

[lib/gs_cidfn.ps]

2008-05-31T00:57:34.917939Z Alex Cherepanov

Add work-around for PDF files that misspell 'endobj' as 'endjobj'. Bug 689876.

[lib/pdf_base.ps]

2008-05-30T20:25:17.430208Z Alex Cherepanov

Dom't interpret ^D (0x04) as a self-delimeted character in PDF mode because
PDF doesn't need this hack. Bug 689875.

[src/iscan.c]

2008-05-28T21:52:03.844656Z Igor Melichev

Fix (True Type font loader) : Work around incorrect numGlyphs (continued).

DETAILS :

Bug 689516 "problem reading PDF: Failed to interpret TT instructions (ref 7814)".
Bug 689866 "Regression: with TrueType fonts (possibly related to loca); file Bug688467.ps" 

The last patch appears to cause a conflict with the revision 5707 change.
which introduced a hewristic for reapring fonts with unsorted loca.
When sortinmg the full loca (including glyphs behind numGlyps), the test cases
of bugs 688467 and 688461 cause overlapping glyphs,
so that the hewristic gives a wrong glyph length.

This patch improves the hewristic with checking the glyph length
obtained from the unsorted loca, and replaces it only if it looks incorrect.
f
which may need further adjustments.
 

[src/gstype42.c]

2008-05-28T18:16:26.144495Z Ralph Giles

Correct properties.

[src/sidscale.h src/sjbig2_luratech.h src/sjpx_luratech.h src/sidscale.c src/sjbig2_luratech.c src/sjpx_luratech.c]

2008-05-28T16:04:01.772433Z Marcos H. Woehrmann

Changed crlf to lf.

[src/sidscale.h src/sidscale.c]

2008-05-28T02:38:35.559910Z Alex Cherepanov

Fix a typo introduced in the rev. 8146 that prevented running PDF files from
stdin. Bug 689847.

[lib/pdf_main.ps]

2008-05-28T00:27:23.734030Z Michael Vrhel

Fix to enable proper custom color callback when indexed images with ICC profiles are used.  Bug 689863.

[src/lib.mak src/gscolor2.h src/gxcie.h src/gsciemap.c src/gscolor2.c]

2008-05-27T20:12:08.164024Z Michael Vrhel

Addition of debug code to dump embedded ICC profiles for external analysis.  

[src/gsicc.c]

2008-05-27T17:07:40.221072Z Alex Cherepanov

Enable printafm to emit a comment with UniqueID, that may be of some use when
investigating versions of fonts used. Thanks to Michail Vidiassov for the
patch. Bug 688610.

[lib/printafm.ps]

2008-05-26T19:04:05.563476Z Ralph Giles

Work around broken JBIG2Decode streams created by several versions of
Xerox WorkCentre. Bugs 689841 and 689852.

In these streams, a segment data length field is written as -1
expecting the decoder to infer it from the length of the remaining
data.

[jbig2dec/jbig2_page.c]

2008-05-25T07:28:53.119264Z Igor Melichev

Fix : MSVC warnings.

DETAILS :

Removed an extra debug printing that prints an unutialized variable.
 

[src/gdevpx.c]

2008-05-25T07:23:38.027951Z Igor Melichev

Fix (True Type font loader) : Work around incorrect numGlyphs.

DETAILS :

Bug 689516 "problem reading PDF: Failed to interpret TT instructions (ref 7814)".

The bug report supplies a PDF document, which embeds a TT font
with a too small numGlyphs. The loca table contains more glyphs and 
they are referenced in a text. The font is incorrect, but Acrobat handles the document.

This patch checks whether there are glyphs behind numGlyphs and 
extends numGlyphs to cover them. Also improved error handling in ttfmain.c .

Besides that, now we print a warning about an incorrect numGlyphs
in release build. The olkd code did with debug buil only.
I believe that users need to know whether a font is broken, and that
its rendering is hewristic.
 

[src/gstype42.c src/ttfmain.c]

2008-05-25T05:45:15.665594Z Alex Cherepanov

Revert the rev. 8509 because it is not needed after rev. 8774 but interferes
with FONTPATH search and memory font resources. Bug 689637.

DETAILS:
Since embedded PDF fints are now not registered as resources, there's no
need to distinguish between disk and memory font resources. Embedded fonts
bypass resource machinery; non-embedded fonts are loaded by name.
 

[lib/pdf_font.ps src/zfont.c]

2008-05-25T04:28:23.450067Z Alex Cherepanov

Continue the changes started by the rev. 8772. Remove one more definefont from
embedded TrueType font loader. Bug 689644, customer 243.

[lib/gs_ttf.ps]

2008-05-25T02:17:14.504731Z Alex Cherepanov

Change all shell scripts to treat a single dash '-' as a positional
parameter rather than an option. Bug 689846.

[lib/eps2eps lib/ps2ps lib/dumphint lib/ps2ps2 lib/dvipdf lib/pdfopt]

2008-05-23T05:05:20.013100Z Alex Cherepanov

Use embedded PDF fonts directly. Don't define them as resources and look them
up later by the name. Leave findfont operator for fetching non-embedded fonts
only, which are now unaffected by embedded fonts. Bugs 689510, 689514 from
customer 700.

DETAILS:
CIDFont resources should be handled in a similar way but this part
is not yet implemented.

[lib/pdf_font.ps lib/pdf_ops.ps]

2008-05-23T00:13:50.314402Z Ralph Giles

Implement sync_output as cairo_flush. Patch from Behdad Esfahbod.

[src/gdevcairo.c]

2008-05-22T18:06:22.983939Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 4).

DETAILS :

The old code assumes that a pattern always fits into the clist writer buffer.
However ppmraw -r400 176-01.ps violates this assumption.
This patch implements a subdivision of a pattern into slices,
each of which is smaller than the buffer size.

1. The new function cmd_get_buffer_space retrives maximal available space
   in the clist writer buffer (gxclutil.c).

2. cmd_put_drawing_color now implements a cycle for slicing big patterns.
   Each slice writes to clist as a separate clist instruction (gxclpath.c).

3. gx_dc_pattern_write_raster drops the constraint that the pattern
   fits into a single buffer (gsptype1.c).

4. The clist interpreter is enhanced with composing a pattern from slices
   (gxclrast.c).

[src/gsptype1.c src/gxcldev.h src/gxclrast.c src/gxclpath.c src/gxclutil.c]

2008-05-22T09:52:18.876353Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 3).

DETAILS :

Bug 689856 "Regression: 09-34.PS core dumps when banding".

Uninitialized fields in device color after restoring a pattern from clist.
Debugged with
..\..\gs-hd\bin\gswin32c.exe -IF:/AFPL/gs-hd/lib;f:\afpl\fonts -r300 -K1000000 -dMaxBitmap=10000 -dNOPAUSE -dBATCH -sDEVICE=pbmraw -sOutputFile=cur.ppm H:\AuxFiles\CET\09-34.PS

[src/gsptype1.c]

2008-05-21T19:46:53.581581Z Ray Johnston

Change parameters to gdev_prn_allocata_mesmory to explicit width and height to work
around a (suspected) bug in gdev_prn_allocate when new_width and new_height are 0
and the page has transparency. That issue will be adddressed separately.
Crash with multi-threaded rendering reported by customer #850.

[src/gxclthrd.c]

2008-05-21T19:46:47.112573Z Ralph Giles

In r8765 we concluded GS_IMAGE_MAX_PLANES was the same as
MAX_COMPONENTS. Make this change permanent by removing the
MAX_PLANES define entirely.

[src/gsimage.c src/zimage.c src/gxiparam.h src/gdevbbox.c src/gxidata.c src/gximage.c src/gsiparam.h src/gxclimag.c]

2008-05-21T19:46:43.711424Z Ralph Giles

Remove the lowercase "compatibility" versions of the GS_IMAGE_MAX_*
macros.

[src/zimage.c src/gdevtxtw.c src/gsimage.c src/gxiparam.h src/gxidata.c src/gximage.c src/dxmainc.c src/gdevpdtv.c src/gdevpdfb.h src/gdevpdtv.h src/macsystypes.h src/gdevmacttf.h src/gp_mac.h src/gxclimag.c src/iimage.h src/gxsamplp.h src/gdevmacxf.c src/gdevmac.c src/gsiparam.h src/gdevmac.h]

2008-05-21T19:05:31.529144Z Ray Johnston

Reduce the GS_IMAGE_MAX_PLANES to a sane number. The image cannot have more
planes than the number of CLIENT_COLORS we support (plus 1 for alpha).
This cures a stack overflow seen with the multi-threaded rendering on
Windows.

[src/gsiparam.h]

2008-05-21T18:27:42.905572Z Michael Vrhel

Fix for 689811.  Enables custom color callback when banding of images is occurs.

DETAILS:
This was a simple fix which puts the callback structure address into gslib_ctx instead of in the graphic state.  This fixes the customer's issue.  The postscript interface for custom color remains as it was with this commit.  Soon, in the future, we will be changing to a C API interface.  There does remain an issue with respect to object type tagging.  If high level images occur with banding, the object type is different than if there was no banding.  Opening a new bug in regard to this.

[src/gsnamecl.h src/gslibctx.c src/gxcmap.c src/iapi.c src/gslibctx.h src/gsncdummy.c src/gsciemap.c src/gscspace.c src/gsicc.c src/gscdevn.c src/gsnamecl.c src/gscie.c]

2008-05-21T18:13:13.037917Z Ralph Giles

Credit Behdad in the source.

[src/gdevcairo.c]

2008-05-21T13:42:08.542151Z Igor Melichev

Fix (Type 1 hinter) : The missed flex hewristic malfunctioned.

DETAILS :

Bug 689821 "SegFault in gxhintn.c".

The old code is buggy with a wrong index advance along a cyclic buffer range.

[src/gxhintn.c]

2008-05-21T10:12:14.199391Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 2).

DETAILS :

Bug 689848 "C stack overflow on Windows and hang on linux 176-01.ps".

A patch from Ray, which eliminates an infinite recursion in the clist writer.
A further improvement is coming soon about noodling the big data 
while copying a pattern into a page clist.

[src/gxclutil.c]

2008-05-21T06:46:41.280250Z Ray Johnston

Ensure that the chunk wrapper is used on the non_gc allocator since doing GC
on chunks will be disastrous. This is protection only and causes no difference
since the only current client of the chunk wrapper is the multi-threaded clist
rendering which wraps non_gc_memory.

[src/gsmchunk.c]

2008-05-21T06:40:14.466289Z Ray Johnston

Upon one of our engineer's request, clean up the MSVC warning about use of an
uninitialized variable.

[src/gxclthrd.c src/gxclist.h src/gxclread.c]

2008-05-21T06:35:34.826889Z Ray Johnston

Add some missing information for the clist multi-threaded rendering files and
the chunk memory wrapper. This cleans up (som of) the nightly regression nags.

[doc/Develop.htm]

2008-05-21T01:37:08.729158Z Ralph Giles

Fix the autoconf build when libcairo isn't available.

The device properly disabled in r8752.

[src/configure.ac]

2008-05-21T01:26:49.215021Z Ralph Giles

Set properties on the new cairo device source file.

[src/gdevcairo.c]

2008-05-21T01:24:45.439819Z Ralph Giles

Whitespace cleanup. Also comment out the warning about setlogop; this
isn't important for most documents.

[src/gdevcairo.c]

2008-05-21T01:24:44.147836Z Ralph Giles

Don't compare a NULL extension string.

[src/gdevcairo.c]

2008-05-21T01:24:42.046903Z Ralph Giles

Rename the cairo device parameter CairoSurface to CairoOption.

Better handling of libcairo errors.

Add (untested) support for passing a libcairo context pointer
through the CairoContext device parameter for rendering to a
client drawable.

Details:

CairoSurface was renamed with the expectation that it will in
the future take additional options that might not be surface
specific. Also, the CairoSurface name was chosen with the idea
that a client could pass a pointer to an already allocated
cairo_surface_t, but it's just as easy to pass the result
of calling cairo_create() on such a surface as a context
pointer. Therefore we've added CairoContext and renamed the
old CairoSurface parameter to CairoOptions.

The new command line would be:

 gs -sDEVICE=cairo -sCairoOptions=ps -o - test.ps

to set the output format to ps.

[src/gdevcairo.c]

2008-05-21T01:24:40.923940Z Ralph Giles

Protect the use of pkg-config for libcairo.

[src/configure.ac]

2008-05-21T01:24:38.762206Z Ralph Giles

New 'cairo' output device using the libcairo graphics library.
Patch by Behdad Esfahbod.

Details:

This output device uses the LGPL cairo library to create file output in
a variety of formats. Currently supported are png, svg, pdf, ps, eps.

The output format can be specified with the CairoSurface device
parameter. If this parameter isn't set, the device will guess
based on the filename extension given in OutputFile. Thus, these
two command lines are equivalent:

gs -sDEVICE=cairo -sCairoSurface=svg -o tiger.svg examples/tiger.eps
gs -sDEVICE=cairo -o tiger.svg examples/tiger.eps

Other output formats are selected like so:

gs -sDEVICE=cairo -o tiger.png examples/tiger.eps
gs -sDEVICE=cairo -o tiger.pdf examples/tiger.eps
gs -sDEVICE=cairo -o tiger.ps examples/tiger.eps

Only vector drawing is implemented at this point; images and text are
handled by fallback and will not give compact results. The resolution
for rasterization is set by the -r parameter as usual.

[src/Makefile.in src/configure.ac src/gdevcairo.c src/devs.mak]

2008-05-20T20:34:52.772461Z Ray Johnston

Add double inclusion protection to cure nag from nightly regression.

[src/gsmchunk.h src/gxclthrd.h]

2008-05-20T16:18:40.306550Z Ray Johnston

Clean up properties to get rid of nightly regression warnings.

[src/gsmchunk.c src/gxclthrd.c src/gsmchunk.h src/gxclthrd.h src/gdevsvg.c]

2008-05-20T00:52:25.121469Z Alex Cherepanov

Consider Index object in CFF font as empty if the offset element size is
incorrect. Bug 689854, customer 580.

DETAILS:
The rationale behind this decision is that the index is, probably,
not used when it is malformed but the file survives in the wild.

[lib/gs_cff.ps]

2008-05-19T14:47:52.443966Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued).

DETAILS :

Bug 689807 "segfault with 09-34.PS".

The last patch for the subject appears incomplete.
This one allows to write and read null patterns.
Debugged with 09-34.PS .

[src/gsptype1.c]

2008-05-17T21:33:47.003946Z Alex Cherepanov

Permit opening of temporary files in the safe mode. Fix /invalidaccess
error during interpretation of PDF 1.7 file collections in the safe mode.
Bug 689847.

[lib/pdf_main.ps src/zfile.c]

2008-05-17T12:58:01.814886Z Alex Cherepanov

Ignore annotation appearance stream when it has a wrong type i.e. not a
dictionary. Bug 689839.

[lib/pdf_main.ps lib/pdf_base.ps lib/pdf_draw.ps]

2008-05-17T01:02:02.764582Z Alex Cherepanov

Replace various access techniques to PDF annotations with 'knownoget'
in preparation to fix the bug 689839.

[lib/pdf_draw.ps]

2008-05-16T23:34:14.372367Z Ralph Giles

Add support for linecap/join and miterlimit.

[src/gdevsvg.c]

2008-05-16T12:48:24.645580Z Alex Cherepanov

Use PDFScanRules to scan ToUnicode CMap. Fix a case where CMap stream has
a name starting with 2 slashes that should not be parsed as an immediately
evaluated name. Bug 689642, customer 870.

[lib/pdf_font.ps lib/pdf_base.ps]

2008-05-16T00:05:42.149140Z Ralph Giles

Accumulate imaging state changes and write a new group only when
drawing. Add support for the linewidth parameter. We're pretty
close to properly handling tiger and other vector-only files.

[src/gdevsvg.c]

2008-05-16T00:05:41.073469Z Ralph Giles

Correct stroke and fill attribute overrides based on the path type.

Also includes some whitespace cleanup.

[src/gdevsvg.c]

2008-05-16T00:05:40.066267Z Ralph Giles

Store clipping rectangles as a clip path and ignore other non-drawing
paths.

[src/gdevsvg.c]

2008-05-15T21:24:13.840635Z Ralph Giles

Set the document size and scale based on the page size and resolution
from the device parameters.

[src/gdevsvg.c]

2008-05-15T21:24:12.705572Z Ralph Giles

Return proper negative error codes on allocation failure.

Also some minor formatting.

[src/gdevsvg.c]

2008-05-15T21:24:11.342484Z Ralph Giles

Be explicit about clearing the current fill or stroke color when
none is set.

[src/gdevsvg.c]

2008-05-15T16:17:48.102316Z Michael Vrhel

Fix for previous commit.  I had the wrong version number test in the define.

[jbig2dec/config_win32.h]

2008-05-15T16:12:17.999197Z Michael Vrhel

Minor change in JBIG configuration file related to using Visual Studio Version 9 (2008).  stdio.h has a definition for vsnprintf which conflicts with the define in config_win32.h

[jbig2dec/config_win32.h]

2008-05-15T00:00:24.616940Z Marcos H. Woehrmann

Improve white-on-mask drawing mode.

Details:

This patch is provided by Hin-Tak (see bug 688372); his comments:

This is a patch which I have created, to make the pxlmono/pxlcolor driver
bebaves much better in the white-on-mask situation, without breaking
normal drawing.

I haven't quite work out all the details nor understand the
reverse-mask-draw code properly yet, but this patch improves the situation
a great deal, to the point all the icons are shown correctly except for
having its background draw solid white rather than transparent


[src/gdevpx.c]

2008-05-14T23:49:09.954483Z Marcos H. Woehrmann


Add support to pxlcolor and pxlmono for 24 bpp images.

Details:

Previous to this revision the pxlcolor and pxlmono devices would revert
to using gx_default_begin_image() when bits_per_pixel==24, resulting
in very large images.  Now the image data is written directly into the
pxl stream.  In the case of pxlmono the image is converted to 8 bpp via
the lum_*_weight values from gxlum.h.


[src/gdevpx.c]

2008-05-13T19:52:08.912983Z Ralph Giles

Fix an incorrect curveto coordinate.

[src/gdevsvg.c]

2008-05-13T18:47:23.939753Z Ralph Giles

Disable drawing in the SVG output device after the first output_page call.

Even for single-page output we receive an erasepage fill after the showpage
from gdevvec, which overwrites whatever we've drawn. This should be avoided
in a more sophisticated way (ideally in the superclass) but this method is
helpful for current development.

[src/gdevsvg.c]

2008-05-13T18:47:23.279847Z Ralph Giles

Support setting stroke and fill colors.

[src/gdevsvg.c]

2008-05-13T18:47:21.967012Z Ralph Giles

Import the current state of the svg driver. Doesn't work.

[src/Makefile.in src/gdevsvg.c src/devs.mak]

2008-05-13T03:58:10.005759Z Alex Cherepanov

Reduce generation of garbage and the time spent on garbage collection by
placing gstate into the 2nd element of the patterm implementation array
in Adobe compatibility mode only. Ghostscript doesn't use this gstate
at all. Bug 689488.

[lib/gs_lev2.ps src/zmisc.c]

2008-05-11T17:00:17.181464Z Alex Cherepanov

Fix a bug that leaves a junk value on the stack for every empty row on the
page during execution of a redefined showpage. Bug 689832.

DETAILS:
The bug was introduced in rev. 2602 and stayed undetected for a while because
most files don't depend on the contents of the operand stack after executing
showpage.

[lib/ps2epsi.ps]

2008-05-10T22:02:03.546959Z Alex Cherepanov

Ignore OutputIntent attribute if it is not an array; recover a broken PDF file.
Bug 689831.

[lib/pdf_main.ps]

2008-05-09T16:44:54.615805Z Ray Johnston

Fix missing dependency that caused builds that included the 'bmpa' devices
to fail because the locking memory code wasn't included. Currently PCL
builds still had the bmpa devices included, so they failed.

[src/lib.mak]

2008-05-09T14:00:44.027651Z Ralph Giles

uncodes 33 and 34 repeat a zero code length symbol id, not the previous
symbol like runcode 32. Bug 689824.

Thanks to Justin Greer for the fix.

[jbig2dec/config.h jbig2dec/configure jbig2dec/jbig2_text.c]

2008-05-09T04:12:01.814716Z Alex Cherepanov

Reject incorrect ICC profile that has 0 offset in one of the tags
and use alternate color space. Bug 689830.

[icclib/icc.c]

2008-05-09T02:18:14.475665Z Ray Johnston

This is the "final" merge of the mtrender (multi-threaded clist rendering)
branch into the trunk. The default behavior is still the same, i.e., the
clist rendering is done in the same thread as the parsing (main thread).

The 'gsmalloc' memory allocator now ALWAYS uses a mutex to lock accesses
in case it is used by a multi-threaded client. This was determined to
result is less than 1% performance hit on a single threaded client.

Refer to the log messages on the mtrender branch for details on the
design of the multi-threaded clist rendering, but the summary is that
-dNumRenderingThreads=# (default 0) determines the number of background
threads REQUESTED for rendering bands. If the platform doesn't support
threads, or if there is an error starting the threads from the clist_
get_bits_rectangle_mt hook, single threaded rendering will be used.

The number of threads may be less than the requested number if the
number of bands is less than the request, or if there is an error
setting up threads (as many as can be created, up to the request will
be used). The -Z: debug switch emits status messages indicating how
many threads are requested (-dNumRenderingThreads) and the number that
is actually used.

Many files show little if any improvement with multi-threaded clist
rendering since they are dominated by the clist writing time, or by
the time required to write the output. No files seen to date show a
performance hit greater than aobut 3%. Setting NumRenderingThreads
to a count higher than the number of CPU cores available does not
seem to help or hurt much, but there is overhead (per page) with
starting threads and allocating band buffers, so a very large count
is not productive.

The best performance seen on an Intel Core 2 Duo system, on a
particular file is about a 75% performance improvement (completing
the page in 57% of the single threaded time). This time did not
include writing a file (output to /dev/null).

In order to prevent memory mutex (locking) contention from slowing
down multi-threaded clist rendering, each thread uses a 'chunk'
wrapper on NON-GC the non-gc memory allocator. Each chunk allocator
is thread-safe/instantiated, so the locking only occurs on chunk
allocations to the wrapped (target) memory allocator.

The 'BAND_LIST_STORAGE=mmeory' option has been supplemented to allow
multiple concurrent threads to read the clist 'memfile'.

The "autoconf" files (configure.ac and Makefile.in) have been improved
to hook the 'posix' pthreads if available, so linux and Mac OS/X will
be able to support the multi-threaded clist rendering.

[src/gxclist.c src/gsmemlok.c src/gsmchunk.c src/gxclthrd.c src/gxclist.h src/configure.ac src/gsmchunk.h src/gxclthrd.h src/gxclread.c src/lib.mak src/gxclmem.c src/gxclmem.h src/gsmalloc.c src/Makefile.in src/gdevprn.c src/gsmalloc.h src/gdevprn.h]

2008-05-08T21:47:07.355557Z Ray Johnston

Use 'realtime' instead of 'usertime' for -Z: timing information. On some
systems (Windows) these are equivalent, but on linux, 'usertime' is the
time for the current thread which interferes with timing collection on
different threads (multi-threaded rendering did not include any time for
the threads). INCOMPATIBLE CHANGE, but this is only debug info.

[src/imain.c]

2008-05-08T21:28:30.163536Z Ray Johnston

Allow some compile time constants that affect performance to be set as
/D compiler flags (via XCFLAGS makefile macro).

MAX_BITMAP_PATTERN_SIZE controls when the clist pattern accumulator is used,
and on machines with a decent amount of RAM, the default of 1 Mb is too
small and causes the slower clist method to be used too often. Setting this
to 32 Mb is probably better on hosts.

The GS_CLIENT_COLOR_MAX_COMPONENTS default of 252 is needed for Adobe CPSI
compatibility and for RIPS that want to use a large number of DeviceN
colorants, but this increases the size of some allocations and slows down
performance and is much too large for printers. Setting this to 6 or 8 is
probably plenty.

[src/gxpcmap.c src/gsccolor.h]

2008-05-08T20:09:32.433652Z Ray Johnston

Fix MSVC warning -- mismatched type.

[src/zchar42.c]

2008-05-08T19:56:33.932490Z Ray Johnston

Fix gcc warnings, unused variables and type mismatch, implicit declaration.

[src/gximask.c src/gp_unix.c]

2008-05-08T19:35:26.683268Z Ray Johnston

Clean up gcc compiler warnings for unused 'st' and no prototype for
gx_pattern_cache_free (from gxpcolor.h).

[src/gxclrast.c]

2008-05-08T19:10:40.329127Z Ray Johnston

Add support for recursive mutex on posix. Multiple threads that perform
'locking' before calling an object's finalize need this to prevent
deadlock if the finalize calls 'free'. This protection is standard on
Windows, but PTHREAD_MUTEX_RECURSIVE attribute is not available on
many systems.

The method, using pthread_self and pthread_equal, was extracted from
a web information page and tested on linux.

NB: The multi-threaded clist rendering no longer needs this since
the 'chunk' memory wrapper calls the 'finalize' function without
locking, so the deadlock no longer occurs.

[src/gp_psync.c]

2008-05-08T18:56:10.922303Z Ray Johnston

Fix memory leak observed with DEBUG=1 build on mtrender branch. The
'levels' and 'bit_data' of halftones were being leaked when halftones
were set by the clist reader.

DETAILS:

Since the 'dht.rc' was filled with 0's, the rc.memory would cause the
gx_imager_dev_ht_install to copy the order (mem_diff would be true).
The gx_ht_copy_ht_order would make a copy, but the one passed in
was never freed. Since the 'src' component information was cleared
during the install, gx_ht_read_and_install needs to save a copy of
the components so that the orders can be released.

[src/gxdhtserial.c]

2008-05-08T18:40:31.637800Z Ray Johnston

Fix compiler warning due to missing prototype for strncmp.

[src/zchar42.c src/int.mak]

2008-05-07T21:07:53.236295Z Igor Melichev

Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation.

DETAILS :

Bug 689579 "Ghostscript generates a very, very large temporary file".

The old code converts pattern fills into lots of constant color rectangles while writing to clist.
The new code writes pattern data to clist and apply pattern during the clist playback.
So here we complete the change started in revision 8655.

New functions gx_dc_pattern_write_raster, gx_dc_pattern_read_raster
implement color serialization for raster patterns.
The old function gx_dc_pattern_write got minor changes about buffer localization.

Minor chabge (gxclimag.c, gxclpath.c, gxclrect.c) : Propagated error codes.

Also fixed a bug occasionally found in gxclrast.c . 
It caused a crash in some unusual conditions.

[src/gsptype1.c src/gxclrast.c src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2008-05-07T21:02:16.625138Z Igor Melichev

Fix (graphics) : Wrong pattern phase when pattern applies to a band with non-zero origin.

DETAILS :

The old code computes pattern phase modulo rep_width, rep_height.
It appears wrong when pattern step is much bigger than the pattern bbox.
Really the bbox determines the painting area as rep_width, rep_height,
but the phase to be computed modulo pattern step.
Besides that, the old code aplies a wrong sign, which is oposite to a band offset.

This bug has no effect with Postscript interpreter, because 
currently patterns never apply after banding,
but it will change with the next patch.
With no banding the phase is always zero.

Other interpreters may need additional improvements
(we suspect they are bug-to-bug compatible).

[src/gsptype1.c]

2008-05-07T09:15:27.593615Z Igor Melichev

Fix (graphics) : Imprecise pattern phase with negative cell origins (continued).

DETAILS :

The old code inaccurately converts floats to integers.
The problem here is that (int)-0.13 == 0 but the math wants -1.
It causes a 1 pixel bias with negative coordinates when argument is not integer.
This isn't a first time when we fix a bug of this kind,
and likely this one is not the last.

This change is important for bug 689579.

Debugged with the following commands :

gswin32c.exe -dMaxBitmap=22000000  -r300 -dNOPAUSE -dBATCH-sDEVICE=ppmraw -sOutputFile=cur-b.ppm 245-07.ps
gswin32c.exe -dMaxBitmap=100000000 -r300 -dNOPAUSE -dBATCH-sDEVICE=ppmraw -sOutputFile=cur-n.ppm 245-07.ps

They must render same raster, but they didn't.

[src/gxp1fill.c]

2008-05-07T06:25:34.508384Z Alex Cherepanov

Repait yet another broken PDF file that abbreviates /Indexed to /I
in the color space array. Bug 689815.

[lib/pdf_draw.ps]

2008-05-06T20:59:54.208603Z Alex Cherepanov

Fix and simplify implementation of operator Q. Collecting the path with
the current ctm and re-playing it with the restored ctm transforms the
path exactly as PDF needs. Bug 689812.

[lib/pdf_ops.ps]

2008-05-05T19:51:17.293996Z Ray Johnston

Eliminate leaks caused by lost 'maskbuf' elements. Only the uppermost
maskbuf is (currently) used by the pop_transparency_group that applies
the mask, but the chain of maskbuf->maskbuf elements was never freed.
This also improves performance (at least for the test case of bug
689534). Customer #870.

[src/gdevp14.c]

2008-05-02T20:13:50.255816Z Igor Melichev

Fix (graphics) : Imprecise pattern phase with negative cell origins.

DETAILS :

The old code inaccurately converts floats to integers.
The problem here is that (int)-0.13 == 0 but the math wants -1.
It causes a 1 pixel bias with negative coordinates when argument is not integer.
This isn't a first time when we fix a bug of this kind,
and likely this one is not the last.

This change is important for bug 689579.
Here is a test for debugging it :

<<
  /PaintType 1
  /PatternType 1
  /TilingType 1
  /BBox [0 0 60 60]
  /XStep 40
  /YStep 60
  /star
  { gsave
    0 12 moveto
    4
    { 144 rotate
      0 12 lineto
    } repeat
    closepath
    fill
    grestore
  }
  /PaintProc
  { begin
    1 0 0 setrgbcolor
    15 15 translate
    star
    0 0 1 setrgbcolor
    30 30 translate
    star
    0 1 0 setrgbcolor
    -30 0 translate
    star
    30 -30 translate
    star
    end
    %.break
  } 
>>
[1 0 0 1 0 0]
makepattern
/Star4 exch def

/Pattern setcolorspace
Star4 setcolor

clippath pathbbox 
exch pop 30 exch
4 copy = = = =
rectfill

showpage

The old code gives different rasters for this test while banded and unbanded rendering.

[src/gxp1fill.c]

2008-05-02T08:07:50.475340Z Ken Sharp

The revision 8621 which reinstated the comments, and updated encs2c.ps to generate them,
placed the Id line in the wrong position relative to the licence and summary comments.

[toolbin/encs2c.ps src/gscedata.h src/gdevpdtv.c src/gdevpdtv.h src/gscedata.c]

2008-05-02T02:19:57.012115Z Ralph Giles

Remove the testing instructions and file index.

This was mostly obsolete, and the automated tests are fairly complete now.

[doc/Testing.htm doc/Readme.htm toolbin/tests/check_docrefs.py]

2008-05-02T01:42:14.506521Z Ralph Giles

Fix various code policy warnings.

[toolbin/msvcxml.bat src/gdevdjet.c src/aes.h toolbin/memory.py src/aes.c]

2008-04-30T19:06:59.803995Z Ralph Giles

Fix some warnings.

[src/gsncdummy.c]

2008-04-30T04:51:02.115275Z Michael Vrhel

Fixed issue with NULL pointer in gsncdummy.c when ICC color space was used in custom color callback.  Also, made the object based coloring an option define and fixed minor header issues.

[src/lib.mak src/gxcmap.c src/gsncdummy.c src/gscspace.c src/gscdevn.c src/gsnamecl.c]

2008-04-30T01:35:18.247997Z Ralph Giles

Fix some warnings.

[src/gdevp14.c]

2008-04-29T06:34:17.581619Z Michael Vrhel

Fix for bug 689806 which was introduced when fixing bug 689803.  The current bug was related to a CIELAB image with a colorspace ICC profile (LAB to LAB).  The image data was incorrectly being normalized between 0 and 1 (float). It is now properly normalized to the range of the CIELAB ICC space.  There still exists an issue with this file as absolute colorimetry should be used.  This is the source of the current difference between AR and GS.  However, the image is no longer black now but should match the GS result prior to rev 8664.

[src/lib.mak src/gxicolor.c]

2008-04-29T00:31:25.778368Z Alex Cherepanov

Make pf2afm utility friendlier to Windows users: check for .pfa or .pfb
extensions case-insensitively and accept backslash as a path separator.
Bug 689804.

[lib/pf2afm.ps]

2008-04-28T17:48:26.844493Z Alex Cherepanov

Refine calculation of di member of a trap_line structure to avoid integer
overflow when the source operands are big. Bug 689448.

[src/gdevddrw.c]

2008-04-28T16:26:35.071571Z Ralph Giles

Fix a minor header dependency skew.

[src/int.mak src/gsicc.c]

2008-04-28T06:47:28.650051Z Michael Vrhel

Undo accidental commitment of ENABLE_CUSTOM_COLOR_CALLBACK (has callback) code.

[src/gsicc.c]

2008-04-28T05:20:54.026239Z Alex Cherepanov

Implement spacial handling of transfer functions during Gray to CMYK
conversion: ignore transfer functions for non-black components. Bug 688360.

DETAILS:
On this topic, section 7.3 of PRLM-3rd (page 494) says:
"Note: When the current color space is DeviceGray and the output device's
native color space is DeviceCMYK, the interpreter uses only the gray transfer 
function. ... This special case exists for compatibility with existing
applications." There is a similar comment in section 6.3 of the PDF 1.6
spec. (page 456).

[src/lib.mak src/gxcmap.c src/gxcspace.h src/gscspace.c src/gxdevcli.h]

2008-04-27T15:21:10.051210Z Alex Cherepanov

Check the error code early. Fix a SEGV in PDF file with invalid ICC profile
that was introduced by the rev. 8664.

[src/zicc.c]

2008-04-26T04:35:56.962801Z Michael Vrhel

Fix for bug#689803.  Set bounds correctly when input data is LAB and color also includes a colorspace source profile (e.g. LAB to LAB).  

[src/int.mak src/gsicc.c src/zicc.c]

2008-04-23T14:06:11.166309Z Igor Melichev

Fix (graphics) : Convert imagemask into a clipping path when painting a big pattern.

DETAILS :

Bug 689440 "PostScript file generates infinitely large temp file".

In the past we implemented a conversion of imagemask intoi a clipping path 
for a faster painting a shading color. Now we do same for big type 1 patterns.

1. Enhanced the condition in gximask.c for passing big patterns.

2. In gximask.c filter out degenerate rectangles, 
   which can't be painted with gx_device_color_fill_rectangle.

3. Set a pure black color in gsimage.c, 
   because patterns can't convert with gx_device_black.

4. In gxacpath.c added the default copy_mono method 
   to the clip list accumulator device in order to handle 
   imagemask with the pure color set by (3).

5. In gximask.c added a proper setup of device width and height
   to clip list accummulator, because gx_default_copy_mono needs them.

6. In gximask.c gx_device_retain is now called on errors.
   The old code does not call it, and we think it caused memory leaks
   in some rare cases.

This patch changes the behavior with shadings, because the old code paints
imagemask with the shading color to clip list accummulator.
The new code does with pure black, so that now the clipping is not
restricted with the shading area or the shading BBox.
But we believe that the final result should be same 
and the performance should be some faster.

Note we keep the call to gx_dc_pattern2_clip_with_bbox_simple
in gx_image_fill_masked_end rather now it is always idle.
Doing so for the case if this change will need undoing for shadings.

The new code doesn't use the writing of big patterns into clist,
which was done with recent revision 8655. 
That change appears unneccessary for this particular bug. 
However we want to keep it in HEAD branch because it may be useful 
for further impeovements when imagemask produces a too big clipping list.

This patch causes a minor raster difference with Bug688396.pdf .
Delaying it for better times.

[src/gsimage.c src/gxacpath.c src/gsptype1.h src/gximask.c]

2008-04-23T00:30:10.271302Z Alex Cherepanov

Since we always write a complete "classic" xref, the Trailer may need to be
adjusted: (1) remove keys that pertain to xref-streams and hybrid-xref PDFs;
(2) if it's a PDF stream, turn it into a PDF dict by removing keys used for
PDF streams (both standard and GS-specific), and the executable attribute.
Thanks to SaGS for the patch. Bug 688152.

[lib/pdfwrite.ps lib/pdfopt.ps]

2008-04-22T17:18:03.467843Z Ralph Giles

Set native line endings on gsnamecl. This should remedy patch-portability problems.

[src/gsnamecl.h src/gsnamecl.c]

2008-04-21T14:53:38.640663Z Igor Melichev

Enhancement (graphics) : Delay applying big patterns until page clist interpretation.

DETAILS :

This is a preparation for fixing 
the bug 689440 "PostScript file generates infinitely large temp file".

The old code decomposes the imagemask into rectangles,
each of which decomposed the pattern color into a huge list of rectangles.
See more about the old code in Comment #11 of the bug 689440.
Now we delay the decomposition until the page clist playback.

This patch reduces the clist file size for the bug 689440
from 355GB to an acceptable size of 316Mb. A further shortening
is possible as explained in (5) below. But the rasterization time is still
unacceptably long - more than 48 hours. It will be improved
in a next step with converting imagemask with pattern color
into a painting of a pattern color with a mask clip device.

1. The old functions gx_dc_pattern_write, gx_dc_pattern_read actually 
are generic functions for multiple color types,
which simply return an error. Renamed them into 
gx_dc_cannot_write, gx_dc_cannot_read.

2. Implemented new gx_dc_pattern_write, gx_dc_pattern_read for clist-based patterns.
They copy pattern clist data to/from page clist. Currently this code
doesn't try to compress the data, but probably we'll need to do that.

3. Changed a condition in gxclimag.c to pass imagemask
with a clist-based pattern color to clist writer.
Also moved some checks to provide image matrix to be computed
when the new condition is true.

4. Added more functions into gxclist.c, gxclist.h for accessing 
data of a clist-based pattern.

5. gx_dc_pattern_read now constructs pattern cache and stores the
clist-based pattern "tile" to it. The clist reader releases the cache before exiting a band.
We will need an optimization agains redundant writing of patterns into page clist.
This necessary optimization to be done in a next step.

6. Propagated error codes in gxclread.c, gdevfax.c for easier debugging.

7. Improved debug printing in gxp1fill.c to designate
recursive calls to clist interpreter when a clist-based pattern
in interpreted while a page clist playback.

8. Added new accessors into gxpcmap.c, which are needed 
to access pattern cache while a page clist interpretation.

9. Updated dependencies in makefiles. 

10. Fixed the dependenco of gxdcolor.c on gxdevcli_h, which was missed before this change.

11. Added the pattern color type into the list in gxdcolor.c,
because now we need to write it into clist. An old comment
reads that it was not included against unuseful reference to 
pattern stuff in a Postscript Language Level 1 build.
The reference now appears, and this is unfortunate.
We think that level 1 builds are not important in nowadays.
On necessity it may be improved in a separate change.

[src/gsptype1.c src/lib.mak src/gsptype2.c src/gxclist.c src/gxpcmap.c src/gsptype1.h src/gxdcolor.c src/gxclist.h src/gxpcolor.h src/gdevfax.c src/gxdcolor.h src/gxp1fill.c src/gxclrast.c src/gxclread.c src/gxclimag.c]

2008-04-21T11:58:27.801424Z Russell Lang

Change the name of a utility used to build Windows distribution so it doesn't 
get treated as a setup program by Windows Vista.
Change reference to obsolete doc/Public.htm to doc/COPYING.
Allow makefile to recognise a later patch of the Microsoft Visual Studio 2005 
make utility.

[src/winint.mak src/msvc32.mak]

2008-04-20T23:40:49.333141Z Alex Cherepanov

Ignore DSC comments in nested EPS files and data blocks. Thanks to
William Bader for the patch. Bug 689791.

RIFFERENCES:
None

[src/zdscpars.c]

2008-04-20T04:51:21.386273Z Alex Cherepanov

Skip bogus endobj operators inside the object stream.
Bug 689795, customer 870.

RIFFERENCES:
None

[lib/pdf_base.ps]

2008-04-19T18:26:31.622080Z Ray Johnston

Fix a problem when the default transfer function of the target printer
is not in global space. Seen with Konica Minolta (QMS PostScript).
Fixes 'invalidaccess' error caused by attempting to store a 'local'
currentcolortransfer into a 'global' array. NB: The 'cp2g' will then
convert the array to global which is needed to store into InitialExtGState.

[lib/opdfread.ps]

2008-04-19T18:18:34.484562Z Ray Johnston

Add diagnostic information for start of rendering (Outputpage start) so that
parsing as well as rendering time can be observed with -Z: (gs_debug[':'])

[src/zdevice.c]

2008-04-19T12:48:15.825215Z Alex Cherepanov

Fix PDF transmuting utilities. Remove '#' from the list of characters that
may occur in PDF names unescaped. Bug 689770.

[lib/pdfwrite.ps]

2008-04-19T04:49:20.031557Z Alex Cherepanov

Add recognition of abbreviated filter names to the PDF inflation utility.

[toolbin/pdfinflt.ps]

2008-04-19T03:43:21.791168Z Alex Cherepanov

Implement loading of OpenType CFF font as a CIDFont resource in PDF reader.
Bug 689763, customers 531, 850.

DETAILS:
PDF can use OpenType font with ordinary CFF data as a CIDFont. Such a font is
referenced by /CIDFontType2 and may have /CIDToGIDMap table. The following
changes have been done to support this usage.

- A flag that forces CIDFont generation was added to CFF font loader.
- When the flag is on, CFF font is converted to a Type 9 CIDFont.
- The FontSet resource is returned by the value from the font loader
  because it can be of either Font or CIDFont type,
- Since CIDMap has no effect on CIDFont Type 9, CIDToGIDMap is interpreted
  by PDF reader to modify GlyphDirectory to the same effect.
- Unused CIDMap is no longer generated for CIDFontType2 objects that are not
  TrueType CIDFont resources.

[lib/pdf_font.ps lib/gs_cff.ps lib/pdf_ops.ps]

2008-04-17T17:40:05.253185Z Ralph Giles

Use -O0 with the autoconf debug build instead of -O which seems to
hide some symbols.

[src/Makefile.in]

2008-04-17T17:31:57.458743Z Ralph Giles

Allow the ENABLE_CUSTOM_COLOR_CALLBACK preprocessor macro to be set
from the compiler command line.

[src/gsnamecl.h]

2008-04-15T04:47:24.255743Z Alex Cherepanov

Repair broken CFF CIDFont stream generated by "Exstream Dialogue Version
6.2.004m (DBCS)". Bug 689753, customer 353.

DETAILS:
1. The CFF stream has a single Private DICT block but refers to it twice.
New version caches the DICT block that correspond to the Private stream.

2. The operands of ROS operator are too small and correspond to some random
values from the standard string table. The patch doesn't attempt to find
the right values nut converts the fetched names to strings to avoid a
typecheck error during resource handling.

[lib/gs_cff.ps]

2008-04-14T22:57:22.422088Z Michael Vrhel

Fixed Colorspace enumeration order for debug printing.

[src/gscspace.h]

2008-04-10T23:43:36.714953Z Ralph Giles

Increase the static command and path buffers in echogs to deal with
longer build paths. Bug 689788.

[src/echogs.c]

2008-04-10T22:08:20.215716Z Ralph Giles

Use the correct GEN directory references. Bug 689788.

[src/jbig2.mak src/jasper.mak]

2008-04-10T07:38:46.911876Z Ken Sharp

Fix (PDF interpreter): Improve omission of .notdef glyphs.

Details:
Bug #689757 "Extra square characters rendering PDF file".

Improvement to change 8217, makes the test for .notdef more
specific at Igor's suggestion.

Now matches exactly the string ".notdef" or strings beginning
".notdef~GS~" in order to include any .notdef modified by the
PDF interpreter when it appears multiple times in an Encoding.

[src/zchar42.c]

2008-04-10T05:43:43.466565Z Igor Melichev

Enhancement (graphics) : Generalize prototypes of color serialization methods for big color data.

DETAILS :

This is a preparation for fixing 
the bug 689440 "PostScript file generates infinitely large temp file".

The old serialization methods assume that color data can fit into a small buffer.
Now we want to drop this constraint to allow to write big patterns into clist.
See comment in code for details.

This change is algorithmically equivalent.
This patch adds a new argument to color serialization methods.
For a while the new actual parameter is always 0,
and the (untrivial) methods check for it.

[src/gsptype1.c src/gxwts.c src/gxcht.c src/gxdcolor.c src/gxdcolor.h src/gxclrast.c src/gxclpath.c src/gxht.c]

2008-04-09T15:28:45.087056Z Ken Sharp

Fix (PDF interpreter): Optionally omit rendering of /.notdef glyphs
from TrueType fonts.

Details:
Bug #689757 "Extra square characters rendering PDF file".

When rendering glyphs in a TrueType font, and the glyph is not present
in the font, GS (correctly) draws the /.notdef glyph (or glyph ID 0)
instead. Under some conditions, however, Acrobat does not do so, but
does leave a 'gap' apparently corresponding to the width of the
original glyph (if a /Widths array is present), or the width of the
/.notdef glyph.

Exactly what causes Acrobat to do this is unclear. In the thread for
bug 687929 it was suggested that Acrobat was substituting a standard
font with a /.notdef defined as an empty glyph. However changing the
font name had no effect.

Using a pdfwrite-produced PDF file, if I remove the symbolic flag
from the font, and any direct reference to /.notdef in the Encoding
/Differences array, then Acrobat does not display the /.notdef 
glyph. However, starting with a Distiller-produced PDF file, and
either altering the font to symbolic, or adding a direct /.notdef
to the Encoding, or both, makes no difference, Acrobat still does
not render the /.notdef glyph.

The behaviour of Acrobat is probably technically incorrect, but
we need to attempt to render files similarly, if at all possible.
However, since the appearance of a /.notdef is usually indicative
of an error, this has been made optional.

We can't substitute a space glyph for the /.notdef as has been
suggested, because we can't guarantee the existence of a space glyph
(eg Arabic, which has no space) and can't guarantee that the space
makes no marks even if present.

However, we still want to apply the Width of the glyph, so that
spacing works out correctly, if we simply skip the /.notdef glyph
then words may collide, as in the case of the file for this bug.
This means we must run the glyph through the text routines, as the
width is applied there.

A new user parameter '/RenderTTNotdef' controls whether glyphs
named /.notdef in a TrueType font should be rendered or not. This
is also controlled by a systemdict parameter /RENDERTTNOTDEF. The
PDF interpreter will set the user parameter to the same value as
the systemdict parameter, allowing this to be controlled from the
GS command line.

The user parameter defaults to 'true' which renders TrueType /.notdef
glyphs (so that these are properly rendered in PostScript), the 
RENDERTTNOTDEF systemdict parameter defaults to 'false', which is
used by the PDF interpreter to set the user parameter, and therefore
disables rendering of TT /.notdef glyphs in PDF files.

[lib/pdf_main.ps src/icontext.c src/zchar42.c doc/Use.htm src/icstate.h src/zusparam.c lib/gs_init.ps]

2008-04-09T06:16:50.593621Z Alex Cherepanov

Avoid a spurious warning "CS/cs (setcolorspace) operand not a name".
Acept array values for /CS attribute. Bug 689738.

[lib/pdf_draw.ps]

2008-04-08T21:55:08.170308Z Ralph Giles

We no longer have any outstanding port requests. Bug 689745.

[doc/Projects.htm]

2008-04-06T21:42:34.379385Z Alex Cherepanov

Use operator .execn to keep the operand stack size and .pdfcount value
consistent during /BuildChar execution. Operator scn depends on the correct
value of .pdfcount. Bug 688796.

[lib/pdf_font.ps]

2008-04-06T07:53:33.800999Z Alex Cherepanov

Fix PDF empty stack count (pdfemptycount) in the tiling pattern. Operator
scn depends on the correct value of pdfemptycount. This bug was introduced
in the rev. 8308. Bug 689776.

[lib/pdf_draw.ps]

2008-04-04T11:30:17.034942Z Till Kamppeter

Added the new files of OpenPrinting Vector 1.0.

[contrib/opvp/opvp_0_2_0.h contrib/opvp/opvp.h]

2008-04-04T11:28:22.909246Z Till Kamppeter

Updated the OpenPrinting Vector driver interface ("opvp", "oprp") to version 1.0.

[contrib/opvp/opvp_media.def contrib/opvp/opvp_common.h contrib/opvp/gdevopvp.c]

2008-04-04T08:53:57.893326Z Ken Sharp

Fix (pdfwrite): Incorrect cmap aubtables written for 'non-symbolic' TrueType
 fonts, when PDF/A output is enabled.

Details:
Bug #689754 "Substituting .notdef for "german umlauts" when generating PDFA".

Normally when writing TrueType fonts GS emits 'symbolic' TrueType fonts, and
correctly outputs both a 1,0 and 3,0 cmap subtable (with appropriate character
offsets, see section 5.5.5 of recent PDF specs).

However, when PDF/A output is enabled, and the TT font to be output only
contains glyphs from the Adobe Latin set, and these are ordered in
accordance with that set, then we emit a 'non-symbolic' TT font. (For PDF/A
we do not emit 'symbolic' fonts, if the font is not 'non-symbolic' then we
write a CIDFont instead.)

However, when writing the non-symbolic font, we continued to write the same
cmap subtables. Acrobat does not use the 3,0 subtable with non-symbolic fonts,
and falls back to the Mac Roman (1,0) subtable instead. For many glyphs this
works correctly, but if the font is WinAnsi compliant, and the glyph is one
of those for which the character position differs between Mac and Windows,
then the glyph cannot be found by Acrobat.

By writing a 3,1 (Windows Unicode) cmap subtable we can ensure this does not
happen, as Acrobat will use this in preference to the 1,0 subtable.

(gdevpsf.h) Add a new TrueType writing control flag WRITE_TRUETYPE_UNICODE_CMAP
 This is used to control whether we write a 3,0 or 3,1 cmap subtable.

(gdevpdtb.c) When setting options for TrueType font writing, if we are
 writing PDF/A, then set the new flag so we get a 3,1 Unicode subtable.

(gdevpsft.c) Create new boilerplate for a type 6 Mac Roman subtable,
 followed by a type 4 Windows Unicode subtable. Create a new routine
 'write_unicode_cmap_6' which uses the new boilerplate to write this
 kind of subtable. In write_cmap, check if we have been asked to write a
 Unicode cmap subtable, and use the new routine if so. Do not bias the
 character codes if writing a Unicode table.

[src/gdevpdtb.c src/gdevpsft.c src/gdevpsf.h]

2008-04-04T08:39:33.625568Z Ken Sharp

Fix (pdfwrite): code tidy up.

Details:
Bug #689712 "macro expanded unnecessarily and undocumented .h file".

No functional changes, merely code reordering and tidying up.

(encs2c.ps) Modified to write the current license boilerplate and a
 small additional comment referring developers to this file should they
 wish to modify the generated files. Modify the output to gdevpdtv.c
 to #include gdevpdtv.h.

(gscedata.h)
(gscedata.c)
(gdevpdtv.c)
(gdevpdtv.h) Update with output from modified encs2c.ps

(gdevpdtf.h) Remove the 'gs_private_st_basic..' macro, thus preventing
  its unnecessary expansion and inclusion in several .c files.

(gdevpdtb.c) Move the macro 'gs_private_st_basic(st_pdf_base_font...'
  into this module, where it is actually used.

[toolbin/encs2c.ps src/gdevpdtb.c src/gscedata.h src/gdevpdtv.c src/gdevpdtf.h src/gdevpdtv.h src/gscedata.c]

2008-04-04T01:02:17.399302Z Ralph Giles

Add the rinkj driver to the default autoconf build under "ETS" devices.

It's not intended for production use, but this will help prevent
bit rot. Related to bug 689780.

[src/configure.ac]

2008-04-04T01:02:16.708266Z Ralph Giles

Minimal changes to gdevrinkj.c so that it compiles. As far as I can tell,
the version in source control has never worked.

[src/gdevrinkj.c]

2008-04-04T01:02:16.013247Z Ralph Giles

Include stdlib.h for malloc and free in the rinkj device. Bug 689780.

[src/rinkj/rinkj-byte-stream.c]

2008-04-01T00:28:17.665464Z Alex Cherepanov

Fix incorrect scanline length calculation in 1 bit/component images on pswrite
and epswrite devices. The bug was introduced in rev. 8233.
Bug 689771, customer 73.

[src/gdevps.c]

2008-03-31T23:53:28.505732Z Ralph Giles

Don't override the memory pointer set by the client when initializing 
the luratech jpx decoder.

[src/sjpx_luratech.c]

2008-03-31T23:08:41.231868Z Ralph Giles

Do not invoke the s_jpxd_template set_defaults method if it is null.
Fixes bug 689743, whose attachment segfaults with the luratech decoder
for which this method is not implemented.

[src/zfjpx.c]

2008-03-31T23:00:55.454967Z Igor Melichev

Fix (graphics) : Stroke width was wrong for short segments.

DETAILS :

Bug 689742 "Nearly missing dotted lines with anisotropic resolution".

Rather the bug title mentions anisotropic rendering, 
the problem appears with isotropic one as well.
The bottom of the problem is that the function width_is_thin
used the dash longitude to know its direction,
which gives an incorrect (zero) result 
for vertical segments of zero length.

That method became obsolete since revision 7706,
which intorduced the precise dash direction is a special data field.
Using it now for the right computation of the width.

[src/gxstroke.c]

2008-03-28T16:30:25.778081Z Igor Melichev

Fix (graphics) : rectfill applied a wrong path adjustment.

DETAILS :

Bug 689361 "Text has white stripes and missing parts at 100 dpi".

Ghostsctript applies path adjustment as an implementation of
"any part of pixel inside" filling rule. 
However it was wrong for rectfill :
the lower adjustment was too wide, causing extra pixels to paint
when the lower coordinate of the rectangle falls to pixel center.
Besides that, the X adjustment was applied to Y axis.

[src/gsdps1.c]

2008-03-28T06:36:49.751300Z Alex Cherepanov

Improve detection of transparency usage. Search for transparency featires in
the resource chain of annotattion appearance streams.
Bug 689764, customer 531.

[lib/pdf_main.ps]

2008-03-27T08:37:58.577822Z Ken Sharp

Fix (pdfwrite): endstream/endobj not always emitted PDF/A compliant.

Details:
Bug #689755 "Keywords endstream and endobj not always preceded by EOL when generating".

The PDF/A specification mandates that the endstream and endobj operators
are always preceded by an EOL character (in the spec, EOL = carriage return,
linefeed, or carriage return/linefeed pair). 

(gdevpdfb.c)
(gdevpdfu.c)
(gdevpdti.c) Ensure all endstream operators are preceded by a '\n' if we
 are producing PDF/A.
(gdevpdfo.c) Add '\n' to the end of array and dictionary objects in
 cos_array_write and cos_dict_write, if we are producing PDF/A. This
 ensures that endobj is always preceded by a EOL as other object types
 already conform.

[src/gdevpdfo.c src/gdevpdfb.c src/gdevpdfu.c src/gdevpdti.c]

2008-03-26T14:02:02.746186Z Ken Sharp

Fix (vector device): Operation order could result in failure to
apply clipping.

Details:
Bug #689469 "Incorrect clipping operation in vector output".

From the patch supplied by Osamu Mihara. In gdev_vector_stroke_path and
gdev_vector_fill_path, clipping was performed after a number of other
operations. If these failed, the clipping was not applied, apparently
causing problems for some devices (eg OpenPrinting Vector Printer).

(gdevvec.c) Execute the clip operation before other operations to ensure
 that the clip is applied, even if the later operations fail.

[src/gdevvec.c]

2008-03-25T05:26:24.097873Z Alex Cherepanov

PDF font descriptor may be shared between CID and simple fonts. We cache the
font object in the font descriptor dictionary. To prevent collision, use
different keys to store font and CIDFont objects. Improve the fix for the
bug 689301.

[lib/pdf_font.ps]

2008-03-24T20:02:07.895385Z Igor Melichev

Fix (clist writer) : Smaller tiles for strip_copy_rop (continued).

DETAILS :

The old code sometimes tried to write a degenerate rectangles to clist.
It happened since revision 8581 due to inaccurate coding.
Should fix ghostpcl regression happened on March 23, 2008 . 

[src/gxclimag.c src/gxclrect.c]

2008-03-24T04:17:47.859439Z Alex Cherepanov

Equivalent transformation of the PDF font handler to improve readability
in preparation for the PDF font overhaul.

[lib/pdf_font.ps]

2008-03-23T07:50:43.652322Z Igor Melichev

Fix (vector device): %pipe% IO device being opened as seekable (continued).

DETAILS :

Revision 8602 caused an MSVC warning, which is now fixed.

[src/gdevvec.c]

2008-03-22T21:55:00.988313Z Igor Melichev

Fix (clist writer) : Smaller tiles for strip_copy_rop.

DETAILS :

Bug 689588 "Unexpected InternalOverflow in ReadImage".

When strip_copy_rop recieves a big tile, it is being subdivided into line tiles
to fit into the clist buffer. However the line tile can be too big as well.
The new code narrows the line tile with the size of the rectangle to be painted.
For details see comments added into gxclrect.c .

Minor change (gdevddrw.c, gdevmr8n.c) Added visual trace commands for easier debugging.

[src/lib.mak src/gdevddrw.c src/gdevmr8n.c src/gxclrect.c]

2008-03-21T05:07:53.304009Z Igor Melichev

Fix (Windows application) : Provide a better visual trace support interface for use with other interpreters.

DETAILS :

This minor change doesn't change any behavior.

[src/dwtrace.h src/dwtrace.c]

2008-03-20T10:20:17.499008Z Ken Sharp

Fix (pdfwrite): pdfwrite embedded TrueType/Type 42 fonts which
specifically forbid embedding.

Details:
Bug #689693 "GS embeds licensed fonts when generating PDF".

For Type 42 fonts, in order to prevent embedding fonts with license
restrictions we need to retrieve and honour the /FSType key if present
in the FontInfo dictionary of the font.

We also need to check the embedding status of TrueType fonts read from disk
in a similar fashion to Type 42 fonts downloaded in the course of the job.

Finally, when writing a TrueType font to a PDF file, we need to preserve any
existing embedding rights by setting fstype appropriately in the OS/2 table.
It is possible to permit font embedding even when the embedding rights
are non zero and we should preserve these.

(gxfont.h) Add a new parameter, EmbeddingRights, and a new flag
	     FONT_INFO_EMBEDDING_RIGHTS, to the gs_font_info structure.

(zfont.c) In zfont_info, if we request the EmbeddingRights, and the font has
          a FontInfo dictionary, retrieve the FSType if present.

(gdevdtf.c) When determining whether a font may be embedded, retrieve the
          font info, check the 'members' structure member after retrieving font info
          to see if the EmbeddingRights member has been updated. Assume embedding
          allowed if the member has not been updated.

(gxfont42.h) Add a new member os2_offset to the gs_type42_data structure, to allow
           us to read from the OS/2 table later.

(gstype42.c) In gs_type42_font_init, when reading the TrueType Table directory, store
           the offset to the OS/2 table.

           In gs_truetype_font_info, if the caller has requested the embedding rights
           and they haven't already been retrieved from an FSType entry in the
           FontInfo dictionary, get the OS/2 table and pull the fstype value from there.

(gdevpsft.c) When writing a TrueType font, and we don't have an OS/2 table to
             copy (appears to always be the case), check to see if we have any
             embedding rights information in the original font, and preserve it if so
             by setting the fstype entry in the OS/2 table.

[src/gxfont42.h src/zfont.c src/gdevpdtt.c src/gstype42.c src/gdevpsft.c src/gdevpdtf.c src/gxfont.h]

2008-03-19T10:09:21.671968Z Ken Sharp

Fix (vector device): %pipe% IO device being opened as seekable.

Details:
Bug #689428 "‘gs -sOutputFile=%pipe%cat’ doesn't work".

Based on the patch supplied by Dan Villiom Podlaski Christiansen. 

(gsdevice.c) in gx_device_open_output_file, if the parsed out iodevice
 is '%pipe%', then open the output 'file' non-seekable.

(gdevvec.c) Not strictly related, but gdev_vector_open_file_options could
 use 'fclose' on a stream opened with gx_device_open_output_file. Altered
 to use gx_device_close_output_file instead.

[src/gdevvec.c src/gsdevice.c]

2008-03-16T22:25:13.694561Z Alex Cherepanov

Handle TT fonts that have short post table with less than 256 glyphs.
Pad the generated Encoding vector with /.notdef glyphs.
Bug 689515, customer 700.

[lib/gs_ttf.ps]

2008-03-15T23:59:48.788786Z Alex Cherepanov

Work around a bug in the PS interpeter by not using nulldevice in the PDF
interpreter where it isn't really needed. Bug 689751.

DETAILS:
PS interpreter seems to fall into an infinite loop running charpath when
the font is composite and the curent device is nulldevice.

[lib/pdf_ops.ps]

2008-03-14T05:40:11.023910Z Marcos H. Woehrmann

Fixed duplexing for ljet3d and ljet4d devices; thanks to karsten@sengebusch.de for the changes.

Fixes bug 687531.

No regressions expected, since neither device is tested by the regression suite.

[src/gdevdjet.c src/gdevdljm.c]

2008-03-13T07:18:46.618081Z Igor Melichev

Fix (graphics) : A bug in the pattern color serialization.

DETAILS :

Patch from Alex mentioned in the bug 689731 and unrelated to that bug.

[src/gsptype1.c]

2008-03-12T22:32:03.336468Z Igor Melichev

Fix (graphics) : Optimize filling a path with a shading color (continuewd 3).

DETAILS :

Bug 689748 "gs segfaults".

An unitialized variable since rev 8510.
We had no test files for that branch, now got one.

[src/gxfill.c]

2008-03-11T18:32:33.104151Z Ray Johnston

Fix MSVC makefile for the 'Big console mode EXE' case when COMPILE_INITS=1. Also
minor cleanup to gs.mak 'clean' target and redundant dependency in ugcclib.mak.
MSVC build problem noted by customer #531.

[src/ugcclib.mak src/gs.mak src/msvc32.mak]

2008-03-10T02:18:38.654568Z Alex Cherepanov

When the font has no /FontBBox but provides character width through /Metrics
dictionary, use them instead of the calculated width. The old code did so only
when both the width and side bearings were defined. Bug 689740, customer 353.

[src/zchar1.c]

2008-03-09T13:34:51.534239Z Igor Melichev

Fix (transparency) : Transparency compositor device recreation was incorrect.

DETAILS :

This problem was apparently detected when working on another problem.
The pdf14_recreate_clist_device code was wrong.
Regularly we never call that function, because
PDF interpreter creates the transparency compositor device once per page.
Nevertheless we store the right code since it is debugged.

[src/gdevp14.c]

2008-03-07T13:39:35.783627Z Igor Melichev

Fix (bbox device) : box_fill_path needs as path for shfill.

DETAILS :

Since revision 8017 the function gs_shfill includes a branch for 
a faster handling of the Postscript operator shfill,
which does not provide a path to fill. It uses the clipping path instead.
The bbox device appears to be incompatible with that optimization.
This patch adds a special branch to bbox device to handle a shading fill
with no path.

Please note that since revision 8017 the call 
dev_proc(dev, pattern_manage)(dev, gs_no_id, NULL, pattern_manage__shfill_doesnt_need_path) 
must return a proper information about the device's fill_path method. 
In most case it is doe with the default implementation gx_default_pattern_manage, 
but the bbox device ises gx_forward_pattern_manage instead, 
which appears wrong for bbox_fill_path. We decided to add an optomized branch 
rather than apply the slow general method.

[src/gdevbbox.c]

2008-03-07T09:42:38.021120Z Ralph Giles

Correct a default return value. Follow on to Bug 689569.

Also rename a variable to match the jbig2dec version of the same call.

[src/sjbig2_luratech.c]

2008-03-05T23:35:50.165171Z Igor Melichev

Fix (clist) : Some transparency compositor commands don't need CTM.

DETAILS :

The old code writes CTM with each transparency compositor command.
Actually it is only needed with begin_transparency_grup and 
begin_transparency_mask. So we can skip CTM with
when writing other commands to shorten the clist file.

Note clist reader now sets zero CTM when reading transparency
compositor command with no CTM. We believe it is useful because
subsequent graphics objects need to restore CTM of a containing group.

See also comments added in code.

[src/gdevdbit.c src/gdevp14.c]

2008-03-04T20:56:48.308882Z Igor Melichev

Fix (clist) : Crop transparency commands while clist writing, step 4.

DETAILS :

This provides a right group bounding box for transparency masks.
Instead that the old code used the container's group bbox,
which may be much bigger causing a performance leak.

[src/gdevp14.c]

2008-03-03T20:16:06.744980Z Igor Melichev

Fix (images) : Revert an unintentional change to siscale.c .

DETAILS :

When doing the revisoon 8530, a macro was expanded in siscale.c 
for a debug purpose. This change was committed by error,
reverting it now.

[src/siscale.c]

2008-03-03T16:01:12.306842Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 3.

DETAILS :

This really crops transparency compositor commands with bands 
that are covered by the transparency bbox.

Actually the statement above has one exception. When a transparency bbox
covers more that 2/3 of all bands, we still write the commands to 
the "all bands" list for a shorter clist file. We noticed that 
the clist playback time strongly depends on the file size.

1. The new method gs_composite_type_procs_t::get_cropping
replies what bands are covered by the compositor. 
When it gives a non-trivial result, clist_create_compositor
writes the compositor command to those bands,
which are covered with the cropping (Exception :
if too many bands are covered, it writes the command to
the "for all bands" list).

2. Since some bands skip some compositor commands,
while clist reading the association of masks to groups 
becomes more complex. Before this patch each group
was associates with the mask, which was created immediately
before it at same transparency stack level. 
After this patch some groups may be skipped, so that
clist reader may recieve extra masks, because masks are
still use the container's group bbox. For skipping such extra masks
we provide a numeric identifier of a mask, which is named mask_id.
Here is how it works :

2.1. All masks recieve serial numbers (mask_id) while clist writing.
2.2. Each mask command is written with its mask_id.
2.3. Each group command is writen with mask_id, 
     which belongs to the mask that is assocuated with the group.
2.4. While clist playback pdf14_pop_transparency_group checks whether
     the mask amd the group have same mask_id. If not, the mask is extra
     and it must be droped.
2.5. Note the old assiciation logic is still working,
     and it may skip some masks as well.
2.6. If the rasterization happens with no clist, mask_id is always zero.
     In this case the old logics is only working.
     Maybe we'll provide non-zero values someday.
2.7. See comments in code for more details.

3. The method gs_composite_type_procs_t::clist_compositor_write_update
is now some generalized. Before this patch it only updates the clist writer state
with the compositor features. With this patch it also adds 
some information from the clist writer state to the compositor parameters.
Particularly it provides mask_id to the compositor command.
Thus now it updates *both* clist writer and the compositor parameters
to comply each another. For a while, in order to simplify the patch,
the compositor argument is still 'const'. Will need to fix someday.

4. Now we need to save mask_id in a stack that reflects the
transparency nesting. The cropping stack, which was introduced
in the last patch, now works for that. To provide that
we add mask_id to clist_writer_cropping_buffer_s,
and use clist_writer_push_no_cropping to save amsk_id
over inner groups. 

5. state_update(ctm) in c_pdf14trans_clist_write_update is replaced
with code, which updates CTM from the transparency compositor command.
The old code is not fully correct, because it takes CTM from the imager state,
rather we havn't got prcatical cases when it gives a wrong result.

6. drop_compositor_queue now calls adjust_ctm for compositors being dropped.
The old code is incorrect because it can miss a CTM update when 
a compositor sets some CTM and later a non-compositor object
sets same CTM. In this case the clist writer skips the second CTM on writing,
and skipping the first in the clist reader will miss the CTM completely.
We haven't got practical cases for that.

7. Improved some debug printing.

[src/gxclist.c src/gdevdflt.c src/gdevp14.h src/gstrans.c src/gsalphac.c src/gxclist.h src/gxcomp.h src/gsovrc.c src/gstparam.h src/gstrans.h src/gxclrast.c src/gdevp14.c src/gxclpath.c src/gxclimag.c]

2008-03-03T11:57:42.307384Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 2.

DETAILS :

This is a preparation to the next step.

The patch introduces a transparency stack for clist writer,
which saves cropping when entering a transparency group,
and restores when exiting it. The cropping is being narrowed
with transparency group's bounding box.

[src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevp14.c src/gxclpath.c]

2008-03-03T11:42:33.253339Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 1b.

DETAILS :

Removing non-ascii chars that was not detected by MSVC.

[src/gdevp14.c]

2008-03-03T10:13:01.196997Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 1a.

DETAILS :

The last commitment is incomplete, now fixing.

[src/gxclist.h]

2008-03-03T10:11:27.428498Z Igor Melichev

Fix (clist) : Crop transparencsy commands while clist writing, step 1.

DETAILS :

This is a preparation to the next step.
In general, the behavior doesn't change, 
but implementation details differ.

The old code maitains a flag cropping_by_y in the clist writer,
which triggers a cropping of objects by the Y axis.
The old code isn't perfect, because 
it first crops by [cdev->cropping_min, cdev->cropping_max],
and then by [0, cdev->height].

In the new code we unite both croppings into a single one.
For doing that we remove the flag, and provide 
the right interval [cdev->cropping_min, cdev->cropping_max]
in any case. Initially it is [0, cdev->height},
and it is narrowed when a shading bbox is set.
To restore the initial cropping after the shading
is complete, we maintain 2 new fields 
save_croping_min and save_cropping_max.

So now the cropping mechanizm does not depend
on shading, and clients may set a croping when they need. 
We'll use this feature in the next patch.

[src/gxclist.c src/gdevp14.c src/gxclpath.c src/gxclimag.c src/gxclrect.c]

2008-03-03T04:03:51.374416Z Marcos H. Woehrmann


Fix for compression always falling back to no compression in
pclxl_write_image_data(), bug 689732.

Details:

After much tracing of srle.c and gdevpx.c I believe this bug is in
the portion of s_RLE_process() that looks ahead in order to be able
to optimally compress the data.  Rather than attempting to modify the
function and probably breaking something else I'm taking the 99% solution
and just calling s_RLE_process with last set to true instead of false.
This disables the look ahead feature, presumably making the compression
very slightly suboptimal but at least now it works.

This change results in pxl files that are significantly smaller than
before (i.e. the test file associated with bug 689595 is reduced in size
from 1.1 megs to 387k).

[src/gdevpx.c]

2008-03-03T02:57:05.472235Z Ray Johnston

Fix properties

[src/psromfs.mak src/gsromfs0.c]

2008-03-03T01:17:09.063617Z Marcos H. Woehrmann

Fall back to using gx_default_copy_mono() in pclxl_copy_mono() if data_x!=0.

Details:

Fixes bug 688992.  Will increase the size of the generated PXL file in some cases; a better solution would be to modify the pclxl_write_image_data()function to handle data_x!=0.

Expected regressions:

None, pxlmono isn't covered in the regression suite.

[src/gdevpx.c]

2008-03-01T10:18:20.389016Z Ken Sharp

Fix (pdfwrite): problems with type 3 fonts executing 'show'.

Details:
Bug #689685 "OpenType font incorrectly converted to PDF".

The File is from Quark XPress and contains a type 3 font which
executes a 'show' and a 'charpath stroke' with a glyph from a type
1 font. Further, it executes a 'charpath' on this type 3 glyph.

Pdfwrite was unaware, when processing the 'show' that this was
inside a charpath operation, and emitted the shown glyph.

Modified pdfwrtite to be aware that a charpath is in operation, and
to have the graphics library handle any show operations.

(gdevpdfx.h) Add a new flag 'type3charpath' to the gx_device_pdf
  structure.

(gdevpdfb.h) Add an initialiser for the type3charpath flag (also for
  the last_charpath_op which was missed in that change)

(gdevpdtt.c) In gdev_pdf_text_begin, if type3charpath is true, go
straight to the default text processing. Otherwise, check to see
if this is a type 3 font, and the operation is 'charpath'. If so
then create a pdfwrite text enumerator to process the text.

In pdf_text_process, if we have a type 3 font, the operation is charpath
and type3charpath is false, set it to true and go straight to the 
default text handler. When the enumerator is completed, if type3charpath
is true, set it to false.

In pdf_text_process, while handling text, do not start accumulating a
charparoc if type3charpath is set.

Finally, in pdf_text_set_cache, if type3charpath is set, simply execute
the standard cache routine.

[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdfb.h src/gdevpdti.c]

2008-03-01T10:15:02.847745Z Ken Sharp

Fix (pdfwrite): problems with type 3 fonts executing 'show'.

Details:
Bug #689687 "Regression: pdfwrite DEVICE produces bad text".

The File is from Quark XPress and contains a type 3 font which
executes a 'show' and a 'charpath stroke' with a glyph from a type
1 font.

The code for revision 8265 converts these into a '2 Tr' in the
PDF file. However, I missed the case of this occuring inside a font,
resulting in much too large a strokewidth being set. This code takes
account of the font matrix.

NB there is still a potential problem. There is no way currently to tell
the difference between a charproc which explicitly sets a stroke width
and one which inherits it from the prevailing graphics state. Currently
we will write a font which always emits the stroke width at the time
the font was first used. There is no simple way to address this, we
could set the stroke width to an invalid value during the course of a type
3 glyph, and check it before emitting the stroke, but this is dangerous.

However, this seems unlikely to be a real problem in practice, since altering
the stroke width outside the font might result in unpredictable widths
dependent on the point size. I have chosen not to open a bug for the
possible condition at this time.

(gdevpdfd.c) gdev_pdf_stroke_path, if we are converting to a PDF text
rendering mode, and are inside a type 3 font glyph description, take the
font matrix into account when calculating the strokewidth.

[src/gdevpdfd.c]

2008-03-01T01:42:04.749356Z Ralph Giles

Bump the revision after the 8.62 release.

[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]

Version 8.62 (2008-02-29)

This version is the next in our line of scheduled semi-annual releases.

There were approximately 55 bugs fixed since version 8.61. Some fixes and improvements of note were:

COMPILE_INITS=1 was broken in 8.61 and now works as expected.

Fonts are now distributed in the Resource/Font directory and will be included in the executable if COMPILE_INITS=1

The tiffsep device was fixed for using more than 8 colorants.

Shadings, overprinting and transparency were optimized and are substantially faster than in 8.61, particularly for large format or high resolution rendering when using the 'clist' banding mode.

Changes were made to prevent near unbounded growth in memory usage and corresponding performance problems on a few test cases.

The 'pdfwrite' device was improved to fix some compatibility issues with PDF/A and to improve some font embedding and other issues.

The 'ht_ccsto.ps' Stochastic Threshold array was completely changed to be more useful. The values in the threshold array were inverted, so the number of 'light' colors was limited and using it generally caused prints that were too dark.

The 'runpdfbegin', 'dopdfpages' and 'runpdfend' PostScript pseudo-operators that were inadvertently removed in 8.61 were restored. This also restored the functionality of toolbin/pdf_info.ps to display PDF creator stats, fonts used and page sizes.

The halftone tile cache sizes and cache effectiveness were improved to help the performance when tiling with large cells or threshold arrays.

The following bugs were open at the time of release:

465936, 578865, 626295, 686747, 686853, 687011, 687146, 687257, 687271, 687280, 687295, 687327, 687514, 687520, 687531, 687608, 687650, 687674, 687677, 687695, 687697, 687702, 687721, 687728, 687729, 687796, 687805, 687814, 687850, 687903, 687904, 687957, 687974, 688007, 688022, 688026, 688032, 688036, 688042, 688058, 688061, 688064, 688066, 688075, 688081, 688095, 688129, 688130, 688151, 688152, 688159, 688166, 688184, 688187, 688207, 688215, 688227, 688239, 688269, 688280, 688288, 688317, 688318, 688320, 688333, 688342, 688358, 688359, 688360, 688361, 688363, 688372, 688378, 688386, 688387, 688389, 688395, 688413, 688427, 688428, 688436, 688437, 688440, 688446, 688475, 688483, 688500, 688515, 688517, 688528, 688533, 688539, 688540, 688542, 688543, 688557, 688580, 688581, 688588, 688601, 688604, 688605, 688610, 688615, 688616, 688619, 688627, 688636, 688638, 688646, 688651, 688653, 688655, 688673, 688674, 688696, 688699, 688709, 688710, 688714, 688717, 688728, 688736, 688739, 688757, 688770, 688774, 688778, 688796, 688797, 688807, 688811, 688813, 688815, 688829, 688843, 688846, 688876, 688908, 688918, 688919, 688926, 688928, 688933, 688942, 688943, 688952, 688958, 688969, 688976, 688986, 688990, 688992, 688999, 689003, 689011, 689013, 689014, 689022, 689025, 689028, 689031, 689040, 689044, 689046, 689048, 689057, 689058, 689080, 689081, 689090, 689093, 689094, 689098, 689111, 689116, 689128, 689129, 689130, 689133, 689136, 689137, 689138, 689145, 689146, 689148, 689150, 689153, 689154, 689159, 689161, 689164, 689172, 689174, 689181, 689184, 689195, 689198, 689206, 689209, 689210, 689222, 689224, 689230, 689236, 689246, 689247, 689248, 689252, 689253, 689264, 689279, 689280, 689281, 689283, 689289, 689290, 689291, 689304, 689305, 689308, 689313, 689331, 689335, 689340, 689341, 689343, 689358, 689361, 689363, 689364, 689367, 689370, 689373, 689376, 689378, 689396, 689402, 689412, 689418, 689419, 689422, 689428, 689431, 689438, 689439, 689440, 689444, 689445, 689448, 689450, 689451, 689456, 689460, 689462, 689463, 689469, 689471, 689476, 689484, 689487, 689488, 689489, 689490, 689498, 689499, 689500, 689502, 689507, 689509, 689510, 689512, 689514, 689515, 689516, 689518, 689521, 689522, 689532, 689534, 689535, 689538, 689542, 689543, 689546, 689547, 689549, 689552, 689554, 689557, 689559, 689560, 689561, 689563, 689566, 689567, 689573, 689574, 689579, 689581, 689583, 689585, 689588, 689591, 689592, 689595, 689598, 689601, 689606, 689607, 689609, 689610, 689618, 689621, 689623, 689627, 689628, 689632, 689636, 689637, 689641, 689649, 689652, 689653, 689654, 689657, 689658, 689659, 689663, 689666, 689668, 689669, 689673, 689674, 689675, 689676, 689677, 689681, 689682, 689684, 689685, 689687, 689689, 689690, 689691, 689692, 689693, 689697, 689698, 689699, 689702, 689704, 689705, 689709, 689710, 689711, 689712, 689713, 689715, 689716, 689721, 689722, 689723, 689725, 689727.

Incompatible changes

Not strictly a compatibility issue, but the default URW (GPL) fonts are now distributed in the Resource/Font/ path which can increase the number of file handles open for PostScript that opens all of the resources. Also the size of the %rom% rom file system within the executable when using COMPILE_INITS=1 is larger by the amount needed for the fonts.

Also not strictly incompatible, but some alternate fixed-point code was stripped out, so FPU_TYPE and other FPU related makefile macros are gone or don't cause any difference in the code generated. Also the 'USE_ASM' macro was removed, since we expect modern compilers to do sufficient optimization.

Some old (deprecated) "helper" scripts were removed: gsindent, gssubst, many2pdf.tcl, and pre.

The unused 'cmap' (special color mapping) and 'ropc' devices were removed from the distribution.

The 'ht_ccsto.ps' Stochastic Threshold array was completely changed to be more useful. The values in the threshold array were inverted, so the number of 'light' colors was limited and using it generally caused prints that were too dark. This is an improvement, but incompatible in that anyone using it previously would see much different grays/ colors.

The SYSTEM_CONSTANTS_ARE_WRITABLE compile time define was removed as was the "EXTEND_NAMES" makefile macro (still accessible using a compiler flag define).

Changelog

2008-02-29T23:59:31.476236Z Ray Johnston

Fix typo that caused unbalanced 'q' 'Q' operators in PDF's (caused by
rev 8501). Bug 689728.

[src/gdevpdfi.c]

2008-02-29T22:27:59.143965Z Ralph Giles

Release notes for the 8.62 release. Thanks to Ray Johnston for compiling these.

[doc/News.htm]

2008-02-29T20:49:04.253927Z Ralph Giles

Remove some C++ style comments.

[src/siscale.c src/gdevijs.c]

2008-02-29T20:49:02.503198Z Ralph Giles

Add some new files to the documentation tree.

[doc/Develop.htm]

2008-02-29T20:47:52.884152Z Ralph Giles

Update product name, copyright and release dates.

[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Deprecated.htm doc/Source.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm src/version.mak man/gs.1 src/dwsetup.rc man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Develop.htm doc/Ps2pdf.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 src/winint.mak doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Testing.htm doc/Unix-lpr.htm doc/Ps-style.htm doc/C-style.htm doc/History1.htm doc/History2.htm man/gslp.1 doc/History3.htm man/wftopfa.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 man/ps2ps.1 doc/History5.htm doc/History6.htm]

2008-02-29T18:53:14.162723Z Ray Johnston

Add default FontResourceDir needed when COMPILE_INITS=1 is used so
that the fonts from Resource/Font in the distribution directory that
are built into %rom%Resource/Font/ will be found.

[src/iccinit1.c]

2008-02-29T08:13:08.227205Z Ray Johnston

Fix COMPILE_INITS=1. Note the next commit to the PCL tree will combine
with this one, but we can't commit to both trees atomically.

DETAILS:

Tested with Windows and linux. Needs OS/2 testing. Other build systems
may have bit rotted, and I don't hav them to test. Some of the changes
here are to allow working with a PCL or XPS only build where the PS
interpreter is not used/needed.

I noticed that the default systemparam value for FontResourceDir isn't
getting et to %rom$Resource/Font/ as it should, but GenericResourceDir
_is_ being initialized correctly to %rom%Resource/ which is _NOT_
fixed by this commit.

[src/openvms.mak src/psromfs.mak src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/unixlink.mak src/os2.mak src/lib.mak src/bcwin32.mak src/ugcclib.mak src/gsromfs0.c src/Makefile.in src/msvc32.mak src/unix-gcc.mak src/unix-aux.mak src/macos-mcp.mak src/watclib.mak]

2008-02-28T14:56:32.629339Z Alex Cherepanov

Attempt to repair invalid embedded TT fonts without cmap table.
Bug 689707, customer 531.

DETAILS:
1. Use identity cmap if it is missing from the TT file. Set an unknown
   language ID to activate post table processing.

2. To avoid false rejection during the validation of post table run the
   validator only on the TT files generated by an utility that is known
   to write broken post tables.

[lib/gs_ttf.ps]

2008-02-27T19:36:18.181168Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 4a.

DETAILS :

Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"

The last patch is incomplete due to a commitment failure.
The patch completely removes .inittransparencymask because it is noop.

With the test case of the bug 689708 at 144 dpi 
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.

With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.

The speed factor depends on resolution.

[lib/pdf_draw.ps lib/pdf_ops.ps]

2008-02-27T19:22:57.279403Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 4.

DETAILS :

Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"

The patch completely removes .inittransparencymask because it is noop.

With the test case of the bug 689708 at 144 dpi 
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.

With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.

The speed factor depends on resolution.

[src/gstrans.c src/ztrans.c src/gdevpdft.c src/gstrans.h src/gdevp14.c]

2008-02-27T18:39:31.036262Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 3.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
The last patch appears incomplete, now fixing.

[src/gxistate.h]

2008-02-27T00:47:37.036819Z Marcos H. Woehrmann

Added setting of fill_rule in pclxl_endpath().

DETAILS:

The pclxl_endpath() function checked if a clip_rule needed to be set but not a fill_rule.

This is a fix for bug 689665.


[src/gdevpx.c]

2008-02-27T00:08:22.308407Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 2.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
The last patch appears incomplete due to a missed dependence in makefile.
Now we see the mask pointer was used but it was always NULL.

[src/lib.mak src/gxistate.h src/gsistate.c src/gdevpdfg.c]

2008-02-26T23:14:40.608304Z Igor Melichev

Fix (clist interpreter) : Improve transparency performance, step 1.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
It completely removes the mask pointer field from gs_transparency_source_s.
No idea what it was defined for. Nobody uses it.

[src/gstrans.c src/gstrans.h]

2008-02-26T07:12:49.848447Z Alex Cherepanov

Change the decimal separator in generated strings to '.' effectively selecting
a C numeric locale without calling any locale functions. Bug 689624.

DETAILS:
For most clients Ghostscript is a library. We cannot set C locale before
sprintf() and reset it afterwards because this may affect other threads.

[src/spprint.c src/zdouble.c]

2008-02-25T16:10:43.614503Z Alex Cherepanov

Remove a space betveen -f and a file name to prevent parsing of the file name
that starts with '-' as an options. Bug 689682.

[lib/ps2pdfxx.bat]

2008-02-25T05:48:45.219666Z Alex Cherepanov

Add a check for null value. Since rev. 6956 following Adobe implementation
Ghostscript doesn't accept null as a key in dictionary look-up. Bug 689696.

[lib/pdf2dsc.ps]

2008-02-25T04:20:47.177440Z Alex Cherepanov

When the values of the color key mask exceed the valid range clip them to the
nearest valid values and continue. Don't discard the mask as we did before.
Bug 689717, customer 580.

[lib/pdf_draw.ps]

2008-02-24T09:21:54.361457Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 8).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689686 "siscale.c contrast degradation"

Accurately compute pixel center coordinates when applying the interpolation filter.
See comment in code. When scale=1, the offsets mutually eliminate.
Also the old code missed a bit when computing center_denom/2 in integers.

[src/siscale.c]

2008-02-24T03:37:03.979896Z Igor Melichev

Fix (images) : Improve coordinate precision when scaling an image (continued 7).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689720 "Hang with -dDOINTERPOLATE caused by rev 8530 changes"

An expression for HeightOut missed 'abs' with recent patch.
Thanks to Ray for pointing it out.

[src/gxiscale.c]

2008-02-24T02:58:34.824461Z Alex Cherepanov

Fix link errors in the file descriptor-based implementation of file streams.
Move function used by both fd and stdio implementations to a separate file
and compile it in both versions. Bug 688918.

DETAILS:
Although the patch fixes link errors, pdfwrite and other devices,
use stdio functions directly and generate incorrect documents in fd version.

[src/lib.mak src/sfxstd