xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-subset.h (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2018  Google, Inc.
3*2d1272b8SAndroid Build Coastguard Worker  *
4*2d1272b8SAndroid Build Coastguard Worker  *  This is part of HarfBuzz, a text shaping library.
5*2d1272b8SAndroid Build Coastguard Worker  *
6*2d1272b8SAndroid Build Coastguard Worker  * Permission is hereby granted, without written agreement and without
7*2d1272b8SAndroid Build Coastguard Worker  * license or royalty fees, to use, copy, modify, and distribute this
8*2d1272b8SAndroid Build Coastguard Worker  * software and its documentation for any purpose, provided that the
9*2d1272b8SAndroid Build Coastguard Worker  * above copyright notice and the following two paragraphs appear in
10*2d1272b8SAndroid Build Coastguard Worker  * all copies of this software.
11*2d1272b8SAndroid Build Coastguard Worker  *
12*2d1272b8SAndroid Build Coastguard Worker  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13*2d1272b8SAndroid Build Coastguard Worker  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14*2d1272b8SAndroid Build Coastguard Worker  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15*2d1272b8SAndroid Build Coastguard Worker  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16*2d1272b8SAndroid Build Coastguard Worker  * DAMAGE.
17*2d1272b8SAndroid Build Coastguard Worker  *
18*2d1272b8SAndroid Build Coastguard Worker  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19*2d1272b8SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20*2d1272b8SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21*2d1272b8SAndroid Build Coastguard Worker  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22*2d1272b8SAndroid Build Coastguard Worker  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23*2d1272b8SAndroid Build Coastguard Worker  *
24*2d1272b8SAndroid Build Coastguard Worker  * Google Author(s): Rod Sheeter
25*2d1272b8SAndroid Build Coastguard Worker  */
26*2d1272b8SAndroid Build Coastguard Worker 
27*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_SUBSET_H
28*2d1272b8SAndroid Build Coastguard Worker #define HB_SUBSET_H
29*2d1272b8SAndroid Build Coastguard Worker 
30*2d1272b8SAndroid Build Coastguard Worker #include "hb.h"
31*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot.h"
32*2d1272b8SAndroid Build Coastguard Worker 
33*2d1272b8SAndroid Build Coastguard Worker HB_BEGIN_DECLS
34*2d1272b8SAndroid Build Coastguard Worker 
35*2d1272b8SAndroid Build Coastguard Worker /**
36*2d1272b8SAndroid Build Coastguard Worker  * hb_subset_input_t:
37*2d1272b8SAndroid Build Coastguard Worker  *
38*2d1272b8SAndroid Build Coastguard Worker  * Things that change based on the input. Characters to keep, etc.
39*2d1272b8SAndroid Build Coastguard Worker  */
40*2d1272b8SAndroid Build Coastguard Worker 
41*2d1272b8SAndroid Build Coastguard Worker typedef struct hb_subset_input_t hb_subset_input_t;
42*2d1272b8SAndroid Build Coastguard Worker 
43*2d1272b8SAndroid Build Coastguard Worker /**
44*2d1272b8SAndroid Build Coastguard Worker  * hb_subset_plan_t:
45*2d1272b8SAndroid Build Coastguard Worker  *
46*2d1272b8SAndroid Build Coastguard Worker  * Contains information about how the subset operation will be executed.
47*2d1272b8SAndroid Build Coastguard Worker  * Such as mappings from the old glyph ids to the new ones in the subset.
48*2d1272b8SAndroid Build Coastguard Worker  */
49*2d1272b8SAndroid Build Coastguard Worker 
50*2d1272b8SAndroid Build Coastguard Worker typedef struct hb_subset_plan_t hb_subset_plan_t;
51*2d1272b8SAndroid Build Coastguard Worker 
52*2d1272b8SAndroid Build Coastguard Worker /**
53*2d1272b8SAndroid Build Coastguard Worker  * hb_subset_flags_t:
54*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_DEFAULT: all flags at their default value of false.
55*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_NO_HINTING: If set hinting instructions will be dropped in
56*2d1272b8SAndroid Build Coastguard Worker  * the produced subset. Otherwise hinting instructions will be retained.
57*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_RETAIN_GIDS: If set glyph indices will not be modified in
58*2d1272b8SAndroid Build Coastguard Worker  * the produced subset. If glyphs are dropped their indices will be retained
59*2d1272b8SAndroid Build Coastguard Worker  * as an empty glyph.
60*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_DESUBROUTINIZE: If set and subsetting a CFF font the
61*2d1272b8SAndroid Build Coastguard Worker  * subsetter will attempt to remove subroutines from the CFF glyphs.
62*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_NAME_LEGACY: If set non-unicode name records will be
63*2d1272b8SAndroid Build Coastguard Worker  * retained in the subset.
64*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG:	If set the subsetter will set the
65*2d1272b8SAndroid Build Coastguard Worker  * OVERLAP_SIMPLE flag on each simple glyph.
66*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED: If set the subsetter will not
67*2d1272b8SAndroid Build Coastguard Worker  * drop unrecognized tables and instead pass them through untouched.
68*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_NOTDEF_OUTLINE: If set the notdef glyph outline will be
69*2d1272b8SAndroid Build Coastguard Worker  * retained in the final subset.
70*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_GLYPH_NAMES: If set the PS glyph names will be retained
71*2d1272b8SAndroid Build Coastguard Worker  * in the final subset.
72*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES: If set then the unicode ranges in
73*2d1272b8SAndroid Build Coastguard Worker  * OS/2 will not be recalculated.
74*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE: If set don't perform glyph closure on layout
75*2d1272b8SAndroid Build Coastguard Worker  * substitution rules (GSUB). Since: 7.2.0.
76*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS: If set perform IUP delta optimization on the
77*2d1272b8SAndroid Build Coastguard Worker  * remaining gvar table's deltas. Since: 8.5.0
78*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_FLAGS_IFTB_REQUIREMENTS: If set enforce requirements on the output subset
79*2d1272b8SAndroid Build Coastguard Worker  * to allow it to be used with incremental font transfer IFTB patches. Primarily,
80*2d1272b8SAndroid Build Coastguard Worker  * this forces all outline data to use long (32 bit) offsets. Since: EXPERIMENTAL
81*2d1272b8SAndroid Build Coastguard Worker  *
82*2d1272b8SAndroid Build Coastguard Worker  * List of boolean properties that can be configured on the subset input.
83*2d1272b8SAndroid Build Coastguard Worker  *
84*2d1272b8SAndroid Build Coastguard Worker  * Since: 2.9.0
85*2d1272b8SAndroid Build Coastguard Worker  **/
86*2d1272b8SAndroid Build Coastguard Worker typedef enum { /*< flags >*/
87*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_DEFAULT =		     0x00000000u,
88*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_NO_HINTING =		     0x00000001u,
89*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_RETAIN_GIDS =		     0x00000002u,
90*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_DESUBROUTINIZE =	     0x00000004u,
91*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_NAME_LEGACY =		     0x00000008u,
92*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG =	     0x00000010u,
93*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u,
94*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_NOTDEF_OUTLINE =	     0x00000040u,
95*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_GLYPH_NAMES =		     0x00000080u,
96*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES =  0x00000100u,
97*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE =        0x00000200u,
98*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS	  =  0x00000400u,
99*2d1272b8SAndroid Build Coastguard Worker #ifdef HB_EXPERIMENTAL_API
100*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_FLAGS_IFTB_REQUIREMENTS       =  0x00000800u,
101*2d1272b8SAndroid Build Coastguard Worker #endif
102*2d1272b8SAndroid Build Coastguard Worker } hb_subset_flags_t;
103*2d1272b8SAndroid Build Coastguard Worker 
104*2d1272b8SAndroid Build Coastguard Worker /**
105*2d1272b8SAndroid Build Coastguard Worker  * hb_subset_sets_t:
106*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_GLYPH_INDEX: the set of glyph indexes to retain in the subset.
107*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_UNICODE: the set of unicode codepoints to retain in the subset.
108*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG: the set of table tags which specifies tables that should not be
109*2d1272b8SAndroid Build Coastguard Worker  * subsetted.
110*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_DROP_TABLE_TAG: the set of table tags which specifies tables which will be dropped
111*2d1272b8SAndroid Build Coastguard Worker  * in the subset.
112*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_NAME_ID: the set of name ids that will be retained.
113*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_NAME_LANG_ID: the set of name lang ids that will be retained.
114*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_LAYOUT_FEATURE_TAG: the set of layout feature tags that will be retained
115*2d1272b8SAndroid Build Coastguard Worker  * in the subset.
116*2d1272b8SAndroid Build Coastguard Worker  * @HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG: the set of layout script tags that will be retained
117*2d1272b8SAndroid Build Coastguard Worker  * in the subset. Defaults to all tags. Since: 5.0.0
118*2d1272b8SAndroid Build Coastguard Worker  *
119*2d1272b8SAndroid Build Coastguard Worker  * List of sets that can be configured on the subset input.
120*2d1272b8SAndroid Build Coastguard Worker  *
121*2d1272b8SAndroid Build Coastguard Worker  * Since: 2.9.1
122*2d1272b8SAndroid Build Coastguard Worker  **/
123*2d1272b8SAndroid Build Coastguard Worker typedef enum {
124*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_GLYPH_INDEX = 0,
125*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_UNICODE,
126*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG,
127*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_DROP_TABLE_TAG,
128*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_NAME_ID,
129*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_NAME_LANG_ID,
130*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_LAYOUT_FEATURE_TAG,
131*2d1272b8SAndroid Build Coastguard Worker   HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG,
132*2d1272b8SAndroid Build Coastguard Worker } hb_subset_sets_t;
133*2d1272b8SAndroid Build Coastguard Worker 
134*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_subset_input_t *
135*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_create_or_fail (void);
136*2d1272b8SAndroid Build Coastguard Worker 
137*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_subset_input_t *
138*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_reference (hb_subset_input_t *input);
139*2d1272b8SAndroid Build Coastguard Worker 
140*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
141*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_destroy (hb_subset_input_t *input);
142*2d1272b8SAndroid Build Coastguard Worker 
143*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
144*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_set_user_data (hb_subset_input_t  *input,
145*2d1272b8SAndroid Build Coastguard Worker 			       hb_user_data_key_t *key,
146*2d1272b8SAndroid Build Coastguard Worker 			       void *		   data,
147*2d1272b8SAndroid Build Coastguard Worker 			       hb_destroy_func_t   destroy,
148*2d1272b8SAndroid Build Coastguard Worker 			       hb_bool_t	   replace);
149*2d1272b8SAndroid Build Coastguard Worker 
150*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void *
151*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_get_user_data (const hb_subset_input_t *input,
152*2d1272b8SAndroid Build Coastguard Worker 			       hb_user_data_key_t      *key);
153*2d1272b8SAndroid Build Coastguard Worker 
154*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
155*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_keep_everything (hb_subset_input_t *input);
156*2d1272b8SAndroid Build Coastguard Worker 
157*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_set_t *
158*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_unicode_set (hb_subset_input_t *input);
159*2d1272b8SAndroid Build Coastguard Worker 
160*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_set_t *
161*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_glyph_set (hb_subset_input_t *input);
162*2d1272b8SAndroid Build Coastguard Worker 
163*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_set_t *
164*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_set (hb_subset_input_t *input, hb_subset_sets_t set_type);
165*2d1272b8SAndroid Build Coastguard Worker 
166*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_map_t*
167*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_old_to_new_glyph_mapping (hb_subset_input_t *input);
168*2d1272b8SAndroid Build Coastguard Worker 
169*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_subset_flags_t
170*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_get_flags (hb_subset_input_t *input);
171*2d1272b8SAndroid Build Coastguard Worker 
172*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
173*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_set_flags (hb_subset_input_t *input,
174*2d1272b8SAndroid Build Coastguard Worker 			   unsigned value);
175*2d1272b8SAndroid Build Coastguard Worker 
176*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
177*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_pin_all_axes_to_default (hb_subset_input_t  *input,
178*2d1272b8SAndroid Build Coastguard Worker 					 hb_face_t          *face);
179*2d1272b8SAndroid Build Coastguard Worker 
180*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
181*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_pin_axis_to_default (hb_subset_input_t  *input,
182*2d1272b8SAndroid Build Coastguard Worker 				     hb_face_t          *face,
183*2d1272b8SAndroid Build Coastguard Worker 				     hb_tag_t            axis_tag);
184*2d1272b8SAndroid Build Coastguard Worker 
185*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
186*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_pin_axis_location (hb_subset_input_t  *input,
187*2d1272b8SAndroid Build Coastguard Worker 				   hb_face_t          *face,
188*2d1272b8SAndroid Build Coastguard Worker 				   hb_tag_t            axis_tag,
189*2d1272b8SAndroid Build Coastguard Worker 				   float               axis_value);
190*2d1272b8SAndroid Build Coastguard Worker 
191*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
192*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_get_axis_range (hb_subset_input_t  *input,
193*2d1272b8SAndroid Build Coastguard Worker 				hb_tag_t            axis_tag,
194*2d1272b8SAndroid Build Coastguard Worker 				float              *axis_min_value,
195*2d1272b8SAndroid Build Coastguard Worker 				float              *axis_max_value,
196*2d1272b8SAndroid Build Coastguard Worker 				float              *axis_def_value);
197*2d1272b8SAndroid Build Coastguard Worker 
198*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
199*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_set_axis_range (hb_subset_input_t  *input,
200*2d1272b8SAndroid Build Coastguard Worker 				hb_face_t          *face,
201*2d1272b8SAndroid Build Coastguard Worker 				hb_tag_t            axis_tag,
202*2d1272b8SAndroid Build Coastguard Worker 				float               axis_min_value,
203*2d1272b8SAndroid Build Coastguard Worker 				float               axis_max_value,
204*2d1272b8SAndroid Build Coastguard Worker 				float               axis_def_value);
205*2d1272b8SAndroid Build Coastguard Worker 
206*2d1272b8SAndroid Build Coastguard Worker #ifdef HB_EXPERIMENTAL_API
207*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
208*2d1272b8SAndroid Build Coastguard Worker hb_subset_input_override_name_table (hb_subset_input_t  *input,
209*2d1272b8SAndroid Build Coastguard Worker 				     hb_ot_name_id_t     name_id,
210*2d1272b8SAndroid Build Coastguard Worker 				     unsigned            platform_id,
211*2d1272b8SAndroid Build Coastguard Worker 				     unsigned            encoding_id,
212*2d1272b8SAndroid Build Coastguard Worker 				     unsigned            language_id,
213*2d1272b8SAndroid Build Coastguard Worker 				     const char         *name_str,
214*2d1272b8SAndroid Build Coastguard Worker 				     int                 str_len);
215*2d1272b8SAndroid Build Coastguard Worker #endif
216*2d1272b8SAndroid Build Coastguard Worker 
217*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_face_t *
218*2d1272b8SAndroid Build Coastguard Worker hb_subset_preprocess (hb_face_t *source);
219*2d1272b8SAndroid Build Coastguard Worker 
220*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_face_t *
221*2d1272b8SAndroid Build Coastguard Worker hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input);
222*2d1272b8SAndroid Build Coastguard Worker 
223*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_face_t *
224*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_execute_or_fail (hb_subset_plan_t *plan);
225*2d1272b8SAndroid Build Coastguard Worker 
226*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_subset_plan_t *
227*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_create_or_fail (hb_face_t                 *face,
228*2d1272b8SAndroid Build Coastguard Worker                                const hb_subset_input_t   *input);
229*2d1272b8SAndroid Build Coastguard Worker 
230*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
231*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_destroy (hb_subset_plan_t *plan);
232*2d1272b8SAndroid Build Coastguard Worker 
233*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_map_t *
234*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_old_to_new_glyph_mapping (const hb_subset_plan_t *plan);
235*2d1272b8SAndroid Build Coastguard Worker 
236*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_map_t *
237*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_new_to_old_glyph_mapping (const hb_subset_plan_t *plan);
238*2d1272b8SAndroid Build Coastguard Worker 
239*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_map_t *
240*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_unicode_to_old_glyph_mapping (const hb_subset_plan_t *plan);
241*2d1272b8SAndroid Build Coastguard Worker 
242*2d1272b8SAndroid Build Coastguard Worker 
243*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_subset_plan_t *
244*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_reference (hb_subset_plan_t *plan);
245*2d1272b8SAndroid Build Coastguard Worker 
246*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
247*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_set_user_data (hb_subset_plan_t   *plan,
248*2d1272b8SAndroid Build Coastguard Worker                               hb_user_data_key_t *key,
249*2d1272b8SAndroid Build Coastguard Worker                               void               *data,
250*2d1272b8SAndroid Build Coastguard Worker                               hb_destroy_func_t   destroy,
251*2d1272b8SAndroid Build Coastguard Worker                               hb_bool_t	          replace);
252*2d1272b8SAndroid Build Coastguard Worker 
253*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void *
254*2d1272b8SAndroid Build Coastguard Worker hb_subset_plan_get_user_data (const hb_subset_plan_t *plan,
255*2d1272b8SAndroid Build Coastguard Worker                               hb_user_data_key_t     *key);
256*2d1272b8SAndroid Build Coastguard Worker 
257*2d1272b8SAndroid Build Coastguard Worker 
258*2d1272b8SAndroid Build Coastguard Worker HB_END_DECLS
259*2d1272b8SAndroid Build Coastguard Worker 
260*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_SUBSET_H */
261