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)
 {
 }