Esempio n. 1
0
        public static CmapTable Read(BinaryReaderFont reader)
        {
            long      start = reader.Position;
            CmapTable value = new CmapTable {
                version   = reader.ReadUInt16(),
                numTables = reader.ReadUInt16()
            };
            ushort numTables = value.numTables;

            //value.encodingRecords = EncodingRecord.ReadArray(reader, numTables);
            value.encodingRecords = new EncodingRecord[numTables];
            value.subtables       = new CmapSubtable[numTables];
            long position = reader.Position;

            for (int i = 0; i < numTables; i++)
            {
                reader.Position = position;
                EncodingRecord record = EncodingRecord.Read(reader);
                value.encodingRecords[i] = record;
                position        = reader.Position;
                reader.Position = start + record.offset;
                //reader.Position = start + value.encodingRecords[i].offset;
                value.subtables[i] = CmapSubtable.Read(reader);
            }
            //Console.WriteLine("position: {0:X}", (reader.Position - start));
            return(value);
        }
Esempio n. 2
0
 public static EncodingRecord[] ReadArray(BinaryReaderFont reader, int count)
 {
     EncodingRecord[] array = new EncodingRecord[count];
     for (int i = 0; i < count; i++)
     {
         array[i] = Read(reader);
     }
     return(array);
 }
Esempio n. 3
0
        public static EncodingRecord Read(BinaryReaderFont reader)
        {
            EncodingRecord record = new EncodingRecord {
                platformID = (PlatformID)reader.ReadUInt16(),
                encodingID = reader.ReadUInt16(),
                offset     = reader.ReadUInt32()
            };

            return(record);
        }
Esempio n. 4
0
 protected int FindIndex(PlatformID platformID, ushort encodingID)
 {
     for (int i = 0; i < numTables; i++)
     {
         EncodingRecord record = encodingRecords[i];
         if (record.platformID == platformID &&
             record.encodingID == encodingID)
         {
             return(i);
         }
     }
     return(-1);
 }