GoLang imagettfbbox

request it (115)
GoLang replacement for PHP's imagettfbbox [edit | history]

Do you know a GoLang replacement for PHP's imagettfbbox? Write it!

PHP imagettfbbox

PHP original manual for imagettfbbox [ show | php.net ]


(PHP 4, PHP 5, PHP 7)

imagettfbboxGive the bounding box of a text using TrueType fonts


array imagettfbbox ( float $size , float $angle , string $fontfile , string $text )

This function calculates and returns the bounding box in pixels for a TrueType text.



The font size.

Note: In GD 1, this is measured in pixels. In GD 2, this is measured in points.


Angle in degrees in which text will be measured.


The path to the TrueType font you wish to use.

Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.

When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the 'path separator' for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.

In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.

// Set the enviroment variable for GD
putenv('GDFONTPATH=' realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font 'SomeFont';


Note that open_basedir does not apply to fontfile.


The string to be measured.

Return Values

imagettfbbox() returns an array with 8 elements representing four points making the bounding box of the text on success and FALSE on error.

key contents
0 lower left corner, X position
1 lower left corner, Y position
2 lower right corner, X position
3 lower right corner, Y position
4 upper right corner, X position
5 upper right corner, Y position
6 upper left corner, X position
7 upper left corner, Y position

The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner seeing the text horizontally.


Example #1 imagettfbbox() example

// Create a 300x150 image
$im imagecreatetruecolor(300150);
$black imagecolorallocate($im000);
$white imagecolorallocate($im255255255);

// Set the background to be white

// Path to our font file
$font './arial.ttf';

// First we create our bounding box for the first text
$bbox imagettfbbox(1045$font'Powered by PHP ' phpversion());

// This is our cordinates for X and Y
$x $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
$y $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Write it
imagettftext($im1045$x$y$black$font'Powered by PHP ' phpversion());

// Create the next bounding box for the second text
$bbox imagettfbbox(1045$font'and Zend Engine ' zend_version());

// Set the cordinates so its next to the first text
$x $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
$y $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Write it
imagettftext($im1045$x$y$black$font'and Zend Engine ' zend_version());

// Output to browser
header('Content-Type: image/png');



Note: This function is only available if PHP is compiled with freetype support (--with-freetype-dir=DIR )

See Also

  • imagettftext() - Write text to the image using TrueType fonts
  • imageftbbox() - Give the bounding box of a text using fonts via freetype2