From d34a2c6721ad406afa500ee7f47d01da99288ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro?= Date: Fri, 15 Jan 2021 11:08:28 +0000 Subject: [PATCH] Use SKFontManager for typeface matching. Handle null typeface because of Android. --- src/Skia/Avalonia.Skia/FontManagerImpl.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Skia/Avalonia.Skia/FontManagerImpl.cs b/src/Skia/Avalonia.Skia/FontManagerImpl.cs index 62ec39346a..178ee8c544 100644 --- a/src/Skia/Avalonia.Skia/FontManagerImpl.cs +++ b/src/Skia/Avalonia.Skia/FontManagerImpl.cs @@ -109,20 +109,23 @@ namespace Avalonia.Skia if (typeface.FontFamily.Key == null) { var defaultName = SKTypeface.Default.FamilyName; + var fontStyle = new SKFontStyle((SKFontStyleWeight)typeface.Weight, SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style); foreach (var familyName in typeface.FontFamily.FamilyNames) { - skTypeface = SKTypeface.FromFamilyName(familyName, (SKFontStyleWeight)typeface.Weight, - SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style); + skTypeface = _skFontManager.MatchFamily(familyName, fontStyle); - if (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal) && - defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal)) + if (skTypeface is null + || (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal) + && defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal))) { continue; } break; } + + skTypeface ??= _skFontManager.MatchTypeface(SKTypeface.Default, fontStyle); } else {