#ifndef HB_OT_LAYOUT_HH
#define HB_OT_LAYOUT_HH
#include "hb.hh"
#include "hb-font.hh"
#include "hb-buffer.hh"
#include "hb-open-type.hh"
#include "hb-ot-shape.hh"
#include "hb-set-digest.hh"
struct hb_ot_shape_plan_t;
HB_INTERNAL bool
hb_ot_layout_has_kerning (hb_face_t *face);
HB_INTERNAL bool
hb_ot_layout_has_machine_kerning (hb_face_t *face);
HB_INTERNAL bool
hb_ot_layout_has_cross_kerning (hb_face_t *face);
HB_INTERNAL void
hb_ot_layout_kern (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer);
HB_INTERNAL bool
hb_ot_layout_table_find_feature (hb_face_t *face,
hb_tag_t table_tag,
hb_tag_t feature_tag,
unsigned int *feature_index);
enum hb_ot_layout_glyph_props_flags_t
{ … };
HB_MARK_AS_FLAG_T (hb_ot_layout_glyph_props_flags_t);
HB_INTERNAL void
hb_ot_layout_substitute_start (hb_font_t *font,
hb_buffer_t *buffer);
namespace OT {
struct hb_ot_apply_context_t;
struct hb_ot_layout_lookup_accelerator_t;
namespace Layout {
namespace GSUB_impl {
struct SubstLookup;
}
}
}
HB_INTERNAL void
hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c,
const OT::Layout::GSUB_impl::SubstLookup &lookup,
const OT::hb_ot_layout_lookup_accelerator_t &accel);
HB_INTERNAL void
hb_ot_layout_position_start (hb_font_t *font,
hb_buffer_t *buffer);
HB_INTERNAL void
hb_ot_layout_position_finish_advances (hb_font_t *font,
hb_buffer_t *buffer);
HB_INTERNAL void
hb_ot_layout_position_finish_offsets (hb_font_t *font,
hb_buffer_t *buffer);
#define unicode_props() …
#define glyph_props …
#define lig_props …
#define syllable() …
#define foreach_syllable(buffer, start, end) …
static inline unsigned int
_hb_next_syllable (hb_buffer_t *buffer, unsigned int start)
{ … }
enum hb_unicode_props_flags_t { … };
HB_MARK_AS_FLAG_T (hb_unicode_props_flags_t);
static inline void
_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
{ … }
static inline void
_hb_glyph_info_set_general_category (hb_glyph_info_t *info,
hb_unicode_general_category_t gen_cat)
{ … }
static inline hb_unicode_general_category_t
_hb_glyph_info_get_general_category (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_unicode_mark (const hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info,
unsigned int modified_class)
{ … }
static inline unsigned int
_hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info)
{ … }
#define info_cc(info) …
static inline bool
_hb_glyph_info_is_unicode_space (const hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_set_unicode_space_fallback_type (hb_glyph_info_t *info, hb_unicode_funcs_t::space_t s)
{ … }
static inline hb_unicode_funcs_t::space_t
_hb_glyph_info_get_unicode_space_fallback_type (const hb_glyph_info_t *info)
{ … }
static inline bool _hb_glyph_info_substituted (const hb_glyph_info_t *info);
static inline bool
_hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_default_ignorable_and_not_hidden (const hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_unhide (hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_set_continuation (hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_reset_continuation (hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_continuation (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_grapheme_group_func (const hb_glyph_info_t& a HB_UNUSED,
const hb_glyph_info_t& b)
{ … }
#define foreach_grapheme(buffer, start, end) …
static inline void
_hb_ot_layout_reverse_graphemes (hb_buffer_t *buffer)
{ … }
static inline bool
_hb_glyph_info_is_unicode_format (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_zwnj (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_zwj (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_joiner (const hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_flip_joiners (hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_clear_lig_props (hb_glyph_info_t *info)
{ … }
#define IS_LIG_BASE …
static inline void
_hb_glyph_info_set_lig_props_for_ligature (hb_glyph_info_t *info,
unsigned int lig_id,
unsigned int lig_num_comps)
{ … }
static inline void
_hb_glyph_info_set_lig_props_for_mark (hb_glyph_info_t *info,
unsigned int lig_id,
unsigned int lig_comp)
{ … }
static inline void
_hb_glyph_info_set_lig_props_for_component (hb_glyph_info_t *info, unsigned int comp)
{ … }
static inline unsigned int
_hb_glyph_info_get_lig_id (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_ligated_internal (const hb_glyph_info_t *info)
{ … }
static inline unsigned int
_hb_glyph_info_get_lig_comp (const hb_glyph_info_t *info)
{ … }
static inline unsigned int
_hb_glyph_info_get_lig_num_comps (const hb_glyph_info_t *info)
{ … }
static inline uint8_t
_hb_allocate_lig_id (hb_buffer_t *buffer)
{ … }
static inline void
_hb_glyph_info_set_glyph_props (hb_glyph_info_t *info, unsigned int props)
{ … }
static inline unsigned int
_hb_glyph_info_get_glyph_props (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_base_glyph (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_ligature (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_is_mark (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_substituted (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_ligated (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_multiplied (const hb_glyph_info_t *info)
{ … }
static inline bool
_hb_glyph_info_ligated_and_didnt_multiply (const hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_clear_ligated_and_multiplied (hb_glyph_info_t *info)
{ … }
static inline void
_hb_glyph_info_clear_substituted (hb_glyph_info_t *info)
{ … }
static inline bool
_hb_clear_substitution_flags (const hb_ot_shape_plan_t *plan HB_UNUSED,
hb_font_t *font HB_UNUSED,
hb_buffer_t *buffer)
{ … }
static inline void
_hb_buffer_allocate_unicode_vars (hb_buffer_t *buffer)
{ … }
static inline void
_hb_buffer_deallocate_unicode_vars (hb_buffer_t *buffer)
{ … }
static inline void
_hb_buffer_assert_unicode_vars (hb_buffer_t *buffer)
{ … }
static inline void
_hb_buffer_allocate_gsubgpos_vars (hb_buffer_t *buffer)
{ … }
static inline void
_hb_buffer_deallocate_gsubgpos_vars (hb_buffer_t *buffer)
{ … }
static inline void
_hb_buffer_assert_gsubgpos_vars (hb_buffer_t *buffer)
{ … }
#undef unicode_props0
#undef unicode_props1
#undef lig_props
#undef glyph_props
#endif