提交 7481f0ce 编写于 作者: G Garret Rieger 提交者: Behdad Esfahbod

Add codepoints to subset input.

上级 1cfe650f
...@@ -38,6 +38,8 @@ struct hb_subset_profile_t { ...@@ -38,6 +38,8 @@ struct hb_subset_profile_t {
struct hb_subset_input_t { struct hb_subset_input_t {
hb_object_header_t header; hb_object_header_t header;
ASSERT_POD (); ASSERT_POD ();
hb_set_t *codepoints;
}; };
struct hb_subset_face_t { struct hb_subset_face_t {
...@@ -82,9 +84,14 @@ hb_subset_profile_destroy (hb_subset_profile_t *profile) ...@@ -82,9 +84,14 @@ hb_subset_profile_destroy (hb_subset_profile_t *profile)
* Since: 1.7.5 * Since: 1.7.5
**/ **/
hb_subset_input_t * hb_subset_input_t *
hb_subset_input_create() hb_subset_input_create (hb_set_t *codepoints)
{ {
return hb_object_create<hb_subset_input_t>(); if (unlikely (!codepoints))
codepoints = hb_set_get_empty();
hb_subset_input_t *input = hb_object_create<hb_subset_input_t>();
input->codepoints = hb_set_reference(codepoints);
return input;
} }
/** /**
...@@ -97,6 +104,7 @@ hb_subset_input_destroy(hb_subset_input_t *subset_input) ...@@ -97,6 +104,7 @@ hb_subset_input_destroy(hb_subset_input_t *subset_input)
{ {
if (!hb_object_destroy (subset_input)) return; if (!hb_object_destroy (subset_input)) return;
hb_set_destroy (subset_input->codepoints);
free (subset_input); free (subset_input);
} }
...@@ -108,7 +116,7 @@ hb_subset_input_destroy(hb_subset_input_t *subset_input) ...@@ -108,7 +116,7 @@ hb_subset_input_destroy(hb_subset_input_t *subset_input)
* Since: 1.7.5 * Since: 1.7.5
**/ **/
hb_subset_face_t * hb_subset_face_t *
hb_subset_face_create(hb_face_t *face) hb_subset_face_create (hb_face_t *face)
{ {
if (unlikely (!face)) if (unlikely (!face))
face = hb_face_get_empty(); face = hb_face_get_empty();
...@@ -125,7 +133,7 @@ hb_subset_face_create(hb_face_t *face) ...@@ -125,7 +133,7 @@ hb_subset_face_create(hb_face_t *face)
* Since: 1.7.5 * Since: 1.7.5
**/ **/
void void
hb_subset_face_destroy(hb_subset_face_t *subset_face) hb_subset_face_destroy (hb_subset_face_t *subset_face)
{ {
if (!hb_object_destroy (subset_face)) return; if (!hb_object_destroy (subset_face)) return;
...@@ -143,10 +151,10 @@ hb_subset_face_destroy(hb_subset_face_t *subset_face) ...@@ -143,10 +151,10 @@ hb_subset_face_destroy(hb_subset_face_t *subset_face)
* Subsets a font according to provided profile and input. * Subsets a font according to provided profile and input.
**/ **/
hb_bool_t hb_bool_t
hb_subset(hb_subset_profile_t *profile, hb_subset (hb_subset_profile_t *profile,
hb_subset_input_t *input, hb_subset_input_t *input,
hb_subset_face_t *face, hb_subset_face_t *face,
hb_blob_t **result /* OUT */) hb_blob_t **result /* OUT */)
{ {
if (!profile || !input || !face) return false; if (!profile || !input || !face) return false;
......
...@@ -53,7 +53,7 @@ hb_subset_profile_destroy (hb_subset_profile_t *profile); ...@@ -53,7 +53,7 @@ hb_subset_profile_destroy (hb_subset_profile_t *profile);
typedef struct hb_subset_input_t hb_subset_input_t; typedef struct hb_subset_input_t hb_subset_input_t;
HB_EXTERN hb_subset_input_t * HB_EXTERN hb_subset_input_t *
hb_subset_input_create (); hb_subset_input_create (hb_set_t *codepoints);
HB_EXTERN void HB_EXTERN void
hb_subset_input_destroy (hb_subset_input_t *subset_input); hb_subset_input_destroy (hb_subset_input_t *subset_input);
......
...@@ -42,7 +42,7 @@ test_subset (void) ...@@ -42,7 +42,7 @@ test_subset (void)
hb_face_t *face = hb_face_create(font_blob, 0); hb_face_t *face = hb_face_create(font_blob, 0);
hb_subset_profile_t *profile = hb_subset_profile_create(); hb_subset_profile_t *profile = hb_subset_profile_create();
hb_subset_input_t *input = hb_subset_input_create(); hb_subset_input_t *input = hb_subset_input_create (hb_set_get_empty ());
hb_subset_face_t *subset_face = hb_subset_face_create(face); hb_subset_face_t *subset_face = hb_subset_face_create(face);
hb_blob_t *output; hb_blob_t *output;
......
...@@ -80,7 +80,7 @@ struct subset_consumer_t ...@@ -80,7 +80,7 @@ struct subset_consumer_t
{ {
// TODO(Q1) check for errors from creates and such // TODO(Q1) check for errors from creates and such
hb_subset_profile_t *subset_profile = hb_subset_profile_create(); hb_subset_profile_t *subset_profile = hb_subset_profile_create();
hb_subset_input_t *subset_input = hb_subset_input_create(); hb_subset_input_t *subset_input = hb_subset_input_create (hb_set_get_empty ());
hb_face_t *face = hb_font_get_face (font); hb_face_t *face = hb_font_get_face (font);
hb_subset_face_t *subset_face = hb_subset_face_create(face); hb_subset_face_t *subset_face = hb_subset_face_create(face);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册