Browse Source

Prevent infinite loop if the default FontFamily lookup fails

pull/11775/head
Benedikt Stebner 3 years ago
parent
commit
dd764e8c43
  1. 7
      src/Avalonia.Base/Media/FontManager.cs
  2. 16
      tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs

7
src/Avalonia.Base/Media/FontManager.cs

@ -151,8 +151,13 @@ namespace Avalonia.Media
}
}
if(typeface.FontFamily == DefaultFontFamily)
{
return false;
}
//Nothing was found so use the default
return TryGetGlyphTypeface(new Typeface(DefaultFontFamily, typeface.Style, typeface.Weight, typeface.Stretch), out glyphTypeface);
return TryGetGlyphTypeface(new Typeface(FontFamily.DefaultFontFamilyName, typeface.Style, typeface.Weight, typeface.Stretch), out glyphTypeface);
}
/// <summary>

16
tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs

@ -123,5 +123,21 @@ namespace Avalonia.Skia.UnitTests.Media
}
}
}
[Fact]
public void Should_Return_False_For_Invalid_DefaultFontFamily()
{
using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new FontManagerImpl())))
{
using (AvaloniaLocator.EnterScope())
{
AvaloniaLocator.CurrentMutable.BindToSelf(new FontManagerOptions { DefaultFamilyName = "ABC" });
var result = FontManager.Current.TryGetGlyphTypeface(Typeface.Default, out _);
Assert.False(result);
}
}
}
}
}

Loading…
Cancel
Save