@Override public final void readData( SWFInputStream sis, ByteArrayRange data, int level, boolean parallel, boolean skipUnusualTags, boolean lazy) throws IOException { fontId = sis.readUI16("fontId"); glyphShapeTable = new ArrayList<>(); if (sis.available() > 0) { long pos = sis.getPos(); int firstOffset = sis.readUI16("firstOffset"); int nGlyphs = firstOffset / 2; long[] offsetTable = new long[nGlyphs]; offsetTable[0] = firstOffset; for (int i = 1; i < nGlyphs; i++) { offsetTable[i] = sis.readUI16("offset"); } for (int i = 0; i < nGlyphs; i++) { sis.seek(pos + offsetTable[i]); glyphShapeTable.add(sis.readSHAPE(1, false, "shape")); } } }