1 #ifndef CLIB_HARFBUZZ_PROTOS_H
    2 #define CLIB_HARFBUZZ_PROTOS_H
    3 
    4 /*
    5 	harfbuzz.library C prototypes
    6 
    7 	Copyright © 2016-2022 The MorphOS Development Team, All Rights Reserved.
    8 */
    9 
   10 #ifndef LIBRARIES_HARFBUZZ_H
   11 # include <libraries/harfbuzz.h>
   12 #endif
   13 
   14 #ifdef __cplusplus
   15 extern "C" {
   16 #endif
   17 
   18 hb_tag_t hb_tag_from_string (const char *str, int len);
   19 void hb_tag_to_string (hb_tag_t tag, char *buf);
   20 hb_direction_t hb_direction_from_string (const char *str, int len);
   21 const char *hb_direction_to_string (hb_direction_t direction);
   22 hb_language_t hb_language_from_string (const char *str, int len);
   23 const char *hb_language_to_string (hb_language_t language);
   24 hb_language_t hb_language_get_default (void);
   25 hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag);
   26 hb_script_t hb_script_from_string (const char *str, int len);
   27 hb_tag_t hb_script_to_iso15924_tag (hb_script_t script);
   28 hb_direction_t hb_script_get_horizontal_direction (hb_script_t script);
   29 hb_bool_t hb_feature_from_string (const char *str, int len, hb_feature_t *feature);
   30 void hb_feature_to_string (hb_feature_t *feature, char *buf, unsigned int size);
   31 hb_bool_t hb_variation_from_string (const char *str, int len, hb_variation_t *variation);
   32 void hb_variation_to_string (hb_variation_t *variation, char *buf, unsigned int size);
   33 
   34 hb_blob_t *hb_blob_create (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy);
   35 hb_blob_t *hb_blob_create_sub_blob (hb_blob_t *parent, unsigned int offset, unsigned int length);
   36 hb_blob_t *hb_blob_get_empty (void);
   37 hb_blob_t *hb_blob_reference (hb_blob_t *blob);
   38 void hb_blob_destroy (hb_blob_t *blob);
   39 hb_bool_t hb_blob_set_user_data (hb_blob_t *blob, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace);
   40 void *hb_blob_get_user_data (hb_blob_t *blob, hb_user_data_key_t *key);
   41 void hb_blob_make_immutable (hb_blob_t *blob);
   42 hb_bool_t hb_blob_is_immutable (hb_blob_t *blob);
   43 unsigned int hb_blob_get_length (hb_blob_t *blob);
   44 const char *hb_blob_get_data (hb_blob_t *blob, unsigned int *length);
   45 char *hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length);
   46 hb_blob_t *hb_blob_copy_writable_or_fail (hb_blob_t *blob);
   47 
   48 hb_bool_t hb_segment_properties_equal (const hb_segment_properties_t *a, const hb_segment_properties_t *b);
   49 unsigned int hb_segment_properties_hash (const hb_segment_properties_t *p);
   50 hb_buffer_t *hb_buffer_create (void);
   51 hb_buffer_t *hb_buffer_get_empty (void);
   52 hb_buffer_t *hb_buffer_reference (hb_buffer_t *buffer);
   53 void hb_buffer_destroy (hb_buffer_t *buffer);
   54 hb_bool_t hb_buffer_set_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
   55 void *hb_buffer_get_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key);
   56 void hb_buffer_set_content_type (hb_buffer_t *buffer, hb_buffer_content_type_t content_type);
   57 hb_buffer_content_type_t hb_buffer_get_content_type (hb_buffer_t *buffer);
   58 void hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, hb_unicode_funcs_t *unicode_funcs);
   59 hb_unicode_funcs_t *hb_buffer_get_unicode_funcs (hb_buffer_t *buffer);
   60 void hb_buffer_set_direction (hb_buffer_t *buffer, hb_direction_t direction);
   61 hb_direction_t hb_buffer_get_direction (hb_buffer_t *buffer);
   62 void hb_buffer_set_script (hb_buffer_t *buffer, hb_script_t script);
   63 hb_script_t hb_buffer_get_script (hb_buffer_t *buffer);
   64 void hb_buffer_set_language (hb_buffer_t *buffer, hb_language_t language);
   65 hb_language_t hb_buffer_get_language (hb_buffer_t *buffer);
   66 void hb_buffer_set_segment_properties (hb_buffer_t *buffer, const hb_segment_properties_t *props);
   67 void hb_buffer_get_segment_properties (hb_buffer_t *buffer, hb_segment_properties_t *props);
   68 void hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
   69 void hb_buffer_set_flags (hb_buffer_t *buffer, hb_buffer_flags_t flags);
   70 hb_buffer_flags_t hb_buffer_get_flags (hb_buffer_t *buffer);
   71 void hb_buffer_set_cluster_level (hb_buffer_t *buffer, hb_buffer_cluster_level_t cluster_level);
   72 hb_buffer_cluster_level_t hb_buffer_get_cluster_level (hb_buffer_t *buffer);
   73 void hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, hb_codepoint_t replacement);
   74 hb_codepoint_t hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer);
   75 void hb_buffer_reset (hb_buffer_t *buffer);
   76 void hb_buffer_clear_contents (hb_buffer_t *buffer);
   77 hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size);
   78 hb_bool_t hb_buffer_allocation_successful (hb_buffer_t *buffer);
   79 void hb_buffer_reverse (hb_buffer_t *buffer);
   80 void hb_buffer_reverse_range (hb_buffer_t *buffer, unsigned int start, unsigned int end);
   81 void hb_buffer_reverse_clusters (hb_buffer_t *buffer);
   82 void hb_buffer_add (hb_buffer_t *buffer, hb_codepoint_t codepoint, unsigned int cluster);
   83 void hb_buffer_add_utf8 (hb_buffer_t *buffer, const char *text, int text_length, unsigned int item_offset, int item_length);
   84 void hb_buffer_add_utf16 (hb_buffer_t *buffer, const uint16_t *text, int text_length, unsigned int item_offset, int item_length);
   85 void hb_buffer_add_utf32 (hb_buffer_t *buffer, const uint32_t *text, int text_length, unsigned int item_offset, int item_length);
   86 void hb_buffer_add_latin1 (hb_buffer_t *buffer, const uint8_t *text, int text_length, unsigned int item_offset, int item_length);
   87 void hb_buffer_add_codepoints (hb_buffer_t *buffer, const hb_codepoint_t *text, int text_length, unsigned int item_offset, int item_length);
   88 hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, unsigned int length);
   89 unsigned int hb_buffer_get_length (hb_buffer_t *buffer);
   90 hb_glyph_info_t *hb_buffer_get_glyph_infos (hb_buffer_t *buffer, unsigned int *length);
   91 hb_glyph_position_t *hb_buffer_get_glyph_positions (hb_buffer_t *buffer, unsigned int *length);
   92 void hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
   93 hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len);
   94 const char *hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format);
   95 const char **hb_buffer_serialize_list_formats (void);
   96 unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags);
   97 hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, int buf_len, const char **end_ptr, hb_font_t *font, hb_buffer_serialize_format_t format);
   98 void hb_buffer_set_message_func (hb_buffer_t *buffer, hb_buffer_message_func_t func, void *user_data, hb_destroy_func_t destroy);
   99 #undef hb_glyph_info_get_glyph_flags
  100 hb_glyph_flags_t hb_glyph_info_get_glyph_flags (const hb_glyph_info_t *info);
  101 void hb_buffer_append (hb_buffer_t *buffer, hb_buffer_t *source, unsigned int start, unsigned int end);
  102 hb_buffer_diff_flags_t hb_buffer_diff (hb_buffer_t *buffer, hb_buffer_t *reference, hb_codepoint_t dottedcircle_glyph, unsigned int position_fuzz);
  103 
  104 hb_face_t *hb_face_create (hb_blob_t *blob, unsigned int index);
  105 hb_face_t *hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, void *user_data, hb_destroy_func_t destroy);
  106 hb_face_t *hb_face_get_empty (void);
  107 hb_face_t *hb_face_reference (hb_face_t *face);
  108 void hb_face_destroy (hb_face_t *face);
  109 hb_bool_t hb_face_set_user_data (hb_face_t *face, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  110 void *hb_face_get_user_data (hb_face_t *face, hb_user_data_key_t *key);
  111 void hb_face_make_immutable (hb_face_t *face);
  112 hb_bool_t hb_face_is_immutable (hb_face_t *face);
  113 hb_blob_t *hb_face_reference_table (hb_face_t *face, hb_tag_t tag);
  114 hb_blob_t *hb_face_reference_blob (hb_face_t *face);
  115 void hb_face_set_index (hb_face_t *face, unsigned int index);
  116 unsigned int hb_face_get_index (hb_face_t *face);
  117 void hb_face_set_upem (hb_face_t *face, unsigned int upem);
  118 unsigned int hb_face_get_upem (hb_face_t *face);
  119 void hb_face_set_glyph_count (hb_face_t *face, unsigned int glyph_count);
  120 unsigned int hb_face_get_glyph_count (hb_face_t *face);
  121 unsigned int hb_face_get_table_tags (hb_face_t *face, unsigned int start_offset, unsigned int *table_count, hb_tag_t *table_tags);
  122 
  123 hb_font_funcs_t *hb_font_funcs_create (void);
  124 hb_font_funcs_t *hb_font_funcs_get_empty (void);
  125 hb_font_funcs_t *hb_font_funcs_reference (hb_font_funcs_t *ffuncs);
  126 void hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);
  127 hb_bool_t hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  128 void *hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key);
  129 void hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);
  130 hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
  131 void hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_font_h_extents_func_t func, void *user_data, hb_destroy_func_t destroy);
  132 void hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_font_v_extents_func_t func, void *user_data, hb_destroy_func_t destroy);
  133 HB_DEPRECATED_FOR (hb_font_funcs_set_nominal_glyph_func and hb_font_funcs_set_variation_glyph_func) void hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_func_t func, void *user_data, hb_destroy_func_t destroy);
  134 void hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_nominal_glyph_func_t func, void *user_data, hb_destroy_func_t destroy);
  135 void hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_variation_glyph_func_t func, void *user_data, hb_destroy_func_t destroy);
  136 void hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advance_func_t func, void *user_data, hb_destroy_func_t destroy);
  137 void hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advance_func_t func, void *user_data, hb_destroy_func_t destroy);
  138 void hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_origin_func_t func, void *user_data, hb_destroy_func_t destroy);
  139 void hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_origin_func_t func, void *user_data, hb_destroy_func_t destroy);
  140 void hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_kerning_func_t func, void *user_data, hb_destroy_func_t destroy);
  141 HB_DEPRECATED void hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_kerning_func_t func, void *user_data, hb_destroy_func_t destroy);
  142 void hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_extents_func_t func, void *user_data, hb_destroy_func_t destroy);
  143 void hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_contour_point_func_t func, void *user_data, hb_destroy_func_t destroy);
  144 void hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_name_func_t func, void *user_data, hb_destroy_func_t destroy);
  145 void hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_from_name_func_t func, void *user_data, hb_destroy_func_t destroy);
  146 hb_bool_t hb_font_get_h_extents (hb_font_t *font, hb_font_extents_t *extents);
  147 hb_bool_t hb_font_get_v_extents (hb_font_t *font, hb_font_extents_t *extents);
  148 hb_bool_t hb_font_get_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph);
  149 hb_bool_t hb_font_get_nominal_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t *glyph);
  150 hb_bool_t hb_font_get_variation_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph);
  151 hb_position_t hb_font_get_glyph_h_advance (hb_font_t *font, hb_codepoint_t glyph);
  152 hb_position_t hb_font_get_glyph_v_advance (hb_font_t *font, hb_codepoint_t glyph);
  153 hb_bool_t hb_font_get_glyph_h_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y);
  154 hb_bool_t hb_font_get_glyph_v_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y);
  155 hb_position_t hb_font_get_glyph_h_kerning (hb_font_t *font, hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
  156 HB_DEPRECATED hb_position_t hb_font_get_glyph_v_kerning (hb_font_t *font, hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph);
  157 hb_bool_t hb_font_get_glyph_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents);
  158 hb_bool_t hb_font_get_glyph_contour_point (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y);
  159 hb_bool_t hb_font_get_glyph_name (hb_font_t *font, hb_codepoint_t glyph, char *name, unsigned int size);
  160 hb_bool_t hb_font_get_glyph_from_name (hb_font_t *font, const char *name, int len, hb_codepoint_t *glyph);
  161 void hb_font_get_extents_for_direction (hb_font_t *font, hb_direction_t direction, hb_font_extents_t *extents);
  162 void hb_font_get_glyph_advance_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y);
  163 void hb_font_get_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y);
  164 void hb_font_add_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y);
  165 void hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y);
  166 void hb_font_get_glyph_kerning_for_direction (hb_font_t *font, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y);
  167 hb_bool_t hb_font_get_glyph_extents_for_origin (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_glyph_extents_t *extents);
  168 hb_bool_t hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_direction_t direction, hb_position_t *x, hb_position_t *y);
  169 void hb_font_glyph_to_string (hb_font_t *font, hb_codepoint_t glyph, char *s, unsigned int size);
  170 hb_bool_t hb_font_glyph_from_string (hb_font_t *font, const char *s, int len, hb_codepoint_t *glyph);
  171 hb_font_t *hb_font_create (hb_face_t *face);
  172 hb_font_t *hb_font_create_sub_font (hb_font_t *parent);
  173 hb_font_t *hb_font_get_empty (void);
  174 hb_font_t *hb_font_reference (hb_font_t *font);
  175 void hb_font_destroy (hb_font_t *font);
  176 hb_bool_t hb_font_set_user_data (hb_font_t *font, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  177 void *hb_font_get_user_data (hb_font_t *font, hb_user_data_key_t *key);
  178 void hb_font_make_immutable (hb_font_t *font);
  179 hb_bool_t hb_font_is_immutable (hb_font_t *font);
  180 void hb_font_set_parent (hb_font_t *font, hb_font_t *parent);
  181 hb_font_t *hb_font_get_parent (hb_font_t *font);
  182 void hb_font_set_face (hb_font_t *font, hb_face_t *face);
  183 hb_face_t *hb_font_get_face (hb_font_t *font);
  184 void hb_font_set_funcs (hb_font_t *font, hb_font_funcs_t *klass, void *font_data, hb_destroy_func_t destroy);
  185 void hb_font_set_funcs_data (hb_font_t *font, void *font_data, hb_destroy_func_t destroy);
  186 void hb_font_set_scale (hb_font_t *font, int x_scale, int y_scale);
  187 void hb_font_get_scale (hb_font_t *font, int *x_scale, int *y_scale);
  188 void hb_font_set_ppem (hb_font_t *font, unsigned int x_ppem, unsigned int y_ppem);
  189 void hb_font_get_ppem (hb_font_t *font, unsigned int *x_ppem, unsigned int *y_ppem);
  190 void hb_font_set_variations (hb_font_t *font, const hb_variation_t *variations, unsigned int variations_length);
  191 void hb_font_set_var_coords_design (hb_font_t *font, const float *coords, unsigned int coords_length);
  192 void hb_font_set_var_coords_normalized (hb_font_t *font, const int *coords, unsigned int coords_length);
  193 const int *hb_font_get_var_coords_normalized (hb_font_t *font, unsigned int *length);
  194 void hb_font_set_ptem (hb_font_t *font, float ptem);
  195 float hb_font_get_ptem (hb_font_t *font);
  196 
  197 hb_set_t *hb_set_create (void);
  198 hb_set_t *hb_set_get_empty (void);
  199 hb_set_t *hb_set_reference (hb_set_t *set);
  200 void hb_set_destroy (hb_set_t *set);
  201 hb_bool_t hb_set_set_user_data (hb_set_t *set, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  202 void *hb_set_get_user_data (hb_set_t *set, hb_user_data_key_t *key);
  203 hb_bool_t hb_set_allocation_successful (const hb_set_t *set);
  204 void hb_set_clear (hb_set_t *set);
  205 hb_bool_t hb_set_is_empty (const hb_set_t *set);
  206 hb_bool_t hb_set_has (const hb_set_t *set, hb_codepoint_t codepoint);
  207 void hb_set_add (hb_set_t *set, hb_codepoint_t codepoint);
  208 void hb_set_add_range (hb_set_t *set, hb_codepoint_t first, hb_codepoint_t last);
  209 void hb_set_del (hb_set_t *set, hb_codepoint_t codepoint);
  210 void hb_set_del_range (hb_set_t *set, hb_codepoint_t first, hb_codepoint_t last);
  211 hb_bool_t hb_set_is_equal (const hb_set_t *set, const hb_set_t *other);
  212 void hb_set_set (hb_set_t *set, const hb_set_t *other);
  213 void hb_set_union (hb_set_t *set, const hb_set_t *other);
  214 void hb_set_intersect (hb_set_t *set, const hb_set_t *other);
  215 void hb_set_subtract (hb_set_t *set, const hb_set_t *other);
  216 void hb_set_symmetric_difference (hb_set_t *set, const hb_set_t *other);
  217 void hb_set_invert (hb_set_t *set);
  218 unsigned int hb_set_get_population (const hb_set_t *set);
  219 hb_codepoint_t hb_set_get_min (const hb_set_t *set);
  220 hb_codepoint_t hb_set_get_max (const hb_set_t *set);
  221 hb_bool_t hb_set_next (const hb_set_t *set, hb_codepoint_t *codepoint);
  222 hb_bool_t hb_set_next_range (const hb_set_t *set, hb_codepoint_t *first, hb_codepoint_t *last);
  223 hb_bool_t hb_set_previous (const hb_set_t *set, hb_codepoint_t *codepoint);
  224 hb_bool_t hb_set_previous_range (const hb_set_t *set, hb_codepoint_t *first, hb_codepoint_t *last);
  225 
  226 hb_shape_plan_t *hb_shape_plan_create (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const char * const *shaper_list);
  227 hb_shape_plan_t *hb_shape_plan_create_cached (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const char * const *shaper_list);
  228 hb_shape_plan_t *hb_shape_plan_create2 (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const int *coords, unsigned int num_coords, const char * const *shaper_list);
  229 hb_shape_plan_t *hb_shape_plan_create_cached2 (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const int *coords, unsigned int num_coords, const char * const *shaper_list);
  230 hb_shape_plan_t *hb_shape_plan_get_empty (void);
  231 hb_shape_plan_t *hb_shape_plan_reference (hb_shape_plan_t *shape_plan);
  232 void hb_shape_plan_destroy (hb_shape_plan_t *shape_plan);
  233 hb_bool_t hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  234 void *hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key);
  235 hb_bool_t hb_shape_plan_execute (hb_shape_plan_t *shape_plan, hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features);
  236 const char *hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan);
  237 
  238 void hb_shape (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features);
  239 hb_bool_t hb_shape_full (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, const char * const *shaper_list);
  240 const char **hb_shape_list_shapers (void);
  241 
  242 hb_unicode_funcs_t *hb_unicode_funcs_get_default_REF (void);
  243 hb_unicode_funcs_t *hb_unicode_funcs_create (hb_unicode_funcs_t *parent);
  244 hb_unicode_funcs_t *hb_unicode_funcs_get_empty (void);
  245 hb_unicode_funcs_t *hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs);
  246 void hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs);
  247 hb_bool_t hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  248 void *hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key);
  249 void hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs);
  250 hb_bool_t hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs);
  251 hb_unicode_funcs_t *hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs);
  252 void hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs, hb_unicode_combining_class_func_t func, void *user_data, hb_destroy_func_t destroy);
  253 HB_DEPRECATED void hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs, hb_unicode_eastasian_width_func_t func, void *user_data, hb_destroy_func_t destroy);
  254 void hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs, hb_unicode_general_category_func_t func, void *user_data, hb_destroy_func_t destroy);
  255 void hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs, hb_unicode_mirroring_func_t func, void *user_data, hb_destroy_func_t destroy);
  256 void hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs, hb_unicode_script_func_t func, void *user_data, hb_destroy_func_t destroy);
  257 void hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs, hb_unicode_compose_func_t func, void *user_data, hb_destroy_func_t destroy);
  258 void hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_func_t func, void *user_data, hb_destroy_func_t destroy);
  259 HB_DEPRECATED void hb_unicode_funcs_set_decompose_compatibility_func (hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_compatibility_func_t func, void *user_data, hb_destroy_func_t destroy);
  260 hb_unicode_combining_class_t hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode);
  261 HB_DEPRECATED unsigned int hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode);
  262 hb_unicode_general_category_t hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode);
  263 hb_codepoint_t hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode);
  264 hb_script_t hb_unicode_script (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode);
  265 hb_bool_t hb_unicode_compose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab);
  266 hb_bool_t hb_unicode_decompose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b);
  267 HB_DEPRECATED unsigned int hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, hb_codepoint_t *decomposed);
  268 
  269 void hb_version (unsigned int *major, unsigned int *minor, unsigned int *micro);
  270 const char *hb_version_string (void);
  271 hb_bool_t hb_version_atleast (unsigned int major, unsigned int minor, unsigned int micro);
  272 
  273 hb_face_t *hb_ft_face_create (void *ft_face, hb_destroy_func_t destroy);
  274 hb_face_t *hb_ft_face_create_cached (void *ft_face);
  275 hb_face_t *hb_ft_face_create_referenced (void *ft_face);
  276 hb_font_t *hb_ft_font_create (void *ft_face, hb_destroy_func_t destroy);
  277 hb_font_t *hb_ft_font_create_referenced (void *ft_face);
  278 void *hb_ft_font_get_face (hb_font_t *font);
  279 void hb_ft_font_set_load_flags (hb_font_t *font, int load_flags);
  280 int hb_ft_font_get_load_flags (hb_font_t *font);
  281 void hb_ft_font_set_funcs (hb_font_t *font);
  282 void hb_ft_font_changed (hb_font_t *font);
  283 
  284 void hb_ot_font_set_funcs (hb_font_t *font);
  285 hb_bool_t hb_ot_layout_has_glyph_classes (hb_face_t *face);
  286 hb_ot_layout_glyph_class_t hb_ot_layout_get_glyph_class (hb_face_t *face, hb_codepoint_t glyph);
  287 void hb_ot_layout_get_glyphs_in_class (hb_face_t *face, hb_ot_layout_glyph_class_t klass, hb_set_t *glyphs);
  288 unsigned int hb_ot_layout_get_attach_points (hb_face_t *face, hb_codepoint_t glyph, unsigned int start_offset, unsigned int *point_count, unsigned int *point_array);
  289 unsigned int hb_ot_layout_get_ligature_carets (hb_font_t *font, hb_direction_t direction, hb_codepoint_t glyph, unsigned int start_offset, unsigned int *caret_count, hb_position_t *caret_array);
  290 unsigned int hb_ot_layout_table_get_script_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int start_offset, unsigned int *script_count, hb_tag_t *script_tags);
  291 hb_bool_t hb_ot_layout_table_find_script (hb_face_t *face, hb_tag_t table_tag, hb_tag_t script_tag, unsigned int *script_index);
  292 HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t hb_ot_layout_table_choose_script (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *script_tags, unsigned int *script_index, hb_tag_t *chosen_script);
  293 unsigned int hb_ot_layout_table_get_feature_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int start_offset, unsigned int *feature_count, hb_tag_t *feature_tags);
  294 unsigned int hb_ot_layout_script_get_language_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int start_offset, unsigned int *language_count, hb_tag_t *language_tags);
  295 HB_DEPRECATED_FOR (hb_ot_layout_script_select_language) hb_bool_t hb_ot_layout_script_find_language (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, hb_tag_t language_tag, unsigned int *language_index);
  296 hb_bool_t hb_ot_layout_language_get_required_feature_index (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int *feature_index);
  297 hb_bool_t hb_ot_layout_language_get_required_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int *feature_index, hb_tag_t *feature_tag);
  298 unsigned int hb_ot_layout_language_get_feature_indexes (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int start_offset, unsigned int *feature_count, unsigned int *feature_indexes);
  299 unsigned int hb_ot_layout_language_get_feature_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int start_offset, unsigned int *feature_count, hb_tag_t *feature_tags);
  300 hb_bool_t hb_ot_layout_language_find_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, hb_tag_t feature_tag, unsigned int *feature_index);
  301 unsigned int hb_ot_layout_feature_get_lookups (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, unsigned int start_offset, unsigned int *lookup_count, unsigned int *lookup_indexes);
  302 unsigned int hb_ot_layout_table_get_lookup_count (hb_face_t *face, hb_tag_t table_tag);
  303 void hb_ot_layout_collect_lookups (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *scripts, const hb_tag_t *languages, const hb_tag_t *features, hb_set_t *lookup_indexes);
  304 void hb_ot_layout_lookup_collect_glyphs (hb_face_t *face, hb_tag_t table_tag, unsigned int lookup_index, hb_set_t *glyphs_before, hb_set_t *glyphs_input, hb_set_t *glyphs_after, hb_set_t *glyphs_output);
  305 hb_bool_t hb_ot_layout_table_find_feature_variations (hb_face_t *face, hb_tag_t table_tag, const int *coords, unsigned int num_coords, unsigned int *variations_index);
  306 unsigned int hb_ot_layout_feature_with_variations_get_lookups (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, unsigned int variations_index, unsigned int start_offset, unsigned int *lookup_count, unsigned int *lookup_indexes);
  307 hb_bool_t hb_ot_layout_has_substitution (hb_face_t *face);
  308 hb_bool_t hb_ot_layout_lookup_would_substitute (hb_face_t *face, unsigned int lookup_index, const hb_codepoint_t *glyphs, unsigned int glyphs_length, hb_bool_t zero_context);
  309 void hb_ot_layout_lookup_substitute_closure (hb_face_t *face, unsigned int lookup_index, hb_set_t *glyphs);
  310 hb_bool_t hb_ot_layout_has_positioning (hb_face_t *face);
  311 hb_bool_t hb_ot_layout_get_size_params (hb_face_t *face, unsigned int *design_size, unsigned int *subfamily_id, unsigned int *subfamily_name_id, unsigned int *range_start, unsigned int *range_end);
  312 hb_bool_t hb_ot_math_has_data (hb_face_t *face);
  313 hb_position_t hb_ot_math_get_constant (hb_font_t *font, hb_ot_math_constant_t constant);
  314 hb_position_t hb_ot_math_get_glyph_italics_correction (hb_font_t *font, hb_codepoint_t glyph);
  315 hb_position_t hb_ot_math_get_glyph_top_accent_attachment (hb_font_t *font, hb_codepoint_t glyph);
  316 hb_bool_t hb_ot_math_is_glyph_extended_shape (hb_face_t *face, hb_codepoint_t glyph);
  317 hb_position_t hb_ot_math_get_glyph_kerning (hb_font_t *font, hb_codepoint_t glyph, hb_ot_math_kern_t kern, hb_position_t correction_height);
  318 unsigned int hb_ot_math_get_glyph_variants (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, unsigned int start_offset, unsigned int *variants_count, hb_ot_math_glyph_variant_t *variants);
  319 hb_position_t hb_ot_math_get_min_connector_overlap (hb_font_t *font, hb_direction_t direction);
  320 unsigned int hb_ot_math_get_glyph_assembly (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, unsigned int start_offset, unsigned int *parts_count, hb_ot_math_glyph_part_t *parts, hb_position_t *italics_correction);
  321 void hb_ot_shape_glyphs_closure (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, hb_set_t *glyphs);
  322 void hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan, hb_tag_t table_tag, hb_set_t *lookup_indexes);
  323 HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) void hb_ot_tags_from_script (hb_script_t script, hb_tag_t *script_tag_1, hb_tag_t *script_tag_2);
  324 hb_script_t hb_ot_tag_to_script (hb_tag_t tag);
  325 HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) hb_tag_t hb_ot_tag_from_language (hb_language_t language);
  326 hb_language_t hb_ot_tag_to_language (hb_tag_t tag);
  327 hb_bool_t hb_ot_var_has_data (hb_face_t *face);
  328 unsigned int hb_ot_var_get_axis_count (hb_face_t *face);
  329 HB_DEPRECATED_FOR (hb_ot_var_get_axis_infos) unsigned int hb_ot_var_get_axes (hb_face_t *face, unsigned int start_offset, unsigned int *axes_count, hb_ot_var_axis_t *axes_array);
  330 HB_DEPRECATED_FOR (hb_ot_var_find_axis_info) hb_bool_t hb_ot_var_find_axis (hb_face_t *face, hb_tag_t axis_tag, unsigned int *axis_index, hb_ot_var_axis_t *axis_info);
  331 void hb_ot_var_normalize_variations (hb_face_t *face, const hb_variation_t *variations, unsigned int variations_length, int *coords, unsigned int coords_length);
  332 void hb_ot_var_normalize_coords (hb_face_t *face, unsigned int coords_length, const float *design_coords, int *normalized_coords);
  333 
  334 /* 1.7.7 */
  335 
  336 hb_blob_t *hb_blob_create_from_file (const char *file_name);
  337 unsigned int hb_face_count (hb_blob_t *blob);
  338 hb_map_t *hb_map_create (void);
  339 hb_map_t *hb_map_get_empty (void);
  340 hb_map_t *hb_map_reference (hb_map_t *map);
  341 void hb_map_destroy (hb_map_t *map);
  342 hb_bool_t hb_map_set_user_data (hb_map_t *map, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  343 void *hb_map_get_user_data (hb_map_t *map, hb_user_data_key_t *key);
  344 hb_bool_t hb_map_allocation_successful (const hb_map_t *map);
  345 void hb_map_clear (hb_map_t *map);
  346 hb_bool_t hb_map_is_empty (const hb_map_t *map);
  347 unsigned int hb_map_get_population (const hb_map_t *map);
  348 void hb_map_set (hb_map_t *map, hb_codepoint_t key, hb_codepoint_t value);
  349 hb_codepoint_t hb_map_get (const hb_map_t *map, hb_codepoint_t key);
  350 void hb_map_del (hb_map_t *map, hb_codepoint_t key);
  351 hb_bool_t hb_map_has (const hb_map_t *map, hb_codepoint_t key);
  352 
  353 /* 1.8.6 */
  354 
  355 void hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advances_func_t func, void *user_data, hb_destroy_func_t destroy);
  356 void hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advances_func_t func, void *user_data, hb_destroy_func_t destroy);
  357 void hb_font_get_glyph_advances_for_direction (hb_font_t *font, hb_direction_t direction, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride);
  358 void hb_font_get_glyph_h_advances (hb_font_t *font, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride);
  359 void hb_font_get_glyph_v_advances (hb_font_t *font, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride);
  360 
  361 /* 1.8.8 */
  362 
  363 hb_unicode_funcs_t *hb_unicode_funcs_get_default (void);
  364 
  365 /* 1.9.0 */
  366 
  367 void hb_face_collect_unicodes (hb_face_t *face, hb_set_t *out);
  368 void hb_face_collect_variation_selectors (hb_face_t *face, hb_set_t *out);
  369 void hb_face_collect_variation_unicodes (hb_face_t *face, hb_codepoint_t variation_selector, hb_set_t *out);
  370 hb_face_t *hb_face_builder_create (void);
  371 hb_bool_t hb_face_builder_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob);
  372 
  373 /* 2.0.0 */
  374 
  375 void hb_buffer_set_invisible_glyph (hb_buffer_t *buffer, hb_codepoint_t invisible);
  376 hb_codepoint_t hb_buffer_get_invisible_glyph (hb_buffer_t *buffer);
  377 void hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs, hb_font_get_nominal_glyphs_func_t func, void *user_data, hb_destroy_func_t destroy);
  378 hb_bool_t hb_ot_layout_table_select_script (hb_face_t *face, hb_tag_t table_tag, unsigned int script_count, const hb_tag_t *script_tags, unsigned int *script_index, hb_tag_t *chosen_script);
  379 hb_bool_t hb_ot_layout_script_select_language (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_count, const hb_tag_t *language_tags, unsigned int *language_index);
  380 hb_bool_t hb_ot_layout_feature_get_name_ids (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, hb_ot_name_id_t *label_id, hb_ot_name_id_t *tooltip_id, hb_ot_name_id_t *sample_id, unsigned int *num_named_parameters, hb_ot_name_id_t *first_param_id);
  381 unsigned int hb_ot_layout_feature_get_characters (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, unsigned int start_offset, unsigned int *char_count, hb_codepoint_t *characters);
  382 void hb_ot_tags_from_script_and_language (hb_script_t script, hb_language_t language, unsigned int *script_count, hb_tag_t *script_tags, unsigned int *language_count, hb_tag_t *language_tags);
  383 void hb_ot_tags_to_script_and_language (hb_tag_t script_tag, hb_tag_t language_tag, hb_script_t *script, hb_language_t *language);
  384 
  385 /* 2.1.0 */
  386 
  387 uint8_t hb_color_get_alpha (hb_color_t color);
  388 uint8_t hb_color_get_red (hb_color_t color);
  389 uint8_t hb_color_get_green (hb_color_t color);
  390 uint8_t hb_color_get_blue (hb_color_t color);
  391 hb_bool_t hb_ot_color_has_palettes (hb_face_t *face);
  392 unsigned int hb_ot_color_palette_get_count (hb_face_t *face);
  393 hb_ot_name_id_t hb_ot_color_palette_get_name_id (hb_face_t *face, unsigned int palette_index);
  394 hb_ot_name_id_t hb_ot_color_palette_color_get_name_id (hb_face_t *face, unsigned int color_index);
  395 hb_ot_color_palette_flags_t hb_ot_color_palette_get_flags (hb_face_t *face, unsigned int palette_index);
  396 unsigned int hb_ot_color_palette_get_colors (hb_face_t *face, unsigned int palette_index, unsigned int start_offset, unsigned int *color_count, hb_color_t *colors);
  397 hb_bool_t hb_ot_color_has_layers (hb_face_t *face);
  398 unsigned int hb_ot_color_glyph_get_layers (hb_face_t *face, hb_codepoint_t glyph, unsigned int start_offset, unsigned int *layer_count, hb_ot_color_layer_t *layers);
  399 hb_bool_t hb_ot_color_has_svg (hb_face_t *face);
  400 hb_blob_t *hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph);
  401 hb_bool_t hb_ot_color_has_png (hb_face_t *face);
  402 hb_blob_t *hb_ot_color_glyph_reference_png (hb_font_t *font, hb_codepoint_t glyph);
  403 const hb_ot_name_entry_t *hb_ot_name_list_names (hb_face_t *face, unsigned int *num_entries);
  404 unsigned int hb_ot_name_get_utf8 (hb_face_t *face, hb_ot_name_id_t name_id, hb_language_t language, unsigned int *text_size, char *text);
  405 unsigned int hb_ot_name_get_utf16 (hb_face_t *face, hb_ot_name_id_t name_id, hb_language_t language, unsigned int *text_size, uint16_t *text);
  406 unsigned int hb_ot_name_get_utf32 (hb_face_t *face, hb_ot_name_id_t name_id, hb_language_t language, unsigned int *text_size, uint32_t *text);
  407 
  408 /* 2.2.0 */
  409 
  410 unsigned int hb_aat_layout_get_feature_types (hb_face_t *face, unsigned int start_offset, unsigned int *feature_count, hb_aat_layout_feature_type_t *features);
  411 hb_ot_name_id_t hb_aat_layout_feature_type_get_name_id (hb_face_t *face, hb_aat_layout_feature_type_t feature_type);
  412 unsigned int hb_aat_layout_feature_type_get_selector_infos (hb_face_t *face, hb_aat_layout_feature_type_t feature_type, unsigned int start_offset, unsigned int *selector_count, hb_aat_layout_feature_selector_info_t *selectors, unsigned int *default_index);
  413 unsigned int hb_ot_var_get_axis_infos (hb_face_t *face, unsigned int start_offset, unsigned int *axes_count, hb_ot_var_axis_info_t *axes_array);
  414 hb_bool_t hb_ot_var_find_axis_info (hb_face_t *face, hb_tag_t axis_tag, hb_ot_var_axis_info_t *axis_info);
  415 unsigned int hb_ot_var_get_named_instance_count (hb_face_t *face);
  416 hb_ot_name_id_t hb_ot_var_named_instance_get_subfamily_name_id (hb_face_t *face, unsigned int instance_index);
  417 hb_ot_name_id_t hb_ot_var_named_instance_get_postscript_name_id (hb_face_t *face, unsigned int instance_index);
  418 unsigned int hb_ot_var_named_instance_get_design_coords (hb_face_t *face, unsigned int instance_index, unsigned int *coords_length, float *coords);
  419 
  420 /* 2.3.0 */
  421 
  422 hb_bool_t hb_aat_layout_has_substitution (hb_face_t *face);
  423 hb_bool_t hb_aat_layout_has_positioning (hb_face_t *face);
  424 hb_bool_t hb_aat_layout_has_tracking (hb_face_t *face);
  425 
  426 /* 2.6.0 */
  427 
  428 void hb_font_set_var_named_instance (hb_font_t *font, unsigned instance_index);
  429 hb_bool_t hb_ot_layout_get_baseline (hb_font_t *font, hb_ot_layout_baseline_tag_t baseline_tag, hb_direction_t direction, hb_tag_t script_tag, hb_tag_t language_tag, hb_position_t *coord);
  430 unsigned int hb_ot_meta_get_entry_tags (hb_face_t *face, unsigned int start_offset, unsigned int *entries_count, hb_ot_meta_tag_t *entries);
  431 hb_blob_t *hb_ot_meta_reference_entry (hb_face_t *face, hb_ot_meta_tag_t meta_tag);
  432 hb_bool_t hb_ot_metrics_get_position (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag, hb_position_t *position);
  433 float hb_ot_metrics_get_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag);
  434 hb_position_t hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag);
  435 hb_position_t hb_ot_metrics_get_y_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag);
  436 
  437 /* 2.6.3 */
  438 
  439 unsigned int hb_font_get_nominal_glyphs (hb_font_t *font, unsigned int count, const hb_codepoint_t *first_unicode, unsigned int unicode_stride, hb_codepoint_t *first_glyph, unsigned int glyph_stride);
  440 
  441 /* 2.6.5 */
  442 
  443 void *hb_ft_font_lock_face (hb_font_t *font);
  444 void hb_ft_font_unlock_face (hb_font_t *font);
  445 
  446 /* 2.6.8 */
  447 
  448 unsigned hb_ot_layout_lookup_get_glyph_alternates (hb_face_t *face, unsigned lookup_index, hb_codepoint_t glyph, unsigned start_offset, unsigned *alternate_count, hb_codepoint_t *alternate_glyphs);
  449 
  450 /* 2.7.3 */
  451 
  452 hb_bool_t hb_buffer_has_positions (hb_buffer_t *buffer);
  453 unsigned int hb_buffer_serialize (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags);
  454 unsigned int hb_buffer_serialize_unicode (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags);
  455 hb_bool_t hb_buffer_deserialize_unicode (hb_buffer_t *buffer, const char *buf, int buf_len, const char **end_ptr, hb_buffer_serialize_format_t format);
  456 
  457 /* 2.8.2 */
  458 
  459 hb_blob_t *hb_blob_create_or_fail (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy);
  460 hb_blob_t *hb_blob_create_from_file_or_fail (const char *file_name);
  461 hb_set_t *hb_set_copy (const hb_set_t *set);
  462 
  463 /* 3.0.0 */
  464 
  465 float hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag);
  466 hb_subset_input_t *hb_subset_input_create_or_fail (void);
  467 hb_subset_input_t *hb_subset_input_reference (hb_subset_input_t *input);
  468 void hb_subset_input_destroy (hb_subset_input_t *input);
  469 hb_bool_t hb_subset_input_set_user_data (hb_subset_input_t *input, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace);
  470 void *hb_subset_input_get_user_data (const hb_subset_input_t *input, hb_user_data_key_t *key);
  471 hb_set_t *hb_subset_input_unicode_set (hb_subset_input_t *input);
  472 hb_set_t *hb_subset_input_glyph_set (hb_subset_input_t *input);
  473 hb_set_t *hb_subset_input_set (hb_subset_input_t *input, hb_subset_sets_t set_type);
  474 hb_subset_flags_t hb_subset_input_get_flags (hb_subset_input_t *input);
  475 void hb_subset_input_set_flags (hb_subset_input_t *input, unsigned value);
  476 hb_face_t *hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input);
  477 
  478 /* 3.1.1 */
  479 
  480 void hb_buffer_set_not_found_glyph (hb_buffer_t *buffer, hb_codepoint_t not_found);
  481 hb_codepoint_t hb_buffer_get_not_found_glyph (hb_buffer_t *buffer);
  482 
  483 /* 3.3.0 */
  484 
  485 void hb_segment_properties_overlay (hb_segment_properties_t *p, const hb_segment_properties_t *src);
  486 hb_buffer_t *hb_buffer_create_similar (const hb_buffer_t *src);
  487 void hb_font_set_synthetic_slant (hb_font_t *font, float slant);
  488 float hb_font_get_synthetic_slant (hb_font_t *font);
  489 const float *hb_font_get_var_coords_design (hb_font_t *font, unsigned int *length);
  490 
  491 #ifdef __cplusplus
  492 }
  493 #endif
  494 
  495 #endif /* CLIB_HARFBUZZ_PROTOS_H */