8#include "font_family_id.hpp"
9#include "elusive_icon.hpp"
10#include "hikogui_icon.hpp"
11#include "../unicode/module.hpp"
12#include "../geometry/module.hpp"
13#include "../utility/module.hpp"
14#include "../generator.hpp"
21namespace hi::inline
v1 {
43 [[nodiscard]] aarectangle get_bounding_rectangle()
const noexcept
45 return get_metrics().bounding_rectangle;
51 lean_vector<glyph_id> glyphs;
74 font& register_font_file(
std::filesystem::path const& path,
bool post_process = true);
80 void register_font_directory(
std::filesystem::path const& path,
bool post_process = true);
86 void post_process() noexcept;
125 [[nodiscard]]
font const& find_font(
std::
string const& family_name,
font_weight weight, font_style style) const noexcept;
148 inline static
std::unique_ptr<
font_book> _global =
nullptr;
161 [[nodiscard]]
std::vector<
hi::
font *> make_fallback_chain(
font_weight weight, font_style style) noexcept;
174inline
font& register_font_file(
std::filesystem::path const& path)
176 return font_book::global().register_font_file(path);
179inline void register_font_directory(std::filesystem::path
const& path)
181 return font_book::global().register_font_directory(path);
184template<
typename Range>
185inline void register_font_directories(Range &&range)
noexcept
187 for (
auto const &path: range) {
188 font_book::global().register_font_directory(path,
false);
190 font_book::global().post_process();
198 return font_book::global().find_family(family_name);
210 return font_book::global().find_font(family_id, variant);
222 hilet family_id = find_font_family(family_name);
223 return font_book::global().find_font(family_id, variant);
249 return font_book::global().find_glyph(
font, code_point);
252[[nodiscard]]
inline auto find_glyph(elusive_icon rhs)
noexcept
254 hilet& font = find_font(
"Elusive", font_variant{});
258[[nodiscard]]
inline auto find_glyph(hikogui_icon rhs)
noexcept
#define hi_axiom_not_null(expression,...)
Assert if an expression is not nullptr.
Definition assert.hpp:272
#define hilet
Invariant should be the default for variables.
Definition utility.hpp:23
DOXYGEN BUG.
Definition algorithm.hpp:13
font_weight
Definition font_weight.hpp:16
auto find_glyph(font const &font, grapheme grapheme) noexcept
Find a glyph using the given code-point.
Definition font_book.hpp:234
font const & find_font(font_family_id family_id, font_variant variant=font_variant{}) noexcept
Find a font closest to the variant.
Definition font_book.hpp:208
font_family_id find_font_family(std::string const &family_name) noexcept
Find font family id.
Definition font_book.hpp:196
geometry/margins.hpp
Definition cache.hpp:11
virtual glyph_metrics get_metrics(hi::glyph_id glyph_id) const =0
Load a glyph into a path.
font_book keeps track of multiple fonts.
Definition font_book.hpp:29
Definition font_book.hpp:31
Definition font_book.hpp:49
A font variant is one of 16 different fonts that can be part of a family.
Definition font_variant.hpp:17
Definition glyph_metrics.hpp:16
Definition tagged_id.hpp:17
A grapheme-cluster, what a user thinks a character is.
Definition grapheme.hpp:42