Skip to content

Commit

Permalink
Merge branch 'master' into feature/drawing-image
Browse files Browse the repository at this point in the history
  • Loading branch information
grokys committed Dec 20, 2019
2 parents 580697b + 4340831 commit db76f04
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/Skia/Avalonia.Skia/FontManagerImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,15 @@ public IGlyphTypefaceImpl CreateGlyphTypeface(Typeface typeface)

if (typeface.FontFamily.Key == null)
{
var defaultName = SKTypeface.Default.FamilyName;

foreach (var familyName in typeface.FontFamily.FamilyNames)
{
skTypeface = SKTypeface.FromFamilyName(familyName, (SKFontStyleWeight)typeface.Weight,
SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style);

if (skTypeface == SKTypeface.Default)
if (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal) &&
defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal))
{
continue;
}
Expand Down
24 changes: 24 additions & 0 deletions tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,30 @@ public void Should_Create_Typeface_From_Fallback()
}
}

[Fact]
public void Should_Create_Typeface_From_Fallback_Bold()
{
using (AvaloniaLocator.EnterScope())
{
Direct2D1Platform.Initialize();

var fontManager = new FontManagerImpl();

var defaultName = fontManager.GetDefaultFontFamilyName();

var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
new Typeface(new FontFamily("A, B, Arial"), FontWeight.Bold));

var font = glyphTypeface.DWFont;

Assert.Equal("Arial", font.FontFamily.FamilyNames.GetString(0));

Assert.Equal(SharpDX.DirectWrite.FontWeight.Bold, font.Weight);

Assert.Equal(SharpDX.DirectWrite.FontStyle.Normal, font.Style);
}
}

[Fact]
public void Should_Create_Typeface_For_Unknown_Font()
{
Expand Down
18 changes: 18 additions & 0 deletions tests/Avalonia.Skia.UnitTests/FontManagerImplTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Reflection;
using Avalonia.Media;
using Avalonia.Platform;
Expand Down Expand Up @@ -29,6 +30,23 @@ public void Should_Create_Typeface_From_Fallback()
Assert.Equal(SKTypeface.Default.FontSlant, skTypeface.FontSlant);
}

[Fact]
public void Should_Create_Typeface_From_Fallback_Bold()
{
var fontManager = new FontManagerImpl();

//we need to have a valid font name different from the default one
string fontName = fontManager.GetInstalledFontFamilyNames().First();

var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
new Typeface(new FontFamily($"A, B, {fontName}"), FontWeight.Bold));

var skTypeface = glyphTypeface.Typeface;

Assert.Equal(fontName, skTypeface.FamilyName);
Assert.Equal(SKFontStyle.Bold.Weight, skTypeface.FontWeight);
}

[Fact]
public void Should_Create_Typeface_For_Unknown_Font()
{
Expand Down

0 comments on commit db76f04

Please sign in to comment.