internal static DocumentFont GetFont(PDFObjects pdf, PdfObject pdfObject) { var dic = pdf.GetObject <DictionaryObject>(pdfObject); var name = pdf.GetObject <NameObject>(dic.Dictionary["BaseFont"]).Value; lock (lck) { if (m_lstFont.ContainsKey(name)) { return(m_lstFont[name]); } if (IsBaseFont(pdf, dic)) { var font = new DocumentBaseFont(name); m_lstFont.Add(name, font); return(font); } else if (IsSubsetFont(dic)) { var font = pdf.GetDocument <DocumentTtfSubsetFont>(pdfObject); m_lstFont.Add(name, font); return(font); } else if (IsTrueTypeFont(pdf, dic)) { var font = pdf.GetDocument <DocumentTtfFont>(pdfObject); m_lstFont.Add(name, font); return(font); } } throw new PdfException(PdfExceptionCodes.INVALID_FONT, $"Not supported font type"); }
public static DocumentFont GetFont(string name, bool IsBold, bool IsItalic, Embedded embedded) { string normalizedName = GetName(name, IsBold, IsItalic, embedded); // base fonts if (baseFontsNames.ContainsKey(SimplifyBaseName(normalizedName))) { var fontBaseName = baseFontsNames[SimplifyBaseName(normalizedName)]; lock (lck) { if (m_lstFont.ContainsKey(fontBaseName)) { return(m_lstFont[fontBaseName]); } var font = new DocumentBaseFont(fontBaseName); m_lstFont.Add(fontBaseName, font); return(font); } } // unknown, or disk or systemfonts DocumentFont ttffont = null; lock (lck) { if (m_lstFont.ContainsKey(normalizedName)) { return(m_lstFont[normalizedName]); } if (embedded == Embedded.No) { if (File.Exists(name)) { ttffont = new DocumentTtfFont(name); } else { LoadSystemFonts(); if (!dctFontRegistered.ContainsKey(name)) { throw new PdfException(PdfExceptionCodes.FONT_NOT_FOUND, "Font " + name + " not found"); } ttffont = new DocumentTtfFont(dctFontRegistered[name]); } } else { if (File.Exists(name)) { ttffont = new DocumentTtfSubsetFont(name); } else { LoadSystemFonts(); if (!dctFontRegistered.ContainsKey(name)) { throw new PdfException(PdfExceptionCodes.FONT_NOT_FOUND, "Font " + name + " not found"); } ttffont = new DocumentTtfSubsetFont(dctFontRegistered[name]); } } m_lstFont.Add(normalizedName, ttffont); } return(ttffont); }