diff --git a/src/hb-subset.cc b/src/hb-subset.cc index cf26ee32a..40f175d99 100644 --- a/src/hb-subset.cc +++ b/src/hb-subset.cc @@ -367,6 +367,5 @@ hb_subset (hb_face_t *source, // TODO(grieger): Remove once basic subsetting is working + tests updated. hb_face_destroy (dest); - hb_face_reference (source); - return success ? source : hb_face_get_empty(); + return success ? hb_face_reference (source) : hb_face_get_empty (); } diff --git a/test/api/test-subset-glyf.c b/test/api/test-subset-glyf.c index 196047fe6..91306767e 100644 --- a/test/api/test-subset-glyf.c +++ b/test/api/test-subset-glyf.c @@ -41,7 +41,6 @@ read_file (const char *path, rewind (fp); } - bool success = false; if (file_length > 0) { buffer = (char *) calloc (file_length + 1, sizeof(char)); if (fread (buffer, 1, file_length, fp) == file_length) { @@ -61,7 +60,11 @@ read_file (const char *path, static hb_face_t * open_font (const char *font_path) { - gchar *path = g_test_build_filename(G_TEST_DIST, font_path, NULL); +#if GLIB_CHECK_VERSION(2,37,2) + gchar* path = g_test_build_filename(G_TEST_DIST, font_path, NULL); +#else + gchar* path = g_strdup(fontFile); +#endif size_t length; char *font_data = read_file(path, &length); @@ -88,30 +91,33 @@ test_subset_glyf (void) { hb_face_t *face_abc = open_font("fonts/Roboto-Regular.abc.ttf"); hb_face_t *face_ac = open_font("fonts/Roboto-Regular.ac.ttf"); + hb_face_t *face_abc_subset; + hb_blob_t *glyf_expected_blob; + hb_blob_t *glyf_actual_blob; + hb_set_t *codepoints = hb_set_create(); + hb_subset_profile_t *profile = hb_subset_profile_create(); + hb_subset_input_t *input = hb_subset_input_create (codepoints); g_assert (face_abc); g_assert (face_ac); - hb_set_t *codepoints = hb_set_create(); hb_set_add (codepoints, 97); hb_set_add (codepoints, 99); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_subset_input_t *input = hb_subset_input_create (codepoints); - - hb_face_t *face_abc_subset = hb_subset (face_abc, profile, input); + face_abc_subset = hb_subset (face_abc, profile, input); g_assert (face_abc_subset); - hb_blob_t *glyf_expected_blob = hb_face_reference_table (face_ac, HB_TAG('g','l','y','f')); - hb_blob_t *glyf_actual_blob = hb_face_reference_table (face_abc_subset, HB_TAG('g','l','y','f')); + glyf_expected_blob = hb_face_reference_table (face_ac, HB_TAG('g','l','y','f')); + glyf_actual_blob = hb_face_reference_table (face_abc_subset, HB_TAG('g','l','y','f')); - int expected_length, actual_length; // TODO(grieger): Uncomment below once this actually works. + //int expected_length, actual_length; // g_assert_cmpmem(hb_blob_get_data (glyf_expected_blob, &expected_length), expected_length, // hb_blob_get_data (glyf_actual_blob, &actual_length), actual_length); hb_blob_destroy (glyf_actual_blob); hb_blob_destroy (glyf_expected_blob); + hb_subset_input_destroy (input); hb_subset_profile_destroy (profile); hb_set_destroy (codepoints);