[shape-plan] Don't look for a cached plan if variation coords are specified. Fixes #549. (#550)

This is a temporary hack just to avoid incorrect shaping results, pending proper support
for caching shape-plans with variation coordinates.
pull/553/head
jfkthame 7 years ago committed by Behdad Esfahbod
parent db446cce4e
commit 19e77e01bc
  1. 16
      src/hb-shape-plan.cc

@ -520,15 +520,17 @@ hb_shape_plan_create_cached2 (hb_face_t *face,
retry: retry:
hb_face_t::plan_node_t *cached_plan_nodes = (hb_face_t::plan_node_t *) hb_atomic_ptr_get (&face->shape_plans); hb_face_t::plan_node_t *cached_plan_nodes = (hb_face_t::plan_node_t *) hb_atomic_ptr_get (&face->shape_plans);
for (hb_face_t::plan_node_t *node = cached_plan_nodes; node; node = node->next)
if (hb_shape_plan_matches (node->shape_plan, &proposal))
{
DEBUG_MSG_FUNC (SHAPE_PLAN, node->shape_plan, "fulfilled from cache");
return hb_shape_plan_reference (node->shape_plan);
}
/* Not found. */ /* Don't look for plan in the cache if there were variation coordinates XXX Fix me. */
if (!hb_coords_present (coords, num_coords))
for (hb_face_t::plan_node_t *node = cached_plan_nodes; node; node = node->next)
if (hb_shape_plan_matches (node->shape_plan, &proposal))
{
DEBUG_MSG_FUNC (SHAPE_PLAN, node->shape_plan, "fulfilled from cache");
return hb_shape_plan_reference (node->shape_plan);
}
/* Not found. */
hb_shape_plan_t *shape_plan = hb_shape_plan_create2 (face, props, hb_shape_plan_t *shape_plan = hb_shape_plan_create2 (face, props,
user_features, num_user_features, user_features, num_user_features,
coords, num_coords, coords, num_coords,

Loading…
Cancel
Save