Welcome to Gutenprint 5.1.3! Please read these release notes carefully. Gutenprint, formerly named 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, 10.3, and 10.4) 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 an enhanced Print plug-in for the GIMP that replaces the plug-in packaged with the GIMP, and Ghostscript and CUPS drivers, as well as Foomatic data supporting the Ghostscript driver. Gutenprint has been renamed in order to clearly distinguish it from the GIMP. While this package started out as the original Print plugin for the GIMP, it has expanded into a collection of general purpose printer drivers, and the new, enhanced Print plugin for the GIMP is now only a small part of the package. Furthermore, the name Gutenprint recognizes Johannes Gutenberg, the inventor of the movable type printing press. Finally, the word "guten" means "good" in German. Gutenprint 5.1.3 is a development release of Gutenprint 5.1. It is based on Gutenprint 5.0.0. Gutenprint currently supports over 800 printer models. These release notes contain the following sections: I) General Requirements II) Changes from Previous Releases A) New features in 5.1.3 B) New features in 5.1.2 C) New features in 5.1.1 D) New features in 5.1.0 III) Exceptions and Workarounds A) General Issues B) Build/Installation Issues ================================================================ I) GENERAL REQUIREMENTS Gutenprint will run on any reasonably modern computer running Linux, Macintosh OS X (10.2 or above), Solaris, or any other UNIX-like operating system. If you plan to compile this package from source, you will also need an ANSI C compiler, such as gcc (recommended). A compiler is not required if you are installing a pre-compiled package. Processor and memory requirements vary depending upon the printer and runtime options selected; it is suggested that you have at least 64 MB of memory for general purpose printing, 256 MB or more for high quality printing on a good printer, and 1 GB or more for large format printing at high resolution. You should have at least 50 MB of free disk space to compile and install Gutenprint. Disk space requirements for printing will vary depending upon how you use Gutenprint, but are generally modest except as noted below. We recommend a processor speed of at least 300 MHz. Fast printers may require a faster processor to achieve maximum printing speed. For general use, you should have the Common UNIX Printing System, CUPS (version 1.1.15 or above) or Foomatic (2.0 or above) installed. Please the rest of the release notes, in particular the Exceptions and Workarounds, for full details on installation, as there is important information to be aware of. 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 Gutenprint 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 Gutenprint as a general-purpose printing solution. The enhanced Print plug-in for the GIMP requires the GIMP 2.0 or above (GIMP 2.2 recommended). This plug-in will work with any printing system, and offers a comprehensive user interface to control all aspects of the printing process. If you are printing photographs in large format from the GIMP at very high resolution, disk space requirements may be substantial, and we recommend at least 2 GB of free disk space for that purpose. 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. This driver should be used in conjunction with Foomatic to configure printers. Users of Macintosh OS X 10.2 (Jaguar), 10.3 (Panther), and 10.4 (Tiger) 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 strongly 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). The printing system used with these versions of OS X is not compatible with Gutenprint. OS X 10.2 and above use CUPS as the basis of the printing system, which is compatible with Gutenprint. The README file included with this package provides full instructions for building and installing Gutenprint. ================================================================ II) MAJOR CHANGES FROM PREVIOUS RELEASES A) NEW FEATURES AND FIXES IN GUTENPRINT 5.1.3: 1) The Canon PIXMA iP4300 and related printers now print black properly. 2) Margins have been improved for Canon PIXMA printers. 3) Borderless printing has been improved for many of the Epson R200/R300 series printers and related multifunction devices. 4) A build problem on certain systems has been fixed. KNOWN LIMITATIONS IN GUTENPRINT 5.1.3: 1) The Postscript driver does not send device-specific settings (e. g. media type). We are investigating solutions for this. ---------------- B) NEW FEATURES AND FIXES IN GUTENPRINT 5.1.2: 1) Improved tunings for Epson printers using Claria inks. The driver for the Stylus Photo 1400 has two separate quality settings for 720x360 and 720 DPI. The 720x360 DPI Enhanced and 720 DPI High Quality options offer improved quality at some cost in printing speed. The small format Claria-based printers (R260, R390, RX580, and related printers) offer 720x360 and 720 DPI modes approximately equal in quality to the Enhanced and High Quality modes on the 1400 without a speed penalty. 2) A problem whereby in some situations printers using Claria inks did not print black ink has been fixed. 3) A problem with the Postscript driver always printing in grayscale has been fixed. This problem was apparently introduced in 5.1.1. 4) The range of sizes for printing custom CD's has been extended down to 65 mm in both the Epson and Canon drivers. 5) The Epson Stylus Photo RX590 is now supported. 6) Borderless printing on the Epson Stylus Photo RX400, RX420, RX425, RX430, RX500, RX510, RX600, RX630, and RX640 now works correctly. 7) Printing to CD's on Epson printers now works correctly if the image is not placed at the top of the page. ---------------- C) NEW FEATURES AND FIXES IN GUTENPRINT 5.1.1: 1) New printers supported in this release: * Epson inkjet printers: Epson Picturemate Flash Epson Picturemate Pal Epson Picturemate Snap Epson Picturemate PM-200 Epson Picturemate PM-210 Epson Picturemate PM-240 Epson Picturemate PM-250 Epson Picturemate PM-280 Epson Stylus C79+ Epson Stylus C87+ Epson Stylus Photo 1400 Epson Stylus Photo 1410 Epson Stylus Photo R230 Epson Stylus Photo R350 Epson Stylus Photo R260 Epson Stylus Photo R265 Epson Stylus Photo R270 Epson Stylus Photo R360 Epson Stylus Photo R380 Epson Stylus Photo R390 Epson Stylus Photo RX560 Epson Stylus Photo RX580 Epson Stylus Photo RX640 Epson PM A820 Epson PM D870 Epson PM G850 Epson PM G4500 2) Preliminary support for the following printers: * Epson inkjet printers: Epson Stylus Photo R240 Epson Stylus Photo R245 3) A minor border problem with the R800 and related printers has been fixed. The standard bottom border is now slightly wider to eliminate the very bottom of the print from being chopped off. 4) Some Canon printers have been renamed from "Multipass" to "Pixma". 5) A build problem with the CUPS driver on some systems (in particular, OS X and any system where --disable-nls is used) has been fixed. 6) The CUPS PPD files now use the correct UTF-8 encoding. 7) Printing to CD's has been re-enabled for the Canon PIXMA iP4200. 8) CD printing for the Canon PIXMA iP4000 has been fixed. 9) The Canon driver now also supports the CD fine adjustment controls. 10) The resolutions for the Canon S300 have been fixed. 11) Printing to Canon PIXMA printers that are connected to Microsoft Windows hosts has been fixed (bug 1625202). 12) The Postscript driver now handles CMYK input correctly, fixing a problem with Cinepaint (bug 1701954). 13) The Postscript driver and UI library now handle setting the locale correctly. 14) The PPD file updater, cups-genppdupdate.5.1, now handles the -n (don't do anything) correctly. In addition, it handles --help and --version. ---------------- D) NEW FEATURES AND FIXES IN GUTENPRINT 5.1.0: 1) New printers supported in this release: * Dye sublimation printers: The driver for these printers has been renamed "dyesub", as many of the printers are manufactured by companies other than Olympus. Canon CP-10 Fujifilm FinePix NX-500 Kodak Easyshare Printer Olympus P-S100 Sony DPP-EX5 Sony UP-DR100 * Canon inkjet printers: The support for these printers is under development, and there are known issues with these printers. Please check with the mailing list (gimp-print-devel@lists.sourceforge.net) if you have any questions. Canon PIXMA iP2000 Canon PIXMA iP3000 Canon PIXMA iP3100 Canon PIXMA iP4100 Canon PIXMA iP4200 Canon PIXMA iP4300 Canon PIXMA iP5000 Canon PIXMA iP5200 Canon PIXMA iP6700 Canon PIXMA MP150 Canon PIXMA MP500 Canon PIXMA MP700 Canon PIXMA MP730 Canon PIXMA MP750 Canon PIXMA MP760 Canon PIXMA MP770 Canon PIXMA MP780 Canon PIXMA MP790 Canon PIXMA MP830 Canon PIXUS iP3100 Canon PIXUS iP4100 Canon i560 Canon i850 Canon i860 Canon i865 * Epson inkjet printers: Epson Stylus CX5000 Epson Stylus CX5000F Epson Stylus CX6000 Epson Stylus CX7000F * Lexmark inkjet and compatible printers: Compaq IJ1200 Lexmark X73 * PCL laser printers (monochrome only): Lexmark Optra E220 Xerox WorkCentre M118 2) CUPS 1.2 is now supported using on-the-fly PPD file generation. In addition, the resolution names are all compliant with the PPD specification. cups-genppdupdate correctly updates on-the-fly PPD files. 3) The native CUPS driver offers a new Shrink Page If Necessary to Fit Borders option, enabling the user to choose how to fit the output to the imageable area of the page. This is useful when a printer offers a choice of imageable areas, typically normal (which has margins) and full bleed (which allows printing to the edge of the paper, or even beyond). The following options are available: * Shrink (default): the output is shrunk if necessary to fit the imageable area of the page. If a printer is capable of borderless operation but normal margins are selected, the output will be shrunk. This will print the entire page (nothing will be lost), but will not preserve the dimensions of the printout. For example, a line intended to be 10 cm long may print smaller than that. * Crop: the output is cropped if necessary to fit the imageable area of the page. The dimensions of the page will be preserved (a line intended to be 10 cm long will print out exactly 10 cm), but the edges of the output may be truncated (cropped). * Expand: the output is expanded to fit the maximum possible imageable area of the page. When selected on printers capable of full bleed output, in conjunction with any other necessary options, the output will be expanded to match the maximum page dimension. The dimensions of the page will be expanded if necessary beyond the page size; a line intended to be 10 cm long may print longer than that. This option has no effect on printers not capable of full bleed or other expanded margins. It also has no effect when printing to CD's or the like. 4) Support for the GIMP 1.2 has been removed. 5) An experimental PostScript driver has been added, enabling use of all PPD file options in the enhanced GIMP plugin. This is a work in progress. 6) Epson inkjet printers now correctly support borderless printing. In addition, printing at the top and bottom of the page has been improved on printers that support borderless printing, although this is still not perfect in all cases. Certain printers (in particular the C/D8x and C6x series) do not print correctly to the bottom of the page with all colors. This problem is understood, but we do not know when a fix will be available. 7) The list of resolutions supported on newer Epson printers has been changed; resolutions of 5760x1440, 2880x2880, and 5760x2880 (as appropriate) have been added, replacing various 1440x2880 enhanced resolutions. 8) The output for the Canon PIXMA printers has been improved. 9) The Canon driver now supports DuplexNoTumble for the PIXMA iP4000. 10) Roll printing now works correctly on the Epson Stylus Photo R800. ================================================================ III) EXCEPTIONS AND WORKAROUNDS A) GENERAL ISSUES 1) 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. ---------------- B) BUILD/INSTALLATION ISSUES 1) With certain versions of CUPS and in certain non-default configurations, if a new version of Gutenprint is installed over an existing version genppd will create PPD files based on the older version of Gutenprint rather than the newer version. This will happen if all of the following are true: i) 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. ii) There is presently a version of Gutenprint installed in /usr (--prefix=/usr) rather than /usr/local or the like. The default location of Gutenprint installation is in /usr/local, but system vendors typically install Gutenprint in /usr. iii) Gutenprint is built dynamically only (--disable-static or --disable-static-genppd). This is not a default, and requires the explicit --disable-static or --disable-static-genppd on the Gutenprint "configure" command line. Therefore, if you build Gutenprint normally you should not be vulnerable to this problem. Note that in general if you install CUPS into a non-standard location, and install Gutenprint into the same location, this problem can surface. For example, if you choose to install CUPS in /usr/local and Gutenprint 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 Gutenprint 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 rastertogutenprint are run against the older version of Gutenprint. If the new version contains additional features (more printers, changes to printer options, etc.) they will not be available. This bug is difficult to detect in a normal build. It normally does not cause an error to happen during build unless there is an API change from the version installed and the version being built; the only failure is frequently 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 Gutenprint 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: i) Build and install Gutenprint into /usr (rather than /usr/local) and then rebuild Gutenprint from scratch. This will install the correct libgutenprint.so in /usr/lib, and in the rebuild genppd will be run against the correct library. ii) Remove the old version of Gutenprint prior to building the new version of Gutenprint. The important files to remove are anything named /usr/lib/libgutenprint*. iii) Edit cups-config to remove the reference to the run path. 2) There is a known translation problem building the PPD files used by the CUPS driver such that on many systems all of the PPD files are in the English language. This causes CUPS tools, such as KUPS or http://localhost:631 to display many copies of each PPD file, all in the English (en) language. In fact, the PPD files should be translated into many different languages. The PPD files are created by a program named "genppd" in the src/cups directory. This program is called once for each language, and creates all of the PPD files for the language in one shot. The command 'zgrep' can be used to determine if genppd is creating the PPD files correctly, as follows: src/cups$ zgrep LanguageVersion ppd/*/pcl-4.ppd.gz ppd/C/pcl-4.ppd.gz:*LanguageVersion: English ppd/da/pcl-4.ppd.gz:*LanguageVersion: Danish ppd/en_GB/pcl-4.ppd.gz:*LanguageVersion: English-GB ... If the PPD file for each language has a different language version, the genppd program operated correctly. If instead the output looks like this: src/cups$ zgrep LanguageVersion ppd/*/stp-pcl-4.5.0.ppd.gz ppd/C/stp-pcl-4.5.0.ppd.gz:*LanguageVersion: English ppd/da/stp-pcl-4.5.0.ppd.gz:*LanguageVersion: English ppd/en_GB/stp-pcl-4.5.0.ppd.gz:*LanguageVersion: English ... the program did not operate correctly. If you do not have 'zgrep' on your system, you can gunzip the PPD files, and use grep LanguageVersion ppd/*/stp-pcl-4.5.0.ppd to accomplish the same test. The normal mechanism for performing translations is to set the LANG environment variable to the appropriate language prior to running the program. This normally causes the program to search the translations (normally in /usr/share/locale or /usr/lib/locale) for the chosen language. When a specially marked string is used, a special macro calls `gettext()' on the string to retrieve the translation, and substitutes the translation for the string in question. There are two problems with this approach in the context of genppd. The translation engine is intended to be used after installation, not during build, and this causes problems. i) At the time genppd is run, the translations have not been installed in the normal system directories. Fortunately, it's possible to tell the translation machinery (via bindtextdomain) to look elsewhere for the translation catalogs. What we do is install the catalogs in a temporary directory under src/cups, and tell genppd to instruct the translation machinery to look there. This workaround is straightforward, and doesn't normally cause problems. ii) LANG only lets us pick a valid locale (normally determined by listing the directories in /usr/share/locale or /usr/lib/locale). Unfortunately, while language codes (which form the base of locales) are standard, the actual locale names aren't always. On some systems, the locale names are just the language base names; on others, they are the language names concatenated with country codes (e. g. en_US), while on others they are language codes concatenated with character sets. We are not aware of any workaround for this, possibly short of actually running make install and then rebuilding the PPD's. 'make install' will install the message catalogs, and that may create the necessary locale directories. This is not exactly a very elegant approach. The GNU gettext library (libintl.a) provides another environment variable, LANGUAGE, which unconditionally looks up translations according to the language, ignoring LANG and the LC_* environment variables that are normally used for translation. This library is no longer included with Gutenprint (--with-included-gettext will not work). Install the GNU gettext package first if you need libintl.a. Many systems provide translation machinery in their standard libraries, and it may not always be best to use foreign libraries to replace standard system functionality. We have chosen to use LANGUAGE for this purpose, as the GNU gettext library appears to offer the most reliable translation, and LANGUAGE appears to offer the most reliable mechanism. We have actually found that LANG and LC_* can interfere with LANGUAGE, thus we do not use both. To determine if the translations are working, you must actually inspect the PPD files. You will need to cd src/cups/ppd/sv gunzip * more * or the like to determine if this is successful. In particular, look for LanguageVersion, and make sure that it is correct (it should be "Swedish" in the sv directory, for example), and also make sure that the paper sizes are also translated. We currently suggest using the Swedish translation for this purpose as it is the most complete. If packagers find that the PPD files are all in English, rather than translated into the appropriate languages, we suggest the following: i) Install GNU gettext (libintl). If your system is not based on GNU libc (Linux usually is based on GNU libc; BSD, Solaris, IRIX, etc. are not), you will need this to have any possibility of creating the translated PPD files. ii) Run 'make install' to install the package (including the message catalogs) onto the system first, and then do the following: cd src/cups rm ppd-stamp make to rebuild the PPD files. Having the message catalogs on the system may permit this to succeed. iii) Ensure that your system actually has locales named 'sv', 'pl', and all of the other supported languages, and change LANGUAGE to something more appropriate (most likely LANG, LC_MESSAGES, or LC_ALL). iv) Build the PPD files on a Linux-based system; they are portable. v) Use --disable-translated-cups-ppds on the configure command line to suppress the translated PPD files altogether. Please feel free to contact us about this issue. 3) There are multiple issues that one must be aware of when using Foomatic with Gutenprint. i) Before installing any new release of Gutenprint 5.0, you must manually remove any existing Foomatic option files. This is because the Foomatic utility to load data kits (foomatic-kitload) does not remove obsolete data files from the Foomatic database. If you do not do this, any PPD files you generate will be incorrect and printing may work incorrectly or not at all. Foomatic option files are usually located in /usr/local/share/foomatic/db/source/opt or /usr/share/foomatic/db/source/opt Assuming they're in the former location, you must remove data files associated with the Gutenprint driver. The command to do this, which must be run as the superuser (root) is cd /usr/local/share/foomatic/db/source/opt ls -l gutenprint-ijs*.xml If there are existing files present, you must remove them: rm -f gutenprint-ijs*.xml Now check to make sure that they are gone: ls -l gutenprint-ijs*.xml CAUTION: Be very careful when typing this command! Minor errors in typing these commands may result in severe damage to your system. After this, you may run 'make install' in your Gutenprint source directory to install the package. You will then need to re-create any printer queues using Foomatic. In general, you will have to perform this procedure any time you install a new version of Gutenprint. Please check the Foomatic site (http://www.openprinting.org/foomatic.html) and the Gutenprint site (http://gimp-print.sourceforge.net) for updated instructions about this. ii) Unlike with the CUPS native driver, there is no simple way to update all PPD files when you install a new version of Gutenprint. You must either use the foomatic-ppdfile command to upgrade PPD files individually, or foomatic-compiledb to build all PPD files. Your system may provide an alternate way to install new PPD files, in which case you may use that method. iii) The Foomatic data is version locked to the Gutenprint release installed on the system. For example, PPD files generated with the Foomatic data for release 5.0.0 will not work with the ijsgutenprint in release 5.0.1. This is to prevent accidentally using incorrect data, which could cause incorrect function to take place. 4) There is a known complication building "escputil" that causes problems on some systems. "escputil" uses the "readline" package, to support command editing and history within the program. Unfortunately, linking programs with "readline" often requires linking against additional libraries, and the exact library depends upon the system (e. g. not all Linux systems have the same requirements). The configure script attempts to determine which additional library must be linked against. It tries using the following libraries in this order to build a test executable: -lncurses -lcurses -ltermcap no additional libraries The reason it tries other libraries first is that some systems will link successfully, but only fail when an attempt is made to actually call readline. Therefore, we assume that additional libraries are required. Since we try the extra libraries in order from most recent to oldest, we expect that the first one we find will be appropriate. For example, if the "ncurses" library is the standard on a given system, the "termcap" library may be provided for back compatibility, but it is unlikely that "termcap" will be the standard with "curses" or "ncurses" being provided for compatibility only (so that the link will succeed but the command will use the incorrect library). As this procedure is not failsafe, we provide the following configure options to control this behavior: ./configure --with-readline=yes (the default; attempts to determine the correct library to link against) ./configure --with-readline=no (turns off use of readline altogether) ./configure --with-readline=only (specifically instructs configure to not attempt to link against any other libraries) ./configure --with-readline=libs (specifies the libraries to be linked against) An hypothetical (this won't work anywhere!) example of the latter would be ./configure --with-readline='-lncurses -ltermcap' Note that configure will not allow readline to be used if it cannot successfully build the test program, regardless of the option selected. If you are having difficulty getting escputil to build, we suggest using --with-readline=no. The commands used within escputil are very short and seldom require significant editing.