/// <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); }
/// <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; }
/// <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++); }
/// <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++); }