GDI + MeasureString () está recortando incorrectamente el texto

Estoy tratando de completar un código que puede diseñar el texto en la pantalla. El siguiente código de C # colocado en el controlador de eventos Paint de un Formulario de Windows de otro modo vacío es un ejemplo:

 string[] s = new string[] { "Sample text ", "to test", " this layout ", "algorithm" }; PointF[] pts = new PointF[s.Length]; PointF start = new PointF(10, 10); StringFormat f = new StringFormat(StringFormat.GenericTypographic); float x = start.X; float y = start.Y; for (int i = 0; i < pts.Length; i++) { pts[i] = new PointF(x, y); SizeF sz = e.Graphics.MeasureString(s[i], Font, pts[i], f); x += sz.Width; e.Graphics.DrawString(s[i], Font, Brushes.Black, pts[i]); } 

Funciona correctamente, excepto para recortar el espacio en blanco antes y después de cada fragmento de texto en la matriz s . Debería mostrarse así:

Texto de ejemplo para probar este algoritmo de diseño.

Pero en cambio se ve así:

Texto de muestra para probar este algoritmo de diseño

He confirmado que la propiedad f.Trimming está establecida en None . Habría adivinado que esto agregaría espacios en blanco al final y por debajo de la medida de las cuerdas, pero aún así lo recorta. ¿Alguna idea sobre cómo hacer que el método MeasureString incluya el espacio en blanco? El kerning de lo contrario se maneja perfectamente.

 StringFormat f = new StringFormat(StringFormat.GenericTypographic) { FormatFlags = StringFormatFlags.MeasureTrailingSpaces };