Browse Source

Merge branch 'master' into feature/custom-cursors

pull/4887/head
Dariusz Komosiński 6 years ago
committed by GitHub
parent
commit
70a03f2cec
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/Skia/Avalonia.Skia/SKTypefaceCollection.cs
  2. 4
      tests/Avalonia.Skia.UnitTests/Media/CustomFontManagerImpl.cs
  3. 28
      tests/Avalonia.Skia.UnitTests/Media/SKTypefaceCollectionCacheTests.cs

6
src/Skia/Avalonia.Skia/SKTypefaceCollection.cs

@ -32,7 +32,7 @@ namespace Avalonia.Skia
weight -= weight % 100; // make sure we start at a full weight
for (var i = (int)key.Style; i < 2; i++)
for (var i = 0; i < 2; i++)
{
// only try 2 font weights in each direction
for (var j = 0; j < 200; j += 100)
@ -57,8 +57,8 @@ namespace Avalonia.Skia
}
}
//Nothing was found so we use the first typeface we can get.
return typefaces.Values.FirstOrDefault();
//Nothing was found so we try to get a regular typeface.
return typefaces.TryGetValue(new Typeface(key.FontFamily), out typeface) ? typeface : null;
}
}
}

4
tests/Avalonia.Skia.UnitTests/Media/CustomFontManagerImpl.cs

@ -48,7 +48,7 @@ namespace Avalonia.Skia.UnitTests.Media
continue;
}
typeface = new Typeface(customTypeface.FontFamily.Name, fontStyle, fontWeight);
typeface = new Typeface(customTypeface.FontFamily, fontStyle, fontWeight);
return true;
}
@ -83,7 +83,7 @@ namespace Avalonia.Skia.UnitTests.Media
case "Noto Mono":
{
var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_defaultTypeface.FontFamily);
skTypeface = typefaceCollection.Get(typeface);
skTypeface = typefaceCollection.Get(_defaultTypeface);
break;
}
default:

28
tests/Avalonia.Skia.UnitTests/Media/SKTypefaceCollectionCacheTests.cs

@ -7,25 +7,33 @@ namespace Avalonia.Skia.UnitTests.Media
public class SKTypefaceCollectionCacheTests
{
[Fact]
public void Should_Load_Typefaces_From_Invalid_Name()
public void Should_Get_Near_Matching_Typeface()
{
using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
{
var notoMono =
new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono");
var colorEmoji =
new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Twitter Color Emoji");
var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono);
var typeface = new Typeface("ABC", FontStyle.Italic, FontWeight.Bold);
Assert.Equal("Noto Mono", notoMonoCollection.Get(typeface).FamilyName);
var notoColorEmojiCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(colorEmoji);
Assert.Equal("Noto Mono",
notoMonoCollection.Get(new Typeface(notoMono, weight: FontWeight.Bold)).FamilyName);
}
}
[Fact]
public void Should_Get_Null_For_Invalid_FamilyName()
{
using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
{
var notoMono =
new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono");
var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono);
Assert.Equal("Twitter Color Emoji", notoColorEmojiCollection.Get(typeface).FamilyName);
var typeface = notoMonoCollection.Get(new Typeface("ABC"));
Assert.Null(typeface);
}
}
}

Loading…
Cancel
Save