Кажется, что это работает, чтобы добавить текст в GraphicsPath и получить размер от этого:
public static SizeF GetSize(String text, Font font, StringFormat format)
{
GraphicsPath path = new GraphicsPath();
path.AddString(text, font.FontFamily, (int)font.Style, font.SizeInPoints, new PointF(0, 0), format);
return path.GetBounds().Size;
}