/* * Copyright (c) 2026, Callum Law * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::CSS { class CSSFontFeatureValuesRule final : public CSSRule { WEB_PLATFORM_OBJECT(CSSFontFeatureValuesRule, CSSRule); GC_DECLARE_ALLOCATOR(CSSFontFeatureValuesRule); public: static GC::Ref create(JS::Realm&, Vector font_families); static bool is_font_feature_value_type_at_keyword(FlyString const&); FlyString font_family() const; void set_font_family(FlyString const&); GC::Ref annotation() const { return m_annotation; } GC::Ref ornaments() const { return m_ornaments; } GC::Ref stylistic() const { return m_stylistic; } GC::Ref swash() const { return m_swash; } GC::Ref character_variant() const { return m_character_variant; } GC::Ref styleset() const { return m_styleset; } GC::Ref historical_forms() const { return m_historical_forms; } virtual String serialized() const override; private: CSSFontFeatureValuesRule(JS::Realm&, Vector font_families); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; Vector m_font_families; GC::Ref m_annotation; GC::Ref m_ornaments; GC::Ref m_stylistic; GC::Ref m_swash; GC::Ref m_character_variant; GC::Ref m_styleset; GC::Ref m_historical_forms; }; }