RichTextKit icon indicating copy to clipboard operation
RichTextKit copied to clipboard

Underline and StrikeThrough incorrect when given font size is very smaller

Open mzh3511 opened this issue 2 years ago • 2 comments

Given a smaller font size, when painting a TextBlock, the underline and strike-through line are very thick

Due to business logic requirements, my calculated font size is very smaller, but needs to zoom in and be displayed by other modules, the following is my demo code and the screenshot

        private void skglControl1_PaintSurface(object sender, SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs e)
        {
            var surface = e.Surface;
            var canvas = surface.Canvas;

            canvas.Clear(SKColors.White);
            canvas.Scale(20, 20);

            var textBlock = new TextBlock();
            textBlock.AddText("Hello, world", new Style()
                                              {
                                                  FontFamily = "Arial",
                                                  TextColor = SKColors.Black,
                                                  FontSize = 3,
                                                  StrikeThrough = StrikeThroughStyle.Solid,
                                                  Underline = UnderlineStyle.Solid
                                              });
            textBlock.Paint(canvas, new SKPoint(1, 5));
        }

image

I found this is because of 3 if statements in FontRun.cs image

Is this a valid issue? can I create a pull request to remove the 3 if statements? thanks

A real business logic requirement: The user requires to export the diagram to pdf by Skia, the diagram is very very big, they want to draw it on the A4 paper size pdf file, then the user zoom in at a large scale to see the pdf file clearly, and they saw that the underline is very very thick

mzh3511 avatar Jun 21 '23 08:06 mzh3511

Thanks for reporting. Not sure actually. I know those if statements were added to fix underlines and strike throughs not appearing when too thin. I think the logic needs to be a bit smarter, but not sure what off hand.

toptensoftware avatar Jun 26 '23 05:06 toptensoftware

Perhaps a combination with the scale factor when drawing?

charlenni avatar Jun 26 '23 08:06 charlenni