From 67eb9acf792a63e4d6a8447c23cbb5d4b97891dc Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 15 Feb 2022 17:17:49 -0600 Subject: [PATCH] [config] Add HB_NO_BORING_EXPANSION --- src/hb-config.hh | 1 + src/hb-ot-hmtx-table.hh | 4 ++++ src/hb-static.cc | 5 ++++- test/api/test-be-glyph-advance.c | 2 ++ test/api/test-be-num-glyphs.c | 2 ++ 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/hb-config.hh b/src/hb-config.hh index 5141ad834..4b46dea93 100644 --- a/src/hb-config.hh +++ b/src/hb-config.hh @@ -85,6 +85,7 @@ #ifdef HB_MINI #define HB_NO_AAT #define HB_NO_LEGACY +#define HB_NO_BORING_EXPANSION #endif #if defined(HAVE_CONFIG_OVERRIDE_H) || defined(HB_CONFIG_OVERRIDE_H) diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh index 0e7927b4b..7487e40e6 100644 --- a/src/hb-ot-hmtx-table.hh +++ b/src/hb-ot-hmtx-table.hh @@ -261,6 +261,10 @@ struct hmtxvmtx if (unlikely (!num_advances)) return default_advance; +#ifdef HB_NO_BORING_EXPANSION + return 0; +#endif + if (unlikely (glyph >= num_glyphs)) return 0; diff --git a/src/hb-static.cc b/src/hb-static.cc index 5d0dd07ba..0fd8fe9e8 100644 --- a/src/hb-static.cc +++ b/src/hb-static.cc @@ -102,7 +102,10 @@ hb_face_t::load_num_glyphs () const { unsigned ret = 0; - ret = load_num_glyphs_from_loca (this); +#ifndef HB_NO_BORING_EXPANSION + if (!ret) + ret = load_num_glyphs_from_loca (this); +#endif if (!ret) ret = load_num_glyphs_from_maxp (this); diff --git a/test/api/test-be-glyph-advance.c b/test/api/test-be-glyph-advance.c index eb0a04bf1..77fdee136 100644 --- a/test/api/test-be-glyph-advance.c +++ b/test/api/test-be-glyph-advance.c @@ -77,9 +77,11 @@ test_maxp_and_hmtx (void) g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 2), ==, 3); g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 3), ==, 3); g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 4), ==, 3); +#ifndef HB_NO_BORING_EXPANSION g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 5), ==, 8); g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 6), ==, 9); g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 7), ==, 9); +#endif g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 8), ==, 0); g_assert_cmpuint (hb_font_get_glyph_h_advance (font, 9), ==, 0); g_assert_cmpuint (hb_font_get_glyph_h_advance (font,10), ==, 0); diff --git a/test/api/test-be-num-glyphs.c b/test/api/test-be-num-glyphs.c index 9ba42eb7f..ab8d11043 100644 --- a/test/api/test-be-num-glyphs.c +++ b/test/api/test-be-num-glyphs.c @@ -45,6 +45,7 @@ test_maxp_and_loca (void) g_assert_cmpuint (hb_face_get_glyph_count (face), ==, 5); hb_face_destroy (face); +#ifndef HB_NO_BORING_EXPANSION face = hb_face_builder_create (); HB_FACE_ADD_TABLE (face, "maxp", maxp_data); HB_FACE_ADD_TABLE (face, "loca", loca_data); @@ -55,6 +56,7 @@ test_maxp_and_loca (void) HB_FACE_ADD_TABLE (face, "loca", loca_data); g_assert_cmpuint (hb_face_get_glyph_count (face), ==, 8); hb_face_destroy (face); +#endif }