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); }
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(); }