00074 {
00075 FT_Face_GetAdvancesFunc func;
00076
00077
00078 if ( !face )
00079 return FT_Err_Invalid_Face_Handle;
00080
00081 if ( gindex >= (FT_UInt)face->num_glyphs )
00082 return FT_Err_Invalid_Glyph_Index;
00083
00084 func = face->driver->clazz->get_advances;
00085 if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) )
00086 {
00087 FT_Error error;
00088
00089
00090 error = func( face, gindex, 1, flags, padvance );
00091 if ( !error )
00092 return _ft_face_scale_advances( face, padvance, 1, flags );
00093
00094 if ( error != FT_ERROR_BASE( FT_Err_Unimplemented_Feature ) )
00095 return error;
00096 }
00097
00098 return FT_Get_Advances( face, gindex, 1, flags, padvance );
00099 }