Browse Source

Use SKFontManager for typeface matching.

Handle null typeface because of Android.
pull/5299/head
José Pedro 6 years ago
parent
commit
d34a2c6721
No known key found for this signature in database GPG Key ID: B8247B9301707B83
  1. 11
      src/Skia/Avalonia.Skia/FontManagerImpl.cs

11
src/Skia/Avalonia.Skia/FontManagerImpl.cs

@ -109,20 +109,23 @@ namespace Avalonia.Skia
if (typeface.FontFamily.Key == null) if (typeface.FontFamily.Key == null)
{ {
var defaultName = SKTypeface.Default.FamilyName; var defaultName = SKTypeface.Default.FamilyName;
var fontStyle = new SKFontStyle((SKFontStyleWeight)typeface.Weight, SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style);
foreach (var familyName in typeface.FontFamily.FamilyNames) foreach (var familyName in typeface.FontFamily.FamilyNames)
{ {
skTypeface = SKTypeface.FromFamilyName(familyName, (SKFontStyleWeight)typeface.Weight, skTypeface = _skFontManager.MatchFamily(familyName, fontStyle);
SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style);
if (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal) && if (skTypeface is null
defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal)) || (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal)
&& defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal)))
{ {
continue; continue;
} }
break; break;
} }
skTypeface ??= _skFontManager.MatchTypeface(SKTypeface.Default, fontStyle);
} }
else else
{ {

Loading…
Cancel
Save