+ cidToGID = (Gushort *)gmalloc(cidToGIDLen * sizeof(Gushort));
+ memcpy(cidToGID, cidToGIDA, cidToGIDLen * sizeof(Gushort));
+ if (!strcmp(face->driver->root.clazz->module_name, "t1cid")) {
+ mode = ftFontModeCID;
+ } else if (!strcmp(face->driver->root.clazz->module_name, "cff")) {
+ mode = ftFontModeCFFCharset;
+ } else if (embedded) {
+ mode = ftFontModeCIDToGIDMap;
+ } else {
+ mode = ftFontModeUnicode;
+ for (i = 0; i < face->num_charmaps; ++i) {
+ if ((face->charmaps[i]->platform_id == 3 &&
+ face->charmaps[i]->encoding_id == 1) ||
+ face->charmaps[i]->platform_id == 0) {
+ break;
+ }
+ }
+ if (i == face->num_charmaps) {
+ i = 0;
+ }
+ FT_Set_Charmap(face, face->charmaps[i]);
+ }