2011-02-07T14:10:27.833602Z Chris Liddell
Some updates to the details of the UFST and Freetype related information. Plus adding the warning about Xfonts pending removal.[doc/Make.htm doc/Xfonts.htm]
2011-02-05T15:29:32.296497Z Chris Liddell
As we plan to deprecate Xfonts in a future release, add a warning message to this effect when an Xfont is used, as follows: "Warning: the Xfonts feature is deprecated and will be removed in a future release." No cluster differences expected.[base/gxccman.c]
2011-02-05T15:27:25.033646Z Chris Liddell
Merge r12117 from the "halftone" branch into trunk, the original commit comment says: Fix bug in bit devices rgb mapping procedure; in the ncomp == 1 case it was only setting the first component. This was causing indeterminisms in calling code, which has been giving vastly different timings in Norberts tests. This has apparently been here since revision 3318.[base/gdevbit.c]
2011-02-04T15:51:42.379449Z Robin Watts
Fix problem with shifting in gsroprun.c. I had systematically got this wrong throughout the code, but fixed it everywhere except this one case in an earlier commit. This completes the fix. No cluster changes expected.[base/gsroprun.c]
2011-02-03T12:30:28.178697Z Chris Liddell
A final tweak to the FAPI/UFST code to keep C compilers less liberal than gcc happy (specifically Visual C). No functional changes.[psi/fapiufst.c]
2011-02-02T18:27:57.905008Z Chris Liddell
A couple of minor UFST related tweaks to account for differences between UFST 6.2 and UFST 5.x.[psi/fapiufst.c base/gxfapiu.c]
2011-02-02T17:18:09.939035Z Ray Johnston
Change Windows makefiles extensively for 64-bit issues: 1. Command line nmake works now for 32-bit build on 64-bit OS 2. 64-bit builds use different directories for objects to allow 32 and 64 bit builds to be alternated without confusion. 64-bit objects have '64' suffix to the 32-bit objects which remain in the same places 3. 64-bit binaries are now named uniquely, e.g. gsdll64.dll and gswin64.exe Binaries coexist in 'bin' directory since names are unique. 4. 'Style' changes to the makefiles to remove the '32' suffix from files that are not 32-bit specific -- hopefully will prevent future confusion. Tested with VS 2005 and VS 2008 as well as with GhostPDL.sln (to make sure the pcl, xps, and language_switch builds don't break.[psi/msvc64.mak psi/gsdll64.def psi/dwsetup.cpp psi/msvc.mak psi/dwmain.c psi/dw64c.def psi/msvc32.mak psi/dwmain64.def psi/dwdll.c base/msvctail.mak psi/dwimg.c]
2011-02-02T15:34:53.024741Z Ken Sharp
Remove 4 cases where lines had apparently spurious leading spaces, this seriously confused nmake and refused to build on Windows. No cluster differences expected.[psi/msvc32.mak]
2011-02-02T15:14:53.428205Z Ken Sharp
Fix (ps2write) : Enable ps2write on PCL Bug #691881 "ps2write broken with GhostPCL" ps2write formerly required 4 'resource' PostScript files stored on disk in order to write a PostScript header to the output file. These files have now been converted into 'C' header files and included in the source in earlier revisions. This commit removes the last barrier to ps2write working with PCL (and other non-PostScript languages) by removing a disk-based check for opdfread.ps. No differences expected.[base/gdevpdfu.c]
2011-02-02T14:55:37.673202Z Robin Watts
Add cups files to VS project. This is a very simple, clean patch to the gs visual studio project file, so (famous last words) can't affect the cluster build and shouldn't conflict with anyone else.[ghostscript.vcproj]
2011-02-02T14:12:15.676565Z Chris Liddell
A set of changes to make it easier to use the UFST with Ghostscript and to get us closer to having the option of the UFST handling font types other than the Microtype fonts. The UFST build, using the default COMPILE_INITS=1 will now include the Microtype FCO files in the rom file system along with the other initialisation files (it does not currently strip out the normal Postscript fonts in Resource/Fonts), and setup default values for the various paramters required to have Ghostscript use the Microtype fonts (these can still be overridden on the command line). For the build with COMPILE_INITS=0, the default paths will use the path to the UFST you specify for configure, or nmake on Windows. Included in this revision are changes to prevent the UFST version 5.x (or less) from trying to handle non-Microtype fonts, and allow it to safely fall back to the Freetype (or a.n.other FAPI plugin). UFST 6.2 or better will try to handle all fonts types, but this is not yet reliable. Currently, this code only replaces the UFST memory management on UFST 6.2 and above (this is purely because I haven't time to test this capability on UFST 5 yet). A further change will be committed shortly to the UFST 5 sources to force the UFST to use the Ghostscript stream IO instead of the standard lib file IO on the Windows builds (this has been in place for the Unix/Linux UFST builds for some time).[psi/zfapi.c base/Makefile.in Resource/Init/gs_fntem.ps base/configure.ac psi/fapiufst.c base/gxfapiu.c psi/msvc32.mak Resource/Init/gs_fapi.ps]
2011-02-02T13:30:54.074131Z Ken Sharp
The ps2write dependency on the new header files was incorrect (over-enthusiastic copy and paste error)[base/devs.mak]
2011-02-02T11:23:07.465859Z Chris Liddell
Allow building with the system (shared) lcms library. Bug 691644.[base/lib.mak base/Makefile.in base/configure.ac]
2011-02-02T09:28:15.868989Z Ken Sharp
Remove the check on opdfread.ps from gs_pdfwr.ps as this is no longer shipped as a PostScript file in /gs/Resource[Resource/Init/gs_pdfwr.ps]
2011-02-02T08:46:11.323868Z Ken Sharp
Update two make files that had dependencies on opdfread.ps, which has been removed from the PostScript file system.[psi/psromfs.mak base/unixinst.mak]
2011-02-02T08:27:43.587977Z Ken Sharp
It seems that three of the files removed in revision 12093 are used by devices other than ps2write. Replacing those files.[Resource/Init/gs_mro_e.ps Resource/Init/gs_agl.ps Resource/Init/gs_mgl_e.ps lib/gs_mro_e.ps lib/gs_agl.ps lib/gs_mgl_e.ps]
2011-02-02T08:14:36.361918Z Ken Sharp
Fix ps2write : Don't depend on the PS file system for resources. ps2write needs up to 4 resource files which are normally stored in the PostScript ROM file system. However on PCL and other languages these resources are (obviously) not present, so the output is incomplete. Move the relevant files from PostScript into 'C' as header files. Remove the files from the PostScript file system to save ROM file system space. Put the removed files into the gs/lib folder for safe-keeping. Add the .h files as dependencies for gdevpdfu.c in the build system so that changes to these files cause a rebuild. No differences expected.[base/opdfread.h Resource/Init/gs_mro_e.ps Resource/Init/gs_agl.ps Resource/Init/gs_mgl_e.ps base/gs_mro_e.h lib/opdfread.ps base/gs_agl.h base/gs_mgl_e.h Resource/Init/opdfread.ps base/gdevpdfu.c lib/gs_mro_e.ps base/devs.mak lib/gs_agl.ps lib/gs_mgl_e.ps]
2011-02-01T22:11:44.446124Z Marcos H. Woehrmann
Fix for missing arch.h when compiling gdevcups.c with parallel make.[base/devs.mak]
2011-02-01T21:46:27.115736Z Ray Johnston
Fix for PDF 1.7 fts_09_0910.pdf where the /Font is in an ExtGState instead of set by the Tf operator. In this case, the font is an indirect reference, not a font resource name. Reported by customer 532.[Resource/Init/pdf_draw.ps]
2011-02-01T17:07:50.035956Z Chris Liddell
Freetype expects the resolution we supply it to be in "glyph orientation" - not a problem until we have a non-square resolution, and rotated glyphs! Bug 691920.[psi/fapi_ft.c]
2011-02-01T14:00:46.378487Z Ken Sharp
Fix (pdfwrite) : Always write a ToUnicode CMap for TrueType fonts Bug #691907 "PDFs with TrueType fonts from Windows PostScript files not searchable" Patch from SaGS. When choosing whether to embed a ToUnicode CMap, always embed if the font type is TrueType. This is because TT fonts are always embedded as symbolic, and we now no longer add Encodings to Symbolic TT fonts (violates spec), which results in PDF files where the text is unsearchable and cannot be successfully copy/pasted in the absence of a ToUnicode CMap. It is possible that the ToUnicode CMap is incorrectly generated, but this is no worse than having no CMap at all. No expected differences since ToUnicode CMaps are not used in rendering.[base/gdevpdtw.c]
2011-02-01T11:57:26.132691Z Robin Watts
Add new 'Profile' configuration to Visual Studio targets. This builds objects/binaries with debugging symbols enabled, but otherwise full optimisation. The changes are entirely within the VS files, except for a few small tweaks to the MSVC makefile. These changes should mean that it is possible to use the makefiles in a way that doesn't rely on recursive make calls (even though we leave the 'debug' targets in for now that do use that). No cluster differences expected or shown in testing.[/trunk/ghostpdl/win32/xps.vcproj ghostscript.vcproj /trunk/ghostpdl/win32/GhostPDL.sln /trunk/ghostpdl/win32/pcl.vcproj /trunk/ghostpdl/win32/svg.vcproj psi/msvc32.mak /trunk/ghostpdl/win32/language_switch.vcproj]
2011-02-01T08:34:27.091701Z Ken Sharp
Fix (pdfwrite) : permit symbolic fonts in PDF/A output Bug #691877 "Invalid text when converting to PDF/A" TrueType fonts were being emitted as non-symbolic when PDF/A output was selected. This was causing the text to be incorrect, because the fonts actually are symbolic and Acrobat was unable to apply the correct decoding. This will result in more text being unsearchable/copyable but the rendering result is correct, which is more important. No differences expected, PDF/A output not tested on the cluster.[base/gdevpdtd.c]
2011-01-31T18:10:10.028647Z Robin Watts
While searching for performance on an ARM based dev board, I developed 2 new versions of the skip_white_pixels macro. The first uses native int sized checking, and should be faster on long run matching. I have as yet been unable to find any files that show this expected speedup. The second should be faster on architectures (such as ARM) where the tradeoff in the test is different (and where pointer arithmetic is cheaper than array indexing). Both versions are disabled by default until the case for their existence has been proven, but are committed here to avoid bitrot. No cluster differences expected, as the default code does not change.[base/scf.h]
2011-01-31T12:32:10.322306Z Robin Watts
Tweak to the PxM output code; spot that the output is /dev/null (or nul:) and avoid saving it. This is a port of code from gdevbit and gdevwts, and is purely useful for testing/timing/profiling purposes. No cluster differences expected.[base/gdevpbm.c]
2011-01-31T11:19:53.283257Z Ken Sharp
Revert minor changes accidentally committed in revision 12082.[Resource/Init/Fontmap.GS Resource/Init/cidfmap lib/PDFA_def.ps]
2011-01-31T11:15:05.175916Z Ken Sharp
Add the two new make files required for the altered CUPS build, these were accidentally omitted in revision 12080.[Resource/Init/Fontmap.GS base/lcups.mak Resource/Init/cidfmap lib/PDFA_def.ps base/lcupsi.mak]
2011-01-31T11:09:11.349638Z Ken Sharp
Undo changes to PDFX_def.ps accidentally committed as part of the CPS changes.[lib/PDFX_def.ps]
2011-01-31T11:06:11.139867Z Ken Sharp
More changes for CUPS, mostly to the build system. We now build the CUPS device unconditionally on Windows, using the recently added local partial copy of the CUPS library sources. This change also builds CUPS on Linux either using the system shared libraries (if available) or using the same partial copy of the library sources, if *specifically* directed to use this. On Windows CUPS is now always built and installed. On Unix systems the behavious is as follows: ./configure cups not installed - no cups device ./configure cups is installed - cups device linked to system cups shared libraries. ./configure --disable-cups - no cups device, regardless of cups libs installed on system ./configure --with-local-cups - cups device with the partial cups code, regardless of cups libs installed on system ./configure --with-local-cups --disable-cups results in no cups device. No differences expected as the cluster should still build and run with the system CUPS libraries just as it always has.[base/winlib.mak lib/PDFX_def.ps base/unix-end.mak base/gs.mak cups/cups.mak base/Makefile.in base/configure.ac cups/libs/configlinux.h psi/msvc32.mak base/msvclib.mak base/devs.mak base/msvctail.mak]
2011-01-29T15:35:32.332503Z Ken Sharp
More changes to the CUPS sources so they will compile on various systems: language.c - if __APPLE__ is true, includes code which uses what I think is Carbon Framework calls and structures, but does not #include any of the .h files. Modified to #undef __APPLE__ to avoid this. ppd.c - Same problem as for MSVC, the include file string.h seems to prevent the C string.h being included, and so leaves strchr undefined. Now unconditionally provide a prototype for strchr. localize.c - Another problem with string.h. This doesn't exist on the MSVC build, but unconditionally providing a prototype fro strcmp doesn't cause an error. The code now builds on MSVC, Linux and Mac. Lots of warnings, but I don't propose to try and deal with those as they would require extensive alterations to the CUPS sources. No differences expected as this code is not yet in use.[cups/libs/cups/localize.c cups/libs/cups/language.c cups/libs/cups/ppd.c]
2011-01-28T13:21:20.983748Z Robin Watts
Further rop run optimisations. * Add mechanism for dumping ROPs used (including frequency and runlength). Disabled by default. * Add special case code for most common rops (invert and xor). * Correct '1bit colors' code in various cases. Cluster pushing shows no differences.[base/gsroprun.c]
2011-01-28T12:27:37.269985Z Robin Watts
Optimisations to mem_mapped8_copy_mono. Driven initially by a desire to speed up 100pagemono.pxl on ARM devices, but useful on all architectures. This work may end up being subsumed by the run_rop work, but is a worthwhile stepping stone. On x86 this speeds 100pagemono.pxl in greyscale 600dpi from 4.2 seconds to 3.6seconds. On ARM it shows a definite improvement too, but I don't have figures to hand. Clusterpush shows no changes.[base/gdevm8.c]
2011-01-27T14:33:46.308935Z Ken Sharp
Update the CUPS sources so that they can be compiled under Windows. 1) Remove config.h which was a Linux configure result, replace with configwin.h (from the CUPS distribution for Windows) and configlinux.h which is config,h renamed. We will copy and use the correct version at make time. 2) cups/debug.c guard the use of pthread_mutex so that we don't try to use it if HAVE_PTHREAD_H is not defined, as the variable will not be declared. Guard use of cups_debug_filter and cups_filter with a #ifndef WIN32 as these variables are not defined in a Windows build. Replace gettimeofday with a Windows equivalent when building on Windows as this function is not available. 3) ppd.c Add a definition of strchr when building for Windows. The use of an include file called string.h confuses MSVC and it does not include the C string.h which leaves strchr undefined. 4) string.h When defining equivalents to strcasecmp and strncasecmp, also define the HAVE_* variables so that inclusion order doesn't lead to these being undefined when we have declared equivalents. 5) image-bmp.c Guard the declaration of the BI_* constants with a #ifndef WIN32 as these are Windows constants and already defined on a Windows build. 6) image-colorspace.c Define cbrt() in terms of pow() when WIN32 is set as the MSVC compiler does not define a cube root function. 7) image-tiff.c Guard inclusion of unistd.h when HAVE_LIBTIFF is true as this include file does not ship with MSVC on Windows. These have been supplied to the CUPS development group, and at least some of the problems are likely resolved in a newer version of CUPS. No differences expected.[cups/libs/cups/debug.c cups/libs/filter/image-bmp.c cups/libs/cups/string.h cups/libs/configwin.h cups/libs/config.h cups/libs/configlinux.h cups/libs/cups/ppd.c cups/libs/filter/image-tiff.c cups/libs/filter/image-colorspace.c]
2011-01-27T13:07:15.912561Z Tor Andersson
Relax version check in JPEG-XR to allow older version HDP and WDP images.[jpegxr/cr_parse.c]
2011-01-26T18:10:28.996727Z Chris Liddell
Fix the message for the new IJS check to read IJS, instead of jpeg![base/configure.ac]
2011-01-26T14:51:40.178552Z Chris Liddell
revert accidentally committed file.[base/jpeg.mak]
2011-01-26T12:25:36.497890Z Chris Liddell
Allow IJS code to be linked as a library instead of using our distributed source. This will permit distributions which include a separately built libijs to link the the system's libijs. Bug 691904[base/winlib.mak base/gdevijs.c base/ijs.mak base/jpeg.mak base/ugcclib.mak base/macosx.mak base/Makefile.in base/configure.ac base/unix-gcc.mak base/unixansi.mak psi/msvc32.mak base/devs.mak]
2011-01-26T01:04:40.273776Z Alex Cherepanov
Old gs assumed TrueType font collections occur only as external resource. It turned out that PDF can have embedded TrueType collection. So this patch replaces --setfileposition-- with {... () /SubFileDecode filter flushfile} for forward search. Bug 691908, customer 870.[Resource/Init/gs_ttf.ps]
2011-01-25T12:03:22.384476Z Ken Sharp
Add code to define cbrt, strcasecmp and stncasecmp when compiling for Windows, as these are not present in the MSVC run-time. Also alter the initialisation of the gs_cups_device structure. Previously this set three matrices by including empty braces '{}', but MSVC throws a compilation error on this. Altered to {0x00} which is not quite the same, but it compiles (with a warning from gcc) and is no worse than leaving the members uninitialised. No differences expected.[cups/gdevcups.c]
2011-01-24T23:51:39.084611Z Tor Andersson
Add JPEG-XR makefile and library to XPS build.[/trunk/ghostpdl/xps/xps.mak /trunk/ghostpdl/xps/xps_msvc.mak base/jpegxr.mak /trunk/ghostpdl/xps/xps_gcc.mak]
2011-01-24T23:51:23.771340Z Tor Andersson
Import JPEG-XR reference software. ITU-T Rec. T.835 (ex T.JXR-5) | ISO/IEC 29199-5. JPEG XR reference software 1.8 (September 2009).[jpegxr/jpegxr.h jpegxr/io.c jpegxr/jpegxr_pixelformat.c jpegxr/api.c jpegxr/my_getopt-1.5/getopt.h jpegxr/stdint_minimal.h jpegxr/r_strip.c jpegxr/qp.tab.c jpegxr/JPEG-XR.sln jpegxr/cw_emit.c jpegxr/w_strip.c jpegxr/x_strip.c jpegxr/qp.tab.h jpegxr/r_parse.c jpegxr/r_tile_spatial.c jpegxr/app_resource.h jpegxr/Makefile jpegxr/DLL.rc jpegxr/cr_parse.c jpegxr/APP.vcproj jpegxr/w_tile_frequency.c jpegxr/COPYRIGHT.txt jpegxr/jxr_priv.h jpegxr/my_getopt-1.5/LICENSE jpegxr/sample.qp jpegxr jpegxr/file.c jpegxr/my_getopt-1.5/my_getopt.c jpegxr/dllmain.c jpegxr/algo.c jpegxr/file.h jpegxr/my_getopt-1.5/my_getopt.h jpegxr/w_emit.c jpegxr/my_getopt-1.5 jpegxr/dll_resource.h jpegxr/qp_lexor.c jpegxr/README.txt jpegxr/flags.c jpegxr/DLL.vcproj jpegxr/versions-windows.txt jpegxr/jpegxr.c jpegxr/qp_lexor.lex jpegxr/r_tile_frequency.c jpegxr/qp_parse.y jpegxr/w_tile_spatial.c jpegxr/APP.rc jpegxr/init.c]
2011-01-24T18:16:40.240500Z Robin Watts
We want to be able to use planar buffers in a line interleaved format. Unfortunately, at the moment the planar device is hardcoded to use contiguous buffers. Fortunately this appears to be a 1 line fix; rather than calculting raster from the width, we instead calculate it as the difference between line pointers. This does assume that we can always safely read line_ptrs[1], even if we only have 1 line in the band. (The value is unimportant in this case, but we must be able to read it without crashing.)[base/gdevmpla.c]
2011-01-24T14:56:30.755196Z Chris Liddell
Make sure the X11 drivers get removed from the DEVICE_DEVS declaration if the --enable-dynamic option is give to configure. Also, fix up the the non shared library builds, so they will still work with --enable-dynamic (only really useful for debugging). Bug 691905. Reorganise and correct the names of the devices specified in configure.ac so that the options --with-drivers=[FILES,PRINTERS,X11] actually work. Finally, make the "make debug" compiler options originate from configure, instead of being hard coded into the Makefile. A first step in making some of useful debugging features of modern compilers available when we can.[base/Makefile.in base/configure.ac]
2011-01-20T04:23:02.586888Z Alex Cherepanov
Search for 'trailer' harder: at the end and at the beginning of the file. This helps to recover some more of broken linearized files. Bug 691894, customer 580.[Resource/Init/pdf_rbld.ps]
2011-01-19T20:25:54.918598Z Robin Watts
Revision 12038 revealed a bug in the transparency code; an operation with a blend mode of 'Normal' and a solid alpha would be allowed to use the fast stroking code, even though it had transparency in due to being a pattern. Here we fix the code to check for transparency. As noted on bug 691900 this test treats all type 2 patterns as being transparent, so could be improved. The cluster differences this gives have been checked and correct the regressions of revision 12038.[base/gdevp14.c base/gstrans.c]
2011-01-19T18:00:59.394482Z Robin Watts
Bug 691897 shows a PDF that is much slower when transparency is enabled than when it is not. The time is primarily spent in the stroke filling code due to the fact that when transparency is enabled strokes need to be rendered all at once, rather than segment by segment. This causes the scan conversion code to have to work much harder. In fact, the code uses solid alpha and "compatible" blend mode for most strokes, so we would be perfectly safe to use the normal mechanism. The code attempts to recognise this case already, but was only spotting "Normal" blend mode and not it's synonym "Compatible". We now roll the two together. Cluster testing shows this produces various differences; none to do with blending, all to do with different roundings in the positions of the stroked paths. Bug 690845 is open for this already.[base/gdevp14.c base/gstrans.c base/gstparam.h]
2011-01-18T21:52:56.712015Z regression
Temporarily add 75 dpi pgmraw output to GhostPCL and disable ps2write output to the cluster regressions.[toolbin/localcluster/build.pl]
2011-01-18T10:22:12.280482Z Chris Liddell
Resolve some problems with the shared library build on Sparc/Solaris, with the SunStudio tools. Have configure select between the GNUism -soname and the more convetional -h option to set the "internal" name of the shared library. SunStudio 12 has changed the default optimization level option for cc to be -O3 (previously was -02), which results in Ghostscript crashing. No cluster differences expected. Bug 689490[base/macosx.mak base/Makefile.in base/configure.ac base/unix-dll.mak base/unix-gcc.mak base/macos-mcp.mak]
2011-01-17T21:37:08.425154Z Alex Cherepanov
I don't know any version of VC compiler that can compile embedded assembly code in Luratech JPEG 2000 library. (and other compilers are excluded on the preprocessor level). So the library is now always compiled with NO_ASSEMBLY flag. Perhaps, a new version of the library will be better.[psi/msvc32.mak]
2011-01-17T17:33:50.118892Z Robin Watts
Add code for using run_rops for 8 and 24 bit targets too. Cluster testing shows that this gives the same results, but limited local testing suggests the setup costs mean this isn't yet a win. Therefore leaving disabled for now.[base/gdevmr8n.c base/gsroprun.c base/gsropt.h]
2011-01-17T12:11:39.376205Z Robin Watts
Remove unused lop_ral definitions, and move pdf14 lop bit down into the freed space (for neatness). No changes expected in cluster.[base/gsropt.h]
2011-01-16T01:25:36.175335Z Marcos H. Woehrmann
Added missing std.h dependency to gstoptab.c to fix parallel make under linux.[base/lib.mak]
2011-01-15T16:01:30.937666Z Robin Watts
First commit of new scheme for rop acceleration; offer functions that do 'runs' of rops rather than single rops. This enables us to hide optimised versions (or even dynamically created code) under a single interface. The current code is only used in 1bpp cases, but is already showing a signficant speed up, with lots of scope for future optimisations. No cluster differences shown.[base/lib.mak base/gsroprun.c base/gsropt.h base/gdevmr1.c]
2011-01-15T15:53:50.166886Z Robin Watts
Fix loooong standing bug in rop3_swap_S_T, in that it doesn't actually work. This shouldn't affect anything as it's not currently used, but WILL be used in my next commit.[base/gsropt.h]
2011-01-14T18:58:46.405071Z Henry Stiles
Bracket off gs_debug_c with #ifdef DEBUG so it is not called in production builds.[base/gxht.c base/gxclimag.c base/gxttfb.c base/gxpcmap.c base/gxccman.c base/gsfcmap1.c base/gspaint.c]
2011-01-14T16:56:47.376046Z Chris Liddell
Changes to the Unix configure based builds to tidy up specifying subsets of output devices. Some devices were always being included regardless of the options given to configure, resolved by tidying up the macro expansions in Makefile.in done by the configure script. Also the page device and clist device are effectively required by all configurations, so those are now included in the core build. Finally, the contrib/gomni.c driver relied on two functions in base/gdevbmpc.c which is an optional driver, so configuring the Omni driver to be built it, and bmp16 not would result in undefined symbols. contrib/gomni.c now has its own equivalents of those functions. The bbox device remains as the ultimate "fallback" device. Bug 689546[base/lib.mak contrib/gomni.c base/Makefile.in base/configure.ac base/devs.mak]
2011-01-13T16:19:39.522851Z Chris Liddell
Remove the bogus C++ requirement in the copy of Jasper we ship with Ghostscript by recreating the autotools related files for Jasper. I can't be sure, but it seems that a bug in one of the autotools originally used for our Jasper had a bug which resulted in C++ being misidentified as a required, rather than optional, feature of the build environment. Bug 691563. No cluster differences expected.[jasper/src/libjasper/jpc/Makefile.in jasper/src/libjasper/bmp/Makefile.in jasper/configure.ac jasper/src/libjasper/jpg/Makefile.in jasper/src/appl/Makefile.in jasper/src/libjasper/include/Makefile.in jasper/src/libjasper/ras/Makefile.in jasper/src/Makefile.in jasper/aclocal.m4 jasper/src/libjasper/pnm/Makefile.in jasper/src/libjasper/jp2/Makefile.in jasper/configure jasper/src/msvc/Makefile.in jasper/src/libjasper/pgx/Makefile.in jasper/Makefile.in jasper/src/libjasper/Makefile.in jasper/src/libjasper/include/jasper/Makefile.in jasper/src/libjasper/base/Makefile.in jasper/src/libjasper/mif/Makefile.in]
2011-01-13T14:37:33.986698Z Robin Watts
Fix Bug 689698 by prefixing scan_token (and other externally exported scanning related symbols) by gs_. No changes in cluster testing (other than 1 timeout, and 2 indeterminisms).[psi/ztoken.c psi/ztype.c psi/imain.c psi/iscan.c psi/itoken.h psi/ziodev.c psi/interp.c psi/iscan.h psi/imainarg.c]
2011-01-12T21:11:53.461044Z Robin Watts
Fix Bug 691682 - cryptic error messages when misspecifying compression type for tiff devices. This patch makes the tiff devices take heed of errors propogated up from the tiff library. This means we'll now drop out at the first error rather than carry on through and give a broken file at the end silently. Also, we output a more helpful error message in the case where the compression type is misselected. Cluster testing shows no changes.[base/gdevtifs.c]
2011-01-11T21:33:54.972732Z Michael Vrhel
Fix for a number of issues found by Ray with the halftone creation tool. These include a crash for a divide by zero in the gcd function (caused failure at 0 degree screen generation) Fix so that the Holladay screen is no longer created as an output option. Fix in ppm output header. Fix in how the lpi is selected. Fix for when we have a screen that has essentially one dot (also caused a crash). Addition of a ReadMe. A lot more testing is needed, in particular, the dithering of the dots in the macro-screens needs additional testing and the relationship between the desired number of quantization levels and the size of the screen needs to be properly computed. There is a list of features that need to be added described in the ReadMe.[toolbin/color/halftone/halfttoning/halfttoning.vcproj toolbin/color/halftone/README toolbin/color/halftone/halfttoning/halftone.c]
2011-01-11T01:17:59.815496Z Ray Johnston
Add output modes for PostScript HalftoneType 3 threshold arrays (-ps) and PPM files (-ppm) that have the width in the file rather than only encoded in the filename. The -ppm mode is untested and marginally useful. The -ps mode was tested (on Windoze) with: toolbin/color/halftone/Debug/halfttoning.exe -ps -r 300 -l 23 -a 45 gswin32c -r300 -dDisplayFormat=16#20102 -c "(Screen_Holladay_Shift10_20x10.ps) \ run sethalftone (examples/tiger.eps) run" The result doesn't look very good, but at least it runs and we can examine the problems.[toolbin/color/halftone/halfttoning/halftone.c]
2011-01-11T00:49:20.559732Z Michael Vrhel
Hopefully a fix for indeterminism introduced in rev 12005. The source of this was that the cups and psdcmyk device are now using the older slower color image rendering function due to the fact that they have non-standard color mapping procedures. Missing parenthesis were introduced when the ICC branch was merged into the trunk which was the source of the issue. This was causing a check for color range mask testing even when the image was not a type 4.[base/gxicolor.c]
2011-01-10T22:00:19.847574Z Till Kamppeter
Added the source code of the CUPS libraries to the Ghostscript source package Like with zlib, libpng, libjpeg, ... it is now possible to build the complete Ghostscript (including the CUPS Raster output device) on systems where there is no CUPS library available. Note that currently only the CUPS library source code is added, the results of the ./configure run in the Makedefs and config.h files, and the Makefiles are stripped to only build the libraries and nothing else. The CUPS ./configure command line which was used to obtain makedefs and config.h was ./configure --enable-static --without-shared --disable-dbus --without-php \ --disable-slp --disable-gssapi --disable-ldap --disable-ssl \ --disable-cdsassl --disable-gnutls --disable-openssl --disable-pam \ --disable-dnssd --disable-launchd This way the built CUPS libraries do not need any system services or hardware interfaces of Linux. In addition to standard libraries they use only libz, libpng, libjpeg, and libtiff. These libraries Ghostscript needs anyway and copies of their source code also ship with Ghostscript. What is still missing is the integration into the build system of Ghostscript and also the operating-system-independent base/cups.mak file (like base/png.mak etc.). No changes expected in the built Ghostscript as the code is not yet integrated in the build system.[cups/libs/cups/backend.c cups/libs/cups/testadmin.c cups/libs/filter/image-pix.c cups/libs/cups/testoptions.c cups/libs/cups/backend.h cups/libs/cups/http-private.h cups/libs/filter/image.c cups/libs/cups/testpwg.c cups/libs/filter/image-sun.c cups/libs/cups/ppd-private.h cups/libs/filter/image.h cups/libs/filter/error.c cups/libs/cups/Dependencies cups/libs/cups/ipp-private.h cups/libs/cups/md5passwd.c cups/libs/cups/notify.c cups/libs/cups/dir.c cups/libs/cups/testarray.c cups/libs/cups/file.c cups/libs/cups/testhttp.c cups/libs/filter/image-png.c cups/libs/filter/image-zoom.c cups/libs/cups/getdevices.c cups/libs/cups/transcode.c cups/libs/cups/dir.h cups/libs/cups/globals.c cups/libs/cups/testppd.c cups/libs/filter/image-tiff.c cups/libs/cups/file.h cups/libs/filter/image-pnm.c cups/libs/cups/transcode.h cups/libs/cups/testipp.c cups/libs/cups/globals.h cups/libs/filter cups/libs/filter/image-photocd.c cups/libs/cups/options.c cups/libs/cups/emit.c cups/libs/cups/localize.c cups/libs/cups/tempfile.c cups/libs cups/libs/cups/testcups.c cups/libs/cups/custom.c cups/libs/cups/pwg-media.c cups/libs/cups/util.c cups/libs/cups/array.c cups/libs/cups/pwg-ppd.c cups/libs/cups/testi18n.c cups/libs/cups/http.c cups/libs/filter/image-jpeg.c cups/libs/filter/Dependencies cups/libs/cups/array.h cups/libs/cups/http-addrlist.c cups/libs/cups/language.c cups/libs/cups/ppd.c cups/libs/cups/http.h cups/libs/cups/md5.c cups/libs/cups/debug.c cups/libs/cups/ipp.c cups/libs/cups/language.h cups/libs/cups/ppd.h cups/libs/cups/backchannel.c cups/libs/cups/http-support.c cups/libs/cups/mark.c cups/libs/cups/md5.h cups/libs/cups/snmp-private.h cups/libs/cups/debug.h cups/libs/cups/Makefile cups/libs/cups/ipp.h cups/libs/cups/dest.c cups/libs/config.h cups/libs/cups/auth.c cups/libs/cups/ipp-support.c cups/libs/filter/common.c cups/libs/cups/langprintf.c cups/libs/filter/image-sgilib.c cups/libs/cups/raster.h cups/libs/filter/common.h cups/libs/cups/attr.c cups/libs/filter/image-private.h cups/libs/cups/sidechannel.c cups/libs/cups/testsnmp.c cups/libs/cups/usersys.c cups/libs/cups cups/libs/cups/cups.h cups/libs/cups/sidechannel.h cups/libs/cups/i18n.h cups/libs/Makedefs cups/libs/cups/testconflicts.c cups/libs/filter/image-colorspace.c cups/libs/cups/adminutil.c cups/libs/cups/http-addr.c cups/libs/filter/interpret.c cups/libs/cups/request.c cups/libs/cups/versioning.h cups/libs/cups/md5-apple.h cups/libs/cups/adminutil.h cups/libs/cups/file-private.h cups/libs/cups/encode.c cups/libs/filter/image-gif.c cups/libs/cups/snprintf.c cups/libs/cups/string.c cups/libs/filter/Makefile cups/libs/cups/getputfile.c cups/libs/filter/image-bmp.c cups/libs/cups/pwg-private.h cups/libs/cups/pwg-file.c cups/libs/cups/string.h cups/libs/filter/raster.c cups/libs/cups/page.c cups/libs/cups/getifaddrs.c cups/libs/cups/snmp.c cups/libs/filter/image-sgi.c cups/libs/cups/testfile.c cups/libs/cups/testlang.c cups/libs/filter/image-sgi.h cups/libs/cups/conflicts.c]
2011-01-10T03:29:52.464842Z Alex Cherepanov
Add support for MSVC 10 to msvc32.mak .[psi/msvc32.mak]
2011-01-09T02:19:19.656942Z Michael Vrhel
Fix for color related warnings in bug 691459[base/gxi12bit.c base/lib.mak base/gxiscale.c base/gsicc_manage.c base/gxcmap.h base/gxicolor.c base/gscspace.c]
2011-01-08T19:56:51.307278Z Alex Cherepanov
Don't discard encoding of a TrueType PDF font when it is not embedded. Ghyph indexes vary between font versions, and encoding-based mapping yelds better results in this case. Bug 691693.[Resource/Init/pdf_font.ps]
2011-01-08T19:42:31.743686Z regression
Additional changes to support ps2write in the cluster (and nightly and weekly) regression.[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]
2011-01-08T17:56:07.987718Z regression
Add ps2write testing to the cluster regression.[toolbin/localcluster/build.pl]
2011-01-08T17:55:26.179279Z Alex Cherepanov
Fix the code that repairs missing or incorrect /Subtype attribute. Write a valid attribute (always /Type1) into the font resource. This helps to avoid confusion caused by an invalid value later on. Bug 691872.[Resource/Init/pdf_font.ps]
2011-01-08T10:50:04.294111Z Till Kamppeter
Fixed typo.[cups/gdevcups.c]
2011-01-08T10:47:12.179146Z Till Kamppeter
CUPS Raster device: Some clean-up.[cups/gdevcups.c]
2011-01-08T10:36:56.827100Z Till Kamppeter
CUPS Raster: Another approach to fix both bug #691733 and #690435: Set _old values at the beginning of the cups_put_params() function.[cups/gdevcups.c]
2011-01-07T23:33:17.663910Z Till Kamppeter
CUPS Raster output device: Use positive values (1) as dummy values to mark that the color depth has changed and therefore memory needs to get rallocated WEith this both bug #691733 and bug #690435 get fixed, but this is not necessarily he right and best solution.[cups/gdevcups.c]
2011-01-07T14:05:17.614099Z Till Kamppeter
Fixed search-and-replace error in "cups" output device, bug 691871.[cups/gdevcups.c]
2011-01-07T04:49:42.455234Z Michael Vrhel
Fix so that we do not do the ICC optimized flow for color images when our target device does not have standard color mapping procedures. This occurs for example, in the case for the CUPs device where the color mapping procedures map CMYK, RGB and Gray to the current CUPs device color space. For standard gray, RGB and CMYK devices these procedures are avoided as the CMM performs all the required mappings. This commit will show differences in the files for the cups device as well as the psdcmyk device, which also should be using the non-optimized flow due to the use of CMYK + spot colorants, which will not be managed correctly by the CMM in general. The differences int the psdcmyk files that do not have extra spot colorants are tiny. This should fix bug 691760.[base/gxi12bit.c base/gdevp14.c base/lib.mak base/gxcmap.c base/gxiscale.c base/gdevnfwd.c base/gxcmap.h base/gxicolor.c]
2011-01-06T19:18:56.657732Z Alex Cherepanov
Fix a cut-ant-paste error in setting QuantTables for JPXEncode filter. Bug 691868.[base/sdeparam.c]
2011-01-06T11:08:52.017177Z Ken Sharp
Minor enhancement to ps2write for DSC output, remove trailing EOF. Prevent ps2write emitting a trailing EOF (0x04) byte when producing DSC-compliant output. The emission of this byte was leading to warnings about the output containing binary. No differences expected.[base/gdevpdf.c]
2011-01-05T17:35:42.089947Z Michael Vrhel
Reverting of commit 11995[base/gxipixel.c base/lib.mak]
2011-01-05T16:05:22.763938Z Ken Sharp
ps2write DSC enhancement. Alter the default setting of CompressPages and CompressFonts to true. Gives better conforming output at present (as well as smaller output)[Resource/Init/gs_pdfwr.ps]
2011-01-05T15:43:41.972063Z Ken Sharp
Fix three compiler warnings in revision 11997[base/gdevpdfu.c]
2011-01-05T15:28:39.325806Z Till Kamppeter
Use the "x11" output device as default output device for an X-enabled Ghostscript, as "x11alpha" is too buggy The simple call "gs <file>" is a common call to check a PostScript file when debugging printing problems. Unfortunately, this call uses the "x11alpha" output device which has a lot of bugs, especially on complex input files. This makes easily a wrong impression of the input file then. Having a somewhat inferior screen output quality (no anti-aliasing) is no problem as the mentioned Ghostscript call is only used for debugging purposes.[base/Makefile.in]
2011-01-05T14:17:41.770782Z Ken Sharp
ps2write DSC enhancement. Belt and braces approach when emitting a serialised array/proc This code should break an (already serialised) array or procedure emission if the total length of the data to write exceeds 255 bytes. The data will be broken at name, array, string or procedure tokens (ie '/', '[', '(', '<') or a space character. If none of these occurs in the preceding 255 bytes then we emit a line break anyway and carry on. I do not have any test cases which exercise this code path with a data size > 255 bytes, so I'm not certain that it works as expected. No differences expected as the regression test doesn't exercise ps2write.[base/gdevpdfu.c]
2011-01-04T18:56:36.226711Z Alex Cherepanov
Fix spelling errors in a German man page. Thanks to Peter Dyballa for the patch. Bug 691863.[man/de/gsnd.1]
2011-01-04T18:19:41.129921Z Michael Vrhel
Fix so that the presence of source black and white are properly detected with the ICC color management changes. This detection is useful for the optimization of certain ROPs. Previously black and white were detected from looking at the device color. This was a problem since the device black color is usually not pure for a CMYK printer with the ICC changes. This fix updates the detection function so that it looks at the source color and maps it to the default RGB color space where black and white are well defined.[base/gxipixel.c base/lib.mak]
2011-01-04T16:35:38.827232Z Ken Sharp
More DSC-compliant ps2write work. When emitting strings for ps2write, write them as hex strings instead of regular strings, if the ps2write output is to be DSC-compliant, break the hex strings every 255 bytes or less. Prepend and append newlines to the hex string when emitting DSC-compliant PostScript to ensure that preceding or following data doesn't cause the line length to exceed 255 bytes. No differences expected as ps2write is not currently regression tested.[base/gdevpdfu.c]
2011-01-04T10:48:32.930138Z Ken Sharp
Fix (pdfwrite) : Write ToUnicode CMap files which Acrobat likes Bug #691862 (and also bug #691849) "Unable to copy text from the converted PDF" It seems the Adobe documentation lies (or more generously is inconsistent). The CMap tech note (5014) says that entries are not zero padded, so values less than 256 are emitted as single bytes, values 256->65535 are two bytes etc. However the ToUnicode CMap tech note (5411) says: "Because a “ToUnicode” mapping file is used to covert from CIDs (which begin at decimal 0, which is expressed as 0x0000 in hexadecimal notation) to Unicode code points, the following “codespacerange” definition, without exception, shall always be used: 1 begincodespacerange <0000> <FFFF>endcodespacerange" (This is somewhat restrictive, since CIDs can exceed 2 bytes, even though UTF-16 can't, I could forsee a need to map high CIDs to lower UTF-16 values) Finally, the PDF Reference (1.7) says: "The CMap file must contain begincodespacerange and endcodespacerangeoperators that are consistent with the encoding that the font uses. In particular, for a simple font, the codespace must be one byte long." So the PDF Reference conflicts with the tech note which it references! In fact none of the above seems to be quite what Acrobat actually does. It seems that Acrobat does not care what size (in bytes) the codespacerange is, no matter what kind of font is present. However it *does* care what size the bfrange entries are. For simple fonts the bfrange entries must be single bytes, for CIDFonts the bfrange entries must be two bytes. Deviation in either case leads to files which Acrobat cannot process and either causes errors or incorrect text when copying and pasting. Changed the ToUnicode emission (mostly restoring revision 11170 which was removed in revision 11795 because of bug #691849) so that we emit single byte bfrange and codespacerange arguments for simple (non-CID) fonts, and emit double byte, padded with 00 arguments to bfrange and codespacerange for CID fonts. No differences expected as this only affects text search/copy in Acrobat.[base/gsfcmap.c base/gdevpdte.c]
2011-01-03T20:19:58.048424Z Ray Johnston
Don't bump the 'used' element of the chunk manager structure if the allocation of a chunk fails. Thanks to Norbert Janssen for noticing this. Bug 691720.[base/gsmchunk.c]
2011-01-03T18:58:00.432432Z Henry Stiles
The optimization in gdevdgbr to detect a device with a "plain" cmyk 1 bit to rgb mapping was broken because the procedure cmyk_1bit_map_color_rgb() is obsolete. The hack here is to detect output formats compatible with gx_get_bits_copy_cmyk_1bit() which is significantly faster since it does not have to call the device color decode procedure. The device API should have a member that indicates the most frequently encountered pixel organizations.[base/gdevdgbr.c]
2011-01-03T16:20:21.454447Z Henry Stiles
Decode image samples with single precision calculations only. This area of the code is performance sensitive and there is no need to convert to and from doubles. Also, "image_set_gray" is now inline but still not enabled.[base/gximono.c base/gximage.h]
2011-01-03T14:33:56.098558Z Ken Sharp
Fix ps2write : Attach Encoding for symbolic TrueType fonts The recent change to not attach Encodings to Sy,bolic TrueType fonts, as per the PDF spec, meant that ps2write also wrote symbolic TT fonts without a /Encoding. This is not ideal, because opdfread.ps then attaches a default StandardEncoding to the font. This simply will not work correctly. After some experimentation with extracting (in PostScript) the POST table from the TT font, sense prevailed. This patch modifies the condition so that if we are producing output for ps2write we continue to attach a /Encoding. (in this case it doesn't matter whether we are producing DSC output, we always want the Encoding) No differences expected.[base/gdevpdtt.c]
2011-01-03T06:21:52.574265Z Alex Cherepanov
Adjust pdfemptycount variable during .execgroup execution to reflect the actual stack count. Avoid errors in sc1/scn caused by wrong operand count. Bug 691624.[Resource/Init/pdf_draw.ps]
2011-01-01T16:17:49.255469Z Alex Cherepanov
Change all "/foo /bar load def" into "/foo {bar} bind 0 get def" in PDF interpreter to ebable operator redefinition with -dDELAYBIND. Bug 691669, customer 850.[Resource/Init/pdf_draw.ps]
2010-12-31T06:23:59.391706Z Alex Cherepanov
Trap errors that may happen during loading of embedded fonts and try to load the font by the name. Bug 691045.[Resource/Init/pdf_font.ps]
2010-12-30T19:09:59.966731Z Alex Cherepanov
Use -fPIC instead of -KPIC on SunOS for "so" target when compiler is gcc. Bug 690630, customer 200.[base/configure.ac]
2010-12-30T14:11:42.974030Z Alex Cherepanov
Clip excessive size of the radial gradient extensions to the fixed point range. To avoid trivial differences, try the old fixed point function first and use new floating point one only when the old function fails. Bug 691775.[base/gspath.h base/gxshade1.c base/gspath.c]
2010-12-29T13:01:45.722135Z Alex Cherepanov
Ignore transparency group XObject without /Group attribute and issue a warning about it. Bug 691854.[Resource/Init/pdf_draw.ps]
2010-12-28T03:13:57.856572Z Alex Cherepanov
Implement correct defaults for /FontMatrix attribute in composite CFF font following analysis by Ken and Masaki (see the comment). Bug 690724.[psi/zfont2.c]
2010-12-27T23:34:39.189121Z Alex Cherepanov
Fix unterminated string used by "%%CreationDate:" comment in ps2write device. Partial fix for 691853.[base/gdevpdfu.c]
2010-12-24T11:08:47.918403Z Chris Liddell
Put a check in place to ensure that the UFST pre version 6 does not attempt to handle anything other than its own Microtype fonts. This ensures that the UFST 5.x FAPI plugin can coexist safely with the Freetype FAPI plugin.[psi/fapiufst.c]
2010-12-24T09:50:39.994493Z Chris Liddell
Where FAPI finds a TTF glyf description to pass into the target font library, fix the decision on the length of the offset to the glyph data. Previously, the condition was wrong, and always ended up reading 2 bytes for the offset. Bug 691850 No cluster differences expected.[psi/zfapi.c]
2010-12-24T00:28:30.327488Z Alex Cherepanov
Limit the use of -rdynamic flag to GCC on Linux. This flags is supported by GCC only if the platform has ELF executable format. Bug 691453.[base/configure.ac]
2010-12-23T14:39:36.123969Z Ken Sharp
fix pdfwrite : Always write 2 bytes for ToUnicode CMap ranges Bug #691849 "pdfwriter regression: pdf text element is broken" revision 11170 modified CMap emission so that bfchar/bfrange entries less than 256 were emitted as a single byte, as specified in the CMAp specification. However ToUnicode CMaps don't follow the normal specification (I suspect this is a bug which has been pickled into the spec by Adobe), and require that values always have 2 bytes. reverted 11170 so that we write 2 byte ToUnicode CMap entries. No differences expected.[base/gsfcmap.c]
2010-12-23T11:41:20.825457Z Ken Sharp
ps2write enhancement Initialise the SetPageSize flag to true when ProduceDSC is set, so that page sizes are properly requested by the output PostScript file. No differences expected.[base/gdevpdfu.c]
2010-12-22T18:48:13.456231Z Michael Vrhel
Initial commit of code for creating halftone screens. This code needs additional debugging, especially in the case of edge parameters. It will currently create threshold arrays based upon desired lpi, angle, quantization levels, and device resolution. The method is restricted to angles that are the arctangent of rational numbers. Every attempt is made to achieve the requested lpi by using the rational angle that achieves an lpi over the requested value. Since there is a trade off between lpi and quantization levels, the requested quantization levels are obtained through dithering of the dot cells within the supercell. Essentially, the dots within the supercell do not all take on the same values and can grow at different rates in a visually pleasing manner. There is still a bit of work to do still on this dithering as well as controlling the rate of growth for the dots.[toolbin/color/halftone toolbin/color/halftone/halfttoning.sln toolbin/color/halftone/halfttoning/halfttoning.vcproj toolbin/color/halftone/halfttoning toolbin/color/halftone/halfttoning/halftone.c]
2010-12-22T16:17:58.830786Z Ken Sharp
Just remove a commented out line of code that should have been removed before commit.[base/gdevpdfb.c]
2010-12-22T14:05:56.481488Z Ken Sharp
More enhancement work for type 3 fonts with PCL Previously we set the horizontal advance argument to the d1 (setcachedevice) operator to 0, and set the Widths entry to 0, for all type 3 bitmap fonts created by rendering the original font. This was required to prevent regression errors with the test suite when we altered the type 3 font accumulation so that it made more effort to preserve the input character code, in an attempt to improve searching. Revision 11969 fixes a problem with cached characters which was leading to the /Widths array containing garbage values. With that revision we can now properly set the 'd1' horizontal advance, and also set the /Widths array correctly. No expected differences[base/gdevpdfb.c base/gdevpdti.c]
2010-12-22T13:58:29.830017Z Ken Sharp
Fix ps2write/pdfwrite : Up date the show enumerator with the cached character width When capturing a character bitmap on the first time it is rendered, pdfwrite and ps2write get the width of the glyph in the cache device. This is then used to update values in the show enumerator, and these values are used as the Widths entry for the glyph. When imaging an already cached character, however, the enumerator values are not updated which can lead to garbage (uninitialised data) being written as values in the /Widths array. This patch takes the value from the cached character 'wxy' and updates the show enumerator 'wxy' with it. This is then used as the value for the /Widths array. Bug #691836, zweiseit01d4-1.pdf, limitcheck --nostringval-- No differences expected.[base/gxccache.c]
2010-12-22T00:35:56.638864Z regression
Fixed bug with r11967 that redirected output to the wrong directory on the cluster nodes.[toolbin/localcluster/run.pl]
2010-12-21T23:07:47.064606Z Marcos H. Woehrmann
Attempt to remove obj directories before build and report failure. This detects the situation where a user manually built on one of the cluster nodes, leaving an obj directory that can't be overwritten by the cluster software.[toolbin/localcluster/run.pl]
2010-12-21T23:01:04.915150Z regression
Merge run.pl and build.pl with nightly regression versions.[toolbin/localcluster/clustermonitor.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl]
2010-12-21T17:53:45.618494Z Chris Liddell
Revise how we set the font types which FAPI should handle, and ensure that the "dummy" CharStrings dict we set up for Microtype fonts doesn't get replaced. Bug 691810 No cluster differences expected.[Resource/Init/gs_fntem.ps Resource/Init/gs_fapi.ps]
2010-12-21T10:44:01.003179Z Chris Liddell
Handle Charstrings being replaced by a procedure. This can happen even with Microtype fonts (which "pretend" to be Type 1, but don't actually use CharStrings). This commit also includes some UFST 6.x related changes, the complete UFST 6.x integration should follow in the not too distant future. Bug 691834 Not cluster differences.[psi/fapiufst.c base/gxfapiu.c]
2010-12-20T16:38:54.977548Z Chris Liddell
When we're handling a Type42 font in FAPI, handle the possibility that the "CharString" we get might be a null object, by falling back to the notdef glyph. Bug 691848 No cluster differences expected.[psi/zfapi.c]
2010-12-18T19:27:14.937495Z Alex Cherepanov
Implement correct bit packing for an indexed image with 4 bit/pixel color depth in the interface to Luratech JPX library. Bug 691843, customer 532.[base/sjpx_luratech.c]
2010-12-18T15:24:43.064303Z Ken Sharp
Bug #691835 Temporary work-around. It is possible to get into gsicc_init_device_profile with the graphics state pointer (pgs) being NULL. This happens if ps2write or pdfwrite convert a masked image into a regular image. Because pgs is dereferenced without checking for NULL, this causes a crash. Its not immediately clear to me if I need to modify ps2write/pdfwrite so that this condition doesn't occur, but for now, if pgs is NULL we return from the routine in order to prevent a crash. No differences expected[base/gsicc_manage.c]
2010-12-17T16:58:35.097740Z Till Kamppeter
Install the CJK examples.[base/unixinst.mak]
2010-12-17T16:56:51.880152Z Till Kamppeter
Mention "ps2pdf14" in the man page for ps2pdf.[man/ps2pdf.1 man/de/ps2pdf.1]
2010-12-17T16:54:53.331106Z Till Kamppeter
Let Ghostscript work with the libjasper provided by the system.[base/sjpx.c]
2010-12-17T16:50:49.932561Z Till Kamppeter
pphs is a script and not a library, put it into the correct group of files in the Makefile.[base/unixinst.mak]
2010-12-17T16:48:02.245525Z Till Kamppeter
Fix stone-old security advisory CVE-2009-4270.[base/gsmisc.c]
2010-12-17T16:43:02.736497Z Till Kamppeter
Build gsx and gsc executables correctly as executables and not as shared libraries.[base/unix-dll.mak]
2010-12-17T00:16:41.356524Z Till Kamppeter
Removed patch noise file.[contrib/pcl3/eprn/eprnrend.c.orig]
2010-12-16T17:00:24.131587Z Ken Sharp
Fix (pdfwrite) : Don't clamp rectfill to the page. Bug #691839 "Invalid EPS conversion with -dEPSCrop" Rectangular fills (and only the special case of rectangles) were being clamped to the width/height of the device when emitted. This can cause problems when a matrix is in force which reduces the actual co-ordinates, in this case a Pattern with a 0.25 scaling. The clamping caused co-ordinates to be reduced, and part of the fill went missing. The comment indicated this was to 'work-around' the limit in Acrobat of 32k on user co-ordinates, but this is too sever a clamp to apply, also the general case path code does not apply this limit. Altered to make the limit the 32k enforced by Acrobat.[base/gdevpdfd.c]
2010-12-15T16:12:54.275384Z Ken Sharp
pdfwrite enhancement : Final DSC changes Fix a compiler warning, make ProduceDSC=true the default condition so that we create DSC-compliant PostScript unless told otherwise. Update the documentation for pswrite and ps2write in devices.htm and Ps2ps2.htm. Note that pswrite is now deprecated. Modify the pdf2ps and ps2ps scripts to use ps2write instead of pswrite. No differences expected.[lib/pdf2ps doc/Ps2ps2.htm lib/pdf2ps.cmd lib/pdf2ps.bat lib/ps2ps doc/Devices.htm base/gdevpdfu.c lib/ps2ps.cmd base/gdevpdfb.h lib/ps2ps.bat]
2010-12-15T08:22:58.985898Z Ken Sharp
pdfwrite enhancement : more DSC related activity Defer the output of the header and the opdfread.ps 'prcoset' until the output file is closed. This allows us to count the pages and emit the %%Pages: comment in the header instead of at the end of the file. Fix the PageBoundingBox comment to have two % characters instead of one. Check for a new flag 'DSC_OPDFREAD' at the start of opdfread.ps (and write its definition as part of the header emission in ps2write). If present this prevents the SetupPageView routine from using setmatrix to reset the CTM to the one saved during document setup. Because the DSC-compliant output puts save/restore around each page we don't need to reset the matrix, and the reset prevents the output from working properly with psnup. If the flag is not present, it is treated as false. The output now works with GSView, psselect and psnup. The only remaining work is to track the usage of ProcessDSC and see if we can reuse any of the comments parsed out of the input. No differences expected[base/gdevpdfx.h base/gdevpdf.c Resource/Init/opdfread.ps base/gdevpdfu.c]
2010-12-13T11:57:36.965203Z Ken Sharp
pdfwrite enhancement : DSC output Add some more comments, and re-arrange a few to make better sense. Initial tests indicate the output of the code with ProduceDSC does not introduce any new errors. Still to do: See if we can re-order the output so that we can write the %%Pages: comment in the header with the correct number of pages. This requires us to defer writing the header and ProceSet until the end of the job. No differences expected.[base/gdevpdfg.h base/gdevpdf.c base/gdevpdfe.c base/gdevpdfu.c]
2010-12-12T16:18:59.870768Z Alex Cherepanov
Make const_90_degrees an external variable to stop smart optimizers from converting angle/const_90_degrees to angle*(1/const_90_degrees). Bug 689794.[base/gsmisc.c]
2010-12-11T23:02:25.039826Z Alex Cherepanov
Don't break ANSI aliasing rules. Use memcpy() to assign Ghostscript classes i.e. structures of different type. Fix SEGV on GCC 4.5.1, release build. Thanks to ubitux@gmail.com for analysis of the problem. Bug 691831.[base/gximag3x.c]
2010-12-10T19:50:53.800825Z Michael Vrhel
Removal of Smask_is_CIE flag in the code as well as removal of code that is no longer used in the soft mask rendering.[base/gdevp14.c base/gdevp14.h base/gstrans.c base/gstparam.h base/gxblend.c base/gstrans.h base/gxblend.h]
2010-12-10T13:26:11.089772Z Ken Sharp
pdfwrite enhancement : More work towards DSC compliance This is a resubmission of revision 11941, with some additional changes so that it doesn't crash with pdfwrite on Linux systems. We now pass around the 'type' of an object much more when writing. This is so that we can emit "%%BeginResource/%%EndResource" comment pairs around the resources we write. It is also required so that we *don't* write these comments around pages. The code now emits %%BeginProlog, then writes the opdfread.ps procedure. It then writes all the various resources used in the document, each with a reasonable DSC comment. Then it writes %%EndProlog. After this come the page descriptions, each is written with a %%Page: comment and a %%PageTrailer. Finally we write the %%Trailer, %%Pages comment (NB we write %%Pages: (atend) in the header comments as we don't know how many pages there will be until the end) and %%EOF. The resources are mostly defined as being of type 'file', as most of them are not normal PostScript resources. The DSC specification says under the %%BeginResource definition (file note on p72) "The enclosed segment is a fragment of PostScript language code or some other item that does not fall within the other resource categories" and so this seems the best type to use for our purposes. The output is now minimally DSC compliant, though there are a few other comments I'd like to add if possible. Given the way the file is created we are always going to have a large prolog, and that will need to be copied to all the pages if they are split individually, in order to make sure that all the required resources are present. Technically we could follow the resource chain and write %%IncludeResource comments, at the page level at least, but this is probably more effort than it is realistically worth. Still need to add some more DSC comment types, and run some extensive testing. No differences expected currently. Minimal testing with GSView suggests that the output so far is DSC-compliant as-is.[base/gdevpdfk.c base/gdevpdfm.c base/gdevpdfx.h base/gdevpdfo.c base/gdevpdf.c base/gdevpdfb.c base/gdevpdtd.c base/gdevpdfc.c base/gdevpdfo.h base/gdevpdfe.c base/gdevpdfu.c base/gdevpdtw.c base/gdevpdfg.c base/gdevpdti.c]
2010-12-10T03:06:40.558274Z Michael Vrhel
Apply proper alpha blending to compute luminosity of mask per the PDF specification. Fixes bug 691822[base/gdevp14.c]
2010-12-09T16:50:55.001506Z Ken Sharp
undo revision 11941 and 11942 as this causes seg faults on Linux.[base/gdevpdfk.c base/gdevpdfm.c base/gdevpdfx.h base/gdevpdfo.c base/gdevpdf.c base/gdevpdfb.c base/gdevpdtd.c base/gdevpdfc.c base/gdevpdfo.h base/gdevpdfe.c base/gdevpdfu.c base/gdevpdtw.c base/gdevpdfg.c base/gdevpdti.c]
2010-12-09T15:39:10.142451Z Chris Liddell
A change to how we get the advance width of the glyph from Freetype. Previously, we used the data in the glyph metrics structure, which are scaled, and the undid the scaling. This is correct method for everything except the horizontal and vertical advance distances. We now get the two advance distances from the glyph structure, and tell Freetype not to scale them, this avoids the rounding errors that occur due to Freetype's fixed point number format. It also saves the (less significant) error when we previously unscaled the value, and saves a couple of fairly large double precision calculations. This does cause a number of changes in the regression suite, the vast majority are pixel or so differences in glyph positions. A very few are improvements. Bugs 691778 and 691777[psi/fapi_ft.c]
2010-12-09T14:35:26.421173Z Ken Sharp
fix pdfwrite Revision 11941 had a typo in gdevpdf.c which spelled %%EndProlog with too many % characters.[base/gdevpdf.c]
2010-12-09T14:20:46.589285Z Ken Sharp
pdfwrite enhancement : More work towards DSC compliance We now pass around the 'type' of an object much more when writing. This is so that we can emit "%%BeginResource/%%EndResource" comment pairs around the resources we write. It is also required so that we *don't* write these comments around pages. The code now emits %%BeginProlog, then writes the opdfread.ps procedure. It then writes all the various resources used in the document, each with a reasonable DSC comment. Then it writes %%EndProlog. After this come the page descriptions, each is written with a %%Page: comment and a %%PageTrailer. Finally we write the %%Trailer, %%Pages comment (NB we write %%Pages: (atend) in the header comments as we don't know how many pages there will be until the end) and %%EOF. The resources are mostly defined as being of type 'file', as most of them are not normal PostScript resources. The DSC specification says under the %%BeginResource definition (file note on p72) "The enclosed segment is a fragment of PostScript language code or some other item that does not fall within the other resource categories" and so this seems the best type to use for our purposes. The output is now minimally DSC compliant, though there are a few other comments I'd lie to add if possible. Given the way the file is created we are always going to have a large prolog, and that will need to be copied to all the pages if they are split individually, in order to make sure that all the required resources are present. Technically we could follow the resource chain and write %%IncludeResource comments, at the page level at least, but this is probably more effort than it is realistically worth. Still need to add some more comments, and run some extensive testing. No differences expected currently. Minimal testing with GSView suggests that the output so far is DSC-compliant as-is.[base/gdevpdfk.c base/gdevpdfm.c base/gdevpdfx.h base/gdevpdfo.c base/gdevpdf.c base/gdevpdfb.c base/gdevpdtd.c base/gdevpdfc.c base/gdevpdfo.h base/gdevpdfe.c base/gdevpdfu.c base/gdevpdtw.c base/gdevpdfg.c base/gdevpdti.c]
2010-12-07T14:14:20.090005Z Ken Sharp
pdfwrite enhancement : more work towards DSC compliant ps2write output This should now output pages in the correct order, with %%Page:/%%PageTrailer comments. Still need to address Resource comments and definitions. Committed so that a user can try out the code. No differences expected.[base/gdevpdf.c base/gdevpdfu.c]
2010-12-06T20:30:42.463413Z Michael Vrhel
Fix for bug 691466. Problem was caused by the DeviceN alternate color space being Lab and the color values not being properly decoded to enable use of the lab ICC profile. A few progressions in the cluster data base with this commit.[base/gscdevn.c base/gdevp14.c base/gsicc.c]
2010-12-06T16:39:46.324844Z Alex Cherepanov
Bring JPX Luratech decoder up to the level of Jasper decoder. 1. Don't expand indexed colors when the PDF expects an indexed color space. Fix rendering of the sample file attached to the bug. 2. Recognize indexed CMYK color space and accept the palettes that are shorter than 256 colors. Fix comparefiles/Bug689362.pdf 3. Fix memory corruption that happened with 4-bit-per-pixel grayscale image and pack the nibbles by PS rules. Fix comparefiles/Bug690174.pdf Luratech now renders every file in our test suite correctly. We don't have tests for low values of bits per plane. Bug 691816, customer 532.[base/sjpx_luratech.c base/sjpx_luratech.h]
2010-12-06T16:07:30.222320Z regression
Limit clusterpush.pl bmpcmp jobs to 10 megs of changes per file in addition to the 100 changes per file limit.[toolbin/localcluster/checkSize.pl toolbin/localcluster/clustermonitor.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl]
2010-12-04T21:12:37.349224Z Michael Vrhel
Fix for bug 691724. The issue was due to a bug in the code that creates equivalent ICC profiles from CIEABC types. This has a pile of progressions in the cluster data base. I stepped through them with bmpcmp and they appeared to be correct to me. I also altered the DefaultRGB PS color space to by in-sync with the D50 ICC sRGB based default that we are currently using.[base/gsicc_create.c Resource/ColorSpace/DefaultRGB]
2010-12-04T12:02:00.835522Z Ken Sharp
Remove some extraneous debugging code and variables left in accidentally with the commit for revision 11932.[base/gxfcopy.c]
2010-12-04T11:53:13.468703Z Ken Sharp
Fix (pdfwrite) : Hashing /Subrs didn't check all subrs. Bug #691815 "ps2pdf fails on attached ps file" The new code for hashing /Subrs, to improve font checking performance, stopped comparing /Subrs between two fonts as soon as either font had an error getting a specific /Subr. However it transpires that some fonts can have a null object for a /Subr (used to skip Subrs that do nothing), and this returns a typecheck error. This led to two fonts which differed only in the fact that one has (and uses) more Subrs than the other being perceived as identical. This could lead to pdfwrite using the wrong font when converting type 1 into CFF fonts and cause errors. The code now continues checking remainign /Subrs if a typecheck error occurs, and as an additional measure also checks the number of /Subrs in each font before deciding if they are compatible.[base/gxfont1.h base/gxfcopy.c]
2010-12-03T09:20:28.129989Z Ken Sharp
Fix (pdfwrite) : Work around Acrobat bug with /Encoding Bug #691809 "Regression: some PDF files produced by GhostPCL r11913 cannot be read by Acrobat 8.2.5" Acrobat 4 & 8 have a peculiar bug, if a type 3 font (may affect other font types, but it seems unlikely) has a WinAnsiEncoding, and no /Differences, then text set in that font is not displayed by these versions of Acrobat. This may be limited to glyphs which consist of a bitmap only. Forcing the emission of a /Differences array for each glyph used results in these versions of Acrobat displaying correctly (even though the 'differences' are in fact the standard Encodings). This does seem to be quite definitely an Acrobat bug which we are working around, no other PDF consumer seems to have a problem with these files.[base/gdevpdti.c]
2010-12-02T18:16:53.794801Z Michael Vrhel
Remove unused variable.[base/gxblend.c]
2010-12-02T17:09:45.886919Z Michael Vrhel
Fix for bug 691803. This provides a fix for cases where we have soft masks embedded within other soft masks. Such rare cases are detected and when they occur and the soft mask type is luminosity, the alpha channel of the soft mask buffer is pre-blended with the luminosity data to give the proper mask values. There appears to a be change in fts_33xx.xps from this commit. However, it appears to me that this file was not being rendered properly, compared to the windows xps viewer, prior to the commit either. I will file a bug related to this issue.[base/gdevp14.c base/gdevp14.h base/gxblend.c base/gxblend.h]
2010-12-02T09:58:28.497029Z Ken Sharp
minor bug, warning message point to incorrect source directory. Bug #691811 "incorrect error message" Simply alter the source path in a warning. No differences expected.[psi/imain.c]
2010-12-01T16:41:20.443841Z Michael Vrhel
Additional debug code to help in soft mask problems.[base/gdevp14.c]
2010-12-01T05:16:55.267986Z Michael Vrhel
Fix so that the blend compositor actions are only removed from the clist compositor queue if they are completely over-ridden by a subsequent compositor action. Previously no check was made to see that the same settings were being up-dated by the new action. This fixes two P1 customer bugs and has several progressions in the test suite but one file Bug691783.pdf has both regressions and progressions. I will get the page 18 regressions into a bug.[base/gdevp14.c base/gxclimag.c base/gxcldev.h]
2010-11-29T21:12:32.441057Z regression
Additonal improvement in the cluster's ability to be able to recover from machines going down late in the run. Machines are put into a standby state when there are no jobs left to send and they have processed all of their jobs until all machines are in the standby state, then all the machines are released from standby and can upload their logs[toolbin/localcluster/clustermaster.pl toolbin/localcluster/run.pl]
2010-11-29T18:55:03.883221Z Michael Vrhel
Fix for issues with the default ICC directory. The PS interpreter now checks if the default name is OK before setting to LIBPATH/iccprofiles . Also, the current name is first tested before we prepend with the directory name, to avoid doing double applications of the profile directory. Thanks to Ray for the fixes in gs_lev2.ps[base/gsicc_manage.c Resource/Init/gs_lev2.ps]
2010-11-29T18:30:38.060525Z Michael Vrhel
Fix for bug 691748. The idle optimizations for the softmask are not really valid since we have since created the proper bounding box for the soft mask in a previous commit. In the cluster push testing, some files came back as having problems with the psdcmyk device. Checking, it appears that these issues are not related to this fix but are another bug. I am working on this now and will submit a bug.[base/gdevp14.c]
2010-11-29T14:45:17.958276Z Chris Liddell
Due to "lazy evaluation" of softmask groups, the graphics state can change between the creation of the softmask group form, and when it is executed. We'll now save the gstate and (most of) the ExtGState when the softmask group is defined, and then set both before evaluting the object. A few ExtGState entries are not easily set directly, so those are missing. This partially fixes Bug 691157, and fixes Bugs 690351, 691348 and 690535. It also resolves the remaining issue with 690535. Cluster differences as follows: Bug690535.pdf (noted above) Bug690022.pdf, Bug690115.pdf, Bug690208.pdf, fts_26_2601.pdf and fts_26_2603.pdf are all improved when compared to Acrobat. A few xps->pdf conversions thru pdfwrite render differently, but they were wrong before, and slightly differently wrong now. I believe the PDFs are "incorrect".[Resource/Init/pdf_draw.ps]
2010-11-29T14:35:25.792013Z Ken Sharp
Fix (pdfwrite) : Type 3 font capture and charpath operations Bug #691033 "Regression: 14-01.PS fails with pdfwrite" The first time a type 3 glyphis encountered we start a charproc accumulatiopn and exit to run the BuildChar/BuildGlyph. On return to the text processing, if the operation was a charpath, this would take precedence over closing the accumulator which would lead to significant later problems. Modified the code path to allow for the charproc accumulation to finish and if this is a charpath operation to rerun the operation using the newly captured glyph program. Note this can only occur if the first operation on a given glyph in a type 3 font is for a charpath.[base/gdevpdtt.c]
2010-11-27T18:23:43.131547Z Ken Sharp
Fix (pdfwrite) : pointers not marked for garbage collection Bug #691779 "SegFault with pdfwrite and more than one cid font" pdfwrite does lazy creation of Identity ToUnicode CMaps for inclusion in output PDF files (2 CMaps, one for horizontal and one for vertical writing). These pointers were not marked for the garabge collector, but were stored directly in the pdf device structure. The CMaps were assigned to a pdfont resource type, where the pointer to the CMap *was* marked for the garbage collector. This meant that if the pdfont resource was moved as a result of garbage collection, the CMap could be moved as well. This left a dangling pointer in the device structure. If another font resource required an identity CMap then the now garbage pointer from the device structure would be assigned. If the new font resource was moved as a result of garbage collection, then the attempt to relocate the CMap would fail and cause a crash. Fixed by marking the pointers in the device structure for the garbage collector. No differences expected.[base/gdevpdfx.h]
2010-11-26T10:59:51.673656Z Chris Liddell
Update the FAPI/UFST interface to correctly scale the points when retrieving an outline. Since FAPI now expects points in 32.32 fixed point form.[psi/fapiufst.c]
2010-11-25T21:03:22.187304Z Robin Watts
Fix for bug 691785. The bitmap mask clip device has a long standing bug when attempting to clip a bitmap through a 1bpp bitmap (gxclipm.c, clip_runs_enumerate, line 283ish). The code detects runs of 'on' pixels in the mask. It then keeps the last run it found in a 1 place buffer (called 'previous'). This therefore represents the previous run found. Whenever we find a new run, we check to see if we can add it to the previous run to try to form a larger (vertical) rectangle. If we can't, we should write the previous rectangle out and remember the current one. Unfortunately the code was writing the current rectangle out, rather than the previous one. This has the effect of losing the first run on most lines out. 130 differences shown in cluster testing; confirmed in bmpcmp as progressions.[base/gxclipm.c]
2010-11-25T09:12:13.562173Z Ken Sharp
Remove a now-unused variable to silence a compiler warning. No differences expected.[base/gdevpdfb.c]
2010-11-24T22:18:34.999818Z Michael Vrhel
Style clean up of gdevp14.c for white space, comments, long lines and dead code.[base/gdevp14.c]
2010-11-24T17:44:39.808162Z Michael Vrhel
Fix so that we handle the \B command properly when we have transparency. The stroke should be drawn in a knock-out fashion rather than blended with the fill. This was achieved by adding in the push of a knockout transparency group for the stroke operation. The opacity for that group had to be 1 rather than what ever the current graphic state was (otherwise you end up with the opacity applied twice). That change revealed an issue in the clist when a transparency group is pushed where the opacity for the pdf14 clist device was being altered without having the information passed into the clist. Fixing that required a few changes to make sure that the blend parameter changes for the transparency group end up written in the same bands as the group push rather than all bands like the normal blend parameter change compositor action does. A few changes were needed in the clist compositor writing code to make sure that this special blend parameter change did not push a new cropping item on the cropping stack. This commit results in a lot of progressions. However, the cluster push revealed a couple files fts_06_0608.pdf.pdf.ppmraw for example, which may have an issue. These are being checked and if found to be an issue a new bug report will be filed.[Resource/Init/pdf_ops.ps base/gdevp14.c base/gxclimag.c base/gxblend.c base/gstrans.h base/gxblend.h]
2010-11-24T16:21:25.266704Z Ken Sharp
pdfwrite enhancement : attempt to make PCL bitmap fonts into searchable type 3 In general pdfwrite only resorts to making a bitmap from a font when it cannot handle the original font type, which is rare for PostScript, PDF and XPS. However all PCL bitmap fonts are handled this way. When this happens, the bitmap is stored into a general type 3 font, a 'bucket' where all such glyphs are stored. When this font is full, a new one is started and so on. The text stored in the PDF page stream references the correct type 3 font, but usually the character code will be unrelated to the original character code. For PCL bitmap fonts pdfwrite actually starts by creating a type 3 font to hold the PCL bitmaps, but doesn't use it. This patch tries to store the bitmaps in the type 3 font where possible, using the character code from the original PCL document. Although this will not create searchable text in the general case, it does seem that there are a good number of PCL documents which do use an ASCII encoding and so will produce a searchable PDF file. There are several caveats: 1) This only works at all with cached glyphs. Glyphs which are too big to fit in the cache are instead rendered as images, not text at all. The cache has a compiled limit of 2500 for the height of the bitmap, but this needs to take the resolution which is being used for rendering into account. The default resolution for pdfwrite is 720 dpi which means that bitmaps larger than ~125 rows will not be cached. (see below for more) 2) Certain kinds of text operations can't be handled at all; any case where a character code does, or may, exceed 256 cannot be handled. These cases are handled as before by placing in a special font with a unique character code and called from there. 3) If the font matrix is not the identity we cannot handle the glyphs, as the bitmaps stored in the cache already include any transformations present in the Fontmatrix and we can't undo those transformations to the bitmap. In practice this means that if the canvas orientation (not the media) is not portrait, then this will cause the text to be non-searchable. 4) The Acrobat searching algorithm does not work very well with this kind of text. In our case each glyph is individually positioned on the page rather than being written as a continuous stream of characters. Acrobat seems unable to find more than about three glyphs in succession this way. There is no further scope for improvement in pdfwrite as far as I can see. The only way to handle this better would be to make changes in the PCL interpreter so that the bitmap PCL font is created as an actual font (probably a TrueType). This would mean that the text would be stored in the PDF file as real text, the FontMatrix would not be a problem, caching would not be an issue. This is probably a large project, but I suspect less of a pain than this enhancement was. Caching ======== In gsfont.c is a #define: #define blimit_LARGE 2500 /* blimit/upper - max size of a single cached char */ Increasing this will allow larger glyphe to be cached. There is another limit in gxchar.c: static const uint MAX_TEMP_BITMAP_BITS = 80000; This should not be altered. Care should be exercised if increasing the maximum size of cached characters as these are emitted in the PDF file as inline images in a type 3 font. The PDF spec recommends that inline images should not exceed 4Kb and some consumers may not be able to cope with images which exceed this limit.[base/gdevpdfb.c base/gdevpdti.c]
2010-11-23T16:01:44.675647Z Ray Johnston
Fix chunk_free_all_remaining typo so that mulitple object chunk list gets traversed and freed first, then the single object chunk list. Thanks to Norbert Janssen for spotting this. Bug 691791.[base/gsmchunk.c]
2010-11-23T15:36:28.976110Z Robin Watts
Fix for Bug 691783. A tiny tweak to that submitted by Sebastian Rasmussen. Many thanks! When closing down render threads we check to see if the underlying allocator had to be wrapped to make it thread safe. If it was, we free the wrapped version too. Unfortunately the test to see "did we have to wrap it" was accessing memory we'd just freed. The fix is to move the code that finds the underlying allocator to before we free the memory. Cluster testing shows no differences.[base/gxclthrd.c]
2010-11-23T12:33:56.433376Z Robin Watts
In an effort to understand the shading code I put together a 'map' of the function calls as comments. This has been hanging around my harddisc for ages and I'm now committing it to avoid it being lost. Comment change only - no cluster changes expected.[base/gxshade1.c]
2010-11-23T08:46:10.878077Z Ken Sharp
Revert revision 11901. Because of the way that PCL draws bitmap fonts directly to the cache there is no possibility of making uncached glyphs work properly. Also the code for cached glyphs is much too forgiving and attempts to add glyphs which cannot be handled. Finally there is no provision for type 3 fonts with non-identity matrices. Because the bitmaps in the cache already have the scaling/rotation/shearing and clipping applied, we cannot have a type 3 font with a non-identity matrix. The code will be revised and recommitted.[base/gdevpdti.h base/gdevpdfx.h base/gdevpdfb.c base/gdevpdt.h base/gdevpdti.c base/gdevpdfi.c]
2010-11-20T22:55:09.754787Z regression
Improved the cluster code's ability to be able to recover from machines going down late in the run.[toolbin/localcluster/clustermaster.pl toolbin/localcluster/run.pl]
2010-11-18T19:21:31.928351Z Chris Liddell
Ensure we set SHARE_FT correctly when we end up using the system installed freetype library. Bug 691776. No cluster differences expected.[base/configure.ac]
2010-11-18T00:52:20.670104Z regression
Two changes to the local cluster system: 1. A warnings check is now performed on the code under test (both commit and user tests). 2. In order to better recover from nodes going offline near the end of a cluster run nodes are paused after all their jobs have been sent. This way the jobs from an unresponsive node that isn't detected until all jobs have been distributed can be reassigned. Also some minor cleanup (dividing the clustermaster log into .log and .dbg files, supressing some uneeded debugging messages, etc.)[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/pngs2html.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl toolbin/localcluster/cachearchive.pl toolbin/localcluster/compare.pl]
2010-11-16T22:49:26.969992Z Ray Johnston
Fix for PCL that uses the chunk allocator (which is not inherently thread safe) when NumRenderingThreads > 1. Adds 'is_thread_safe' to the gs_memory_status so that clist_setup_render_threads can wrap an unsafe allocator in a locking wrapper. Also restore the optimizations to the chunk memory allocator to keep two lists (one for multiple object chunks and another for single object chunks) and fixes the chunk_free_object so that the correct list is chosen. Even if not found on the selected list, the other list will be scanned and a diagnostic printed if the wrong chunk list was selected (belt and suspenders). My testing with the lj*.prn files did not show this problem.[base/lib.mak base/gsmemlok.c base/gsmchunk.c base/gxclthrd.c base/gsmalloc.c base/gsmemret.c base/gsalloc.c base/gsmemory.h base/gsmemraw.h]
2010-11-16T14:48:31.620067Z Michael Vrhel
Fix so that the initial gray color spaces in the graphic state are properly color managed. Previously, if we immediately started drawing in the document with a gray color space, the initial un-managed color space in the graphic state was used and this was not associated with the specified gray source profile. With this fix we initialize the stroking and filling color spaces to be ICC color spaces associated with the profile for default_gray in the icc manager. Also a fix for an issue in littleCMS. When merging profiles, littleCMS will often do an optimization where it approximates 1-D LUTs with an exponent operation for use during merging and interpolation of the profile structures. If the curve is very steep, as in like a step function, it should not do this approximation. This was an issue when we had profiles that provided thresholding operations with their 1-D LUTs. I spoke with Marti about this issue a couple weeks ago. This commit will create over 6000 differences in the regression test. I reviewed many of these and they all are minor differences in gray colors as expected. These are differences where we were drawing unmanaged colors.[base/gsicc_manage.c psi/zusparam.c base/gsicc_manage.h lcms/src/cmsgmt.c]
2010-11-16T14:33:57.040738Z Ken Sharp
pdfwrite enhancement : attempt to make PCL bitmap fonts into searchable type 3 In general pdfwrite only resorts to making a bitmap from a font when it cannot handle the original font type, which is rare for PostScript, PDF and XPS. However all PCL bitmap fonts are handled this way. When this happens, the bitmap is stored into a general type 3 font, a 'bucket' where all such glyphs are stored. When this font is full, a new one is started and so on. The text stored in the PDF page stream references the correct type 3 font, but usually the character code will be unrelated to the original character code. For PCL bitmap fonts pdfwrite actually starts by creating a type 3 font to hold the PCL bitmaps, but doesn't use it. This patch tries to store the bitmaps in the type 3 font where possible, using the character code from the original PCL document. Although this will not create searchable text in the general case, it does seem that there are a good number of PCL documents which do use an ASCII encoding and so will produce a searchable PDF file. There are 3 parts to this enhancement: 1) Cached glyphs. When the current font is a type 3 font, and the text operation is one which might result in an ASCII character code, and we can manufacture a glyph name for the resulting character code, store the glyph in the type 3 font (rather than the general 'bucket' font), using the character code and glyph name. Glyphs which can't be handled this way for any reason are still stored in the general recipient 'bucket' font. 2) Uncached glyphs. Glyphs which are too large for the cache are rendered as images. The image handling code has been extensively reworked to try and detect this situation and, if the criteria for cached glyphs above also holds true, to store the image as a glyph in a type 3 font and draw text in the PDF content stream instead of an image. Images which do not fulfil these criteria are still handled as images. 3) Recached glyphs. If the glyph cache fills up, glyphs will be flushed to make space. If a glyph is then reused we go through the caching case again (for large glyphs which are uncached we end up repeating the code every time the glyph is used). We now attempt to spot this by determining that the glyph in the font has already been used, and rather than storing a new copy of the glyph, as the old code did, we simply emit text into the page content stream. Note that there is a recommendation that inline images in PDF should not exceed 4KB. Since CharProcs must use inline images, bitmaps which exceed this size will be rendered as images, not text (they will also exceed the cache size and so are always rendered uncached).[base/gdevpdti.h base/gdevpdfx.h base/gdevpdfb.c base/gdevpdt.h base/gdevpdti.c base/gdevpdfi.c]
2010-11-16T13:58:36.196330Z Alex Cherepanov
Prefer character codes < 256 during construction of /CharStrings and /Encoding attributes of a symbolic Type 42 font. Bug 691753.[Resource/Init/gs_ttf.ps]
2010-11-15T18:30:50.012584Z Henry Stiles
reverts 11877 which needs a bit more work[base/gsmchunk.c]
2010-11-15T09:11:50.168011Z Chris Liddell
Fix a memory leak when interpolating image data. We were allocating a colour management buffer for every interpolated scan line from the currently buffered image data, but only releasing the last one. We'll now allocate the buffer (and initialise the buffer desc structure) only once, and free the buffer once when we're done. No cluster differences expected. Bug 691772 (NOTE: the test file for this still appears to go into an infinite loop during interpolation).[base/gxiscale.c]
2010-11-14T21:16:15.954493Z Michael Vrhel
Make a macro for the default ICC profile name and set it in the proper locations.[base/gsicc_manage.c psi/zusparam.c base/gsicc_manage.h]
2010-11-06T15:36:18.568592Z Michael Vrhel
Fix for a string handling bug that occurred when the device ICC profile name was smaller than the default device profile name. Also, additional code to ensure that the ICC path and the device profile name are properly combined when needed. Finally, if the device profile name is given as an absolute name the icc directory is not added to it.[base/lib.mak base/gsdparam.c base/gsicc_manage.c]
2010-11-05T22:12:05.617541Z Michael Vrhel
Fix so that when compositing with tags, the tos tag data has no effect on the nos tag data if the pixel alpha value is 0. Fixes Bug 691752.[base/gxblend1.c]
2010-11-05T15:53:35.817121Z Chris Liddell
In the event that we've decided not to cache a glyph generated by FAPI, we need to make sure that zsetcachedevice2() doesn't opt to try to cache said glyph. To do that we were setting in_cachedevice to CACHE_DEVICE_NOT_CACHING before calling zchar_set_cache(), and setting it back to its previous value on return. Unfortunately, a font with a CDevProc causes the call to zsetcachedevice2() to be delayed until after execution of the CDevProc, so in_cachedevice was (probably) no longer set to CACHE_DEVICE_NOT_CACHING. Amongst other effects, this caused some anti-aliased glyphs to be render with incorrect, scaling as well as the potential for marking glyphs to have empty (but valid) cached bitmaps. Expected cluster differences: fts_23_2306.pdf at 72dpi shows some (benign) pixel differences on the pattern filled glyphs - this is actually a behaviour progression, as it is caused by cache being properly bypassed for an uncached glyph, rather than the glyph being rendered uncached but the cache receiving an emtpy glyph. Bug 691750.[psi/zfapi.c]
2010-11-04T19:13:08.201769Z Michael Vrhel
Increase in curve size to enable sharper cut offs (i.e. no interpolation of curve points) for thresholding profiles.[toolbin/color/icc_creator/ICC_Creator/icc_create.cpp]
2010-11-03T20:44:07.993086Z Michael Vrhel
Fix to avoid potential crash instead of error if an improper file name is given for the device ICC profile.[base/gsicc_manage.c]
2010-11-02T17:16:24.985382Z Chris Liddell
Remove some unnecessary, and detrimental endian related code in the GS/lcms interface. Bug 691696 No cluster differences expected.[base/gsicc_cache.c base/gsicc_littlecms.c]
2010-11-01T23:59:27.933765Z Michael Vrhel
Performance fix so that the md5 code is not used to hash the rendering conditions for the icc link.[base/gsicc_cache.c base/gscms.h]
2010-10-31T03:26:19.022477Z Ray Johnston
Optimize large allocations in the chunk memory manager maintaining separate lists for chunks with only a single block (that will never have any free space) from the multiple object chunks which are searched for free space when the requests are for small objects. Testing with a 28 files benchmark suite shows improvements against rev 11876 by over 9% (real time), to get within 2% of version 8.71. (testing 600 dpi ppmraw to /dev/null on peeves).[base/gsmchunk.c]
2010-10-30T03:40:36.798714Z Alex Cherepanov
Check for negative object nunbers and consider such objects as null. Bug 691740, customer 384.[Resource/Init/pdf_base.ps]
2010-10-29T23:40:30.279741Z Michael Vrhel
Fix so that the image clues array is dynamically allocate only when needed as opposed to being a static array in gx_image_enum. clues is used only in the case of monochrome or indexed with bps <= 8 and masked images. Another optimization to do is to make it allocate only 2 entries for the masked case rather than all 256.[base/gxipixel.c base/gxidata.c base/gximage.h]
2010-10-29T19:35:48.071618Z Henry Stiles
Revision 10823 removed an optimization to strength reduce the logical operation when rendering an image - the optimization in fact was incorrect (see the bug referenced in the commit entry #691147) however the optimization is correct and gives us a good speedup if the current color is black. This is due to the peculiarities of the pcl transparency model which only effects the opacity/transparency of white.[base/gxipixel.c]
2010-10-29T16:37:41.020300Z Michael Vrhel
Added features and fixed bugs to enable creation of thresholding ICC profiles.[toolbin/color/icc_creator/ICC_Creator/icc_create.h toolbin/color/icc_creator/ICC_Creator/ICC_CreatorDlg.h toolbin/color/icc_creator/ICC_Creator/resource.h toolbin/color/icc_creator/ICC_Creator/ICC_Creator.rc toolbin/color/icc_creator/ICC_Creator/icc_create.cpp toolbin/color/icc_creator/ICC_Creator/ICC_CreatorDlg.cpp]
2010-10-29T09:05:42.895454Z Ken Sharp
Fix : DeviceN not permitting multiple identical inks Bug #691740 The DeviceN checking code did not permit multiple inks to have the same name. The comment in the code says this is not permitted, but I am unable to find any documentation in any of the specifications in support of this, and other interpreters (including CPSI) do not make this restriction. Restriction removed, and also the 'continuation' procedures used for much of the colour space parsing/validation have been given names so that future error messages use these instead of printing the function address. No differences expected.[base/gscdevn.c psi/zcolor.c]
2010-10-28T20:41:14.761110Z Michael Vrhel
Addition in profile creation tool to create Gray ICC profiles with abrupt thresholds. Needed for solution to bug 691737[toolbin/color/icc_creator/ICC_Creator/icc_create.h toolbin/color/icc_creator/ICC_Creator/ICC_CreatorDlg.h toolbin/color/icc_creator/ICC_Creator/resource.h toolbin/color/icc_creator/ICC_Creator/ICC_Creator.rc toolbin/color/icc_creator/ICC_Creator/icc_create.cpp toolbin/color/icc_creator/ICC_Creator/ICC_CreatorDlg.cpp]
2010-10-28T19:57:51.569853Z Michael Vrhel
Fix for issues that arise when the embedded icc profile is the same as one of the default icc profiles and we are using pdfwrite. This should fix 691731.[base/gsicc_create.c base/gsicc_manage.c base/gscms.h base/gsciemap.c]
2010-10-28T19:02:45.723574Z Robin Watts
Marcos points out that tiffscaled with -rR -dDownScaleFactor=D can produce different sized images than just using -r(R*D) and a normal tiff device. (Bug 691730). I'll concede he's probably right that this isn't ideal. The difference was caused by me rounding the size up on a downscale so that no information is lost. This patch removes the rounding up. We can always add it again later if we actually find a file where it makes a difference. No expected cluster differences.[base/gdevtifs.c]
2010-10-28T15:00:37.200667Z Chris Liddell
Work around the "no rule to make target" with tif_config.h (actually it affects tiffconf.h, too). This involves the rather unpleasant requirement of calling a configure script (for libtiff) from a makefile (the top level makefile for the ghostpdl builds). It must be done there, before the PDL specific makefiles start setting CFLAGS, which confuses the configure. Also, update the GS dist-clean and GhostPDL clean targets to remove the two tiff header files generated during the tiff configure. THIS IS NOT A FIX! It really is a "workaround". Bug 691700.[/trunk/ghostpdl/Makefile base/Makefile.in]
2010-10-28T06:12:53.429268Z Michael Vrhel
Code to speed up cases where a file contains a lot of small images that are embedded in the clist as high level images. Previously, for every high level image, the serialized ICC source data was read out of the clist at a different clist file location, which required a fseek, a fread and then another fseek. This occurred even if all the images shared the same profile. The cost of file i/o for this can become significant if we have a lot of images. With this commit, the reading of the profile data is delayed and will only occur if a link using that profile does not already exist in the link cache.[base/gxclpath.c base/gxclimag.c base/gxclist.h base/gxclrast.c]
2010-10-28T04:12:55.507828Z Marcos H. Woehrmann
Added dependencies to devs.mak to allow minftrsz.c to compile with concurrent make.[base/devs.mak]
2010-10-27T23:30:42.045125Z Robin Watts
Fix compiler warning. No expected differences.[base/gdevtifs.c]
2010-10-27T19:48:01.087645Z Robin Watts
Add new version of tiffscaled device, that supports -dMinFeatureSize=2. (Solves bug 691718). Also add support for AdjustWidth in tiffscaled device. Also update documentation. No expected differences.[base/gdevfax.h base/gdevtifs.c base/minftrsz.c base/gdevtifs.h base/gdevtsep.c base/minftrsz.h doc/Devices.htm base/gdevfax.c base/gdevtfnx.c base/gdevtfax.c]
2010-10-27T12:45:49.361211Z Robin Watts
Fix Bug 691727. Black and White Tiff based devices were not respecting the AdjustWidth parameter. Fax based devices were applying it regardless, non faxed based devices were not applying it at all. The documentation says they should all default to applying it, but be controlled by the option. In this commit, we change so that all black and white tiff based devices (except tiffscaled) respect this parameter. We default to applying it in fax devices, and not applying it in non-fax devices, so default behaviour does not change. We also update the docs. No expected differences.[doc/Devices.htm base/gdevtfax.c]
2010-10-27T11:18:38.076346Z Robin Watts
Fix Bug 691726, memory corruption in tiffscaled device when (resolution % DownScaleFactor) != 0. The problem specifically occurred when the page had 'stray' lines at the end. The code I had written to cope with this was calling the Tiff writing code with the wrong row number, causing the tiff lib to try to extend the buffer. This, it seems, is a bad thing. The miscalculation is fixed here, and the bug goes away. No expected cluster differences.[base/gdevtifs.c]
2010-10-26T23:54:13.691521Z Robin Watts
Fix bug reported by Norbert Janssen. Inaccuracies in the floating point maths can cause 'no-scales' to look like 'downscales', and so high level images are skipped. This shouldn't actually matter in most cases as the two rendering paths should give the same results, but when people hook the clist for their own purposes this can cause problems. The workaround is to introduce a fudge factor and to accept very slight downscales. Thanks to Norbert for the first version of this patch. Minimal differences in cluster testing due to bug 691697.[base/gxclimag.c]
2010-10-26T20:30:32.970049Z Michael Vrhel
Fix for RGB byte order expected by new CMM compared to imdi libray.[base/gdevwts.c]
2010-10-26T20:22:45.373077Z Robin Watts
Silence gcc warning.[base/gdevfax.c]
2010-10-26T19:41:35.752819Z Michael Vrhel
Removal of accidental commit of my own path for the wts halftone planes.[base/gdevwts.c]
2010-10-26T18:50:49.267717Z Michael Vrhel
Fix so that wtsimidi device works again. I had the device using the wrong structure for maintaining its device link that maps the contone RGB data to CMYK.[base/gdevwts.c]
2010-10-26T18:10:15.277289Z Robin Watts
Add Rays MinFeatureSize magic. Ray had originally integrated this into the fax devices, which had the effect of working for the tiff based fax devices too. Unfortunately the reworking of the tiff based devices to use libtiff meant that the output function changed, causing the patch to stop working with those devices. Here we split the new code out into a separate .c/.h pair, so it can be used by both tiff and fax devices, and hook it up to all the black and white tiff devices (except tiffscaled) and to the fax based ones. We also document the device (including it's current limitations). No expected changes.[base/gdevfax.h base/gdevtifs.c base/minftrsz.c base/gdevtifs.h ghostscript.vcproj base/minftrsz.h base/gdevtsep.c doc/Devices.htm base/gdevfax.c base/gdevtfnx.c base/devs.mak base/gdevtfax.c]
2010-10-26T14:14:24.874268Z Alex Cherepanov
Generate fully opaque mask when /SMaskInData attribute is specified in PDF but JPX stream has no opacity channel. Fix the case of missing images on Luratech decoder in fts_17_1717.pdf and fts_17_1718.pdf.[base/sjpx_luratech.c]
2010-10-25T16:51:26.885213Z Alex Cherepanov
Change the interface to Luratech JPX library to extract image data or opacity depending on the alpha parameter.[base/sjpx_luratech.c]
2010-10-25T15:59:10.973330Z Ken Sharp
Fix pdfwrite : Do not emit DeviceRGB/CMYK as an Alternate when disallowed by PDF/A or X If a /Separation colour space had an /Alternate of /DeviceRGB or DeviceCMYK it was not checked to see if it was valid for PDF/A or PDF/X production, if these were set. As a result invalid PDF/A or PDF/X files could be written. The code now tests these flags and if the base space is not valid, converts to an appropriate base space by; sampling the tint transform function at 0 and 1, converting the resulting colours to the appropriate base space (using the Red Book methods for DeviceRGB/DeviceCMYK conversion), creating a new linear interpolation function for the new base space, using the converted sampled values for /Co and C1. The new base space is then written to the PDF file. No differences expected as we don't test PDF/A and PDF/X on the cluster.[base/gdevpdfc.c]
2010-10-25T06:23:22.846885Z Alex Cherepanov
Move initialization of state->alpha flag to the place where it has effect.[base/sjpx_luratech.c]
2010-10-25T04:39:51.229054Z Alex Cherepanov
Merge rev. 11790, 11795, 11802, 11805, 11809, 11810, 11812, 11813, 11818 into the trunk. JPX files without SMaskInData are now rendered correctly. Other JPX files are rendered incorrectly. Trunk PostScript code and Jasper use separate access to opacity and data. Luratech is still using pixel- interleaved format.[base/sjpx_luratech.c base/sjpx_luratech.h psi/msvc32.mak]
2010-10-25T04:16:46.177854Z Alex Cherepanov
Rev. 11785 have introduced double decrement of the reference counter in gx_pattern_cache_free_entry() that caused warnings with -Z? option and SEGV on Windows, esp. with Luratech JPX library. This patch resolves all warnings and crashes. Bug 691714.[base/gxpcmap.c]
2010-10-24T22:23:55.448411Z Alex Cherepanov
Implement /SMaskInData using images with /SMask and separate streams for the mask and image data. Our /ImageType 103 seems to have issues and cannot be used directly. /JPXDecode filter now takes /Alpha parameter, which controls whether opacity or image data stream is extracted. This commit introduces a PS error on pdfwrite device in fts_18_1805.pdf and a few other files with the same image. However, this image has never been combined with SMask before and the actual bug may predate the commit. Bug 691489, customer 532.[base/sjpx.c Resource/Init/pdf_draw.ps]
2010-10-23T22:38:17.069244Z Alex Cherepanov
Move checking for /JPXDecode filter in front of checking for missing color spaces to handle /SMaskInData attribute in all cases. Fix handling of filter arrays and a wrong name /DecodeParms.[Resource/Init/pdf_draw.ps]
2010-10-22T09:29:10.157074Z Chris Liddell
Add a debug-clean target (which in turn calls the existing debugclean target) to be more consistent with the ghostpdl langauge builds. No cluster differences expected.[base/Makefile.in]
2010-10-22T07:52:12.054756Z Ken Sharp
Remove a spurious space that was causing a compiler warning, and remove an unused function, also causing a compiler warning.[base/gdevpdfu.c]
2010-10-22T06:38:49.083740Z Alex Cherepanov
Make oforce_recursive more robust in preparation to SMaskInData commit. Don't execute tint transform functions and similar executable arrays that may be added by our PDF interpreter to PDF objects.[Resource/Init/pdf_base.ps]
2010-10-22T04:19:30.192593Z Alex Cherepanov
Recognize /SMaskInData attribute as an indicator that the page has transparency features. Establish a base level for a future regression testing.[Resource/Init/pdf_main.ps]
2010-10-21T15:57:37.250433Z Ken Sharp
More DSC work. Altered Procset emission to strip comments (but not line endings), as some of the ProcSets included %%BeginPrologue and %%EndPrologue comments which isn't (I don't think) allowed. Also makes the output file smaller. When producing DSC output, don't set the FitPages/RoatePages/CenterPages/SetPageSize operations. Don't permit the entire file to be compressed when emitting DSC PostScript (clearly won't be DSC compliant that way) Produce some very basic DSC Comments; the correct header, %%Pages, %%Beginprologue. %%EndPrologue, %%EndComments. Don't emit %PDF header when producing DSC PostScript. Count the number of pages and emit a %%Pages: comment at the end of the file. Don't write the Info dict when producing DSC PostScript. Emit %%Trailer and $$EOF.[base/gdevpdf.c base/gdevpdfu.c]
2010-10-21T14:09:27.225155Z Marcos H. Woehrmann
Updated the cluster new node instructions to test the cups device when verifying the installation is complete.[toolbin/localcluster/readme]
2010-10-21T13:39:00.821724Z Marcos H. Woehrmann
Added the cups dev repositories to the cluster node sertup read.me[toolbin/localcluster/readme]
2010-10-21T11:17:31.420556Z Ken Sharp
When producing DSC compliant PostScript from ps2write, do not emit the following; Pages tree, outlines, articles, named destinations, PageLabels array, document metadata, document Catalog, threads, encrypt dictionary, xref, trailer. These objects are not required by PostScript, and cannot be easily placed in a DSC-conforming file. This does mean that, unlike the general output from ps2write, the output file is *not* a valid PDF file and cannot be opened as such by a PDF consumer. No differences expected.[base/gdevpdf.c]
2010-10-21T11:07:40.293085Z Ken Sharp
Correct a bug in revision 11828 which tried to copy too many bytes from the source buffer, if fewer bytes were read then were requested, when copying a ProcSet.[base/gdevpdfu.c]
2010-10-21T08:22:47.321512Z Ken Sharp
Remove some unused variables to silence compiler warnings.[base/gdevpdfu.c]
2010-10-21T02:48:48.797956Z Alex Cherepanov
Don't search for a font named / on disk, because operator findlibfile throws an error in this case. Just fail the request when such font is not defined in VM. Bug 691698, customer 384.[Resource/Init/gs_res.ps]
2010-10-20T17:00:27.929678Z Robin Watts
Add a helpful valgrind header, and call it from gsmdebug.h. The valgrind header here serves 2 purposes. Firstly, it insulates us from platforms on which Valgrind does not exist - if we build without defining ENABLE_VALGRIND then no dependency on any valgrind headers exists. The standard Valgrind macros are all defined in this header to do nothing, so they can safely be called in our code without needing ugly #ifdef ENABLE_VALGRIND wrapping. Secondly, it insulates us from changes in the valgrind/memcheck.h file - if ENABLE_VALGRIND is defined we will use whatever version is defined by the system. If new macros are defined by new versions of valgrind/memcheck.h we simply need to add new 'empty' definitions to valgrind.h. To start with, the only use of this code is to mark the contents of newly allocated blocks as being undefined. Thanks to AlexCher for spotting a cunning place to do this.[base/valgrind.h base/gsmdebug.h]
2010-10-20T16:59:51.575415Z Alex Cherepanov
Add /ZapfDingbats to the list of known symbolic fonts, which ignore bogus /Encoding attribute. Fix fts_23_2300.pdf rendering.[Resource/Init/pdf_font.ps]
2010-10-20T16:05:28.326890Z Ken Sharp
Initial work on DSC compliant PostScript. When ProduceDSC is true, do not strip the ProcSet, this is because DSC-compliant files have a line limit of 256. Later we will want to wrap the ProcSet emissions with %%BeginResource/%%EndResource as well. No effect if ProduceDSC is not true, so no differences expected.[base/gdevpdfu.c]
2010-10-20T14:45:48.119859Z Ken Sharp
Add a new switch to ps2write, working title 'ProduceDSC'. This will be used to control whether the output of ps2write is DSC-compliant or not. No differences expected.[base/gdevpdfx.h base/gdevpdfp.c base/gdevpdfb.h]
2010-10-20T10:59:23.603495Z Robin Watts
Disable the use of high level images in the clist if we are downscaling; this serves 2 purposes. Firstly, it fixes the potential problems with banded/unbanded mismatch of rendering due to the 'support' calculations done in the high level image code. These calculations are no longer correct for downscales since the change to use a simpler interpolated image scaler. Secondly, when downscaling we will probably end up copying more data than we would if we just kept the original, so high level images are a bad idea anyway. This *should* produce no differences, but actually produces lots. Most of these might be ignorable (slight rendering differences that appear to result in the new images being a little lighter, but a significant number appear to be noticable progressions, which hints that the high level image clist code is broken. Specifically high level images fail to render the same as the non high level code does. In particular halftoning seems to be enabled for some examples when high level images are used, for no good reason. This has been opened as bug 691697.[base/gxclimag.c]
2010-10-20T10:21:50.512085Z Robin Watts
Unpack a hideously complex if statement into a series of if statements. Any reasonable compiler (if such a thing can be said to exist) should compile to the same code, but this is a lot easier to use under a debugger/ read. No changes expected in testing (and clusterpush agrees).[base/gxclimag.c]
2010-10-19T08:04:32.778817Z Ken Sharp
Fix (pdfwrite) : Update CFF interpreter to handle gsubr while searching for SEAC Bug #691680 "PDF Writer drops many accented characters" pdfwrite makes use of a routine 'gs_type1_piece_codes' while copying fonts to determine if a glyph is a SEAC, and therefore includes two subsidiary glyphs. This code was updated previously (rev 10076) but on encountering a callgsubr in a CFF font, assumed that the glyph was not a SEAC> This patch adds support for callgsubr and continues searching glyphs which use a gsubr to see if the gsubr is actually a SEAC type endchar. No differences expected.[base/gxtype1.c]
2010-10-18T15:44:20.143696Z Chris Liddell
Silence a compiler warning from my previous commit.[psi/zchar42.c]
2010-10-18T14:11:44.566085Z Chris Liddell
In a CIDType2 font with a gsub table, when/if we substitute the glyph index with an index for a vertical glyph, make sure we change the value of the Truetype glyph index, and *not* the value of the Postscript CID. Bug 691692 No cluster differences expected.[psi/zchar42.c]
2010-10-16T15:52:53.774342Z Ken Sharp
Fix pdfwrite: Don't use CFF font format if CompatibilityLevel < 1.2 We permit CompatibilityLevel down to 1.1, but PDF 1.1. doesn't support CFF (Type 1C) fonts, so don't use this format if CompatibilityLevel < 1.2. No differences expected.[base/gdevpdfp.c]
2010-10-15T15:12:36.033471Z Ken Sharp
Fix (pdfwrite) : Scale up type 3 font outlines to give more accuracy Bug #691383, #691287, #691595 various type 3 font problems. Although this is being fixed for the FreeType implementation, the Artifex font interpreter had similar problems. The issue is caused by using an identity scale at 72 dpi to capture font outlines. Quark often uses a type 3 font which runs a type 1 font, in order to achieve text special effects, such as stroke+fill. The stroke was achieved by a 'charpath/fill' combination, because pdfwrite doesn't have a charpath, this meant that the path was captured and emitted. Because the scale was so low, the interpreter could run out of arithmetic precision, resulting in poorly formed outlines. We can't simply use the CTM in force at the time, as that includes the font scale, but we need to use something other than the identity. A scale facto of 1000 proved too likely to cause arithmetic overflow, or clipping, and also meant writing large values to the PDF file, which is inefficient. A factor of 10 turned out to be insufficient, so a factor of 100 has been used. Because the CharProc is effectively interpreted at the page level, this can result in large values being used for paths, so we need to scale the device width and height by 100 as well, to prevent clipping (and undo it afterwards!)[base/gdevpdtt.c base/gdevpdti.c]
2010-10-15T15:07:05.687999Z Chris Liddell
With the latest release of Freetype, reinstate the "sensible" method of limiting the size of the bitmap that we let Freetype create. It is limited to 1.5x the current maximum cacheable glyph bitmap, as it is *vital* that we avoid creating an outline when the cache expects a bitmap, but not a problem if we create a bitmap for a non-cached glyph. Bug 691569. No cluster differences expected.[psi/fapi_ft.c]
2010-10-15T14:21:51.952651Z Ken Sharp
Fix (pdfwrite) : Properly scale co-ordinates into Acrobat's range When emitting various co-ordinates pdfwrite is careful to stay within +/- 32,767 in order to ensure all versions of Acrobat can properly deal with them. To achieve this it emits a matrix which scales values up, and then writes the co-ordinates scaled down by this factor. Thus ensuring that they stay within permitted values, but are still correct. However, when emitting a rectangular fill, the scale was applied backwards, the co-ordinates were scaled *up* instead of down by the scale factor. This led to wildly incorrect values being written for rectangular paths. No differences expected with this in the test suite, however it forms part of the fix for type 3 fonts which will follow and does rely on this change.[base/gdevpdfd.c]
2010-10-14T20:23:15.984226Z Henry Stiles
The image_set_gray function needed to take the address of the pointer to the device color, the parameter should have been passed by reference, as it must be set to &penum->clues[sample_value].dev_color and returned. We'd like to get rid of the macro entirely and use the image_set_gray as an inline function but have not tested performance. The function might be too complex for inlining on some compilers.[base/gximono.c]
2010-10-14T15:06:01.276381Z Chris Liddell
In gx_alloc_char_bits() the "target" device can be NULL, in which case avoid trying to decrement the ICC profile object for the target device. patch credit to William Bader. Bug 691651. No cluster differences expected.[base/gxccman.c]
2010-10-14T15:01:56.645831Z Chris Liddell
If we're passed an unexpected object instead of a glyph name object fall back to rendering the notdef. This is not identical, but is closer to the behaviour of the AFS code under these conditions. Highlighted by Bug 691656. No cluster differences expected.[psi/zfapi.c]
2010-10-14T14:57:36.364971Z Chris Liddell
Rename libpng.mak to png.mak to make it consistent with the other third part libraries. Bug 691681 No cluster differences expected.[base/openvms.mmk base/ugcclib.mak base/libpng.mak base/Makefile.in base/unix-gcc.mak base/macos-mcp.mak base/winlib.mak base/png.mak psi/os2.mak base/openvms.mak base/macosx.mak base/configure.ac /trunk/ghostpdl/common/ugcc_top.mak psi/msvc32.mak base/unixansi.mak base/msvclib.mak base/devs.mak]
2010-10-14T14:23:22.009615Z Till Kamppeter
CUPS Raster output device: Fixed access to uninitialized variable, the margins array is only set when size_set is true (bug #691683).[cups/gdevcups.c]
2010-10-14T11:57:31.187468Z Chris Liddell
Rename libtiff.mak to tiff.mak to be more consistent with the other third party libs. Bug 691681 No cluster differences expected.[base/winlib.mak base/tiff.mak base/Makefile.in /trunk/ghostpdl/common/ugcc_top.mak base/unix-gcc.mak base/unixansi.mak base/libtiff.mak]
2010-10-13T17:14:59.959208Z Robin Watts
Fix 2 build warnings in gdevtifs.c No expected differences.[base/gdevtifs.c]
2010-10-13T16:01:51.166726Z Robin Watts
Add new tiffscaled device. This renders internally as tiffgray, but then downsamples by an integer scale factor (specified by -dDownScaleFactor=n) and error diffuses to 1bpp output. This device is also included in pcl builds (windows ones at least), enabling a solution for dropouts caused by rendering pcl at 200dpi. (Render at 600dpi and scale down by a factor of 3). This should hopefully solve bug 690085. Future work to consider: work on bringing libtiff based devices into unix PCL builds, consider stochastic thresholding rather than FS error diffusion.[base/gdevtifs.c base/openvms.mak base/gdevtifs.h base/gdevtsep.c base/configure.ac base/unix-gcc.mak doc/Devices.htm base/unixansi.mak psi/msvc32.mak base/gdevtfnx.c base/macos-mcp.mak base/devs.mak base/gdevtfax.c]
2010-10-13T10:48:04.352147Z Chris Liddell
We have far fewer font Decodings than there are "well known" Encodings, so assuming that for such an Encoding we always have a predefined Decoding is problematic. We'll now try to find a predefined Decoding, and if one isn't found we'll derive one from the Encoding (as we previously did only for non-well known Encodings). Bug 691677 No cluster differences expected.[Resource/Init/gs_fntem.ps]
2010-10-12T23:27:36.478231Z Robin Watts
Remove unused variable in siscale.c that was causing warnings. No expected differences.[base/siscale.c]
2010-10-12T16:26:32.204667Z Robin Watts
Update interpolation filter. When we are downscaling an image on either axis we now use a simpler (less computationally complex) linear interpolation filter rather than the existing mitchell filter. For downscaling the difference in quality between mitchell and simple linear interpolation is not that noticable. (But the CPU/memory usage is a quarter what it would be for proper mitchell downscaling). What is noticable is that the existing downscaling code is 'bent' to avoid having to hold more than 8 temporary scaled scanlines of the image. The effect of this is to incorrectly limit the pixels that actually go into contributing to an output pixel, producing dropouts. We update the code here to remove this limit. This means that downscales may potentially take more memory and more computation to perform, but the overall quality is better. Regression tests show both noticable and unnoticable differences in files that enable interpolation (270 or so). The noticable differences are all that the new output looks smoother, at the expense of losing some contrast and solving some 'jaggy' looking edges. Testing with my custom dropout test file shows a huge improvement with the new code. I'll add this to the test repo shortly.[base/siscale.c]
2010-10-12T05:52:16.851470Z Michael Vrhel
Fix for a large memory leak that can occur when a pattern cache entry is freed and a transparency buffer exists in the entry. A problem was that the pdf14 device, which contains pointers to the buffer, had its close device procedure set to forward due to the device being set in a disabled state during pattern_paint_finish. The close device proc for the pdf14 device contains the calls to actually free the buffers so this was not occurring (instead we were forwarding to another device). In addition, the pdf14 device itself was not being destroyed. With this commit, when the pattern entry is freed, the pdf14 device is now closed, which frees the buffers, and the pdf14 device is properly reference count decremented to result in the device itself getting freed. Regression run revealed no problems.[psi/zpcolor.c base/gxpcmap.c]
2010-10-11T07:53:26.581165Z Chris Liddell
Update Freetype to 2.4.3 Revise fapi_ft.c to take into account new font(s) being added to Freetype's "tricky" font list. "Tricky" fonts need the bytecode interpreter to produce "correct" output. But for GS, in the case of (even "tricky") fonts which produce an error in the bytecode interpreter, we want to try to produce some output, even just a notdef glyph. So in the non-hinted, and notdef fallback cases, remove the "tricky" flag from the Freetype face. No cluster differences expected.[freetype/src/pshinter/pshalgo.c psi/fapi_ft.c freetype/builds/unix/config.sub freetype/src/type42/t42parse.c freetype/builds/win32/visualce/freetype.dsp freetype/docs/reference/ft2-toc.html freetype/docs/reference/ft2-computations.html freetype/builds/unix/configure.ac freetype/builds/wince/vc2008-ce/index.html freetype/builds/unix/ftconfig.in freetype/src/sfnt/ttload.c freetype/ChangeLog.23 freetype/docs/reference/ft2-sizes_management.html freetype/src/cache/ftccache.c freetype/docs/reference/ft2-quick_advance.html freetype/include/freetype/freetype.h freetype/configure freetype/docs/reference/ft2-pfr_fonts.html freetype/docs/reference/ft2-gasp_table.html freetype/docs/reference/ft2-system_interface.html freetype/builds/unix/configure freetype/docs/reference/ft2-mac_specific.html freetype/docs/reference/ft2-basic_types.html freetype/docs/reference/ft2-lcd_filtering.html freetype/src/truetype/ttgload.c freetype/docs/reference/ft2-cid_fonts.html freetype/include/freetype/internal/ftobjs.h freetype/docs/reference/ft2-winfnt_fonts.html freetype/docs/reference/ft2-bitmap_handling.html freetype/docs/reference/ft2-cache_subsystem.html freetype/Jamfile freetype/include/freetype/ftimage.h freetype/src/base/ftobjs.c freetype/builds/win32/visualce/index.html freetype/docs/reference/ft2-glyph_variants.html freetype/docs/reference/ft2-glyph_stroker.html freetype/builds/win32/visualc/freetype.vcproj freetype/docs/reference/ft2-sfnt_names.html freetype/docs/reference/ft2-raster.html freetype/include/freetype/ftlcdfil.h freetype/builds/win32/visualce/freetype.vcproj freetype/docs/reference/ft2-bdf_fonts.html freetype/docs/reference/ft2-truetype_tables.html freetype/src/truetype/ttobjs.c freetype/builds/unix/config.guess freetype/include/freetype/config/ftconfig.h freetype/docs/reference/ft2-glyph_management.html freetype/src/autofit/aflatin.c freetype/src/raster/ftraster.c freetype/builds/win32/visualc/index.html freetype/builds/wince/vc2005-ce/index.html freetype/docs/reference/ft2-version.html freetype/docs/reference/ft2-gx_validation.html freetype/docs/reference/ft2-multiple_masters.html freetype/src/cff/cffgload.c freetype/docs/reference/ft2-base_interface.html freetype/docs/reference/ft2-header_file_macros.html freetype/builds/win32/vc2005/index.html freetype/src/cid/cidgload.c freetype/docs/reference/ft2-ot_validation.html freetype/builds/unix/unix-cc.in freetype/builds/wince/vc2005-ce/freetype.vcproj freetype/src/base/ftsynth.c freetype/src/winfonts/winfnt.c freetype/devel/ftoption.h freetype/builds/win32/vc2005/freetype.vcproj freetype/docs/reference/ft2-index.html freetype/builds/win32/vc2008/freetype.vcproj freetype/src/cache/ftcsbits.c freetype/docs/reference/ft2-outline_processing.html freetype/docs/reference/ft2-lzw.html freetype/src/truetype/ttpload.c freetype/src/smooth/ftgrays.c freetype/builds/win32/visualc/freetype.dsp freetype/src/truetype/ttinterp.c freetype/docs/reference/ft2-module_management.html freetype/src/cff/cffload.c freetype/docs/reference/ft2-user_allocation.html freetype/src/base/ftstream.c freetype/src/truetype/ttinterp.h freetype/builds/unix/configure.raw freetype/docs/reference/ft2-type1_tables.html freetype/src/sfnt/ttpost.c freetype/builds/win32/vc2008/index.html freetype/src/cff/cffobjs.c freetype/docs/reference/ft2-font_formats.html freetype/builds/wince/vc2008-ce/freetype.vcproj freetype/docs/reference/ft2-incremental.html freetype/src/smooth/ftsmooth.c freetype/ChangeLog freetype/docs/VERSION.DLL freetype/docs/reference/ft2-truetype_engine.html freetype/include/freetype/ftcache.h freetype/docs/reference/ft2-list_processing.html freetype/docs/reference/ft2-gzip.html freetype/README freetype/include/freetype/ftmodapi.h freetype/docs/CHANGES]
2010-10-10T05:51:09.780940Z regression
Various minor fixed to the local cluster code: clustermonitor.pl now deals with terminal windows being resize clustermaster.pl logs messages to clustermaster.log build.pl now adds -dcupsColorSpace=0 to command line run.pl now longer runs fuzzy after bmpcmp[toolbin/localcluster/clustermonitor.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]
2010-10-08T14:42:18.915016Z Ken Sharp
Fix (pdfwrite) : Process text in Tr 3 even if the Widths are non-standard Bug #691605 "Invisible text not preserved by pdfwrite" The problem was that if text in text rendering mode 4 (neither stroke nor fill) used a font where the entries in the FontDescriptor /Widths array did not match the actual widths in the font, the code took a path where the glyphs were not added to the 'used' list, and so were never emitted. Text in regular fonts where the /Widths array was missing, or matched the widths in the font (as the spec says they must) worked correctly. Fixed by processing text whose operation properties include TEXT_RENDER_MORE_3 the same as text with the TEXT_DO_DRAW property.[base/gdevpdte.c]
2010-10-08T13:42:41.451688Z Ken Sharp
Remove an unused variable (flagged by static analysis).[base/gdevpsdi.c]
2010-10-08T13:37:05.002251Z Ken Sharp
Prevent a possible attempt to memset a NULL pointer. This was probably safe since the size of the memset would be 0 bytes, but its best to be safe.[base/gdevpdtt.c]
2010-10-08T13:34:00.715868Z Ken Sharp
Remove an unused variable (flagged by static analysis)[base/gdevpdfi.c]
2010-10-08T13:31:11.163393Z Chris Liddell
A stringwidth operation does not always result in a call to fapi_finish_render() which can cause Freetype glyph objects to not be freed. Add a firewall so we don't simply overwrite the pointer to the Freetype glyph object, but correctly dispose of the object. Bug 691668 No cluster differences expected.[psi/fapi_ft.c]
2010-10-08T12:01:24.908534Z Ken Sharp
Fix (pdfwrite) : Check encoding compatibility when finding base fonts Bug #691656 "crash in Chinese font: /typecheck in --.FAPIBuildGlyph--" A typecheck error is not a crash of course, but when using the built in font interpreter this did not produce an error, silently discarded the text instead. This was still incorrect. The problem is caused when dealing with type 0 fonts and producing multiple type 1 fonts to handle the large number of glyphs. The code for finding an existing font (in order to minimise the number of new fonts) or create a new font, did not consider the encoding of an existing font when trying to match it (this did work for regular fonts). This could lead to a font with an incompatible encoding being used, which caused an error later in text processing where a routine is supposed to be guaranteed no font encoding problems. That led to an attempted fallback to the 'bitmapped type 3 font' solution, but the text processing was passing ridiculous values to the font interpreter. In the old font code this caused a silent discard of the text, with the FreeType code it produces an error. Fixed by checking the base font we find to see if its encoding is compatible with the current text encoding, and manufacturing a new font if it is not. No differences expected.[base/gdevpdtt.c]
2010-10-08T05:09:27.837431Z Ray Johnston
Fix for miscalculation of clist_color_info.depth when tags are part of the PDF14 device color. While 8 * num_components is usually enough, when we have tags, we need the extra byte. Seen with fts_16_1601.pdf in clist mode on HEAD and with customer 532 code when PDF14_transparency + tags is included.[base/gdevp14.c]
2010-10-07T13:59:49.890609Z Ken Sharp
Put back some statements. It turns out that we can either have gcc be warning free or the static analysis warning free. The problem is gs_note_error which uses gs_log_error, on a release build gs_log_error is defined as the error value. If we don't do something with that value then gcc complains that the 'statement has no effect'. So the code was set like this: ecode = gs_note_error(error code); But if we want to actually ignore the error and just note the problem, then we don't use ecode and the static analysis complains that the variable is unused.... I'd rather have no warnings from gcc so I've restored that.[base/gdevpdfj.c base/gdevpdfp.c base/gdevpdfu.c]
2010-10-07T12:49:54.318945Z Ken Sharp
More changes to silence static analysis warnings. Mostly removing unused variables or assignments.[base/gdevpdfj.c base/gdevpdfm.c base/gdevpdfp.c base/gdevpdtb.c base/gdevpdtc.c base/gdevpdtd.c base/gdevpdtt.c base/gdevpdtf.c base/gdevpdfu.c base/gdevpdti.c base/gdevpdfi.c]
2010-10-07T08:35:58.544234Z Ken Sharp
Silence (hopefully) some compiler warnings.[base/gdevpdf.c]
2010-10-07T08:04:15.270260Z Ken Sharp
Remove some unused variables and assignments flagged by static analysis.[base/gdevpdfg.c]
2010-10-07T07:57:43.664608Z Ken Sharp
Fix a potential NULL pointer dereference flagged by static analysis. Other potential occurrences flagged by the analyser in this module are deemed not to be possible, as these are picked up at a higher level. For instance, dereferencing a pointer to a path structure in a path handling method. We can assume the path pointer is not NULL as we would not be called if the path was empty.[base/gdevpdfd.c]
2010-10-07T07:50:09.274081Z Ken Sharp
Static analysis discovered two variables being altered that are not subsequently used. Although this is safe, removed the code anyway.[base/gdevpdfb.c]
2010-10-07T07:49:13.279339Z Ken Sharp
static analysis found that the result of fread was not being used. Add code to test the result and flag a warning if expected data not read.[base/gdevpdf.c]
2010-10-06T14:03:32.653153Z Robin Watts
Fix for part 2 of Bug 691484, valgrind warnings about uninitialised values in clist code. The problem is that we are writing out a cmd_block without initialising it all. The fix is simply to initialise it (using a memset, so accounting for all padding bytes too) before starting to use it. This stops the valgrind warnings. No changes in localcluster testing.[base/gxclist.c]
2010-10-06T13:48:15.425458Z Ken Sharp
Add some body parentheses to 'if' statements in order to silence some clang warnings.[base/gdevpdfp.c base/gdevpdtf.c]
2010-10-06T12:06:46.017717Z Robin Watts
Whitespace tweaks to gxiscale.c. The complexity in the file is more than enough for my tiny brain without expecting it to cope with inconsistent indentation too :)[base/gxiscale.c]
2010-10-05T21:38:11.272406Z Robin Watts
Fix for part 1 of bug 691484 - uninitialised memory usage in clist code. The FAPI code copies bitmaps and pads them out so that each raster line is appropriately aligned. Previously the padding bytes were left uninitialised. Unfortunately the clist code reads the padding when compressing the bitmaps, which a) upsets valgrind and b) means that the exact size of the clist will vary from run to run. Here we tweak the copying code to ensure that the padding bytes are always set to zero. No differences shown in local cluster. This solves part 1 of the bug.[psi/zfapi.c]
2010-10-05T20:27:54.714250Z Michael Vrhel
Clean up of a few comments about device profiles[base/gsicc_manage.c]
2010-10-05T20:18:10.046358Z Michael Vrhel
Fix for error in detecting the presence of a device profile set in the command line. Unfortunately, the device was not being reset from the default profile based upon the setting.[base/gsicc_manage.c]
2010-10-05T13:57:22.688207Z Alex Cherepanov
Add missing decoding of #nn escape to encrypted PDF reader. Besides fixing the bug sample file, this patch also corrects a colorant name in IA3Z0440.pdf on psdcmyk device. Bug 691636.[Resource/Init/pdf_sec.ps]
2010-10-05T12:48:16.473671Z Ken Sharp
Fix (pdfwrite) : ConvertCMYKImagesToRGB not working Bug #691647 "-dConvertCMYKImagesToRGB no longer works" Originally caused by the conversion to the ICC workflow, which meant that all images appear to be in a ICC space, and only images originally natively CMYK are converted. Probing the ICC space using the provided utility to return the original colour space allows the code to work, but reveals a more serious error. The code in psdf_setup_image_filteres() alters the image colour space and decrements the reference count of the original colour space. This seems logically correct, and in one of the three calling paths it is correct, but under one of the other two conditions it causes a crash. The routine pdf_begin_typed_image_impl() makes two copies of the original image parameters, and when it does so it does *not* increment the reference counts of any counted objects. This copied data is presented to the image filter setup several times, and if CMUK to RGB conversion is going on the original colour space is decremented each time. This leads to obvious problems. The simplest solution would be to increment the reference counts when the copy is made, but that would mean checking all the error condition break outs, and decrementing the reference count in each case. Since the colour space is only decremented in the filter setup, this patch increments the count before the call, and if the colour space is the same afterwards (whether an error occurred or not) decrements it back again. If the colour space changes we do not decrement the space of course, as the filter setup routine has done that. In addition, extended the test for whether CMYK images should be converted to include the original test of the native space, in case we get here after an image has been converted to a base space and no longer has an ICC space. No expected differences, this configuration is not tested by the regression suite.[base/gdevpsdi.c base/gdevpdfi.c]
2010-10-05T12:10:46.672154Z Robin Watts
Fix for part 1 of Bug 691635, supplied by Norbert Janssen. Many thanks. In the recent work to remove global variables where possible, I had failed to change an instance of iodev_default to be iodev_default(mem). No expected changes.[base/gsiodisk.c]
2010-10-03T16:13:00.326561Z Alex Cherepanov
Change the order of operands in a logical expression to avoid dereferencing an uninitialized variable. Bug 690214.[psi/zfont2.c]
2010-10-01T19:36:06.952768Z Ray Johnston
Drop support for these less popular compilers. This will be the first step to changing to project files for Windows.[base/wctail.mak base/watclib.mak base/bcwin32.mak base/gp_iwatc.c base/watcw32.mak base/wccommon.mak]
2010-10-01T02:58:15.408387Z Alex Cherepanov
Replace sequential CFF parser coded in PostScript with a parser that uses direct access to the data and coded in C. Solve numerous problems caused by the old parser. New -dOLDCFF option can revert to the old parser. Differences in 16-01.PS.pdf and 16-01.PS.pdf are progressions.[doc/Use.htm psi/int.mak psi/zfont1.c psi/zfont2.c Resource/Init/gs_cff.ps]
2010-09-29T15:50:22.840688Z Ray Johnston
Fix calculation of offset to tag plane in pdf14_mark_fill_rectangle to cure writing past the end of an allocated buffer. Detected with customer 532 on fts_08_0808.pdf. Only affects devices with object tagging (bitrgbtags).[base/gdevp14.c]
2010-09-28T12:36:41.051799Z Ken Sharp
Fix (pdfwrite) : Don't unreasonably limit the PDF output level Bug #691318 " -dCompatibilityLevel=1.6 produces PDF 1.5" Although the highest output level for pdfwrite features is 1.5, it is possible to use pdfmarks to create a PDF file which uses higher level features. In this case its reasonable to have pdfwrite produce a higher level PDF file. This patch allows pdfwrite to produce output up to PDF 1.7, the highest currently specified. No differences expected.[base/gdevpdfp.c]
2010-09-28T12:26:13.182021Z Ken Sharp
Fix (pdfwrite) : allow for UserPasword and OwnerPassword in page device Bug #691256 "OwnerPassword and UserPassword don't work as device parameters" pdfwrite sets up encryption filters when the device is opened, and the device is not (currently) closed until Ghostscript shuts down. This means that changes to the page device dictionary which require a restart (eg the encryption parameters) do not affect the current setup, though they may be (incorrectly) written when the device is closed. This patch addresses the specific issue of OwnerPassword by closing the device if the password is changed *and* we have not yet written any pages. If we have already begun the output when a password change occurs then we ignore it and flag a warning. This is also a first step in the direction of making pdfwrite open and close properly so that we don't need to restart Ghostscript to use it. No expected differences.[base/gdevpdfp.c]
2010-09-27T12:05:17.449032Z Ken Sharp
Fix (Fonts): Prevent xfont being used in composefont On platforms supporting X-Windows xfonts can be used with Ghostscript, however we don't want to find an xfont (eg Courier) when using composefont to create a CID-Keyed instance as this will not work. Test to see if the top level font is a type 0, and if it is, don't search for a matching xfont, but instead go through the usual PostScript machinery. No differences expected.[base/gxchar.c]
2010-09-27T09:33:55.410495Z Ken Sharp
Fix (pdfwrite/ps2write) : Don't dereference mask colour spaces Bug #691106 "-sDEVICE=pdfwrite -dConvertCMYKImagesToRGB=true" When checking to see if an image needs to be converted to RGB, the image space is checked to see if it is CMYK. However an image mask does not have a colour space (it is NULL), firstly so that we can tell its an image mask, and secondly because masks genuinely do not have a colour space, they take on the current colour. Attempting to dereference the NULL colour space causes a crash. Since a mask never needs converting to RGB, we short circuit the test by detecting a NULL colour space.[base/gdevpsdi.c]
2010-09-25T02:08:22.451780Z Alex Cherepanov
For long time ps2pdf*.bat files failed when they were used with some options and a single argument. findstr is now used to identify options by the leading '-' and handle this case. Bug 691622.[lib/ps2pdf.bat lib/ps2pdf12.bat lib/ps2pdf13.bat lib/ps2pdf14.bat]
2010-09-24T13:25:07.243032Z Chris Liddell
For disk based TTFs, only lookup the character code in the TTF cmap if the font is not using an Identity ordering. No cluster differences expected. Bug 691623.[psi/zfapi.c]
2010-09-24T09:03:34.206583Z Ken Sharp
Fix (TrueType fonts) : memory leak Bug #691088 This does not affect the PostScript/PDF interpreters which now use FreeType but is relevant still for XPS and PCL. A buffer was allocated to contain the GSUB table from the TT font, but was never freed leading to memory leaks. I've adopted the same approach as that taken for the 'glyph length' array and added a notification procedure which is called when the font is released, and that procedure frees the GSUB buffer. At the same time, removed the functions: add_quadratic_curve append_simple check_component These were only called by each other, or by append_component which had already been removed as unused. No expected differences.[base/gstype42.c]
2010-09-24T03:27:45.689228Z Michael Vrhel
Removal of debug code that was accidentally committed.[base/gdevp14.c]
2010-09-23T19:45:27.249371Z Michael Vrhel
Fix so that objects tag information makes it through transparency rendering AND the clist. An issue was that the pdf14 encode and decode procedures are used as opposed to the target device encode and decode procedures and it is through a value in the color index that we currently communicate the object type through the clist. When we are in page rendering mode, it is easy to get the current object from mem->gs_lib_ctx->BITTAG, but this is not set correctly in clist rendering if for example a glyph is stored in the clist as a mask fill. Instead the information about the object is extracted from the color index. So, to make this work, we had to introduce an encode method for the pdf14 device that incorporates the tag information and also make sure that the bit depth for the pdf14 color info value is incremented appropriately so that the extra byte is stored and extracted from the clist. The object type is then recovered during the pdf14 mark fill rect procedure. This was tested with the updated bitrgbtags device using a custom file that has overlapping text, image and path objects with varying transparency amounts.[base/gdevp14.c base/gsimage.c base/gsutil.h base/gstext.c base/gsdps1.c base/gdevbit.c base/gdevmem.c base/gxblend1.c base/gspaint.c base/gdevddrw.c base/gsutil.c base/gxclrast.c base/gxblend.h]
2010-09-23T14:46:50.766627Z Robin Watts
Final part of the fix for bug 691612. Currently the code blindly sets the "lop_pdf14" whenever the pdf14 device is in use. This forces the 'lop_is_idempotent' test to fail, which in turn forces slower cases to be taken through the code. This patch alters that logic, so that the pdf14 device can leave that bit unset if the parameters are set up in such a way that the lop really can be idempotent (i.e. normal blending, solid alphas etc). This vastly improves the speed of rendering non-alpha content, so we are no longer penalised for having just a small amount of transparent content on a page. Testing shows 398 files that change, but bmpcmp reveals these all to be very small changes to do with whether individual pixels are filled or not. This is consistent with the typical mismatches between special case and normal renderings, so can safely be ignored for now.[base/gdevp14.c]
2010-09-23T12:17:57.296649Z Robin Watts
As part of the investigation into bug 691612, we noticed that the clist band playback code doesn't call the device stroke_path method, but instead calls the default implementation directly. In order the fix the bug, we'd like it to call through the device version (pdf14_stroke_path). Consensus is that it's an oversight that it's not calling the device version already, and tests indicate no differences (*) so this patch changes it to call via the vector. (* Actually regression testing shows 2 pdfwrite differences, but they are in unbanded tests, so can't be executing this code, so are probably just indeterminisms).[base/gxclrast.c]
2010-09-23T10:46:33.821569Z Robin Watts
As part of the investigation into bug 691612, a problem was found with the rop3_is_idempotent (and hence lop_is_idempotent) macros. This patch fixes this definition and adds some more comments explaining the rop operations. Thanks to lpd for confirming this change. This produces 78 differences in the regression tests, bmpcmp reveals these to all be neutral or progressions (in some cases, significant progressions).[base/gsropt.h]
2010-09-23T08:16:36.207911Z Ken Sharp
Fix (pdfwrite) : Do not write Encodings with Symbolic TrueType fonts Bug #690744, #691036, #691319. The PDF specification makes it clear that Symbolic TrueType fonts should not have a FontDescriptor which contains an Encoding entry. pdfwrite has specifically been doing this, the reason being (code comments) : * We write True Types with Symbolic flag set. * PDF spec says that "symbolic font should not specify Encoding entry" * (see section 5.5, the article "Encodings for True Type fonts", paragraph 3). * However Acrobat Reader 4,5,6 fail when TT font with no Encoding * appears in a document together with a CID font with a non-standard CMap * (AR 4 and 5 claim "The encoding (CMap) specified by a font is corrupted." * (we read it as "The encoding or CMap specified by a font is corrupted.", * and apply the 1st alternative)). We believe that AR is buggy, * and therefore we write an Encoding with non-CID True Type fonts. * Hopely other viewers can ignore Encoding in such case. Actually in this case * an Encoding doesn't add an useful information. Since this is working around a bug in old versions of Acrobat, and the presence of an Encoding causes preflight errors and is specifically forbidden in PDF/A, this work around has been removed. I would like to check recent versions of Acrobat to see if this issue persists, but am unable to find an example file. The change predates the adoption of Subversion, the first logged change is October 2003.[base/gdevpdtt.c]
2010-09-22T15:13:20.906048Z Marcos H. Woehrmann
Removed unused label from base/gxicolor.c that caused compiler warning. Fixes Bug #691633 reported by Norbert Janssen.[base/gxicolor.c]
2010-09-21T12:03:52.655546Z Chris Liddell
Add the new entries for produce outlines and maximum bitmap size to the FAPI server declarations in the UFST and Bitstream code. No cluster differences expected. Bug 691634[psi/fapiufst.c psi/fapibstm.c]
2010-09-20T01:26:14.070109Z Alex Cherepanov
Fix end-of-file detection in reusable streams. Don't try to read non-existing blocks after the last one. Just return EOF flag and the data that are already in the buffer. Bug 691625.[psi/zfrsd.c]
2010-09-17T10:29:36.728794Z Robin Watts
In revision 11723 I'd copied a prototype, but forgotten to edit the name. (bytes_copy_rectangle to bytes_copy_rectangle_zero_padding). This was resulting in a couple of warnings about 'no previous prototype'. No expected differences.[base/gsbitops.h]
2010-09-17T06:44:27.206613Z Michael Vrhel
Removal of unused variable introduced in last commit.[base/gdevp14.c]
2010-09-17T05:40:48.428712Z Michael Vrhel
Addition of support to enable persistence of objects tag information through transparency rendering. In the current code base, transparency blending erases all knowledge about the objects that were drawn and blended, setting the entire object to image type. With this commit, the tag information is retained through blending by doing a bit-wise or of the tag values. When a device supports tags, the pdf14 device will create an additional plane to maintain the tag data information. Blending of the tag information occurs in pdf14_mark_fill_rectangle, pdf14_mark_fill_rectangle_ko_simple and pdf14_compose_group. A new device procedure called put_image is added. This is called by the pdf14_put_image operation, which enables the communication of the tag information to the target device. pdf14_put_image will first attempt to pass the alpha channel and the image data not scaled by the alpha channel and the tag data to the target device. The planar offset location of the alpha and tag data is communicated in the put_image procedure interface. If the target device cannot handle this form of the data, it should return 0. The pdf14_put_image operation will then blend the alpha data and attempt the put_image again but this time with an alpha offset of 0 to indicate that there is no alpha data. Note that the alpha data remains valid for those devices that still want the alpha but also want to have the graphics library do a premultiplcation of the alpha with the data. Details of this interface will be added to the documentation. In addition, the bitrgbtags device is being updated to demonstrate the use of the put_image procedure.[base/gdevp14.c base/gxdevcli.h base/gxclist.c base/gdevp14.h base/gdevbbox.c cups/gdevcups.c base/gsovrc.c base/gxblend.c base/gxblend1.c base/gdevprn.c base/gsutil.c base/gxblend.h]
2010-09-16T14:57:06.777148Z Alex Cherepanov
Fix a problem introduced by the rev. 11497 that broke ps2pdf*.bat scripts when they receive optional arguments. The bug results from interaction between "shift" and %~dp0 that is used after the "shift".[lib/ps2pdf.bat lib/ps2pdf12.bat lib/ps2pdf13.bat lib/ps2pdf14.bat]
2010-09-16T11:09:31.082242Z Robin Watts
Another partial fix for Bug 690993. The sole remaining Valgrind warning is that memcpy is called on overlapping src/dst blocks in cmd_read_data. Investigation supports this, and suggests that we should be using memmove instead. This does stop the error, and leaves us valgrind warning free. This also appears to resolve the indeterminism, in that repeated runs of the command line given in the bug return identical results. The bug remains open though, as there is still a mismatch between banded and non-banded mode. No expected differences.[base/gxclrast.c]
2010-09-16T11:05:47.689000Z Robin Watts
Partial 'fix' for Bug 690993. When encoding a bitmap into a clist, we copy it into a block with potentially larger padding requirements. These extra padding bytes were left undefined, causing subsequent attempts to compress the bitmap to cause valgrind to give warnings. The fix is simply to introduce and use a new function that copies a bitmap and zeros the padding. This should eliminate the warnings, produce better compression, and (more importantly) mean that every run uses the same amount of memory, hence eliminating potential odd effects where clists may be of different lengths on different runs. This still leaves bug 690993 open. No expected differences.[base/gsbitops.c base/gsbitops.h base/gxclbits.c]
2010-09-15T08:15:52.075230Z Ken Sharp
Fix (ps2write) : Bug #689419 "Text missing if nested BT with opdfread.ps" Type 3 fonts which select another font and then draw text from it (a common feature of Quark Xpress) can result in nested 'BT' operators when processed by ps2write. The opdfread prologue does not cater for this, specifically the TextMatrix is not saved and restored around a BT/ET pair. If the text matrix is altered by the font selection, then the 'ET' will not restore the old matrix leading to incorrectly sized or disappearing text. The patch (supplied by SaGS) saves the TextMatrix in a stack (stored in an array) and restores the matrix after an ET, in case it is nested. Currently this allows for nesting up to 20 deep, which should be more than adequate. Note that if we were to encounter a nested BT with no ET this would still fail, but in this case the file produced by ps2write would be invalid, and the missing ET should be fixed. No differences expected, the regression suite doesn't test ps2write.[Resource/Init/opdfread.ps]
2010-09-14T12:58:09.089527Z Ken Sharp
Fix (pdfwrite) : Don't colour convert SMask images Bug #690612 "PDF sRGB conversion loses images" The handling of SMask images in pdfwrite is a bit convoluted. These are handled by converting initially to a DevicePixel colour space, then detecting that later and replacing with a DeviceGray space. However, after doing so, if ColorConversionStrategy was set, the space (and image samples) would be converted to another colour space. This is not legal for SMask images. This code simply checks to see if the image is an SMask before setting colour conversion and doesn't convert the colour space/samples if it is and SMask. No expected differences.[base/gdevpdfi.c]
2010-09-14T09:07:06.998296Z Ken Sharp
Fix a compiler warning.[base/gdevpdfo.c]
2010-09-14T08:06:03.949247Z Ken Sharp
pdfwrite enhancement : performance improvement with type 3 fonts Bug #690575 "PS to PDF Conversion extremely slow (possibly endless)" The type 3 font code assembles CharProcs for type 3 fonts by writing them individually into a 'cos_stream'. Each time a new one is completed it is compared to all the existing CharProcs to see if it is a duplicate. This was done by fseek/fread/memcmp operations. As the number of CharProcs increases, the time spent seeking, reading and comparing the data increases dramatically and performance becomes very poor. Not only that, but the test is actually done twice for each new CharProc. This patch tackles the problem by creating an md5 hash of the data written to a cos_write_stream (a subclassed cos_stream) as it is written. The cos_stream 'equal' routine checks to see if the md5 hash is valid and if it is then compares the hashes. If the md5 hash is not valid (ie not a cos_write_stream) then it uses the old seek/read/compare mechanism. This will improve the performance of any stored data if it is stored using a cos_write_stream and compared against other data of the same type. (I don't believe we do this anywhere else currently, but I'm not suer) This does improve the performance significantly, and the code no longer spends most of its time waiting for I/O operations to complete. It is still slow, but this is the result of using lots of type 3 fonts. Because of the way these must be processed in order to capture the outlines they are never going to be fast. In my test this runs 2-3 times faster than before. There should be no differences in output from the old code.[base/gdevpdfo.c base/gdevpdfo.h]
2010-09-14T07:49:11.816447Z Chris Liddell
Bump version number to 9.01 and associated changes.[base/gscdef.c base/version.mak Resource/Init/gs_init.ps]