Measures a TrueType or OpenType text bounding box via the FreeType backend.
What It Does
GD provides simple pixel-level operations; Imagick provides another image-processing API with distinct requirements. Font file must exist and FreeType support must be available; bbox is not simply text width and height.
Requirements and Compatibility
GD extension. Sample images and fonts referred to by filename must be supplied locally. Use PHP 8 GdImage objects where applicable; optional decoders depend on the installed build.
Syntax, Inputs and Results
The arguments shown below are concrete values for this function; their types and ranges matter. The example checks return data rather than assuming that every operation succeeds.
Example 1: Basic Use
Call the function with a concrete input and inspect its result.
<?php
if (!extension_loaded('gd')) throw new RuntimeException('GD extension required');
if (!is_file(__DIR__ . '/font.ttf')) throw new RuntimeException('Provide the sample file /font.ttf');
$box = imageftbbox(18, 0, __DIR__ . '/font.ttf', 'Hello');
if ($box === false) throw new RuntimeException('Font measurement failed');
echo 'Text bounds: ', max($box[0], $box[2], $box[4], $box[6])-min($box[0],$box[2],$box[4],$box[6]);
Example 2: Another Case
Change the inputs to observe the behavior on another case.
<?php
if (!extension_loaded('gd')) throw new RuntimeException('GD extension required');
if (!is_file(__DIR__ . '/font.ttf')) throw new RuntimeException('Provide the sample file /font.ttf');
$box = imageftbbox(24, 15, __DIR__ . '/font.ttf', 'Title');
if ($box === false) throw new RuntimeException('Font measurement failed');
echo 'Text bounds: ', max($box[0], $box[2], $box[4], $box[6])-min($box[0],$box[2],$box[4],$box[6]);
Practical Example
Use the result to create an output, validate a condition, or complete an image workflow.
<?php
if (!extension_loaded('gd')) throw new RuntimeException('GD extension required');
$font = __DIR__ . "/font.ttf";
if (!is_file($font)) throw new RuntimeException("Font missing");
$bounds = imageftbbox(20, 0, $font, "Receipt");
if ($bounds === false) throw new RuntimeException("Measure failed");
echo max($bounds[0],$bounds[2],$bounds[4],$bounds[6]) - min($bounds[0],$bounds[2],$bounds[4],$bounds[6]);
For production, apply the compatibility and edge-case limits described below.
Important Behavior and Edge Cases
Font file must exist and FreeType support must be available; bbox is not simply text width and height.
Comparison with Related Functions and Tools
| Subject | Key difference |
|---|---|
| imageftbbox() | GD provides simple pixel-level operations; Imagick provides another image-processing API with distinct requirements. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Calling imageftbbox() without its required input or supported extension | Check the extension, supply valid arguments, and handle false or exceptions according to the function. |
| Assuming imageftbbox() guarantees a valid or safe image | Font file must exist and FreeType support must be available; bbox is not simply text width and height. |
| Confusing the operation with a related API | GD provides simple pixel-level operations; Imagick provides another image-processing API with distinct requirements. |
Key Takeaways
- Measures a TrueType or OpenType text bounding box via the FreeType backend.
- Font file must exist and FreeType support must be available; bbox is not simply text width and height.
- Choose the companion API described in the comparison table when the job differs.
Use these examples as a starting point, then validate the result with the actual PHP build, dependencies and inputs used by your application.