/// <summary>Get <c>ith</c> encoding table, or null if <c>i</c> out /// of range.</summary> public EncodingTableEntry GetEncodingTableEntry(uint i) { uint SIZEOF_ENCODINGTABLEENTRY = 8; EncodingTableEntry ete = null; if ( i < NumberOfEncodingTables && (uint)FieldOffsets.EncodingTableEntries + (i+1)*SIZEOF_ENCODINGTABLEENTRY <= m_bufTable.GetLength()) { ete = new EncodingTableEntry(); ete.platformID = m_bufTable.GetUshort((uint) FieldOffsets.EncodingTableEntries + i*SIZEOF_ENCODINGTABLEENTRY); ete.encodingID = m_bufTable.GetUshort((uint) FieldOffsets.EncodingTableEntries + i*SIZEOF_ENCODINGTABLEENTRY + 2); ete.offset = m_bufTable.GetUint((uint) FieldOffsets.EncodingTableEntries + i*SIZEOF_ENCODINGTABLEENTRY + 4); } return ete; }
/************************ * public methods */ public override Subtable GetSubtable(EncodingTableEntry ete) { Subtable st = null; // identify the format of the table ushort format = 0xffff; try { format = m_bufTable.GetUshort(ete.offset); } catch { } switch(format) { case 0: st = new Format0_val (ete, m_bufTable); break; case 2: st = new Format2_val (ete, m_bufTable); break; case 4: st = new Format4_val (ete, m_bufTable); break; case 6: st = new Format6_val (ete, m_bufTable); break; case 8: st = new Format8_val (ete, m_bufTable); break; case 10: st = new Format10_val(ete, m_bufTable); break; case 12: st = new Format12_val(ete, m_bufTable); break; case 14: st = new Format14_val(ete, m_bufTable); break; } return st; }
public Format4_val(EncodingTableEntry ete, MBOBuffer bufTable) : base(ete, bufTable) { }
/// <summary>Abstract base class stores <c>platformID</c>, /// <c>encodingID</c>, <c>offset</c> and MBO byte array for whole /// cmap table. /// </summary> public Subtable(EncodingTableEntry ete, MBOBuffer bufTable) { m_ete = ete; m_bufTable = bufTable; }