@@ -162,9 +162,19 @@ FT2Image::draw_rect_filled(unsigned long x0, unsigned long y0, unsigned long x1,
162
162
163
163
inline double conv (long v)
164
164
{
165
- return double (v) / 64.0 ;
165
+ return v / 64 .;
166
166
}
167
167
168
+ FT_UInt ft_get_char_index_or_warn (FT_Face face, FT_ULong charcode)
169
+ {
170
+ FT_UInt glyph_index = FT_Get_Char_Index (face, charcode);
171
+ if (!glyph_index) {
172
+ PyErr_WarnEx (NULL , " Required glyph missing from current font." , 1 );
173
+ }
174
+ return glyph_index;
175
+ }
176
+
177
+
168
178
int FT2Font::get_path_count ()
169
179
{
170
180
// get the glyph as a path, a list of (COMMAND, *args) as described in matplotlib.path
@@ -611,7 +621,7 @@ void FT2Font::set_text(
611
621
FT_BBox glyph_bbox;
612
622
FT_Pos last_advance;
613
623
614
- glyph_index = FT_Get_Char_Index (face, codepoints[n]);
624
+ glyph_index = ft_get_char_index_or_warn (face, codepoints[n]);
615
625
616
626
// retrieve kerning distance and move pen position
617
627
if (use_kerning && previous && glyph_index) {
@@ -664,7 +674,8 @@ void FT2Font::set_text(
664
674
665
675
void FT2Font::load_char (long charcode, FT_Int32 flags)
666
676
{
667
- int error = FT_Load_Char (face, (unsigned long )charcode, flags);
677
+ FT_UInt glyph_index = ft_get_char_index_or_warn (face, (FT_ULong)charcode);
678
+ int error = FT_Load_Glyph (face, glyph_index, flags);
668
679
669
680
if (error) {
670
681
throw std::runtime_error (" Could not load charcode" );
0 commit comments