Prefer microsoft-specific charmaps to all other.

There are some fonts with both 'Unicode' and 'Microsoft/Unicode'
charmaps, and the second always seems to be the right choice.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20653 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
eugeni 2006-11-03 23:11:00 +00:00
parent a28d7004b4
commit 46afb40907
1 changed files with 20 additions and 0 deletions

View File

@ -56,6 +56,24 @@ static int font_compare(face_desc_t* a, face_desc_t* b) {
return 1;
}
/**
* Select Microfost Unicode CharMap, if the font has one.
* Otherwise, let FreeType decide.
*/
static void charmap_magic(FT_Face face)
{
int i;
for (i = 0; i < face->num_charmaps; ++i) {
FT_CharMap cmap = face->charmaps[i];
unsigned pid = cmap->platform_id;
unsigned eid = cmap->encoding_id;
if (pid == 3 /*microsoft*/ && (eid == 1 /*unicode bmp*/ || eid == 10 /*full unicode*/)) {
FT_Set_Charmap(face, cmap);
break;
}
}
}
/**
* \brief Get a face object, either from cache or created through FreeType+FontConfig.
* \param library FreeType library object
@ -91,6 +109,8 @@ int ass_new_face(FT_Library library, void* fontconfig_priv, face_desc_t* desc, /
no_more_font_messages = 1;
return 1;
}
charmap_magic(*face);
item = face_cache + face_cache_size;
item->path = strdup(path);