ParsedFontFace.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (c) 2022-2024, Sam Atkins <sam@ladybird.org>
  3. * Copyright (c) 2023, Andreas Kling <kling@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <AK/FlyString.h>
  9. #include <LibGfx/Font/UnicodeRange.h>
  10. #include <LibURL/URL.h>
  11. #include <LibWeb/CSS/Enums.h>
  12. #include <LibWeb/CSS/Percentage.h>
  13. namespace Web::CSS {
  14. class ParsedFontFace {
  15. public:
  16. struct Source {
  17. Variant<String, URL::URL> local_or_url;
  18. // FIXME: Do we need to keep this around, or is it only needed to discard unwanted formats during parsing?
  19. Optional<FlyString> format;
  20. };
  21. ParsedFontFace(FlyString font_family, Optional<int> weight, Optional<int> slope, Optional<int> width, Vector<Source> sources, Vector<Gfx::UnicodeRange> unicode_ranges, Optional<Percentage> ascent_override, Optional<Percentage> descent_override, Optional<Percentage> line_gap_override, FontDisplay font_display, Optional<FlyString> font_named_instance, Optional<FlyString> font_language_override);
  22. ~ParsedFontFace() = default;
  23. Optional<Percentage> ascent_override() const { return m_ascent_override; }
  24. Optional<Percentage> descent_override() const { return m_descent_override; }
  25. FontDisplay font_display() const { return m_font_display; }
  26. FlyString font_family() const { return m_font_family; }
  27. Optional<FlyString> font_language_override() const { return m_font_language_override; }
  28. Optional<FlyString> font_named_instance() const { return m_font_named_instance; }
  29. Optional<int> slope() const { return m_slope; }
  30. Optional<int> weight() const { return m_weight; }
  31. Optional<int> width() const { return m_width; }
  32. Optional<Percentage> line_gap_override() const { return m_line_gap_override; }
  33. Vector<Source> const& sources() const { return m_sources; }
  34. Vector<Gfx::UnicodeRange> const& unicode_ranges() const { return m_unicode_ranges; }
  35. private:
  36. FlyString m_font_family;
  37. Optional<FlyString> m_font_named_instance;
  38. Optional<int> m_weight;
  39. Optional<int> m_slope;
  40. Optional<int> m_width;
  41. Vector<Source> m_sources;
  42. Vector<Gfx::UnicodeRange> m_unicode_ranges;
  43. Optional<Percentage> m_ascent_override;
  44. Optional<Percentage> m_descent_override;
  45. Optional<Percentage> m_line_gap_override;
  46. FontDisplay m_font_display;
  47. Optional<FlyString> m_font_language_override;
  48. };
  49. }