19 using iterator = container_type::iterator;
20 using const_iterator = container_type::const_iterator;
23 container_type glyphs = {};
35 hi_axiom(not this->font.empty());
36 hi_axiom(not this->glyphs.empty());
42 [[nodiscard]]
constexpr bool empty()
const noexcept
47 constexpr explicit operator bool()
const noexcept
52 [[nodiscard]] iterator begin()
noexcept
54 return glyphs.begin();
57 [[nodiscard]] iterator end()
noexcept
62 [[nodiscard]] const_iterator begin()
const noexcept
64 return glyphs.begin();
67 [[nodiscard]] const_iterator end()
const noexcept
72 [[nodiscard]] const_iterator cbegin()
const noexcept
74 return glyphs.cbegin();
77 [[nodiscard]] const_iterator cend()
const noexcept
84 hi_axiom(not glyphs.empty());
85 return glyphs.front();
90 hi_axiom(not glyphs.empty());
94 [[nodiscard]]
glyph_id operator[](
size_t i)
const
99 [[nodiscard]] font_metrics_em
const& font_metrics()
const
101 hi_axiom(not font.empty());
102 return font->metrics;
105 [[nodiscard]] hi::glyph_metrics glyph_metrics(
size_t i)
const
107 hi_axiom(i < glyphs.size());
108 hi_axiom(not font.empty());
109 return font->get_metrics(glyphs[i]);
112 [[nodiscard]] hi::glyph_metrics front_glyph_metrics()
const
114 return glyph_metrics(0);