public virtual void GetCid2UniCMapNoFontAsian()
 {
     NUnit.Framework.Assert.That(() => {
         // Without font-asian module in the class path
         // no CMap can be found.
         FontCache.GetCid2UniCmap("UniJIS-UTF16-H");
     }
                                 , NUnit.Framework.Throws.InstanceOf <iText.IO.IOException>())
     ;
 }
示例#2
0
 /// <param name="cmap">CMap name.</param>
 /// <param name="uniMap">CMap to convert Unicode value to CID.</param>
 public CMapEncoding(String cmap, String uniMap)
 {
     this.cmap   = cmap;
     this.uniMap = uniMap;
     if (cmap.Equals(PdfEncodings.IDENTITY_H) || cmap.Equals(PdfEncodings.IDENTITY_V))
     {
         cid2Uni  = FontCache.GetCid2UniCmap(uniMap);
         isDirect = true;
     }
     else
     {
         cid2Code = FontCache.GetCid2Byte(cmap);
         code2Cid = cid2Code.GetReversMap();
     }
 }
示例#3
0
        private void InitializeCidFontProperties(IDictionary <String, Object> fontDesc)
        {
            fontIdentification.SetPanose((String)fontDesc.Get("Panose"));
            fontMetrics.SetItalicAngle(Convert.ToInt32((String)fontDesc.Get("ItalicAngle"), System.Globalization.CultureInfo.InvariantCulture
                                                       ));
            fontMetrics.SetCapHeight(Convert.ToInt32((String)fontDesc.Get("CapHeight"), System.Globalization.CultureInfo.InvariantCulture
                                                     ));
            fontMetrics.SetTypoAscender(Convert.ToInt32((String)fontDesc.Get("Ascent"), System.Globalization.CultureInfo.InvariantCulture
                                                        ));
            fontMetrics.SetTypoDescender(Convert.ToInt32((String)fontDesc.Get("Descent"), System.Globalization.CultureInfo.InvariantCulture
                                                         ));
            fontMetrics.SetStemV(Convert.ToInt32((String)fontDesc.Get("StemV"), System.Globalization.CultureInfo.InvariantCulture
                                                 ));
            pdfFontFlags = Convert.ToInt32((String)fontDesc.Get("Flags"), System.Globalization.CultureInfo.InvariantCulture
                                           );
            String          fontBBox = (String)fontDesc.Get("FontBBox");
            StringTokenizer tk       = new StringTokenizer(fontBBox, " []\r\n\t\f");
            int             llx      = Convert.ToInt32(tk.NextToken(), System.Globalization.CultureInfo.InvariantCulture);
            int             lly      = Convert.ToInt32(tk.NextToken(), System.Globalization.CultureInfo.InvariantCulture);
            int             urx      = Convert.ToInt32(tk.NextToken(), System.Globalization.CultureInfo.InvariantCulture);
            int             ury      = Convert.ToInt32(tk.NextToken(), System.Globalization.CultureInfo.InvariantCulture);

            fontMetrics.UpdateBbox(llx, lly, urx, ury);
            registry = (String)fontDesc.Get("Registry");
            String uniMap = GetCompatibleUniMap(registry);

            if (uniMap != null)
            {
                IntHashtable metrics = (IntHashtable)fontDesc.Get("W");
                CMapCidUni   cid2Uni = FontCache.GetCid2UniCmap(uniMap);
                avgWidth = 0;
                foreach (int cid in cid2Uni.GetCids())
                {
                    int   uni   = cid2Uni.Lookup(cid);
                    int   width = metrics.ContainsKey(cid) ? metrics.Get(cid) : DEFAULT_WIDTH;
                    Glyph glyph = new Glyph(cid, width, uni);
                    avgWidth += glyph.GetWidth();
                    codeToGlyph.Put(cid, glyph);
                    unicodeToGlyph.Put(uni, glyph);
                }
                FixSpaceIssue();
                if (codeToGlyph.Count != 0)
                {
                    avgWidth /= codeToGlyph.Count;
                }
            }
        }