Browse Source

Merge pull request #2027 from Gillibald/fixes/DefaultSKTypeface

Fixes default font handling when a font can't be found
danwalmsley 7 years ago
parent
commit
ca97445931
1 changed files with 10 additions and 7 deletions
  1. 10 7
      src/Skia/Avalonia.Skia/TypefaceCache.cs

+ 10 - 7
src/Skia/Avalonia.Skia/TypefaceCache.cs

@@ -12,7 +12,7 @@ namespace Avalonia.Skia
     /// </summary>
     internal static class TypefaceCache
     {
-        public static SKTypeface Default = SKTypeface.FromFamilyName(FontFamily.Default.Name);
+        public static SKTypeface Default = CreateDefaultTypeface();
         static readonly Dictionary<string, Dictionary<FontKey, SKTypeface>> Cache = new Dictionary<string, Dictionary<FontKey, SKTypeface>>();
 
         struct FontKey
@@ -49,6 +49,13 @@ namespace Avalonia.Skia
             // Equals and GetHashCode ommitted
         }
 
+        private static SKTypeface CreateDefaultTypeface()
+        {
+            var defaultTypeface = SKTypeface.FromFamilyName(FontFamily.Default.Name) ?? SKTypeface.FromFamilyName(null);
+
+            return defaultTypeface;
+        }
+
         private static SKTypeface GetTypeface(string name, FontKey key)
         {
             var familyKey = name;
@@ -60,12 +67,8 @@ namespace Avalonia.Skia
 
             if (!entry.TryGetValue(key, out var typeface))
             {
-                typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant);
-
-                if (typeface.FamilyName != name)
-                {
-                    typeface = Default;
-                }
+                typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant)
+                           ?? Default;
 
                 entry[key] = typeface;
             }