HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Font.hpp
1// Copyright 2019, 2020 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "TTauri/Text/GlyphMetrics.hpp"
7#include "TTauri/Text/FontGlyphIDs.hpp"
8#include "TTauri/Text/gstring.hpp"
9#include "TTauri/Text/FontDescription.hpp"
10#include "TTauri/Foundation/Path.hpp"
11#include "TTauri/Foundation/ResourceView.hpp"
12#include "TTauri/Foundation/exceptions.hpp"
13#include "TTauri/Foundation/required.hpp"
14#include "TTauri/Foundation/URL.hpp"
15#include <nonstd/span>
16#include <vector>
17#include <map>
18
19namespace tt {
20
25class Font {
26public:
27 Font() = default;
28 virtual ~Font() = default;
29 Font(Font const &) = delete;
30 Font &operator=(Font const &) = delete;
31 Font(Font &&) = delete;
32 Font &operator=(Font &&) = delete;
33
37
41 [[nodiscard]] virtual GlyphID find_glyph(char32_t c) const noexcept = 0;
42
46 [[nodiscard]] FontGlyphIDs find_glyph(Grapheme g) const noexcept;
47
55 virtual std::optional<GlyphID> loadGlyph(GlyphID glyph_id, Path &path) const noexcept = 0;
56
64 virtual bool loadGlyphMetrics(GlyphID glyph_id, GlyphMetrics &metrics, GlyphID lookahead_glyph_id=GlyphID{}) const noexcept = 0;
65};
66
67}
68
69namespace tt {
70
71template<>
72std::unique_ptr<tt::Font> parseResource(URL const &location);
73
74}
Definition Path.hpp:29
Definition tagged_id.hpp:17
Definition Font.hpp:25
virtual std::optional< GlyphID > loadGlyph(GlyphID glyph_id, Path &path) const noexcept=0
FontDescription description
The description is filled with information parsed from the font.
Definition Font.hpp:36
FontGlyphIDs find_glyph(Grapheme g) const noexcept
Get the glyphs for a grapheme.
virtual bool loadGlyphMetrics(GlyphID glyph_id, GlyphMetrics &metrics, GlyphID lookahead_glyph_id=GlyphID{}) const noexcept=0
virtual GlyphID find_glyph(char32_t c) const noexcept=0
Get the glyph for a code-point.
Definition FontDescription.hpp:15
Definition FontGlyphIDs.hpp:77
Definition GlyphMetrics.hpp:17
Definition Grapheme.hpp:20