af_loader_reset( AF_Module module, FT_Face face ) { FT_Error error = AF_Err_Ok; AF_Loader loader = module->loader; loader->face = face; loader->globals = (AF_FaceGlobals)face->autohint.data; FT_GlyphLoader_Rewind( loader->gloader ); if ( loader->globals == NULL ) { error = af_face_globals_new( face, &loader->globals, module ); if ( !error ) { face->autohint.data = (FT_Pointer)loader->globals; face->autohint.finalizer = (FT_Generic_Finalizer)af_face_globals_free; } } return error; }
static FT_Error af_property_get_face_globals( FT_Face face, AF_FaceGlobals* aglobals, AF_Module module ) { FT_Error error = FT_Err_Ok; AF_FaceGlobals globals; if ( !face ) return FT_THROW( Invalid_Face_Handle ); globals = (AF_FaceGlobals)face->autohint.data; if ( !globals ) { /* trigger computation of the global style data */ /* in case it hasn't been done yet */ error = af_face_globals_new( face, &globals, module ); if ( !error ) { face->autohint.data = (FT_Pointer)globals; face->autohint.finalizer = (FT_Generic_Finalizer)af_face_globals_free; } } if ( !error ) *aglobals = globals; return error; }