public virtual void CheckBboxCalculationForType3FontsWithFontMatrix02()
        {
            String      inputPdf    = sourceFolder + "checkBboxCalculationForType3FontsWithFontMatrix02.pdf";
            PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputPdf));

            GlyphBboxCalculationTest.CharacterPositionEventListener listener = new GlyphBboxCalculationTest.CharacterPositionEventListener
                                                                                   ();
            PdfCanvasProcessor processor = new PdfCanvasProcessor(listener);

            processor.ProcessPageContent(pdfDocument.GetPage(1));
            // font size (36) * |fontMatrix| (1) * glyph width (0.6) = 21.6
            NUnit.Framework.Assert.AreEqual(21.6, listener.glyphWith, 1e-5);
        }
        public virtual void CheckAverageBboxCalculationForType3FontsWithFontMatrix01Test()
        {
            String      inputPdf    = sourceFolder + "checkAverageBboxCalculationForType3FontsWithFontMatrix01.pdf";
            PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputPdf));

            GlyphBboxCalculationTest.CharacterPositionEventListener listener = new GlyphBboxCalculationTest.CharacterPositionEventListener
                                                                                   ();
            PdfCanvasProcessor processor = new PdfCanvasProcessor(listener);

            processor.ProcessPageContent(pdfDocument.GetPage(1));
            NUnit.Framework.Assert.AreEqual(600, listener.firstTextRenderInfo.GetFont().GetFontProgram().GetAvgWidth()
                                            , 0.01f);
        }
        public virtual void Type3FontsWithIdentityFontMatrixAndMultiplier()
        {
            String      inputPdf    = sourceFolder + "type3FontsWithIdentityFontMatrixAndMultiplier.pdf";
            String      outputPdf   = destinationFolder + "type3FontsWithIdentityFontMatrixAndMultiplier.pdf";
            PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputPdf), new PdfWriter(outputPdf));

            GlyphBboxCalculationTest.CharacterPositionEventListener listener = new GlyphBboxCalculationTest.CharacterPositionEventListener
                                                                                   ();
            PdfCanvasProcessor processor = new PdfCanvasProcessor(listener);

            processor.ProcessPageContent(pdfDocument.GetPage(1));
            PdfPage   page      = pdfDocument.GetPage(1);
            Rectangle pageSize  = page.GetPageSize();
            PdfCanvas pdfCanvas = new PdfCanvas(page);

            pdfCanvas.BeginText().SetFontAndSize(processor.GetGraphicsState().GetFont(), processor.GetGraphicsState().
                                                 GetFontSize()).MoveText(pageSize.GetWidth() / 2 - 24, pageSize.GetHeight() / 2).ShowText("A").EndText(
                );
            pdfDocument.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outputPdf, sourceFolder + "cmp_type3FontsWithIdentityFontMatrixAndMultiplier.pdf"
                                                                             , destinationFolder, "diff_"));
        }