Browse Source
Merge branch 'master' into feature/drawing-image
pull/3378/head
Steven Kirk
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
46 additions and
1 deletions
-
src/Skia/Avalonia.Skia/FontManagerImpl.cs
-
tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs
-
tests/Avalonia.Skia.UnitTests/FontManagerImplTests.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; |
|
|
|
} |
|
|
|
|
|
|
|
@ -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() |
|
|
|
{ |
|
|
|
|
|
|
|
@ -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() |
|
|
|
{ |
|
|
|
|