src/hb-shape-plan.cc |   16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

New commits:
commit 19e77e01bc13f44138e1d50533327d314dd0a018
Author: jfkthame <[email protected]>
Date:   Mon Oct 2 13:08:49 2017 +0100

    [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.

diff --git a/src/hb-shape-plan.cc b/src/hb-shape-plan.cc
index 3abf555c..5573cd22 100644
--- a/src/hb-shape-plan.cc
+++ b/src/hb-shape-plan.cc
@@ -520,15 +520,17 @@ hb_shape_plan_create_cached2 (hb_face_t                   
  *face,
 
 retry:
   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,
                                                       user_features, 
num_user_features,
                                                       coords, num_coords,
_______________________________________________
HarfBuzz mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to