次のコードを使って印刷しようとしても、ページ間の英単語のワードラップがうまくいきません。
どうしたらいいでしょうか?
private int printingPosition;
private void printDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
    printingPosition = 0;
}
private int GetLengthForPrint(string text, int start, Font font, System.Drawing.Printing.PrintPageEventArgs e, StringFormat format)
{
    int min = 0, max = text.Length - start;
    float targetHeight = (float)e.MarginBounds.Height;
    if (!(e.Graphics.MeasureString(text.Substring(start, max), font, e.MarginBounds.Width, format).Height > targetHeight))
        return max;
    while (min + 1 < max)
        if (e.Graphics.MeasureString(text.Substring(start, (min + max) / 2), font, e.MarginBounds.Width, format).Height > targetHeight)
            max = (min + max) / 2;
        else
            min = (min + max) / 2;
    return min;
}
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    StringFormat format = StringFormat.GenericTypographic;
    int length = GetLengthForPrint(textMain.Text, printingPosition, textMain.Font, e, format);
    e.Graphics.DrawString(textMain.Text.Substring(printingPosition, length), textMain.Font, Brushes.Black, e.MarginBounds, format);
    printingPosition += length;
    if (printingPosition >= textMain.Text.Length)
        e.HasMorePages = false;
    else
        e.HasMorePages = true;
}