More fixes

test-subset-glyf still failing. No idea why :(
This commit is contained in:
Behdad Esfahbod 2018-02-10 15:40:03 -06:00
parent a981d798ea
commit 43314ff4c0
2 changed files with 17 additions and 12 deletions

View File

@ -367,6 +367,5 @@ hb_subset (hb_face_t *source,
// TODO(grieger): Remove once basic subsetting is working + tests updated. // TODO(grieger): Remove once basic subsetting is working + tests updated.
hb_face_destroy (dest); hb_face_destroy (dest);
hb_face_reference (source); return success ? hb_face_reference (source) : hb_face_get_empty ();
return success ? source : hb_face_get_empty();
} }

View File

@ -41,7 +41,6 @@ read_file (const char *path,
rewind (fp); rewind (fp);
} }
bool success = false;
if (file_length > 0) { if (file_length > 0) {
buffer = (char *) calloc (file_length + 1, sizeof(char)); buffer = (char *) calloc (file_length + 1, sizeof(char));
if (fread (buffer, 1, file_length, fp) == file_length) { if (fread (buffer, 1, file_length, fp) == file_length) {
@ -61,7 +60,11 @@ read_file (const char *path,
static hb_face_t * static hb_face_t *
open_font (const char *font_path) 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; size_t length;
char *font_data = read_file(path, &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_abc = open_font("fonts/Roboto-Regular.abc.ttf");
hb_face_t *face_ac = open_font("fonts/Roboto-Regular.ac.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_abc);
g_assert (face_ac); g_assert (face_ac);
hb_set_t *codepoints = hb_set_create();
hb_set_add (codepoints, 97); hb_set_add (codepoints, 97);
hb_set_add (codepoints, 99); hb_set_add (codepoints, 99);
hb_subset_profile_t *profile = hb_subset_profile_create(); face_abc_subset = hb_subset (face_abc, profile, input);
hb_subset_input_t *input = hb_subset_input_create (codepoints);
hb_face_t *face_abc_subset = hb_subset (face_abc, profile, input);
g_assert (face_abc_subset); g_assert (face_abc_subset);
hb_blob_t *glyf_expected_blob = hb_face_reference_table (face_ac, HB_TAG('g','l','y','f')); 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_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. // 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, // 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_get_data (glyf_actual_blob, &actual_length), actual_length);
hb_blob_destroy (glyf_actual_blob); hb_blob_destroy (glyf_actual_blob);
hb_blob_destroy (glyf_expected_blob); hb_blob_destroy (glyf_expected_blob);
hb_subset_input_destroy (input); hb_subset_input_destroy (input);
hb_subset_profile_destroy (profile); hb_subset_profile_destroy (profile);
hb_set_destroy (codepoints); hb_set_destroy (codepoints);