From 7b8f7dbfce7dd874fbe78e231e004dc9b7fb9c64 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Thu, 9 Mar 2023 15:42:55 +0100 Subject: [PATCH] Normalize family names to upper case --- src/Avalonia.Base/Media/FontManager.cs | 2 +- ...anagerImplTests.cs => FontManagerTests.cs} | 31 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) rename tests/Avalonia.Skia.UnitTests/Media/{FontManagerImplTests.cs => FontManagerTests.cs} (73%) diff --git a/src/Avalonia.Base/Media/FontManager.cs b/src/Avalonia.Base/Media/FontManager.cs index f785a7ed4e..cc9bc6f30a 100644 --- a/src/Avalonia.Base/Media/FontManager.cs +++ b/src/Avalonia.Base/Media/FontManager.cs @@ -141,7 +141,7 @@ namespace Avalonia.Media } } - return SystemFonts.TryGetGlyphTypeface(DefaultFontFamilyName.ToUpperInvariant(), typeface.Style, typeface.Weight, typeface.Stretch, out glyphTypeface); + return TryGetGlyphTypeface(new Typeface(DefaultFontFamilyName, typeface.Style, typeface.Weight, typeface.Stretch), out glyphTypeface); } /// diff --git a/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs b/tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs similarity index 73% rename from tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs rename to tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs index 859726e871..c8bc550c50 100644 --- a/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using Avalonia.Media; using Avalonia.UnitTests; using SkiaSharp; @@ -7,7 +6,7 @@ using Xunit; namespace Avalonia.Skia.UnitTests.Media { - public class FontManagerImplTests + public class FontManagerTests { private static string s_fontUri = "resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono"; @@ -87,5 +86,33 @@ namespace Avalonia.Skia.UnitTests.Media Assert.False(result); } } + + [Fact] + public void Should_Load_Embedded_Font_With_Wrong_CharacterCasing() + { + using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new FontManagerImpl()))) + { + var result = FontManager.Current.TryGetGlyphTypeface(new Typeface("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#noto mOnO"), out var glyphTypeface); + + Assert.True(result); + + Assert.Equal("Noto Mono", glyphTypeface.FamilyName); + } + } + + [Fact] + public void Should_Load_Embedded_DefaultFontFamily() + { + using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new FontManagerImpl()))) + { + AvaloniaLocator.CurrentMutable.BindToSelf(new FontManagerOptions { DefaultFamilyName = s_fontUri }); + + var result = FontManager.Current.TryGetGlyphTypeface(new Typeface(FontFamily.DefaultFontFamilyName), out var glyphTypeface); + + Assert.True(result); + + Assert.Equal("Noto Mono", glyphTypeface.FamilyName); + } + } } }