public void Read(TTFReader r) { r.ReadInt(out this.pairValueCount); this.pairValueRecords = new List <PairValueRecord>(); for (int i = 0; i < this.pairValueCount; ++i) { PairValueRecord pvr = new PairValueRecord(); pvr.Read(r); this.pairValueRecords.Add(pvr); } }
public bool TryGetPairValueRecord(ushort glyphId, [NotNullWhen(true)] out PairValueRecord pairValueRecord) { foreach (PairValueRecord pair in this.pairValueRecords) { if (pair.SecondGlyph == glyphId) { pairValueRecord = pair; return(true); } } pairValueRecord = default; return(false); }
public static PairSetTable Load(BigEndianBinaryReader reader, long offset, ValueFormat valueFormat1, ValueFormat valueFormat2) { // +-----------------+----------------------------------+---------------------------------------+ // | Type | Name | Description | // +=================+==================================+=======================================+ // | uint16 | pairValueCount | Number of PairValueRecords | // +-----------------+----------------------------------+---------------------------------------+ // | PairValueRecord | pairValueRecords[pairValueCount] | Array of PairValueRecords, ordered by | // | | | glyph ID of the second glyph. | // +-----------------+----------------------------------+---------------------------------------+ reader.Seek(offset, SeekOrigin.Begin); ushort pairValueCount = reader.ReadUInt16(); var pairValueRecords = new PairValueRecord[pairValueCount]; for (int i = 0; i < pairValueRecords.Length; i++) { pairValueRecords[i] = new PairValueRecord(reader, valueFormat1, valueFormat2); } return(new PairSetTable(pairValueRecords)); }
public PairValueRecord GetPairValueRecord(uint i) { PairValueRecord pvr = null; if (i < PairValueCount) { uint sizeofPairValueRecord = 2 + ValueRecord.SizeOfValueRecord(m_ValueFormat1) + ValueRecord.SizeOfValueRecord(m_ValueFormat2); uint offset = m_offsetPairSetTable + (uint)FieldOffsets.PairValueRecordArray + i*sizeofPairValueRecord; pvr = new PairValueRecord(offset, m_bufTable, m_offsetPairSetTable, m_ValueFormat1, m_ValueFormat2); } return pvr; }