Esempio n. 1
0
        public static FontMeasurement MeasureFont(this SKPaint paint, PaintingOptions options)
        {
            paint.GetFontMetrics(out var metrics);

            var measurement = new FontMeasurement();

            if (options.AverageCharWidth)
            {
                measurement.CharacterWidth = metrics.AverageCharacterWidth;
            }
            else
            {
                measurement.CharacterWidth = metrics.MaxCharacterWidth;
            }

            if (options.RecomendedFontHeight)
            {
                measurement.FontHeight    = metrics.Descent - metrics.Ascent;
                measurement.AboveBaseline = -metrics.Ascent;
                measurement.BelowBaseline = metrics.Descent;
            }
            else
            {
                measurement.FontHeight    = metrics.Bottom - metrics.Top;
                measurement.AboveBaseline = -metrics.Top;
                measurement.BelowBaseline = metrics.Bottom;
            }

            if (options.AboveBaselineOnly)
            {
                measurement.FontHeight    = measurement.AboveBaseline;
                measurement.BelowBaseline = 0;
            }


            Debug.Trace(@class, nameof(MeasureFont), "TextSize={0} => {1}", paint.TextSize, measurement);

            return(measurement);
        }
Esempio n. 2
0
 public static float BelowBaseline(this SKPaint paint, PaintingOptions options)
 => MeasureFont(paint, options).BelowBaseline;
Esempio n. 3
0
 public static float CharacterWidth(this SKPaint paint, PaintingOptions options)
 => MeasureFont(paint, options).CharacterWidth;
Esempio n. 4
0
 public static float FontHeight(this SKPaint paint, PaintingOptions options)
 => MeasureFont(paint, options).FontHeight;