retain FDSelect & FDArray with --retain-gids

so in sync with fonttools behavior
diff --git a/src/hb-subset-cff-common.cc b/src/hb-subset-cff-common.cc
index 46821fe..f29937a 100644
--- a/src/hb-subset-cff-common.cc
+++ b/src/hb-subset-cff-common.cc
@@ -66,21 +66,17 @@
     hb_set_t  *set = hb_set_create ();
     if (set == &Null (hb_set_t))
       return false;
-    hb_codepoint_t  prev_fd = 0;
+    hb_codepoint_t  prev_fd = CFF_UNDEF_CODE;
     for (hb_codepoint_t i = 0; i < subset_num_glyphs; i++)
     {
       hb_codepoint_t	glyph;
       hb_codepoint_t  	fd;
       if (!plan->old_gid_for_new_gid (i, &glyph))
       {
-	/* for a missing glyph, use the same fd as the previous
-	 * as an attempt to minimize the number of ranges */
-	fd = prev_fd;
+	/* fonttools retains FDSelect & font dicts for missing glyphs. do the same */
+	glyph = i;
       }
-      else
-      {
-      	fd = src.get_fd (glyph);
-      }
+      fd = src.get_fd (glyph);
       set->add (fd);
 
       if (fd != prev_fd)
diff --git a/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf b/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf
index 6da8ad3..906bdbe 100644
--- a/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf
+++ b/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf
Binary files differ