File indexing completed on 2025-10-28 08:45:58
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 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
0028 #error "Include <hb.h> instead."
0029 #endif
0030
0031 #ifndef HB_FACE_H
0032 #define HB_FACE_H
0033
0034 #include "hb-common.h"
0035 #include "hb-blob.h"
0036 #include "hb-map.h"
0037 #include "hb-set.h"
0038
0039 HB_BEGIN_DECLS
0040
0041
0042 HB_EXTERN unsigned int
0043 hb_face_count (hb_blob_t *blob);
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 typedef struct hb_face_t hb_face_t;
0057
0058 HB_EXTERN hb_face_t *
0059 hb_face_create (hb_blob_t *blob,
0060 unsigned int index);
0061
0062 HB_EXTERN hb_face_t *
0063 hb_face_create_or_fail (hb_blob_t *blob,
0064 unsigned int index);
0065
0066 HB_EXTERN hb_face_t *
0067 hb_face_create_or_fail_using (hb_blob_t *blob,
0068 unsigned int index,
0069 const char *loader_name);
0070
0071 HB_EXTERN hb_face_t *
0072 hb_face_create_from_file_or_fail (const char *file_name,
0073 unsigned int index);
0074
0075 HB_EXTERN hb_face_t *
0076 hb_face_create_from_file_or_fail_using (const char *file_name,
0077 unsigned int index,
0078 const char *loader_name);
0079
0080 HB_EXTERN const char **
0081 hb_face_list_loaders (void);
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102 typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data);
0103
0104
0105 HB_EXTERN hb_face_t *
0106 hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
0107 void *user_data,
0108 hb_destroy_func_t destroy);
0109
0110 HB_EXTERN hb_face_t *
0111 hb_face_get_empty (void);
0112
0113 HB_EXTERN hb_face_t *
0114 hb_face_reference (hb_face_t *face);
0115
0116 HB_EXTERN void
0117 hb_face_destroy (hb_face_t *face);
0118
0119 HB_EXTERN hb_bool_t
0120 hb_face_set_user_data (hb_face_t *face,
0121 hb_user_data_key_t *key,
0122 void * data,
0123 hb_destroy_func_t destroy,
0124 hb_bool_t replace);
0125
0126 HB_EXTERN void *
0127 hb_face_get_user_data (const hb_face_t *face,
0128 hb_user_data_key_t *key);
0129
0130 HB_EXTERN void
0131 hb_face_make_immutable (hb_face_t *face);
0132
0133 HB_EXTERN hb_bool_t
0134 hb_face_is_immutable (hb_face_t *face);
0135
0136
0137 HB_EXTERN hb_blob_t *
0138 hb_face_reference_table (const hb_face_t *face,
0139 hb_tag_t tag);
0140
0141 HB_EXTERN hb_blob_t *
0142 hb_face_reference_blob (hb_face_t *face);
0143
0144 HB_EXTERN void
0145 hb_face_set_index (hb_face_t *face,
0146 unsigned int index);
0147
0148 HB_EXTERN unsigned int
0149 hb_face_get_index (const hb_face_t *face);
0150
0151 HB_EXTERN void
0152 hb_face_set_upem (hb_face_t *face,
0153 unsigned int upem);
0154
0155 HB_EXTERN unsigned int
0156 hb_face_get_upem (const hb_face_t *face);
0157
0158 HB_EXTERN void
0159 hb_face_set_glyph_count (hb_face_t *face,
0160 unsigned int glyph_count);
0161
0162 HB_EXTERN unsigned int
0163 hb_face_get_glyph_count (const hb_face_t *face);
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181 typedef unsigned int (*hb_get_table_tags_func_t) (const hb_face_t *face,
0182 unsigned int start_offset,
0183 unsigned int *table_count,
0184 hb_tag_t *table_tags ,
0185 void *user_data);
0186
0187 HB_EXTERN void
0188 hb_face_set_get_table_tags_func (hb_face_t *face,
0189 hb_get_table_tags_func_t func,
0190 void *user_data,
0191 hb_destroy_func_t destroy);
0192
0193 HB_EXTERN unsigned int
0194 hb_face_get_table_tags (const hb_face_t *face,
0195 unsigned int start_offset,
0196 unsigned int *table_count,
0197 hb_tag_t *table_tags );
0198
0199
0200
0201
0202
0203
0204 HB_EXTERN void
0205 hb_face_collect_unicodes (hb_face_t *face,
0206 hb_set_t *out);
0207
0208 HB_EXTERN void
0209 hb_face_collect_nominal_glyph_mapping (hb_face_t *face,
0210 hb_map_t *mapping,
0211 hb_set_t *unicodes);
0212
0213 HB_EXTERN void
0214 hb_face_collect_variation_selectors (hb_face_t *face,
0215 hb_set_t *out);
0216
0217 HB_EXTERN void
0218 hb_face_collect_variation_unicodes (hb_face_t *face,
0219 hb_codepoint_t variation_selector,
0220 hb_set_t *out);
0221
0222
0223
0224
0225
0226
0227 HB_EXTERN hb_face_t *
0228 hb_face_builder_create (void);
0229
0230 HB_EXTERN hb_bool_t
0231 hb_face_builder_add_table (hb_face_t *face,
0232 hb_tag_t tag,
0233 hb_blob_t *blob);
0234
0235 HB_EXTERN void
0236 hb_face_builder_sort_tables (hb_face_t *face,
0237 const hb_tag_t *tags);
0238
0239
0240 HB_END_DECLS
0241
0242 #endif