/** * Decodes a single CID (represented by one or two bytes) to a unicode String. * @param bytes the bytes making up the character code to convert * @param offset an offset * @param len a length * @return a String containing the encoded form of the input bytes using the font's encoding. */ private String DecodeSingleCID(byte[] bytes, int offset, int len) { if (toUnicodeCmap != null) { if (offset + len > bytes.Length) { throw new IndexOutOfRangeException(MessageLocalization.GetComposedMessage("invalid.index.1", offset + len)); } string s = toUnicodeCmap.Lookup(bytes, offset, len); if (s != null) { return(s); } if (len != 1 || cidbyte2uni == null) { return(null); } } if (len == 1) { if (cidbyte2uni == null) { return(""); } else { return(new String(cidbyte2uni, 0xff & bytes[offset], 1)); } } throw new ArgumentException("Multi-byte glyphs not implemented yet"); }