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