php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login go to bug id or search bugs for
Bug #12064 Submitted: Truetype functions can't locate fonts 2001-07-11 15:03 UTC 2001-07-23 03:36 UTC ben at kescom dot net Closed GD related 4.0.6 Windows 2000 SP1 No None
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !

[2001-07-11 15:03 UTC] ben at kescom dot net
The GD TrueType functions can't find fonts; relative paths and absolute paths both do not work.

Example (font is in the local directory, and . is part of my php.ini include_path)
<?
$image = ImageCreateTrueColor(200,200); ImageTTFText($image, 20, 0, 2, 15, $red, "d:/path/to/font.ttf", "Some text."); header("Content-type: image/jpeg"); // alternatively, ImageTTFText($image, 20, 0, 2, 15, $red, "font.ttf", "Some text."); header("Content-type: image/jpeg"); ImageJPEG($image, '', 100);
ImageDestroy(\$image);
?>
(written off the top of my head, it's in a larger script, but test scripts I wrote and unfortunately deleted don't work either)

PHP reports: Warning: Could not find/open font in d:\path\to\fonttest.php on line 3

This is from the binary Win32 distribution of PHP 4.0.6 on php.net.


## History

[2001-07-12 14:36 UTC] rasmus@php.net
No idea about the Windows version, but on UNIX the new GD2 library is hardcoded to look for TTF fonts in /usr/share/fonts/truetype.  Also, it automatically adds the .ttf extension itself so in your code you should not put the .ttf extension on your font.

[2001-07-12 15:40 UTC] ben at kescom dot net
Rasmus:

I did some reading through the GD docs; it seems that GD uses an environment variable called GDFONTPATH to locate its fonts when no path is specified (this seems to imply that the proper extension would also be appended). However, setting this properly did not work. The documentation also says that a full path will be accepted (with .ttf ending) if specified as a parameter.

Seems like a problem with the way PHP is passing the string, perhaps. I would play with the source, but I don't have a compiler for this environment right now; it seems that people are not having this problem on Unices, so I won't bother looking there.

Any clue?

Thanks,
Ben

[2001-07-12 16:00 UTC] dbeu@php.net
please use filemon (www.sysinternals.com) to find out where php/gd is searching for the fonts, and report back.

thanks.

[2001-07-12 16:08 UTC] wez@php.net
Are you sure that GD understands d:/path/to/font.ttf as a path?
Should it be d:\\path\\to\\font.ttf ?

--Wez.

[2001-07-12 17:18 UTC] ben at kescom dot net
Pretty sure, but it doesn't work the other way around either.

[2001-07-12 17:34 UTC] ben at kescom dot net
Ok, I checked out filemon.
Here's what's happening:
GD first tries to open files inside the Apache root (not the web root; for instance, on my box, C:\Program Files\Apache. So, if I've specified "C:\\path\\to\\font.ttf" in my path, I end up with:
C:\Program Files\Apache\C\C:\path\to\font.ttf.ttf

Next, it tries the current directory. However, it seems to be unable to process Windows drive letters, and so defaults to drive C: (my webroot's on D:, which is a problem), so I get
C:\path\to\script\C:\path\to\font.ttf.ttf

You get the idea. I made a directory structure on C: mimicing that of my D: webroot, but only containing the fonts; it worked fine (although the antialiasing was horrific, but that's a GD/FT2 issue).


[2001-07-22 19:20 UTC] joey@php.net
Fixing "null" status.

So, is this a GD Bug, or a PHP bug?

[2001-07-22 19:22 UTC] ben at kescom dot net
That would take a good look at the source code to see how PHP is passing arguments to the GD library.

[2001-07-23 03:36 UTC] dbeu@php.net
already fixed in cvs.