CssFontFamilyProperty
Information:
https://developer.mozilla.org/en-US/docs/Web/CSS/font-family
using AngleSharp.Css;
using AngleSharp.Extensions;
using System.Collections.Generic;
namespace AngleSharp.Dom.Css
{
internal sealed class CssFontFamilyProperty : CssProperty, ICssFontFamilyProperty, ICssProperty
{
private enum SystemFonts
{
Serif,
SansSerif,
Monospace,
Cursive,
Fantasy
}
internal static readonly string[] Default = new string[1] {
"Times New Roman"
};
internal static readonly IValueConverter<string[]> Converter = Map.DefaultFontFamilies.ToConverter().Or(Converters.StringConverter).Or(Converters.IdentifierConverter.Many(1, 2147483647).To((string[] names) => string.Join(" ", names)))
.FromList();
private readonly List<string> _families;
public IEnumerable<string> Families => _families;
internal CssFontFamilyProperty(CssStyleDeclaration rule)
: base(PropertyNames.FontFamily, rule, PropertyFlags.Inherited)
{
_families = new List<string>();
Reset();
}
private void SetFamilies(IEnumerable<string> families)
{
_families.Clear();
_families.AddRange(families);
}
internal override void Reset()
{
_families.Clear();
_families.AddRange(Default);
}
protected override bool IsValid(ICssValue value)
{
return Converter.TryConvert(value, SetFamilies);
}
}
}