Browse Source

Relax typface resolution

pull/7872/head
Benedikt Stebner 4 years ago
parent
commit
9eff7810f8
  1. 4
      src/Skia/Avalonia.Skia/FontManagerImpl.cs
  2. 23
      src/Skia/Avalonia.Skia/SKTypefaceCollection.cs

4
src/Skia/Avalonia.Skia/FontManagerImpl.cs

@ -122,9 +122,7 @@ namespace Avalonia.Skia
skTypeface = _skFontManager.MatchFamily(familyName, fontStyle);
if (skTypeface is null
|| (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal)
&& defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal)))
if (skTypeface is null || defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal))
{
continue;
}

23
src/Skia/Avalonia.Skia/SKTypefaceCollection.cs

@ -59,15 +59,30 @@ namespace Avalonia.Skia
return typeface;
}
//Nothing was found so we try some regular cases.
if (TryFindStretchFallback(key, out typeface))
{
return typeface;
}
//Nothing was found so we try some regular typeface.
if (_typefaces.TryGetValue(new Typeface(key.FontFamily), out typeface))
{
return typeface;
}
return _typefaces.TryGetValue(new Typeface(key.FontFamily, FontStyle.Italic), out typeface) ?
typeface :
null;
SKTypeface skTypeface = null;
foreach(var pair in _typefaces)
{
skTypeface = pair.Value;
if (skTypeface.FamilyName.Contains(key.FontFamily.Name))
{
return skTypeface;
}
}
return skTypeface;
}
private bool TryFindStretchFallback(Typeface key, out SKTypeface typeface)

Loading…
Cancel
Save