|
|
|
@ -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; |
|
|
|
@ -62,7 +69,7 @@ namespace Avalonia.Skia |
|
|
|
{ |
|
|
|
typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant); |
|
|
|
|
|
|
|
if (typeface.FamilyName != name) |
|
|
|
if (typeface?.FamilyName != name) |
|
|
|
{ |
|
|
|
typeface = Default; |
|
|
|
} |
|
|
|
|