Exemple #1
0
        private void AddCIDFontDictionaryObject(
            PDF pdf,
            Font font,
            OTF otf)
        {
            for (int i = 0; i < pdf.fonts.Count; i++)
            {
                Font f = pdf.fonts[i];
                if (f.name.Equals(otf.fontName) && f.GetCidFontDictObjNumber() != -1)
                {
                    font.SetCidFontDictObjNumber(f.GetCidFontDictObjNumber());
                    return;
                }
            }

            pdf.Newobj();
            pdf.Append("<<\n");
            pdf.Append("/Type /Font\n");
            if (otf.cff)
            {
                pdf.Append("/Subtype /CIDFontType0\n");
            }
            else
            {
                pdf.Append("/Subtype /CIDFontType2\n");
            }
            pdf.Append("/BaseFont /");
            pdf.Append(otf.fontName);
            pdf.Append('\n');
            pdf.Append("/CIDSystemInfo <</Registry (Adobe) /Ordering (Identity) /Supplement 0>>\n");
            pdf.Append("/FontDescriptor ");
            pdf.Append(font.GetFontDescriptorObjNumber());
            pdf.Append(" 0 R\n");
            pdf.Append("/DW ");
            pdf.Append((int)
                       ((1000f / otf.unitsPerEm) * otf.advanceWidth[0]));
            pdf.Append('\n');
            pdf.Append("/W [0[\n");
            for (int i = 0; i < otf.advanceWidth.Length; i++)
            {
                pdf.Append((int)
                           ((1000f / otf.unitsPerEm) * otf.advanceWidth[i]));
                if ((i + 1) % 10 == 0)
                {
                    pdf.Append('\n');
                }
                else
                {
                    pdf.Append(' ');
                }
            }
            pdf.Append("]]\n");
            pdf.Append("/CIDToGIDMap /Identity\n");
            pdf.Append(">>\n");
            pdf.Endobj();

            font.SetCidFontDictObjNumber(pdf.objNumber);
        }
        private static void AddCIDFontDictionaryObject(
            SortedDictionary <Int32, PDFobj> objects, Font font)
        {
            PDFobj        obj  = new PDFobj();
            List <String> dict = obj.GetDict();

            dict.Add("<<");
            dict.Add("/Type");
            dict.Add("/Font");
            dict.Add("/Subtype");
            dict.Add("/CIDFontType" + (font.cff ? "0" : "2"));
            dict.Add("/BaseFont");
            dict.Add("/" + font.name);
            dict.Add("/CIDSystemInfo");
            dict.Add("<<");
            dict.Add("/Registry");
            dict.Add("(Adobe)");
            dict.Add("/Ordering");
            dict.Add("(Identity)");
            dict.Add("/Supplement");
            dict.Add("0");
            dict.Add(">>");
            dict.Add("/FontDescriptor");
            dict.Add(font.GetFontDescriptorObjNumber().ToString());
            dict.Add("0");
            dict.Add("R");
            dict.Add("/DW");
            dict.Add(((Int32)
                      ((1000f / font.unitsPerEm) * font.advanceWidth[0])).ToString());
            dict.Add("/W");
            dict.Add("[");
            dict.Add("0");
            dict.Add("[");
            for (int i = 0; i < font.advanceWidth.Length; i++)
            {
                dict.Add(((int)
                          ((1000f / font.unitsPerEm) * font.advanceWidth[i])).ToString());
            }
            dict.Add("]");
            dict.Add("]");
            dict.Add("/CIDToGIDMap");
            dict.Add("/Identity");
            dict.Add(">>");
            obj.number = MaxKey(objects.Keys) + 1;
            objects.Add(obj.number, obj);
            font.SetCidFontDictObjNumber(obj.number);
        }
Exemple #3
0
        private void AddCIDFontDictionaryObject(
            PDF pdf,
            Font font,
            OTF otf)
        {
            for (int i = 0; i < pdf.fonts.Count; i++) {
            Font f = pdf.fonts[i];
            if (f.name.Equals(otf.fontName) && f.GetCidFontDictObjNumber() != -1) {
                font.SetCidFontDictObjNumber(f.GetCidFontDictObjNumber());
                return;
            }
            }

            pdf.Newobj();
            pdf.Append("<<\n");
            pdf.Append("/Type /Font\n");
            if (otf.cff) {
            pdf.Append("/Subtype /CIDFontType0\n");
            } else {
            pdf.Append("/Subtype /CIDFontType2\n");
            }
            pdf.Append("/BaseFont /");
            pdf.Append(otf.fontName);
            pdf.Append('\n');
            pdf.Append("/CIDSystemInfo <</Registry (Adobe) /Ordering (Identity) /Supplement 0>>\n");
            pdf.Append("/FontDescriptor ");
            pdf.Append(font.GetFontDescriptorObjNumber());
            pdf.Append(" 0 R\n");
            pdf.Append("/DW ");
            pdf.Append((int)
                ((1000f / otf.unitsPerEm) * otf.advanceWidth[0]));
            pdf.Append('\n');
            pdf.Append("/W [0[\n");
            for (int i = 0; i < otf.advanceWidth.Length; i++) {
            pdf.Append((int)
                    ((1000f / otf.unitsPerEm) * otf.advanceWidth[i]));
            if ((i + 1) % 10 == 0) {
                pdf.Append('\n');
            }
            else {
                pdf.Append(' ');
            }
            }
            pdf.Append("]]\n");
            pdf.Append("/CIDToGIDMap /Identity\n");
            pdf.Append(">>\n");
            pdf.Endobj();

            font.SetCidFontDictObjNumber(pdf.objNumber);
        }