diff --git a/Lib/fontTools/ttLib/tables/_g_l_y_f.py b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
index c74da25..6bc105c 100644
--- a/Lib/fontTools/ttLib/tables/_g_l_y_f.py
+++ b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
@@ -293,14 +293,14 @@
 				coordinates.append([safeEval(attrs["x"]), safeEval(attrs["y"])])
 				flags.append(not not safeEval(attrs["on"]))
 			coordinates = numpy.array(coordinates, numpy.int16)
-			flags = numpy.array(flags, numpy.int8)
+			flags = array.array("B", flags)
 			if not hasattr(self, "coordinates"):
 				self.coordinates = coordinates
 				self.flags = flags
 				self.endPtsOfContours = [len(coordinates)-1]
 			else:
 				self.coordinates = numpy.concatenate((self.coordinates, coordinates))
-				self.flags = numpy.concatenate((self.flags, flags))
+				self.flags.extend(flags)
 				self.endPtsOfContours.append(len(self.coordinates)-1)
 		elif name == "component":
 			if self.numberOfContours > 0:
@@ -410,11 +410,11 @@
 		# convert relative to absolute coordinates
 		self.coordinates = numpy.add.accumulate(coordinates)
 		# discard all flags but for "flagOnCurve"
-		self.flags = numpy.bitwise_and(flags, flagOnCurve).astype(numpy.int8)
+		self.flags = array.array("B", (f & flagOnCurve for f in flags))
 
 	def decompileCoordinatesRaw(self, nCoordinates, data):
 		# unpack flags and prepare unpacking of coordinates
-		flags = numpy.array([0] * nCoordinates, numpy.int8)
+		flags = array.array("B", [0] * nCoordinates)
 		# Warning: deep Python trickery going on. We use the struct module to unpack
 		# the coordinates. We build a format string based on the flags, so we can
 		# unpack the coordinates in one struct.unpack() call.
@@ -494,7 +494,7 @@
 		repeat = 0
 		for i in range(len(coordinates)):
 			# Oh, the horrors of TrueType
-			flag = self.flags[i]
+			flag = flags[i]
 			x, y = coordinates[i]
 			# do x
 			if x == 0:
@@ -608,10 +608,10 @@
 					allEndPts = allEndPts + (numpy.array(endPts) + len(allCoords)).tolist()
 					if len(coordinates) > 0:
 						allCoords = numpy.concatenate((allCoords, coordinates))
-						allFlags = numpy.concatenate((allFlags, flags))
+						allFlags.extend(flags)
 			return allCoords, allEndPts, allFlags
 		else:
-			return numpy.array([], numpy.int16), [], numpy.array([], numpy.int8)
+			return numpy.array([], numpy.int16), [], array.array("B")
 	
 	def __cmp__(self, other):
 		if self.numberOfContours <= 0:
@@ -620,7 +620,7 @@
 			if cmp(len(self.coordinates), len(other.coordinates)):
 				return 1
 			ctest = numpy.alltrue(numpy.alltrue(numpy.equal(self.coordinates, other.coordinates)))
-			ftest = numpy.alltrue(numpy.equal(self.flags, other.flags))
+			ftest = cmp(self.flags, other.flags)
 			if not ctest or not ftest:
 				return 1
 			return (
