Browse Source

Relax typface resolution

pull/7872/head
Benedikt Stebner 5 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); skTypeface = _skFontManager.MatchFamily(familyName, fontStyle);
if (skTypeface is null if (skTypeface is null || defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal))
|| (!skTypeface.FamilyName.Equals(familyName, StringComparison.Ordinal)
&& defaultName.Equals(skTypeface.FamilyName, StringComparison.Ordinal)))
{ {
continue; continue;
} }

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

@ -59,15 +59,30 @@ namespace Avalonia.Skia
return typeface; 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)) if (_typefaces.TryGetValue(new Typeface(key.FontFamily), out typeface))
{ {
return typeface; return typeface;
} }
return _typefaces.TryGetValue(new Typeface(key.FontFamily, FontStyle.Italic), out typeface) ? SKTypeface skTypeface = null;
typeface :
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) private bool TryFindStretchFallback(Typeface key, out SKTypeface typeface)

Loading…
Cancel
Save