Disable sbix if no-color or no-ot-font-bitmap
authorBehdad Esfahbod <behdad@behdad.org>
Sat, 11 May 2019 18:59:18 +0000 (11:59 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Sat, 11 May 2019 18:59:18 +0000 (11:59 -0700)
Part of https://github.com/harfbuzz/harfbuzz/issues/1652

src/hb-ot-font.cc

index 5051fa0..f5a676b 100644 (file)
@@ -180,19 +180,20 @@ hb_ot_get_glyph_extents (hb_font_t *font,
                         void *user_data HB_UNUSED)
 {
   const hb_ot_face_t *ot_face = (const hb_ot_face_t *) font_data;
-  bool ret = ot_face->sbix->get_extents (font, glyph, extents);
-  if (!ret)
-    ret = ot_face->glyf->get_extents (glyph, extents);
+  bool ret = false;
+
+#if !defined(HB_NO_OT_FONT_BITMAP) && !defined(HB_NO_COLOR)
+  if (!ret) ot_face->sbix->get_extents (font, glyph, extents);
+#endif
+  if (!ret) ret = ot_face->glyf->get_extents (glyph, extents);
 #ifndef HB_NO_OT_FONT_CFF
-  if (!ret)
-    ret = ot_face->cff1->get_extents (glyph, extents);
-  if (!ret)
-    ret = ot_face->cff2->get_extents (font, glyph, extents);
+  if (!ret) ret = ot_face->cff1->get_extents (glyph, extents);
+  if (!ret) ret = ot_face->cff2->get_extents (font, glyph, extents);
 #endif
-#ifndef HB_NO_OT_FONT_BITMAP
-  if (!ret)
-    ret = ot_face->CBDT->get_extents (font, glyph, extents);
+#if !defined(HB_NO_OT_FONT_BITMAP) && !defined(HB_NO_COLOR)
+  if (!ret) ret = ot_face->CBDT->get_extents (font, glyph, extents);
 #endif
+
   // TODO Hook up side-bearings variations.
   extents->x_bearing = font->em_scale_x (extents->x_bearing);
   extents->y_bearing = font->em_scale_y (extents->y_bearing);