Call FcFreeTypeQueryFace() from fcdir.c, instead of FcFreeTypeQuery()

Need for upcoming work.  No functional change expected.
This commit is contained in:
Behdad Esfahbod 2015-08-09 00:45:01 +02:00
parent d570a841a2
commit 28f62d1bb8
1 changed files with 21 additions and 4 deletions

View File

@ -23,6 +23,9 @@
*/ */
#include "fcint.h" #include "fcint.h"
#include "fcftint.h"
#include <ft2build.h>
#include FT_FREETYPE_H
#include <dirent.h> #include <dirent.h>
FcBool FcBool
@ -65,12 +68,17 @@ FcFileScanFontConfig (FcFontSet *set,
const FcChar8 *file, const FcChar8 *file,
FcConfig *config) FcConfig *config)
{ {
FT_Library ftLibrary;
FT_Face face;
FcPattern *font; FcPattern *font;
FcBool ret = FcTrue; FcBool ret = FcTrue;
int id; int id;
int count = 0; int num_faces = 0;
const FcChar8 *sysroot = FcConfigGetSysRoot (config); const FcChar8 *sysroot = FcConfigGetSysRoot (config);
if (FT_Init_FreeType (&ftLibrary))
return FcFalse;
id = 0; id = 0;
do do
{ {
@ -83,14 +91,20 @@ FcFileScanFontConfig (FcFontSet *set,
printf ("\tScanning file %s...", file); printf ("\tScanning file %s...", file);
fflush (stdout); fflush (stdout);
} }
font = FcFreeTypeQuery (file, id, blanks, &count);
if (FT_New_Face (ftLibrary, (char *) file, id, &face))
return FcFalse;
num_faces = face->num_faces;
font = FcFreeTypeQueryFace (face, file, id, blanks);
FT_Done_Face (face);
if (FcDebug () & FC_DBG_SCAN) if (FcDebug () & FC_DBG_SCAN)
printf ("done\n"); printf ("done\n");
/* /*
* Get rid of sysroot here so that targeting scan rule may contains FC_FILE pattern * Get rid of sysroot here so that targeting scan rule may contains FC_FILE pattern
* and they should usually expect without sysroot. * and they should usually expect without sysroot.
*/ */
if (sysroot) if (font && sysroot)
{ {
size_t len = strlen ((const char *)sysroot); size_t len = strlen ((const char *)sysroot);
FcChar8 *f = NULL; FcChar8 *f = NULL;
@ -139,7 +153,10 @@ FcFileScanFontConfig (FcFontSet *set,
else else
ret = FcFalse; ret = FcFalse;
id++; id++;
} while (font && ret && id < count); } while (font && ret && id < num_faces);
FT_Done_FreeType (ftLibrary);
return ret; return ret;
} }