Exemplo n.º 1
0
        public ttf(BigEndianBinaryRaader reader)
        {
            tables = new Dictionary <string, TableEntity>();

            sfntVersion   = reader.ReadUInt32();
            numTables     = reader.ReadUInt16();
            searchRange   = reader.ReadUInt16();
            entrySelector = reader.ReadUInt16();
            rangeShift    = reader.ReadUInt16();

            for (ushort i = 0; i < numTables; i++)
            {
                string tag = reader.ReadTag();

                switch (tag)
                {
                case "maxp":
                    tables.Add(tag, new Maxp(reader));
                    break;

                case "name":
                    tables.Add(tag, new Name(reader));
                    break;

                default:
                    reader.BaseStream.Position += 12;
                    break;
                }
            }
        }
Exemplo n.º 2
0
        public Maxp(BigEndianBinaryRaader reader) : base(reader)
        {
            long origPos = reader.BaseStream.Position;

            reader.BaseStream.Position = offsetPos;

            version   = reader.ReadUInt32();
            numGlyphs = reader.ReadUInt16();

            if (version == 0x00010000)
            {
                maxPoints             = reader.ReadUInt16();
                maxContours           = reader.ReadUInt16();
                maxCompositePoints    = reader.ReadUInt16();
                maxCompositeContours  = reader.ReadUInt16();
                maxZones              = reader.ReadUInt16();
                maxTwilightPoints     = reader.ReadUInt16();
                maxStorage            = reader.ReadUInt16();
                maxFunctionDefs       = reader.ReadUInt16();
                maxInstructionDefs    = reader.ReadUInt16();
                maxStackElements      = reader.ReadUInt16();
                maxSizeOfInstructions = reader.ReadUInt16();
                maxComponentElements  = reader.ReadUInt16();
                maxComponentDepth     = reader.ReadUInt16();
            }

            reader.BaseStream.Position = origPos;
        }
Exemplo n.º 3
0
 public TableEntity(BigEndianBinaryRaader reader)
 {
     checkSum  = reader.ReadUInt32();
     offsetPos = reader.ReadUInt32();
     length    = reader.ReadUInt32();
 }