|
|
|
@ -17,7 +17,7 @@ namespace Avalonia.Skia |
|
|
|
{ |
|
|
|
private bool _isDisposed; |
|
|
|
private readonly SKTypeface _typeface; |
|
|
|
private readonly NameTable _nameTable; |
|
|
|
private readonly NameTable? _nameTable; |
|
|
|
private readonly OS2Table? _os2Table; |
|
|
|
private readonly HorizontalHeadTable? _hhTable; |
|
|
|
private IReadOnlyList<OpenTypeTag>? _supportedFeatures; |
|
|
|
@ -100,18 +100,26 @@ namespace Avalonia.Skia |
|
|
|
|
|
|
|
_nameTable = NameTable.Load(this); |
|
|
|
|
|
|
|
TypographicFamilyName = _nameTable.GetNameById((ushort)CultureInfo.InvariantCulture.LCID, KnownNameIds.TypographicFamilyName); |
|
|
|
//Rely on Skia if no name table is present
|
|
|
|
FamilyName = _nameTable?.FontFamilyName((ushort)CultureInfo.InvariantCulture.LCID) ?? typeface.FamilyName; |
|
|
|
|
|
|
|
FamilyName = _nameTable.FontFamilyName((ushort)CultureInfo.InvariantCulture.LCID); |
|
|
|
TypographicFamilyName = _nameTable?.GetNameById((ushort)CultureInfo.InvariantCulture.LCID, KnownNameIds.TypographicFamilyName) ?? FamilyName; |
|
|
|
|
|
|
|
var familyNames = new Dictionary<ushort, string>(_nameTable.Languages.Count); |
|
|
|
if(_nameTable != null) |
|
|
|
{ |
|
|
|
var familyNames = new Dictionary<ushort, string>(_nameTable.Languages.Count); |
|
|
|
|
|
|
|
foreach (var language in _nameTable.Languages) |
|
|
|
{ |
|
|
|
familyNames.Add(language, _nameTable.FontFamilyName(language)); |
|
|
|
} |
|
|
|
|
|
|
|
foreach (var language in _nameTable.Languages) |
|
|
|
FamilyNames = familyNames; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
familyNames.Add(language, _nameTable.FontFamilyName(language)); |
|
|
|
FamilyNames = new Dictionary<ushort, string> { { (ushort)CultureInfo.InvariantCulture.LCID, FamilyName } }; |
|
|
|
} |
|
|
|
|
|
|
|
FamilyNames = familyNames; |
|
|
|
} |
|
|
|
|
|
|
|
public string TypographicFamilyName { get; } |
|
|
|
|