Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 510a02b074032210e5041a865e266c7f > files > 8

ghostscript-doc-8.61-60mdv2008.1.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Ghostscript change history (detailed)</title></title>
<!-- generated by split_changelog.py from the output of cvs2cl.pl -->
<!-- $Id: Details.htm 8397 2007-11-21 20:07:08Z giles $ -->
<link rel=stylesheet type="text/css" href="gs.css">
</head>
<body>

<p><strong><a name="2007-11-21T194440.574652Z"></a>
2007-11-21T19:44:40.574652Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert the change to using an environment variable for the MSVC LIBPATH. 

Details:

This wasn't effective in addressing the problem and could cause 
additional trouble if the environment isn't configured. The changes
in r8394 should properly address the issue of quote interpretation
with MSVC6.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-11-21T061053.144641Z"></a>
2007-11-21T06:10:53.144641Z Henry Stiles</strong></p>
<blockquote>
<pre>
Check that a device halftone exists before writing it.  Fixes
segmentation fault in xps.  No differences expected.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-21T055723.672501Z"></a>
2007-11-21T05:57:23.672501Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix compiler flag conflict for non-debug build (seen when switching
PCL6 build to default to non-debug default). Changes /ZI to /Zi.
</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2007-11-20T183658.009554Z"></a>
2007-11-20T18:36:58.009554Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix broken MSVC 6 build issue caused by change in src/msvccmd.mak that puts
a LIBPATH into the link command line. MSVC linker can't handle spaces in the
LIBPATH even if within " ". We use an environment variable set by Microsoft
MSVC 6 'vcvars32.bat' instead. This can be manually set if needed.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-11-20T114222.623309Z"></a>
2007-11-20T11:42:22.623309Z Ken Sharp</strong></p>
<blockquote>
<pre>
Batch file to create MSVC solution and projects.

Usage:
msvcxml gs obj\ld.tr > ghostscript.sln

This is the first attempt, and very poor.
</pre>
<p>[toolbin/msvcxml.bat]</p>
</blockquote>

<p><strong><a name="2007-11-19T235746.396323Z"></a>
2007-11-19T23:57:46.396323Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the product name for the release.
</pre>
<p>[src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2007-11-19T235628.975783Z"></a>
2007-11-19T23:56:28.975783Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs for release.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2007-11-19T203607.538187Z"></a>
2007-11-19T20:36:07.538187Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Wrong background color of a soft mask group.

DETAILS :

Bug 689531 "Regression: PDF file has undesired extra gray object.".

The old code used the 0th component of the background color
instead its gray equivalent.  The bug was introduced when 
working on bug 687176.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-19T202407.302766Z"></a>
2007-11-19T20:24:07.302766Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update documentation timestamps for 8.61.
</pre>
<p>[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/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/Testing.htm 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]</p>
</blockquote>

<p><strong><a name="2007-11-19T202339.904096Z"></a>
2007-11-19T20:23:39.904096Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the verification checks for PVERSION and JVERSION, which we no 
longer use.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2007-11-19T201545.795513Z"></a>
2007-11-19T20:15:45.795513Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add new files to the documentation.
</pre>
<p>[doc/Develop.htm doc/Psfiles.htm]</p>
</blockquote>

<p><strong><a name="2007-11-19T201543.672566Z"></a>
2007-11-19T20:15:43.672566Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release notes and date for 8.61.
</pre>
<p>[doc/News.htm src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-11-18T225036.855233Z"></a>
2007-11-18T22:50:36.855233Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Normalize weigts in the Mitchell filter and use proper rounding to ensure
that the constant value is not changed by the filter.
Bug 689556, customer 581.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2007-11-18T164841.008511Z"></a>
2007-11-18T16:48:41.008511Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Transparency caused a wrong color depth.

DETAILS :

Bug 689520 Regression: 1bpp and grayscale output broken.

The clist interpreter clist_playback_band maintains 2 devices :
the clist reader and target. The clist reader device stores
private interpreter's data. However using a device structure
for this purpose is pretty confusing, because the target 
device may have same device fields with different values.
Particularly while processing a transparency, the target device
chage to a transparency buffer device, 
which may have a different number of color components.

The problem happens due to the clist interpreter used
a wrong device to obtain the number of color components.
This patch changes the code with taking color components 
from the target device. 

Now we don't try to analyze all other access to the clist device -
it should be a subject of a separate job. 
Therefore the code may need further improvements.
The right way would be to define a special structure for the clist interpreter, 
and to drop the clist reader device at all.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-11-18T093055.737640Z"></a>
2007-11-18T09:30:55.737640Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove incorrect and unnecessary gtk+ separation code. Fixes bug 689541.
</pre>
<p>[src/dxmain.c]</p>
</blockquote>

<p><strong><a name="2007-11-18T060720.783700Z"></a>
2007-11-18T06:07:20.783700Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Improving the debug printing.

DETAILS :

This patch only inserts some debug trace printing about the pdf14 compositor.
The old code is confusing due to mapping an obsolete instruction to "set_color[*]".

</pre>
<p>[src/gxclpath.h]</p>
</blockquote>

<p><strong><a name="2007-11-18T053055.503323Z"></a>
2007-11-18T05:30:55.503323Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Improving the debug printing.

DETAILS :

This patch only inserts some debug trace printing about the pdf14 compositor.
The old code generates a confusing trace due to missing an important information.

</pre>
<p>[src/gstrans.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-16T213922.306411Z"></a>
2007-11-16T21:39:22.306411Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix dependency problems that caused obj/gs_init.ps to be missed. Also fix a
typo that caused CMap files to be missing.

DETAILS:

This method of putting the gs_init.ps dependency down in lib.mak require
us to get gs_init.ps. This hack was discussed with Ralph and is an
alternative to adding a dependency to all of the top level makefiles.
The dummy gs_init.ps is only made when we are NOT including the PS
interpreter (PSI_INCLUDED) since we need the real one for the language
switch build. Note that the dummy file doesn't get added to the %rom%
file system since PS_ROMFS_ARGS is empty if int.mak is not included.

</pre>
<p>[src/lib.mak src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-11-16T211431.380613Z"></a>
2007-11-16T21:14:31.380613Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct typos and spelling errors in the change log. Bug 688940.
</pre>
<p>[doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2007-11-16T081105.046465Z"></a>
2007-11-16T08:11:05.046465Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Providing clist instruction ids and offsets to debug trace (continued 2).

DETAILS :

The last patch (rev 8365) appears incorrect and causes crashes with halftoning devices.

The problem happens due to gx_device_clist_reader::offset_map 
has been initialized too early in clist_reader_init. 
At that moment the device is still a clist writer, 
but the field offset_map belongs to clist reader. 
Due to gx_device_clist_s is a union, the field overlaps band_range_list.head,
and the letter was prematurely reset. It caused some commands were not written
to clist file while the page closes. With the test case (pbmraw -r300 012-01.ps)
it missed cmd_opv_ext_put_halftone and did not miss cmd_opv_ext_put_drawing_color
with color index type == ht_binary. It caused the crash in gx_dc_ht_binary_readdue to 
pis->dev_ht was not set. (cmd_opv_ext_put_halftone does set, but it was missed).

The log message of the revision 8365 reads :
"This change is algorithmically equivalent for release build."
This statement is false due to the premature initialization of 
gx_device_clist_reader::offset_map.
This patch fixes that with removing its initialization from 
clist_reader_init. A subsequent call to clist_render_init initializes it.

The last patch was made buggy due to the function name 
clist_reader_init does not properly reflects its finction.
This patch fixes the naming.

Also provided more stability in gxht.c with a check for NULL pointer.

</pre>
<p>[src/gxclread.c src/gxht.c]</p>
</blockquote>

<p><strong><a name="2007-11-16T021056.107493Z"></a>
2007-11-16T02:10:56.107493Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the makefile for current pkgconfig macros.
</pre>
<p>[ijs/Makefile.am]</p>
</blockquote>

<p><strong><a name="2007-11-16T015209.559298Z"></a>
2007-11-16T01:52:09.559298Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't generate build files for the ijs package when building. Since this 
is distinct from 'make dist' the results are not optimal Bug 689425.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2007-11-15T072243.143761Z"></a>
2007-11-15T07:22:43.143761Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Providing clist instruction ids and offsets to debug trace (continued).

DETAILS :

The last patch appears incorrect for the debug build 
and causes crashes sometimes. Not sure why local testing didn't detect that.

This change is algorithmically equivalent for release build.
In the debug build it fixes problems of the last patch.

1. Offset map could be prematurely released by the garbager
(It could cause a crash. Not sure why the local test didn't detect it).
A new pointer gx_device_clist_reader::offset_map prevents that.
Added it to the garbager descriptor and provided its initialization.

2. buffer_segment_index can fail with returning a negative index.
Checked that and propagated error codes.

4. Besides top_up_cbuf, the buffer topping up also happens 
with calling memmove when reading bitmap data. 
Added calls to top_up_offset_map for accounting that.

5. See comment in top_up_offset_map about the improved invariant.

6. The prototupe of top_up_cbuf is changed with passing the error code.
Due to that the variable 'cbp' is droped the 'register' modifier.
We believe it won't cause a visible slowdown because
modern compilers are smart enough.

7. Do not maintain offset_map when -ZL is not specified.
It saves some CPU time with debug build.

</pre>
<p>[src/gxclist.c src/gxcldev.h src/gxclist.h src/gxp1fill.c src/gxclrast.c src/gxclread.c src/gxclpage.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T230322.440437Z"></a>
2007-11-14T23:03:22.440437Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an obsolete include.
</pre>
<p>[src/gendev.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T220613.972530Z"></a>
2007-11-14T22:06:13.972530Z Ray Johnston</strong></p>
<blockquote>
<pre>
Refactor the gs int.mak and lib,mak to simplify building COMPILE_INITS=1 without PS (PCL
only build). Make sure gs/src/ugcclib.mak does conditional assignment of COMPILE_INITS
</pre>
<p>[src/lib.mak src/ugcclib.mak src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-11-14T220453.375824Z"></a>
2007-11-14T22:04:53.375824Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix number of macro arguments that showed an error when FPU_TYPE=-1 (no FPU)
</pre>
<p>[src/gsciemap.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T183745.596510Z"></a>
2007-11-14T18:37:45.596510Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Providing clist instruction ids and offsets to debug trace.

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only adds a new debug printing.

Let clist segment is consecutive instuctions buffered for same band.

1. gx_device_clist_writer::ins_count counts clist segments.

2. cmd_prefix_s::id is the number of clist segment that it belongs to.

3. stream_band_read_state_s::offset_map stores a table for mapping
clist segments' buffer offsets to clist file offsets.

4. s_band_read_init_offset_map, s_band_read_dnit_offset_map,  
clist_file_offset, top_up_offset_map maintain the table.

5. Inserted a debug printing into gxclutil.c, gxclrast.c .

</pre>
<p>[src/gxclist.c src/gxcldev.h src/gxclist.h src/gxclrast.c src/gxclread.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T180902.242685Z"></a>
2007-11-14T18:09:02.242685Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : A preparation for providing clist instruction ids and offsets to debug trace.

DETAILS :

We would like this change to be algorithmically equivalent,
but the proof is too complex. Therefore we commit it separately
in order to check for raster differences.

1. Inserted a new field into cmd_prefix_s.
For now this field is never used, but it changes memory allocation.
Due to that the bufferring in the clist writer goes slightly different.
Particularly it may cause new effects while restarting failed instructions.

2. Early return from top_up_cbuf when the stream is over.
The new code does not top up the last portion of the data stream.
It shouldn't be important for the reader, but we can't proove for sure.
This change is necessary because we want to add more fields to gx_clist_state_s,
and the new fields would be invalid after s_close resets stream::state.
See the next patch for details.

</pre>
<p>[src/gxclist.h src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T022253.263144Z"></a>
2007-11-14T02:22:53.263144Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add support for passing EXPAT_CFLAGS from the top-level makefile.
Passing -DHAVE_MEMMOVE is required in the unix build.
</pre>
<p>[src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-14T020605.012311Z"></a>
2007-11-14T02:06:05.012311Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove spurious executable bits.
</pre>
<p>[expat/MANIFEST expat/conftools/expat.m4 expat/tests/benchmark/benchmark.c expat/lib/internal.h expat/COPYING expat/Changes expat/lib/utf8tab.h expat/tests/runtestspp.cpp expat/tests/runtests.c expat/lib/expatw_static.dsp expat/lib/libexpat.def expat/amiga/include/proto/expat.h expat/tests/README.txt expat/xmlwf/xmlfile.c expat/xmlwf/xmlfile.h expat/xmlwf/ct.c expat/lib/Makefile.MPW expat/xmlwf/codepage.c expat/vms/descrip.mms expat/xmlwf/codepage.h expat/bcb5/elements.bpf expat/lib/amigaconfig.h expat/amiga/expat_lib.c expat/bcb5/elements.bpr expat/lib/expat.h expat/win32/README.txt expat/conftools/get-version.sh expat/doc/valid-xhtml10.png expat/examples/outline.dsp expat/xmlwf/readfilemap.c expat/bcb5/outline.mak expat/lib/xmlrole.c expat/amiga/launch.c expat/bcb5/expat_static.mak expat/lib/xmlrole.h expat/lib/winconfig.h expat/examples/elements.dsp expat/win32/expat.iss expat/win32/MANIFEST.txt expat/amiga/expat.xml expat/bcb5/outline.bpf expat/expat_config.h.in expat/lib/libexpatw.def expat/lib/expatw.dsp expat/bcb5/expat.mak expat/lib/xmltok.c expat/vms/README.vms expat/tests/benchmark/README.txt expat/bcb5/expat_static.bpf expat/lib/xmltok.h expat/tests/xmltest.sh expat/lib/latin1tab.h expat/bcb5/outline.bpr expat/tests/minicheck.c expat/xmlwf/xmlwf.dsp expat/conftools/PrintPath expat/tests/minicheck.h expat/Makefile.in expat/lib/expat_static.dsp expat/bcb5/libexpat_mtd.def expat/bcb5/expat_static.bpr expat/lib/xmltok_impl.c expat/bcb5/expatw.mak expat/amiga/include/interfaces/expat.h expat/lib/xmltok_impl.h expat/xmlwf/filemap.h expat/bcb5/expatw_static.mak expat/vms/expat_config.h expat/bcb5/expat.bpf expat/xmlwf/xmlwin32url.cxx expat/lib/xmltok_ns.c expat/xmlwf/xmltchar.h expat/doc/reference.html expat/tests/benchmark/benchmark.dsp expat/bcb5/expat.bpr expat/bcb5/xmlwf.mak expat/bcb5/setup.bat expat/lib/xmlparse.c expat/tests/benchmark/benchmark.dsw expat/conftools/install-sh expat/configure.in expat/conftools/libtool.m4 expat/bcb5/expatw.bpf expat/amiga/Makefile expat/bcb5/expatw_static.bpf expat/bcb5/expatw.bpr expat/bcb5/expatw_static.bpr expat/bcb5/xmlwf.bpf expat/lib/expat_external.h expat/configure expat/lib/macconfig.h expat/conftools/ac_c_bigendian_cross.m4 expat/lib/ascii.h expat/amiga/expat_vectors.c expat/conftools/mkinstalldirs expat/bcb5/README.txt expat/amiga/README.txt expat/bcb5/xmlwf.bpr expat/xmlwf/unixfilemap.c expat/doc/xmlwf.sgml expat/bcb5/all_projects.bpg expat/xmlwf/xmlurl.h expat/doc/expat.png expat/amiga/include/inline4/expat.h expat/examples/elements.c expat/expat.dsw expat/amiga/stdlib.c expat/amiga/include/libraries/expat.h expat/lib/iasciitab.h expat/xmlwf/xmlmime.c expat/tests/chardata.c expat/xmlwf/xmlmime.h expat/doc/style.css expat/README expat/tests/chardata.h expat/conftools/config.guess expat/doc/xmlwf.1 expat/conftools/ltmain.sh expat/conftools/config.sub expat/lib/nametab.h expat/bcb5/libexpatw_mtd.def expat/lib/asciitab.h expat/xmlwf/xmlwf.c expat/lib/expat.dsp expat/examples/outline.c expat/xmlwf/win32filemap.c expat/bcb5/elements.mak expat/bcb5/makefile.mak]</p>
</blockquote>

<p><strong><a name="2007-11-13T185718.728921Z"></a>
2007-11-13T18:57:18.728921Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (make) : Could not build for x64 platform with Developer Studio 2005. 

DETAILS :

1. The old code uses the 32 bits compiler for compiling build utilities 
(genarchg, echogs), and then tries to link them with x64 libraries.

2. Developer Studio 2005 doesn't support -ZI 
(debug database for edit end continue) for the x64 platform. 

</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2007-11-13T100155.069333Z"></a>
2007-11-13T10:01:55.069333Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): type 3 fonts with exceedingly small BoundingBox
entries were clamped to 0 or 1.

Details:
Bug #689537 "FontBBox wrong in pdf generated by ps2pdf (breaks
acrobat 8)".

The type 3 font has a FontBBox of [0 0 0.3 0.3]. Because
pdfwrite uses integers to record the font bounding box, this was 
being clampled to [0 0 1 1]. This should not cause a prolem, but
for unknown reasons causes Acrobat 8 to render *very* slowly.

(gdevpdtf.h), 'struct /*type 3*/', alter the FontBBox member from
a gs_int_rect to a gs_rect to preserve floating point box values.

(gdevpdtt.c), pdf_make_font3_resource, copy the font bbox values
instead of floor'ing the lower and ceil'ing the upper values.

(gdevpdfu.c), create a new function 'pdf_write_font_bbox_float'
to write the bbox as floats instead of ints.

(gdevpdfx.h) prototype 'pdf_write_font_bbox_float'

(gdevpdtw.c), pdf_finish_write_contents_type3, use the new
routine to write out a floating point bounding box.

</pre>
<p>[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2007-11-12T085935.891834Z"></a>
2007-11-12T08:59:35.891834Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): named objects, created via a pdfmark such as /BP,
could not have their content modified after the object was completed.

DETAILS:
Bug #689104 "Overwriting transformation /Matrix in XObject previously
created with /BP & /EP pdfmarks".

Some pdfmarks, such as /BP create named objects. These can accumulate
information until a matching pdfmark (/EP in this case) completes the
object. When complete, objects were written to the final destination
PDF file. This made it impossible to later modify the object.

(gdevpfm.c) pdfmark_bind_named_object, change the call to
pdf_substitute_resource to defer writing the object to the
destination file, if the object is named. This means the object is still
available for modification until the end of the job. NB if the object
is not named, we still write it immediately, as there is no mechanism
for modifying an unnamed object, nor do we currently have a mechanism
for maintaining a record of unnamed objects.

</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2007-11-10T172049.620638Z"></a>
2007-11-10T17:20:49.620638Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pre-scan the stream for '{' during the stream length check to avoid reading
to the end of the stream and closing it. Bug 689551, customer 661.

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2007-11-09T211804.579128Z"></a>
2007-11-09T21:18:04.579128Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the JVERSION makefile variable.

We only support the current version 6 library, and it seems
unlikely to revise in the the near future. We also include
our own copy of the source now, so it is less important to
support a variety of third party library versions.
</pre>
<p>[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/Makefile.in doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/watclib.mak src/jpeg.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T211556.512922Z"></a>
2007-11-09T21:15:56.512922Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the PNGVERSION makefile variable.
    
We no longer support building older versions of the libpng source,
and now include our own version, so there is no reason to maintain
this.
</pre>
<p>[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/libpng.mak doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/all-arch.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T210048.139238Z"></a>
2007-11-09T21:00:48.139238Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the top level makefiles with the current libpng version number.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/all-arch.mak src/openvms.mmk src/os2.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T205819.833269Z"></a>
2007-11-09T20:58:19.833269Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use PNGSRCDIR and PNGVERSION instead of PSRCDIR and PVERSION in
the top level makefiles.
</pre>
<p>[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/libpng.mak src/Makefile.in doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/all-arch.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T195457.891517Z"></a>
2007-11-09T19:54:57.891517Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minor cleanup of the expat makefile.
</pre>
<p>[src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T011415.828665Z"></a>
2007-11-09T01:14:15.828665Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the jbig2dec license from GPLv2 to GPLv2 or later.
</pre>
<p>[jbig2dec/LICENSE]</p>
</blockquote>

<p><strong><a name="2007-11-08T075721.838362Z"></a>
2007-11-08T07:57:21.838362Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix: Ignore problematic post table in format 2.0 with ISOLatin1Encoding glyph names.

DETAILS:
Some TrueType fonts converted by "Windows Type 1 Installer" have
problematic post table format 2.0 including MacGlyphEncoding
entries which should be omitted. Such extra entries in the
beginning of glyphName array make /Encoding broken. By checking
if glyph name in post table is predefined one in MacGlyphEncoding,
such problematic post table can be detected. By ignoring such
problematic post table, bug 689495 is fixed.

However, some TrueType fonts designed for Microsoft redefines
MacGlyphEncoding glyph name out of predefined range. To permit
such font, the post table in format 2.0 is checked by
ISOLatin1Encoding which is the cross section of MacGlyphEncoding
and WinAnsiEncoding. ISOLatin1Encoding is enought to fix the
bug 689495.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-11-07T071345.310142Z"></a>
2007-11-07T07:13:45.310142Z Ralph Giles</strong></p>
<blockquote>
<pre>
Preliminary makefile for the expat third party library.

Can be used to link to the system expat with SHARE_EXPAT=1,
but compiling the source doesn't work on linux in this revision
because of missing configuration defines.
</pre>
<p>[src/gs.mak src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-07T050406.063702Z"></a>
2007-11-07T05:04:06.063702Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy the expat-2.0.1 tag source into the gs tree.

This 3rd party library is needed for XPS and eventually SVG support.
</pre>
<p>[expat]</p>
</blockquote>

<p><strong><a name="2007-11-07T041913.410191Z"></a>
2007-11-07T04:19:13.410191Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a skeleton implementation of the text extraction device.
It doesn't do anything useful yet, only prints "Hello world" once per page.
</pre>
<p>[src/gdevtxtw.c src/bcwin32.mak src/openvms.mak src/macosx.mak src/watcw32.mak src/Makefile.in src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/devs.mak src/os2.mak]</p>
</blockquote>

<p><strong><a name="2007-11-02T190903.093400Z"></a>
2007-11-02T19:09:03.093400Z Marcos Woehrmann</strong></p>
<blockquote>
<pre>
Fix for Bug 689316.

On some systems XInitImage() appears to have
problems with images that are one pixel in height, so
if XInitImage() returns an error call XPutImage() instead.  

</pre>
<p>[src/gdevx.c]</p>
</blockquote>

<p><strong><a name="2007-11-02T181645.038692Z"></a>
2007-11-02T18:16:45.038692Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the interaction between a the vector device beginpage method
and gdev_vector_stream() more clearly.
</pre>
<p>[src/gdevvec.h]</p>
</blockquote>

<p><strong><a name="2007-11-01T204928.224038Z"></a>
2007-11-01T20:49:28.224038Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make sure that errors are propogated to caller in the WTS device (such
as VMerror). Bug 689511 for customer 951.

DETAILS:

This doesn't really fix the underlying problem seen by the (embedded)
customer where the clist rendering uses a large amount of RAM.

</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-11-01T172245.182105Z"></a>
2007-11-01T17:22:45.182105Z Igor Melichev</strong></p>
<blockquote>
<pre>
PS interpreter : Trace the executed operators' names (continued).

DETAILS :

Fix an inaccurate coding of the last patch.

</pre>
<p>[src/iinit.c]</p>
</blockquote>

<p><strong><a name="2007-11-01T162001.816428Z"></a>
2007-11-01T16:20:01.816428Z Igor Melichev</strong></p>
<blockquote>
<pre>
PS interpreter : Trace the executed operators' names.

DETAILS :

This change is syntactically equivalent for a default build.
For obtaining the new functionality Ghostscript must be compiled
with a new predefined macro DEBUG_TRACE_PS_OPERATORS.
The new debug switch '!' prints names of operators executed while the interpretation.
Note : Inline operators (which are expanded inside interp.c) are not printed. 

</pre>
<p>[src/iinit.c doc/Use.htm src/int.mak src/iinit.h src/interp.c]</p>
</blockquote>

<p><strong><a name="2007-11-01T155622.262417Z"></a>
2007-11-01T15:56:22.262417Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move a 32K array from the stack to the heap to save stack space.

DETAILS:
Ghostscript is designed to run with 64K stack space for compatibility with
embedded environments. Unlike other MS systems, Windows NT enforces stack
space limit claimed by the application. MSVC 6 run-time uses about 8K
internally and remaining 56K stack was insufficient. 

</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-10-31T170102.758539Z"></a>
2007-10-31T17:01:02.758539Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rewrite gs_getdefaultdevice to avoid allocating memory.

The new version also skips tabs as whitespace and is more robust.
</pre>
<p>[src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2007-10-31T170059.582623Z"></a>
2007-10-31T17:00:59.582623Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a new GS_DEV_DEFAULT makefile variable for passing a preferred list
of default devices, in order of priority. These are passed through to
the C code, and searched for in gs_getdefaultdevice().
</pre>
<p>[src/gs.mak src/Makefile.in src/gscdefs.h src/gsdevice.c src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2007-10-31T170055.551499Z"></a>
2007-10-31T17:00:55.551499Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add Postcript bindings to gs_getdefaultdevice() and use them to set the
default device in the interpreter. Bug 689273.
</pre>
<p>[doc/Language.htm src/zdevice.c lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-10-31T170051.435508Z"></a>
2007-10-31T17:00:51.435508Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a gs_getdefaultdevice() call and use it when printing the help
message. It just returns the first device as before. Bug 689273.
</pre>
<p>[src/gsdevice.h src/imainarg.c src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2007-10-30T234546.184301Z"></a>
2007-10-30T23:45:46.184301Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add missing dependencies to the contrib device build.
</pre>
<p>[contrib/contrib.mak]</p>
</blockquote>

<p><strong><a name="2007-10-30T192601.651347Z"></a>
2007-10-30T19:26:01.651347Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (banding) : Improving the debug trace about compositors (continued).

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only improves debug printing
with distinguishing gs_ and gx_ operations.

</pre>
<p>[src/gstrans.c]</p>
</blockquote>

<p><strong><a name="2007-10-30T174749.373667Z"></a>
2007-10-30T17:47:49.373667Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (banding) : Improving the debug trace about compositors.

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only adds more debug printing.

1. Added a debug printing for alpha, overprint and rop compositors
when writing/reading from/to clist.

2. (gxclrast.c) When printing a matrix with the 'L' switch,
use global page coordinates as rectangle operations do.
It allows to map reading operatrions to corresponding writeing operations.
  
</pre>
<p>[src/gsropc.c doc/Use.htm src/gsalphac.c src/gsovrc.c src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-10-30T005844.912591Z"></a>
2007-10-30T00:58:44.912591Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a cast to prevent a warning.
</pre>
<p>[src/zfjpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-28T233359.326612Z"></a>
2007-10-28T23:33:59.326612Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move "true .setaccuratecurves" to the PDF graphic state initialization
where it belongs. This fix enables accurate curve rendering by GSview
doesn't use some parts of Ghostscript startup code. Bug 688434.

</pre>
<p>[lib/pdf_main.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-10-28T182229.779063Z"></a>
2007-10-28T18:22:29.779063Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-10-28T171747.899537Z"></a>
2007-10-28T17:17:47.899537Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change pdf_base.ps::.pdfrun and pdf_sec.ps::.decpdfrun to ensure
"PDFScanRules" == "true" while scanning the PDF, and if necessary revert
it back to "null" before returning. Thanks to SaGS for the patch. Bug 688598.

DETAILS:
The bug is triggered by the construct "//DeviceGray" found in  the sample PDF.
The following command fails with the same error as GSView, and for the
same reason:

    pdfopt.bat media_365163.pdf output.pdf

When Ghostscript interprets a PDF directly, most of the job is done by
LIB\pdf_main.ps::dopdfpages which sets "PDFScanRules" correctly. However,
the initial part of scanning the PDF (trailer dict, ...), and the rebuild
logic scan the PDF with wrong "PDFScanRules". Also GS's own various tools
and GSView don't set/ reset it as needed.

Implementation details:

(A) ".pdfrun" and ".decpdfrun" dinamically construct procedures that do the
real work and immediately execute them. The patch changes  these procedures
to include setting/ restoring "PDFScanRules". If "PDFScanRules" == "true"
already, then "setuserparams" is not called at all, so normally
(when ".[dec]pdfrun" executed during "dopdfpages") there's practically no
impact on performance.

There are also "token" calls outside these 2 procedures, but these calls are
for scanning the xref and "# # obj" lines, which don't contain PDF name
objects.

(B) ".getuserparam" GS-specific operator changed to recognize scanner options
too ("PDFScanRules" and "PDFScanInvNum"). This is needed by ".[dec]pdfrun"
for restoring "PDFScanRules"; also used for an optimization (to omit calling
"setuserparams" when not actually needed).

Note:
    For "Process[DSC]Comment" it returns "true" if a procedure 
    is set, and not the actual procedure. To retrive the 
    procedures (or null if none set), use "currentuserparams". 

(C) ".currentuserparams" is NOT modified, so it does not return scanner
options. If it did, these ended up being put into "userparams" and be
affected by "save"/ "restore" (see the  redefinition of "restore" in
gs_lev2.ps).

</pre>
<p>[src/itoken.h lib/pdf_base.ps lib/pdf_sec.ps src/zusparam.c src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2007-10-28T141946.108672Z"></a>
2007-10-28T14:19:46.108672Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Stop reading the xref+trailer at the closing ">>" because PDF 1.7 Reference
made "startxref" optional in some cases. Thanks to SaGS for thr patch.
Bug 688283.

DETAILS:
The PDF 1.7 Reference, section F.2.3 "First-Page Cross-Reference 
Table and Trailer (Part 3)", 2nd paragraph on page 1031 states:

   "The first-page trailer may optionally end with startxref, an 
    integer, and %%EOF, just as in an ordinary trailer. This 
    information is ignored."

(note the word "optionally"), so in such a case a PDF interpreter 
cannot rely on anything particular (like "startxref"/ "startref"/ 
"xref") to follow the trailer dictionary. Now consider a linearized 
PDF being incrementally updated, and you get that in the general 
case a "previous trailer" may lack the "startxref". Apparently, 
Acrobat does a similar thing when creating hybrid-ref PDFs.

</pre>
<p>[lib/pdf_main.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2007-10-27T195500.858126Z"></a>
2007-10-27T19:55:00.858126Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 9).

DETAILS :

Bug 689526 "Regression: performance issues with r8118".

This patch clips triangles an trapezoids with band bbox
during the clist playback. The old code spends much time 
for rasterizes parts that fall outside the band,
espcially if the band height is small.

Also fixed an obsolete comment.
  
</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-10-27T185514.195971Z"></a>
2007-10-27T18:55:14.195971Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Extract and process default PDF file from the PDF collection when
it is defined. Otherwise process the container PDF file.

DETAILS:
The procedure pdf_collection_files can be extended to select other
PDF files from the collection and extract them for processing.

</pre>
<p>[lib/pdf_main.ps lib/pdf2dsc.ps]</p>
</blockquote>

<p><strong><a name="2007-10-26T074130.826491Z"></a>
2007-10-26T07:41:30.826491Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Type 1 CharStrings could be converted to invalid 
type 2 CharStrings if the glyph program used implicit start points 
for subpaths.

DETAILS:
Bug #689055 "pdfwrite creates a bad Type1C font"

If a type 1 CharString used an implicit point, either the initial point 
(0,0) or the point resulting from a closepath, then the type 2 output 
code duplicated this. Unfortunately this is illegal in type 2 CharStrings
where each subpath must begin with one of the 'move' instructions.

(gdevpsfx.c) psf_convert_type1_to_type2, create a new boolean variable
'need_moveto' initialised to true. When we encounter a move operation,
set it to false. When we encounter a closepath, set it back to true.
Thus this variable is always true at the beginning of a subpath, and 
becomes false as soon as a move instruction is encountered.

While converting type 1 CharStrings, whenever the current instruction is 
a line drawing operation, if 'need_moveto' create a move instruction, 
taking account of any pending glyph widths.


This is only performed on the second (conversion) pass through the type 1 
CharSrtring as we don't need to worry about this during the first (hint 
collection) pass.

</pre>
<p>[src/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2007-10-26T014956.180182Z"></a>
2007-10-26T01:49:56.180182Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge makeset.tcl into makehist.tcl.
</pre>
<p>[toolbin/makehist.tcl toolbin/makeset.tcl]</p>
</blockquote>

<p><strong><a name="2007-10-26T014954.293117Z"></a>
2007-10-26T01:49:54.293117Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove obsolete release and diff scripts.
</pre>
<p>[toolbin/3way.tcl toolbin/makefonts.tcl toolbin/maketars.tcl toolbin/makemaster.tcl toolbin/makeset.tcl toolbin/makewin.tcl]</p>
</blockquote>

<p><strong><a name="2007-10-26T010804.549848Z"></a>
2007-10-26T01:08:04.549848Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document how to use -dTTYPAUSE with -dSAFER. Bug 687988.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-10-25T221422.288695Z"></a>
2007-10-25T22:14:22.288695Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some gcc warnings.
</pre>
<p>[jbig2dec/config.h jbig2dec/jbig2_text.c jbig2dec/jbig2_image.h jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_generic.c jbig2dec/jbig2_page.c jbig2dec/jbig2_refinement.c]</p>
</blockquote>

<p><strong><a name="2007-10-25T003018.383197Z"></a>
2007-10-25T00:30:18.383197Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include an example of how to create non-ASCII font names in the cidfmap.
Bug 688203.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-10-24T233220.291355Z"></a>
2007-10-24T23:32:20.291355Z Ralph Giles</strong></p>
<blockquote>
<pre>
Append the CUPS font directory to the search path. Bug 689334.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-24T224628.083133Z"></a>
2007-10-24T22:46:28.083133Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add an XCFLAGS macro to the MSVC build to match the variable of the same
name in the unix builds. This is intended mainly for adding preprocessor
defines at make time. Bug 689530.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-10-24T224625.428278Z"></a>
2007-10-24T22:46:25.428278Z Ralph Giles</strong></p>
<blockquote>
<pre>
Only add XLDFLAGS to LDFLAGS temporarily when checking for the
additional X libraries. Bug 689411.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-24T183955.448984Z"></a>
2007-10-24T18:39:55.448984Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the proper build machinery to link to cups.

DETAILS:

Previously, the configure script just appended the output of cups-config
to CFLAGS and LIBS which could confuse other parts of the build. The
LIBS setting was actually ignored by cups.mak which hard coded liking
to cups and cupsimage through the genconf -lib option, although it
depended on it for the search patch if cups was in a non-standard
location.

Instead, we parse the output of cups-config to separate the dependent
libraries and additional search paths if any, and pass those through
to genconf in the intended way. This destroys the order of the link
line, but GNU ld, at least, applies all -L paths to all -l libraries,
so that should not distrurb the build. We pass any extra include paths
in a special variable and use it directly when compiling gdevcups.c to
avoid confusing the search path for other components.

Configure also used to ignore cups-config if it found cups/raster.h in
the current search path. We now prefer cups-config.
</pre>
<p>[src/Makefile.in src/configure.ac cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2007-10-24T183951.211490Z"></a>
2007-10-24T18:39:51.211490Z Ralph Giles</strong></p>
<blockquote>
<pre>
Abstract the autoconf build's link line flattening for generic use.

DETAILS:

The Ghostscript build system expects a list of bare library names
for specifying library dependencies through the .dev files to
genconf. The configure script had some code to decompose the usual
unix-style "-lX11 -lXt" link flags returned by AC_PATH_XTRA.

As we've added more optional external libraries to the autoconf
build, this has become a general need, so the code is now abstracted
into an autoconf macro for use elsewhere in the configure script.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-24T073109.815969Z"></a>
2007-10-24T07:31:09.815969Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : An integer arithmetic overflow while converting Type 1 CharStrings into Type 2.

DETAILS :

Bug #689106 "Wrong charpath direction in PDF"
Patch from Rolf Becker with minor improvements.

A processing of big integers was implemented in gstype1.c
while rendering a glyph, but it was not implemented
in pdfwrite while converting a Type 1 font into Type 2.
It caused an incorrect glyph outlines embedded into PDF.
This patch factors out the old processing as a new
function gs_type1_check_float and applies it in gdevpsfx.c .
The function prototype is added to gxtype1.h as it needs to be public.

The patch also improves comments in code
because now we understand better what happens in there.
For more details see comments in code.

The change to gstype1.c is algorithmically equivalent
except inserting a new check for overflow in float2fixed.
The new check may fail when the old code
renders an incorrect outline.
We have no practical cases that demonstrate it.

</pre>
<p>[src/gstype1.c src/gdevpsfx.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2007-10-23T034859.052392Z"></a>
2007-10-23T03:48:59.052392Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Handle yet another type of broken PDF generated by Adobe Acrobat 8.1
that lacks startxref operator. Bug 689413, customer 531.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-10-21T204929.646397Z"></a>
2007-10-21T20:49:29.646397Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Process duplicate entries in PDF 1.5 context stream the same way as
the entries from regular streams: the first entry found (i.e. the last
in the xref chain) takes efferct. Keep rebuilding logic intact, where
the last entry wins. Bug 689513, customer 700.

</pre>
<p>[lib/pdf_main.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2007-10-20T231430.016619Z"></a>
2007-10-20T23:14:30.016619Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check for unbalanced q operators in the pattern stream and add Q as needed.
Bug 689523, customer 870.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-10-20T191428.348994Z"></a>
2007-10-20T19:14:28.348994Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make IGC_PTR_STABILITY_CHECK an independent compile-time flag that can be set
from the command line without editing gxobj.h .

</pre>
<p>[src/gxobj.h]</p>
</blockquote>

<p><strong><a name="2007-10-20T163438.276462Z"></a>
2007-10-20T16:34:38.276462Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Relax ICCBased color space validation. Don't reject correct PDF files that have
ICCBased color space as an alternative color space to another ICCBased color
space. Bug 689524, customer 870.

</pre>
<p>[lib/gs_icc.ps]</p>
</blockquote>

<p><strong><a name="2007-10-20T005555.884848Z"></a>
2007-10-20T00:55:55.884848Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass the CFLAGS obtained for fontconfig from pkg-config separately
to avoid contaminating the general build.
</pre>
<p>[src/Makefile.in src/configure.ac src/unix-aux.mak]</p>
</blockquote>

<p><strong><a name="2007-10-20T003723.775560Z"></a>
2007-10-20T00:37:23.775560Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a redundant check for pkg-config.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-20T003719.682121Z"></a>
2007-10-20T00:37:19.682121Z Ralph Giles</strong></p>
<blockquote>
<pre>
Look for fontconfig even if pkg-config doesn't find it.

DETAILS:

Like the comment says, pkg-config isn't universally installed,
so we should not depend on it. If pkg-config isn't available
or doesn't find fontconfig, check for the library and headers
it in the standard locations.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-18T185854.836534Z"></a>
2007-10-18T18:58:54.836534Z Ralph Giles</strong></p>
<blockquote>
<pre>
Install header files as data, not executables. Bug 689466.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-10-18T003637.403207Z"></a>
2007-10-18T00:36:37.403207Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a spurious CFLAGS instance from the jasper compile line.

DETAILS:

The definition of CC_ passed from the top level makefile should
already include a copy of the CFLAGS for environment overrides,
so the duplicate copy here was unnecessary.

Furthermore, the second expansion of CFLAGS at the end of the
compiler command line could result in picking up a version of
the jasper headers installed elsewhere in the system instead
of the copy in JASSRC, causing the build to fail on undefined
preprocessor symbols, since upstream doesn't have our error
reporting callback.
</pre>
<p>[src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2007-10-18T000555.933230Z"></a>
2007-10-18T00:05:55.933230Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace our included libpng with the new upstream 1.2.22 release.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-10-18T000145.449158Z"></a>
2007-10-18T00:01:45.449158Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the current copy of libpng out of the way for a pending update.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-10-17T230450.954798Z"></a>
2007-10-17T23:04:50.954798Z Ralph Giles</strong></p>
<blockquote>
<pre>
Avoid memory corruption with broken files.

Patch from the Ubuntu libjasper package.
</pre>
<p>[jasper/src/libjasper/jpc/jpc_cs.c jasper/src/libjasper/jpc/jpc_dec.c jasper/src/libjasper/jp2/jp2_cod.c]</p>
</blockquote>

<p><strong><a name="2007-10-16T075408.209510Z"></a>
2007-10-16T07:54:08.209510Z Ken Sharp</strong></p>
<blockquote>
<pre>
ps2write: When encountering font names which contain unfortunate characters
such as white space, or delimiters, emit the name as an escaped string and 
'cvn' instead of a literal name.

DETAILS:
Bug #689420 "Errors with ps2write and special chars in FontName"

Patch from SaGS with some minor improvements.

Fonts whose name contains white space, or delimiter characters (eg /,(,[ etc)
were being written into the type 1 font stream using the name unchanged. This 
causes the resulting PostScript to fail on any PostScript interpreter. The 
exact error varies depending on the placement of the invalid character and 
the following data.

This is now handled by emitting the font name as a string, and using the cvn
operator to convert the string to a name, escaping characters if required. 
Note that both the C portion of the code needs to change, in order to write 
escaped names, and the PostScript prolog in order to undo any name escapement.

1. (gdevpsf1.c) write_font_name, check to see if the font name contains any
   characters which we need to escape. If so, then use the existing routine
   's_PSSE_template.process' to convert the name to an escaped character 
   sequence.

   Update the write_font_name routine so that it optionally writes a name
   to the output. If the name does not need escaping, then simply prepend a
   '/' to make a literal name, otherwise append a 'cvn' to convert the 
   escaped string to a name. When writing out the font header we just need
   the font name as a human readable string. When writing the /FontName
   entry in the font dictionary we need a PostScript name, either a literal
   or a PostScript escaped string converted to a name. (see below)

2. (gdevpsf1.c) psf_write_type1_font, alter the use of write_font_name in two
   places. Firstly to emit the name as part of the font comment, secondly to
   put the name as the value for the /FontName key in the fotn dictionary. In
   the first case we write it as a simple string, in the second as a name.

3. (opdfread.ps) The TypeDameons procedure extracts the FontName from the Font
   dictionary in the body of the job. Since the FontName can now be escaped,
   we need to undo the escapement before defining the font. Firstly we define
   a new procedure 'UnPDFEscape', secondly we call this when dealing with the
   FontName and the BaseFont keys, in order to convert the escaped name back
   to a normal name, so that the font can be found with findfont.

</pre>
<p>[src/gdevpsf1.c lib/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2007-10-16T003628.849878Z"></a>
2007-10-16T00:36:28.849878Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't override the memory set by the caller in the JPXDecode stream.
</pre>
<p>[src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-16T003627.806530Z"></a>
2007-10-16T00:36:27.806530Z Ralph Giles</strong></p>
<blockquote>
<pre>
It's the client's responsibility to call the set_defaults
method on a new stream. Bug 689362.

DETAILS:

The JPXDecode stream implementation was calling set_defaults
from within its own init method, clobbering the colorspace
request passed in through the stream's parameter dictionary.
</pre>
<p>[src/zfjpx.c src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T223154.394164Z"></a>
2007-10-15T22:31:54.394164Z Henry Stiles</strong></p>
<blockquote>
<pre>
Error code from clist_decode_segment did not propagate back because
the inner automatic variable code shadowed the outer.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T180918.231759Z"></a>
2007-10-15T18:09:18.231759Z Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent C-stack overflow caused by infinite recursion. Related to
previous fix in same function to access the correct target color
procedure.

DETAILS:

Testing with other problem files detected the recursion. The previous
method to access the saved target get_color_comp_index is moved
before either use.

EXPECTED DIFFRENCES:

None.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T131116.778228Z"></a>
2007-10-15T13:11:16.778228Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: When writing the /CreationDate /ModDate keys in the Info dictionary,
properly write the system local time instead of UTC.

DETAILS:
Bug #688783 "commit 6892 mis-uses the TZ environmental"

A rather lengthy thread, but in essence quite simple. A change to calculate
the system local time as an offset from UTC, and store this information in 
the form described in the PDF Reference (Section 3.8.3 "Dates" on p133 of 
the 1.6 PDF Reference).

The patch uses code supplied by SaGS.

(gdevpdf.c) pdf_initialize_ids, use the C runtime 'time' and 'gmtime' to 
determine the difference between local system time and GMT. Use this to 
calculate the difference (positive, negative, or none) from GMT, and the
number of hours and minutes comprising the difference. Use 'localtime' to
find the local system date and time.

Take all of the information from above, and format the result according to
the specification in the PDF Reference:

(D:YYYYMMDDhhmmssZhh'mm')

Where YYYY=4 digit local time year
        MM=2 digit local time month
        DD=2 digit local time day
        hh=2 digit local time hours (24 hour)
        mm=2 digit local time minutes
        ss=2 digit local time seconds
         Z=offset of local time from UTC
           Z=no difference
           +=local time later than UTC
           -=local time earlier than UTC
       hh'=hours difference between local time and UTC
       mm'=minutes difference between local time and UTC

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T064304.430544Z"></a>
2007-10-15T06:43:04.430544Z Marcos Woehrmann</strong></p>
<blockquote>
<pre>
Added code to the pxlcolor device (gdevpx.c) to set the color space even
if the test for "portrait transformations" fails.

DETAILS:

The pclxl_begin_image() function performs a rather complicated test to
see if the image transformation can be "handled" (line 1434).  If this
test fails the routine falls through to using gx_default_begin_image().
However, in this case the pcl-xl color space is never set and if
the previous color space was eGray the pcl-xl stream will fail with
ExtraData (because 3 times as much data as expected will be written).
Presumably the inverse is also true, but I don't have a test case for it.

The solution is to call pclxl_set_color_space() in the use_default
case (a possibly more correct solution would be to call
pclxl_set_color_palette()).

</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-12T202208.884187Z"></a>
2007-10-12T20:22:08.884187Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix SEGV when clist used with pdf14_cmykspot device.
Bug 689493 for customer #190.

DETAILS:

When the clist is used, the pdf14 device sets the clist color procs
(including get_color_comp_index) to it's own procedures, saving the
actual target procs. When the Separation name is new, we need to use
the saved target procs.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-12T163807.833396Z"></a>
2007-10-12T16:38:07.833396Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix divide by zero crash. Bug 689493 reported by customer #190.

DETAILS:

When new_width is 0, just use 1 in the test (works well enough
for checking overflow)

</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2007-10-11T163626.031981Z"></a>
2007-10-11T16:36:26.031981Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix incorrect colors with transparency to cmyk+spot devices (such as tiffsep).
Bug 689494 for customer #190.

DETAILS:

CMYK + Spot colors are subtractive. The blending with the 'bg' color was
inverted, causing very strange colors.

Note that the pdf14_cmykspot_put_image is VERY inefficient and at the
very least should have logic added to write runs of the same color
as a wide rectangle (rather than the current 1x1 pixel rectangles).

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T230218.957895Z"></a>
2007-10-10T23:02:18.957895Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (stroking) : Prevent installing an extra clipper device, step 2.

DETAILS :

Bug 689427 "Superposed clippers".

The last patch doesn't fix the problem when stroking
a path with a shading color.

The new code distinguishes 3 cases :

1. When painting happens through low level device methods
which don't accept a clipping path. It happens inside 
stroke_fill, so the new code passes the clipper device to it.

2. When the painting happens through fill_path, 
which does handle a clipping path. It happens inside
FILL_STROKE_PATH, so the new code doesn't pass the clipper to it,
but passes the clipping path as it worked before the last patch.

3. When the stroking algorithm is called from 'strokepath',
don't need a clipping at all. This case works as before,
but the new code doesn't construct a clipping device.

Minor change : Added a new argument 'dev' to the macro
FILL_STROKE_PATH to simplify the code understanding and debugging.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T184235.474048Z"></a>
2007-10-10T18:42:35.474048Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass the results of calling cups-config to cups.mak from configure 
through the top-level makefile rather than calling cups-config directly, 
so that passing an alternate cups environment to configure works.
Bug 689496.

DETAILS:

This is more consistent, since configure and cups.mak were previously 
calling cups independently. However, setting the cups environment at
the make level my have accidentally worked before; it won't work now.
</pre>
<p>[src/Makefile.in src/configure.ac cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2007-10-10T174038.235834Z"></a>
2007-10-10T17:40:38.235834Z Ralph Giles</strong></p>
<blockquote>
<pre>
Turn on keyword substitution on pdf_cslayer.ps. This is the correct fix 
for the issue mentinoed in r8283. Also set native line endings and 
remove some spurious executable properties.
</pre>
<p>[lib/EndOfTask.ps lib/PDFX_def.ps lib/PDFA_def.ps lib/dumphint.ps lib/pdf_cslayer.ps]</p>
</blockquote>

<p><strong><a name="2007-10-10T161923.023493Z"></a>
2007-10-10T16:19:23.023493Z Marcos Woehrmann</strong></p>
<blockquote>
<pre>
Fixed Id line to make nightly regression run happy.
</pre>
<p>[lib/pdf_cslayer.ps]</p>
</blockquote>

<p><strong><a name="2007-10-10T152826.622499Z"></a>
2007-10-10T15:28:26.622499Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (stroking) : Prevent installing an extra clipper device.

DETAILS :

Bug 689427 "Superposed clippers".

The old code installs a clipper in gx_stroke_path_only_aux
and then (indirectly) calls gx_general_fill_path
with passing same clipping path. It caused gx_general_fill_path
to install a second clipper with same clipping path.
This patch simply passes down a NULL clipping path.

Minor change : Added a 'pcpath' argument to the macro
FILL_STROKE_PATH for easier understanding and debugging.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T101345.175824Z"></a>
2007-10-10T10:13:45.175824Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Optimize the buffer backdropping, step 2.

DETAILS :

1. Intersect the backdrop rectangle with the bbox of a real painting to the transparebcy buffer,
which is accummulated from pdf14_fill_rectangle. It reduces the rectangle for a faster blending.
1.1. Removed min_int, max_int from pdf14_buf_new against an integer overflow when computing 
sizes of rectangles.
1.2. Do intersect rectangles in In pdf14_put_image, pdf14_cmykspot_put_image, pdf14_custom_put_image.

2. dump_planar_rgba still could access outside the buffer due to a recent patch is incomplete.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T093832.826812Z"></a>
2007-10-10T09:38:32.826812Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Optimize the buffer backdropping, step 1.

DETAILS :

This change is algorithmically equivalent.
It only defines some local variables as a preparation to the next change.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T085939.164904Z"></a>
2007-10-10T08:59:39.164904Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Don't allocate transparency buffer for bands that appear outside the transparency bounding box.

DETAILS :

This is an optimization, which should be algorithmically equivalent.

For bands outside the transparency bounding box the old code
allocated a zero length buffer and performed fake operations with it.

The main change is gdevp14.c ln 550.
Others prevent an access to the buffer when it is not allocated.

Note that in some cases the new check is excessive
because (width <= 0 || height <= 0) normally means no buffer.
We check for (buf->data == NULL) anyway to simplify the sefity proof
and documentation.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T081249.566532Z"></a>
2007-10-10T08:12:49.566532Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Properly intersect rects when composing transparency buffers (continued 2).

DETAILS :

Bug 689498 "transparency: The buffer backdroping code can write outside bufers.".
Bug 688631 "PDF segfault".

This patch ports the revision 7064 changes from pdf14_put_image to
pdf14_cmykspot_put_image and pdf14_custom_put_image, which were added 
after the revision 7064. They need same improvement, which was mised
due to a development miscoordination.

This change is committed without any testing,
because the author has no test cases which involve
pdf14_cmykspot_put_image and pdf14_custom_put_image.
Possibly they need to build Ghostscript with special options 
and to run the test case of the bug 688631 with special devices.
The bug 689498 is passed to Suport for further processing and testing.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-09T193327.492485Z"></a>
2007-10-09T19:33:27.492485Z Till Kamppeter</strong></p>
<blockquote>
<pre>
On "make soinstall" some files did not get installed.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-10-09T170249.926924Z"></a>
2007-10-09T17:02:49.926924Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (FAPI / UFST bridge) : A crash when processing an embedded CIDFontType 11.

DETAILS :

Debugged with running the test case of the bug 689471 with FAPI.
Needs an additional change to lib/FAPIconfig for running the test case with FAPI :

- /HookDiskFonts        [1 2 9 11 42]  % FontType values for disk PS fonts to be redirected to FAPI.
- /HookEmbeddedFonts    [1 2 9 11 42]  % FontType values for embedded PS fonts to be redirected to FAPI.
+ /HookDiskFonts        [2 9 11 42]  % FontType values for disk PS fonts to be redirected to FAPI.
+ /HookEmbeddedFonts    [2 9 11 42]  % FontType values for embedded PS fonts to be redirected to FAPI.

because UFST still can't handle embedded Type 1.

This patch passes impl_PCLchId2ptr as p_PCLglyphID2Ptr argument.
We believe it is correct for True Type,
but we're not sure about Type 1,
because Type 1 composite glyphs refer subglyphs 
in an inobvious way - see Type 1 specification.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2007-10-09T082849.108879Z"></a>
2007-10-09T08:28:49.108879Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: Allow downsampling of images in a /Indexed colour space, provided the
downsampling type is 'subsample'.

DETAILS:
Bug 689265 "PDF created by GS 8.57 is much larger than from competitive creator"

The original job contains several images, including one large one, which are in a 
/Indexed colour space. We can't use average or bicubic downsampling with /Indexed
colour space, because the colours in the space may not be linear. It ought to be
possible to use subsampling though.

Where we previously checked the image colour space and decided to disable downsampling
if the colour space was /Indexed, we now additionally check the downsampling type
and permit it if the type is 'Subsample'.

(gdevpdfi.c) pdf_begin_typed_image, check the downsample type as well as the colour 
space before deciding not to allow downsampling. 

(gdevpdsi.c) psdf_setup_image_filters, check if the colour space is /Indexed before 
deciding which set of image parameters to use (2 places). Also, if we do encounter a
/Indexed space, make the compression filter into Flate to ensure we don't try and use any 
kind of JPEG compression, which may not work properly with Indexed spaces, and in any case
is not the most appropriate type of compression in this situation.

</pre>
<p>[src/gdevpsdi.c src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-10-09T000624.193850Z"></a>
2007-10-09T00:06:24.193850Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font emulation) : Could not handle unknown Ordering with FAPI.

DETAILS :

Debugged with running the test case of the bug 689471 with FAPI.

</pre>
<p>[lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2007-10-08T100533.511010Z"></a>
2007-10-08T10:05:33.511010Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: Alter the AIIM URL emitted when creating PDF/A files.

DETAILS:
Bug #689375 ""

When writing PDF/A files we need to put a URL for the AIIM group in the metadata. Previously we were writing 'http://www.aiim.org/pdfa/ns/id.html' which is what Acrobat 7 does, now we write 'http://www.aiim.org/pdfa/ns/id/' which is what Acrobat 8 does.

(gzpdfe.c) pdf_write_document_metadata change the URL as above.

</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2007-10-08T071332.510990Z"></a>
2007-10-08T07:13:32.510990Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: when encountering a glyph in a type 3 font for which no Charproc is defined 
emit a simple setcachedevice operation instead of an empty stream.

DETAILS:
Bug #688834 "Undefined characters in Type 3 fonts cause PDF conversion to fail"

The original report, based on an older version of pdfwrite, states that an error occurs with 
pdfwrite when using glyphs from a type 3 font where there is no charproc defined for the
glyphs.

In fact, with the current version of pdfwrite, no error occurs, but the resulting file
causes Acrobat to give warnings and display the result incorrectly. NB other PDF consumers
do not behave this way.

This appears to be caused by pdfwrite emitting an empty stream (length 0), because no charproc 
is captured for the glyph (since it has none). For some reason Acrobat takes exception to this.

A simple solution is to write a stream which is not empty. The sequence '0 0 0 0 0 0 d1'
, a

setcachedevice with arguments all 0, resolves the problem.

(gdevpdtt.c) In pdf_text_process, after capturing a Charproc for a type 3 font, check the length
of the stream. If it is 0 bytes, then emit '0 0 0 0 0 0 d1' and carry on.


</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2007-10-07T180911.121700Z"></a>
2007-10-07T18:09:11.121700Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Ignore font errors that do not belong to embedded subset.

DETAILS :

Bug 689068 "ps2pdf13 fails with Error: /invalidfont in --ashow--".

The document could successfully rasterize,
but failed with invalidfont when converting to PDF.
It happened due to a missed glyph,
which is not atually used in the doeument.

The patch skips font errors that do not belong to the font subset.
However if the user requests to embed a complete font,
a warning is printed to stderr and the document fails
due to the font error as before the patch.

Changes :

1. gdevpdtb.c : Process a coplete font copy error as explained above.

2. gsfont.c : Ignore missed glyphs when computing the "fixed width" font feature.

</pre>
<p>[src/gdevpdtb.c src/gsfont.c]</p>
</blockquote>

<p><strong><a name="2007-10-04T064654.927607Z"></a>
2007-10-04T06:46:54.927607Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert a change inadvertently included r8257. This broke the MSVC
build, which does not define CC_SHARED.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2007-10-03T173735.315273Z"></a>
2007-10-03T17:37:35.315273Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert patch 8268 (restoring the FCOfontmap-* files) and add the Encoding/
directory to the RESOURCE_LIST so that it will be include in the %rom%
file system. This is the _real_ fix to bug #689050 and explains why the
symptoms appeared to be related to having Wingdings installed on the
system. Thanks to Henry and Igor in pointing out the incorrect Encoding
used in the previous patch that led me to the actual problem.
</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 src/int.mak lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2007-10-03T044018.040901Z"></a>
2007-10-03T04:40:18.040901Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix FCOfontmap-* files so that Wingdings will be found.
Bug #689050 for customer #951.

</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2007-10-03T001812.256656Z"></a>
2007-10-03T00:18:12.256656Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the .IgnoreNumCopies device parameter. Bug 689491.
</pre>
<p>[doc/Use.htm doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2007-10-02T235530.880679Z"></a>
2007-10-02T23:55:30.880679Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add extraction of layer information from Illustratir CS2/CS3 PDF files
to the code base but don't run it in the default configuration.

</pre>
<p>[src/int.mak doc/Develop.htm lib/pdf_cslayer.ps]</p>
</blockquote>

<p><strong><a name="2007-10-02T073158.125500Z"></a>
2007-10-02T07:31:58.125500Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: Convert 'text' followed by 'text charpath stroke' to a single text
operation by using text rendering mode 2.

DETAILS:
Bug #689310 "Offset between text and outline in pdfwrite.dev"

Emitting text, followed by the same text as an argument to charpath, and then stroking the
resulting path previously resulted in a large path being emitted and stroked in the PDF file. 

This is inefficient, but worse the path is not grid fitted, whereas the text is. When
used to stroke the outline of previously rendered text, either in a different colour or to
create a 'bold' effect, the emitted path did not always precisely match the rendered text.

This change is to emit this PostScript construct using the closest available match in PDF, 
which is the text rendering mode. There are two parts to this change, firstly to identify 
when a path is the result of a charpath, and secondly to merge text followed by charpath/stroke
operations into a single operation on output.

1. (gzpath.h) Add a new member 'last_charpath_segment' to the gx_path_s structure. Update the
   path garbage collection code for relocation of new variable.

2. (gxpath.c) Initialise the new member 'last_charpath_segment' to 0 in
   gx_path_init_contents, and also in path_alloc_copy to prevent copies being identified as
   the result of a charpath.

3. (gxchar.c) We need to be able to tell if a path was the result of a charpath. To do this
   we store the final segment of a path in 'last_charpath_segment' of the path
   structure during show_finish, if the current operation was a charpath. See also item 11.

4. (gdevpdfx.h) Add a new member 'last_charpath_op' to the gx_device_pdf_s structure, to
   hold the boolean argument associated with a charpath operation. Also add to the 
   pdf_substream_s structure to allow us to save and restore this value on entry to or
   exit from a PDF substream.

5. (gdevpdti.c) Save and restore the value of last_charpath_op in pdf_enter_substream
   and pdf_exit_substream.

6. (gdevpdfx.h) Add a new member variable 'last_charpath_op' to the 'pdf_substream_save_s' 
   structure to allow us to save and restore the last_charpath_op as noted above.

7. (gdevpdtt.c) During gdev_pdf_text_begin, if the operation is a charpath, check the
   following conditions, if met then store a copy of the charpath boolean variable in 
   a new member of the gx_device_pdf_s structure.
       1. Operation must be a charpath
       2. Current path must be empty (can't handle charpath concatenated to existing path)
       3. The font being used for the current text must be the same as the font used for
          the previous stored (but not yet emitted) text.
       4. The initial point of the text for the charpath must match the initial point of
          the previous stored text.
       5. The text bytes must be the same as the previous stored text.
       6. The point size of the text must match the previous stored text.
   Also, move the calculation of the font point size out of pdf_update_text_state so that
   we can calculate the size in pdf_compare_text_state_for_charpath' defined in 9 below
   without duplicating code.

8. (gdevpdtt.h) Prototype 'pdf_calculate_text_size'

9. (gdevpdts.c) Add a new function 'pdf_compare_text_state_for_charpath' to do the 
   checking noted above. The pdf_text_state_s structure is not defined publicly, so 
   we need code to access its members. Also add a function 'pdf_modify_text_render_mode'
   which will attempt to add a rendering mode (stroke, fill or clip) to existing text
   by updating the existing text rendering mode. Returns 0 if the existing text cannot
   be modified, and we fall back to emitting a path and stroke.

10. (gdevpdts.h) Add prototypes for the functions required in 9.

11. (gdevpdfd.c) In pdf_stroke_path, if the 'last_charpath_op' member of the pdf device
   structure is set, perform some more checks (below) and if passed, set the text render
   mode of the stored text, set the stroke colour, set the line width, and force the stored
   text to be emitted. This conveniently results in a gsave/grestore pair round the
   graphics state changes.
      1. The last charpath operation must have been 'false charpath'
      2. There must be a non-empty path (result of the charpath operation)
      3. The 'last_charpath_segment' stored in the path must match the actual last segment
         in the path. (can't handle path segments added to the result of a charpath)

12. (gdevpdfg.h) Make the pdf_reset_color routine public, as we need to be able to set the 
   colour from pdf_stroke_path.

13. (gddevpdfg.c) We need to be able to set a stroke colour while in a TEXT context,
   previously the routine pdf_reset_color, which emits colours and spaces, immediately
   switched to a STREAM context, which caused pending text to be flushed. pdf_reset_color
   was only called from two places, pdf_set_drawing_color and pdf_set_pure_color. The
   switch to a STREAM context has been moved to these routines, leaving pdf_reset_color to
   actually do the work without worrying about the context.
   It was found necessary to also reproduce some checks before switching context, to
   prevent unnecessary context switches.
   Removed unused local variable 'process_color' from pdf_reset_color.

There is scope for additional enhancement with this code. Presently there is no attempt to
deal with 'charpath gsave fill grestore stroke' constructs, nor to handle clipping paths 
resulting from charpath. There may be other possibilities.


</pre>
<p>[src/gdevpdfx.h src/gxchar.c src/gdevpdts.c src/gdevpdtt.c src/gzpath.h src/gdevpdfd.c src/gdevpdts.h src/gdevpdfg.c src/gdevpdti.c src/gdevpdtt.h src/gdevpdfg.h src/gxpath.c]</p>
</blockquote>

<p><strong><a name="2007-10-01T230253.086636Z"></a>
2007-10-01T23:02:53.086636Z Ralph Giles</strong></p>
<blockquote>
<pre>
Have mkromfs use $(GS_INIT) instead of hard-coding gs_init.ps. It was
intended that this be part of r8257.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-10-01T230035.110412Z"></a>
2007-10-01T23:00:35.110412Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update pkg-config support in the ijs tree.
</pre>
<p>[ijs/Makefile.am]</p>
</blockquote>

<p><strong><a name="2007-10-01T225959.038063Z"></a>
2007-10-01T22:59:59.038063Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve portability in the autoconf build. Solaris doesn't support 'grep 
-q'. Bug 689490.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-01T062621.808008Z"></a>
2007-10-01T06:26:21.808008Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix: (TT font handler) : Use given prebuilt_encoding when Apple Roman TrueType cmap subtable is chosen

DETAILS:
As current implementation assumes /prebuilt_encoding[] is
compatible with WinAnsiEncoding when Microsoft UCS2 TrueType
cmap subtable is chosen, current implementation assumes
/prebuilt_encoding[] is same with MacRomanEncoding when
Apple Roman TrueType cmap subtable is chosen.
/prebuilt_encoding[] is completely ignored and the inverse
of MacRomanEncoding is used. Therefore, when Apple Roman
TrueType cmap subtable is chosen but /Encoding is
StandardEncoding or PDFDocEncoding, some characters are
shown by wrong glyphs. This patch uses /prebuild_encoding[]
if it's given, when Apple Roman TrueType cmap subtable is
chosen.

According to PDF Ref 1.7 p. 431, MacRomanEncoding does not
cover all characters in Apple Roman TrueType cmap subtable,
16 characters are missing. To exploit the glyphs as many
as possible via Apple Roman TrueType cmap subtable, this
patch introduces "MacRomanEncodingForTrueType" including
missing 16 characters. By this change, 16 glyphnames
can be exploited via Apple Roman TrueType cmap subtable.

There might be broken TrueType fonts that use the names
in MacRomanEncoding at incompatible 8bit charcode. The
text drawn by such fonts would be broken, the results are
unexpected.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-10-01T061918.139797Z"></a>
2007-10-01T06:19:18.139797Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix: Preprocess the glyphnames in prebuilt_encoding by AdobeGlyphList for Microsft UCS2 cmap subtable

DETAILS:
According to PDF Ref 1.7 p. 430, Adobe modern products
always prioritize Microsoft UCS2 TrueType cmap subtable
regardless with /Encoding, as far as the font is declared
as Nonsymbolic by /Flags. For example, even if /Encoding
is MacRomanEncoding, Microsoft UCS2 TrueType cmap subtable
is prioritized than Apple Roman TrueType cmap subtable.
The encoding of Microsoft UCS2 TrueType cmap is not a
superset of MacRomanEncoding, see PDF Ref 1.7 Appendix D.
Current implementation expects the content of /Encoding 
is always compatible with chosen TrueType cmap subtable,
thus unexpected mismatching causes loss of glyph like:
bug 689351 "Content Loss for certain Embedded Type42 Glyphs with gs8.57"

When Microsoft UCS2 TrueType cmap subtable is chosen,
the glyphnames used in /prebuilt_encoding[] should be
preprocessed: the glyphnames changed to the charcode
compatible with Microsoft UCS2 encoding scheme, before
combining with charcode-glyph mapping table in Microsoft
UCS2 TrueType cmap subtable. The preprocessing should
be done by AdobeGlyphList that maps known glyphnames
to UCS2 charcode. The unknown glyphnames are left to
second processing in /.pdfmapchars. This preprocess
fixes bug 689351.

There might be broken TrueType fonts that use the names
in AdobeGlyphList at incompatible UCS2 charcode. The text
drawn by such fonts would be broken, the results are
unexpected.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-09-30T194625.258028Z"></a>
2007-09-30T19:46:25.258028Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add an option that controls rendering of PDF annotations. By default
annotations are rendered as before.

</pre>
<p>[lib/pdf_main.ps doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-09-29T055334.943145Z"></a>
2007-09-29T05:53:34.943145Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following the PDF spec, don't use .notdef glyph in Type 3 font.
.notdef may not be present at all. Bug 689475

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-09-27T230607.081517Z"></a>
2007-09-27T23:06:07.081517Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the mkromfs code under 'make clean'. Bug 689474.
Also, use the GS_INIT define instead of hard-coding gs_init.ps
as the root of the postscript library code.
</pre>
<p>[src/lib.mak src/gs.mak]</p>
</blockquote>

<p><strong><a name="2007-09-27T203039.973443Z"></a>
2007-09-27T20:30:39.973443Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve shared build support on MacOS X.
</pre>
<p>[src/configure.ac src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-09-27T202651.405933Z"></a>
2007-09-27T20:26:51.405933Z Ralph Giles</strong></p>
<blockquote>
<pre>
Install iapi.h and ierrors.h as part of the soinstall makefile target.
Bug 689466.
</pre>
<p>[src/macosx.mak src/Makefile.in src/unix-dll.mak src/unix-gcc.mak]</p>
</blockquote>

<p><strong><a name="2007-09-27T202046.283268Z"></a>
2007-09-27T20:20:46.283268Z Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent BandWidth from being set smaller than the page width. Fixes
crash reported in bug #688734.
</pre>
<p>[src/gxclist.c]</p>
</blockquote>

<p><strong><a name="2007-09-26T094855.994917Z"></a>
2007-09-26T09:48:55.994917Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Windows installer) : MSVC can't build dwinst.c .

DETAILS :

A recent patch erroneusly replaced 'private' keyward in a C++ class definition.

</pre>
<p>[src/dwinst.h]</p>
</blockquote>

<p><strong><a name="2007-09-26T043720.025441Z"></a>
2007-09-26T04:37:20.025441Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix multiple inclusion of page objects in the optimized PDF file.
Extend special handling of page objects to Annots and AcroForm
object enumeration. Bug 689292, customer 932.

</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2007-09-25T133124.199299Z"></a>
2007-09-25T13:31:24.199299Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace the 'private' define with the now standard C keyword 'static'.          

DETAILS:
                                                                                The compilers we support have supported static for some time now, so            
idiomatic, and removes one of the obstacles to compiling Ghostscript            
as C++.

The patch also removes support for compilation with -dNOPRIVATE, which          
is not longer necessary with modern debuggers.
</pre>
<p>[src/gdevm48.c src/idstack.c src/gdevmsxf.c src/gdevrinkj.c src/gdevmem.c src/gdevmem.h src/gdevwdib.c src/gxoprect.c src/gdevsunr.c src/zvmem.c src/gdevpdtc.c src/gstrap.c src/gsfcmap1.c src/gxxfont.h src/gswts.c src/gsstate.c src/gdevlbp8.c src/zcsdevn.c src/gdevdm24.c src/zcontext.c src/gxdhtserial.c src/gdevpdts.c src/gdevcljc.c src/iscanbin.c src/gdevmiff.c contrib/gdevlx7.c src/gxclutil.c src/gp_mshdl.c src/zfont.c contrib/japanese/gdevml6.c src/zarray.c src/gxdevcli.h src/gdevpe.c src/zchar42.c src/gsfont0.c src/gscscie.c contrib/lips4/gdevlips.c src/gdevwts.c src/zdfilter.c src/icfontab.c src/zht1.c src/zdevcal.c src/zpcolor.c src/gdevpdfi.c src/zcssepr.c src/sdcparam.c contrib/gdevcd8.c src/bcwin32.mak src/zdps1.c src/gdevokii.c src/gdevpdtd.c src/zcfont.c src/zhsb.c src/gdevprna.c src/zcolor.c src/gxhtbit.c src/sfxfd.c src/zupath.c contrib/lips4/gdevl4v.c src/gdevpdtt.c src/gpmisc.c src/gdevpbm.c src/ireclaim.c src/gdevmrun.c src/gconf.c contrib/japanese/gdevnpdl.c src/zfbcp.c contrib/japanese/gdevmag.c src/gserver.c src/gp_psync.c src/gdevcmap.c src/zht2.c src/gdevpdfj.c src/zfarc4.c src/gp_os2pr.c src/gdevwprn.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxpdash.c src/ztrap.c src/gxfilltr.h src/gdevpdte.c src/gdevdevn.c doc/Drivers.htm contrib/japanese/gdevalps.c src/gsgcache.c src/zfile.c src/gdev4693.c src/gsptype1.c src/gxchar.c src/gxclbits.c src/zfcid0.c src/gsfcid2.c src/zgstate.c contrib/gomni.c src/gsalloc.c src/zfontenum.c src/gdevmeds.c src/gdevmpla.c src/gdev4081.c src/gscicach.c src/watclib.mak src/gxclzlib.c src/istack.c src/zfont0.c src/zmath.c src/gdevpdfk.c src/gdevhit.c src/gxclimag.c src/gxhintn1.c src/gxfillts.h src/gdevpdtf.c src/gdevddrw.c src/gschar.c src/gxht.c src/gdevpsfm.c src/sarc4.c src/gdevpsdp.c src/gxcht.c src/gsptype2.c src/gdevpsu.c src/gdevxalt.c src/gdevclj.c src/zvmem2.c src/zfcid1.c src/gstrans.c contrib/gdevln03.c src/gstype2.c src/icontext.c src/zstring.c src/zfont32.c src/gzspotan.c src/gxclip2.c src/gdevdrop.c src/gp_macio.c src/sbhc.c src/scfd.c src/gsdps.c src/zfont1.c src/spngp.c src/gdevcgml.c src/gdevpx.c src/gsmatrix.c src/gdevl256.c src/igcref.c src/zcharx.c src/gxtype1.c src/zdouble.c src/spdiff.c src/gdevcp50.c src/gsmemret.c src/gdevpdtw.c src/gxclip.c src/sfilter1.c src/iname.c src/zmedia2.c src/gxiscale.c src/gxpcmap.c src/gdevnfwd.c src/zcontrol.c src/gdevxcmp.c src/gsfcmap.c src/scfe.c src/zfont2.c src/gdevlj56.c src/gxp1fill.c src/gsciemap.c src/gdevhl7x.c src/zdscpars.c src/gdevos2p.c src/gsparam.c src/gdevpdfm.c src/gp_unix_cache.c src/imain.c src/gdevwpr2.c src/zfilter2.c src/zfont42.c src/zchar.c src/smd5.c src/gdevsun.c src/ztrans.c src/sjpx.c src/zcsindex.c src/gdevrops.c src/gxipixel.c src/zcidtest.c src/sfilter2.c src/gdevijs.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/gdevjpx.c src/gdevcslw.c src/zfdctd.c src/zdps.c contrib/gdevhl12.c src/gdevdsp.c src/zmatrix.c src/gdevescp.c src/gsiodev.c src/igc.c src/gdevpipe.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c src/gdevsvga.c src/gdevpdti.c src/zdosio.c src/gdevepsn.c src/gsparam2.c src/gdevpsf1.c src/gdevpsds.c src/zfsample.c src/zfdecode.c src/gsstruct.h src/siscale.c src/gxfill.c src/gsdsrc.c src/gximag3x.c src/gxclread.c src/dwtrace.c src/gdevmswn.c src/gdevjpeg.c src/siinterp.c src/gdevbbox.c src/gsdll.c src/gspath1.c src/gdevtfax.c src/gdevpjet.c src/gdevphex.c src/sjpegc.c src/gshtscr.c src/zfdcte.c src/gsnogc.c src/zfcmap.c src/gdevbit.c src/gdevfax.c src/gdevbmpa.c src/gsequivc.c src/gp_wsync.c src/gsdevice.c src/gxclmem.c src/gscparam.c src/gshtx.c src/gdevsj48.c src/gdevpdfo.c src/sdctd.c src/gsmemory.c contrib/japanese/gdevfmlbp.c src/gdevcdj.c src/scfdgen.c src/ttcalc.c src/gdevtknk.c src/gdevpsf2.c src/gxidata.c src/gsroptab.c src/gdevm1.c src/gsistate.c src/os2.mak src/sstring.c src/gscolor2.c src/gxpath.c src/scfparam.c src/gdevupd.c src/interp.c src/gsmalloc.c src/zcrd.c src/ttfmain.c doc/C-style.htm src/gdevm40.c contrib/japanese/dviprlib.c src/gsiodisk.c src/gdevpsim.c contrib/japanese/dviprlib.h src/gdevpcfb.c src/gdevvec.c src/gp_msprn.c src/gdevmgr.c src/sdeparam.c src/gxacpath.c src/gdevpdfp.c src/ziodev.c src/gslib.c src/gdevimgn.c src/gdevvglb.c src/sdcte.c src/gsovrc.c src/gxshade1.c src/gxccache.c src/gdevm32.c src/gxfdrop.c src/gp_unifs.c src/gsparams.c src/gxhintn.c src/gsiorom.c src/gdevbjcl.c src/dvx-gcc.mak src/gdevpsdu.c src/gp_mswin.c src/gdevm2.c src/gspath.c src/gdevwddb.c src/gp_os2.c src/zcolor1.c src/gxpcopy.c src/gdevdjet.c src/gdevstc.c src/ialloc.c src/gxfapiu.c contrib/japanese/gdevlbp3.c src/zpath1.c src/gdevm24.c contrib/eplaser/gdevescv.c contrib/gdevxes.c src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gdevbmp.c src/gschar0.c src/gdevbmpc.c src/zdevice.c src/gscie.c src/gdevsppr.c src/igcstr.c src/gxi16bit.c src/gdevn533.c src/idebug.c src/gsht.c src/gsncdummy.c src/gsfunc3.c src/gdevm16.c src/gdevperm.c src/genconf.c src/zfilter.c src/gstype42.c src/sa85d.c src/sbcp.c src/zcolor2.c src/gdev3b1.c src/gdevtrac.c src/gp_ntfs.c src/gdevatx.c src/zfproc.c src/genht.c src/zgeneric.c src/gs.c src/gxclrect.c src/zdevice2.c src/gsshade.c src/sjbig2.c src/gdevpdfb.c src/gscrdp.c src/msvclib.mak src/sjbig2.h src/gxclrast.c src/gsicc.c src/zcid.c src/zfile1.c src/gdevp2up.c src/zimage3.c src/gdevo182.c src/zarith.c src/gdevpdfr.c src/zcspixel.c src/gximage1.c src/gdevppla.c src/zmisc1.c contrib/gdevop4w.c src/wccommon.mak src/gsfunc4.c src/gxclpath.c src/gxcmap.c src/gxfcopy.c src/gdevpsft.c src/gdevtfnx.c src/gsmisc.c src/gxicolor.c src/zpath.c src/gdevm4.c contrib/opvp/gdevopvp.c src/gxfillsl.h src/zcolor3.c src/gxpageq.c src/gsdparam.c src/gxcpath.c src/gdevprn.c src/gdevlxm.c contrib/japanese/gdevdmpr.c src/gdevcif.c src/gxdevndi.c src/gdevprn.h src/gdevpdfc.c contrib/gdevgdi.c src/gdevabuf.c src/gdevherc.c src/gdevsgi.c src/zcie.c src/gdevsco.c src/stream.c src/gdevdflt.c src/zcharout.c src/gdevepsc.c src/gdev8510.c src/gximage2.c src/srld.c src/zht.c src/zncdummy.c src/gxstroke.c src/gxshade4.c contrib/gdevlx32.c src/zmisc2.c src/iparam.c src/sjpx_luratech.c src/zrelbit.c src/iinit.c src/gdevxini.c src/gxclist.c contrib/japanese/gdevmjc.c src/watcw32.mak src/gxccman.c src/gsalphac.c src/gdevpsfu.c src/gxshade.c contrib/japanese/gdevmjc.h src/gdevlp8k.c src/zfunc.c src/gsclipsr.c src/idict.c src/ttfmemd.c src/gscoord.c contrib/japanese/gdevrpdl.c src/genarch.c src/ztype.c src/gdevxxf.c src/zshade.c src/gdevpdfd.c src/gdevdgbr.c src/gdevmr2n.c src/gdevxcf.c src/gdevcfax.c src/zicc.c src/zchar1.c src/vdtrace.c src/gscdevn.c src/iscan.c src/gsnotify.c src/gdevpdft.c src/gximage3.c src/gdevpsdi.c src/srle.c src/zfilterx.c contrib/gdevlx50.c src/shcgen.c src/zmisc3.c src/zfapi.c src/zfunc4.c contrib/gdevbjc_.c src/gscpixel.c src/ziodev2.c src/gsiodevs.c src/zmisc.c src/gdevplnx.c src/gxttfb.c src/simscale.c src/zfzlib.c src/Makefile.in src/dscparse.c src/gscsepr.c src/gdev3852.c src/iutil2.c src/dscparse.h src/gsimage.c src/gxwts.c src/gstext.c contrib/japanese/gdevj100.c src/msvccmd.mak src/gdevpdfe.c src/gsflip.c contrib/lips4/gdevlprn.c src/gdevadmp.c src/sidscale.c src/zchar2.c src/zdpnext.c src/geninit.c src/zusparam.c src/gdevjbig2.c src/gdevpdfu.c src/gximage4.c contrib/gdevdj9.c src/gxshade6.c src/gdevp14.c contrib/lips4/gdevl4r.c src/dwinst.h src/gdevpdf.c src/macosx.mak src/zpacked.c src/ifont.h src/zfmd5.c src/gp_dosfe.c src/iutil.c src/gdevpng.c src/zrop.c src/zalg.c src/zfjpx.c src/gzpath.h src/sfxstdio.c src/gspaint.c src/sjbig2_luratech.c contrib/japanese/gdev10v.c contrib/gdevmd2k.c src/sjbig2_luratech.h src/gdevccr.c src/gdevdcrd.c src/zbseq.c src/ziodevsc.c src/imainarg.c src/zfrsd.c src/gdevl31s.c src/gdevdjtc.c src/spprint.c src/gdevpcx.c src/zfileio.c src/zbfont.c src/slzwd.c contrib/japanese/gdevespg.c src/unix-gcc.mak src/gdevpdfv.c src/gxpflat.c src/gxifast.c src/zsysvm.c src/gsimpath.c src/gdevx.c contrib/gdevbjca.c src/gsmemlok.c src/sbwbs.c src/gximage.c src/gdevstc4.c src/ziodevs.c src/unixansi.mak src/gdevpsfx.c src/szlibd.c src/gscspace.c src/gdevimdi.c src/gdevdfax.c src/gdevm8.c src/gdevpnga.c src/gsropc.c src/zstack.c src/gsfcid.c src/gsfont.c src/isave.c src/zimage.c src/gdevm64.c src/gdevcgm.c src/zdict.c src/zfimscale.c src/gdevtsep.c src/gsfont0c.c src/iccfont.c src/gsht1.c src/gdevpdfg.c contrib/japanese/gdevp201.c src/gdevps.c src/gspcolor.c src/gxi12bit.c src/gxcllzw.c src/zfjbig2.c src/gdevpdtb.c src/gsdps1.c src/gdevs3ga.c src/slzwe.c src/gshsb.c src/gscolor.c src/smtf.c src/ztoken.c src/gxpaint.c src/x_.h src/gdevtifs.c src/zchar32.c src/seexec.c src/gdevm56.c src/spsdf.c src/gximono.c src/fapiufst.c src/szlibe.c src/gxctable.c src/gp_vms.c src/gp_iwatc.c src/gp_os9.c src/gdevbj10.c src/gxclipm.c src/zpaint.c src/gdevmac.c src/stdpre.h src/iplugin.c contrib/japanese/gdevfmpr.c src/gsgdata.c src/gdevmac.h]</p>
</blockquote>

<p><strong><a name="2007-09-24T035218.847453Z"></a>
2007-09-24T03:52:18.847453Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore color operations in uncolored type 3 font in PDF files for
compatibility with Acrobat Reader 6 and higher.
Bug 689302, customer 870.

</pre>
<p>[src/int.mak lib/pdf_draw.ps src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-09-20T121552.643667Z"></a>
2007-09-20T12:15:52.643667Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A crash in garbager after clist playback fails in image.

DETAILS :

This problem was occasionally detected when disk overflow happens with 
the test case of the bug 689440.

device_clist_enum_ptrs, device_clist_reloc_ptrs process
gx_device_clist::writer.clip_path when image_enum_id is not zero.
The clist playback code sets it when processing an image.
We guess it was done to avoid redundant clist writing,
and we think it's not a best way to do that.

If an image processing fails with an error,
the old code  does not reset image_enum_id.
Later (when the interpreter closes) 
the garbager processes gx_device_clist::writer.clip_path .
But in the test case it appears to be a pointer from global memory
to local memory, and its relocation appears wrong.
A crash happens while validating the heap after the relocation.

We're not sure why gx_device_clist::writer.clip_path
needs to be set between image plane data portions,
and why the garbager methods are coded to process it.
We guess all these manipulations are wrong,
and a right way should be to call cmd_check_clip_path
in clist_image_plane_data. 

See also comment in cmd_check_clip_path : 
"The clip path might have moved in memory".
We guess it assumes that the pointer is not relocated
when image_enum_id is zero and the ppointer is set.
We guess it should be regular assumption
for all cases, and the clist device garbager methods
must never process it.

This patch applies a minimal change to prevent the crash,
and does not close other suspections.
The change simply closes the image enumerator
when writing to it ends with an error.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-09-20T084949.922199Z"></a>
2007-09-20T08:49:49.922199Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Allow image encoding filter initialization with no parameters passed from the client.

DETAILS :

Bug 689458 "pdfwrite image crash (pcl and xps)".

The change 6122 doesn't account that some client 
may pass no parameters for filter initialization.
Fixing it now and improve the documentation.

</pre>
<p>[src/gdevpsdi.c]</p>
</blockquote>

<p><strong><a name="2007-09-18T191121.591397Z"></a>
2007-09-18T19:11:21.591397Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the build instructions to reflect current practice of shipping 
all the 3rd party libraries we depend on. Bug 689446.
</pre>
<p>[doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2007-09-18T190134.199941Z"></a>
2007-09-18T19:01:34.199941Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some documentation errors. Bug 689433.
</pre>
<p>[doc/Projects.htm lib/ps2pdf.cmd doc/Use.htm lib/ps2pdf.bat doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2007-09-18T173231.734909Z"></a>
2007-09-18T17:32:31.734909Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove obsolete font encoding and compilation instructions from the 
documentation. Bug 689432.
</pre>
<p>[doc/Fonts.htm]</p>
</blockquote>

<p><strong><a name="2007-09-18T154108.152952Z"></a>
2007-09-18T15:41:08.152952Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The interpolation of imagemask must not apply to high resolution images (continued).

DETAILS :

Fixing an inaccuracy in a comment in the last patch.

</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2007-09-18T153351.055573Z"></a>
2007-09-18T15:33:51.055573Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The interpolation of imagemask must not apply to high resolution images.

DETAILS :

Bug 689249 "Major performance degradation rendering PDF",

The revision 7123 implements a conversion of imagemask 
into a bigger image with a smoother pixel granularity. 
Actually the conversion isn't useful for high resolution images
which map an image pixel into a small number of device pixels.
This patch implements such check and it apparently helps for pdfwrite.

Note it includes an arbitrary threshold,
which may need further adjustment.
See comment in code.

</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2007-09-14T101707.152885Z"></a>
2007-09-14T10:17:07.152885Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 8).

DETAILS :

Bug 689436 "pattern rendering regression with revision 8095".

Do not write tile phase to clist before trying to write the color.
If the latter fails, the phase may become wrong due to 
overloading cmd_opv_set_tile_phase with tile phase and device halftone phase.

With the test case the old code, when writing a trapezoid to clist, 
first writes halftone phase, then fails to write the pattern color 
and falls back to gx_default_fill_trapezoid.
The latter writes strip_copy_rop with it own phases.
But the clist reader expects strip_copy_rop phase to be written
*after* the tile header, so the reader misses the phase sychronizm.

The fix simply delays writing the phase after the color is written.

</pre>
<p>[src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2007-09-14T052352.359324Z"></a>
2007-09-14T05:23:52.359324Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add recognition of a CFF file fith the extended header = <01000C02>.
Bug 689449, customer 1110.

</pre>
<p>[lib/pdf_font.ps lib/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2007-09-13T083048.823871Z"></a>
2007-09-13T08:30:48.823871Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update pdfwrite to handle type 0 fonts with type 1 or type 2 descendant fonts (continued).

DETAILS:
Bug #689212 "irregular baselines - gs pdfwrite changes CFF to Type 3". There are no functional changes, the new code behaves the same as the old. The
temporary buffer allocated in pdf_text_process is used to hold the list of glyph
name indices, and the working buffer of indices for pdf_obtain_font_resource_unencoded,
rather than allocating new memory. This considerably simplifies the clean-up on
error in scan_cmap_text.

1. gdevpdtt.c In pdf_text_process, ensure that enough memory is available in the
   temporary buffer. We need to promote character codes to glyph name indices, so
   we need storage for as many glyph name indices as there were input character
   codes. In addition, we need a temporary buffer of the same size for
   pdf_obtain_font_resource_unencoded (maximum required) so we need to double this amount.

2. Update process_cmap_text to pass the buffer allocated in pdf_text_process, and
   passed as an argument to process_cmap_text, to scan_cmap_text.

3. Alter the definition of scan_cmap_text to take the temporary buffer as an
   argument. Modify the code in scan_cmap_text to use the temporary buffer rather
   than allocating new space. Remove all the code for allocating and especially freeing
   the temporary memory. Some corrections to indenting also performed here.

</pre>
<p>[src/gdevpdtc.c src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2007-09-11T192917.888456Z"></a>
2007-09-11T19:29:17.888456Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (filling algorithm) : Split big segments before filling a path.

DETAILS :

Bug 689397 "Infinite loop is PS ATS file tp pcxcmyk device."

The old code didn't split big segments due to an inaccurate coding.
It caused a fixed overflow with in a coordinate compitation
and a loop of about 2^30 steps.

</pre>
<p>[src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2007-09-10T083142.651229Z"></a>
2007-09-10T08:31:42.651229Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update pdfwrite to handle type 0 fonts with type 1 or type 2 descendant fonts.

DETAILS
Bug #689212 "irregular baselines - gs pdfwrite changes CFF to Type 3"

There was previously no code in pdfwrite to handle type 0 fonts with type 1 descendant 
fonts. This caused pdfwrite to 'fall back' to the default implementartion which converts
glyphs to a type 3 bitmap font.

This change is to enable scalable fonts to be embedded in the output. NB it is not 
possible, in PDF, to construct a type 0 font with anything other than CIDFonts as 
descendants, and we must therefore output one or more type 1 fonts to do the job.

1. (gdevpdtt.c) in scan_cmap_text add a case to handle a type 1 descendant font. The main
    work is done in this routine; we create a list of glyph name indices representing 
    each of the input character codes and later we use pdf_obtain_font_resource_unencoded
    and the TEXT_FROM_GLYPHS operation to mark the font usage, and create an 'encoded'
    string for output.

    If font->procs.next_char_glyph returns a glyph name index, then we simply add it to
    our list, if it returns a character code (a CMap can map a character code in the type
    0 font to a character code in a descendant font) then we use the descendant font
    'procs.encode_char' to get a glyph.

    Once we have a complete list of glyphs, we pass it to
    pdf_obtain_font_resource_unencoded to add the glyphs to the encoding, and return a
    string where the character codes match the newly created/modified encoding.

    Finally we pass the encoded string and glyph list to process_text_modify_width, using
    the descendant font.

    A couple of minor points; its possible to change descendant fonts in the middle of a
    string, and we need to cope with that, hence the copying of the last glyph in the list
    when a font_change occurs. Its possible to return a different pdfont if we run out of
    encoding positions in the current one, which can result in multiple type 1 fonts in
    the output.

2. We need to use the function adjust_first_last_char, which was defined private in
   gdevpdte.c, so this has been made public.

3. A prototype for adjust_first_last_char has been added to gdevpdtt.h

4. The function reserve_char_code_in_pdfont was written to handle single glyphs, it can
   now be called with multiple glyphs. The loop for re-using positions in the encoding
   with /.notdef codes didn't use the 'last_reserved_char' argument, which meant that it
   kept returning the same position. To prevent this it now pays attention to the
   'last_reserved_char' argument.

5. Finally, the routine pdf_make_text_glyphs_table_unencoded, which calls
   reserve_char_code_in_pdfont also did not previously expect to be called with multiple
   glyphs. The loop below do_unkown has been modified to use a local variable, instead of
   pdfont->u.simple.last_reserved_char. THis means that, should an error occur, the value
   of pdfont->u.simple.last_reserved_char will not be modified.


</pre>
<p>[src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdtt.h]</p>
</blockquote>

<p><strong><a name="2007-09-09T005312.649192Z"></a>
2007-09-09T00:53:12.649192Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make pswrite and epswrite devices generate proper line-interleaved image
stream even when they receive several scan lines at once. This happens when
the source image operator takes large strings as multiple data sources.
Bug 688200, customer 632.

</pre>
<p>[src/gdevps.c]</p>
</blockquote>

<p><strong><a name="2007-09-08T223120.200765Z"></a>
2007-09-08T22:31:20.200765Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Declare Ghostscript as _LARGEFILE64_SOURCE program, i.e. request transitional
interface to large file support. Check for mkstemp64() availability specially.
</pre>
<p>[src/Makefile.in src/configure.ac src/stdpre.h src/gp_unifs.c]</p>
</blockquote>

<p><strong><a name="2007-09-08T215954.482448Z"></a>
2007-09-08T21:59:54.482448Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Include our std.h header first to ensure consistent type definitions in
contributed files. This is required on HP-UX with aC++ compiler.
</pre>
<p>[contrib/gomni.c contrib/pcl3/eprn/pagecount.c contrib/pcl3/src/pclcap.c contrib/gdevlx50.c contrib/opvp/gdevopvp.c contrib/pcl3/eprn/mediasize.c]</p>
</blockquote>

<p><strong><a name="2007-09-08T170559.540260Z"></a>
2007-09-08T17:05:59.540260Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Reflect in the PPD files that the CUPS support comes with GPL Ghostscript now and not with ESP Ghostscript.
</pre>
<p>[cups/pxlmono.ppd cups/pxlcolor.ppd]</p>
</blockquote>

<p><strong><a name="2007-09-05T192105.959793Z"></a>
2007-09-05T19:21:05.959793Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace non-standard function call fdopen64() with fdopen(). The former
is not available on most platforms and not needed anyway because O_LARGEFILE
flag is set earlier in the code. Bug 689175.

</pre>
<p>[src/gpmisc.c]</p>
</blockquote>

<p><strong><a name="2007-09-05T075454.782032Z"></a>
2007-09-05T07:54:54.782032Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Suppress loading trailing data after chosen cmap subtable.

DETAILS:

The current cmap selector/loader tries to load a subtable
for Microsoft platform && UCS2 encoding with anything
in trailer, although only MS+UCS2 subtable is used.
Thus, if the cmap table has several additional subtables
after MS+UCS2 subtable (e.g. multiple 16bit cmap subtable
for Shift-JIS/Big5/GB2312/Wansung/Johab, or very long
32bit subtable in format 8/10/12, or simple junk data),
cmap subtable loader tries to load MS+UCS2 subtable and
trailing garbage, and tries to define /cmaptab for
concatenated string of them. So, rangecheck or limitcheck
error can occur due to too-long string. Typical example
is found in bug 688337 which is caused by TrueType font
including cmap subtable in format 12.

If we restrict the scope to MS+UCS2 subtable, it must
not be greater than 0xFFFF bytes. Because cmap subtable
headers in format 0,2,4,6 define these tables length in
16bit. The cmap parser is fixed to check the subtable
header content and read exact length of chosen subtable,
to exclude trailing garbage.

In addition, /getinterval_from_stringarray has a bug
that appears when the end of requested string just fits
to the gap of member strings. The bug is fixed, too.

By this patch, bug 688337 is fixed.

DIFFERENCE:

None.
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-09-03T131911.511212Z"></a>
2007-09-03T13:19:11.511212Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix reference counting logic for clip stack elements. The reference counter
now shows the number of gstates that point to a given element directly or
indirectly. Bug 689429.

</pre>
<p>[src/gsclipsr.c src/gsstate.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T205342.169700Z"></a>
2007-08-31T20:53:42.169700Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Always set HWResolution to clipper device.

DETAILS :

Fixes the bug 689365 
"Clipper device may have a wrong HWResolution".

</pre>
<p>[src/gxfill.c src/gxclip.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T190947.125231Z"></a>
2007-08-31T19:09:47.125231Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Distinguish two methods gx_make_clip_device_on_stack, gx_make_clip_device_in_heap.

DETAILS :

This is a preparation for fixing the bug 689365 
"Clipper device may have a wrong HWResolution",
step 2.

This change is algorithmically equivalent.

1. Drop tx, ty,arguments, because they always zero.

2. There are 2 different cases in code:
allocation on stack or in heap.
Now we define them explicitely.

3. Adding the 'target' argument,
and adjust reference counters inside the "in heap" method.
The call to open_device is moved inside the methods.

Note that the old code in some cases calls open_device 
after doing some settings (2 occurances in gxfill.c). 
The new code does before that.
We belirvr it is algorithmically equivalent,
because we checked open_device against using the
data being set there.

</pre>
<p>[src/gdevbbox.c src/gxcpath.h src/gximask.c src/gxccache.c src/gxfill.c src/gxclip.c src/gxstroke.c src/gxclrast.c src/gdevdbit.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T172221.775099Z"></a>
2007-08-31T17:22:21.775099Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Expand gx_make_clip_path_device, gx_make_clip_device.

DETAILS :

This is a preparation for fixing the bug 689365 
"Clipper device may have a wrong HWResolution".

This change is algorithmically equivalent.

The old code defines a function gx_make_clip_path_device,
and a macro gx_make_clip_device similar as a small wrappers for 
gx_make_clip_translate_device. This patch expands
and removes them as FOR a standardization.

The 'list' argument of gx_make_clip_translate_device is replaced with
'pcpath' argument, because the old code always extract the list
from pcpath. The extraction is now done inside gx_make_clip_translate_device.

</pre>
<p>[src/gdevbbox.c src/gxcpath.h src/gximask.c src/gxccache.c src/gxfill.c src/gxclip.c src/gxstroke.c src/gxclrast.c src/gdevdbit.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T153106.557286Z"></a>
2007-08-31T15:31:06.557286Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Remove the pdfwrite/NODISPLAY nonsense from the documentation.

DETAILS :

That statement was always false.

</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-08-31T082955.996410Z"></a>
2007-08-31T08:29:55.996410Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong encoding of Metadata (continued).

DETAILS :

The revision 8181 added a bug which caused an infinite loop 
with -dPDFA Altona-Testsuite_p2_S_x3.pdf

</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T082716.425671Z"></a>
2007-08-31T08:27:16.425671Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A crash with incorrect shading.

DETAILS :

Bug 689394  "SEGV with MSVC7 run time checking in Type 7 shading."
See comment in code. 

</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T054344.869532Z"></a>
2007-08-31T05:43:44.869532Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Infinite loop in t1_hinter__fix_subglyph_contour_signs.

DETAILS :

Bug 689298 "Infinite loop in t1_hinter__fix_subglyph_contour_signs()".

Well it's a student level error in the algorithm.
Thanks to Alex for the test case with 5 nesting contours.

</pre>
<p>[src/gxhintn1.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T044758.034291Z"></a>
2007-08-31T04:47:58.034291Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font rendering) : alloc_char_bits could fall into infinite loop.

DETAILS :

Bug 689036 "infinite loop in char cache logic".

The character cache algorithm assumes that a pointer to
any allocated cached_char instance appears somewhere in ccache.table .
However from the old experience we know that
this obvious invariant appears frequently broken due 
to inaccurate manipulation with cache by clients.
For example, a client sometimes reserves and initializes 
a cached_char instance and then fail due to another error 
before storing the pointer to ccache.table.

In the old code a cycle in alloc_char_bits 
strongly depends on this invariant, 
and therefore it is potentially harmful.
In the past we have got a lot of bugs about it.
Now we restrict the cycle with the cache size.
Changed few function prototypes with returning error
if the invariant is broken.
Note that the graphics library interface changes,
so other interpreters must update the calls to 
alloc_char_bits.

</pre>
<p>[src/gxchar.c src/gxccman.c src/gxchar.h src/gxccache.c]</p>
</blockquote>

<p><strong><a name="2007-08-30T055342.339598Z"></a>
2007-08-30T05:53:42.339598Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized data after converting a Type 42 font into CID font.

DETAILS :

Bug 689399 "PDFA-Option cause gswin32 to crash".

This change is important with -dPDFA only,
and doesn't change the behavior otherwise.
Some font descriptor fields were not initialized.


</pre>
<p>[src/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2007-08-30T023652.268008Z"></a>
2007-08-30T02:36:52.268008Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Properly handle FontMatrix of a Type 3 font.

DETAILS :

Bug 689267 "File converted to PDF displays badly in Acrobat".

Patch from SaGS. His explanation is quoted below.

Part #1: pdfwrite fixes (gdevpdti.c, gdevpdte.c, gdevpdtt.h, gdevpdtt.c :

- Generalize pdfwrite computations for glyph widths and placement, 
  which currently assume an [s 0 0 s tx ty]-type original (= ignoring 
  changes made by makefont & similar) FontMatrix, to work with an 
  arbitrary matrix.

- Fix: the "wy" operand of "d0"/"d1" in Type 3 charproc streams must 
  be zero. Note: other parts of the code already consider wy == 0, 
  and don't need to be changed.

- Remove font_orig_scale() and pdf_font3_scale(), which are not used 
  anymore. Their simple presence is a sign of the assumption that 
  font matrices are simple scalings.

- Minor: remove a dead variable ("int code = 0; ... return code;"). 
  This variable is never changed, because there's another "int code" 
  inside the "for", but it is confusing and takes a lot of research 
  to figure out the behaviour is OK and no usefull error code is 
  lost (it's the 2nd time I stumble against this...)

Notes:
  - All non-Adobe PDF viewers that I tested (Evince/ Fedora 7, 
    Foxit Reader 2.0/ Windows, Jaws PDF Editor 3.5/ Windows, and 
    Ghostscript -r8204) have problems with "weird" font matrices.
    The bug in ghostscript is addressed below.
  - I do have an alternate patch, which "normalises" the 
    FontMatrix, for better viewers compatibility . But this method 
    cannot work when fonts are not embedded: cannot "normalize" 
    something stored in an external file.

 part #2: PDF interpreter fixes (pdf_font.ps, pdf_ops.ps) :

- Force the "wy" parameter of "d0", not only of "d1", in Type 3 
  charproc streams to 0. Comment changed to suggest this is an action 
  is expected to be done as part of enforcing the metrics stored in 
  the PDF (which always imply wy == 0), and not some strange 
  behaviour in Reader.

- A detail in PDF1.7 Ref 5.3.3 "Text Space Details" states that "wy" 
  (or "wx" in WMode 1) must be forced to 0 in PDF text space too, not 
  only in PDF glyph space. To implement this with non-[s 0 0 s tx ty] 
  font matrices, a different method is used: decode "show" strings 
  and extract glyph widths with "cshow", put these into an array, 
  then render the text with "x/yshow".
  - since "wy/x" = 0 in glyph space, the code does not need to use 
    "idtransform", a "div" by "FontMatrix.xx" is sufficient;
  - use a trick (see comment in code) when "FontMatrix.xx" = 0.

CIDFonts are not changed. Those with a "straight" matrix continue to 
work, but there's no improvement if they have a weird "/FontMatrix". 
I think this would require a radical change, and the result will be 
much slower than it is now.

part #3: supplemental ps2write fixes (in opdfread.ps).

- opdfread.ps assumed the FontMatrix is a simple scaling by 0.001;
  generalize the computations to work with an arbitrary matrix.

- Implement a detail of PDF1.7 Ref 5.3.3 "Text Space Details" (nuking 
  the "wy" in text space) if a non-[s 0 0 s tx ty] "/FontMatrix". 
  Similar to the change in the main PDF interpreter, but shorter 
  because opdfread.ps does not handle vertical writing or CID fonts. 

Also "wy" in "d0"/"d1" is already 0 (see patch for pdfwrite), so 
needs no adjustment.

</pre>
<p>[lib/pdf_font.ps src/gdevpdtt.c src/gdevpdte.c lib/opdfread.ps src/gdevpdti.c src/gdevpdtt.h lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-08-29T173636.852840Z"></a>
2007-08-29T17:36:36.852840Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handling) : pdfwrite recieved meanless font names.

DETAILS :

Bug 688006 "Font names used with pdfwrite are strange with GS, OK with Adobe Distiller".

This is a continuation for the Revision 5862 change 
made on Wed Apr 20 20:05:41 2005 UTC (2 years, 4 months ago) by ray.

Thanks to Edward for a code sample for accounting font style string.

1. (zbfont.c) When a Postscript file is generated with Adobe printer driver for Windows,
the old code (sinse Revision 5862) extracts OrigFintName 
for building a meanful FontName.
This patch adds an use of OrigFontStyle as suggested by Edward,
so the FontName is created in the form "Arial,Bold".

2. (zfcid1.c) The old code sometimes dropped the good FontName in zbuildfont11 
due to an extra call to get_font_name. Few lines above
the function build_gs_TrueType_font creates the good font name
during an indirect call to sub_font_params, so the call to  
get_font_name is not necesary when OrigFontName presents.
However it is still necessary with regular FontType 11
because they have no FontName and sub_font_params
doesn't use CIDFontName.

3. (zfcid0.c) Applying the (2) change to FontType 9 as for symmetry.
We're tested it a few, but we have no untrivial examples
when a FontType 9 is embedded with OrigFontName.
Maybe (just guessing) ones could be obtained with installing
Adobe Type Library and printing with Adobe printer driver.

4. After doing all above, we unexpectedly detected a regression 
with comparefiles/korea.ps : all Korean glyphs were replaced with
hollow boxes. Analyzing it we found that the document defines a 
composite font with to CIDFontType 2 descendent,
which both appears to be same font. In same time,
the CMap supplies different CIDs for those 2
descendents for a half of code space. While the old code
used meanless unique font names, those 2 descendents
were converted to 2 PDF fonts. When we switched to the meanful name,
which of course is same for both descendents,
pdfwrite tries to merge the descendents.
However doing so it assumed same character mapping
for both descendents.

To fix this problem more changes are done to pdfwrite :

4.1. (gdevpdtf.h) The font descriptor of a type 0 font now stores font_index,
which is the index of its descendent font in the DescendentFonts array
of the source Type 0 font. This happens because in PDF type 0 fonts
always have a single descendent.

4.2. (gdevpdtf.c) Added an initialization for the new field.

4.2. (gdevpdtt.c, gdevpdtt.h) pdf_obtain_parent_type0_font_resource creates
unique type 0 fonts for each descendent in spite of same font name.

4.3 (gdevpdtc.c) pdf_obtain_parent_type0_font_resource needs 
font index as a new argument.

4.4. (gdevpdtt.c) pdf_find_type0_font_resource also takes the new parameter.

With Korea.ps we create 2 font subsets where a single font
would be enough. An optimization may be done with a dynamic
check for encoding conflicts rather than creating another font
for each font index of the CMap. Delaying it for better times.

</pre>
<p>[src/zfcid0.c src/gdevpdtc.c src/zfcid1.c src/gdevpdtt.c src/zbfont.c src/gdevpdtf.c src/gdevpdtt.h src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2007-08-29T094215.384249Z"></a>
2007-08-29T09:42:15.384249Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Place thr True Type interpreter and its data into stable memory (continued 2).

DETAILS :

Bug 688429 "Crash on vmreclaim".

The revision 8209 change is incorrect 
because it effectively frees a memory allocator instance.
Thanks to Henry for pointing this out.

This is the second attempt to fix that...

</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2007-08-29T093629.695665Z"></a>
2007-08-29T09:36:29.695665Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Place thr True Type interpreter and its data into stable memory (continued).

DETAILS :

Bug 688429 "Crash on vmreclaim".

The revision 8209 change is incorrect 
because it effectively frees a memory allocator instance.
Thanks to Henry for pointing this out.

</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2007-08-29T070901.667008Z"></a>
2007-08-29T07:09:01.667008Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font rendering) : CIDFontType 9 missed PaintType.

DETAILS :

Bug 687970 "PaintType and StrokeWidth ignored with CIDFonts".

To make a decision about filling or stroking,
the old code uses PaintType of the current font,
However with CIDFont 9 it is a Type 1 subsidiary,
which has no PaintType.

The patch implements the 'or' logic for the PaintType of the root font
and the PaintType of the current font. We believe it should 
correctly handle cases when PaintType 2 is set to
a root font or to its descendent. However we have not enough 
practical test cases to test all varuiants.

Particularly, we would like to test a Type 0 font with
2 descendents, each of which is CIDFontType 9
and they have didfferent PaintType.
In such case this patch may need a further improvement.

The desision about filling or stroking a character is done in type1exec_bbox
and in nobbox_finish. The patch also passes a pointer to gs_text_enum_t instance 
to type1exec_bbox to provide the data for the decision.

</pre>
<p>[src/zfcid0.c src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2007-08-28T161827.199037Z"></a>
2007-08-28T16:18:27.199037Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized defaultWidthXwhile while converting a Type 1 font into Type 2.

DETAILS :

Bug 689406 "Valgrind: Uninitialised defaultWidthX in psf_convert_type1_to_type2()".

The last patch appears incomplete and doesn't compile. 
Fixing now.

</pre>
<p>[src/gdevpsf2.c src/gdevpsf.h src/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2007-08-28T160612.766158Z"></a>
2007-08-28T16:06:12.766158Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized defaultWidthXwhile while converting a Type 1 font into Type 2.

DETAILS :

Bug 689406 "Valgrind: Uninitialised defaultWidthX in psf_convert_type1_to_type2()".

Thanks to Alex for the problem localization and for the suggested patch.
This change is equivalent to Alex's patch
expect the better documentation. 
See comment in code.

The old code accessed pfont->data.defaultWidthX,
which is never used or initialized elsewhere with a Type 1 font,
because defaultWidthX is a Type 2 feature.

</pre>
<p>[src/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2007-08-28T063408.453844Z"></a>
2007-08-28T06:34:08.453844Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct obvious typo in default rgb to cmyk color mapping. It makes
no sense to use the 'g' component to calculate the 'k' for black
generation and undercolorremoval.
</pre>
<p>[src/gxcmap.c]</p>
</blockquote>

<p><strong><a name="2007-08-27T204427.984183Z"></a>
2007-08-27T20:44:27.984183Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Place the True Type interpreter and its data into stable memory.

DETAILS :

Bug 688429 "Crash on vmreclaim".

With the old code gx_ttfReader and ttfInterpreter instances
were prematurely released by 'restore' while 
gs_font_dir and cached_fm_pair instances contain
references to them. Since TT interpreter is a global singleton,
we're safe to store it in stable memory.

</pre>
<p>[src/gxttfb.c src/gxccman.c]</p>
</blockquote>

<p><strong><a name="2007-08-27T011647.532710Z"></a>
2007-08-27T01:16:47.532710Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of include files to define a macro before it's used.
The undefined macro in the old code passed as a function declaration.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2007-08-27T005359.301536Z"></a>
2007-08-27T00:53:59.301536Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add HP-UX to the long list of systems that need both time.h and sys/time.h

</pre>
<p>[src/time_.h]</p>
</blockquote>

<p><strong><a name="2007-08-26T233221.633797Z"></a>
2007-08-26T23:32:21.633797Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Cast the pointers to the same type because aC++ compiler cannot compare
pointers of different types.

</pre>
<p>[contrib/japanese/gdevmjc.c]</p>
</blockquote>

<p><strong><a name="2007-08-26T232457.663909Z"></a>
2007-08-26T23:24:57.663909Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo in a contributed driver for HP color printers detected by aC++
compiler. Assuming that pointers compare as unsigned values, the fix doesn't
have any run-time effects.

</pre>
<p>[contrib/gdevcd8.c]</p>
</blockquote>

<p><strong><a name="2007-08-23T180019.425565Z"></a>
2007-08-23T18:00:19.425565Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When the same name maps to more than one glyph change the name.
Don't treat /.notdef names specially because glyphs corresponding
to /.notdef names can look different. Bug 689408, customer 770.

DIFFERENCE:
None
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-08-22T063836.487276Z"></a>
2007-08-22T06:38:36.487276Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Ignore invalid entries in loca table.

DETAILS : 

Some problematic TrueType fonts have loca table that
the offset to a data in glyf table is larger than
the size of glyf table. In previous implementation
since trunk revision 5707 (ghostscript-8.57), when
such invalid entry is found, the font loading procedure
is immediately aborted and invalid font error is
returned. To continue the problematic TrueType object,
the invalid entries of loca tables now are ignored and
the font loading procedure is continued. If all entries
are invalid, the invalid font error is returned.

After the sorting of loca table entries by their values,
the invalid entries with too large offsets are collected
in the end of the sorted loca entries (psortary[]).
By this patch, the sorted loca entries are scanned from
from the end to the beginning, and the number of valid
entry is counted (num_valid_loca_elm). By this number,
the invalid loca entries are initialized to have null
glyph (the data size of glyph is set to 0).

By this patch, bug 689347 is fixed.

</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2007-08-21T222658.681438Z"></a>
2007-08-21T22:26:58.681438Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct more changelog substitution errors. Bug 689388.
</pre>
<p>[doc/History8.htm doc/Details8.htm]</p>
</blockquote>

<p><strong><a name="2007-08-20T171522.306956Z"></a>
2007-08-20T17:15:22.306956Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix command list-based devices on 64-bit platforms. Ghostscript always writes
int values to the command list but old code interpreted the bit pattern as a
long int, causing conversion of the negative values to large positive ones.
Bug 689353.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-08-20T171051.151066Z"></a>
2007-08-20T17:10:51.151066Z Ray Johnston</strong></p>
<blockquote>
<pre>
Use the color lookup cache in wtsimdi_contone_get_bits_rectangle.
This results in a 6% overall performance improvement on the 12
performance test files, and up to a 38% improvement on WW2KA122.prn
Also clean up the MSVC and gcc warnings.  Customer #951.

DETAILS:

There is a note about the allocation of cmyk_buffer relying on
the alignment when using gs_malloc. The note also describes the
method to remove this reliance on the alignment assumption.

</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-08-17T185033.373530Z"></a>
2007-08-17T18:50:33.373530Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix stdint.h related problems with the Cygwin build (gcc 3.4.4)

DETAILS:

There was a workaround for an obsolete version of Cygwin tools that had
u_int32_t (and other types) instead of uint32_t that is standard on linux
and Cygwin stdint.h now. These changes were needed for the PCL, XPS and
language_switch builds -- the gs build worked thanks to autoconf.
</pre>
<p>[src/unix-gcc.mak src/stdint_.h]</p>
</blockquote>

<p><strong><a name="2007-08-17T135812.668319Z"></a>
2007-08-17T13:58:12.668319Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fully initialize pdf_resource_t object allocated in pdf_alloc_aside()
to avoid a Valgrind warning. Bug 688907.

</pre>
<p>[src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2007-08-17T130219.679286Z"></a>
2007-08-17T13:02:19.679286Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add missing initialization of txy_fixed_valid field. Since the fixed
coordinates are valid, the patch eliminates possible re-calculation of the
fixed coordinates but doesn't affect the end result. Bug 688914.

</pre>
<p>[src/gdevpdfv.c]</p>
</blockquote>

<p><strong><a name="2007-08-17T044922.864920Z"></a>
2007-08-17T04:49:22.864920Z Ray Johnston</strong></p>
<blockquote>
<pre>
This set of changes is an example for users or Artifex customers
that want to intercept the color spaces and perform their own
color space conversion for the CIEBased or ICCBased color spaces,
converting all of these spaces to the PostScript color management
link space "CIE XYZ". There were changes needed to implement this
that transcended the original custom color callback scheme, but
the approach taken is intended to minimize changes to the color
space processing.

Artifex customer #330

DETAILS:

Rather than rely on the hack in gx_cie_to_xyz_alloc that sets the
pis->cie_render to ~0, we establish a separate boolean for this,
cie_to_xyz which indicates that we don't need a CRD (gxistate.h,
gsistate.c, gsciemap.c, gscie.c). Note that the gx_cie_to_xyz_alloc
function is also used in the lab_range function in gdevpdfk.c
to construct an L*a*b* ICC conversion space for the pdfwrite
device.

The 'pclient_color_space_data' is now handled in the ENUM and
RELOC procedures for the gs_color_space base structure shared
by all color spaces (gscspace.c). A side effect of this is that
the pclient_color_space_data structure MUST be allocated with
appropriate GC structure calls an with an appropriate GC type
of macro to identify the structure for the GC and establish
the ENUM and RELOC hooks. This was needed to allow a gs_imager_state
structure to be allocated for the CIE color spaces and to have
both structures to be 'known' to the GC logic.

The CIE_LOAD_CACHE_BODY macro and the gx_install_cie_abc function
are now exported in gscie.h rather than local to gscie.c so that
gsncdummy.c and other custom callback clients can use them.

Finally, the gsncdummy.c module now includes example handling
that allow the graphics library to convert colors to XYZ if
the original color space was one of the CIEBased or ICCBased
spaces. Since CIE XYZ to L*a*b* is a direct conversion, this
allows clients to work with device independent color.

The conversion from XYZ to ICC L*a*b* code exists in gdevpdfk.c
in the function xyz_to_lab() which might be useful enough to
export in the future. For the short term clients can 'clone'
this small function if needed into their own color callback
processing.

Note that -dUseCIEColor (or << /UseCIEColor true >> setpagedevice
PostScript sequence) will mean that all Device* colorspaces also
get mapped through the Default* colorspaces to XYZ (DeviceGray,
DeviceRGB and DeviceCMYK).

</pre>
<p>[src/gxistate.h src/gscie.h src/gsistate.c src/gsncdummy.c src/gsciemap.c src/gscspace.c src/gscie.c]</p>
</blockquote>

<p><strong><a name="2007-08-14T212855.383671Z"></a>
2007-08-14T21:28:55.383671Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert r8187, which is part of the CJKV patch set reverted in r8190.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-08-14T204829.233978Z"></a>
2007-08-14T20:48:29.233978Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Removed CJK patches.
</pre>
<p>[examples/cjk src/zchar42.c lib/gs_cidtt.ps src/gxfont42.h src/gstype42.c src/unixinst.mak src/zchar1.c lib/cjkv lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-14T185348.875152Z"></a>
2007-08-14T18:53:48.875152Z Ralph Giles</strong></p>
<blockquote>
<pre>
Throw an diagnostic error if the wts_plane_* halftone files cannot
be opened. Propagate the error and clean up properly to avoid a 
segfault.

Also #ifdef DEBUG protects some debug printouts to reduce noise.
</pre>
<p>[src/gdevwts.c src/gdevimdi.c]</p>
</blockquote>

<p><strong><a name="2007-08-14T161828.564745Z"></a>
2007-08-14T16:18:28.564745Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the path to the icc link profile to the current working 
directory, the same path used for the wts_* halftone files and
for link.icc in gdevimdi.c. Motivated by simplifying running
the device in regression testing.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-08-13T170758.742285Z"></a>
2007-08-13T17:07:58.742285Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the library files from the cjkv to the romfs file list. This 
restores executability of the build with COMPILE_INITS=1 which
was broken by r8185.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-08-13T160016.465824Z"></a>
2007-08-13T16:00:16.465824Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed DESTDIR support in Koji Otani's CJK patches
</pre>
<p>[src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2007-08-13T100805.772194Z"></a>
2007-08-13T10:08:05.772194Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added CJK patches from Koji Otani
</pre>
<p>[src/zchar42.c examples/cjk lib/gs_cidtt.ps src/gxfont42.h src/gstype42.c lib/cjkv/cjkcidcm.ps lib/cjkv/baseutil.ps src/zchar1.c lib/cjkv/cjkvttcf.ps examples/cjk/all_ac1.ps lib/cjkv lib/cjkv/cjkvinit.ps examples/cjk/all_ag1.ps examples/cjk/iso2022.ps examples/cjk/all_aj1.ps examples/cjk/gscjk_ac.ps examples/cjk/all_ak1.ps examples/cjk/all_aj2.ps lib/cjkv/tt11util.ps lib/cjkv/cjkfnmap.ps examples/cjk/gscjk_ag.ps lib/cjkv/tt42util.ps src/unixinst.mak examples/cjk/gscjk_aj.ps examples/cjk/gscjk_ak.ps examples/cjk/article9.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-12T172929.699921Z"></a>
2007-08-12T17:29:29.699921Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use inline and intristic functions to improve the speed of CIE cache set-up.
Bug 689153, customer 850.

</pre>
<p>[src/gscie.h src/gscie.c]</p>
</blockquote>

<p><strong><a name="2007-08-11T035731.402230Z"></a>
2007-08-11T03:57:31.402230Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change stream keyword handling to accommodate yet another kind of a broken PDF.
Bug 689400, customer 580.

DETAILS:
Valid stream keyword can be followed by (\n) or (\r\n). Invalid PDF files
accepted by Acrobat Reader can insert blank characters or terminate the stream
with (\r). Old code tolerated ( \r) termination, but didn't tolerate ( \r\n).
New code assumes blank characters and (\r) termination at the same time are not
probable and tolerates ( \r\n) or (\r) but not ( \r).

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2007-08-10T081558.076010Z"></a>
2007-08-10T08:15:58.076010Z Henry Stiles</strong></p>
<blockquote>
<pre>
This code change should have been committed in tandem with the change
in revision 8055 (see 8055 log for details).
</pre>
<p>[src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2007-08-09T181259.257962Z"></a>
2007-08-09T18:12:59.257962Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update the testing.cfg.example to match the current (after rev 7854) of
the regression scripts in toolbin/tests. The r7854 had included a
testing.cfg file instead of the example file (see comment for rev 7862).

DETAILS:

I don't really like the difficulty of changing the comparegs directory in
the current way gsconf.py processes the testing.cfg. IMHO, it would make
sense to allow for some of the higher level directory variables to be
used, simplifying changing it for testing from a particular gs checkout
that has been modified. Also having some of the other values able to
be relative to 'root' (for the comparefiles, database, etc.) would be
handy.

A task for later along with better documentation.

</pre>
<p>[toolbin/tests/testing.cfg.example]</p>
</blockquote>

<p><strong><a name="2007-08-08T001249.260263Z"></a>
2007-08-08T00:12:49.260263Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Updating CMAP files as per bug report #689386

DETAILS:

See:

ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/00README

for more details.

</pre>
<p>[Resource/CMap/UniJIS2004-UTF16-V Resource/CMap/UniJIS2004-UTF32-H Resource/CMap/UniJIS2004-UTF8-V Resource/CMap/UniJIS2004-UTF16-H Resource/CMap/UniJIS2004-UTF8-H Resource/CMap/ETenms-B5-V Resource/CMap/ETenms-B5-H Resource/CMap/UniCNS-UTF32-H Resource/CMap/UniCNS-UTF16-H Resource/CMap/UniCNS-UTF8-H Resource/CMap/UniJISX02132004-UTF32-V Resource/CMap/UniJIS2004-UTF32-V Resource/CMap/UniJISX02132004-UTF32-H]</p>
</blockquote>

<p><strong><a name="2007-08-07T004018.162968Z"></a>
2007-08-07T00:40:18.162968Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify MSVC 7 run time checks. Change the order of condition checking to avoid
returning an uninitialized value. The code is algorithmically equivalent,
except it doesn't assign anything instead of assigning an uninitialized value.
Bug 689387

</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2007-08-05T135526.215718Z"></a>
2007-08-05T13:55:26.215718Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong encoding of Metadata.

DETAILS :

Bug 689244 "Wrong encoding of title in metadata for PDF/A".

Thanks to mpsuzuki for preliminary analyzis.

1. See the documentation change.
2. gs_pdfwr.ps converts the specified name into a translation table.
   We believe that popolar encodings translate into single Unicode
   characters, so we don't implement Unicode compositions now.
   This may be a subject of further improvements. In this case
   the generated integer array should use a complex format
   for representing the translation table.
3. The translation table is passed to pdfwrite 
   as a new device parameter DSCEncodingToUnicode.
4. When it is specified, gdevpdfe.c performs the translation
   first into UTF-8, then into XML.
5. The new modules ConvertUTF.c, ConvertUTF.h are obtained from
   Unicode Inc.

</pre>
<p>[src/gdevpdfx.h src/ConvertUTF.c src/gdevpdfp.c doc/Ps2pdf.htm src/ConvertUTF.h src/gdevpdfe.c src/gdevpdfb.h src/devs.mak lib/gs_pdfwr.ps lib/gs_agl.ps]</p>
</blockquote>

<p><strong><a name="2007-08-04T214253.446406Z"></a>
2007-08-04T21:42:53.446406Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of tests to identify fonts with FID attribute that have been
both scaled and copied. Bug 689390

DETAILS:
Prior to this revision Ghostscript mis-recognized such fonts as scaled-only
in build_gs_font() and rejected with /invalidfont during font validation.

</pre>
<p>[src/zfont.c src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2007-08-04T143004.276917Z"></a>
2007-08-04T14:30:04.276917Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Take rendering intent type from the /Intent key of the CRD created by Adobe
ProcSet "Adobe_AGM_Core 2.0 0" and pass it to the graphic state. Bug 689379

</pre>
<p>[lib/gs_lev2.ps lib/pdf_ops.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-03T162944.050173Z"></a>
2007-08-03T16:29:44.050173Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fix for seg fault caused by undersized buffer as reported in bug report #687397

DETAILS:

Although the patch submitted by the reporter did appear to fix the problem,
it was more masking it than fixing it. While the analysis of the problem
being that ss->Items was too small was correct, the real cause was a rounding
problem in siscale.c/contrib_pixels(). The problem did not happen on my Mac,
but was reproduced up on peeves because of differnces in the way the two
systems perform rounding.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2007-08-03T154603.840774Z"></a>
2007-08-03T15:46:03.840774Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a substitution script error in the change logs.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2007-08-02T085309.078741Z"></a>
2007-08-02T08:53:09.078741Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency in clist) : Write transparent paths and images to clist as high level objcts.

DETAILS :

Bug 689186 "PDF segfaults or exits with no output".

With the test case the old code creates a 2.5Gb clist file, 
because it transformes transparent paths and images into rectangles.
The new code writes them as high level objects,
so that the clist file reduces to 477Mb.

1. (gdevp14.c) The old code appears to provide all necessary
methods for writing paths and images to clist as high level objects,
but doesn't call them. To activate them we simply replace default implementations
with forwarding methods in pdf14_clist_*_device.

2. (gdevp14.c) The old code sets the lop_pdf14 flag to
the clist reader's imager state. Particularly
it may be set when calling p14dev->pdf14_procs->put_image.
It causes gx_image_enum_begin to fail,
and the image silently dissappers from the output.
We fixed it with resetting the flag immediately before
calling p14dev->pdf14_procs->put_image.
A better way would be to synchronize log_op
in clist_create_compositor, but we don't like to
write it to all bands as other compoitor commands do.

3. (gdevp14.h, gdevp14.c) New fields inserted into pdf14_device_t
to provide a synchronization of encode_color, decode_color, get_color_mapping_procs,
get_color_comp_index with changing color_info. Debugged with pkmraw -r300 Bug688631.pdf .
Without them the 1bpc color conversions 
were called from pdf14_cmap_cmyk_direct with an 8bpc color,
causing an almost white page instead blue axial and radial shadings.

4. (gdevm4.c) The old code defines a wrong color_info for mem_mapped4_device.
It defines 3 components instead the correct value 4 (3 colored and 1 gray).

5. (gdevp14.c) During the clist playback the new code does not change color_info
for the clist writer (p14dev->target->color_info). We marked this change
with the comment :
/* Disabled because *p14dev has no forwarding methods during the clist playback. */
We ise #if 0 because we're not sure why the old code does so.
We suspect it was done by a mistake and has no any effect.
#if 0 will keep it for a while.

More possible optimization :

1. Use pdf14_buf::bbox when back dropping a transparency buffer.
2. Use pdf14_buf::rect to restrict bands which set up the transparency compositor.
   Now it is written to all bands.
3. Write text to clist as high level object.    

</pre>
<p>[src/lib.mak src/gdevp14.h src/gdevm4.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-08-02T040811.471770Z"></a>
2007-08-02T04:08:11.471770Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind - initialise both operands of the product. Valgrind considers
a product of 0 and an uninitialized value to be uninitialized. Bug 689384.

</pre>
<p>[src/gximage3.c]</p>
</blockquote>

<p><strong><a name="2007-08-02T012214.242094Z"></a>
2007-08-02T01:22:14.242094Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the interpreter library version number to match the one in 
version.mak. The previous commit just improved the comments.
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-01T235658.305050Z"></a>
2007-08-01T23:56:58.305050Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the revision number post release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-08-01T223801.441981Z"></a>
2007-08-01T22:38:01.441981Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some cut-and-paste typos in the change log update.
</pre>
<p>[doc/Changes.htm doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2007-08-01T221056.427930Z"></a>
2007-08-01T22:10:56.427930Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs and the open bug list or final release.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>
</body>
</html>