public static PosClassRule CreateFrom(BinaryReader reader, long beginAt) { //-------- reader.BaseStream.Seek(beginAt, SeekOrigin.Begin); //-------- PosClassRule posClassRule = new PosClassRule(); ushort glyphCount = reader.ReadUInt16(); ushort posCount = reader.ReadUInt16(); posClassRule.inputGlyphIds = Utils.ReadUInt16Array(reader, glyphCount - 1); posClassRule.posLookupRecords = CreateMultiplePosLookupRecords(reader, posCount); return(posClassRule); }
void ReadFrom(BinaryReader reader) { long tableStartAt = reader.BaseStream.Position; // ushort posClassRuleCnt = reader.ReadUInt16(); ushort[] posClassRuleOffsets = Utils.ReadUInt16Array(reader, posClassRuleCnt); PosClassRules = new PosClassRule[posClassRuleCnt]; for (int i = 0; i < posClassRuleOffsets.Length; ++i) { //move to and read PosClassRules[i] = PosClassRule.CreateFrom(reader, tableStartAt + posClassRuleOffsets[i]); } }
public static PosClassRule CreateFrom(BinaryReader reader, long beginAt) { //-------- reader.BaseStream.Seek(beginAt, SeekOrigin.Begin); //-------- PosClassRule posClassRule = new PosClassRule(); ushort glyphCount = reader.ReadUInt16(); ushort posCount = reader.ReadUInt16(); posClassRule.inputGlyphIds = Utils.ReadUInt16Array(reader, glyphCount - 1); posClassRule.posLookupRecords = CreateMultiplePosLookupRecords(reader, posCount); return posClassRule; }
public PosClassRule GetPosClassRuleTable(uint i) { PosClassRule pcr = null; if (i < PosClassRuleCount) { uint offset = m_offsetPosClassSet + GetPosClassRuleOffset(i); pcr = new PosClassRule(offset, m_bufTable); } return pcr; }