static void SFFontTablesRelease(SFFontTablesRef sfFontTables) { if (!sfFontTables) { return; } sfFontTables->_retainCount--; if (sfFontTables->_retainCount == 0) { if (sfFontTables->_availableTables & itCMAP) { SFFreeCMAP(&sfFontTables->_cmap); } if (sfFontTables->_availableTables & itGDEF) { SFFreeGDEF(&sfFontTables->_gdef); } if (sfFontTables->_availableTables & itGSUB) { SFFreeGSUB(&sfFontTables->_gsub); } if (sfFontTables->_availableTables & itGPOS) { SFFreeGPOS(&sfFontTables->_gpos); } free(sfFontTables); } }
void SFFontRelease(SFFontRef sfFont) { if (!sfFont) return; sfFont->_retainCount--; if (sfFont->_retainCount == 0) { if (sfFont->_parent) SFFontRelease(sfFont->_parent); else { #ifdef SF_IOS_CG CGFontRelease(sfFont->_cgFont); #else if (sfFont->_ftFace) FT_Done_Face(sfFont->_ftFace); if (sfFont->_ftLib) FT_Done_FreeType(sfFont->_ftLib); #endif if (sfFont->_availableFontTables & itCMAP) SFFreeCMAP(&sfFont->_cmap); if (sfFont->_availableFontTables & itGDEF) SFFreeGDEF(&sfFont->_gdef); if (sfFont->_availableFontTables & itGSUB) SFFreeGSUB(&sfFont->_gsub); if (sfFont->_availableFontTables & itGPOS) SFFreeGPOS(&sfFont->_gpos); } free(sfFont); } }