Browse Source

Merge branch 'master' into feature/drawing-image

pull/3378/head
Steven Kirk 6 years ago
committed by GitHub
parent
commit
db76f0496c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      src/Skia/Avalonia.Skia/FontManagerImpl.cs
  2. 24
      tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs
  3. 18
      tests/Avalonia.Skia.UnitTests/FontManagerImplTests.cs

5
src/Skia/Avalonia.Skia/FontManagerImpl.cs

@ -89,12 +89,15 @@ namespace Avalonia.Skia
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;
}

24
tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs

@ -36,6 +36,30 @@ namespace Avalonia.Direct2D1.UnitTests.Media
}
}
[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()
{

18
tests/Avalonia.Skia.UnitTests/FontManagerImplTests.cs

@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Reflection;
using Avalonia.Media;
using Avalonia.Platform;
@ -29,6 +30,23 @@ namespace Avalonia.Skia.UnitTests
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()
{

Loading…
Cancel
Save