5 #include <common/memory.h>
7 #include "string_metrics.h"
9 #include "../../../frame/geometry.h"
11 namespace caspar { namespace core { namespace text {
14 enum class unicode_block;
19 texture_font(const texture_font&);
20 const texture_font& operator=(const texture_font&);
23 texture_font(texture_atlas&, const text_info&, bool normalize_coordinates);
24 void load_glyphs(unicode_block block, const color<double>& col);
25 void set_tracking(double tracking);
26 std::vector<frame_geometry::coord> create_vertex_stream(const std::wstring& str, int x, int y, int parent_width, int parent_height, string_metrics* metrics, double shear = 0.0);
27 string_metrics measure_string(const std::wstring& str);
28 std::wstring get_name() const;
29 double get_size() const;
33 spl::shared_ptr<impl> impl_;
36 enum class unicode_block
43 Spacing_Modifier_Letters,
44 Combining_Diacritical_Marks,
77 Unified_Canadian_Aboriginal_Syllabics,
86 Unified_Canadian_Aboriginal_Syllabics_Extended,
101 Phonetic_Extensions_Supplement,
102 Combining_Diacritical_Marks_Supplement,
103 Latin_Extended_Additional,
106 Superscripts_and_Subscripts,
108 Combining_Diacritical_Marks_for_Symbols,
112 Mathematical_Operators,
113 Miscellaneous_Technical,
115 Optical_Character_Recognition,
116 Enclosed_Alphanumerics,
120 Miscellaneous_Symbols,
122 Miscellaneous_Mathematical_Symbols_A,
123 Supplemental_Arrows_A,
125 Supplemental_Arrows_B,
126 Miscellaneous_Mathematical_Symbols_B,
127 Supplemental_Mathematical_Operators,
128 Miscellaneous_Symbols_and_Arrows,
136 Supplemental_Punctuation,
137 CJK_Radicals_Supplement,
139 Ideographic_Description_Characters,
140 CJK_Symbols_and_Punctuation,
144 Hangul_Compatibility_Jamo,
148 Katakana_Phonetic_Extensions,
149 Enclosed_CJK_Letters_and_Months,
151 CJK_Unified_Ideographs_Extension_A,
152 Yijing_Hexagram_Symbols,
153 CJK_Unified_Ideographs,
160 Modifier_Tone_Letters,
163 Common_Indic_Number_Forms,
169 Hangul_Jamo_Extended_A,
174 Meetei_Mayek_Extensions,
178 Hangul_Jamo_Extended_B,
180 High_Private_Use_Surrogates,
183 CJK_Compatibility_Ideographs,
184 Alphabetic_Presentation_Forms,
185 Arabic_Presentation_Forms_A,
188 Combining_Half_Marks,
189 CJK_Compatibility_Forms,
191 Arabic_Presentation_Forms_B,
192 Halfwidth_and_Fullwidth_Forms,
197 Ancient_Greek_Numbers,
213 Meroitic_Hieroglyphs,
218 Inscriptional_Parthian,
219 Inscriptional_Pahlavi,
221 Rumi_Numeral_Symbols,
229 Cuneiform_Numbers_and_Punctuation,
230 Egyptian_Hieroglyphs,
234 Byzantine_Musical_Symbols,
236 Ancient_Greek_Musical_Notation,
237 Tai_Xuan_Jing_Symbols,
238 Counting_Rod_Numerals,
239 Mathematical_Alphanumeric_Symbols,
240 Arabic_Mathematical_Alphabetic_Symbols,
244 Enclosed_Alphanumeric_Supplement,
245 Enclosed_Ideographic_Supplement,
246 Miscellaneous_Symbols_And_Pictographs,
248 Transport_And_Map_Symbols,
250 CJK_Unified_Ideographs_Extension_B,
251 CJK_Unified_Ideographs_Extension_C,
252 CJK_Unified_Ideographs_Extension_D,
253 CJK_Compatibility_Ideographs_Supplement,
255 Variation_Selectors_Supplement,
256 Supplementary_Private_Use_Area_A,
257 Supplementary_Private_Use_Area_B