Skip to content

Commit b3d0b19

Browse files
committed
Make PyFT2Font a subclass of FT2Font
1 parent 8397908 commit b3d0b19

File tree

3 files changed

+99
-177
lines changed

3 files changed

+99
-177
lines changed

src/ft2font.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -207,15 +207,13 @@ FT2Font::get_path(std::vector<double> &vertices, std::vector<unsigned char> &cod
207207
}
208208

209209
FT2Font::FT2Font(long hinting_factor_, std::vector<FT2Font *> &fallback_list,
210-
FT2Font::WarnFunc warn, bool warn_if_used)
211-
: ft_glyph_warn(warn), warn_if_used(warn_if_used), image({1, 1}), face(nullptr),
210+
bool warn_if_used)
211+
: warn_if_used(warn_if_used), image({1, 1}), face(nullptr), fallbacks(fallback_list),
212212
hinting_factor(hinting_factor_),
213213
// set default kerning factor to 0, i.e., no kerning manipulation
214214
kerning_factor(0)
215215
{
216216
clear();
217-
// Set fallbacks
218-
std::copy(fallback_list.begin(), fallback_list.end(), std::back_inserter(fallbacks));
219217
}
220218

221219
FT2Font::~FT2Font()
@@ -544,21 +542,19 @@ FT_UInt FT2Font::get_char_index(FT_ULong charcode, bool fallback = false)
544542
return FT_Get_Char_Index(ft_object->get_face(), charcode);
545543
}
546544

547-
void FT2Font::get_width_height(long *width, long *height)
545+
std::tuple<long, long> FT2Font::get_width_height()
548546
{
549-
*width = advance;
550-
*height = bbox.yMax - bbox.yMin;
547+
return {advance, bbox.yMax - bbox.yMin};
551548
}
552549

553550
long FT2Font::get_descent()
554551
{
555552
return -bbox.yMin;
556553
}
557554

558-
void FT2Font::get_bitmap_offset(long *x, long *y)
555+
std::tuple<long, long> FT2Font::get_bitmap_offset()
559556
{
560-
*x = bbox.xMin;
561-
*y = 0;
557+
return {bbox.xMin, 0};
562558
}
563559

564560
void FT2Font::draw_glyphs_to_bitmap(bool antialiased)

src/ft2font.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <set>
1313
#include <string>
1414
#include <string_view>
15+
#include <tuple>
1516
#include <unordered_map>
1617
#include <vector>
1718

@@ -96,11 +97,9 @@ extern FT_Library _ft2Library;
9697

9798
class FT2Font
9899
{
99-
typedef void (*WarnFunc)(FT_ULong charcode, std::set<FT_String*> family_names);
100-
101100
public:
102101
FT2Font(long hinting_factor, std::vector<FT2Font *> &fallback_list,
103-
WarnFunc warn, bool warn_if_used);
102+
bool warn_if_used);
104103
virtual ~FT2Font();
105104
void open(FT_Open_Args &open_args);
106105
void close();
@@ -124,8 +123,8 @@ class FT2Font
124123
std::set<FT_String*> &glyph_seen_fonts,
125124
bool override);
126125
void load_glyph(FT_UInt glyph_index, FT_Int32 flags);
127-
void get_width_height(long *width, long *height);
128-
void get_bitmap_offset(long *x, long *y);
126+
std::tuple<long, long> get_width_height();
127+
std::tuple<long, long> get_bitmap_offset();
129128
long get_descent();
130129
void draw_glyphs_to_bitmap(bool antialiased);
131130
void draw_glyph_to_bitmap(
@@ -167,8 +166,9 @@ class FT2Font
167166
return FT_HAS_KERNING(face);
168167
}
169168

169+
protected:
170+
virtual void ft_glyph_warn(FT_ULong charcode, std::set<FT_String*> family_names) = 0;
170171
private:
171-
WarnFunc ft_glyph_warn;
172172
bool warn_if_used;
173173
py::array_t<uint8_t, py::array::c_style> image;
174174
FT_Face face;

0 commit comments

Comments
 (0)