X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fhb-ot-layout.h;h=b8b5baf3b3da80adbb24b1a4931c50f3731aaa90;hb=HEAD;hp=d9eb057820f03239637f34a96ace9865e6d54d54;hpb=468769b8f5332940278244e744ec2bd5a5dc5ee9;p=framework%2Fuifw%2Fharfbuzz.git diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index d9eb057..b8b5baf 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2007,2008,2009 Red Hat, Inc. + * Copyright © 2007,2008,2009 Red Hat, Inc. * - * This is part of HarfBuzz, an OpenType Layout engine library. + * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this @@ -24,15 +24,20 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include instead." +#endif + #ifndef HB_OT_LAYOUT_H #define HB_OT_LAYOUT_H -#include "hb-common.h" -#include "hb-buffer.h" -#include "hb-font.h" +#include "hb.h" + +#include "hb-ot-tag.h" HB_BEGIN_DECLS + #define HB_OT_TAG_GDEF HB_TAG('G','D','E','F') #define HB_OT_TAG_GSUB HB_TAG('G','S','U','B') #define HB_OT_TAG_GPOS HB_TAG('G','P','O','S') @@ -41,51 +46,26 @@ HB_BEGIN_DECLS * GDEF */ -typedef enum { - HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0x0000, - HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH = 0x0002, - HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE = 0x0004, - HB_OT_LAYOUT_GLYPH_CLASS_MARK = 0x0008, - HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT = 0x0010 -} hb_ot_layout_glyph_class_t; - -/* XXX These should eventually be removed as we move synthesized glyph - * classes in harfbuzz. */ - hb_bool_t -hb_ot_layout_has_font_glyph_classes (hb_face_t *face); - -hb_ot_layout_glyph_class_t -hb_ot_layout_get_glyph_class (hb_face_t *face, - hb_codepoint_t glyph); - -void -hb_ot_layout_set_glyph_class (hb_face_t *face, - hb_codepoint_t glyph, - hb_ot_layout_glyph_class_t klass); - -void -hb_ot_layout_build_glyph_classes (hb_face_t *face, - uint16_t num_total_glyphs, - hb_codepoint_t *glyphs, - unsigned char *klasses, - uint16_t count); +hb_ot_layout_has_glyph_classes (hb_face_t *face); /* Not that useful. Provides list of attach points for a glyph that a * client may want to cache */ -hb_bool_t +unsigned int hb_ot_layout_get_attach_points (hb_face_t *face, hb_codepoint_t glyph, + unsigned int start_offset, unsigned int *point_count /* IN/OUT */, unsigned int *point_array /* OUT */); /* Ligature caret positions */ -hb_bool_t -hb_ot_layout_get_lig_carets (hb_face_t *face, - hb_font_t *font, - hb_codepoint_t glyph, - unsigned int *caret_count /* IN/OUT */, - int *caret_array /* OUT */); +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 /* IN/OUT */, + hb_position_t *caret_array /* OUT */); /* @@ -95,12 +75,11 @@ hb_ot_layout_get_lig_carets (hb_face_t *face, #define HB_OT_LAYOUT_NO_SCRIPT_INDEX ((unsigned int) 0xFFFF) #define HB_OT_LAYOUT_NO_FEATURE_INDEX ((unsigned int) 0xFFFF) #define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX ((unsigned int) 0xFFFF) -#define HB_OT_LAYOUT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T') -#define HB_OT_LAYOUT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't') -hb_bool_t +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 /* IN/OUT */, hb_tag_t *script_tags /* OUT */); @@ -110,22 +89,26 @@ hb_ot_layout_table_find_script (hb_face_t *face, hb_tag_t script_tag, unsigned int *script_index); +/* Like find_script, but takes zero-terminated array of scripts to test */ 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); + +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 /* IN/OUT */, hb_tag_t *feature_tags /* OUT */); -hb_bool_t -hb_ot_layout_table_find_feature (hb_face_t *face, - hb_tag_t table_tag, - hb_tag_t feature_tag, - unsigned int *feature_index); - -hb_bool_t +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 /* IN/OUT */, hb_tag_t *language_tags /* OUT */); @@ -143,19 +126,21 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face, unsigned int language_index, unsigned int *feature_index); -hb_bool_t +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 /* IN/OUT */, unsigned int *feature_indexes /* OUT */); -hb_bool_t +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 /* IN/OUT */, hb_tag_t *feature_tags /* OUT */); @@ -167,10 +152,11 @@ hb_ot_layout_language_find_feature (hb_face_t *face, hb_tag_t feature_tag, unsigned int *feature_index); -hb_bool_t +unsigned int hb_ot_layout_feature_get_lookup_indexes (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, + unsigned int start_offset, unsigned int *lookup_count /* IN/OUT */, unsigned int *lookup_indexes /* OUT */); @@ -182,12 +168,26 @@ hb_ot_layout_feature_get_lookup_indexes (hb_face_t *face, hb_bool_t hb_ot_layout_has_substitution (hb_face_t *face); +/* Should be called before all the substitute_lookup's are done. */ +void +hb_ot_layout_substitute_start (hb_buffer_t *buffer); + hb_bool_t hb_ot_layout_substitute_lookup (hb_face_t *face, hb_buffer_t *buffer, unsigned int lookup_index, hb_mask_t mask); +/* Should be called after all the substitute_lookup's are done */ +void +hb_ot_layout_substitute_finish (hb_buffer_t *buffer); + + +void +hb_ot_layout_substitute_closure_lookup (hb_face_t *face, + hb_set_t *glyphs, + unsigned int lookup_index); + /* * GPOS */ @@ -195,12 +195,19 @@ hb_ot_layout_substitute_lookup (hb_face_t *face, hb_bool_t hb_ot_layout_has_positioning (hb_face_t *face); +/* Should be called before all the position_lookup's are done. Resets positions to zero. */ +void +hb_ot_layout_position_start (hb_buffer_t *buffer); + hb_bool_t -hb_ot_layout_position_lookup (hb_face_t *face, - hb_font_t *font, - hb_buffer_t *buffer, - unsigned int lookup_index, - hb_mask_t mask); +hb_ot_layout_position_lookup (hb_font_t *font, + hb_buffer_t *buffer, + unsigned int lookup_index, + hb_mask_t mask); + +/* Should be called after all the position_lookup's are done */ +void +hb_ot_layout_position_finish (hb_buffer_t *buffer); HB_END_DECLS