Ejemplo n.º 1
0
        /// <param name="cidBytes"/>
        /// <param name="offset"/>
        /// <param name="length"/>
        public virtual String DecodeSequence(byte[] cidBytes, int offset, int length)
        {
            StringBuilder sb = new StringBuilder();

            CMapByteCid.Cursor cursor = new CMapByteCid.Cursor(offset, length);
            int cid;

            while ((cid = DecodeSingle(cidBytes, cursor)) >= 0)
            {
                sb.Append((char)cid);
            }
            return(sb.ToString());
        }
Ejemplo n.º 2
0
        protected internal virtual int DecodeSingle(byte[] cidBytes, CMapByteCid.Cursor cursor)
        {
            int end          = cursor.offset + cursor.length;
            int currentPlane = 0;

            while (cursor.offset < end)
            {
                int one = cidBytes[cursor.offset++] & 0xff;
                cursor.length--;
                char[] plane = planes[currentPlane];
                int    cid   = plane[one];
                if ((cid & 0x8000) == 0)
                {
                    return(cid);
                }
                else
                {
                    currentPlane = cid & 0x7fff;
                }
            }
            return(-1);
        }