[otlayout] Renaming

This commit is contained in:
Behdad Esfahbod 2013-10-18 00:02:43 +02:00
parent 2e96d2c6ee
commit 3ddf892b53
8 changed files with 65 additions and 56 deletions

View File

@ -1031,7 +1031,7 @@ struct MarkBasePosFormat1
do { do {
if (!skippy_iter.prev ()) return TRACE_RETURN (false); if (!skippy_iter.prev ()) return TRACE_RETURN (false);
/* We only want to attach to the first of a MultipleSubst sequence. Reject others. */ /* We only want to attach to the first of a MultipleSubst sequence. Reject others. */
if (0 == get_lig_comp (c->buffer->info[skippy_iter.idx])) break; if (0 == _hb_glyph_info_get_lig_comp (&c->buffer->info[skippy_iter.idx])) break;
skippy_iter.reject (); skippy_iter.reject ();
} while (1); } while (1);
@ -1152,11 +1152,11 @@ struct MarkLigPosFormat1
* can directly use the component index. If not, we attach the mark * can directly use the component index. If not, we attach the mark
* glyph to the last component of the ligature. */ * glyph to the last component of the ligature. */
unsigned int comp_index; unsigned int comp_index;
unsigned int lig_id = get_lig_id (c->buffer->info[j]); unsigned int lig_id = _hb_glyph_info_get_lig_id (&c->buffer->info[j]);
unsigned int mark_id = get_lig_id (c->buffer->cur()); unsigned int mark_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
unsigned int mark_comp = get_lig_comp (c->buffer->cur()); unsigned int mark_comp = _hb_glyph_info_get_lig_comp (&c->buffer->cur());
if (lig_id && lig_id == mark_id && mark_comp > 0) if (lig_id && lig_id == mark_id && mark_comp > 0)
comp_index = MIN (comp_count, get_lig_comp (c->buffer->cur())) - 1; comp_index = MIN (comp_count, _hb_glyph_info_get_lig_comp (&c->buffer->cur())) - 1;
else else
comp_index = comp_count - 1; comp_index = comp_count - 1;
@ -1252,10 +1252,10 @@ struct MarkMarkPosFormat1
unsigned int j = skippy_iter.idx; unsigned int j = skippy_iter.idx;
unsigned int id1 = get_lig_id (c->buffer->cur()); unsigned int id1 = _hb_glyph_info_get_lig_id (&c->buffer->cur());
unsigned int id2 = get_lig_id (c->buffer->info[j]); unsigned int id2 = _hb_glyph_info_get_lig_id (&c->buffer->info[j]);
unsigned int comp1 = get_lig_comp (c->buffer->cur()); unsigned int comp1 = _hb_glyph_info_get_lig_comp (&c->buffer->cur());
unsigned int comp2 = get_lig_comp (c->buffer->info[j]); unsigned int comp2 = _hb_glyph_info_get_lig_comp (&c->buffer->info[j]);
if (likely (id1 == id2)) { if (likely (id1 == id2)) {
if (id1 == 0) /* Marks belonging to the same base. */ if (id1 == 0) /* Marks belonging to the same base. */

View File

@ -302,7 +302,7 @@ struct Sequence
else else
{ {
for (unsigned int i = 0; i < count; i++) { for (unsigned int i = 0; i < count; i++) {
set_lig_props_for_component (c->buffer->cur(), i); _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
c->output_glyph (substitute.array[i], klass); c->output_glyph (substitute.array[i], klass);
} }
c->buffer->skip_glyph (); c->buffer->skip_glyph ();

View File

@ -409,7 +409,7 @@ struct hb_apply_context_t
if (unlikely (_hb_glyph_info_is_default_ignorable (&info) && if (unlikely (_hb_glyph_info_is_default_ignorable (&info) &&
(ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) && (ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) &&
(ignore_zwj || !_hb_glyph_info_is_zwj (&info)) && (ignore_zwj || !_hb_glyph_info_is_zwj (&info)) &&
!is_a_ligature (info))) !_hb_glyph_info_is_ligated (&info)))
return SKIP_MAYBE; return SKIP_MAYBE;
return SKIP_NO; return SKIP_NO;
@ -788,10 +788,10 @@ static inline bool match_input (hb_apply_context_t *c,
bool is_mark_ligature = !!(buffer->cur().glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK); bool is_mark_ligature = !!(buffer->cur().glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK);
unsigned int total_component_count = 0; unsigned int total_component_count = 0;
total_component_count += get_lig_num_comps (buffer->cur()); total_component_count += _hb_glyph_info_get_lig_num_comps (&buffer->cur());
unsigned int first_lig_id = get_lig_id (buffer->cur()); unsigned int first_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
unsigned int first_lig_comp = get_lig_comp (buffer->cur()); unsigned int first_lig_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
match_positions[0] = buffer->idx; match_positions[0] = buffer->idx;
for (unsigned int i = 1; i < count; i++) for (unsigned int i = 1; i < count; i++)
@ -800,8 +800,8 @@ static inline bool match_input (hb_apply_context_t *c,
match_positions[i] = skippy_iter.idx; match_positions[i] = skippy_iter.idx;
unsigned int this_lig_id = get_lig_id (buffer->info[skippy_iter.idx]); unsigned int this_lig_id = _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx]);
unsigned int this_lig_comp = get_lig_comp (buffer->info[skippy_iter.idx]); unsigned int this_lig_comp = _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]);
if (first_lig_id && first_lig_comp) { if (first_lig_id && first_lig_comp) {
/* If first component was attached to a previous ligature component, /* If first component was attached to a previous ligature component,
@ -818,7 +818,7 @@ static inline bool match_input (hb_apply_context_t *c,
} }
is_mark_ligature = is_mark_ligature && (buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK); is_mark_ligature = is_mark_ligature && (buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK);
total_component_count += get_lig_num_comps (buffer->info[skippy_iter.idx]); total_component_count += _hb_glyph_info_get_lig_num_comps (&buffer->info[skippy_iter.idx]);
} }
*end_offset = skippy_iter.idx - buffer->idx + 1; *end_offset = skippy_iter.idx - buffer->idx + 1;
@ -874,14 +874,14 @@ static inline void ligate_input (hb_apply_context_t *c,
*/ */
unsigned int klass = is_mark_ligature ? 0 : HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE; unsigned int klass = is_mark_ligature ? 0 : HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE;
unsigned int lig_id = is_mark_ligature ? 0 : allocate_lig_id (buffer); unsigned int lig_id = is_mark_ligature ? 0 : _hb_allocate_lig_id (buffer);
unsigned int last_lig_id = get_lig_id (buffer->cur()); unsigned int last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
unsigned int last_num_components = get_lig_num_comps (buffer->cur()); unsigned int last_num_components = _hb_glyph_info_get_lig_num_comps (&buffer->cur());
unsigned int components_so_far = last_num_components; unsigned int components_so_far = last_num_components;
if (!is_mark_ligature) if (!is_mark_ligature)
{ {
set_lig_props_for_ligature (buffer->cur(), lig_id, total_component_count); _hb_glyph_info_set_lig_props_for_ligature (&buffer->cur(), lig_id, total_component_count);
if (_hb_glyph_info_get_general_category (&buffer->cur()) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) if (_hb_glyph_info_get_general_category (&buffer->cur()) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
_hb_glyph_info_set_general_category (&buffer->cur(), HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER); _hb_glyph_info_set_general_category (&buffer->cur(), HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER);
} }
@ -893,14 +893,14 @@ static inline void ligate_input (hb_apply_context_t *c,
{ {
if (!is_mark_ligature) { if (!is_mark_ligature) {
unsigned int new_lig_comp = components_so_far - last_num_components + unsigned int new_lig_comp = components_so_far - last_num_components +
MIN (MAX (get_lig_comp (buffer->cur()), 1u), last_num_components); MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->cur()), 1u), last_num_components);
set_lig_props_for_mark (buffer->cur(), lig_id, new_lig_comp); _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);
} }
buffer->next_glyph (); buffer->next_glyph ();
} }
last_lig_id = get_lig_id (buffer->cur()); last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
last_num_components = get_lig_num_comps (buffer->cur()); last_num_components = _hb_glyph_info_get_lig_num_comps (&buffer->cur());
components_so_far += last_num_components; components_so_far += last_num_components;
/* Skip the base glyph */ /* Skip the base glyph */
@ -910,10 +910,10 @@ static inline void ligate_input (hb_apply_context_t *c,
if (!is_mark_ligature && last_lig_id) { if (!is_mark_ligature && last_lig_id) {
/* Re-adjust components for any marks following. */ /* Re-adjust components for any marks following. */
for (unsigned int i = buffer->idx; i < buffer->len; i++) { for (unsigned int i = buffer->idx; i < buffer->len; i++) {
if (last_lig_id == get_lig_id (buffer->info[i])) { if (last_lig_id == _hb_glyph_info_get_lig_id (&buffer->info[i])) {
unsigned int new_lig_comp = components_so_far - last_num_components + unsigned int new_lig_comp = components_so_far - last_num_components +
MIN (MAX (get_lig_comp (buffer->info[i]), 1u), last_num_components); MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->info[i]), 1u), last_num_components);
set_lig_props_for_mark (buffer->info[i], lig_id, new_lig_comp); _hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp);
} else } else
break; break;
} }

View File

@ -191,7 +191,8 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *uni
} }
inline void inline void
_hb_glyph_info_set_general_category (hb_glyph_info_t *info, hb_unicode_general_category_t gen_cat) _hb_glyph_info_set_general_category (hb_glyph_info_t *info,
hb_unicode_general_category_t gen_cat)
{ {
info->unicode_props0() = (unsigned int) gen_cat | ((info->unicode_props0()) & ~MASK0_GEN_CAT); info->unicode_props0() = (unsigned int) gen_cat | ((info->unicode_props0()) & ~MASK0_GEN_CAT);
} }
@ -203,7 +204,8 @@ _hb_glyph_info_get_general_category (const hb_glyph_info_t *info)
} }
inline void inline void
_hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info, unsigned int modified_class) _hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info,
unsigned int modified_class)
{ {
info->unicode_props1() = modified_class; info->unicode_props1() = modified_class;
} }
@ -264,52 +266,58 @@ _hb_glyph_info_flip_joiners (hb_glyph_info_t *info)
*/ */
#define IS_LIG_BASE 0x10 #define IS_LIG_BASE 0x10
static inline void static inline void
set_lig_props_for_ligature (hb_glyph_info_t &info, unsigned int lig_id, unsigned int lig_num_comps) _hb_glyph_info_set_lig_props_for_ligature (hb_glyph_info_t *info,
unsigned int lig_id,
unsigned int lig_num_comps)
{ {
info.lig_props() = (lig_id << 5) | IS_LIG_BASE | (lig_num_comps & 0x0F); info->lig_props() = (lig_id << 5) | IS_LIG_BASE | (lig_num_comps & 0x0F);
} }
static inline void static inline void
set_lig_props_for_mark (hb_glyph_info_t &info, unsigned int lig_id, unsigned int lig_comp) _hb_glyph_info_set_lig_props_for_mark (hb_glyph_info_t *info,
unsigned int lig_id,
unsigned int lig_comp)
{ {
info.lig_props() = (lig_id << 5) | (lig_comp & 0x0F); info->lig_props() = (lig_id << 5) | (lig_comp & 0x0F);
} }
static inline void static inline void
set_lig_props_for_component (hb_glyph_info_t &info, unsigned int comp) _hb_glyph_info_set_lig_props_for_component (hb_glyph_info_t *info, unsigned int comp)
{ {
set_lig_props_for_mark (info, 0, comp); _hb_glyph_info_set_lig_props_for_mark (info, 0, comp);
} }
static inline unsigned int static inline unsigned int
get_lig_id (const hb_glyph_info_t &info) _hb_glyph_info_get_lig_id (const hb_glyph_info_t *info)
{ {
return info.lig_props() >> 5; return info->lig_props() >> 5;
} }
static inline bool static inline bool
is_a_ligature (const hb_glyph_info_t &info) _hb_glyph_info_is_ligated (const hb_glyph_info_t *info)
{ {
return !!(info.lig_props() & IS_LIG_BASE); return !!(info->lig_props() & IS_LIG_BASE);
} }
static inline unsigned int static inline unsigned int
get_lig_comp (const hb_glyph_info_t &info) _hb_glyph_info_get_lig_comp (const hb_glyph_info_t *info)
{ {
if (is_a_ligature (info)) if (_hb_glyph_info_is_ligated (info))
return 0; return 0;
else else
return info.lig_props() & 0x0F; return info->lig_props() & 0x0F;
} }
static inline unsigned int static inline unsigned int
get_lig_num_comps (const hb_glyph_info_t &info) _hb_glyph_info_get_lig_num_comps (const hb_glyph_info_t *info)
{ {
if ((info.glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE) && is_a_ligature (info)) if ((info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE) &&
return info.lig_props() & 0x0F; _hb_glyph_info_is_ligated (info))
return info->lig_props() & 0x0F;
else else
return 1; return 1;
} }
static inline uint8_t allocate_lig_id (hb_buffer_t *buffer) { static inline uint8_t
_hb_allocate_lig_id (hb_buffer_t *buffer) {
uint8_t lig_id = buffer->next_serial () & 0x07; uint8_t lig_id = buffer->next_serial () & 0x07;
if (unlikely (!lig_id)) if (unlikely (!lig_id))
lig_id = allocate_lig_id (buffer); /* in case of overflow */ lig_id = _hb_allocate_lig_id (buffer); /* in case of overflow */
return lig_id; return lig_id;
} }

View File

@ -141,7 +141,7 @@ static inline bool
is_one_of (const hb_glyph_info_t &info, unsigned int flags) is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{ {
/* If it ligated, all bets are off. */ /* If it ligated, all bets are off. */
if (is_a_ligature (info)) return false; if (_hb_glyph_info_is_ligated (&info)) return false;
return !!(FLAG (info.indic_category()) & flags); return !!(FLAG (info.indic_category()) & flags);
} }
@ -1405,7 +1405,8 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
*/ */
if (start + 1 < end && if (start + 1 < end &&
info[start].indic_position() == POS_RA_TO_BECOME_REPH && info[start].indic_position() == POS_RA_TO_BECOME_REPH &&
((info[start].indic_category() == OT_Repha) ^ is_a_ligature (info[start]))) ((info[start].indic_category() == OT_Repha) ^
_hb_glyph_info_is_ligated (&info[start])))
{ {
unsigned int new_reph_pos; unsigned int new_reph_pos;
reph_position_t reph_pos = indic_plan->config->reph_pos; reph_position_t reph_pos = indic_plan->config->reph_pos;

View File

@ -151,7 +151,7 @@ static inline bool
is_one_of (const hb_glyph_info_t &info, unsigned int flags) is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{ {
/* If it ligated, all bets are off. */ /* If it ligated, all bets are off. */
if (is_a_ligature (info)) return false; if (_hb_glyph_info_is_ligated (&info)) return false;
return !!(FLAG (info.myanmar_category()) & flags); return !!(FLAG (info.myanmar_category()) & flags);
} }

View File

@ -300,8 +300,8 @@ position_around_base (const hb_ot_shape_plan_t *plan,
base_extents.x_bearing += buffer->pos[base].x_offset; base_extents.x_bearing += buffer->pos[base].x_offset;
base_extents.y_bearing += buffer->pos[base].y_offset; base_extents.y_bearing += buffer->pos[base].y_offset;
unsigned int lig_id = get_lig_id (buffer->info[base]); unsigned int lig_id = _hb_glyph_info_get_lig_id (&buffer->info[base]);
unsigned int num_lig_components = get_lig_num_comps (buffer->info[base]); unsigned int num_lig_components = _hb_glyph_info_get_lig_num_comps (&buffer->info[base]);
hb_position_t x_offset = 0, y_offset = 0; hb_position_t x_offset = 0, y_offset = 0;
if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) { if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
@ -317,8 +317,8 @@ position_around_base (const hb_ot_shape_plan_t *plan,
if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i])) if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]))
{ {
if (num_lig_components > 1) { if (num_lig_components > 1) {
unsigned int this_lig_id = get_lig_id (buffer->info[i]); unsigned int this_lig_id = _hb_glyph_info_get_lig_id (&buffer->info[i]);
unsigned int this_lig_component = get_lig_comp (buffer->info[i]) - 1; unsigned int this_lig_component = _hb_glyph_info_get_lig_comp (&buffer->info[i]) - 1;
/* Conditions for attaching to the last component. */ /* Conditions for attaching to the last component. */
if (!lig_id || lig_id != this_lig_id || this_lig_component >= num_lig_components) if (!lig_id || lig_id != this_lig_id || this_lig_component >= num_lig_components)
this_lig_component = num_lig_components - 1; this_lig_component = num_lig_components - 1;

View File

@ -546,7 +546,7 @@ hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
unsigned int j = 0; unsigned int j = 0;
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
{ {
if (unlikely (!is_a_ligature (info[i]) && if (unlikely (!_hb_glyph_info_is_ligated (&info[i]) &&
_hb_glyph_info_is_default_ignorable (&info[i]))) _hb_glyph_info_is_default_ignorable (&info[i])))
{ {
if (space_status == SPACE_DONT_KNOW) if (space_status == SPACE_DONT_KNOW)