]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcmatch.c
Add FcMatchScan to resolve Delicious font matching issues (bug #6769)
[fontconfig.git] / src / fcmatch.c
index 7e3353b3d42e610b1e5ba6a387eee20aeb08de76..96587cbc310d41ac6aef92dc683ad5910f015dd5 100644 (file)
@@ -225,24 +225,29 @@ static FcMatcher _FcMatchers [] = {
 #define MATCH_WIDTH        9
 #define MATCH_WIDTH_INDEX   10
     
-    { FC_ANTIALIAS_OBJECT,     FcCompareBool,  11, 11 },
-#define MATCH_ANTIALIAS            10
-#define MATCH_ANTIALIAS_INDEX      11
+    { FC_DECORATIVE_OBJECT,    FcCompareBool,          11, 11 },
+#define MATCH_DECORATIVE       11
+#define MATCH_DECORATIVE_INDEX 12
+
+    { FC_ANTIALIAS_OBJECT,     FcCompareBool,          12, 12 },
+    
+#define MATCH_ANTIALIAS                    11
+#define MATCH_ANTIALIAS_INDEX      12
     
-    { FC_RASTERIZER_OBJECT,    FcCompareString,        12, 12 },
-#define MATCH_RASTERIZER    11
-#define MATCH_RASTERIZER_INDEX    12
+    { FC_RASTERIZER_OBJECT,    FcCompareString,        13, 13 },
+#define MATCH_RASTERIZER           12
+#define MATCH_RASTERIZER_INDEX     12
 
-    { FC_OUTLINE_OBJECT,       FcCompareBool,  13, 13 },
-#define MATCH_OUTLINE      12
-#define MATCH_OUTLINE_INDEX        13
+    { FC_OUTLINE_OBJECT,       FcCompareBool,          14, 14 },
+#define MATCH_OUTLINE              13
+#define MATCH_OUTLINE_INDEX        14
 
-    { FC_FONTVERSION_OBJECT,   FcCompareNumber,        14, 14 },
-#define MATCH_FONTVERSION   13
-#define MATCH_FONTVERSION_INDEX   14
+    { FC_FONTVERSION_OBJECT,   FcCompareNumber,        15, 15 },
+#define MATCH_FONTVERSION          14
+#define MATCH_FONTVERSION_INDEX            15
 };
 
-#define NUM_MATCH_VALUES    15
+#define NUM_MATCH_VALUES    16
 
 static FcMatcher*
 FcObjectToMatcher (FcObject object)
@@ -279,6 +284,8 @@ FcObjectToMatcher (FcObject object)
        i = MATCH_RASTERIZER; break;
     case FC_OUTLINE_OBJECT:
        i = MATCH_OUTLINE; break;
+    case FC_DECORATIVE_OBJECT:
+       i = MATCH_DECORATIVE; break;
     }
 
     if (i < 0)
@@ -313,7 +320,7 @@ FcCompareValueList (FcObject         object,
     j = 0;
     for (v1 = v1orig; v1; v1 = FcValueListNext(v1))
     {
-       for (v2 = v1orig; v2; v2 = FcValueListNext(v2))
+       for (v2 = v2orig; v2; v2 = FcValueListNext(v2))
        {
            v = (match->compare) (&v1->value, &v2->value);
            if (v < 0)
@@ -608,7 +615,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **cs, FcBool tri
                 }
 
                FcPatternReference (node->pattern);
-               if (FcDebug () & FC_DBG_MATCH)
+               if (FcDebug () & FC_DBG_MATCHV)
                {
                    printf ("Add ");
                    FcPatternPrint (node->pattern);
@@ -730,7 +737,7 @@ FcFontSetSort (FcConfig         *config,
         * If this node matches any language, go check
         * which ones and satisfy those entries
         */
-       if (nodeps[f]->score[MATCH_LANG_INDEX] < nPatternLang)
+       if (nodeps[f]->score[MATCH_LANG_INDEX] < 200)
        {
            for (i = 0; i < nPatternLang; i++)
            {
@@ -788,6 +795,11 @@ FcFontSetSort (FcConfig        *config,
 
     free (nodes);
 
+    if (FcDebug() & FC_DBG_MATCH)
+    {
+       printf ("First font ");
+       FcPatternPrint (ret->fonts[0]);
+    }
     return ret;
 
 bail2: