mono / libgdiplus

C-based implementation of the GDI+ API
http://www.mono-project.com/
MIT License
329 stars 171 forks source link

Measure string does not add any extra space at the end of strings #734

Open jhergens opened 2 years ago

jhergens commented 2 years ago

In the documentation of the MeasureString method it says it "includes a small amount of extra space before and after the string". This does not seem to be true for libgdiplus.

The following code:

using var font = new Font("Arial", 12, GraphicsUnit.Pixel);
using var backBuffer = new Bitmap(100, 20);
using (var graphics = Graphics.FromImage(backBuffer))
{
    graphics.Clear(Color.White);
    var size = graphics.MeasureString("Hello World", font);
    var destRect = new RectangleF(0, 0, size.Width, size.Height);
    graphics.FillRectangle(Brushes.Red, destRect);
    graphics.DrawString("Hello World", font, Brushes.Black, destRect);
}

Renders like this when building with Pango from main: text_linux There is a small amount of white space before the text, but none after.

On Windows with gdiplus there is white space before and after the text: text_win