[HB] Fix for dfont's with multiple faces
authorBehdad Esfahbod <behdad@behdad.org>
Sat, 1 Aug 2009 23:10:41 +0000 (19:10 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:24 +0000 (14:40 -0500)
src/hb-ot-layout-open-private.h

index 6a75eb1..76a5ade 100644 (file)
@@ -470,9 +470,11 @@ struct OpenTypeFontFile
   }
   const OpenTypeFontFace& get_face (unsigned int i) const
   {
-    if (HB_UNLIKELY (i >= get_face_count ())) return Null(OpenTypeFontFace);
     switch (tag) {
-    default: /* Never happens because of the if above */
+    default: return Null(OpenTypeFontFace);
+    /* Note: for non-collection SFNT data we ignore index.  This is because
+     * Apple dfont container is a container of SFNT's.  So each SFNT is a
+     * non-TTC, but the index is more than zero. */
     case TrueTypeTag: case CFFTag: return *(const OffsetTable*)this;
     case TTCTag: return this+TTCHeader::get_for_data ((const char *) this).table[i];
     }