dis.skip(offset + tableDirectory.getEntry(i).getOffset()); tables[i] = TableFactory.create(fc, tableDirectory.getEntry(i), dis);
dis.skip(tablesOrigin + _tableDirectory.getEntry(i).getOffset()); _tables[i] = TableFactory.create(_fc, _tableDirectory.getEntry(i), dis);
    protected void read(DataInputStream dis, int offset) throws IOException {                // Load the table directory        dis.reset();        dis.skip(offset);        tableDirectory = new TableDirectory(dis);        tables = new Table[tableDirectory.getNumTables()];        // Load each of the tables        for (int i = 0; i < tableDirectory.getNumTables(); i++) {            dis.reset();            dis.skip(offset + tableDirectory.getEntry(i).getOffset());            tables[i] = TableFactory.create(fc, tableDirectory.getEntry(i), dis);        }        // Get references to commonly used tables        os2 = (Os2Table) getTable(Table.OS_2);        cmap = (CmapTable) getTable(Table.cmap);        glyf = (GlyfTable) getTable(Table.glyf);        head = (HeadTable) getTable(Table.head);        hhea = (HheaTable) getTable(Table.hhea);        hmtx = (HmtxTable) getTable(Table.hmtx);        loca = (LocaTable) getTable(Table.loca);        maxp = (MaxpTable) getTable(Table.maxp);        name = (NameTable) getTable(Table.name);        post = (PostTable) getTable(Table.post);        // Initialize the tables that require it        hmtx.init(hhea.getNumberOfHMetrics(), maxp.getNumGlyphs() - hhea.getNumberOfHMetrics());        loca.init(maxp.getNumGlyphs(), head.getIndexToLocFormat() == 0);        glyf.init(maxp.getNumGlyphs(), loca);    }