@@ -388,16 +388,17 @@ populate_processed_bitmap(FT_GlyphSlotRec *slot, FT_Bitmap *bitmap, ProcessedBit
388388static inline bool
389389render_bitmap (Face * self , int glyph_id , ProcessedBitmap * ans , unsigned int cell_width , unsigned int cell_height , unsigned int num_cells , bool bold , bool italic , bool rescale , FONTS_DATA_HANDLE fg ) {
390390 int flags = FT_LOAD_RENDER ;
391- switch (OPT (subpixel_rendering )) {
392- case SUBPIXEL_LCD :
393- flags |= FT_LOAD_TARGET_LCD ;
394- break ;
395- case SUBPIXEL_LCD_V :
396- flags |= FT_LOAD_TARGET_LCD_V ;
397- break ;
398- case SUBPIXEL_NONE :
399- default :
400- break ;
391+ if (OPT (subpixel_rendering )) {
392+ switch (self -> rgba ) {
393+ case FC_RGBA_RGB :
394+ case FC_RGBA_BGR :
395+ flags |= FT_LOAD_TARGET_LCD ;
396+ break ;
397+ case FC_RGBA_VRGB :
398+ case FC_RGBA_VBGR :
399+ flags |= FT_LOAD_TARGET_LCD_V ;
400+ break ;
401+ }
401402 }
402403 if (!load_glyph (self , glyph_id , flags )) return false;
403404 unsigned int max_width = cell_width * num_cells ;
@@ -670,17 +671,21 @@ render_simple_text_impl(PyObject *s, const char *text, unsigned int baseline) {
670671 int error = FT_Load_Glyph (self -> face , glyph_index , FT_LOAD_DEFAULT );
671672 if (error ) continue ;
672673 int flags = 0 ;
673- switch (OPT (subpixel_rendering )) {
674- case SUBPIXEL_LCD :
675- flags |= FT_RENDER_MODE_LCD ;
676- break ;
677- case SUBPIXEL_LCD_V :
678- flags |= FT_RENDER_MODE_LCD_V ;
679- break ;
680- case SUBPIXEL_NONE :
681- default :
674+ if (OPT (subpixel_rendering )) {
675+ switch (self -> rgba ) {
676+ case FC_RGBA_RGB :
677+ case FC_RGBA_BGR :
678+ flags |= FT_RENDER_MODE_LCD ;
679+ break ;
680+ case FC_RGBA_VRGB :
681+ case FC_RGBA_VBGR :
682+ flags |= FT_RENDER_MODE_LCD_V ;
683+ break ;
684+ default :
685+ flags |= FT_RENDER_MODE_LCD ;
686+ }
687+ } else {
682688 flags |= FT_RENDER_MODE_NORMAL ;
683- break ;
684689 }
685690 error = FT_Render_Glyph (self -> face -> glyph , flags );
686691 if (error ) continue ;
0 commit comments