Browse Source

Minor fixes; Removed res scheme support

repros/custom-fonts-pr
Benedikt Schroeder 8 years ago
parent
commit
9cc53eb693
  1. 23
      src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs
  2. 24
      src/Avalonia.Visuals/Media/Fonts/FontResourceLoader.cs

23
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;

24
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<FontResource>();
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<FontResource>();
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);
}
/// <summary>
/// Translates a given <see cref="Uri"/> to a <see cref="Uri"/> that follows the resm scheme.
/// </summary>
/// <param name="uri"></param>
/// <returns></returns>
private static string GetLocationPath(Uri uri)
{
if (uri.Scheme == "resm") return uri.AbsolutePath;
var path = uri.AbsolutePath.Replace("/", ".");
return path;
}
/// <summary>
/// Extracts a <see cref="AssemblyDescriptor"/> from a given <see cref="Uri"/>
/// </summary>
@ -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;
}
/// <summary>

Loading…
Cancel
Save