[MPlayer-cvslog] r20653 - trunk/libass/ass_cache.c
eugeni
subversion at mplayerhq.hu
Sat Nov 4 00:11:00 CET 2006
Author: eugeni
Date: Sat Nov 4 00:11:00 2006
New Revision: 20653
Modified:
trunk/libass/ass_cache.c
Log:
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.
Modified: trunk/libass/ass_cache.c
==============================================================================
--- trunk/libass/ass_cache.c (original)
+++ trunk/libass/ass_cache.c Sat Nov 4 00:11:00 2006
@@ -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);
More information about the MPlayer-cvslog
mailing list