From 8fd0ed60a62cb7f36b2ade1bd16a66671eaf79da Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 1 Apr 2013 18:16:28 +0900 Subject: [PATCH] Bug 62980 - matching native fonts with even :lang=en Fix the matcher modified by 4eab908c8679a797ac7016b77a93ee41bb11b0fc to deal with both strong and weak of FC_LANG as the same location in the score --- src/fcmatch.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/fcmatch.c b/src/fcmatch.c index 68f39ae..2d7b798 100644 --- a/src/fcmatch.c +++ b/src/fcmatch.c @@ -227,9 +227,10 @@ typedef enum _FcMatcherPriorityDummy { #undef FC_OBJECT #undef PRI1 -#define PRI1(n) \ - PRI_ ## n ## _STRONG, \ - PRI_ ## n ## _WEAK +#define PRI1(n) \ + PRI_ ## n, \ + PRI_ ## n ## _STRONG = PRI_ ## n, \ + PRI_ ## n ## _WEAK = PRI_ ## n typedef enum _FcMatcherPriority { PRI1(HASH), @@ -237,9 +238,8 @@ typedef enum _FcMatcherPriority { PRI1(FOUNDRY), PRI1(CHARSET), PRI_FAMILY_STRONG, - PRI_LANG_STRONG, PRI_POSTSCRIPT_NAME_STRONG, - PRI_LANG_WEAK, + PRI1(LANG), PRI_FAMILY_WEAK, PRI_POSTSCRIPT_NAME_WEAK, PRI1(SPACING), @@ -910,8 +910,7 @@ FcFontSetSort (FcConfig *config FC_UNUSED, * If this node matches any language, go check * which ones and satisfy those entries */ - if (nodeps[f]->score[PRI_LANG_STRONG] < 2000 || - nodeps[f]->score[PRI_LANG_WEAK] < 2000) + if (nodeps[f]->score[PRI_LANG] < 2000) { for (i = 0; i < nPatternLang; i++) { @@ -935,13 +934,6 @@ FcFontSetSort (FcConfig *config FC_UNUSED, } patternLangSat[i] = FcTrue; satisfies = FcTrue; - /* adjust score to ensure it's not more than 10000.0 - * which would means the lang didn't satisfy the requirements - */ - if (nodeps[f]->score[PRI_LANG_STRONG] > 10000.0) - nodeps[f]->score[PRI_LANG_STRONG] = 10000.0; - if (nodeps[f]->score[PRI_LANG_WEAK] > 10000.0) - nodeps[f]->score[PRI_LANG_WEAK] = 10000.0; break; } } @@ -949,8 +941,7 @@ FcFontSetSort (FcConfig *config FC_UNUSED, } if (!satisfies) { - nodeps[f]->score[PRI_LANG_STRONG] = 10000.0; - nodeps[f]->score[PRI_LANG_WEAK] = 10000.0; + nodeps[f]->score[PRI_LANG] = 10000.0; } }