Browse Source

Merge branch 'master' into allow-animation-of-structs-without-typeConverter

pull/2040/head
ahopper 7 years ago
committed by GitHub
parent
commit
a67aa192e3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 39
      src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs
  2. 4
      src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs

39
src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs

@ -17,7 +17,10 @@ namespace Avalonia.Media.Fonts
/// <param name="source"></param>
public FontFamilyKey(Uri source)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (source == null)
{
throw new ArgumentNullException(nameof(source));
}
if (source.AbsolutePath.Contains(".ttf"))
{
@ -28,7 +31,17 @@ namespace Avalonia.Media.Fonts
}
else
{
Location = source;
if (source.AbsolutePath.Contains(".otf"))
{
var filePathWithoutExtension = source.AbsolutePath.Replace(".otf", string.Empty);
var fileNameWithoutExtension = filePathWithoutExtension.Split('.').Last();
FileName = fileNameWithoutExtension + ".otf";
Location = new Uri(source.OriginalString.Replace("." + FileName, string.Empty), UriKind.RelativeOrAbsolute);
}
else
{
Location = source;
}
}
}
@ -77,11 +90,20 @@ namespace Avalonia.Media.Fonts
/// </returns>
public override bool Equals(object obj)
{
if (!(obj is FontFamilyKey other)) return false;
if (!(obj is FontFamilyKey other))
{
return false;
}
if (Location != other.Location) return false;
if (Location != other.Location)
{
return false;
}
if (FileName != other.FileName) return false;
if (FileName != other.FileName)
{
return false;
}
return true;
}
@ -94,7 +116,10 @@ namespace Avalonia.Media.Fonts
/// </returns>
public override string ToString()
{
if (FileName == null) return Location.PathAndQuery;
if (FileName == null)
{
return Location.PathAndQuery;
}
var builder = new UriBuilder(Location);
@ -103,4 +128,4 @@ namespace Avalonia.Media.Fonts
return builder.ToString();
}
}
}
}

4
src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs

@ -34,7 +34,7 @@ namespace Avalonia.Media.Fonts
{
var availableAssets = s_assetLoader.GetAssets(location);
var matchingAssets = availableAssets.Where(x => x.absolutePath.EndsWith(".ttf"));
var matchingAssets = availableAssets.Where(x => x.absolutePath.EndsWith(".ttf") || x.absolutePath.EndsWith(".otf"));
return matchingAssets.Select(x => GetAssetUri(x.absolutePath, x.assembly));
}
@ -53,7 +53,7 @@ namespace Avalonia.Media.Fonts
var compareTo = location.AbsolutePath + "." + fileName.Split('*').First();
var matchingResources =
availableResources.Where(x => x.absolutePath.Contains(compareTo) && x.absolutePath.EndsWith(".ttf"));
availableResources.Where(x => x.absolutePath.Contains(compareTo) && (x.absolutePath.EndsWith(".ttf") || x.absolutePath.EndsWith(".otf")));
return matchingResources.Select(x => GetAssetUri(x.absolutePath, x.assembly));
}

Loading…
Cancel
Save