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)
{
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
{

Loading…
Cancel
Save