static SkiaFontInfo GetFontInfo(Font f)
        {
            var fi = f.Tag as SkiaFontInfo;

            if (fi == null)
            {
                var paint = new SKPaint();

                var name = "Helvetica";
                if (f.FontFamily == "Monospace")
                {
                    name = "Courier";
                }
                else if (f.FontFamily == "DBLCDTempBlack")
                {
#if __MACOS__
                    name = "Courier-Bold";
#else
                    name = f.FontFamily;
#endif
                }

                var tf = SKTypeface.FromFamilyName(name, f.IsBold ? SKTypefaceStyle.Bold : SKTypefaceStyle.Normal);
                fi = new SkiaFontInfo {
                    Typeface = tf,
                };
                ApplyFontToPaint(f, fi, paint);
                fi.FontMetrics = new SkiaFontMetrics(paint);
                f.Tag          = fi;
            }
            return(fi);
        }
        static void ApplyFontToPaint(Font f, SkiaFontInfo fi, SKPaint p)
        {
            p.Typeface = fi.Typeface;
            p.TextSize = f.Size;

            if (fi.FontMetrics == null)
            {
                fi.FontMetrics = new SkiaFontMetrics(p);
            }
        }