internal static bool TryReadHeaderAfterVersion(BigEndianReader reader, TrueTypeVersionReader version, bool validate, out TrueTypeHeader header) { header = null; ushort numtables = reader.ReadUInt16(); ushort search = reader.ReadUInt16(); ushort entry = reader.ReadUInt16(); ushort range = reader.ReadUInt16(); //Validate values returned. if (validate) { //searchRange is the (Maximum power of 2 <= numTables) * 16 ushort max2 = 2; while (max2 * 2 <= numtables) { max2 *= 2; } if (search != max2 * 16) { return(false); } //entrySelector is Log2(max2) if (Math.Log(max2, 2) != entry) { return(false); } //rangeShift = numTables * 16-searchRange if (range != ((numtables * 16) - search)) { return(false); } } header = new TrueTypeHeader(version, numtables); header.SearchRange = search; header.EntrySelector = entry; header.RangeShift = range; return(true); }
public TrueTypeHeader(TrueTypeVersionReader version, int numTables) : base(version, numTables) { }