         var reservedPad: BEUInt16
         var startCode: [BEUInt16]
         var idDelta: [BEInt16]
-        var idRangeOffset: [BEUInt16]
-        var glyphIndexArray: [BEUInt16]
+        var idRangeOffset: Data
         
         init(from data: inout Data) throws {
+            
+            let record = data.count
+            
             self.format = try data.decode(BEUInt16.self)
             self.length = try data.decode(BEUInt16.self)
             self.language = try data.decode(BEUInt16.self)

            case 0: tables.append(Table(platform: platform, format: try Format0(tableData)))
            case 4: tables.append(Table(platform: platform, format: try Format4(tableData)))
            case 12: tables.append(Table(platform: platform, format: try Format12(tableData)))
            case 13: tables.append(Table(platform: platform, format: try Format13(tableData)))
            default: break
            }
        }

            self.startCode = []
            self.idDelta = []
            self.idRangeOffset = []
            self.endCode.reserveCapacity(segCount)
            self.startCode.reserveCapacity(segCount)
            self.idDelta.reserveCapacity(segCount)
            
            for _ in 0..<segCount {
                self.endCode.append(try data.decode(BEUInt16.self))
