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); }
public static float BelowBaseline(this SKPaint paint, PaintingOptions options) => MeasureFont(paint, options).BelowBaseline;
public static float CharacterWidth(this SKPaint paint, PaintingOptions options) => MeasureFont(paint, options).CharacterWidth;
public static float FontHeight(this SKPaint paint, PaintingOptions options) => MeasureFont(paint, options).FontHeight;