Пример #1
0
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);
    }
}
Пример #2
0
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);
    }
}