[subset] Change hb_subset API to remove hb_subset_face_t
diff --git a/src/hb-subset.cc b/src/hb-subset.cc
index 7215b60..28cfd30 100644
--- a/src/hb-subset.cc
+++ b/src/hb-subset.cc
@@ -101,40 +101,6 @@
free (subset_input);
}
-/**
- * hb_subset_face_create:
- *
- * Return value: New subset face.
- *
- * Since: 1.7.5
- **/
-hb_subset_face_t *
-hb_subset_face_create (hb_face_t *face)
-{
- if (unlikely (!face))
- face = hb_face_get_empty();
-
- hb_subset_face_t *subset_face = hb_object_create<hb_subset_face_t> ();
- subset_face->face = hb_face_reference (face);
- subset_face->cmap.init(face);
-
- return subset_face;
-}
-
-/**
- * hb_subset_face_destroy:
- *
- * Since: 1.7.5
- **/
-void
-hb_subset_face_destroy (hb_subset_face_t *subset_face)
-{
- if (!hb_object_destroy (subset_face)) return;
-
- subset_face->cmap.fini();
- hb_face_destroy(subset_face->face);
- free (subset_face);
-}
/**
* hb_subset:
@@ -145,15 +111,14 @@
*
* Subsets a font according to provided profile and input.
**/
-hb_bool_t
-hb_subset (hb_subset_profile_t *profile,
- hb_subset_input_t *input,
- hb_subset_face_t *face,
- hb_blob_t **result /* OUT */)
+hb_face_t *
+hb_subset (hb_face_t *source,
+ hb_subset_profile_t *profile,
+ hb_subset_input_t *input)
{
- if (!profile || !input || !face) return false;
+ if (unlikely (!profile || !input || !source)) return nullptr;
- hb_subset_plan_t *plan = hb_subset_plan_create (face, profile, input);
+ hb_subset_plan_t *plan = hb_subset_plan_create (source, profile, input);
hb_codepoint_t old_gid = -1;
while (hb_set_next(plan->glyphs_to_retain, &old_gid)) {
@@ -174,14 +139,13 @@
bool success = true;
hb_blob_t *glyf_prime = nullptr;
- if (hb_subset_glyf (plan, face->face, &glyf_prime)) {
+ if (hb_subset_glyf (plan, source, &glyf_prime)) {
// TODO: write new glyf to new face.
} else {
success = false;
}
hb_blob_destroy (glyf_prime);
- *result = hb_face_reference_blob(face->face);
hb_subset_plan_destroy (plan);
- return success;
+ return success ? hb_face_reference (source) : nullptr;
}