]> git.imager.perl.org - imager.git/blobdiff - README
re-work the context macros
[imager.git] / README
diff --git a/README b/README
index 4e35693828b7c875295282f23c80945d7c6976b6..1967667bd45a08b9492be4aadce57c8fd6ba3352 100644 (file)
--- a/README
+++ b/README
@@ -1,11 +1,18 @@
 ================================================================
-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.
+
 ================================================================
 
 
@@ -68,7 +75,7 @@ If either fails do take a peek at the file errep.perl.  It's creates a
 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:
 
@@ -82,6 +89,12 @@ Which simply sets the environment variables for the extra libraries
 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
@@ -96,52 +109,224 @@ not libungif on RedHat then you will probably get lots of errors
 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
@@ -155,47 +340,100 @@ pretty pointless to have malloc debug enabled with no logging since you
 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
@@ -206,6 +444,7 @@ Thanks go to:
   Claes Jacobson      ( Claes )
   Philip Gwyn         ( Leolo )
   Michael Slade       ( Micksa )
+                      ( Cogent )
   Brad Murray         ( HalfJack )
   Nicholas Dronen     ( Veblen )
   Michael G Schwern   ( Schwern )
@@ -221,5 +460,16 @@ Thanks go to:
   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.