Пример #1
0
        public static OffsetTable Read(BinaryReader reader)
        {
            var instance = new OffsetTable
            {
                SfntVersion = reader.ReadBytes(4)
            };

            var isTrueType = FontFileSignature.IsTrueType(instance.SfntVersion);

            if (!isTrueType)
            {
                throw new FontReaderException("Only TrueType fonts are supported currently");
            }

            instance.NumTables     = reader.ReadUInt16BigEndian();
            instance.SearchRange   = reader.ReadUInt16BigEndian();
            instance.EntrySelector = reader.ReadUInt16BigEndian();
            instance.RangeShift    = reader.ReadUInt16BigEndian();

            instance.TableRecords = new List <TableRecord>();
            for (int i = 0; i < instance.NumTables; i++)
            {
                instance.TableRecords.Add(TableRecord.Read(reader));
            }

            return(instance);
        }
Пример #2
0
        public static TableRecord Read(BinaryReader reader)
        {
            var instance = new TableRecord
            {
                TableTag = reader.ReadTag(),
                Checksum = reader.ReadUInt32BigEndian(),
                Offset   = reader.ReadUInt32BigEndian(),
                Length   = reader.ReadUInt32BigEndian()
            };

            return(instance);
        }