Es interesante como se hace, hay funciones que te devuelven el ancho de un carácter, de ahí tienes que ir calculando mediante wordwrap() como debería separarse el texto para imprimirse por partes.
Al fin y al cabo no es un algoritmo sencillo pero si revisas en el manual de php seguro encontrarás algún ejemplo.