Huw Davies : gdi32: Improve the fontconfig filtering hack so that Mac suitcase fonts get through .

Alexandre Julliard julliard at wine.codeweavers.com
Wed Dec 20 08:54:53 CST 2006


Module: wine
Branch: master
Commit: 7329144c5845089de67dbe1e91165491e5f8f045
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7329144c5845089de67dbe1e91165491e5f8f045

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Dec 19 21:21:27 2006 +0000

gdi32: Improve the fontconfig filtering hack so that Mac suitcase fonts get through.

---

 dlls/gdi32/freetype.c |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 9344515..86d3455 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -155,6 +155,7 @@ MAKE_FUNCPTR(FcObjectSetCreate);
 MAKE_FUNCPTR(FcObjectSetDestroy);
 MAKE_FUNCPTR(FcPatternCreate);
 MAKE_FUNCPTR(FcPatternDestroy);
+MAKE_FUNCPTR(FcPatternGetBool);
 MAKE_FUNCPTR(FcPatternGetString);
 #ifndef SONAME_LIBFONTCONFIG
 #define SONAME_LIBFONTCONFIG "libfontconfig.so"
@@ -1221,6 +1222,7 @@ LOAD_FUNCPTR(FcObjectSetCreate);
 LOAD_FUNCPTR(FcObjectSetDestroy);
 LOAD_FUNCPTR(FcPatternCreate);
 LOAD_FUNCPTR(FcPatternDestroy);
+LOAD_FUNCPTR(FcPatternGetBool);
 LOAD_FUNCPTR(FcPatternGetString);
 #undef LOAD_FUNCPTR
 
@@ -1230,20 +1232,30 @@ LOAD_FUNCPTR(FcPatternGetString);
     pat = pFcPatternCreate();
     os = pFcObjectSetCreate();
     pFcObjectSetAdd(os, FC_FILE);
+    pFcObjectSetAdd(os, FC_SCALABLE);
     fontset = pFcFontList(config, pat, os);
     if(!fontset) return;
     for(i = 0; i < fontset->nfont; i++) {
+        FcBool scalable;
+
         if(pFcPatternGetString(fontset->fonts[i], FC_FILE, 0, (FcChar8**)&file) != FcResultMatch)
             continue;
         TRACE("fontconfig: %s\n", file);
 
         /* We're just interested in OT/TT fonts for now, so this hack just
-           picks up the standard extensions to save time loading every other
-           font */
+           picks up the scalable fonts without extensions .pf[ab] to save time
+           loading every other font */
+
+        if(pFcPatternGetBool(fontset->fonts[i], FC_SCALABLE, 0, &scalable) == FcResultMatch && !scalable)
+        {
+            TRACE("not scalable\n");
+            continue;
+        }
+
         len = strlen( file );
         if(len < 4) continue;
         ext = &file[ len - 3 ];
-        if(!strcasecmp(ext, "ttf") || !strcasecmp(ext, "ttc") || !strcasecmp(ext, "otf"))
+        if(strcasecmp(ext, "pfa") && strcasecmp(ext, "pfb"))
             AddFontFileToList(file, NULL, ADDFONT_EXTERNAL_FONT);
     }
     pFcFontSetDestroy(fontset);




More information about the wine-cvs mailing list