Ну, вы можете использовать imagettfbox (см. Также http://ruquay.com/sandbox/imagettf/), чтобы получить границы холста текста тега, который вы создали - учитывая шрифт, поворот и размер (который, очевидно, зависит от количества появления любого данного тега).
С этого момента вы можете начать размещать слова тега (случайным образом? - см. edit ) на холсте облака, пока все они не будут размещены. Вам просто нужно убедиться, что они не перекрываются (т.е. вы можете хранить координаты пикселей в массиве).
Еще одна вещь, которую вы должны удостовериться, - это сделать холст изображения достаточно большим (или размер шрифта достаточно маленьким), чтобы вместить все теги, поэтому вам нужно будет предварительно рассчитать (снова используя imagettfbox) точный пиксель размер каждого слова и после того, как вы достигли размера, в котором все слова могут поместиться на холсте изображения, вы можете начать размещать их, используя imagettftext .
РЕДАКТИРОВАТЬ : Вы также можете многому научиться (и, возможно, связаться с разработчиком ), взглянув на кредиты , например:
Спасибо, Мартин Ваттенберг, за
Центральная идея просто бросать вещи в
экран, пока он не подходит. Я поднимаю
стекло для философии
глупая вещь, которая работает. "
и многое другое ...