Example #1
0
            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;
                    }