Inline FcFreeTypeCheckGlyph()
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 538e8b4..256ac95 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -2067,41 +2067,6 @@
return 0;
}
-static FcBool
-FcFreeTypeCheckGlyph (FT_Face face,
- FcChar32 ucs4,
- FT_UInt glyph,
- FT_Pos *advance)
-{
- FT_Int load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
-
- /* When using scalable fonts, only report those glyphs
- * which can be scaled; otherwise those fonts will
- * only be available at some sizes, and never when
- * transformed. Avoid this by simply reporting bitmap-only
- * glyphs as missing
- */
- if (face->face_flags & FT_FACE_FLAG_SCALABLE)
- load_flags |= FT_LOAD_NO_BITMAP;
-
- *advance = 0;
- FT_Get_Advance (face, glyph, load_flags, advance);
-
- /* CID fonts built by Adobe used to make ASCII control chars to cid1
- * (space glyph). As such, always check contour for those characters. */
- if (ucs4 <= 0x001F)
- {
- if (FT_Load_Glyph (face, glyph, load_flags))
- return FcFalse;
-
- if (face->glyph->format == FT_GLYPH_FORMAT_OUTLINE &&
- face->glyph->outline.n_contours == 0)
- return FcFalse;
- }
-
- return FcTrue;
-}
-
static inline int fc_min (int a, int b) { return a <= b ? a : b; }
static inline int fc_max (int a, int b) { return a >= b ? a : b; }
static inline FcBool fc_approximately_equal (int x, int y)
@@ -2155,7 +2120,33 @@
ucs4 = FT_Get_First_Char (face, &glyph);
while (glyph != 0)
{
- if (FcFreeTypeCheckGlyph (face, ucs4, glyph, &advance))
+ FcBool good = FcTrue;
+
+ FT_Int load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
+
+ /* When using scalable fonts, only report those glyphs
+ * which can be scaled; otherwise those fonts will
+ * only be available at some sizes, and never when
+ * transformed. Avoid this by simply reporting bitmap-only
+ * glyphs as missing
+ */
+ if (face->face_flags & FT_FACE_FLAG_SCALABLE)
+ load_flags |= FT_LOAD_NO_BITMAP;
+
+ advance = 0;
+ FT_Get_Advance (face, glyph, load_flags, &advance);
+
+ /* CID fonts built by Adobe used to make ASCII control chars to cid1
+ * (space glyph). As such, always check contour for those characters. */
+ if (ucs4 <= 0x001F)
+ {
+ if (FT_Load_Glyph (face, glyph, load_flags) ||
+ (face->glyph->format == FT_GLYPH_FORMAT_OUTLINE &&
+ face->glyph->outline.n_contours == 0))
+ good = FcFalse;
+ }
+
+ if (good)
{
if (num_advances < 3 && advance)
{
@@ -2177,6 +2168,7 @@
off = ucs4 & 0xff;
leaf->map[off >> 5] |= (1 << (off & 0x1f));
}
+
ucs4 = FT_Get_Next_Char (face, ucs4, &glyph);
}
if (fcFontEncodings[o] == FT_ENCODING_MS_SYMBOL)