Example #1
0
        public Glyph GetGlyphData(ushort glyphId)
        {
            if (GlyphCache.ContainsKey(glyphId))
            {
                return(GlyphCache[glyphId]);
            }

            var dataOffset = font.loca.Offsets[glyphId];

            var reader = new TrueTypeReader(Data);

            reader.Seek(dataOffset);

            var glyph = new Glyph()
            {
                NumberOfContours = reader.ReadShort(),
                XMin             = reader.ReadFWord(),
                YMin             = reader.ReadFWord(),
                XMax             = reader.ReadFWord(),
                YMax             = reader.ReadFWord()
            };

            reader.Dispose();

            GlyphCache[glyphId] = glyph;

            return(glyph);
        }
Example #2
0
        public override void Process(TrueTypeFont font)
        {
            var reader = new TrueTypeReader(Data);

            Version            = reader.ReadFixed();
            Revision           = reader.ReadFixed();
            ChecksumAdjustment = reader.ReadULong();
            Magic                 = reader.ReadULong();
            Flags                 = reader.ReadUShort();
            UnitsPerEm            = reader.ReadUShort();
            DateCreated           = reader.ReadLongDateTime();
            DateModified          = reader.ReadLongDateTime();
            XMin                  = reader.ReadFWord();
            YMin                  = reader.ReadFWord();
            XMax                  = reader.ReadFWord();
            YMax                  = reader.ReadFWord();
            MacStyle              = reader.ReadUShort();
            LowestRecommendedPPEM = reader.ReadUShort();
            FontDirectionHint     = reader.ReadShort();
            IndexToLocFormat      = reader.ReadShort();
            GlyphDataFormat       = reader.ReadShort();

            reader.Dispose();
        }
        public override void Process(TrueTypeFont font)
        {
            var reader = new TrueTypeReader(Data);

            Version                   = reader.ReadFixed();
            Ascender                  = reader.ReadFWord();
            Descender                 = reader.ReadFWord();
            LineGap                   = reader.ReadFWord();
            AdvanceWidthMax           = reader.ReadUFWord();
            MinLeftSideBearing        = reader.ReadFWord();
            MinRightSideBearing       = reader.ReadFWord();
            XMaxExtent                = reader.ReadFWord();
            CaretSlopeRise            = reader.ReadShort();
            CaretSlopeRun             = reader.ReadShort();
            Reserved0                 = reader.ReadShort();
            Reserved1                 = reader.ReadShort();
            Reserved2                 = reader.ReadShort();
            Reserved3                 = reader.ReadShort();
            Reserved4                 = reader.ReadShort();
            MetricDataFormat          = reader.ReadShort();
            NumberOfHorizontalMetrics = reader.ReadUShort();

            reader.Dispose();
        }