Beispiel #1
0
        public PDFType0Font(PDFDocument document, string idName, byte[] fontData, bool vertical)
            : base(document)
        {
            Elements.SetName(Keys.Type, "/Font");
            Elements.SetName(Keys.Subtype, "/Type0");
            Elements.SetName(Keys.Encoding, vertical ? "/Identity-V" : "/Identity-H");

            OpenTypeDescriptor ttDescriptor = (OpenTypeDescriptor)FontDescriptorCache.GetOrCreateDescriptor(idName, fontData);

            FontDescriptor = new PDFFontDescriptor(document, ttDescriptor);
            FontOptions    = new XPDFFontOptions(PDFFontEncoding.Unicode);
            Debug.Assert(FontOptions != null);

            _cmapInfo      = new CMapInfo(ttDescriptor);
            DescendantFont = new PDFCIDFont(document, FontDescriptor, fontData)
            {
                CMapInfo = _cmapInfo
            };

            // Create ToUnicode map
            _toUnicode = new PDFToUnicodeMap(document, _cmapInfo);
            document.Internals.AddObject(_toUnicode);
            Elements.Add(Keys.ToUnicode, _toUnicode);

            //BaseFont = ttDescriptor.FontName.Replace(" ", "");
            BaseFont = ttDescriptor.FontName;

            // CID fonts are always embedded
            if (!BaseFont.Contains("+"))  // HACK in PDFType0Font
            {
                BaseFont = CreateEmbeddedFontSubsetName(BaseFont);
            }

            FontDescriptor.FontName = BaseFont;
            DescendantFont.BaseFont = BaseFont;

            PDFArray descendantFonts = new PDFArray(document);

            Owner.IrefTable.Add(DescendantFont);
            descendantFonts.Elements.Add(DescendantFont.Reference);
            Elements[Keys.DescendantFonts] = descendantFonts;
        }
Beispiel #2
0
 /// <summary>
 /// Creates font and enforces bold/italic simulation.
 /// </summary>
 public static XFont CreateSpecialFont(string familyName, double emSize, XFontStyle style,
                                       XPDFFontOptions pdfOptions, XStyleSimulations styleSimulations) => new XFont(familyName, emSize, style, pdfOptions, styleSimulations);
 /// <summary>
 /// New...
 /// </summary>
 public OpenTypeDescriptor(string fontDescriptorKey, string name, XFontStyle stlye, OpenTypeFontface fontface, XPDFFontOptions options)
     : base(fontDescriptorKey)
 {
     FontFace = fontface;
     FontName = name;
     Initialize();
 }