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(int 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);
27 string_metrics measure_string(const std::wstring& str);
31 spl::shared_ptr<impl> impl_;
34 enum class unicode_block
41 Spacing_Modifier_Letters,
42 Combining_Diacritical_Marks,
75 Unified_Canadian_Aboriginal_Syllabics,
84 Unified_Canadian_Aboriginal_Syllabics_Extended,
99 Phonetic_Extensions_Supplement,
100 Combining_Diacritical_Marks_Supplement,
101 Latin_Extended_Additional,
104 Superscripts_and_Subscripts,
106 Combining_Diacritical_Marks_for_Symbols,
110 Mathematical_Operators,
111 Miscellaneous_Technical,
113 Optical_Character_Recognition,
114 Enclosed_Alphanumerics,
118 Miscellaneous_Symbols,
120 Miscellaneous_Mathematical_Symbols_A,
121 Supplemental_Arrows_A,
123 Supplemental_Arrows_B,
124 Miscellaneous_Mathematical_Symbols_B,
125 Supplemental_Mathematical_Operators,
126 Miscellaneous_Symbols_and_Arrows,
134 Supplemental_Punctuation,
135 CJK_Radicals_Supplement,
137 Ideographic_Description_Characters,
138 CJK_Symbols_and_Punctuation,
142 Hangul_Compatibility_Jamo,
146 Katakana_Phonetic_Extensions,
147 Enclosed_CJK_Letters_and_Months,
149 CJK_Unified_Ideographs_Extension_A,
150 Yijing_Hexagram_Symbols,
151 CJK_Unified_Ideographs,
158 Modifier_Tone_Letters,
161 Common_Indic_Number_Forms,
167 Hangul_Jamo_Extended_A,
172 Meetei_Mayek_Extensions,
176 Hangul_Jamo_Extended_B,
178 High_Private_Use_Surrogates,
181 CJK_Compatibility_Ideographs,
182 Alphabetic_Presentation_Forms,
183 Arabic_Presentation_Forms_A,
186 Combining_Half_Marks,
187 CJK_Compatibility_Forms,
189 Arabic_Presentation_Forms_B,
190 Halfwidth_and_Fullwidth_Forms,
195 Ancient_Greek_Numbers,
211 Meroitic_Hieroglyphs,
216 Inscriptional_Parthian,
217 Inscriptional_Pahlavi,
219 Rumi_Numeral_Symbols,
227 Cuneiform_Numbers_and_Punctuation,
228 Egyptian_Hieroglyphs,
232 Byzantine_Musical_Symbols,
234 Ancient_Greek_Musical_Notation,
235 Tai_Xuan_Jing_Symbols,
236 Counting_Rod_Numerals,
237 Mathematical_Alphanumeric_Symbols,
238 Arabic_Mathematical_Alphabetic_Symbols,
242 Enclosed_Alphanumeric_Supplement,
243 Enclosed_Ideographic_Supplement,
244 Miscellaneous_Symbols_And_Pictographs,
246 Transport_And_Map_Symbols,
248 CJK_Unified_Ideographs_Extension_B,
249 CJK_Unified_Ideographs_Extension_C,
250 CJK_Unified_Ideographs_Extension_D,
251 CJK_Compatibility_Ideographs_Supplement,
253 Variation_Selectors_Supplement,
254 Supplementary_Private_Use_Area_A,
255 Supplementary_Private_Use_Area_B