RSS/Atom feed Twitter
Site is read-only, email is disabled

ANNOUNCE: Gimp-Print 5.0.0-alpha1

This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.

This is a read-only list on gimpusers.com so this discussion thread is read-only, too.

1 of 1 message available
Toggle history

Please log in to manage your subscriptions.

ANNOUNCE: Gimp-Print 5.0.0-alpha1 Robert L Krawitz 11 Jan 23:49
Robert L Krawitz
2004-01-11 23:49:18 UTC (over 20 years ago)

ANNOUNCE: Gimp-Print 5.0.0-alpha1

Welcome to Gimp-Print 5.0 Alpha! Please read these release notes carefully.

Gimp-Print 5.0.0-alpha1 is the first alpha release (technology preview) in the line that will eventually lead to Gimp-Print 5.0. It is based on the 4.3 series that has been in development for two years, and includes many improvements over the very popular 4.2 series. This release is not considered to be a fully stable release (there are still various things in flux, and it has not undergone the extensive testing that is required to declare a release stable), but we've been using it and we believe that it will be useful for many purposes.

Gimp-Print is a suite of printer drivers that may be used with most common UNIX print spooling systems, including CUPS, lpr, LPRng, or others. These drivers provide high quality printing for UNIX (including Macintosh OS X 10.2 and 10.3) and Linux systems that in many cases equal or exceed proprietary vendor-supplied drivers in quality and functionality, and can be used for demanding printing tasks requiring flexibility and high quality. This software package includes the Print plug-in for the GIMP and Ghostscript and CUPS drivers, as well as Foomatic data.

The Print plug-in for the GIMP requires the GIMP 1.2 (more recent versions of the GIMP, such as 1.3, are not supported at present). You may need to install packages named "gimp-devel", "gtk-devel", and "glib-devel" (or similar equivalents) on many systems. This plug-in will work with any printing system, and offers a comprehensive user interface to control all aspects of the printing process.

The CUPS driver requires CUPS 1.1.15 or higher. You may need to install a package named "cups-devel" or similar on many systems. Please the rest of the release notes for full details on installation, as there is an important caveat. CUPS is the printing system used on Macintosh OS X 10.2 and above, and many other systems use it. The combination of CUPS and Gimp-Print provides a flexible, general purpose printing system capable of producing the highest quality output with any of the printers supported by this package. We strongly recommend using CUPS with Gimp-Print as a general-purpose printing solution.

The Ghostscript driver requires GNU Ghostscript 6.53 or higher, ESP Ghostscript 7.05 or higher, or AFPL Ghostscript 7.04 or higher. It uses the IJS package included with these versions of Ghostscript to create a driver that may be built much more easily than traditional Ghostscript drivers. The options for this driver are very complex, and it is normally used with the Foomatic driver integration system. At the present time, the Foomatic data generation for Gimp-Print is incomplete, and we do not recommend using it with Gimp-Print 5.0 alpha as most of the new options will not be available. This will be remedied prior to release of the final 5.0.

Users of Macintosh OS X 10.2 (Jaguar) and 10.3 (Panther) can use this package, as the printing system is based on CUPS. For ease of installation, a pre-built package with installer is normally supplied a few days after the release of the source package. We highly recommend that OS X users use the pre-built package rather than attempt to build it themselves.

NOTE: This package will not work with any version of OS X 10.0 and 10.1 (such as 10.1.5), as those systems do not use CUPS as their printing system. This is NOT going to change; you must upgrade to at least OS X 10.2 in order to use this package. The reason why is that OS X 10.2 and above use CUPS as the basis of the printing system. OS X 10.0 and 10.1 use a different system that would require a separate driver, and we do not plan to write that driver.

The README file included with this package provides full instructions on building and installing Gimp-Print.

While Gimp-Print 5.0 is not finalized, it contains many improvements and changes from 4.2, as follows:

* General User-Visible Changes:

1) In general, Gimp-Print 5.0 is not compatible with Gimp-Print 4.2. Gimp-Print 5.0 offers many new options (which are described separately below), and many options that are present in both 4.2 and 5.0 function differently in the two releases. In addition, the API is different. Finally, the color correction is quite different, and profiles created against the 4.2 driver will not function well against the 5.0 driver.

2) In addition to all of the printers supported in 4.2, a variety of Olympus and Sony photo printers are supported in this release.

3) Options in the CUPS driver and GIMP plugin are now grouped according to function. This work is still in progress, and further usability improvements are expected.

4) Simplified bundles of settings are now offered for users who do not need to customize the settings. The Print Quality and Image Type controls offer a variety of settings optimized for common printing tasks. Both controls offer Manual Control settings for users who wish greater control over the output.

5) Many of the color settings have changed effect. We recommend starting with no color correction and making appropriate changes only as required. Specific changes that you should be aware of include:

* The default operation of the contrast setting has changed to be more in accord with standard practice. In 4.2, reducing the contrast resulted in changing the black and white setting. In 5.0, reducing the contrast does not change the black and white settings. As a result, it is possible to use the contrast setting to improve highlight and shadow detail by reducing the contrast.

The old behavior is available by turning on the "Linear Contrast Adjustment".

* The Cyan, Magenta, and Yellow settings have been replaced with separate settings for gamma and density for Cyan, Magenta, Yellow, and Black. The Cyan, Magenta, and Yellow settings in Gimp-Print 4.2 most closely correspond to the gamma settings in 5.0.

The per-channel density settings do not affect the color correction. They are applied after the color correction to scale the individual channels.

* Quality Improvements:

1) Color and tonal accuracy is greatly improved compared to 4.2 while the gamut (range of printable colors) has been increased. This particularly improves the hue accuracy of red, magenta, and blue, and the tonal accuracy of cyan and green. Most Epson printers have been fully tuned for the new color correction algorithms introduced for this release.

2) The handling of variable drop sizes and photo inks (6 and 7 color printers) has been completely rewritten, with the result being that variable drop size printers with photo inks (such as most Epson Stylus Photo and Stylus Pro printers) give much more consistent results with fewer artifacts. In particular, colors match correctly across all resolutions, which was not the case in 4.2.

In 4.2, variable size drops and light inks were treated the same way; an "effective drop size" based on the relative size of the drops and the darkness of the inks was used to decide what kind of drop to print. While this method has some advantages (it ensures that dark and light inks are never printed at the same place, and also that dark dots are optimally dispersed among light dots), it has some serious disadvantages as well: the properties of a small dark dot and a large light dot are not really the same, particularly when inks are mixed. The combination of different drop sizes being used at different resolutions meant that the transition between light and dark inks differed depending upon the resolution chosen, and if more than one drop size was required at a given resolution, the transition tended to be quite marked.

The new method of handling variable size drops and light inks is to first separate each of the four channels (cyan, magenta, yellow, and black) into the appropriate light and dark inks, if needed. This separation is performed based on the relative darkness of the different ink sub-colors (such as light and dark cyan) and specific characteristics of the printer, ink type, and paper chosen. Following this, each sub-color is screened separately, and the appropriate combination of drop sizes is chosen.

The drop size selection in this release has also been changed to fill the page with as many small drops as possible before switching to larger drops. This ensures that the largest number of the smallest possible drops is printed, which yields a smoother texture in the midtones.

Finally, new dither algorithms described below allow drops of ink of different colors to be dispersed, avoiding clumping or overprinting of drops.

3) The EvenTone dither algorithm has been extensively reworked in this release, offering many improvements.

First, it has been rewritten to work correctly with variable drop size and photo printers. This algorithm, which offers significant improvements over the standard Adaptive Hybrid algorithm, does not work optimally with variable drop sizes or photo printers in 4.2.

Secondly, several variations on this algorithm have been introduced, yielding a family of high quality screening algorithms for different applications. The first variation is called Hybrid EvenTone. This dither algorithm perturbs the dot positions slightly to break up some patterning seen in standard EvenTone dithering in solid regions of pale tones, particularly when printing with black ink only. This very slightly reduces the smoothness of texture in exchange for largely eliminating this undesirable patterning. This algorithm is also expected to be more resistant to microbanding effects.

The second variation is called UniTone. This dither algorithm calculates the placement of all dots (except for yellow) using a single EvenTone pass, not just all of the dots of one color. This technique improves the quality when multiple inks must be mixed, such as when color inks are used to produce gray. It does so by ensuring that all dots are equally spaced. Typically when printing neutral tones with EvenTone dithering the cyan, magenta, and yellow dots are positioned very close to each other, even though the individual cyan dots are well-positioned. This causes the groups of dots to appear to be single, large dots. UniTone dithering evens out the spacing between all dots, producing a smoother texture. UniTone dithering only functions when printing in color (or grayscale with multi-tone gray ink); when printing with black ink only, it is exactly equivalent to EvenTone dithering. UniTone dithering is generally slower than EvenTone.

UniTone dithering works best at improving output when the drops are already very small, which is usually at high resolutions. With these small drops, the eye has difficulty distinguishing the color of the individual drops, so their color tends to be distinguished primarily by their darkness. While cyan ink is lighter than black ink and magenta ink is lighter than cyan ink, these differences are not overwhelming and hence the eye does not perceive a difference between them. With large drops, the eye perceives the color of the individual drops, and small spots dominated by one ink become apparent.

As noted above, UniTone dithers yellow separately. This is because the yellow ink is much lighter than any other ink, and the positions occupied by yellow drops appear as holes, reducing the quality of the print. Even light cyan and light magenta inks appear to be significantly darker than yellow.

Experiments conducted to date suggest that UniTone works very well on the printers such as the Epson Stylus C80 at high resolutions, when the printer is using 3 picolitre drops. On the Stylus Photo EX, at 1440x720 DPI, using 8 picolitre drops, quality is improved significantly when printing in normal 6-color mode but quality is slightly worse in 4-color mode, as the colors of the drops are apparent. At 720 DPI (using 12 picolitre drops), quality is improved in 6-color mode but degraded significantly in 4-color mode.

Finally, a Hybrid UniTone dither algorithm is provided, combining the principles of both of the above.

As noted above, UniTone dithering does not always work better than EvenTone, although in most cases all of these algorithms work much better than Adaptive Hybrid in 4.2. We suggest that users requiring the highest quality experiment, using Hybrid EvenTone as a baseline.

4) The conversion between black and composite (CMY) gray has been improved in this release, yielding more neutral grays on most printers.

5) Epson printers have been completely retuned, in most cases yielding much better density, more accurate gray scale, and higher Dmax on all paper types.

* New Functionality:

1) This release offers a new curve data type.

2) This release offers many new output controls:

+ Balance (density) controls for each channel, in addition to the gamma controls present in 4.2.

+ Black (GCR) transition, including the transition gamma and the upper and lower limits.

+ Transitions for photo (light cyan and light magenta) inks.

+ Transfer curves for each channel (cyan, magenta, yellow, black, and composite), allowing very precise control over the output.

+ Hue, saturation, and luminosity transfer curves.

+ Ink limit control.

+ The density control now permits setting density as high as 8.0, vs. 2.0 in 4.2.

3) The Epson driver offers (almost) true full bleed for printers that support it (but see the limitations below).

4) The resolution list for Epson printers has been simplified; many redundant resolutions have been removed.

5) Print head directional for Epson printers (unidirectional vs. bidirectional) is now a separate control. In addition to contributing to the simplification of the Epson printer resolutions, this permits the choice of unidirectional vs. bidirectional at all resolutions.

6) The Epson driver now offers a choice of print head weave patterns. In addition to simplifying the resolution choices for Epson Stylus Pro printers, this offers an additional control for fine tuning output quality.

7) The Epson driver offers an Ink Set control for printers taking different choices of inks (such as the Epson Stylus Photo 2200, which offers a choice of Matte Black and Photo Black inks).

8) The Epson driver permits adjusting the dot size if required to increase the amount of ink printed. For example, if 1440x720 DPI is selected, but the density requested is very high, the printer will switch to using drop sizes appropriate for 720 DPI. This option is disabled by default.

9) Where practical, all controls offer a default setting for simplicity of operation. This default value is intended to offer the optimal choice given the printer and its other settings. For example, if "Automatic" is selected for print head direction, the print head motion will be unidirectional at high resolutions (since unidirectional usually produces better output), but bidirectional at low resolutions (for faster printing).

The default is only offered for options that are not directly controlled by the user's action. For example, there is no default choice offered for paper type, since the correct value is based on the paper type loaded by the user. Similarly, there is no default for the input slot or ink set.

10) A new Threshold color correction mode has been added, that produces either all-on or all-off of each color. This is similar to the Monochrome mode in 4.2, except that it works for color as well as black.

* Changes to the Print plugin for the GIMP:

1) The plugin now always displays the page preview with the top of the page at the top of the preview pane, rotating the image preview as necessary to display landscape or portrait mode.

2) The positioning controls have been simplified.

3) The printrc file format is different. Gimp-Print 5.0 can read printrc files created by Gimp-Print 4.2 and earlier, but it writes out the printrc file in a format that earlier versions of Gimp-Print cannot read.

* Changes to the CUPS driver:

1) The CUPS PPD files now offer both fine and coarse adjustments for all color controls, permitting much finer control over output (in steps of .005 rather than .05).

2) The CUPS driver refuses to function with PPD files created for a different version of Gimp-Print, providing an error message indicating the problem. This avoids problems caused by mismatches between the PPD files and the driver. While mismatches are potentially not harmful in all cases, they could cause problems ranging from failures to print with poor diagnostic messages to incorrect results.

3) The Gimp-Print 5.0 CUPS driver can be installed concurrently with the 4.2 driver. Both the PPD files and the driver carry different names from their 4.2 counterparts, permitting a gradual switchover between 4.2 and 5.0-based releases.

4) An update script (cups-genppdupdate.5.0) is provided to update PPD files between recent 4.3 and 5.0-based releases, preserving option values where possible. This script will not update PPD files based on Gimp-Print 4.2, or Gimp-Print 4.3 releases prior to 4.3.21.

5) Due to the implementation of CUPS, it is necessary on some systems to link the programs associated with the CUPS driver (in particular, cups-genppd and rastertogimpprint) statically against the Gimp-Print library. Please see bugs 865253 and 865265 for full details.

This fix works correctly unless --disable-static (to disable building static libraries) is passed on the command line. Normally, only people packaging up Gimp-Print for distribution use this option. If you wish to use this option, please read the Exceptions and Workarounds *carefully* for a full description of the problem along with suggested methods of procedure.

6) With certain versions of CUPS and in certain non-default configurations, if a new version of Gimp-Print is installed over an existing version genppd will create PPD files based on the older version of Gimp-Print rather than the newer version. This will happen if all of the following are true:

1) The cups-config provided by the CUPS driver adds -Wl,rpath=/usr/lib. This is done by some versions of CUPS reportedly because in some cases the runtime linker does not pick up libraries out of /usr/lib. This can be checked by running

cups-config --libs --ldflags

and inspecting the output for any mention of "rpath", "RPATH", "RUN_PATH", or the like. This is controlled by the CUPS installation on your system.

2) There is presently a version of Gimp-Print installed in /usr (--prefix=/usr) rather than /usr/local or the like. The default location of Gimp-Print installation is in /usr/local, but system vendors typically install Gimp-Print in /usr.

3) Gimp-Print is built dynamically only (--disable-static). This is not a default, and requires the explicit --disable-static on the Gimp-Print "configure" command line. Therefore, if you build Gimp-Print normally you should not be vulnerable to this problem.

Note that in general if you install CUPS into a non-standard location, and install Gimp-Print into the same location, this problem can surface. For example, if you choose to install CUPS in /usr/local and Gimp-Print in /usr/local you are vulnerable to this. However, it is not standard practice to install CUPS anywhere but /usr.

In this case, the run path embedded in the genppd executable points to the version of Gimp-Print installed in /usr/lib. This run path overrides any attempt by libtool to look in the build directory. The result is that cups-genppd and rastertogimpprint are run against the older version of Gimp-Print. If the new version contains additional features (more printers, etc.) they will not be available.

This bug is difficult to detect in a normal build. It does not cause an error to happen during build; the only failure is that some PPD files may not be built or may be built with missing options. Due to the PPD version checking introduced in this release, the behavior might manifest itself as a runtime error. It is also possible that there will be no error at all other than the older version of Gimp-Print being used, with the result that new features and bug fixes are not available.

If you wish to use only shared libraries, do not wish to build static libraries at all, and are vulnerable to this issue (because cups-config --ldflags sets the run path), there are three workarounds available:

1) Build and install Gimp-Print into /usr (rather than /usr/local) and then rebuild Gimp-Print from scratch. This will install the correct libgimpprint.so in /usr/lib, and in the rebuild genppd will be run against the correct library.

2) Remove the old version of Gimp-Print prior to building the new version of Gimp-Print. The important files to remove are anything named /usr/lib/libgimpprint*.

3) Edit cups-config to remove the reference to the run path.

* Changes to the Ghostscript driver:

1) The stp driver, a monolithic (traditional) Ghostscript driver used with Ghostscript 5.10, 5.50, and 6.51, has been withdrawn. The only supported Ghostscript driver is the IJS-based driver, for GNU Ghostscript 6.53 and above, ESP Ghostscript 7.05 and above, and AFPL Ghostscript 7.04 and above.

This change was made due to the difficulty of supporting the monolithic driver and the complexity of building it. The traditional monolithic driver architecture required that all drivers be compiled into Ghostscript, requiring that program to be recompiled whenever a driver is added. This is a rather complicated operation that cannot easily be automated. The IJS architecture, based on the open source HPIJS driver supplied by Hewlett-Packard for HP inkjet printers, allows for drivers to be compiled independently of the core Ghostscript. A Gimp-Print driver based on the IJS architecture was introduced into Gimp-Print 4.2.1 and 4.3.0, and has been recommended for use with Gimp-Print 4.2.2 and beyond.

In addition to a greatly simplified build procedure and overall cleaner architecture, the separation between Ghostscript and driver imposed by the IJS architecture permits use of Gimp-Print with AFPL Ghostscript with no license conflict.

* Exceptions and Workarounds:

1) Full bleed mode does not work completely correctly on most Epson printers at present. Typically there is a small margin at the bottom of the page (1-2 mm) and possibly a very small margin at the top. However, it works correctly along the left and right margins. We do not have an estimated time for a fix.

2) Printing to CD probably does not work correctly on the Epson Stylus Photo 900 and the Stylus Photo R300, although for different reasons. On the Stylus Photo 900, the positioning is most likely incorrect, while there have been reports that the manual feed tray is not selected correctly on the Stylus Photo R300. We do not have an estimated time for a fix.

3) The Canon, Hewlett-Packard, and Lexmark drivers do not offer all of the additional options and improvements that the Epson driver does. We do not have an estimated time for fix. Please contact us if you would like to assist with this.

4) Translation to other languages other than US-English is not supported in this release. This will be fixed prior to 5.0.

5) The Foomatic printer data management system is not completely supported in this release, as noted above. This will be fixed prior to 5.0.

6) Support for the Canon S200 has not yet been ported forward from 4.2.

7) This release is probably slower than 4.2 in many cases, particularly when using High Accuracy (which is the default color correction in most cases) or Bright color correction. It is possible that this release will not be able to drive some printers at full speed, particularly if your computer has a slow processor. Performance has not been analyzed or tuned at present. We expect to improve the performance prior to final release.

8) The user's manual and developer's guide have not been updated for this release.

9) The CUPS PPD update script (cups-genppdupdate.5.0) will not update PPD files from 4.2 or from 4.3 prior to 4.3.21.

* Architectural Changes:

1) A modular architecture for family drivers. A "family driver" is a collection of printer drivers for one group of printers sharing a common programming architecture, e. g. ESC/P2, PCL, Lexmark, Canon.

2) A modular architecture for color processing. This architecture will enable us, or others, to provide color management without having to change the internal interfaces within Gimp-Print.

3) New composite data types. Gimp-Print 5.0 defines additional data types. These types include:

* Sequences, curves, and arrays. A sequence is a primitive vector of numbers data type; curves and arrays provide additional capabilities such as interpolation (for curves) and multiple dimensions (for arrays).

* Lists are a general ordered container of named objects of arbitrary type. They are used throughout the core library, but are not presently exported as such, although derived types are. The creator of a list can specify constructor, destructor, name comparison, copy, and sort operations on list members.

* Parameters, which are part of the options system described below. In addition to storing values and descriptions of the parameter, parameters can be queried to determine defaults and constraints. Parameter lists (which use the list container internally) are also defined as part of this.

* String lists are used in various ways; in particular, they are used by the parameter system to inform programs of the available choices of values for string-valued parameters.

4) Complete overhaul of the options system. Rather than offering a fixed set of operations, family drivers, color modules, etc. can now offer a wide variety of options using a predefined set of data types. The data types currently supported are strings picked from a list, floating point numbers, integers, curves, arrays, Boolean values, and filenames.

The new options system provides a flexible way for drivers to inform applications of default values and UI hints, the ability to selectively enable and disable options, and a generalized way of verifying legality of option choices.

5) The coordinate system has been changed from bottom left to top left of the page, and the printable area can now extend beyond the edge of the page. The result is a more intuitive coordinate system for driver writers that matches the coordinate system of printers, and the ability to do true full bleed.

6) Complete overhaul of the black generation in CMYK output. Black generation is now performed in the color code rather than the dither code. This simplifies the dither code, puts the CMYK generation where it should be, and improves overall flexibility.

7) Complete overhaul of the multi-tone (photo or quadtone) ink processing architecture (channels). Instead of being processed as part of the dithering code as in 4.2, where ink drops of lighter inks were assigned virtual values proportional to their darkness as well as their size, this is now processed after the initial color conversion. This has a number of major advantages:

* As the actual amount of ink to be printed is visible to the color code, the color code can do ink limiting without fear that the dither code will change the amount of ink to be printed.

* It ensures that the same proportions of inks will be printed at any density and resolution. In 4.2, the ramp from light to dark ink varied depending upon the dot sizes available and hence the resolution. This has already been demonstrated to yield much better linearity and much more neutral gray scale with even very modest tuning effort.

* It enables use of all drop sizes of all ink tones. In 4.2, we could not use the smallest drop size of dark ink, because the virtual dot size of a small dot of dark ink is typically close to the virtual dot size of a large dot of small ink. This would yield very sharp transition, and perhaps even result in more light ink printed in darker regions than in lighter regions. With channel processing separate from dithering, this concern no longer exists; we can safely use small drops of dark ink, improving smoothness.

* It enables the color code to do ink limiting intelligently without concern that the dither code will rearrange things behind its back.

* It greatly simplifies the specification of inks. With drop size and darkness orthogonal, family drivers can greatly simplify their tables of inks.

* Dither algorithms can choose to ignore smaller drop sizes if they wish to offer fast operation.

* Applications with special requirements can now access the raw ink channels directly. This facility was used to create a mechanism to more accurately tune printer inks.

8) Use of true XML to store data about printers and paper sizes, and to represent new data types (sequences, curves, and arrays). This uses the "mxml" XML library, a fast, lightweight XML parser written by Mike Sweet for this project. Currently, the use of XML (as opposed to compiled-in data) is limited, but we expect that this will change beyond the initial 5.0 release.

9) In addition to parameters, internal components such as family drivers, color drivers, etc. can store arbitrary data in the basic stp_vars_t object. This facility is used to simplify the internal driver API; the family driver no longer needs to keep track of dither, color, etc. information itself.

10) The Epson Stylus family driver has been decomposed into more functionally distinct units. The data schema has been considerably improved, and the code itself broken into more easily maintained units.

11) The build system has been updated with a more contemporary toolchain based on autoconf 2.5 and gettext 0.11.

12) The Print plugin for the GIMP has been decomposed into a UI library and the core plugin. The user interface library is a pure GTK1-based library; the tiny GIMP plugin is a client of this library.

13) Printer characteristics are exposed to the application level as read-only parameters. This permits the escputil utility to not duplicate information stored in the printer driver.