public virtual void AddAlreadyExistingGlyphTest() { PdfDictionary dictionary = new PdfDictionary(); dictionary.Put(PdfName.FontMatrix, new PdfArray()); PdfDictionary charProcs = new PdfDictionary(); charProcs.Put(new PdfName("A"), new PdfStream()); dictionary.Put(PdfName.CharProcs, charProcs); dictionary.Put(PdfName.Widths, new PdfArray()); PdfType3Font type3Font = new _PdfType3Font_90(dictionary); Type3Glyph type3Glyph = type3Font.AddGlyph('A', 1, 2, 3, 5, 8); NUnit.Framework.Assert.AreEqual(0, type3Glyph.GetWx(), EPS); NUnit.Framework.Assert.AreEqual(0, type3Glyph.GetLlx(), EPS); NUnit.Framework.Assert.AreEqual(0, type3Glyph.GetLly(), EPS); NUnit.Framework.Assert.AreEqual(0, type3Glyph.GetUrx(), EPS); NUnit.Framework.Assert.AreEqual(0, type3Glyph.GetUry(), EPS); }
public override void Flush() { if (((Type3FontProgram)GetFontProgram()).GetGlyphsCount() < 1) { throw new PdfException("no.glyphs.defined.fo r.type3.font"); } PdfDictionary charProcs = new PdfDictionary(); for (int i = 0; i < 256; i++) { if (fontEncoding.CanDecode(i)) { Type3Glyph glyph = GetType3Glyph(fontEncoding.GetUnicode(i)); charProcs.Put(new PdfName(fontEncoding.GetDifference(i)), glyph.GetContentStream()); } } GetPdfObject().Put(PdfName.CharProcs, charProcs); GetPdfObject().Put(PdfName.FontMatrix, new PdfArray(GetFontMatrix())); GetPdfObject().Put(PdfName.FontBBox, new PdfArray(fontProgram.GetFontMetrics().GetBbox())); base.FlushFontData(null, PdfName.Type3); base.Flush(); }