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); }
public static TableRecord Read(BinaryReader reader) { var instance = new TableRecord { TableTag = reader.ReadTag(), Checksum = reader.ReadUInt32BigEndian(), Offset = reader.ReadUInt32BigEndian(), Length = reader.ReadUInt32BigEndian() }; return(instance); }