/// <exception cref="System.IO.IOException"/> protected internal override void ReadSubTable(int subTableLocation) { openReader.rf.Seek(subTableLocation); openReader.rf.ReadUnsignedShort(); //skip format, always 1 int markCoverageLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; int ligatureCoverageLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; int classCount = openReader.rf.ReadUnsignedShort(); int markArrayLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; int ligatureArrayLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; IList <int> markCoverage = openReader.ReadCoverageFormat(markCoverageLocation); IList <int> ligatureCoverage = openReader.ReadCoverageFormat(ligatureCoverageLocation); IList <OtfMarkRecord> markRecords = OtfReadCommon.ReadMarkArray(openReader, markArrayLocation); GposLookupType5.MarkToLigature markToLigature = new GposLookupType5.MarkToLigature(); for (int k = 0; k < markCoverage.Count; ++k) { markToLigature.marks[markCoverage[k]] = markRecords[k]; } IList <IList <GposAnchor[]> > ligatureArray = OtfReadCommon.ReadLigatureArray(openReader, classCount, ligatureArrayLocation ); for (int k_1 = 0; k_1 < ligatureCoverage.Count; ++k_1) { markToLigature.ligatures[ligatureCoverage[k_1]] = ligatureArray[k_1]; } marksligatures.Add(markToLigature); }
/// <exception cref="System.IO.IOException"/> protected internal override void ReadSubTable(int subTableLocation) { openReader.rf.Seek(subTableLocation); openReader.rf.ReadUnsignedShort(); //skip format, always 1 int markCoverageLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; int baseCoverageLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; int classCount = openReader.rf.ReadUnsignedShort(); int markArrayLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; int baseArrayLocation = openReader.rf.ReadUnsignedShort() + subTableLocation; IList <int> markCoverage = openReader.ReadCoverageFormat(markCoverageLocation); IList <int> baseCoverage = openReader.ReadCoverageFormat(baseCoverageLocation); IList <OtfMarkRecord> markRecords = OtfReadCommon.ReadMarkArray(openReader, markArrayLocation); GposLookupType4.MarkToBase markToBase = new GposLookupType4.MarkToBase(); for (int k = 0; k < markCoverage.Count; ++k) { markToBase.marks.Put(markCoverage[k], markRecords[k]); } IList <GposAnchor[]> baseArray = OtfReadCommon.ReadBaseArray(openReader, classCount, baseArrayLocation); for (int k = 0; k < baseCoverage.Count; ++k) { markToBase.bases.Put(baseCoverage[k], baseArray[k]); } marksbases.Add(markToBase); }