Mercurial > mplayer.hg
changeset 20637:092cb80a8ba4
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.
author | eugeni |
---|---|
date | Fri, 03 Nov 2006 23:11:00 +0000 |
parents | 325db3f2aba3 |
children | d56ce5b63c86 |
files | libass/ass_cache.c |
diffstat | 1 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libass/ass_cache.c Fri Nov 03 22:53:24 2006 +0000 +++ b/libass/ass_cache.c Fri Nov 03 23:11:00 2006 +0000 @@ -57,6 +57,24 @@ } /** + * 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 * \param fontconfig_priv fontconfig private data @@ -91,6 +109,8 @@ no_more_font_messages = 1; return 1; } + + charmap_magic(*face); item = face_cache + face_cache_size; item->path = strdup(path);