void SkScalerContext_CairoFT::generateImage(const SkGlyph& glyph) { SkASSERT(fScaledFont != nullptr); CairoLockedFTFace faceLock(fScaledFont); FT_Face face = faceLock.getFace(); FT_Error err = FT_Load_Glyph(face, glyph.getGlyphID(), fLoadGlyphFlags); if (err != 0) { memset(glyph.fImage, 0, glyph.rowBytes() * glyph.fHeight); return; } prepareGlyph(face->glyph); bool useLcdFilter = face->glyph->format == FT_GLYPH_FORMAT_OUTLINE && isLCD(glyph) && gSetLcdFilter; if (useLcdFilter) { gSetLcdFilter(face->glyph->library, fLcdFilter); } generateGlyphImage(face, glyph); if (useLcdFilter) { gSetLcdFilter(face->glyph->library, FT_LCD_FILTER_NONE); } }
void SkScalerContext_CairoFT::generateImage(const SkGlyph& glyph) { SkASSERT(fScaledFont != NULL); CairoLockedFTFace faceLock(fScaledFont); FT_Face face = faceLock.getFace(); FT_Error err = FT_Load_Glyph(face, glyph.getGlyphID(), fLoadGlyphFlags); if (err != 0) { memset(glyph.fImage, 0, glyph.rowBytes() * glyph.fHeight); return; } generateGlyphImage(face, glyph); }