Add back code for choosing strike, and cleanup

The FT_Select_Size() call is important for bitmap-only fonts.
Put it back.  It was removed in e327c4e54544dac5415e8864e80d6b75a0c900fd
Remove some unused abstractions.
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index c59f203..a3bdf85 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -2202,17 +2202,13 @@
 FcFreeTypeCheckGlyph (FT_Face face,
 		      FcChar32 ucs4,
 		      FT_UInt glyph, FcBlanks *blanks,
-		      FT_Pos *advance,
-		      FcBool using_strike)
+		      FT_Pos *advance)
 {
     FT_Int	    load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
 
     if (!glyph)
 	return FcFalse;
 
-    if (using_strike)
-	load_flags &= ~FT_LOAD_NO_SCALE;
-
     /*
      * When using scalable fonts, only report those glyphs
      * which can be scaled; otherwise those fonts will
@@ -2246,11 +2242,8 @@
 
 #define APPROXIMATELY_EQUAL(x,y) (FC_ABS ((x) - (y)) <= FC_MAX (FC_ABS (x), FC_ABS (y)) / 33)
 
-static FcCharSet *
-FcFreeTypeCharSetAndSpacingForSize (FT_Face face,
-				    FcBlanks *blanks,
-				    int *spacing,
-				    FT_Int strike_index)
+FcCharSet *
+FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks, int *spacing)
 {
     FcChar32	    page, off, ucs4;
 #ifdef CHECK
@@ -2262,17 +2255,27 @@
     FT_UInt	    glyph;
     FT_Pos	    advance, advance_one = 0, advance_two = 0;
     FcBool	    has_advance = FcFalse, fixed_advance = FcTrue, dual_advance = FcFalse;
-    FcBool	    using_strike = FcFalse;
 
     fcs = FcCharSetCreate ();
     if (!fcs)
 	goto bail0;
 
 #if HAVE_FT_SELECT_SIZE
-    if (strike_index >= 0) {
+    if (!(face->face_flags & FT_FACE_FLAG_SCALABLE) &&
+	face->num_fixed_sizes > 0 &&
+	FT_Get_Sfnt_Table (face, ft_sfnt_head))
+    {
+	FT_Int strike_index = 0, i;
+	/* Select the face closest to 16 pixels tall */
+	for (i = 1; i < face->num_fixed_sizes; i++)
+	{
+	    if (abs (face->available_sizes[i].height - 16) <
+		abs (face->available_sizes[strike_index].height - 16))
+		strike_index = i;
+	}
+
 	if (FT_Select_Size (face, strike_index) != FT_Err_Ok)
 	    goto bail1;
-	using_strike = FcTrue;
     }
 #endif
 
@@ -2290,7 +2293,7 @@
             ucs4 = FT_Get_First_Char (face, &glyph);
             while (glyph != 0)
 	    {
-		if (FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike))
+		if (FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance))
 		{
 		    if (advance)
 		    {
@@ -2376,7 +2379,7 @@
 	    {
 		ucs4 = FcGlyphNameToUcs4 (name_buf);
 		if (ucs4 != 0xffff &&
-		    FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike))
+		    FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance))
 		{
 		    if (advance)
 		    {
@@ -2419,7 +2422,7 @@
 
 	if (has_char && !has_bit)
 	{
-	    if (!FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike))
+	    if (!FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance))
 		printf ("Bitmap missing broken char 0x%x\n", ucs4);
 	    else
 		printf ("Bitmap missing char 0x%x\n", ucs4);
@@ -2442,17 +2445,6 @@
 }
 
 FcCharSet *
-FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks, int *spacing)
-{
-    FcCharSet	*cs;
-    FT_Int	strike_index = -1;
-
-    cs = FcFreeTypeCharSetAndSpacingForSize (face, blanks, spacing, strike_index);
-
-    return cs;
-}
-
-FcCharSet *
 FcFreeTypeCharSet (FT_Face face, FcBlanks *blanks)
 {
     int spacing;