Да, есть DrawString , способный автоматически переносить текст по словам. Вы можете использовать метод MeasureString , чтобы проверить, может ли указанная строка полностью нарисована на странице или нет, и сколько места потребуется.
Для этой цели также существует класс TextRenderer .
Вот пример:
Graphics gf = e.Graphics;
SizeF sf = gf.MeasureString("shdadj asdhkj shad adas dash asdl asasdassa",
new Font(new FontFamily("Arial"), 10F), 60);
gf.DrawString("shdadj asdhkj shad adas dash asdl asasdassa",
new Font(new FontFamily("Arial"), 10F), Brushes.Black,
new RectangleF(new PointF(4.0F,4.0F),sf),
StringFormat.GenericTypographic);
Здесь я указал максимум 60 пикселей в качестве ширины, тогда строка измерения даст мне размер, который потребуется для рисования этой строки. Теперь, если у вас уже есть размер, вы можете сравнить с возвращенным размером, чтобы увидеть, будет ли он правильно нарисован или усечен