@@ -162,9 +162,19 @@ FT2Image::draw_rect_filled(unsigned long x0, unsigned long y0, unsigned long x1,
162162
163163inline double conv (long v)
164164{
165- return double (v) / 64.0 ;
165+ return v / 64 .;
166166}
167167
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+
168178int FT2Font::get_path_count ()
169179{
170180 // get the glyph as a path, a list of (COMMAND, *args) as described in matplotlib.path
@@ -611,7 +621,7 @@ void FT2Font::set_text(
611621 FT_BBox glyph_bbox;
612622 FT_Pos last_advance;
613623
614- glyph_index = FT_Get_Char_Index (face, codepoints[n]);
624+ glyph_index = ft_get_char_index_or_warn (face, codepoints[n]);
615625
616626 // retrieve kerning distance and move pen position
617627 if (use_kerning && previous && glyph_index) {
@@ -664,7 +674,8 @@ void FT2Font::set_text(
664674
665675void FT2Font::load_char (long charcode, FT_Int32 flags)
666676{
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);
668679
669680 if (error) {
670681 throw std::runtime_error (" Could not load charcode" );
0 commit comments