[ot-font] Use the cmap cache more

Use the cmap cache for get_nominal_glyph and
get_variation_glyph as well. The first of these
is used a lot in pango.
diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh
index c4a0987..3c6c87f 100644
--- a/src/hb-ot-cmap-table.hh
+++ b/src/hb-ot-cmap-table.hh
@@ -1896,9 +1896,8 @@
     ~accelerator_t () { this->table.destroy (); }
 
     bool get_nominal_glyph (hb_codepoint_t  unicode,
-			    hb_codepoint_t *glyph) const
+                            hb_codepoint_t *glyph) const
     {
-      if (unlikely (!this->get_glyph_funcZ)) return false;
       return this->get_glyph_funcZ (this->get_glyph_data, unicode, glyph);
     }
 
@@ -1913,13 +1912,21 @@
         *glyph = v;
 	return true;
       }
-      bool ret = this->get_glyph_funcZ (this->get_glyph_data, unicode, glyph);
+      bool ret  = get_nominal_glyph (unicode, glyph);
       if (cache && ret)
-	cache->set (unicode, *glyph);
+        cache->set (unicode, *glyph);
       return ret;
     }
 
     template <typename cache_t = void>
+    bool get_nominal_glyph (hb_codepoint_t  unicode,
+			    hb_codepoint_t *glyph,
+			    cache_t *cache = nullptr) const
+    {
+      return _cached_get (unicode, glyph, cache);
+    }
+
+    template <typename cache_t = void>
     unsigned int get_nominal_glyphs (unsigned int count,
 				     const hb_codepoint_t *first_unicode,
 				     unsigned int unicode_stride,
@@ -1940,9 +1947,11 @@
       return done;
     }
 
+    template <typename cache_t = void>
     bool get_variation_glyph (hb_codepoint_t  unicode,
 			      hb_codepoint_t  variation_selector,
-			      hb_codepoint_t *glyph) const
+			      hb_codepoint_t *glyph,
+			      cache_t *cache = nullptr) const
     {
       switch (this->subtable_uvs->get_glyph_variant (unicode,
 						     variation_selector,
@@ -1953,7 +1962,7 @@
 	case GLYPH_VARIANT_USE_DEFAULT:	break;
       }
 
-      return get_nominal_glyph (unicode, glyph);
+      return get_nominal_glyph (unicode, glyph, cache);
     }
 
     void collect_unicodes (hb_set_t *out, unsigned int num_glyphs) const
diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc
index e03339d..42f3143 100644
--- a/src/hb-ot-font.cc
+++ b/src/hb-ot-font.cc
@@ -136,7 +136,7 @@
 {
   const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
   const hb_ot_face_t *ot_face = ot_font->ot_face;
-  return ot_face->cmap->get_nominal_glyph (unicode, glyph);
+  return ot_face->cmap->get_nominal_glyph (unicode, glyph, ot_font->cmap_cache);
 }
 
 static unsigned int
@@ -167,7 +167,9 @@
 {
   const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
   const hb_ot_face_t *ot_face = ot_font->ot_face;
-  return ot_face->cmap->get_variation_glyph (unicode, variation_selector, glyph);
+  return ot_face->cmap->get_variation_glyph (unicode,
+                                             variation_selector, glyph,
+                                             ot_font->cmap_cache);
 }
 
 static void