diff --git a/Lib/fontTools/subset.py b/Lib/fontTools/subset.py
index f65a5a3..1307151 100644
--- a/Lib/fontTools/subset.py
+++ b/Lib/fontTools/subset.py
@@ -1698,14 +1698,19 @@
 def closure_glyphs(self, s):
   tables = [t for t in self.tables if t.isUnicode()]
   for u in s.unicodes_requested:
-    found = False
     for table in tables:
-      if u in table.cmap:
-        s.glyphs.add(table.cmap[u])
-        found = True
-        break
+      if table.format == 14:
+        for l in table.uvsDict.values():
+          # TODO(behdad) Speed this up!
+          gids = [g for uc,g in l if u == uc and g is not None]
+          s.glyphs.update(gids)
+          # Intentionally not setting found=True here.
+      else:
+        if u in table.cmap:
+          s.glyphs.add(table.cmap[u])
+          found = True
     if not found:
-      s.log("No glyph for Unicode value %s; skipping." % u)
+      s.log("No default glyph for Unicode %04X found." % u)
 
 @_add_method(ttLib.getTableClass('cmap'))
 def prune_pre_subset(self, options):
@@ -1731,8 +1736,10 @@
     except AttributeError:
       pass
     if t.format == 14:
-      # TODO(behdad) XXX We drop all the default-UVS mappings(g==None).
-      t.uvsDict = dict((v,[(u,g) for u,g in l if g in s.glyphs])
+      # TODO(behdad) We drop all the default-UVS mappings for glyphs_requested.
+      # I don't think we care about that...
+      t.uvsDict = dict((v,[(u,g) for u,g in l
+                           if g in s.glyphs or u in s.unicodes_requested])
                        for v,l in t.uvsDict.items())
       t.uvsDict = dict((v,l) for v,l in t.uvsDict.items() if l)
     elif t.isUnicode():
