[kerx] Fix Format2 index calc again
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 28 Nov 2018 20:24:30 +0000 (15:24 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 28 Nov 2018 20:24:30 +0000 (15:24 -0500)
src/hb-aat-layout-common.hh
src/hb-aat-layout-kerx-table.hh

index 253b56f..c0b0e37 100644 (file)
@@ -689,6 +689,13 @@ struct ObsoleteTypes
     return (offset - ((const char *) array - (const char *) base)) / sizeof (T);
   }
   template <typename T>
+  static inline unsigned int byteOffsetToIndex (unsigned int offset,
+                                               const void *base,
+                                               const T *array)
+  {
+    return offsetToIndex (offset, base, array);
+  }
+  template <typename T>
   static inline unsigned int wordOffsetToIndex (unsigned int offset,
                                                const void *base,
                                                const T *array)
@@ -712,6 +719,13 @@ struct ExtendedTypes
     return offset;
   }
   template <typename T>
+  static inline unsigned int byteOffsetToIndex (unsigned int offset,
+                                               const void *base,
+                                               const T *array)
+  {
+    return offset / 2;
+  }
+  template <typename T>
   static inline unsigned int wordOffsetToIndex (unsigned int offset,
                                                const void *base,
                                                const T *array)
index abd577b..7caf45d 100644 (file)
@@ -255,7 +255,7 @@ struct KerxSubTableFormat1
        unsigned int tuple_count = MAX (1u, table->header.tuple_count ());
 
        unsigned int kern_idx = Format1EntryT::kernActionIndex (entry);
-       kern_idx = Types::offsetToIndex (kern_idx, &table->machine, kernAction.arrayZ);
+       kern_idx = Types::byteOffsetToIndex (kern_idx, &table->machine, kernAction.arrayZ);
        const FWORD *actions = &kernAction[kern_idx];
        if (!c->sanitizer.check_array (actions, depth, tuple_count))
        {