From d2a0149c2999eab315a0582a5e1fa31a2511b869 Mon Sep 17 00:00:00 2001 From: Michiharu Ariza Date: Thu, 21 Mar 2019 18:09:37 -0700 Subject: [PATCH] added api test for subset VVAR & bug fix added a mod copy of SourceSerifVariable-Roman.ttf with VVAR as a test font --- src/hb-ot-var-hvar-table.hh | 7 +- test/api/Makefile.am | 2 + .../SourceSerifVariable-Roman-VVAR.abc.ttf | Bin 0 -> 5632 bytes ...SerifVariable-Roman-VVAR.ac.retaingids.ttf | Bin 0 -> 5288 bytes .../SourceSerifVariable-Roman-VVAR.ac.ttf | Bin 0 -> 3224 bytes test/api/test-subset-vvar.c | 103 ++++++++++++++++++ 6 files changed, 108 insertions(+), 4 deletions(-) create mode 100644 test/api/fonts/SourceSerifVariable-Roman-VVAR.abc.ttf create mode 100644 test/api/fonts/SourceSerifVariable-Roman-VVAR.ac.retaingids.ttf create mode 100644 test/api/fonts/SourceSerifVariable-Roman-VVAR.ac.ttf create mode 100644 test/api/test-subset-vvar.c diff --git a/src/hb-ot-var-hvar-table.hh b/src/hb-ot-var-hvar-table.hh index 19257f6d0..bf2c1c165 100644 --- a/src/hb-ot-var-hvar-table.hh +++ b/src/hb-ot-var-hvar-table.hh @@ -123,9 +123,8 @@ struct index_map_subset_plan_t { enum index_map_index_t { ADV_INDEX, - LSB_INDEX, - RSB_INDEX, - TSB_INDEX, + LSB_INDEX, /* dual as TSB */ + RSB_INDEX, /* dual as BSB */ VORG_INDEX }; @@ -217,7 +216,7 @@ struct index_map_subset_plan_t for (unsigned int i = 0; i < max_inners.length; i++) { if (inner_remaps[i].get_count () == 0) continue; - unsigned int bit_count = hb_bit_storage (inner_remaps[i][max_inners[i]]); + unsigned int bit_count = (max_inners[i]==0)? 1: hb_bit_storage (inner_remaps[i][max_inners[i]]); if (bit_count > inner_bit_count) inner_bit_count = bit_count; } diff --git a/test/api/Makefile.am b/test/api/Makefile.am index c5f1f6d8b..eb033811c 100644 --- a/test/api/Makefile.am +++ b/test/api/Makefile.am @@ -52,6 +52,7 @@ TEST_PROGS = \ test-subset-cff2 \ test-subset-gvar \ test-subset-hvar \ + test-subset-vvar \ test-unicode \ test-version \ $(NULL) @@ -68,6 +69,7 @@ test_subset_cff1_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_cff2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_gvar_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_hvar_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la +test_subset_vvar_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_unicode_CPPFLAGS = \ $(AM_CPPFLAGS) \ diff --git a/test/api/fonts/SourceSerifVariable-Roman-VVAR.abc.ttf b/test/api/fonts/SourceSerifVariable-Roman-VVAR.abc.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7d94abcb0b2cd08e99adcc2d59f51cb3371c12e3 GIT binary patch literal 5632 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