/* * Copyright (c) 2022-2024, Sam Atkins * Copyright (c) 2023, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Web::CSS { class ParsedFontFace { public: struct Source { Variant local_or_url; // FIXME: Do we need to keep this around, or is it only needed to discard unwanted formats during parsing? Optional format; }; ParsedFontFace(FlyString font_family, Optional weight, Optional slope, Optional width, Vector sources, Vector unicode_ranges, Optional ascent_override, Optional descent_override, Optional line_gap_override, FontDisplay font_display, Optional font_named_instance, Optional font_language_override, Optional> font_feature_settings, Optional> font_variation_settings); ~ParsedFontFace() = default; Optional ascent_override() const { return m_ascent_override; } Optional descent_override() const { return m_descent_override; } FontDisplay font_display() const { return m_font_display; } FlyString const& font_family() const { return m_font_family; } Optional> font_feature_settings() const { return m_font_feature_settings; } Optional font_language_override() const { return m_font_language_override; } Optional font_named_instance() const { return m_font_named_instance; } Optional> font_variation_settings() const { return m_font_variation_settings; } Optional slope() const { return m_slope; } Optional weight() const { return m_weight; } Optional width() const { return m_width; } Optional line_gap_override() const { return m_line_gap_override; } Vector const& sources() const { return m_sources; } Vector const& unicode_ranges() const { return m_unicode_ranges; } private: FlyString m_font_family; Optional m_font_named_instance; Optional m_weight; Optional m_slope; Optional m_width; Vector m_sources; Vector m_unicode_ranges; Optional m_ascent_override; Optional m_descent_override; Optional m_line_gap_override; FontDisplay m_font_display; Optional m_font_language_override; Optional> m_font_feature_settings; Optional> m_font_variation_settings; }; }