|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2009-10-08 15:07 UTC] christian dot roy at orange dot fr
 Description: ------------ delivered value problem : x coord are wrong. Seems to be very similar with bug #48801 taht has been fixed in 5.2.11 for y coordinates Reproduce code: --------------- $fontPath = 'Labo/Includes/Times.ttf'; // std Times.ttf $testChars = array( 'a', 'k', 'j' ); echo '<pre>'; foreach( $testChars as $char ) { $dims = imagettfbbox( 60, 0, $fontPath, $char ); echo '<br>bbox returned rectangle for ' . $char . ' : '; echo $dims[0]." * "; echo $dims[1]." * "; echo $dims[2]." * "; echo $dims[3]." * "; echo $dims[4]." * "; echo $dims[5]." * "; echo $dims[6]." * "; echo $dims[7]."<br>"; } echo '</pre>'; Expected result: ---------------- With PHP 4.4.9 : bbox returned rectangle for a : 2 * 1 * 35 * 1 * 35 * -38 * 2 * -38 bbox returned rectangle for k : 0 * -1 * 38 * -1 * 38 * -57 * 0 * -57 bbox returned rectangle for j : -9 * 17 * 14 * 17 * 14 * -57 * -9 * -57 Actual result: -------------- With PHP 5.2.11 bbox returned rectangle for a : 2 * 1 * 35 * 1 * 35 * -38 * 2 * -38 bbox returned rectangle for k : 0 * -1 * 38 * -1 * 38 * -57 * 0 * -57 bbox returned rectangle for j : -9 * 17 * 14 * 17 * 14 * -57 * -9 * -57 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 13:00:01 2025 UTC | 
To help you debug this issue, I created the following test-script: <?php define('SAMPLE', @$_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'] : 'abc'); define('SAMPLE_TTF', dirname(__FILE__).'/georgiai.ttf'); define('SAMPLE_SIZE', 100); define('SAMPLE_PAD', 50); $m = imagettfbbox(SAMPLE_SIZE, 0, SAMPLE_TTF, SAMPLE); $width = $m[4]-$m[6] + 2*SAMPLE_PAD; $height = $m[1]-$m[7] + 2*SAMPLE_PAD; $baseline = abs($m[7]); $img = imagecreatetruecolor($width,$height); $red = imagecolorallocate($img,255,0,0); $white = imagecolorallocate($img,255,255,255); imagettftext( $img, SAMPLE_SIZE, # size 0, # angle SAMPLE_PAD, # x SAMPLE_PAD+$baseline, # y $white, SAMPLE_TTF, SAMPLE ); imagerectangle( $img, $m[6]+SAMPLE_PAD, $m[7]+SAMPLE_PAD+$baseline, # upper left x,y $m[2]+SAMPLE_PAD, $m[3]+SAMPLE_PAD+$baseline, # lower right x,y $red ); header('Content-type: image/png'); imagepng($img); ?> You will need to adjust the SAMPLE_TTF path to point to a valid truetype file - the one I'm using is Windows standard Georgia Italics. The output should be a white sample of text with a red border, and the border should grace the text, not overlap it. For reference, here's what it looks like on Linux (GOOD): http://mindplay.dk/temp/metrics/imagettf-good.png And here's what it looks like on Windows (BAD): http://mindplay.dk/temp/metrics/imagettf-bad.png I just tried the latest XAMPP build (1.7.2 beta 2) for Windows, and the bug is still present. If you run the script from a browser, you can add your own sample text by adding a query string, e.g.: http://localhost/sample.php?abcdefg Note that using a larger font-size (SAMPLE_SIZE) seems to increase the error. It seems that all the returned coordinates are off by a percentage, not by a fixed number of pixels. I hope this helps solve the problem...