File indexing completed on 2026-05-08 08:41:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #ifndef HB_SUBSET_H
0028 #define HB_SUBSET_H
0029
0030 #include "hb.h"
0031 #include "hb-ot.h"
0032
0033 HB_BEGIN_DECLS
0034
0035
0036
0037
0038
0039
0040
0041 typedef struct hb_subset_input_t hb_subset_input_t;
0042
0043
0044
0045
0046
0047
0048
0049
0050 typedef struct hb_subset_plan_t hb_subset_plan_t;
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092 typedef enum {
0093 HB_SUBSET_FLAGS_DEFAULT = 0x00000000u,
0094 HB_SUBSET_FLAGS_NO_HINTING = 0x00000001u,
0095 HB_SUBSET_FLAGS_RETAIN_GIDS = 0x00000002u,
0096 HB_SUBSET_FLAGS_DESUBROUTINIZE = 0x00000004u,
0097 HB_SUBSET_FLAGS_NAME_LEGACY = 0x00000008u,
0098 HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG = 0x00000010u,
0099 HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u,
0100 HB_SUBSET_FLAGS_NOTDEF_OUTLINE = 0x00000040u,
0101 HB_SUBSET_FLAGS_GLYPH_NAMES = 0x00000080u,
0102 HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES = 0x00000100u,
0103 HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE = 0x00000200u,
0104 HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS = 0x00000400u,
0105 HB_SUBSET_FLAGS_NO_BIDI_CLOSURE = 0x00000800u,
0106 #ifdef HB_EXPERIMENTAL_API
0107 HB_SUBSET_FLAGS_IFTB_REQUIREMENTS = 0x00001000u,
0108 HB_SUBSET_FLAGS_RETAIN_NUM_GLYPHS = 0x00002000u,
0109 #endif
0110 } hb_subset_flags_t;
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131 typedef enum {
0132 HB_SUBSET_SETS_GLYPH_INDEX = 0,
0133 HB_SUBSET_SETS_UNICODE,
0134 HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG,
0135 HB_SUBSET_SETS_DROP_TABLE_TAG,
0136 HB_SUBSET_SETS_NAME_ID,
0137 HB_SUBSET_SETS_NAME_LANG_ID,
0138 HB_SUBSET_SETS_LAYOUT_FEATURE_TAG,
0139 HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG,
0140 } hb_subset_sets_t;
0141
0142 HB_EXTERN hb_subset_input_t *
0143 hb_subset_input_create_or_fail (void);
0144
0145 HB_EXTERN hb_subset_input_t *
0146 hb_subset_input_reference (hb_subset_input_t *input);
0147
0148 HB_EXTERN void
0149 hb_subset_input_destroy (hb_subset_input_t *input);
0150
0151 HB_EXTERN hb_bool_t
0152 hb_subset_input_set_user_data (hb_subset_input_t *input,
0153 hb_user_data_key_t *key,
0154 void * data,
0155 hb_destroy_func_t destroy,
0156 hb_bool_t replace);
0157
0158 HB_EXTERN void *
0159 hb_subset_input_get_user_data (const hb_subset_input_t *input,
0160 hb_user_data_key_t *key);
0161
0162 HB_EXTERN void
0163 hb_subset_input_keep_everything (hb_subset_input_t *input);
0164
0165 HB_EXTERN hb_set_t *
0166 hb_subset_input_unicode_set (hb_subset_input_t *input);
0167
0168 HB_EXTERN hb_set_t *
0169 hb_subset_input_glyph_set (hb_subset_input_t *input);
0170
0171 HB_EXTERN hb_set_t *
0172 hb_subset_input_set (hb_subset_input_t *input, hb_subset_sets_t set_type);
0173
0174 HB_EXTERN hb_map_t*
0175 hb_subset_input_old_to_new_glyph_mapping (hb_subset_input_t *input);
0176
0177 HB_EXTERN hb_subset_flags_t
0178 hb_subset_input_get_flags (hb_subset_input_t *input);
0179
0180 HB_EXTERN void
0181 hb_subset_input_set_flags (hb_subset_input_t *input,
0182 unsigned value);
0183
0184 HB_EXTERN hb_bool_t
0185 hb_subset_input_pin_all_axes_to_default (hb_subset_input_t *input,
0186 hb_face_t *face);
0187
0188 HB_EXTERN hb_bool_t
0189 hb_subset_input_pin_axis_to_default (hb_subset_input_t *input,
0190 hb_face_t *face,
0191 hb_tag_t axis_tag);
0192
0193 HB_EXTERN hb_bool_t
0194 hb_subset_input_pin_axis_location (hb_subset_input_t *input,
0195 hb_face_t *face,
0196 hb_tag_t axis_tag,
0197 float axis_value);
0198
0199 HB_EXTERN hb_bool_t
0200 hb_subset_input_get_axis_range (hb_subset_input_t *input,
0201 hb_tag_t axis_tag,
0202 float *axis_min_value,
0203 float *axis_max_value,
0204 float *axis_def_value);
0205
0206 HB_EXTERN hb_bool_t
0207 hb_subset_input_set_axis_range (hb_subset_input_t *input,
0208 hb_face_t *face,
0209 hb_tag_t axis_tag,
0210 float axis_min_value,
0211 float axis_max_value,
0212 float axis_def_value);
0213
0214 HB_EXTERN hb_bool_t
0215 hb_subset_axis_range_from_string (const char *str, int len,
0216 float *axis_min_value,
0217 float *axis_max_value,
0218 float *axis_def_value);
0219
0220 HB_EXTERN void
0221 hb_subset_axis_range_to_string (hb_subset_input_t *input,
0222 hb_tag_t axis_tag,
0223 char *buf,
0224 unsigned size);
0225
0226 #ifdef HB_EXPERIMENTAL_API
0227 HB_EXTERN hb_bool_t
0228 hb_subset_input_override_name_table (hb_subset_input_t *input,
0229 hb_ot_name_id_t name_id,
0230 unsigned platform_id,
0231 unsigned encoding_id,
0232 unsigned language_id,
0233 const char *name_str,
0234 int str_len);
0235
0236
0237
0238
0239
0240
0241 HB_EXTERN hb_blob_t*
0242 hb_subset_cff_get_charstring_data (hb_face_t* face, hb_codepoint_t glyph_index);
0243
0244 HB_EXTERN hb_blob_t*
0245 hb_subset_cff_get_charstrings_index (hb_face_t* face);
0246
0247 HB_EXTERN hb_blob_t*
0248 hb_subset_cff2_get_charstring_data (hb_face_t* face, hb_codepoint_t glyph_index);
0249
0250 HB_EXTERN hb_blob_t*
0251 hb_subset_cff2_get_charstrings_index (hb_face_t* face);
0252 #endif
0253
0254 HB_EXTERN hb_face_t *
0255 hb_subset_preprocess (hb_face_t *source);
0256
0257 HB_EXTERN hb_face_t *
0258 hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input);
0259
0260 HB_EXTERN hb_face_t *
0261 hb_subset_plan_execute_or_fail (hb_subset_plan_t *plan);
0262
0263 HB_EXTERN hb_subset_plan_t *
0264 hb_subset_plan_create_or_fail (hb_face_t *face,
0265 const hb_subset_input_t *input);
0266
0267 HB_EXTERN void
0268 hb_subset_plan_destroy (hb_subset_plan_t *plan);
0269
0270 HB_EXTERN hb_map_t *
0271 hb_subset_plan_old_to_new_glyph_mapping (const hb_subset_plan_t *plan);
0272
0273 HB_EXTERN hb_map_t *
0274 hb_subset_plan_new_to_old_glyph_mapping (const hb_subset_plan_t *plan);
0275
0276 HB_EXTERN hb_map_t *
0277 hb_subset_plan_unicode_to_old_glyph_mapping (const hb_subset_plan_t *plan);
0278
0279
0280 HB_EXTERN hb_subset_plan_t *
0281 hb_subset_plan_reference (hb_subset_plan_t *plan);
0282
0283 HB_EXTERN hb_bool_t
0284 hb_subset_plan_set_user_data (hb_subset_plan_t *plan,
0285 hb_user_data_key_t *key,
0286 void *data,
0287 hb_destroy_func_t destroy,
0288 hb_bool_t replace);
0289
0290 HB_EXTERN void *
0291 hb_subset_plan_get_user_data (const hb_subset_plan_t *plan,
0292 hb_user_data_key_t *key);
0293
0294
0295 HB_END_DECLS
0296
0297 #endif