|
|
|
@ -193,12 +193,12 @@ struct SingleSubstFormat2 |
|
|
|
|
struct SingleSubst |
|
|
|
|
{ |
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
switch (u.format) { |
|
|
|
|
case 1: return TRACE_RETURN (c->process (u.format1)); |
|
|
|
|
case 2: return TRACE_RETURN (c->process (u.format2)); |
|
|
|
|
case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
|
|
|
|
case 2: return TRACE_RETURN (c->dispatch (u.format2)); |
|
|
|
|
default:return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -386,11 +386,11 @@ struct MultipleSubstFormat1 |
|
|
|
|
struct MultipleSubst |
|
|
|
|
{ |
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
switch (u.format) { |
|
|
|
|
case 1: return TRACE_RETURN (c->process (u.format1)); |
|
|
|
|
case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
|
|
|
|
default:return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -537,11 +537,11 @@ struct AlternateSubstFormat1 |
|
|
|
|
struct AlternateSubst |
|
|
|
|
{ |
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
switch (u.format) { |
|
|
|
|
case 1: return TRACE_RETURN (c->process (u.format1)); |
|
|
|
|
case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
|
|
|
|
default:return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -842,11 +842,11 @@ struct LigatureSubstFormat1 |
|
|
|
|
struct LigatureSubst |
|
|
|
|
{ |
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
switch (u.format) { |
|
|
|
|
case 1: return TRACE_RETURN (c->process (u.format1)); |
|
|
|
|
case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
|
|
|
|
default:return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -1023,11 +1023,11 @@ struct ReverseChainSingleSubstFormat1 |
|
|
|
|
struct ReverseChainSingleSubst |
|
|
|
|
{ |
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
switch (u.format) { |
|
|
|
|
case 1: return TRACE_RETURN (c->process (u.format1)); |
|
|
|
|
case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
|
|
|
|
default:return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -1070,18 +1070,18 @@ struct SubstLookupSubTable |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c, unsigned int lookup_type) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
switch (lookup_type) { |
|
|
|
|
case Single: return TRACE_RETURN (u.single.process (c)); |
|
|
|
|
case Multiple: return TRACE_RETURN (u.multiple.process (c)); |
|
|
|
|
case Alternate: return TRACE_RETURN (u.alternate.process (c)); |
|
|
|
|
case Ligature: return TRACE_RETURN (u.ligature.process (c)); |
|
|
|
|
case Context: return TRACE_RETURN (u.context.process (c)); |
|
|
|
|
case ChainContext: return TRACE_RETURN (u.chainContext.process (c)); |
|
|
|
|
case Extension: return TRACE_RETURN (u.extension.process (c)); |
|
|
|
|
case ReverseChainSingle: return TRACE_RETURN (u.reverseChainContextSingle.process (c)); |
|
|
|
|
case Single: return TRACE_RETURN (u.single.dispatch (c)); |
|
|
|
|
case Multiple: return TRACE_RETURN (u.multiple.dispatch (c)); |
|
|
|
|
case Alternate: return TRACE_RETURN (u.alternate.dispatch (c)); |
|
|
|
|
case Ligature: return TRACE_RETURN (u.ligature.dispatch (c)); |
|
|
|
|
case Context: return TRACE_RETURN (u.context.dispatch (c)); |
|
|
|
|
case ChainContext: return TRACE_RETURN (u.chainContext.dispatch (c)); |
|
|
|
|
case Extension: return TRACE_RETURN (u.extension.dispatch (c)); |
|
|
|
|
case ReverseChainSingle: return TRACE_RETURN (u.reverseChainContextSingle.dispatch (c)); |
|
|
|
|
default: return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -1139,33 +1139,33 @@ struct SubstLookup : Lookup |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t process (context_t *c) const |
|
|
|
|
inline typename context_t::return_t dispatch (context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_PROCESS (this); |
|
|
|
|
TRACE_DISPATCH (this); |
|
|
|
|
unsigned int lookup_type = get_type (); |
|
|
|
|
unsigned int count = get_subtable_count (); |
|
|
|
|
for (unsigned int i = 0; i < count; i++) { |
|
|
|
|
typename context_t::return_t r = get_subtable (i).process (c, lookup_type); |
|
|
|
|
typename context_t::return_t r = get_subtable (i).dispatch (c, lookup_type); |
|
|
|
|
if (c->stop_sublookup_iteration (r)) |
|
|
|
|
return TRACE_RETURN (r); |
|
|
|
|
} |
|
|
|
|
return TRACE_RETURN (c->default_return_value ()); |
|
|
|
|
} |
|
|
|
|
template <typename context_t> |
|
|
|
|
static inline typename context_t::return_t process_recurse_func (context_t *c, unsigned int lookup_index); |
|
|
|
|
static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index); |
|
|
|
|
|
|
|
|
|
inline hb_closure_context_t::return_t closure (hb_closure_context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_CLOSURE (this); |
|
|
|
|
c->set_recurse_func (process_recurse_func<hb_closure_context_t>); |
|
|
|
|
return TRACE_RETURN (process (c)); |
|
|
|
|
c->set_recurse_func (dispatch_recurse_func<hb_closure_context_t>); |
|
|
|
|
return TRACE_RETURN (dispatch (c)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline hb_collect_glyphs_context_t::return_t collect_glyphs_lookup (hb_collect_glyphs_context_t *c) const |
|
|
|
|
{ |
|
|
|
|
TRACE_COLLECT_GLYPHS (this); |
|
|
|
|
c->set_recurse_func (process_recurse_func<hb_collect_glyphs_context_t>); |
|
|
|
|
return TRACE_RETURN (process (c)); |
|
|
|
|
c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>); |
|
|
|
|
return TRACE_RETURN (dispatch (c)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename set_t> |
|
|
|
@ -1175,7 +1175,7 @@ struct SubstLookup : Lookup |
|
|
|
|
const Coverage *last = NULL; |
|
|
|
|
unsigned int count = get_subtable_count (); |
|
|
|
|
for (unsigned int i = 0; i < count; i++) { |
|
|
|
|
const Coverage *coverage = &get_subtable (i).process (&c, get_type ()); |
|
|
|
|
const Coverage *coverage = &get_subtable (i).dispatch (&c, get_type ()); |
|
|
|
|
if (coverage != last) { |
|
|
|
|
coverage->add_coverage (glyphs); |
|
|
|
|
last = coverage; |
|
|
|
@ -1188,7 +1188,7 @@ struct SubstLookup : Lookup |
|
|
|
|
TRACE_WOULD_APPLY (this); |
|
|
|
|
if (unlikely (!c->len)) return TRACE_RETURN (false); |
|
|
|
|
if (!digest->may_have (c->glyphs[0])) return TRACE_RETURN (false); |
|
|
|
|
return TRACE_RETURN (process (c)); |
|
|
|
|
return TRACE_RETURN (dispatch (c)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline bool apply_once (hb_apply_context_t *c) const |
|
|
|
@ -1196,7 +1196,7 @@ struct SubstLookup : Lookup |
|
|
|
|
TRACE_APPLY (this); |
|
|
|
|
if (!c->check_glyph_property (&c->buffer->cur(), c->lookup_props)) |
|
|
|
|
return TRACE_RETURN (false); |
|
|
|
|
return TRACE_RETURN (process (c)); |
|
|
|
|
return TRACE_RETURN (dispatch (c)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static bool apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index); |
|
|
|
@ -1386,11 +1386,11 @@ inline bool ExtensionSubst::is_reverse (void) const |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename context_t> |
|
|
|
|
inline typename context_t::return_t SubstLookup::process_recurse_func (context_t *c, unsigned int lookup_index) |
|
|
|
|
inline typename context_t::return_t SubstLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) |
|
|
|
|
{ |
|
|
|
|
const GSUB &gsub = *(hb_ot_layout_from_face (c->face)->gsub); |
|
|
|
|
const SubstLookup &l = gsub.get_lookup (lookup_index); |
|
|
|
|
return l.process (c); |
|
|
|
|
return l.dispatch (c); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline bool SubstLookup::apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index) |
|
|
|
|