Example #1
0
        /// <summary>
        /// Gets a PdfFont from an XFont. If no PdfFont already exists, a new one is created.
        /// </summary>
        public PdfFont GetFont(XFont font)
        {
            string selector = font.Selector;

            if (selector == null)
            {
                selector      = ComputeKey(font); //new FontSelector(font);
                font.Selector = selector;
            }
            PdfFont pdfFont;

            if (!_fonts.TryGetValue(selector, out pdfFont))
            {
                if (font.Unicode)
                {
                    pdfFont = new PdfType0Font(Owner, font, font.IsVertical);
                }
                else
                {
                    pdfFont = new PdfTrueTypeFont(Owner, font);
                }
                //pdfFont.Document = _document;
                Debug.Assert(pdfFont.Owner == Owner);
                _fonts[selector] = pdfFont;
            }
            return(pdfFont);
        }
Example #2
0
        //string[][] pdfStandardFonts =
        //{
        //  new string[]{"Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic"},
        //  new string[]{"Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique"},
        //  new string[]{"Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique"},
        //  new string[]{"Symbol", "Symbol", "Symbol", "Symbol"},
        //  new string[]{"ZapfDingbats", "ZapfDingbats", "ZapfDingbats", "ZapfDingbats"},
        //};

#if true
        /// <summary>
        /// Gets a PdfFont from a font program. If no PdfFont already exists, a new one is created.
        /// </summary>
        public PdfFont GetFont(string idName, byte[] fontData)
        {
            FontSelector selector = new FontSelector(idName);
            PdfFont      pdfFont;

            if (!fonts.TryGetValue(selector, out pdfFont))
            {
                //if (font.Unicode)
                pdfFont = new PdfType0Font(owner, idName, fontData, false);
                //else
                //  pdfFont = new PdfTrueTypeFont(this.owner, font);
                //pdfFont.Document = this.document;
                Debug.Assert(pdfFont.Owner == owner);
                fonts[selector] = pdfFont;
            }
            return(pdfFont);
        }
Example #3
0
        /// <summary>
        /// Gets a PdfFont from a font program. If no PdfFont already exists, a new one is created.
        /// </summary>
        public PdfFont GetFont(string idName, byte[] fontData)
        {
            string  selector = idName;
            PdfFont pdfFont;

            if (!_fonts.TryGetValue(selector, out pdfFont))
            {
                //if (font.Unicode)
                pdfFont = new PdfType0Font(Owner, idName, fontData, false);
                //else
                //  pdfFont = new PdfTrueTypeFont(_owner, font);
                //pdfFont.Document = _document;
                Debug.Assert(pdfFont.Owner == Owner);
                _fonts[selector] = pdfFont;
            }
            return(pdfFont);
        }
Example #4
0
 /// <summary>
 /// Gets a PdfFont from an XFont. If no PdfFont already exists, a new one is created.
 /// </summary>
 public PdfFont GetFont(XFont font)
 {
     string selector = font.Selector;
     if (selector == null)
     {
         selector = ComputeKey(font); //new FontSelector(font);
         font.Selector = selector;
     }
     PdfFont pdfFont;
     if (!_fonts.TryGetValue(selector, out pdfFont))
     {
         if (font.Unicode)
             pdfFont = new PdfType0Font(Owner, font, font.IsVertical);
         else
             pdfFont = new PdfTrueTypeFont(Owner, font);
         //pdfFont.Document = _document;
         Debug.Assert(pdfFont.Owner == Owner);
         _fonts[selector] = pdfFont;
     }
     return pdfFont;
 }
Example #5
0
        /// <summary>
        /// Gets a PdfFont from an XFont. If no PdfFont already exists, a new one is created.
        /// </summary>
        public PdfFont GetFont(XFont font)
        {
            string fontName = font.Name;

            FontSelector selector = font.selector;

            if (selector == null)
            {
                selector      = new FontSelector(font);
                font.selector = selector;
            }
            PdfFont pdfFont;

            if (!fonts.TryGetValue(selector, out pdfFont))
            {
                if (font.Unicode)
                {
                    pdfFont = new PdfType0Font(owner, font, font.IsVertical);
                }
                else
                {
                    pdfFont = new PdfTrueTypeFont(owner, font);
                }
                //pdfFont.Document = this.document;
                Debug.Assert(pdfFont.Owner == owner);
                fonts[selector] = pdfFont;
                //if (this.owner.EarlyWrite)
                //{
                //  //pdfFont.Close(); delete
                //  //pdfFont.AssignObjID(ref this.document.ObjectID); // BUG: just test code!!!!
                //  //pdfFont.WriteObject(null);
                //}
            }
            return(pdfFont);

#if false
            goto TrueTypeFont;
            switch (font.Name)
            {
            case "Times":
            case "Times New Roman":
                std = 0;
                break;

            case "Helvetica":
                std = 1;
                break;

            case "Courier":
                std = 2;
                break;

            case "Symbol":
                std = 3;
                break;

            case "ZapfDingbats":
                std = 4;
                break;
            }
            if (std != -1)
            {
                int     idx     = (int)font.Style & 0x3;
                string  name    = pdfStandardFonts[std][idx];
                PdfFont pdfFont = GetFont(name);
                if (pdfFont == null)
                {
                    pdfFont             = new PdfFont();
                    pdfFont.SubType     = "/Type1";
                    pdfFont.BaseFont    = name;
                    pdfFont.DefaultName = string.Format("F{0}", PdfFontTable.fontNumber++);
                }
                return(pdfFont);
            }
            else
            {
TrueTypeFont:
                // TrueType font
                PdfFont pdfFont     = new PdfFont();
                pdfFont.SubType     = "/TrueType";
                pdfFont.FirstChar   = 0;
                pdfFont.LastChar    = 255;
                pdfFont.BaseFont    = font.Name;
                pdfFont.DefaultName = string.Format("F{0}", PdfFontTable.fontNumber++);
            }
#endif
            // TrueType font
            //      PdfFont pdfFont = new PdfFont();
            //      pdfFont.descriptor = new PdfFontDescriptor((TrueTypeDescriptor)FontDescriptorStock.Global.CreateDescriptor(font));
            //      pdfFont.SubType = "/TrueType";
            //      pdfFont.FirstChar = 0;
            //      pdfFont.LastChar = 255;
            //      pdfFont.BaseFont = font.Name;
            //      pdfFont.BaseFont = pdfFont.BaseFont.Replace(" ", "");
            //      switch (font.Style & (XFontStyle.Bold | XFontStyle.Italic))
            //      {
            //        case XFontStyle.Bold:
            //          pdfFont.BaseFont += ",Bold";
            //          break;
            //
            //        case XFontStyle.Italic:
            //          pdfFont.BaseFont += ",Italic";
            //          break;
            //
            //        case XFontStyle.Bold | XFontStyle.Italic:
            //          pdfFont.BaseFont += ",BoldItalic";
            //          break;
            //      }
            //      pdfFont.descriptor.FontName = pdfFont.BaseFont;
            //      pdfFont.DefaultName = string.Format("F{0}", PdfFontTable.fontNumber++);
        }
Example #6
0
 /// <summary>
 /// Gets a PdfFont from a font program. If no PdfFont already exists, a new one is created.
 /// </summary>
 public PdfFont GetFont(string idName, byte[] fontData)
 {
     Debug.Assert(false);
     //FontSelector selector = new FontSelector(idName);
     string selector = null; // ComputeKey(font); //new FontSelector(font);
     PdfFont pdfFont;
     if (!_fonts.TryGetValue(selector, out pdfFont))
     {
         //if (font.Unicode)
         pdfFont = new PdfType0Font(Owner, idName, fontData, false);
         //else
         //  pdfFont = new PdfTrueTypeFont(_owner, font);
         //pdfFont.Document = _document;
         Debug.Assert(pdfFont.Owner == Owner);
         _fonts[selector] = pdfFont;
     }
     return pdfFont;
 }
    /// <summary>
    /// Gets a PdfFont from an XFont. If no PdfFont already exists, a new one is created.
    /// </summary>
    public PdfFont GetFont(XFont font)
    {
      string fontName = font.Name;

      PdfFontTable.FontSelector selector = font.selector;
      if (selector == null)
      {
        selector = new FontSelector(font);
        font.selector = selector;
      }
      PdfFont pdfFont;
      if (!this.fonts.TryGetValue(selector, out pdfFont))
      {
        if (font.Unicode)
          pdfFont = new PdfType0Font(this.owner, font, font.IsVertical);
        else
          pdfFont = new PdfTrueTypeFont(this.owner, font);
        //pdfFont.Document = this.document;
        Debug.Assert(pdfFont.Owner == this.owner);
        this.fonts[selector] = pdfFont;
        //if (this.owner.EarlyWrite)
        //{
        //  //pdfFont.Close(); delete 
        //  //pdfFont.AssignObjID(ref this.document.ObjectID); // BUG: just test code!!!!
        //  //pdfFont.WriteObject(null);
        //}
      }
      return pdfFont;

#if false
      goto TrueTypeFont;
      switch (font.Name)
      {
        case "Times":
        case "Times New Roman":
          std = 0;
          break;

        case "Helvetica":
          std = 1;
          break;

        case "Courier":
          std = 2;
          break;

        case "Symbol":
          std = 3;
          break;

        case "ZapfDingbats":
          std = 4;
          break;
      }
      if (std != -1)
      {
        int idx = (int)font.Style & 0x3;
        string name = pdfStandardFonts[std][idx];
        PdfFont pdfFont = GetFont(name);
        if (pdfFont == null)
        {
          pdfFont = new PdfFont();
          pdfFont.SubType = "/Type1";
          pdfFont.BaseFont = name;
          pdfFont.DefaultName = string.Format("F{0}", PdfFontTable.fontNumber++);
        }
        return pdfFont;
      }
      else
      {
      TrueTypeFont:
        // TrueType font
        PdfFont pdfFont = new PdfFont();
        pdfFont.SubType = "/TrueType";
        pdfFont.FirstChar = 0;
        pdfFont.LastChar = 255;
        pdfFont.BaseFont = font.Name;
        pdfFont.DefaultName = string.Format("F{0}", PdfFontTable.fontNumber++);
      } 
#endif
      // TrueType font
      //      PdfFont pdfFont = new PdfFont();
      //      pdfFont.descriptor = new PdfFontDescriptor((TrueTypeDescriptor)FontDescriptorStock.Global.CreateDescriptor(font));
      //      pdfFont.SubType = "/TrueType";
      //      pdfFont.FirstChar = 0;
      //      pdfFont.LastChar = 255;
      //      pdfFont.BaseFont = font.Name;
      //      pdfFont.BaseFont = pdfFont.BaseFont.Replace(" ", "");
      //      switch (font.Style & (XFontStyle.Bold | XFontStyle.Italic))
      //      {
      //        case XFontStyle.Bold:
      //          pdfFont.BaseFont += ",Bold";
      //          break;
      //
      //        case XFontStyle.Italic:
      //          pdfFont.BaseFont += ",Italic";
      //          break;
      //        
      //        case XFontStyle.Bold | XFontStyle.Italic:
      //          pdfFont.BaseFont += ",BoldItalic";
      //          break;
      //      }
      //      pdfFont.descriptor.FontName = pdfFont.BaseFont;
      //      pdfFont.DefaultName = string.Format("F{0}", PdfFontTable.fontNumber++);
    }
    //string[][] pdfStandardFonts =
    //{
    //  new string[]{"Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic"},
    //  new string[]{"Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique"},
    //  new string[]{"Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique"},
    //  new string[]{"Symbol", "Symbol", "Symbol", "Symbol"},
    //  new string[]{"ZapfDingbats", "ZapfDingbats", "ZapfDingbats", "ZapfDingbats"},
    //};

#if true
    /// <summary>
    /// Gets a PdfFont from a font program. If no PdfFont already exists, a new one is created.
    /// </summary>
    public PdfFont GetFont(string idName, byte[] fontData)
    {
      PdfFontTable.FontSelector selector = new FontSelector(idName);
      PdfFont pdfFont;
      if (!this.fonts.TryGetValue(selector, out pdfFont))
      {
        //if (font.Unicode)
        pdfFont = new PdfType0Font(this.owner, idName, fontData, false);
        //else
        //  pdfFont = new PdfTrueTypeFont(this.owner, font);
        //pdfFont.Document = this.document;
        Debug.Assert(pdfFont.Owner == this.owner);
        this.fonts[selector] = pdfFont;
      }
      return pdfFont;
    }