// constructor public hmtx_cache(Table_hmtx OwnerTable) { // assign m_hheaTable = OwnerTable.hheaTable; m_nGlyphsInTheFont = OwnerTable.numOfGlyphsInTheFont; m_nNumberOfHMetrics = OwnerTable.numOfHMetrics; // For ease of use we will store all entrys as double entrys and fix up the single // entry arrays (left side bearing only ) when we write out the table m_longHorMetric = new ArrayList(m_nGlyphsInTheFont); for (ushort i = 0; i < m_nGlyphsInTheFont; i++) { m_longHorMetric.Add(OwnerTable.GetOrMakeHMetric(i)); } }
// generate a new table from the cached data public override OTTable GenerateTable() { // create a Motorola Byte Order buffer for the new table MBOBuffer newbuf = new MBOBuffer((uint)(m_nNumberOfHMetrics * 4) + (uint)((m_nGlyphsInTheFont - m_nNumberOfHMetrics) * 2)); for (ushort i = 0; i < m_nGlyphsInTheFont; i++) { if (i < m_nNumberOfHMetrics) { newbuf.SetUshort(((longHorMetric)m_longHorMetric[i]).advanceWidth, (uint)(i * 4)); newbuf.SetShort(((longHorMetric)m_longHorMetric[i]).lsb, (uint)((i * 4) + 2)); } else { newbuf.SetShort(((longHorMetric)m_longHorMetric[i]).lsb, (uint)(((m_nNumberOfHMetrics - 1) * 4) + (i * 2))); } } // put the buffer into a Table_vhmtx object and return it Table_hmtx hmtxTable = new Table_hmtx("hmtx", newbuf); return(hmtxTable); }
public virtual OTTable CreateTableObject(OTTag tag, MBOBuffer buf) { OTTable table = null; string sName = GetUnaliasedTableName(tag); switch (sName) { case "BASE": table = new Table_BASE(tag, buf); break; case "CFF ": table = new Table_CFF(tag, buf); break; case "cmap": table = new Table_cmap(tag, buf); break; case "cvt ": table = new Table_cvt(tag, buf); break; case "DSIG": table = new Table_DSIG(tag, buf); break; case "EBDT": table = new Table_EBDT(tag, buf); break; case "EBLC": table = new Table_EBLC(tag, buf); break; case "EBSC": table = new Table_EBSC(tag, buf); break; case "fpgm": table = new Table_fpgm(tag, buf); break; case "gasp": table = new Table_gasp(tag, buf); break; case "GDEF": table = new Table_GDEF(tag, buf); break; case "glyf": table = new Table_glyf(tag, buf); break; case "GPOS": table = new Table_GPOS(tag, buf); break; case "GSUB": table = new Table_GSUB(tag, buf); break; case "hdmx": table = new Table_hdmx(tag, buf); break; case "head": table = new Table_head(tag, buf); break; case "hhea": table = new Table_hhea(tag, buf); break; case "hmtx": table = new Table_hmtx(tag, buf); break; case "JSTF": table = new Table_JSTF(tag, buf); break; case "kern": table = new Table_kern(tag, buf); break; case "loca": table = new Table_loca(tag, buf); break; case "LTSH": table = new Table_LTSH(tag, buf); break; case "maxp": table = new Table_maxp(tag, buf); break; case "name": table = new Table_name(tag, buf); break; case "OS/2": table = new Table_OS2(tag, buf); break; case "PCLT": table = new Table_PCLT(tag, buf); break; case "post": table = new Table_post(tag, buf); break; case "prep": table = new Table_prep(tag, buf); break; case "VDMX": table = new Table_VDMX(tag, buf); break; case "vhea": table = new Table_vhea(tag, buf); break; case "vmtx": table = new Table_vmtx(tag, buf); break; case "VORG": table = new Table_VORG(tag, buf); break; //case "Zapf": table = new Table_Zapf(tag, buf); break; default: table = new Table__Unknown(tag, buf); break; } return(table); }
public virtual OTTable CreateTableObject(OTTag tag, MBOBuffer buf) { OTTable table = null; string sName = GetUnaliasedTableName(tag); switch (sName) { case "BASE": table = new Table_BASE(tag, buf); break; case "CFF ": table = new Table_CFF(tag, buf); break; case "cmap": table = new Table_cmap(tag, buf); break; case "cvt ": table = new Table_cvt(tag, buf); break; case "DSIG": table = new Table_DSIG(tag, buf); break; case "EBDT": table = new Table_EBDT(tag, buf); break; case "EBLC": table = new Table_EBLC(tag, buf); break; case "EBSC": table = new Table_EBSC(tag, buf); break; case "fpgm": table = new Table_fpgm(tag, buf); break; case "gasp": table = new Table_gasp(tag, buf); break; case "GDEF": table = new Table_GDEF(tag, buf); break; case "glyf": table = new Table_glyf(tag, buf); break; case "GPOS": table = new Table_GPOS(tag, buf); break; case "GSUB": table = new Table_GSUB(tag, buf); break; case "hdmx": table = new Table_hdmx(tag, buf); break; case "head": table = new Table_head(tag, buf); break; case "hhea": table = new Table_hhea(tag, buf); break; case "hmtx": table = new Table_hmtx(tag, buf); break; case "JSTF": table = new Table_JSTF(tag, buf); break; case "kern": table = new Table_kern(tag, buf); break; case "loca": table = new Table_loca(tag, buf); break; case "LTSH": table = new Table_LTSH(tag, buf); break; case "maxp": table = new Table_maxp(tag, buf); break; case "name": table = new Table_name(tag, buf); break; case "OS/2": table = new Table_OS2(tag, buf); break; case "PCLT": table = new Table_PCLT(tag, buf); break; case "post": table = new Table_post(tag, buf); break; case "prep": table = new Table_prep(tag, buf); break; case "VDMX": table = new Table_VDMX(tag, buf); break; case "vhea": table = new Table_vhea(tag, buf); break; case "vmtx": table = new Table_vmtx(tag, buf); break; case "VORG": table = new Table_VORG(tag, buf); break; //case "Zapf": table = new Table_Zapf(tag, buf); break; default: table = new Table__Unknown(tag, buf); break; } return table; }
// generate a new table from the cached data public override OTTable GenerateTable() { // create a Motorola Byte Order buffer for the new table MBOBuffer newbuf = new MBOBuffer((uint)(m_nNumberOfHMetrics * 4) + (uint)((m_nGlyphsInTheFont - m_nNumberOfHMetrics) * 2)); for( ushort i = 0; i < m_nGlyphsInTheFont; i++ ) { if( i < m_nNumberOfHMetrics ) { newbuf.SetUshort( ((longHorMetric)m_longHorMetric[i]).advanceWidth, (uint)(i * 4 )); newbuf.SetShort ( ((longHorMetric)m_longHorMetric[i]).lsb, (uint)((i * 4) + 2)); } else { newbuf.SetShort ( ((longHorMetric)m_longHorMetric[i]).lsb, (uint)(((m_nNumberOfHMetrics - 1)* 4) + (i * 2))); } } // put the buffer into a Table_vhmtx object and return it Table_hmtx hmtxTable = new Table_hmtx("hmtx", newbuf); return hmtxTable; }
// constructor public hmtx_cache(Table_hmtx OwnerTable) { // assign m_hheaTable = OwnerTable.hheaTable; m_nGlyphsInTheFont = OwnerTable.numOfGlyphsInTheFont; m_nNumberOfHMetrics = OwnerTable.numOfHMetrics; // For ease of use we will store all entrys as double entrys and fix up the single // entry arrays (left side bearing only ) when we write out the table m_longHorMetric = new ArrayList( m_nGlyphsInTheFont ); for( ushort i = 0; i < m_nGlyphsInTheFont; i++ ) { m_longHorMetric.Add( OwnerTable.GetOrMakeHMetric( i )); } }