Return NotImplemented
diff --git a/Lib/fontTools/ttLib/tables/DefaultTable.py b/Lib/fontTools/ttLib/tables/DefaultTable.py
index 33facc2..f5a6d00 100644
--- a/Lib/fontTools/ttLib/tables/DefaultTable.py
+++ b/Lib/fontTools/ttLib/tables/DefaultTable.py
@@ -40,5 +40,5 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 		return self.__dict__ == other.__dict__
diff --git a/Lib/fontTools/ttLib/tables/_c_m_a_p.py b/Lib/fontTools/ttLib/tables/_c_m_a_p.py
index 11744dc..f510467 100644
--- a/Lib/fontTools/ttLib/tables/_c_m_a_p.py
+++ b/Lib/fontTools/ttLib/tables/_c_m_a_p.py
@@ -153,7 +153,7 @@
 	
 	def __lt__(self, other):
 		if not isinstance(other, CmapSubtable):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 
 		# implemented so that list.sort() sorts according to the spec.
 		selfTuple = (
diff --git a/Lib/fontTools/ttLib/tables/_g_l_y_f.py b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
index 7542b04..86abfc1 100644
--- a/Lib/fontTools/ttLib/tables/_g_l_y_f.py
+++ b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
@@ -783,7 +783,7 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 		return self.__dict__ == other.__dict__
 
 
@@ -946,7 +946,7 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 		return self.__dict__ == other.__dict__
 
 class GlyphCoordinates(object):
@@ -1048,7 +1048,7 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 		return self._a == other._a
 
 
diff --git a/Lib/fontTools/ttLib/tables/_n_a_m_e.py b/Lib/fontTools/ttLib/tables/_n_a_m_e.py
index 3663126..78bc5e6 100644
--- a/Lib/fontTools/ttLib/tables/_n_a_m_e.py
+++ b/Lib/fontTools/ttLib/tables/_n_a_m_e.py
@@ -127,7 +127,7 @@
 	
 	def __lt__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 
 		# implemented so that list.sort() sorts according to the spec.
 		selfTuple = (
diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py
index 3435986..77585f7 100644
--- a/Lib/fontTools/ttLib/tables/otBase.py
+++ b/Lib/fontTools/ttLib/tables/otBase.py
@@ -290,7 +290,7 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 		return self.items == other.items
 	
 	def _doneWriting(self, internedTables=None):
@@ -679,7 +679,7 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 
 		self.ensureDecompiled()
 		other.ensureDecompiled()
@@ -848,5 +848,5 @@
 		return not self.__eq__(other)
 	def __eq__(self, other):
 		if type(self) != type(other):
-			raise TypeError("unordered types %s() < %s()", type(self), type(other))
+			return NotImplemented
 		return self.__dict__ == other.__dict__