ikaruga has asked for the wisdom of the Perl Monks concerning the following question:

Hi all. What's wrong with this program? It's basically a rehash of a linux gazette article on GD:

http://linuxgazette.net/issue81/padala.html

Drawing text fonts work but not True Type fonts.

The frame draws. I've tried other TTF fonts and still no dice. Ideas? I'm running ActivePerl 5.10.1 on windows.

use GD; # Create a new image $im = new GD::Image(200, 200); $white = $im->colorAllocate(255,255,255); $gray = $im->colorAllocate(0,0,0); # Make the background transparent and interlaced $im->transparent($white); $im->interlaced('true'); $x1 = 20; $y1 = 20; # Draw text in a TTF font $im->rectangle(0,0,199,199,$gray); $font = "c:/Documents and Settings/uriel.avalos/My Documents/Scratchpa +d/nevis.ttf"; $im->stringFT($gray, $font, 12, 0, $x1, $y1, "A TTF font"); # Open a file for writing open(PICTURE, ">picture.png") or die("Cannot open file for writing"); # Make sure we are writing to a binary stream binmode PICTURE; # Convert the image to PNG and print it to the file PICTURE print PICTURE $im->png; close PICTURE;

Replies are listed 'Best First'.
Re: StringFT (truetype) not working in Windows?
by marto (Cardinal) on Feb 01, 2010 at 15:41 UTC

    When you compiled libgd did you configure font support? See my advice here regarding building libgd and the GD modules with the 'optional' packages. The libgd documentation details tests to run for font support.

      As I said in the post, I'm in Windows using ActivePerl with GD precompiled. I have no idea if it was compiled with TrueType (and I can't seem to find any webpages mentioning if it is---that's why I'm here). Also, shouldn't it give some kind of error message if truetype support wasn't compiled in? How can I tell if it's not?
        It seems that it wasn't. The following code fails (as in it doesn't print the success string). Anyone know where I can get a precompiled GD library with TrueType support? I really don't know the first thing about compiling on Windows... (Linux I can handle)
        use GD::Text; my($gd_text) = GD::Text-> new() or die GD::Text::error(); if ($gd_text-> can_do_ttf()) { print "Well, GD::Text says I can handle TTFs! Isn't that a hoot!\ +n"; }