[sfnt] Return correct number of named instances for TTCs. Without this patch, requesting information for face index N returned the data for face index N+1 (or index 0). * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index' for negative `face_instance_index' values.
diff --git a/ChangeLog b/ChangeLog
index 2738474..4f36604 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2017-01-01 Werner Lemberg <wl@gnu.org>
+
+ [sfnt] Return correct number of named instances for TTCs.
+
+ Without this patch, requesting information for face index N returned
+ the data for face index N+1 (or index 0).
+
+ * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
+ for negative `face_instance_index' values.
+
2016-12-31 Werner Lemberg <wl@gnu.org>
*/*: Use hex numbers for errors in tracing messages.
diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c
index 818009e..5e7380b 100644
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -909,6 +909,10 @@
face_index = FT_ABS( face_instance_index ) & 0xFFFF;
+ /* value -(N+1) requests information on index N */
+ if ( face_instance_index < 0 )
+ face_index--;
+
if ( face_index >= face->ttc_header.count )
{
if ( face_instance_index >= 0 )