if (count >= size) return False;
int _xudc_gi_to_vgi(lcd,locale,charset_str,codeset,gi,vgi,charsetname)XLCd 	lcd;char 	*locale;char 	*charset_str;int 	codeset;unsigned long 	gi;unsigned long 	*vgi;char    *charsetname;{    _XUDCGlyphRegion *udc;    int num = 0,count,num_ret=0;    int i,j,k;    char **value,buf[128],ptr;    FontData font_data;    sprintf(buf, "fs%d.charset.name", codeset-1);    _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);    if(count > 0){        strcpy(charsetname,value[0]);    }    sprintf(buf, "fs%d.font.primary", codeset-1);    _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);    if(count > 0){	font_data = read_EncodingInfo(count,value);        for(i=0;i<count;i++){            if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){                for(k=0;k<font_data[i].scopes_num;k++){	            if( gi_to_vgi(gi,vgi,&(font_data[i].scopes[k])) == True){			return(True);                    }	        }	    }        }    }/*    free_fontdata(font_data);*/    *vgi = gi;    return(True);}