diff --git a/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs b/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs index 93c8b47d1d..0926df0744 100644 --- a/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs +++ b/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs @@ -19,18 +19,10 @@ namespace Avalonia.Media.Fonts { if (source.AbsolutePath.Contains(".ttf")) { - if (source.Scheme == "res") - { - FileName = source.AbsolutePath.Split('/').Last(); - Location = new Uri(source.OriginalString.Replace("/" + FileName, ""), UriKind.RelativeOrAbsolute); - } - else - { - var filePathWithoutExtension = source.AbsolutePath.Replace(".ttf", ""); - var fileNameWithoutExtension = filePathWithoutExtension.Split('.').Last(); - FileName = fileNameWithoutExtension + ".ttf"; - Location = new Uri(source.OriginalString.Replace("." + FileName, ""), UriKind.RelativeOrAbsolute); - } + var filePathWithoutExtension = source.AbsolutePath.Replace(".ttf", ""); + var fileNameWithoutExtension = filePathWithoutExtension.Split('.').Last(); + FileName = fileNameWithoutExtension + ".ttf"; + Location = new Uri(source.OriginalString.Replace("." + FileName, ""), UriKind.RelativeOrAbsolute); } else { @@ -96,12 +88,7 @@ namespace Avalonia.Media.Fonts { if (FileName != null) { - if (Location.Scheme == "resm") - { - return Location.AbsolutePath + "." + FileName; - } - - return Location.AbsolutePath + "/" + FileName; + return Location.AbsolutePath + "." + FileName; } return Location.AbsolutePath; diff --git a/src/Avalonia.Visuals/Media/Fonts/FontResourceLoader.cs b/src/Avalonia.Visuals/Media/Fonts/FontResourceLoader.cs index e8fad17289..7286f5ad16 100644 --- a/src/Avalonia.Visuals/Media/Fonts/FontResourceLoader.cs +++ b/src/Avalonia.Visuals/Media/Fonts/FontResourceLoader.cs @@ -58,7 +58,9 @@ namespace Avalonia.Media.Fonts { var assembly = GetAssembly(location); - var locationPath = GetLocationPath(location); + if (assembly == null) return Enumerable.Empty(); + + var locationPath = location.AbsolutePath; var matchingResources = assembly.Resources.Where(x => x.Contains(locationPath)); @@ -76,7 +78,9 @@ namespace Avalonia.Media.Fonts { var assembly = GetAssembly(location); - var compareTo = GetLocationPath(location) + "." + fileName.Split('*').First(); + if (assembly == null) return Enumerable.Empty(); + + var compareTo = location.AbsolutePath + "." + fileName.Split('*').First(); var matchingResources = assembly.Resources.Where(x => x.Contains(compareTo)); @@ -94,20 +98,6 @@ namespace Avalonia.Media.Fonts return new Uri("resm:" + path + "?assembly=" + assemblyName); } - /// - /// Translates a given to a that follows the resm scheme. - /// - /// - /// - private static string GetLocationPath(Uri uri) - { - if (uri.Scheme == "resm") return uri.AbsolutePath; - - var path = uri.AbsolutePath.Replace("/", "."); - - return path; - } - /// /// Extracts a from a given /// @@ -119,7 +109,7 @@ namespace Avalonia.Media.Fonts var parameters = ParseParameters(uri); - return parameters.TryGetValue("assembly", out var assemblyName) ? GetAssembly(assemblyName) : null; + return parameters.TryGetValue("assembly", out var assemblyName) ? GetAssembly(assemblyName) : _defaultAssembly; } ///