Use inline functions instead of macros for a couple of things
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 1646dc7..45591e3 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -2102,7 +2102,10 @@
     return FcTrue;
 }
 
-#define APPROXIMATELY_EQUAL(x,y) (FC_ABS ((x) - (y)) * 33 <= FC_MAX (FC_ABS (x), FC_ABS (y)))
+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)
+{ return abs (x - y) * 33 <= fc_max (abs (x), abs (y)); }
 
 FcCharSet *
 FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks FC_UNUSED, int *spacing)
@@ -2161,7 +2164,7 @@
 			has_advance = FcTrue;
 			advance_one = advance;
 		    }
-		    else if (!APPROXIMATELY_EQUAL (advance, advance_one))
+		    else if (!fc_approximately_equal (advance, advance_one))
 		    {
 			if (fixed_advance)
 			{
@@ -2169,7 +2172,7 @@
 			    fixed_advance = FcFalse;
 			    advance_two = advance;
 			}
-			else if (!APPROXIMATELY_EQUAL (advance, advance_two))
+			else if (!fc_approximately_equal (advance, advance_two))
 			    dual_advance = FcFalse;
 		    }
 		}
@@ -2220,7 +2223,7 @@
     }
     if (fixed_advance)
 	*spacing = FC_MONO;
-    else if (dual_advance && APPROXIMATELY_EQUAL (2 * FC_MIN (advance_one, advance_two), FC_MAX (advance_one, advance_two)))
+    else if (dual_advance && fc_approximately_equal (2 * fc_min (advance_one, advance_two), fc_max (advance_one, advance_two)))
         *spacing = FC_DUAL;
     else
 	*spacing = FC_PROPORTIONAL;
diff --git a/src/fcint.h b/src/fcint.h
index 57c9f41..0869e9e 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -101,7 +101,6 @@
 
 #define FC_MIN(a,b) ((a) < (b) ? (a) : (b))
 #define FC_MAX(a,b) ((a) > (b) ? (a) : (b))
-#define FC_ABS(a)   ((a) < 0 ? -(a) : (a))
 
 /* slim_internal.h */
 #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) && !defined(__sun)