mono / libgdiplus

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

Rendering text with ellipsis does not work when StringFormatFlags.NoWrap is specified. #735

Open jhergens opened 2 years ago

jhergens commented 2 years ago

Rendering text with StringTrimming.EllipsisCharacter and StringFormatFlags.NoWrap does not render any ellipsis.

The following code:

using var font = new Font("Arial", 11f, GraphicsUnit.Pixel);
using var backBuffer = new Bitmap(100, 35);
using (var graphics = Graphics.FromImage(backBuffer))
using (var stringFormat = new StringFormat())
{
    graphics.Clear(Color.White);
    stringFormat.FormatFlags = StringFormatFlags.NoWrap;
    stringFormat.Trimming = StringTrimming.EllipsisCharacter;
    var bounds = new RectangleF(10, 10, 45, 16);
    graphics.FillRectangle(Brushes.Red, bounds);
    graphics.DrawString("Too long string", font, Brushes.Black, bounds, stringFormat);
}

Renders an image like this on Windows: text_win

But like this on Linux with Pango backend: text_linux