[trak] Handle nSizes=0 and 1
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 11 Oct 2018 14:32:08 +0000 (10:32 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 11 Oct 2018 14:32:08 +0000 (10:32 -0400)
src/hb-aat-layout-trak-table.hh

index 63dd890..368c55c 100644 (file)
@@ -93,7 +93,9 @@ struct TrackData
     Fixed fixed_size;
     fixed_size.set_float (csspx);
 
-    /* XXX Clean this up. Make it work with nSizes==1 and 0. */
+    /*
+     * Choose track.
+     */
 
     const TrackTableEntry *trackTableEntry = nullptr;
     unsigned int count = nTracks;
@@ -112,8 +114,15 @@ struct TrackData
     }
     if (!trackTableEntry) return 0.;
 
+    /*
+     * Choose size.
+     */
+
     unsigned int sizes = nSizes;
 
+    if (!sizes) return 0.;
+    if (sizes == 1) return trackTableEntry->get_value (base, 0, sizes);
+
     /* TODO bfind() */
     unsigned int size_index;
     UnsizedArrayOf<Fixed> size_table = base+sizeTable;