From ef2a47bc9573f3f94710b22477b93145e7b77407 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Tue, 7 Mar 2023 13:16:51 +0100 Subject: [PATCH] Only try to create embedded font collection for valid assets location --- src/Avalonia.Base/Media/FontManager.cs | 2 +- src/Avalonia.Themes.Simple/Accents/Base.xaml | 2 +- .../Media/FontManagerImplTests.cs | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Base/Media/FontManager.cs b/src/Avalonia.Base/Media/FontManager.cs index 595a2f3474..5890b90954 100644 --- a/src/Avalonia.Base/Media/FontManager.cs +++ b/src/Avalonia.Base/Media/FontManager.cs @@ -107,7 +107,7 @@ namespace Avalonia.Media source = new Uri(key.BaseUri, source); } - if (!_fontCollections.TryGetValue(source, out var fontCollection)) + if (!_fontCollections.TryGetValue(source, out var fontCollection) && (source.IsAbsoluteResm() || source.IsAvares())) { var embeddedFonts = new EmbeddedFontCollection(source, source); diff --git a/src/Avalonia.Themes.Simple/Accents/Base.xaml b/src/Avalonia.Themes.Simple/Accents/Base.xaml index 38b122d8b2..0640fe9a4a 100644 --- a/src/Avalonia.Themes.Simple/Accents/Base.xaml +++ b/src/Avalonia.Themes.Simple/Accents/Base.xaml @@ -76,7 +76,7 @@ - fonts://Inter#Inter, $Default + fonts:Inter#Inter, $Default #CC119EDA #99119EDA #66119EDA diff --git a/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs b/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs index 21c46b836d..859726e871 100644 --- a/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs @@ -76,5 +76,16 @@ namespace Avalonia.Skia.UnitTests.Media Assert.Throws(() => new Typeface("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Unknown").GlyphTypeface); } } + + [Fact] + public void Should_Return_False_For_Unregistered_FontCollection_Uri() + { + using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new FontManagerImpl()))) + { + var result = FontManager.Current.TryGetGlyphTypeface(new Typeface("fonts:invalid#Something"), out _); + + Assert.False(result); + } + } } }