X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fhb-font.h;h=37d36b4d2b2b13f03dc0472dd25c81658e88ef71;hb=97158392a5899ddb739afaac925128f33f699bd7;hp=358eee2c5fe375abe61a4c473093893a22a0a56e;hpb=85e6218e3306165d69ef44277459511d5b54b9ff;p=framework%2Fuifw%2Fharfbuzz.git diff --git a/src/hb-font.h b/src/hb-font.h index 358eee2..37d36b4 100644 --- a/src/hb-font.h +++ b/src/hb-font.h @@ -41,10 +41,10 @@ typedef struct _hb_font_t hb_font_t; */ hb_face_t * -hb_face_create_for_data (hb_blob_t *blob, - unsigned int index); +hb_face_create (hb_blob_t *blob, + unsigned int index); -typedef hb_blob_t * (*hb_get_table_func_t) (hb_tag_t tag, void *user_data); +typedef hb_blob_t * (*hb_get_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); /* calls destroy() when not needing user_data anymore */ hb_face_t * @@ -53,6 +53,9 @@ hb_face_create_for_tables (hb_get_table_func_t get_table, hb_destroy_func_t destroy); hb_face_t * +hb_face_get_empty (void); + +hb_face_t * hb_face_reference (hb_face_t *face); void @@ -69,6 +72,12 @@ void * hb_face_get_user_data (hb_face_t *face, hb_user_data_key_t *key); +void +hb_face_make_immutable (hb_face_t *face); + +hb_bool_t +hb_face_is_immutable (hb_face_t *face); + hb_blob_t * hb_face_reference_table (hb_face_t *face, @@ -88,6 +97,9 @@ hb_font_funcs_t * hb_font_funcs_create (void); hb_font_funcs_t * +hb_font_funcs_get_empty (void); + +hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs); void @@ -115,88 +127,176 @@ hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); typedef struct _hb_glyph_extents_t { - hb_position_t x_bearing; - hb_position_t y_bearing; - hb_position_t width; - hb_position_t height; + hb_position_t x_bearing; + hb_position_t y_bearing; + hb_position_t width; + hb_position_t height; } hb_glyph_extents_t; -typedef hb_codepoint_t (*hb_font_get_glyph_func_t) (hb_font_t *font, const void *user_data, - hb_codepoint_t unicode, hb_codepoint_t variation_selector); -typedef void (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, const void *user_data, - hb_codepoint_t glyph, - hb_position_t *x_advance, hb_position_t *y_advance); -typedef void (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, const void *user_data, - hb_codepoint_t glyph, - hb_glyph_extents_t *extents); -typedef hb_bool_t (*hb_font_get_contour_point_func_t) (hb_font_t *font, const void *user_data, - unsigned int point_index, hb_codepoint_t glyph, - hb_position_t *x, hb_position_t *y); -typedef hb_position_t (*hb_font_get_kerning_func_t) (hb_font_t *font, const void *user_data, - hb_codepoint_t first_glyph, hb_codepoint_t second_glyph); + +/* func types */ + +typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data); + + +typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + void *user_data); +typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; +typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; + +typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y, + void *user_data); +typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; +typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; + +typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, + void *user_data); +typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; +typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; +typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + hb_glyph_extents_t *extents, + void *user_data); +typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, unsigned int point_index, + hb_position_t *x, hb_position_t *y, + void *user_data); + + +/* func setters */ + void hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, - hb_font_get_glyph_func_t glyph_func); + hb_font_get_glyph_func_t glyph_func, + void *user_data, hb_destroy_func_t destroy); void -hb_font_funcs_set_glyph_advance_func (hb_font_funcs_t *ffuncs, - hb_font_get_glyph_advance_func_t glyph_advance_func); +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); +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); void -hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, - hb_font_get_glyph_extents_func_t glyph_extents_func); +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); +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); void -hb_font_funcs_set_contour_point_func (hb_font_funcs_t *ffuncs, - hb_font_get_contour_point_func_t contour_point_func); +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); +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); void -hb_font_funcs_set_kerning_func (hb_font_funcs_t *ffuncs, - hb_font_get_kerning_func_t kerning_func); +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); +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); + +/* func dispatch */ -/* These never return NULL. Return fallback defaults instead. */ +hb_bool_t +hb_font_get_glyph (hb_font_t *font, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph); -hb_font_get_glyph_func_t -hb_font_funcs_get_glyph_func (hb_font_funcs_t *ffuncs); +hb_position_t +hb_font_get_glyph_h_advance (hb_font_t *font, + hb_codepoint_t glyph); +hb_position_t +hb_font_get_glyph_v_advance (hb_font_t *font, + hb_codepoint_t glyph); -hb_font_get_glyph_advance_func_t -hb_font_funcs_get_glyph_advance_func (hb_font_funcs_t *ffuncs); +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); +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); -hb_font_get_glyph_extents_func_t -hb_font_funcs_get_glyph_extents_func (hb_font_funcs_t *ffuncs); +hb_position_t +hb_font_get_glyph_h_kerning (hb_font_t *font, + hb_codepoint_t left_glyph, hb_codepoint_t right_glyph); +hb_position_t +hb_font_get_glyph_v_kerning (hb_font_t *font, + hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph); -hb_font_get_contour_point_func_t -hb_font_funcs_get_contour_point_func (hb_font_funcs_t *ffuncs); +hb_bool_t +hb_font_get_glyph_extents (hb_font_t *font, + hb_codepoint_t glyph, + hb_glyph_extents_t *extents); -hb_font_get_kerning_func_t -hb_font_funcs_get_kerning_func (hb_font_funcs_t *ffuncs); +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); -hb_codepoint_t -hb_font_get_glyph (hb_font_t *font, - hb_codepoint_t unicode, hb_codepoint_t variation_selector); +/* high-level funcs, with fallback */ void -hb_font_get_glyph_advance (hb_font_t *font, - hb_codepoint_t glyph, - hb_position_t *x_advance, hb_position_t *y_advance); +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); +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); +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); +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); void -hb_font_get_glyph_extents (hb_font_t *font, - hb_codepoint_t glyph, - hb_glyph_extents_t *extents); +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); hb_bool_t -hb_font_get_contour_point (hb_font_t *font, - unsigned int point_index, hb_codepoint_t glyph, - hb_position_t *x, hb_position_t *y); +hb_font_get_glyph_extents_for_origin (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + hb_glyph_extents_t *extents); -hb_position_t -hb_font_get_kerning (hb_font_t *font, - hb_codepoint_t first_glyph, hb_codepoint_t second_glyph); +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); /* @@ -209,6 +309,12 @@ hb_font_t * hb_font_create (hb_face_t *face); hb_font_t * +hb_font_create_sub_font (hb_font_t *parent); + +hb_font_t * +hb_font_get_empty (void); + +hb_font_t * hb_font_reference (hb_font_t *font); void @@ -231,6 +337,8 @@ hb_font_make_immutable (hb_font_t *font); hb_bool_t hb_font_is_immutable (hb_font_t *font); +hb_font_t * +hb_font_get_parent (hb_font_t *font); hb_face_t * hb_font_get_face (hb_font_t *font); @@ -239,13 +347,10 @@ hb_font_get_face (hb_font_t *font); void hb_font_set_funcs (hb_font_t *font, hb_font_funcs_t *klass, - void *user_data, + void *font_data, hb_destroy_func_t destroy); -/* - * We should add support for full matrices. - */ void hb_font_set_scale (hb_font_t *font, int x_scale,