#ifndef HB_NO_OT_RULESETS_FAST_PATH if (HB_OPTIMIZE_SIZE_VAL || num_ligs <= 4) #endif
{
slow: for (unsignedint i = 0; i < num_ligs; i++)
{ constauto &lig = this+ligature.arrayZ[i]; if (lig.apply (c)) return_trace (true);
}
return_trace (false);
}
/* This version is optimized for speed by matching the first component * of the ligature here, instead of calling into the ligation code. *
* This is replicated in ChainRuleSet and RuleSet. */
if (skippy_iter.may_skip (c->buffer->info[skippy_iter.idx]))
{ /* Can't use the fast path if eg. the next char is a default-ignorable
* or other skippable. */ goto slow;
}
} else goto slow;
bool unsafe_to_concat = false;
for (unsignedint i = 0; i < num_ligs; i++)
{ constauto &lig = this+ligature.arrayZ[i]; if (unlikely (lig.component.lenP1 <= 1) ||
lig.component.arrayZ[0] == first)
{ if (lig.apply (c))
{ if (unsafe_to_concat)
c->buffer->unsafe_to_concat (c->buffer->idx, unsafe_to);
return_trace (true);
}
} elseif (likely (lig.component.lenP1 > 1))
unsafe_to_concat = true;
} if (likely (unsafe_to_concat))
c->buffer->unsafe_to_concat (c->buffer->idx, unsafe_to);
return_trace (false);
}
bool serialize (hb_serialize_context_t *c,
hb_array_t<const HBGlyphID16> ligatures,
hb_array_t<constunsignedint> component_count_list,
hb_array_t<const HBGlyphID16> &component_list /* Starting from second for each ligature */)
{
TRACE_SERIALIZE (this); if (unlikely (!c->extend_min (this))) return_trace (false); if (unlikely (!ligature.serialize (c, ligatures.length))) return_trace (false); for (unsignedint i = 0; i < ligatures.length; i++)
{ unsignedint component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0); if (unlikely (!ligature[i].serialize_serialize (c,
ligatures[i],
component_list.sub_array (0, component_count))))
return_trace (false);
component_list += component_count;
}
return_trace (true);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.