29 #ifndef HB_OT_LAYOUT_HH
30 #define HB_OT_LAYOUT_HH
69 unsigned int *feature_index);
110 struct hb_ot_apply_context_t;
111 struct hb_ot_layout_lookup_accelerator_t;
146 #define unicode_props() var2.u16[0]
149 #define glyph_props() var1.u16[0]
150 #define lig_props() var1.u8[2]
151 #define syllable() var1.u8[3]
155 #define foreach_syllable(buffer, start, end) \
157 _count = buffer->len, \
158 start = 0, end = _count ? _hb_next_syllable (buffer, 0) : 0; \
160 start = end, end = _hb_next_syllable (buffer, start))
162 static inline unsigned int
211 unsigned int u =
info->codepoint;
212 unsigned int gen_cat = (
unsigned int) unicode->general_category (
u);
213 unsigned int props = gen_cat;
276 unsigned int modified_class)
280 info->unicode_props() = (modified_class<<8) | (
info->unicode_props() & 0xFF);
282 static inline unsigned int
285 return _hb_glyph_info_is_unicode_mark (
info) ?
info->unicode_props()>>8 : 0;
287 #define info_cc(info) (_hb_glyph_info_get_modified_combining_class (&(info)))
292 return _hb_glyph_info_get_general_category (
info) ==
300 info->unicode_props() = (((
unsigned int)
s)<<8) | (
info->unicode_props() & 0xFF);
305 return _hb_glyph_info_is_unicode_space (
info) ?
316 !_hb_glyph_info_substituted (
info);
323 !_hb_glyph_info_substituted (
info);
350 {
return _hb_glyph_info_is_continuation (&
b); }
352 #define foreach_grapheme(buffer, start, end) \
353 foreach_group (buffer, start, end, _hb_grapheme_group_func)
358 buffer->reverse_groups (_hb_grapheme_group_func,
365 return _hb_glyph_info_get_general_category (
info) ==
386 if (!_hb_glyph_info_is_unicode_format (
info))
419 info->lig_props() = 0;
422 #define IS_LIG_BASE 0x10
427 unsigned int lig_num_comps)
429 info->lig_props() = (lig_id << 5) |
IS_LIG_BASE | (lig_num_comps & 0x0F);
435 unsigned int lig_comp)
437 info->lig_props() = (lig_id << 5) | (lig_comp & 0x0F);
443 _hb_glyph_info_set_lig_props_for_mark (
info, 0, comp);
446 static inline unsigned int
449 return info->lig_props() >> 5;
458 static inline unsigned int
461 if (_hb_glyph_info_ligated_internal (
info))
464 return info->lig_props() & 0x0F;
467 static inline unsigned int
471 _hb_glyph_info_ligated_internal (
info))
472 return info->lig_props() & 0x0F;
477 static inline uint8_t
480 uint8_t lig_id =
buffer->next_serial () & 0x07;
482 lig_id = _hb_allocate_lig_id (
buffer);
494 static inline unsigned int
497 return info->glyph_props();
539 return _hb_glyph_info_ligated (
info) && !_hb_glyph_info_multiplied (
info);
562 for (
unsigned int i = 0;
i <
count;
i++)
563 _hb_glyph_info_clear_substituted (&
info[
i]);
612 #undef unicode_props0
613 #undef unicode_props1
small capitals from c petite p scientific f u
small capitals from c petite p scientific i
[1]
#define HB_BUFFER_ASSERT_VAR(b, var)
#define HB_BUFFER_DEALLOCATE_VAR(b, var)
@ HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES
@ HB_BUFFER_SCRATCH_FLAG_HAS_CGJ
@ HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII
#define HB_BUFFER_ALLOCATE_VAR(b, var)
void const void *obj HB_UNUSED
HB_EXTERN hb_tag_t table_tag
HB_INTERNAL bool hb_ot_layout_has_kerning(hb_face_t *face)
HB_INTERNAL void hb_ot_layout_position_start(hb_font_t *font, hb_buffer_t *buffer)
@ UPROPS_MASK_CONTINUATION
HB_INTERNAL void hb_ot_layout_position_finish_offsets(hb_font_t *font, hb_buffer_t *buffer)
HB_INTERNAL bool hb_ot_layout_has_cross_kerning(hb_face_t *face)
HB_INTERNAL void hb_ot_layout_position_finish_advances(hb_font_t *font, hb_buffer_t *buffer)
HB_INTERNAL bool hb_ot_layout_has_machine_kerning(hb_face_t *face)
HB_INTERNAL void hb_ot_layout_substitute_start(hb_font_t *font, hb_buffer_t *buffer)
HB_INTERNAL void hb_ot_layout_delete_glyphs_inplace(hb_buffer_t *buffer, bool(*filter)(const hb_glyph_info_t *info))
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)
HB_INTERNAL void hb_ot_layout_kern(const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer)
HB_INTERNAL void hb_ot_layout_substitute_lookup(OT::hb_ot_apply_context_t *c, const OT::Layout::GSUB::SubstLookup &lookup, const OT::hb_ot_layout_lookup_accelerator_t &accel)
HB_MARK_AS_FLAG_T(hb_ot_layout_glyph_props_flags_t)
hb_ot_layout_glyph_props_flags_t
@ HB_OT_LAYOUT_GLYPH_PROPS_MARK
@ HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED
@ HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE
@ HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED
@ HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE
@ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH
@ HB_OT_LAYOUT_GLYPH_PROPS_LIGATED
#define HB_UNICODE_GENERAL_CATEGORY_IS_MARK(gen_cat)
backing_store_ptr info
[4]
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLenum GLsizei count
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLenum GLuint GLsizei const GLenum * props
@ HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS
hb_unicode_general_category_t
@ HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR
@ HB_UNICODE_GENERAL_CATEGORY_FORMAT
unsigned int modified_combining_class(hb_codepoint_t u)
static hb_bool_t is_default_ignorable(hb_codepoint_t ch)