Bug 72380 - Never drop first font when trimming

Let me show it with an example.

Currently:

$ fc-match symbol
symbol.ttf: "Symbol" "Regular"

$ fc-match symbol --sort | head -n 1
Symbol.pfb: "Symbol" "Regular"

$ fc-match symbol --sort --all | head -n 1
symbol.ttf: "Symbol" "Regular"

I want to make sure the above three commands all return the same font.
Ie.  I want to make sure FcFontMatch() always returns the first font
from FcFontSort().  As such, never trim first font.
This commit is contained in:
Behdad Esfahbod 2013-12-09 21:21:57 -05:00
parent c9e24f9ef4
commit fee834a9c9
1 changed files with 3 additions and 2 deletions

View File

@ -743,6 +743,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
{ {
FcBool ret = FcFalse; FcBool ret = FcFalse;
FcCharSet *cs; FcCharSet *cs;
int i;
cs = 0; cs = 0;
if (trim || csp) if (trim || csp)
@ -752,7 +753,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
goto bail; goto bail;
} }
while (nnode--) for (i = 0; i < nnode; i++)
{ {
FcSortNode *node = *n++; FcSortNode *node = *n++;
FcBool adds_chars = FcFalse; FcBool adds_chars = FcFalse;
@ -776,7 +777,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
* If this font isn't a subset of the previous fonts, * If this font isn't a subset of the previous fonts,
* add it to the list * add it to the list
*/ */
if (!trim || adds_chars) if (!i || !trim || adds_chars)
{ {
FcPatternReference (node->pattern); FcPatternReference (node->pattern);
if (FcDebug () & FC_DBG_MATCHV) if (FcDebug () & FC_DBG_MATCHV)