public static Mark2ArrayTable CreateFrom(BinaryReader reader, long beginAt, ushort classCount) { reader.BaseStream.Seek(beginAt, SeekOrigin.Begin); //--- var mark2ArrTable = new Mark2ArrayTable(); ushort mark2Count = reader.ReadUInt16(); mark2ArrTable.mark2Records = new Mark2Record[mark2Count]; for (int i = 0; i < mark2Count; ++i) { mark2ArrTable.mark2Records[i] = new Mark2Record(Utils.ReadInt16Array(reader, classCount)); } //read mark2 anchor for (int i = 0; i < mark2Count; ++i) { short[] offsets = mark2ArrTable.mark2Records[i].offsets; AnchorPoint[] anchors = mark2ArrTable.mark2Records[i].anchorPoints; int offsetCount = anchors.Length; for (int c = 0; c < offsetCount; ++c) { anchors[c] = AnchorPoint.CreateFrom(reader, beginAt + offsets[c]); } } return(mark2ArrTable); }
public static LookupType6Format1SubTable Load(BigEndianBinaryReader reader, long offset, LookupFlags lookupFlags) { // MarkMarkPosFormat1 Subtable. // +--------------------+---------------------------------+------------------------------------------------------+ // | Type | Name | Description | // +====================+=================================+======================================================+ // | uint16 | posFormat | Format identifier: format = 1 | // +--------------------+---------------------------------+------------------------------------------------------+ // | Offset16 | mark1CoverageOffset | Offset to Combining Mark Coverage table, | // | | | from beginning of MarkMarkPos subtable. | // +--------------------+---------------------------------+------------------------------------------------------+ // | Offset16 | mark2CoverageOffset | Offset to Base Mark Coverage table, | // | | | from beginning of MarkMarkPos subtable. | // +--------------------+---------------------------------+------------------------------------------------------+ // | uint16 | markClassCount | Number of Combining Mark classes defined | // +--------------------+---------------------------------+------------------------------------------------------+ // | Offset16 | mark1ArrayOffset | Offset to MarkArray table for mark1, | // | | | from beginning of MarkMarkPos subtable. | // +--------------------+---------------------------------+------------------------------------------------------+ // | Offset16 | mark2ArrayOffset | Offset to Mark2Array table for mark2, | // | | | from beginning of MarkMarkPos subtable. | // +--------------------+---------------------------------+------------------------------------------------------+ ushort mark1CoverageOffset = reader.ReadOffset16(); ushort mark2CoverageOffset = reader.ReadOffset16(); ushort markClassCount = reader.ReadUInt16(); ushort mark1ArrayOffset = reader.ReadOffset16(); ushort mark2ArrayOffset = reader.ReadOffset16(); var mark1Coverage = CoverageTable.Load(reader, offset + mark1CoverageOffset); var mark2Coverage = CoverageTable.Load(reader, offset + mark2CoverageOffset); var mark1ArrayTable = new MarkArrayTable(reader, offset + mark1ArrayOffset); var mark2ArrayTable = new Mark2ArrayTable(reader, markClassCount, offset + mark2ArrayOffset); return(new LookupType6Format1SubTable(mark1Coverage, mark2Coverage, mark1ArrayTable, mark2ArrayTable, lookupFlags)); }
public LookupType6Format1SubTable( CoverageTable mark1Coverage, CoverageTable mark2Coverage, MarkArrayTable mark1ArrayTable, Mark2ArrayTable mark2ArrayTable, LookupFlags lookupFlags) : base(lookupFlags) { this.mark1Coverage = mark1Coverage; this.mark2Coverage = mark2Coverage; this.mark1ArrayTable = mark1ArrayTable; this.mark2ArrayTable = mark2ArrayTable; }
public static Mark2ArrayTable CreateFrom(BinaryReader reader, long beginAt, ushort classCount) { reader.BaseStream.Seek(beginAt, SeekOrigin.Begin); //--- var mark2ArrTable = new Mark2ArrayTable(); ushort mark2Count = reader.ReadUInt16(); mark2ArrTable.mark2Records = new Mark2Record[mark2Count]; for (int i = 0; i < mark2Count; ++i) { mark2ArrTable.mark2Records[i] = new Mark2Record( Utils.ReadInt16Array(reader, classCount)); } return mark2ArrTable; }