예제 #1
0
파일: CMap.cs 프로젝트: n9/pdfclown
 /**
   <summary>Gets the character map extracted from the given data.</summary>
   <param name="stream">Character map data.</param>
 */
 public static IDictionary<ByteArray, int> Get(
     bytes::IInputStream stream
     )
 {
     CMapParser parser = new CMapParser(stream);
       return parser.Parse();
 }
예제 #2
0
 /**
   <summary>Gets the character map extracted from the given data.</summary>
   <param name="stream">Character map data.</param>
 */
 public static IDictionary<ByteArray,int> Get(
   bytes::IInputStream stream
   )
 {
   CMapParser parser = new CMapParser(stream);
   return parser.Parse();
 }
예제 #3
0
        /**
         * <summary>Loads font information from existing PDF font structure.</summary>
         */
        protected void Load(
            )
        {
            if (BaseDataObject.ContainsKey(PdfName.ToUnicode)) // To-Unicode explicit mapping.
            {
                PdfStream  toUnicodeStream = (PdfStream)BaseDataObject.Resolve(PdfName.ToUnicode);
                CMapParser parser          = new CMapParser(toUnicodeStream.Body);
                codes    = new BiDictionary <ByteArray, int>(parser.Parse());
                symbolic = false;
            }

            OnLoad();

            // Maximum character code length.
            foreach (ByteArray charCode in codes.Keys)
            {
                if (charCode.Data.Length > charCodeMaxLength)
                {
                    charCodeMaxLength = charCode.Data.Length;
                }
            }
            // Missing character substitute.
            if (defaultCode == UndefinedDefaultCode)
            {
                ICollection <int> codePoints = CodePoints;
                if (codePoints.Contains((int)'?'))
                {
                    DefaultCode = '?';
                }
                else if (codePoints.Contains((int)' '))
                {
                    DefaultCode = ' ';
                }
                else
                // PK 2017-03-08 - allow for encoding to fail, which should just result in a "?" or rectangle appearing instead of the correct character
                {
                    DefaultCode = codePoints.FirstOrDefault();
                }
            }
        }
예제 #4
0
        /**
         * <summary>Loads font information from existing PDF font structure.</summary>
         */
        protected void Load(
            )
        {
            if (BaseDataObject.ContainsKey(PdfName.ToUnicode)) // To-Unicode explicit mapping.
            {
                PdfStream  toUnicodeStream = (PdfStream)BaseDataObject.Resolve(PdfName.ToUnicode);
                CMapParser parser          = new CMapParser(toUnicodeStream.Body);
                codes    = new BiDictionary <ByteArray, int>(parser.Parse());
                symbolic = false;
            }

            OnLoad();

            // Maximum character code length.
            foreach (ByteArray charCode in codes.Keys)
            {
                if (charCode.Data.Length > charCodeMaxLength)
                {
                    charCodeMaxLength = charCode.Data.Length;
                }
            }
            // Missing character substitute.
            if (defaultCode == UndefinedDefaultCode)
            {
                ICollection <int> codePoints = CodePoints;
                if (codePoints.Contains((int)'?'))
                {
                    DefaultCode = '?';
                }
                else if (codePoints.Contains((int)' '))
                {
                    DefaultCode = ' ';
                }
                else
                {
                    DefaultCode = codePoints.First();
                }
            }
        }
예제 #5
0
        /**
         * <summary>Loads font information from existing PDF font structure.</summary>
         */
        protected void Load(
            )
        {
            if (BaseDataObject.ContainsKey(PdfName.ToUnicode)) // To-Unicode explicit mapping.
            {
                PdfStream  toUnicodeStream = (PdfStream)BaseDataObject.Resolve(PdfName.ToUnicode);
                CMapParser parser          = new CMapParser(toUnicodeStream.Body);
                codes    = new BiDictionary <ByteArray, int>(parser.Parse());
                symbolic = false;
            }

            OnLoad();

            // Maximum character code length.
            foreach (ByteArray charCode in codes.Keys)
            {
                if (charCode.Data.Length > charCodeMaxLength)
                {
                    charCodeMaxLength = charCode.Data.Length;
                }
            }
        }