File indexing completed on 2025-02-21 10:04:02
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 typedef enum {
0087 HB_SUBSET_FLAGS_DEFAULT = 0x00000000u,
0088 HB_SUBSET_FLAGS_NO_HINTING = 0x00000001u,
0089 HB_SUBSET_FLAGS_RETAIN_GIDS = 0x00000002u,
0090 HB_SUBSET_FLAGS_DESUBROUTINIZE = 0x00000004u,
0091 HB_SUBSET_FLAGS_NAME_LEGACY = 0x00000008u,
0092 HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG = 0x00000010u,
0093 HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u,
0094 HB_SUBSET_FLAGS_NOTDEF_OUTLINE = 0x00000040u,
0095 HB_SUBSET_FLAGS_GLYPH_NAMES = 0x00000080u,
0096 HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES = 0x00000100u,
0097 HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE = 0x00000200u,
0098 HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS = 0x00000400u,
0099 #ifdef HB_EXPERIMENTAL_API
0100 HB_SUBSET_FLAGS_IFTB_REQUIREMENTS = 0x00000800u,
0101 #endif
0102 } hb_subset_flags_t;
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123 typedef enum {
0124 HB_SUBSET_SETS_GLYPH_INDEX = 0,
0125 HB_SUBSET_SETS_UNICODE,
0126 HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG,
0127 HB_SUBSET_SETS_DROP_TABLE_TAG,
0128 HB_SUBSET_SETS_NAME_ID,
0129 HB_SUBSET_SETS_NAME_LANG_ID,
0130 HB_SUBSET_SETS_LAYOUT_FEATURE_TAG,
0131 HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG,
0132 } hb_subset_sets_t;
0133
0134 HB_EXTERN hb_subset_input_t *
0135 hb_subset_input_create_or_fail (void);
0136
0137 HB_EXTERN hb_subset_input_t *
0138 hb_subset_input_reference (hb_subset_input_t *input);
0139
0140 HB_EXTERN void
0141 hb_subset_input_destroy (hb_subset_input_t *input);
0142
0143 HB_EXTERN hb_bool_t
0144 hb_subset_input_set_user_data (hb_subset_input_t *input,
0145 hb_user_data_key_t *key,
0146 void * data,
0147 hb_destroy_func_t destroy,
0148 hb_bool_t replace);
0149
0150 HB_EXTERN void *
0151 hb_subset_input_get_user_data (const hb_subset_input_t *input,
0152 hb_user_data_key_t *key);
0153
0154 HB_EXTERN void
0155 hb_subset_input_keep_everything (hb_subset_input_t *input);
0156
0157 HB_EXTERN hb_set_t *
0158 hb_subset_input_unicode_set (hb_subset_input_t *input);
0159
0160 HB_EXTERN hb_set_t *
0161 hb_subset_input_glyph_set (hb_subset_input_t *input);
0162
0163 HB_EXTERN hb_set_t *
0164 hb_subset_input_set (hb_subset_input_t *input, hb_subset_sets_t set_type);
0165
0166 HB_EXTERN hb_map_t*
0167 hb_subset_input_old_to_new_glyph_mapping (hb_subset_input_t *input);
0168
0169 HB_EXTERN hb_subset_flags_t
0170 hb_subset_input_get_flags (hb_subset_input_t *input);
0171
0172 HB_EXTERN void
0173 hb_subset_input_set_flags (hb_subset_input_t *input,
0174 unsigned value);
0175
0176 HB_EXTERN hb_bool_t
0177 hb_subset_input_pin_all_axes_to_default (hb_subset_input_t *input,
0178 hb_face_t *face);
0179
0180 HB_EXTERN hb_bool_t
0181 hb_subset_input_pin_axis_to_default (hb_subset_input_t *input,
0182 hb_face_t *face,
0183 hb_tag_t axis_tag);
0184
0185 HB_EXTERN hb_bool_t
0186 hb_subset_input_pin_axis_location (hb_subset_input_t *input,
0187 hb_face_t *face,
0188 hb_tag_t axis_tag,
0189 float axis_value);
0190
0191 HB_EXTERN hb_bool_t
0192 hb_subset_input_get_axis_range (hb_subset_input_t *input,
0193 hb_tag_t axis_tag,
0194 float *axis_min_value,
0195 float *axis_max_value,
0196 float *axis_def_value);
0197
0198 HB_EXTERN hb_bool_t
0199 hb_subset_input_set_axis_range (hb_subset_input_t *input,
0200 hb_face_t *face,
0201 hb_tag_t axis_tag,
0202 float axis_min_value,
0203 float axis_max_value,
0204 float axis_def_value);
0205
0206 #ifdef HB_EXPERIMENTAL_API
0207 HB_EXTERN hb_bool_t
0208 hb_subset_input_override_name_table (hb_subset_input_t *input,
0209 hb_ot_name_id_t name_id,
0210 unsigned platform_id,
0211 unsigned encoding_id,
0212 unsigned language_id,
0213 const char *name_str,
0214 int str_len);
0215 #endif
0216
0217 HB_EXTERN hb_face_t *
0218 hb_subset_preprocess (hb_face_t *source);
0219
0220 HB_EXTERN hb_face_t *
0221 hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input);
0222
0223 HB_EXTERN hb_face_t *
0224 hb_subset_plan_execute_or_fail (hb_subset_plan_t *plan);
0225
0226 HB_EXTERN hb_subset_plan_t *
0227 hb_subset_plan_create_or_fail (hb_face_t *face,
0228 const hb_subset_input_t *input);
0229
0230 HB_EXTERN void
0231 hb_subset_plan_destroy (hb_subset_plan_t *plan);
0232
0233 HB_EXTERN hb_map_t *
0234 hb_subset_plan_old_to_new_glyph_mapping (const hb_subset_plan_t *plan);
0235
0236 HB_EXTERN hb_map_t *
0237 hb_subset_plan_new_to_old_glyph_mapping (const hb_subset_plan_t *plan);
0238
0239 HB_EXTERN hb_map_t *
0240 hb_subset_plan_unicode_to_old_glyph_mapping (const hb_subset_plan_t *plan);
0241
0242
0243 HB_EXTERN hb_subset_plan_t *
0244 hb_subset_plan_reference (hb_subset_plan_t *plan);
0245
0246 HB_EXTERN hb_bool_t
0247 hb_subset_plan_set_user_data (hb_subset_plan_t *plan,
0248 hb_user_data_key_t *key,
0249 void *data,
0250 hb_destroy_func_t destroy,
0251 hb_bool_t replace);
0252
0253 HB_EXTERN void *
0254 hb_subset_plan_get_user_data (const hb_subset_plan_t *plan,
0255 hb_user_data_key_t *key);
0256
0257
0258 HB_END_DECLS
0259
0260 #endif