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> /// </summary>
internal static class TypefaceCache 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>>(); static readonly Dictionary<string, Dictionary<FontKey, SKTypeface>> Cache = new Dictionary<string, Dictionary<FontKey, SKTypeface>>();
struct FontKey struct FontKey
@ -49,6 +49,13 @@ namespace Avalonia.Skia
// Equals and GetHashCode ommitted // 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) private static SKTypeface GetTypeface(string name, FontKey key)
{ {
var familyKey = name; var familyKey = name;
@ -62,7 +69,7 @@ namespace Avalonia.Skia
{ {
typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant); typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant);
if (typeface.FamilyName != name) if (typeface?.FamilyName != name)
{ {
typeface = Default; typeface = Default;
} }

Loading…
Cancel
Save