public static Table create( final OTFontCollection fc, final OTFont font, final DirectoryEntry de, final DataInputStream dis) throws IOException { Table t = null; // First, if we have a font collection, look for the table there if (fc != null) { t = fc.getTable(de); if (t != null) { return t; } } // Create the table switch (de.getTag()) { case Table.BASE: t = new BaseTable(de, dis); break; case Table.CFF: t = new CffTable(de, dis); break; case Table.DSIG: t = new DsigTable(de, dis); break; case Table.EBDT: break; case Table.EBLC: break; case Table.EBSC: break; case Table.GDEF: break; case Table.GPOS: t = new GposTable(de, dis); break; case Table.GSUB: t = new GsubTable(de, dis); break; case Table.JSTF: break; case Table.LTSH: t = new LtshTable(de, dis); break; case Table.MMFX: break; case Table.MMSD: break; case Table.OS_2: t = new Os2Table(de, dis); break; case Table.PCLT: t = new PcltTable(de, dis); break; case Table.VDMX: t = new VdmxTable(de, dis); break; case Table.cmap: t = new CmapTable(de, dis); break; case Table.cvt: t = new CvtTable(de, dis); break; case Table.fpgm: t = new FpgmTable(de, dis); break; case Table.fvar: break; case Table.gasp: t = new GaspTable(de, dis); break; case Table.glyf: t = new GlyfTable(de, dis, font.getMaxpTable(), font.getLocaTable()); break; case Table.hdmx: t = new HdmxTable(de, dis, font.getMaxpTable()); break; case Table.head: t = new HeadTable(de, dis); break; case Table.hhea: t = new HheaTable(de, dis); break; case Table.hmtx: t = new HmtxTable(de, dis, font.getHheaTable(), font.getMaxpTable()); break; case Table.kern: t = new KernTable(de, dis); break; case Table.loca: t = new LocaTable(de, dis, font.getHeadTable(), font.getMaxpTable()); break; case Table.maxp: t = new MaxpTable(de, dis); break; case Table.name: t = new NameTable(de, dis); break; case Table.prep: t = new PrepTable(de, dis); break; case Table.post: t = new PostTable(de, dis); break; case Table.vhea: t = new VheaTable(de, dis); break; case Table.vmtx: t = new VmtxTable(de, dis, font.getVheaTable(), font.getMaxpTable()); break; } // If we have a font collection, add this table to it if ((fc != null) && (t != null)) { fc.addTable(t); } return t; }