[repacker] Update repacker api method to take a table tag.
This is needed to allow table specific optimizations to be performed during repacking.
This commit is contained in:
parent
28c02b3768
commit
69913e012e
|
@ -25,18 +25,24 @@
|
||||||
#include "hb-repacker.hh"
|
#include "hb-repacker.hh"
|
||||||
|
|
||||||
#ifdef HB_EXPERIMENTAL_API
|
#ifdef HB_EXPERIMENTAL_API
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hb_subset_repack_or_fail:
|
* hb_subset_repack_or_fail:
|
||||||
|
* @table_tag: tag of the table being packed, needed to allow table specific optimizations.
|
||||||
* @hb_objects: raw array of struct hb_object_t, which provides
|
* @hb_objects: raw array of struct hb_object_t, which provides
|
||||||
* object graph info
|
* object graph info
|
||||||
* @num_hb_objs: number of hb_object_t in the hb_objects array.
|
* @num_hb_objs: number of hb_object_t in the hb_objects array.
|
||||||
*
|
*
|
||||||
* Given the input object graph info, repack a table to eliminate
|
* Given the input object graph info, repack a table to eliminate
|
||||||
* offset overflows. A nullptr is returned if the repacking attempt fails.
|
* offset overflows. A nullptr is returned if the repacking attempt fails.
|
||||||
|
* Table specific optimizations (eg. extension promotion in GSUB/GPOS) may be performed.
|
||||||
|
* Passing HB_TAG_NONE will disable table specific optimizations.
|
||||||
*
|
*
|
||||||
* Since: EXPERIMENTAL
|
* Since: EXPERIMENTAL
|
||||||
**/
|
**/
|
||||||
hb_blob_t* hb_subset_repack_or_fail (hb_object_t* hb_objects, unsigned num_hb_objs)
|
hb_blob_t* hb_subset_repack_or_fail (hb_tag_t table_tag,
|
||||||
|
hb_object_t* hb_objects,
|
||||||
|
unsigned num_hb_objs)
|
||||||
{
|
{
|
||||||
hb_vector_t<const hb_object_t *> packed;
|
hb_vector_t<const hb_object_t *> packed;
|
||||||
packed.alloc (num_hb_objs + 1);
|
packed.alloc (num_hb_objs + 1);
|
||||||
|
@ -45,7 +51,7 @@ hb_blob_t* hb_subset_repack_or_fail (hb_object_t* hb_objects, unsigned num_hb_ob
|
||||||
packed.push (&(hb_objects[i]));
|
packed.push (&(hb_objects[i]));
|
||||||
|
|
||||||
return hb_resolve_overflows (packed,
|
return hb_resolve_overflows (packed,
|
||||||
HB_OT_TAG_GSUB,
|
table_tag,
|
||||||
20,
|
20,
|
||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,8 @@ struct hb_object_t
|
||||||
typedef struct hb_object_t hb_object_t;
|
typedef struct hb_object_t hb_object_t;
|
||||||
|
|
||||||
HB_EXTERN hb_blob_t*
|
HB_EXTERN hb_blob_t*
|
||||||
hb_subset_repack_or_fail (hb_object_t* hb_objects,
|
hb_subset_repack_or_fail (hb_tag_t table_tag,
|
||||||
|
hb_object_t* hb_objects,
|
||||||
unsigned num_hb_objs);
|
unsigned num_hb_objs);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue