Browse Source

Merge pull request #2027 from Gillibald/fixes/DefaultSKTypeface

Fixes default font handling when a font can't be found
pull/2037/head
danwalmsley 8 years ago
committed by GitHub
parent
commit
ca97445931
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      src/Skia/Avalonia.Skia/TypefaceCache.cs

17
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;
@ -60,12 +67,8 @@ namespace Avalonia.Skia
if (!entry.TryGetValue(key, out var typeface)) if (!entry.TryGetValue(key, out var typeface))
{ {
typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant); typeface = SKTypeface.FromFamilyName(familyKey, key.Weight, SKFontStyleWidth.Normal, key.Slant)
?? Default;
if (typeface.FamilyName != name)
{
typeface = Default;
}
entry[key] = typeface; entry[key] = typeface;
} }

Loading…
Cancel
Save