imagettftext(): calculate font size to ensure text fits image width
dynamic-content, dynamic-image-generation, imagettftext, php
Solution
You can calculate the bounding box of TTF text before outputting it with the `imagettfbbox` function. Unfortunately there is no direct way of scaling to fit a width, so you'll have to do it yourself.
One way of doing it is to pass the text with a default font size of, say 20, to `imagettfbbox` and retrieve the width from it. You can then calculate how much smaller or bigger the text should be to fit the size you want by calculating a scale factor:
scale = targetWidth / bboxWidth;
Then draw the text with the proper size:
fontSize = 20 * scale;
using the `imagettftext` function. Fonts don't scale 100% perfectly this way, but you'll get a very good approximation.
See the documentation of `imagettfbox` here.
Problem
I'm using `imagettftext()` to write dynamic text on an image and I want it to fit my image width. How can I calculate the font size by the text lenght?