================================================================
-Copyright (c) 1999, 2000 Arnar M. Hrafnkelsson. All rights reserved.
+Copyright (c) 1999-2004 Arnar M. Hrafnkelsson. All rights reserved.
+Copyright (c) 2004-2012 Anthony Cook.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
+
+A test font, FT2/fontfiles/MMOne.pfb contains Postscript code
+copyrighted by Adobe. See adobe.txt for license information.
================================================================
>> THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY WHATSOEVER <<
+If you like or hate Imager, please let me know by sending mail
+to tonyc@cpan.org - I love feedback.
+
================================================================
file report.txt. This is some information which will help me discover
where the problem is so I can try to fix it in future releases. If
you find running it ok (just remember - no warranty!) please send the
-report.txt via email to addi@umich.edu .
+report.txt via email to tonyc@cpan.org.
Troubleshooting tips:
to include the X libraries (which we do not use at all, but must
included since libgif has been linked with it).
+Otherwise you could just build giflib without any X11 dependencies:
+
+ # must be a clean tree
+ cd giflib-4.1.4
+ ./configure --without-x ...
+
Also note that libgif has a few bugs: You can run something like
$ perl -Iblib/lib -Iblib/arch t/t105gif.t
like undefined symbol: FreeSavedImages when running make test.
Install libungif package to fix it.
+Stock libungif 4.1.4 or later seems to fix all of the bugs, if you
+have a problem that version of linungif (or later), let us know and
+we'll look into it.
-Imager needs to have a fairly recent libtiff installed (we know it
-it runs fine with 3.5.5). In the future we might consider supporting older
-libtiff versions. For now you can either configure Imager manually (by
-setting the IM_MANUAL environment variable to 1, in sh:
+Imager needs to have a libtiff version of at least 3.5.5, but you
+should use a later version since some noticable bugs have been fixed.
+
+For now you can either configure Imager manually (by setting the
+IM_MANUAL environment variable to 1, in sh:
$ IM_MANUAL=1 perl Makefile.PL
and simply say no to tiff support when asked if you want it, the same thing
can be used to circumvent problems in gifs to get Imager going.
-
If it worked just continue with the installation as normally
(with make install).
+Freetype 1.x vs Freetype 2.x
+----------------------------
+
+These two libraries have some conflicting include file names, but as
+long as you don't put the Freetype 2.x freetype.h directory in the
+include path it should all work.
+
+Put the directory containing ft2build.h in the include path, but not
+the directory containing the freetype 2.x freetype.h.
+
+If you see compilation errors from font.c you've probably made the
+mistake of putting the Freetype 2.x freetype.h directory into the
+include path.
+
+To see which directories should be in the include path, try:
+
+ freetype-config --cflags
+
+Ideally, freetype-config should be in the PATH when building Imager
+with freetype 2.x support.
+
+
+Macintosh dfont and suitcase font support
+-----------------------------------------
+
+Through Freetype 2.1, Imager can use Macintosh DFON (.dfont) fonts and
+suitcase font files.
+
+If you want to be able to use more than just the first face in the
+font file though, you will need to configure freetype2 with the
+--with-old-mac-fonts option:
+
+ ./configure --with-old-mac-fonts
+
+You can use the index option to get to the other font faces in the
+file:
+
+ # get the second face from $file
+ my $font = Imager::Font->new(file=>$file, index=>1)
+ or die Imager->errstr;
+
+If you're using a suitcase font, you will also need to force the use
+of freetype 2 with the type argument:
+
+ my $font = Imager::Font->new(file=>$suitcase, type=>'ft2', index=>$index)
+ or die Imager->errstr;
+
+
========================
3. External dependencies
========================
Some hints about getting the Imager module to find the libraries it
-needs for specific features. The libraries it uses are:
+needs for specific features.
+
+Most Linux distributions pre-package these. For each library I've
+listed the Debian and Redhat package names.
+
+For Debian or Debian based system, such as Ubuntu, you would run:
+
+ aptitude install package-name
+
+or:
+
+ apt-get install package-name
+
+at a root shell (or via sudo).
+
+eg.
+
+ apt-get install libjpeg62-dev
+
+For a Redhat based system such as CentOS or Fedora you would run:
+
+ yum install package-name
+
+at a root shell.
+
+eg.
+
+ yum install libjpeg-devel
+
+I strongly recommend using your distribution's packages if possible,
+this will mean any security updates to those packages will be applied
+when you install security updates.
+
+3.1 libjpeg
+-----------
+
+ http://www.ijg.org/files/
+ ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
+
+Provides read and write access to JPEG images.
+
+Make sure you run:
+
+ make install-lib
+
+to install the development headers and libraries before attempting to
+build Imager.
+
+Debian: libjpeg62-dev
+Redhat: libjpeg-devel
+
+3.2 libpng
+----------
+
+ http://www.libpng.org/pub/png/libpng.html
+
+Provides read and write access to PNG images.
+
+You also need zlib to use png: http://www.gzip.org/zlib/ We have
+encountered problems with libpng 1.0.1, which were fixed in 1.0.5
+Note: you should probably be using zlib 1.1.4, since 1.1.3 has a
+potential security problem.
+
+Debian: libpng12-dev
+Redhat: libpng-devel
+
+3.3 giflib
+----------
- jpeg: ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
+ http://sourceforge.net/projects/giflib/
- png: ftp://ftp.uu.net/graphics/png
- you also need zlib to use png: ftp://ftp.uu.net/pub/archiving/zip/zlib
- We have encountered problems with libpng 1.0.1, which were fixed in 1.0.5
+Provides read and write access to GIF images.
- gif: http://www.arrakeen.demon.co.uk/giflib/
-or at: http://prtr-13.ucsc.edu/~badger/software/libungif/index.shtml
+giflib/libungif has come a long way since the buggy versions available
+when Imager's gif support code was written. Preferably you should get
+at least version 4.1.4. If you have a recent Linux distribution you
+should be safe with whatever giflib it provides, but if you're
+building from source, please try to use the latest version.
- tiff: http://www.libtiff.org/
+With the expiration of the LZW patent there's no reason to use
+libungif.
- t1: ftp://ftp.neuroinformatik.ruhr-uni-bochum.de/pub/software/t1lib/
-or at: ftp://sunsite.unc.edu/pub/Linux/libs/graphics/
+libgif 4.1.4 has no problems known to me at this point.
- tt: http://www.freetype.org/
+Debian: libgif-dev
+Redhat: giflib-devel
+3.4 libtiff
+-----------
+
+ http://www.remotesensing.org/libtiff/
+
+Provides read and write access to TIFF images.
+
+Note: libtiff 3.9.0 shouldn't be used due to a bug in
+TIFFWriteDirectory().
+
+Debian: libtiff4-dev
+Redhat: libtiff-devel
+
+3.5 T1Lib
+---------
+
+ http://www.t1lib.org/
+ ftp://sunsite.unc.edu/pub/Linux/libs/graphics/
+
+Support for text drawing with Type 1 Postscript fonts.
+
+Debian: libt1-dev
+Redhat: t1lib-devel
+
+3.6 Freetype 2.x (libfreetype)
+------------------------------
+
+ http://www.freetype.org/
+
+Support for text drawing with a large number of font formats,
+including Truetype, Type 1, Opentype and some bitmap formats.
+
+Debian: libfreetype6-dev
+Redhat: freetype-devel
+
+3.7 Freetype 1.x (libttf)
+-------------------------
+
+ http://www.freetype.org/
+
+Support for text drawing with Truetype fonts.
+
+This library has been superceded by Freetype 2, and some Linux
+distributions are phasing it out.
+
+Debian: libttf-dev
+Redhat: freetype1-devel
+
+3.8 Binaries
+------------
Precompiled versions of some of the libraries might be found at:
AIX:
- http://www.bull.de/
- ftp://ftp.rge.com/pub/systems/aix/bull/
+ http://www.bullfreeware.com/
+
+Solaris:
+ http://www.sunfreeware.com/
========================
4. Logging and debugging
can never see the malloc information that way.
-========================
-5. Truetype information
-========================
-
-If you enable the truetype part and want it to be TESTED you MUST set
-the environment variable TTFONTTEST to a complete path to a truetype
-font.
-
-
=================
-6. Win32 Support
+5. Win32 Support
=================
Imager can be installed on Win32 systems. This was ported and tested
-with Microsoft Visual C++ 6.0 with build 623 of ActivePerl. If you
-have the appropriate libraries installed you can read and write PNG,
-TIFF, PPM and JPEG files. There is currently no support for fonts
-under Win32, though it might be preferable to try to use Win32's
-native font support over the external librarie - why force the user to
-install yet another library?
+with Microsoft Visual C++ 6.0 with build 623 of ActivePerl. You can
+use all of the features of Imager. You can also use Win32 GDI fonts
+directly by supplying the 'face' parameter to Imager::Font->new(...).
+
+I've tested with MSVC++ 6.0, cygwin (perl 5.6.1) and gcc (MinGW).
+
+If you see an error under cygwin during testing along the lines of:
+
+ C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\...some dll to the
+ same address as parent (0x...) != 0x....
+
+you will need to install the cygwin rebase package and run:
+
+ $ rebaseall -v
+
+If you get errors from your make tool, make sure you're using the same
+make that was used to build your perl - generally GNU make for cygwin,
+nmake for Visual C/C++ and dmake for MinGW.
+
+Imager and all of the libraries it requires are supplied with
+Strawberry Perl.
+
+============
+6. Mac OS X
+============
+
+Building Imager under OS X is generally straightforward. There are
+some exceptions though:
+
+a) you may find to need to ranlib library files in place after you've
+ installed them, for example:
+
+ ranlib /usr/local/lib/libgif.a
+
+b) the version of GCC enabled by default on OS X 10.4 generates
+ incorrect code for some functions. To work around this run:
+
+ gcc_select 3
+
+ before building Imager and:
+
+ gcc_select 4
+
+ after building Imager.
+
+ This problem exhibits itself as test failures in t/t20fill.t
+
+ Imager 0.56 includes a workaround for this problem, but I wasn't
+ able to test it.
+
+c) if you want to build GCC 4.0 from scratch and use that you will
+ need to adjust the command-line supplied during the link stage, so
+ that there is some other option before the -bundle option.
+
+ For example:
+
+ perl Makefile.PL LDDLFLAGS="`perl -MConfig -e 'print "-g $Config{lddlflags}"'`"
+
+d) The default perl build in Snow Leopard and Lion is a fat binary,
+ and default builds of giflib, libpng and libjpeg (and maybe other
+ libraries) will produce link failures.
+
+ To avoid this you need to supply a CFLAGS parameter to the
+ library's configure script, but since the -arch flag conflicts with
+ the options used to build the dependency files, you need to supply
+ another flag to disable dependency tracking.
+
+ Snow Leopard fat binaries include i386, x86_64 and PPC objects,
+ hence you would run configure like:
+
+ ./configure --disable-dependency-tracking CFLAGS='-arch x86_64 -arch i386 -arch ppc'
-I haven't tried to target compilers other than VC++, since I don't
-have them installed.
+ Lion doesn't support PPC, so there you run configure like:
-If you have any problems with the Win32 support, please email
-tony@develop-help.com (don't forget to use nmake instead of make).
+ ./configure --disable-dependency-tracking CFLAGS='-arch x86_64 -arch i386'
+ For libgif you might also want to supply the --without-x option.
+
=======================
7. General information
=======================
The Imager module homepage is currently at:
- http://www.eecs.umich.edu/~addi/perl/Imager/
+ http://imager.perl.org/
-The current docs are rather bad as I've been busy adding features
-but hopefully they will be updated soon. Until then you'll just
-have to use the source. The test scripts might also be a good idea.
-By activating the the #init_log lines in the test script you can get
-rather verbose debugging output from the C code.
+You can report bugs by pointing your browser at:
+ https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Imager
========================
8. Thanks
Claes Jacobson ( Claes )
Philip Gwyn ( Leolo )
Michael Slade ( Micksa )
+ ( Cogent )
Brad Murray ( HalfJack )
Nicholas Dronen ( Veblen )
Michael G Schwern ( Schwern )
PerlJam ( )
Roderick Schertler ( Roderick )
Nathan Torkington ( gnat )
+ Gabriel Vasseur
+ kmx
+ Nicolas Roggli
+ Justin Davis
+ Maurice Height
+ Krzysztof WojtaÅ
+ David Cantrell
+ Eleneldil G. Arilou
+ Slaven Rezic
+ Richard Fairhurst
+ Nikita Dedik
(and just to play it safe) all those I forgot to mention.