950N/AChanges were originally part of Solaris bug fix for:
950N/A5099951 Fonts (in particular Lucida Sans Typewriter) look terrible in JDS.
950N/A
950N/AAllows fontconfig to use bitmap fonts (which may be hand-tuned for the
950N/Aspecific size) instead of scalable fonts when a close match is found and
950N/Aanti-aliasing is not requested.
950N/A
1590N/A--- a/src/fcmatch.c Thu Jun 18 09:03:11 2015
1590N/A+++ b/src/fcmatch.c Thu Jun 18 09:15:24 2015
1590N/A@@ -183,6 +183,15 @@
950N/A if (v2 == 0)
950N/A return 0;
950N/A v = v2 - v1;
950N/A+
950N/A+ /*
950N/A+ * Hack to allow bitmap fonts to equal requested font if it is close
950N/A+ */
950N/A+ if ( v > -.5 && v <= .5 )
950N/A+ {
950N/A+ v = 0;
950N/A+ }
950N/A+
950N/A if (v < 0)
950N/A v = -v;
950N/A return v;
1590N/A@@ -623,6 +632,46 @@
950N/A return new;
950N/A }
950N/A
950N/A+static void
950N/A+FcChangeFormat ( FcPattern *p )
950N/A+{
950N/A+ int i;
950N/A+ FcPatternElt *pe = FcPatternElts(p);
950N/A+
950N/A+ /*
950N/A+ * Hack. If user want monochrome mode, then try to pick bitmaps over
950N/A+ * outlines.
950N/A+ */
950N/A+ for ( i = 0; i < p->num; i++ )
950N/A+ {
950N/A+ if ( !strcmp(&pe[i].object, "antialias" ))
950N/A+ {
950N/A+ int aa = (int) &pe[i].values->value.u.b;
950N/A+ int j;
950N/A+ int done = 0;
950N/A+ FcValue v;
950N/A+
950N/A+ v.type = FcTypeBool;
950N/A+ v.u.b = aa;
950N/A+
950N/A+ for ( j = 0; j < p->num; j++ )
950N/A+ {
950N/A+ if ( !strcmp(&pe[j].object, "outline" ))
950N/A+ {
950N/A+ done = 1;
950N/A+ break;
950N/A+ }
950N/A+ }
950N/A+ if ( !done )
950N/A+ {
950N/A+ FcPatternObjectAddWithBinding (p, "outline", v,
950N/A+ FcValueBindingStrong, 1);
950N/A+ }
950N/A+ break;
950N/A+ }
950N/A+ }
950N/A+}
950N/A+
950N/A static FcPattern *
1590N/A FcFontSetMatchInternal (FcFontSet **sets,
1590N/A int nsets,
1590N/A@@ -636,6 +685,8 @@
950N/A int i;
950N/A int set;
950N/A
950N/A+ FcChangeFormat ( p );
950N/A+
1590N/A for (i = 0; i < PRI_END; i++)
950N/A bestscore[i] = 0;
950N/A best = 0;
1590N/A@@ -876,6 +927,8 @@
950N/A FcBool *patternLangSat;
950N/A FcValue patternLang;
950N/A
950N/A+ FcChangeFormat ( p );
950N/A+
1590N/A assert (sets != NULL);
1590N/A assert (p != NULL);
1590N/A assert (result != NULL);