예제 #1
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e n e r a t e J o b                                              //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Generate test data.                                                //
        //                                                                    //
        // Some sequences are built up as (Unicode) strings, then converted   //
        // to byte arrays before writing out - this works OK because all the  //
        // characters we're using are within the ASCII range (0x00-0x7f) and  //
        // are hence represented using a single byte in the UTF-8 encoding.   //
        //                                                                    //
        //--------------------------------------------------------------------//

        public static void generateJob(BinaryWriter prnWriter,
                                       Int32 indxPaperSize,
                                       Int32 indxPaperType,
                                       Int32 indxOrientation,
                                       Boolean formAsMacro,
                                       UInt32 codePoint,
                                       Int32 indxFont,
                                       PCLFonts.eVariant fontVar)
        {
            generateJobHeader(prnWriter);

            if (formAsMacro)
            {
                generateOverlay(prnWriter, true,
                                indxPaperSize, indxOrientation);
            }

            generatePage(prnWriter,
                         indxPaperSize,
                         indxPaperType,
                         indxOrientation,
                         formAsMacro,
                         codePoint,
                         indxFont,
                         fontVar);

            generateJobTrailer(prnWriter, formAsMacro);
        }
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e n e r a t e J o b                                              //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Generate test data.                                                //
        //                                                                    //
        // Some sequences are built up as (Unicode) strings, then converted   //
        // to byte arrays before writing out - this works OK because all the  //
        // characters we're using are within the ASCII range (0x00-0x7f) and  //
        // are hence represented using a single byte in the UTF-8 encoding.   //
        //                                                                    //
        //--------------------------------------------------------------------//

        public static void generateJob(BinaryWriter prnWriter,
                                       Int32 indxPaperSize,
                                       Int32 indxPaperType,
                                       Int32 indxOrientation,
                                       Boolean formAsMacro,
                                       UInt32 codePoint,
                                       Int32 indxFont,
                                       PCLFonts.eVariant fontVar)
        {
            PCLOrientations.eAspect aspect;

            UInt16 logXOffset;

            //----------------------------------------------------------------//

            aspect = PCLOrientations.getAspect(indxOrientation);

            logXOffset = PCLPaperSizes.getLogicalOffset(indxPaperSize,
                                                        _unitsPerInch, aspect);

            _logPageWidth = PCLPaperSizes.getLogPageWidth(indxPaperSize,
                                                          _unitsPerInch,
                                                          aspect);

            _logPageHeight = PCLPaperSizes.getLogPageLength(indxPaperSize,
                                                            _unitsPerInch,
                                                            aspect);

            _paperWidth = PCLPaperSizes.getPaperWidth(indxPaperSize,
                                                      _unitsPerInch,
                                                      aspect);

            _paperHeight = PCLPaperSizes.getPaperLength(indxPaperSize,
                                                        _unitsPerInch,
                                                        aspect);

            //----------------------------------------------------------------//

            generateJobHeader(prnWriter,
                              indxPaperSize,
                              indxPaperType,
                              indxOrientation,
                              formAsMacro,
                              logXOffset);

            generatePage(prnWriter,
                         indxPaperSize,
                         indxPaperType,
                         indxOrientation,
                         formAsMacro,
                         logXOffset,
                         codePoint,
                         indxFont,
                         fontVar);

            generateJobTrailer(prnWriter, formAsMacro);
        }
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // r b U n i c o d e F o n t V a r R _ C l i c k                      //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Called when the 'Regular' font variant radio button is selected.   //
        //                                                                    //
        //--------------------------------------------------------------------//

        private void rbUnicodeFontVarR_Click(object sender, RoutedEventArgs e)
        {
            if (_crntPDL == ToolCommonData.ePrintLang.PCL)
            {
                _unicodeFontVarPCL = PCLFonts.eVariant.Regular;
            }
            else
            {
                _unicodeFontVarPCLXL = PCLFonts.eVariant.Regular;
            }
        }
예제 #4
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e t P C L X L N a m e                                            //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Return the PCL XL font name for the selected font.                 //
        //                                                                    //
        //--------------------------------------------------------------------//

        public String getPCLXLName(PCLFonts.eVariant variant)
        {
            if (variant == PCLFonts.eVariant.Italic)
            {
                return(_nameItalic);
            }
            else if (variant == PCLFonts.eVariant.Bold)
            {
                return(_nameBold);
            }
            else if (variant == PCLFonts.eVariant.BoldItalic)
            {
                return(_nameBoldItalic);
            }
            else
            {
                return(_nameRegular);
            }
        }
예제 #5
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e t P C L W e i g h t                                            //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Return the PCL font weight characteristic value.                   //
        //                                                                    //
        //--------------------------------------------------------------------//

        public Int16 getPCLWeight(PCLFonts.eVariant variant)
        {
            if (variant == PCLFonts.eVariant.Italic)
            {
                return(_weightItalic);
            }
            else if (variant == PCLFonts.eVariant.Bold)
            {
                return(_weightBold);
            }
            else if (variant == PCLFonts.eVariant.BoldItalic)
            {
                return(_weightBoldItalic);
            }
            else
            {
                return(_weightRegular);
            }
        }
예제 #6
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e t P C L S t y l e                                              //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Return the PCL font style characteristic value.                    //
        //                                                                    //
        //--------------------------------------------------------------------//

        public UInt16 getPCLStyle(PCLFonts.eVariant variant)
        {
            if (variant == PCLFonts.eVariant.Italic)
            {
                return(_styleItalic);
            }
            else if (variant == PCLFonts.eVariant.Bold)
            {
                return(_styleBold);
            }
            else if (variant == PCLFonts.eVariant.BoldItalic)
            {
                return(_styleBoldItalic);
            }
            else
            {
                return(_styleRegular);
            }
        }
예제 #7
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // v a r i a n t A v a i l a b l e                                    //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Return indication of whether or not the selected variant exists.   //
        //                                                                    //
        //--------------------------------------------------------------------//

        public Boolean variantAvailable(PCLFonts.eVariant variant)
        {
            if (variant == PCLFonts.eVariant.Italic)
            {
                return(_varItalic);
            }
            else if (variant == PCLFonts.eVariant.Bold)
            {
                return(_varBold);
            }
            else if (variant == PCLFonts.eVariant.BoldItalic)
            {
                return(_varBoldItalic);
            }
            else
            {
                return(_varRegular);
            }
        }
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // s e t F o n t O p t i o n s V a r i a n t s                        //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Set variant options relevant to selected font.                     //
        // Assume that this is a PresetTypeface or PresetFamilyMember type,   //
        // because this is all that we've added to the font selection subset. //
        //                                                                    //
        //--------------------------------------------------------------------//

        private void setFontOptionsVariants(Int32 indxFont,
                                            Boolean samePreset,
                                            ref PCLFonts.eVariant fontVar)
        {
            Boolean varB,
                    varBI,
                    varI,
                    varR,
                    varSet;

            Int32 fontIndx;

            fontIndx = _subsetUnicodeFonts[indxFont];

            varSet = false;

            //----------------------------------------------------------------//

            rbUnicodeFontVarB.Visibility  = Visibility.Hidden;
            rbUnicodeFontVarBI.Visibility = Visibility.Hidden;
            rbUnicodeFontVarI.Visibility  = Visibility.Hidden;
            rbUnicodeFontVarR.Visibility  = Visibility.Hidden;

            rbUnicodeFontVarB.IsChecked  = false;
            rbUnicodeFontVarBI.IsChecked = false;
            rbUnicodeFontVarI.IsChecked  = false;
            rbUnicodeFontVarR.IsChecked  = false;

            //----------------------------------------------------------------//

            varR = PCLFonts.variantExists(fontIndx,
                                          PCLFonts.eVariant.Regular);

            varI = PCLFonts.variantExists(fontIndx,
                                          PCLFonts.eVariant.Italic);

            varB = PCLFonts.variantExists(fontIndx,
                                          PCLFonts.eVariant.Bold);

            varBI = PCLFonts.variantExists(fontIndx,
                                           PCLFonts.eVariant.BoldItalic);

            //----------------------------------------------------------------//

            if (varR)
            {
                rbUnicodeFontVarR.Visibility = Visibility.Visible;
            }

            if (varI)
            {
                rbUnicodeFontVarI.Visibility = Visibility.Visible;
            }

            if (varB)
            {
                rbUnicodeFontVarB.Visibility = Visibility.Visible;
            }

            if (varBI)
            {
                rbUnicodeFontVarBI.Visibility = Visibility.Visible;
            }

            //----------------------------------------------------------------//

            if (samePreset)
            {
                if ((varR) && (fontVar == PCLFonts.eVariant.Regular))
                {
                    rbUnicodeFontVarR.IsChecked = true;
                    varSet = true;
                }

                if ((varI) && (fontVar == PCLFonts.eVariant.Italic))
                {
                    rbUnicodeFontVarI.IsChecked = true;
                    varSet = true;
                }

                if ((varB) && (fontVar == PCLFonts.eVariant.Bold))
                {
                    rbUnicodeFontVarB.IsChecked = true;
                    varSet = true;
                }

                if ((varBI) && (fontVar == PCLFonts.eVariant.BoldItalic))
                {
                    rbUnicodeFontVarBI.IsChecked = true;
                    varSet = true;
                }
            }

            //----------------------------------------------------------------//

            if (!varSet)
            {
                if (varR)
                {
                    rbUnicodeFontVarR.IsChecked = true;
                    fontVar = PCLFonts.eVariant.Regular;
                }
                else if (varI)
                {
                    rbUnicodeFontVarI.IsChecked = true;
                    fontVar = PCLFonts.eVariant.Italic;
                }
                else if (varB)
                {
                    rbUnicodeFontVarB.IsChecked = true;
                    fontVar = PCLFonts.eVariant.Bold;
                }
                else if (varBI)
                {
                    rbUnicodeFontVarBI.IsChecked = true;
                    fontVar = PCLFonts.eVariant.BoldItalic;
                }
            }
        }
예제 #9
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e t P C L F o n t S e l e c t                                    //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Return the PCL font selection sequence.                            //
        // ... except for the root '<esc>(' prefix.                           //
        //                                                                    //
        //--------------------------------------------------------------------//

        public String getPCLFontSelect(PCLFonts.eVariant variant,
                                       Double height,
                                       Double pitch)
        {
            String seq;

            if (_proportional)
            {
                seq = "s1p";
            }
            else
            {
                seq = "s0p";
            }

            if (_scalable)
            {
                // Scalable; the size parameter defines the required size.

                if (_proportional)
                {
                    // Scalable; proportionally-spaced
                    seq += height.ToString() + "v";
                }
                else
                {
                    // Scalable; fixed-pitch
                    if (pitch != 0.0)
                    {
                        seq += pitch.ToString() + "h";
                    }
                    else
                    {
                        Double calcPitch = (7200 /
                                            (height * _contourRatio));
                        seq += calcPitch.ToString("F2") + "h";
                    }
                }
            }
            else
            {
                // Bitmap; the size is pre-defined.

                if (_proportional)
                {
                    // Bitmap; proportionally-spaced
                    seq += _pointSize.ToString() + "v";
                }
                else
                {
                    // Bitmap; fixed-pitch
                    seq += _pointSize.ToString() + "v" +
                           _pitch.ToString() + "h";
                }
            }

            if (variant == PCLFonts.eVariant.Italic)
            {
                seq += _styleItalic.ToString() + "s" +
                       _weightItalic.ToString() + "b";
            }
            else if (variant == PCLFonts.eVariant.Bold)
            {
                seq += _styleBold.ToString() + "s" +
                       _weightBold.ToString() + "b";
            }
            else if (variant == PCLFonts.eVariant.BoldItalic)
            {
                seq += _styleBoldItalic.ToString() + "s" +
                       _weightBoldItalic.ToString() + "b";
            }
            else
            {
                seq += _styleRegular.ToString() + "s" +
                       _weightRegular.ToString() + "b";
            }

            seq += _typeface + "T";

            return(seq);
        }
예제 #10
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e t H P G L 2 F o n t D e f                                      //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Return the HP-GL/2 font definition command.                        //
        //                                                                    //
        //--------------------------------------------------------------------//

        public String getHPGL2FontDef(PCLFonts.eVariant variant,
                                      UInt16 symbolSet,
                                      Double height,
                                      Double pitch)
        {
            StringBuilder cmd = new StringBuilder(255);

            if (_symSetNumber != 0)
            {
                cmd.Append("1,").Append(_symSetNumber);
            }
            else
            {
                cmd.Append("1,").Append(symbolSet);
            }

            if (_proportional)
            {
                cmd.Append(",2,1");
            }
            else
            {
                cmd.Append(",2,0");
            }

            if (_scalable)
            {
                // Scalable; the size parameter defines the required size.

                if (_proportional)
                {
                    // Scalable; proportionally-spaced
                    cmd.Append(",4,").Append(height);
                }
                else
                {
                    // Scalable; fixed-pitch
                    cmd.Append(",3,").Append(pitch);
                }
            }
            else
            {
                // Bitmap; the size is pre-defined.

                if (_proportional)
                {
                    // Bitmap; proportionally-spaced
                    cmd.Append(",4,").Append(_pointSize);
                }
                else
                {
                    // Bitmap; fixed-pitch
                    cmd.Append(",3,").Append(_pitch);
                }
                cmd.Append(",4,").Append(_pointSize);
            }

            if (variant == PCLFonts.eVariant.Italic)
            {
                cmd.Append(",5,").Append(_styleItalic);
                cmd.Append(",6,").Append(_weightItalic);
            }
            else if (variant == PCLFonts.eVariant.Bold)
            {
                cmd.Append(",5,").Append(_styleBold);
                cmd.Append(",6,").Append(_weightBold);
            }
            else if (variant == PCLFonts.eVariant.BoldItalic)
            {
                cmd.Append(",5,").Append(_styleBoldItalic);
                cmd.Append(",6,").Append(_weightBoldItalic);
            }
            else
            {
                cmd.Append(",5,").Append(_styleRegular);
                cmd.Append(",6,").Append(_weightRegular);
            }

            cmd.Append(",7,").Append(_typeface);

            return(cmd.ToString());
        }
예제 #11
0
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e n e r a t e P a g e                                            //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Write individual test data page sequences to output file.          //
        //                                                                    //
        //--------------------------------------------------------------------//

        private static void generatePage(BinaryWriter prnWriter,
                                         Int32 indxPaperSize,
                                         Int32 indxPaperType,
                                         Int32 indxOrientation,
                                         Boolean formAsMacro,
                                         UInt32 codePoint,
                                         Int32 indxFont,
                                         PCLFonts.eVariant fontVar)
        {
            const Int32 sizeStd = 1024;

            Byte[] bufStd = new Byte[sizeStd];

            UInt16[] textArray = { 0x00 };

            Int16 posX,
                  posY;

            Int32 indStd;

            Int16 ptSize;

            Byte[] utf8Seq = new Byte[4];
            Int32  utf8Len = 0;

            String utf8HexVal = "";

            //----------------------------------------------------------------//

            indStd = 0;

            //----------------------------------------------------------------//

            if (indxOrientation < PCLOrientations.getCount())
            {
                PCLXLWriter.addAttrUbyte(ref bufStd,
                                         ref indStd,
                                         PCLXLAttributes.eTag.Orientation,
                                         PCLOrientations.getIdPCLXL(indxOrientation));
            }

            if (indxPaperSize < PCLPaperSizes.getCount())
            {
                PCLXLWriter.addAttrUbyte(ref bufStd,
                                         ref indStd,
                                         PCLXLAttributes.eTag.MediaSize,
                                         PCLPaperSizes.getIdPCLXL(indxPaperSize));
            }

            if ((indxPaperType < PCLPaperTypes.getCount()) &&
                (PCLPaperTypes.getType(indxPaperType) !=
                 PCLPaperTypes.eEntryType.NotSet))
            {
                PCLXLWriter.addAttrUbyteArray(ref bufStd,
                                              ref indStd,
                                              PCLXLAttributes.eTag.MediaType,
                                              PCLPaperTypes.getName(indxPaperType));
            }

            PCLXLWriter.addAttrUbyte(ref bufStd,
                                     ref indStd,
                                     PCLXLAttributes.eTag.SimplexPageMode,
                                     (Byte)PCLXLAttrEnums.eVal.eSimplexFrontSide);

            PCLXLWriter.addOperator(ref bufStd,
                                    ref indStd,
                                    PCLXLOperators.eTag.BeginPage);

            PCLXLWriter.addAttrUint16XY(ref bufStd,
                                        ref indStd,
                                        PCLXLAttributes.eTag.PageOrigin,
                                        0, 0);

            PCLXLWriter.addOperator(ref bufStd,
                                    ref indStd,
                                    PCLXLOperators.eTag.SetPageOrigin);

            PCLXLWriter.addAttrUbyte(ref bufStd,
                                     ref indStd,
                                     PCLXLAttributes.eTag.ColorSpace,
                                     (Byte)PCLXLAttrEnums.eVal.eGray);

            PCLXLWriter.addOperator(ref bufStd,
                                    ref indStd,
                                    PCLXLOperators.eTag.SetColorSpace);

            prnWriter.Write(bufStd, 0, indStd);
            indStd = 0;

            //----------------------------------------------------------------//

            if (formAsMacro)
            {
                PCLXLWriter.addAttrUbyteArray(ref bufStd,
                                              ref indStd,
                                              PCLXLAttributes.eTag.StreamName,
                                              _formName);

                PCLXLWriter.addOperator(ref bufStd,
                                        ref indStd,
                                        PCLXLOperators.eTag.ExecStream);

                prnWriter.Write(bufStd, 0, indStd);
                indStd = 0;
            }
            else
            {
                generateOverlay(prnWriter, false,
                                indxPaperSize, indxOrientation);
            }

            prnWriter.Write(bufStd, 0, indStd);

            indStd = 0;


            //----------------------------------------------------------------//
            //                                                                //
            // Code-point data.                                               //
            //                                                                //
            //----------------------------------------------------------------//

            ptSize = 18;

            PCLXLWriter.font(prnWriter, false, ptSize,
                             _symSet_19U, _fontNameArial);

            PCLXLWriter.addAttrUbyte(ref bufStd,
                                     ref indStd,
                                     PCLXLAttributes.eTag.GrayLevel,
                                     0);

            PCLXLWriter.addOperator(ref bufStd,
                                    ref indStd,
                                    PCLXLOperators.eTag.SetBrushSource);

            PCLXLWriter.addAttrUbyte(ref bufStd,
                                     ref indStd,
                                     PCLXLAttributes.eTag.NullPen,
                                     0);

            PCLXLWriter.addOperator(ref bufStd,
                                    ref indStd,
                                    PCLXLOperators.eTag.SetPenSource);

            posX = _posXData;
            posY = _posYData;

            if (codePoint < 0x010000)
            {
                PCLXLWriter.text(prnWriter, false, false,
                                 PCLXLWriter.advances_ArialRegular, ptSize,
                                 posX, posY,
                                 "U+" + codePoint.ToString("x4"));
            }
            else
            {
                // should not happen 'cos XL only supports 16-bit values !
                PCLXLWriter.text(prnWriter, false, false,
                                 PCLXLWriter.advances_ArialRegular, ptSize,
                                 posX, posY,
                                 "U+" + codePoint.ToString("x6"));
            }

            PrnParseDataUTF8.convertUTF32ToUTF8Bytes(codePoint,
                                                     ref utf8Len,
                                                     ref utf8Seq);

            PrnParseDataUTF8.convertUTF32ToUTF8HexString(codePoint,
                                                         true,
                                                         ref utf8HexVal);

            posY += _lineInc;

            PCLXLWriter.text(prnWriter, false, false,
                             PCLXLWriter.advances_ArialRegular, ptSize,
                             posX, posY,
                             utf8HexVal);

            //----------------------------------------------------------------//
            //                                                                //
            // Font data.                                                     //
            //                                                                //
            //----------------------------------------------------------------//

            posY += _lineInc;

            PCLXLWriter.text(prnWriter, false, false,
                             PCLXLWriter.advances_ArialRegular, ptSize,
                             posX, posY,
                             PCLFonts.getName(indxFont) +
                             " " +
                             Enum.GetName(typeof(PCLFonts.eVariant), fontVar));

            posY += _lineInc;

            ptSize = 36;

            PCLXLWriter.font(prnWriter, false, ptSize,
                             _symSet_18N,
                             PCLFonts.getPCLXLName(indxFont,
                                                   fontVar));

            textArray[0] = (UInt16)codePoint;

            PCLXLWriter.textChar(prnWriter, false,
                                 0,           // ***** dummy value *****
                                 ptSize,
                                 posX, posY,
                                 (UInt16)codePoint);

            //----------------------------------------------------------------//

            PCLXLWriter.addAttrUint16(ref bufStd,
                                      ref indStd,
                                      PCLXLAttributes.eTag.PageCopies,
                                      1);

            PCLXLWriter.addOperator(ref bufStd,
                                    ref indStd,
                                    PCLXLOperators.eTag.EndPage);

            prnWriter.Write(bufStd, 0, indStd);
        }
        //--------------------------------------------------------------------//
        //                                                        M e t h o d //
        // g e n e r a t e P a g e                                            //
        //--------------------------------------------------------------------//
        //                                                                    //
        // Write individual test data page sequences to output file.          //
        //                                                                    //
        //--------------------------------------------------------------------//

        private static void generatePage(BinaryWriter prnWriter,
                                         Int32 indxPaperSize,
                                         Int32 indxPaperType,
                                         Int32 indxOrientation,
                                         Boolean formAsMacro,
                                         UInt16 logXOffset,
                                         UInt32 codePoint,
                                         Int32 indxFont,
                                         PCLFonts.eVariant fontVar)
        {
            Int16 posX,
                  posY;

            Int16 ptSize;

            Byte[] utf8Seq = new Byte[4];
            Int32  utf8Len = 0;

            String utf8HexVal = "";

            //----------------------------------------------------------------//

            if (formAsMacro)
            {
                PCLWriter.macroControl(prnWriter, _macroId,
                                       PCLWriter.eMacroControl.Call);
            }
            else
            {
                generateOverlay(prnWriter, false, logXOffset,
                                indxPaperSize, indxOrientation);
            }

            //----------------------------------------------------------------//
            //                                                                //
            // Code-point data.                                               //
            //                                                                //
            //----------------------------------------------------------------//

            ptSize = 18;

            PCLWriter.font(prnWriter, true, "19U",
                           PCLFonts.getPCLFontSelect(_indxFontArial,
                                                     PCLFonts.eVariant.Regular,
                                                     ptSize, 0));

            posX = (Int16)(_posXData - logXOffset);
            posY = _posYData;

            if (codePoint < 0x010000)
            {
                PCLWriter.text(prnWriter, posX, posY, 0, "U+" +
                               codePoint.ToString("x4"));
            }
            else
            {
                PCLWriter.text(prnWriter, posX, posY, 0, "U+" +
                               codePoint.ToString("x6"));
            }

            PrnParseDataUTF8.convertUTF32ToUTF8Bytes(codePoint,
                                                     ref utf8Len,
                                                     ref utf8Seq);

            PrnParseDataUTF8.convertUTF32ToUTF8HexString(codePoint,
                                                         true,
                                                         ref utf8HexVal);

            posY += _lineInc;

            PCLWriter.text(prnWriter, posX, posY, 0, utf8HexVal);

            //----------------------------------------------------------------//
            //                                                                //
            // Font data.                                                     //
            //                                                                //
            //----------------------------------------------------------------//

            posY += _lineInc;

            PCLWriter.text(prnWriter, posX, posY, 0,
                           PCLFonts.getName(indxFont) +
                           " " +
                           Enum.GetName(typeof(PCLFonts.eVariant), fontVar));

            posY += _lineInc;

            ptSize = 36;

            PCLWriter.font(prnWriter, true, "18N",
                           PCLFonts.getPCLFontSelect(indxFont,
                                                     fontVar,
                                                     ptSize, 0));

            PCLWriter.textParsingMethod(
                prnWriter,
                PCLTextParsingMethods.eIndex.m83_UTF8);

            PCLWriter.cursorPosition(prnWriter, posX, posY);

            prnWriter.Write(utf8Seq, 0, utf8Len);

            PCLWriter.formFeed(prnWriter);
        }