ParsedFontFace.h 2.8 KB

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