Browse Source

Uses the system's default font if a font can't be found

pull/2027/head
Benedikt Schroeder 8 years ago
parent
commit
ae08c00329
  1. 11
      src/Skia/Avalonia.Skia/TypefaceCache.cs

11
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;
@ -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;
}

Loading…
Cancel
Save