Eger satır limiti var ve yazdıklarımız bu satırdan buyuk ise, kelime bütünlügünü bozmadan kelimeyi alt satıra taşıma ve devam etme, çok özensizce yazılmış üstünden kesinlikle geçilmeli, dinamik satır sayısı gibi :)
 
  string satir1 = "";
                string satir2 = "";
                string satir3 = "";
                string[] kelimeler = new string[1] { "" };
                kelimeler = MSipAciklama.Split(new string[1] { " " }, StringSplitOptions.RemoveEmptyEntries);
                if (kelimeler.Length > 0)
                {
                    int kacci = 0;
                    int limit = (int)g.MeasureString("SATIRIN UZUNLUGUNU BULMAK İÇİN KULLANDIGIM DUMMY METIN ", InvoiceFontBaslik).Width; //40 karakter gibide olabilir burası; //572point
                    int toplam = 0;
                    for (int i = 0; i < kelimeler.Length; i++)
                    {
                        if (toplam + (int)g.MeasureString(kelimeler[i] + " ", InvoiceFontBaslik).Width < limit * 1)
                        {
                            toplam += (int)g.MeasureString(kelimeler[i] + " ", InvoiceFontBaslik).Width;
                            satir1 += kelimeler[i] + " ";
                        }
                        else
                            if (toplam + (int)g.MeasureString(kelimeler[i] + " ", InvoiceFontBaslik).Width < limit * 2)
                            {
                                toplam += (int)g.MeasureString(kelimeler[i] + " ", InvoiceFontBaslik).Width;
                                satir2 += kelimeler[i] + " ";
                            }
                            else
                                if (toplam + (int)g.MeasureString(kelimeler[i] + " ", InvoiceFontBaslik).Width < limit * 3)
                                {
                                    toplam += (int)g.MeasureString(kelimeler[i] + " ", InvoiceFontBaslik).Width;
                                    satir3 += kelimeler[i] + " ";
                                }
                    }
                }
                if (satir1.Length > 0)
                {
                    FieldValue = satir1;
                    g.DrawString(FieldValue, InvoiceFont, BlackBrush, CurrentX + 120, CurrentY + 2);
                    CurrentY = CurrentY + InvoiceFontHeight;
                }
                if (satir2.Length > 0)
                {
                    FieldValue = satir2;
                    g.DrawString(FieldValue, InvoiceFont, BlackBrush, CurrentX + 120, CurrentY + 2);
                    CurrentY = CurrentY + InvoiceFontHeight;
                }
                if (satir3.Length > 0)
                {
                    FieldValue = satir3;
                    g.DrawString(FieldValue, InvoiceFont, BlackBrush, CurrentX + 120, CurrentY + 2);
                    CurrentY = CurrentY + InvoiceFontHeight;
                }