php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #48732 TTF Bounding box wrong for letters below baseline
Submitted: 2009-06-30 07:31 UTC Modified: 2009-07-27 15:14 UTC
Votes:2
Avg. Score:4.5 ± 0.5
Reproduced:2 of 2 (100.0%)
Same Version:1 (50.0%)
Same OS:1 (50.0%)
From: sta at netimage dot dk Assigned: tabe (profile)
Status: Closed Package: GD related
PHP Version: 5.2.10 OS: FreeBSD 7.1
Private report: No CVE-ID: None
 [2009-06-30 07:31 UTC] sta at netimage dot dk
Description:
------------
Bug #43073 fixed the bounding box for rotated texts.
Unfortunately the test case only used upper case ABCDEF for the test, an not any letters that protrude below the text baseline.
Hence the returned bounding box is now wrong for text like ABCQ?qyp.
The code below is directly from bug #43073, only the font, demo-text and font size has been changed.

Reproduce code:
---------------
<?php
$font = '/dana/data/ni_lib/ni_shop/fonts/CONGSEB.TTF'; # Full path to any TTF Font
$delta_t = 360.0 / 16; # Make 16 steps around
$g = imagecreate(800, 800);
$bgnd = imagecolorallocate($g, 255, 255, 255);
$black = imagecolorallocate($g, 0, 0, 0);
$x = 100;
$y = 0;
$cos_t = cos(deg2rad($delta_t));
$sin_t = sin(deg2rad($delta_t));
for($angle = 0.0; $angle < 360.0; $angle += $delta_t) {
	$bbox = imagettftext($g, 20, $angle, 400 + $x, 400 + $y, $black, $font, 'Q?DFqyp?dg!()/\%&#9619;');
	imagepolygon($g, $bbox, 4, $black);
	imagefilledellipse($g, $bbox [0], $bbox [1], 8, 8, $black);
	$temp = $cos_t * $x + $sin_t * $y;
	$y = $cos_t * $y - $sin_t * $x;
	$x = $temp;
}
header( "Content-type: image/png");
imagepng($g);

Expected result:
----------------
That the rectangles contain the entire text, including the parts that protrude below the text baseline.

Actual result:
--------------
Lower part of eg "q" are outside the box.
Images will be attached in a second.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-06-30 07:42 UTC] sta at netimage dot dk
To images, one rendered with PHP 5.2.9, the other with 5.2.10.
  http://php.thing.dev.netimage.dk/48732_5_2_9.png
  http://php.thing.dev.netimage.dk/48732_5_2_10.png

Both rendered on FreeBSD with freetype2-2.3.9_1 from ports.
 [2009-07-03 11:02 UTC] sta at netimage dot dk
The fix for bug #48555 did not solve this problem - bug still open.
The test string should probably be changed to "line1\nQ?DFqyp?dg!()/\%&#9619;" so the new line problem from #48555 is checked too.
 [2009-07-03 22:42 UTC] lbayuk at pobox dot com
Duplicated in PHP-5.2.10 and also PHP-5.3.0. The descenders are being excluded from the bounding box, at all angles. (Sigh. I was the one who opened bug #43073 for rotated bounding boxes. My mistake for not including characters with descenders in the original reproduce code.)
 [2009-07-03 23:34 UTC] pajoye@php.net
Tabe, do you have the time to look at it please?
 [2009-07-27 15:02 UTC] svn@php.net
Automatic comment from SVN on behalf of tabe
Revision: http://svn.php.net/viewvc/?view=revision&revision=286415
Log: fixed #48732 (TTF Bounding box wrong for letters below baseline) and #48801 (Problem with imagettfbbox)
 [2009-07-27 15:06 UTC] svn@php.net
Automatic comment from SVN on behalf of tabe
Revision: http://svn.php.net/viewvc/?view=revision&revision=286416
Log: MFH: fixed #48732 (TTF Bounding box wrong for letters below baseline) and #48801 (Problem with imagettfbbox)
 [2009-07-27 15:11 UTC] svn@php.net
Automatic comment from SVN on behalf of tabe
Revision: http://svn.php.net/viewvc/?view=revision&revision=286417
Log: MFH: fixed #48732 (TTF Bounding box wrong for letters below baseline) and #48801 (Problem with imagettfbbox)
 [2009-07-27 15:14 UTC] tabe@php.net
This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 06:01:30 2024 UTC