Relax some warnings
diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py
index 68a3180..c4d4736 100644
--- a/Lib/fontTools/ttLib/tables/otTables.py
+++ b/Lib/fontTools/ttLib/tables/otTables.py
@@ -62,7 +62,11 @@
 				try:
 					endID = font.getGlyphID(end, requireReal=True) + 1
 				except KeyError:
-					warnings.warn("Coverage table has end glyph ID out of range: %s." % end)
+					# Apparently some tools use 65535 to "match all" the range
+					if end != 'glyph65535':
+						warnings.warn("Coverage table has end glyph ID out of range: %s." % end)
+					# NOTE: We clobber out-of-range things here.  There are legit uses for those,
+					# but none that we have seen in the wild.
 					endID = len(glyphOrder)
 				glyphs.extend(glyphOrder[glyphID] for glyphID in range(startID, endID))
 		else:
@@ -224,6 +228,8 @@
 			endID = startID + len(classList)
 			if endID > len(glyphOrder):
 				warnings.warn("ClassDef table has entries for out of range glyph IDs: %s,%s." % (start, len(classList)))
+				# NOTE: We clobber out-of-range things here.  There are legit uses for those,
+				# but none that we have seen in the wild.
 				endID = len(glyphOrder)
 
 			for glyphID, cls in zip(range(startID, endID), classList):
@@ -243,7 +249,11 @@
 				try:
 					endID = font.getGlyphID(end, requireReal=True)
 				except KeyError:
-					warnings.warn("ClassDef table has end glyph ID out of range: %s." % end)
+					# Apparently some tools use 65535 to "match all" the range
+					if end != 'glyph65535':
+						warnings.warn("ClassDef table has end glyph ID out of range: %s." % end)
+					# NOTE: We clobber out-of-range things here.  There are legit uses for those,
+					# but none that we have seen in the wild.
 					endID = len(glyphOrder)
 				for glyphID in range(startID, endID):
 					classDefs[glyphOrder[glyphID]] = cls