class PDF::Reader::Encoding::SymbolEncoding
def to_utf8(str, tounicode = nil)
def to_utf8(str, tounicode = nil) array_symbol = str.unpack('C*') array_symbol = self.process_differences(array_symbol) array_enc = [] array_symbol.each do |num| if tounicode && (code = tounicode.decode(num)) array_enc << code elsif tounicode array_enc << PDF::Reader::Encoding::UNKNOWN_CHAR else case num when 0x22; array_enc << 0x2200 when 0x24; array_enc << 0x2203 when 0x27; array_enc << 0x220B when 0x2A; array_enc << 0x2217 when 0x2D; array_enc << 0x2212 when 0x40; array_enc << 0x2245 when 0x41; array_enc << 0x0391 when 0x42; array_enc << 0x0392 when 0x43; array_enc << 0x03A7 when 0x44; array_enc << 0x0394 when 0x45; array_enc << 0x0395 when 0x46; array_enc << 0x03A6 when 0x47; array_enc << 0x0393 when 0x48; array_enc << 0x0397 when 0x49; array_enc << 0x0399 when 0x4A; array_enc << 0x03D1 when 0x4B; array_enc << 0x039A when 0x4C; array_enc << 0x039B when 0x4D; array_enc << 0x039C when 0x4E; array_enc << 0x039D when 0x4F; array_enc << 0x039F when 0x50; array_enc << 0x03A0 when 0x51; array_enc << 0x0398 when 0x52; array_enc << 0x03A1 when 0x53; array_enc << 0x03A3 when 0x54; array_enc << 0x03A4 when 0x55; array_enc << 0x03A5 when 0x56; array_enc << 0x03C2 when 0x57; array_enc << 0x03A9 when 0x58; array_enc << 0x039E when 0x59; array_enc << 0x03A8 when 0x5A; array_enc << 0x0396 when 0x5C; array_enc << 0x2234 when 0x5E; array_enc << 0x22A5 when 0x60; array_enc << 0xF8E5 when 0x61; array_enc << 0x03B1 when 0x62; array_enc << 0x03B2 when 0x63; array_enc << 0x03C7 when 0x64; array_enc << 0x03B4 when 0x65; array_enc << 0x03B5 when 0x66; array_enc << 0x03C6 when 0x67; array_enc << 0x03B3 when 0x68; array_enc << 0x03B7 when 0x69; array_enc << 0x03B9 when 0x6A; array_enc << 0x03D5 when 0x6B; array_enc << 0x03BA when 0x6C; array_enc << 0x03BB when 0x6D; array_enc << 0x03BC when 0x6E; array_enc << 0x03BD when 0x6F; array_enc << 0x03BF when 0x70; array_enc << 0x03C0 when 0x71; array_enc << 0x03B8 when 0x72; array_enc << 0x03C1 when 0x73; array_enc << 0x03C3 when 0x74; array_enc << 0x03C4 when 0x75; array_enc << 0x03C5 when 0x76; array_enc << 0x03D6 when 0x77; array_enc << 0x03C9 when 0x78; array_enc << 0x03BE when 0x79; array_enc << 0x03C8 when 0x7A; array_enc << 0x03B6 when 0x7E; array_enc << 0x223C when 0xA0; array_enc << 0x20AC when 0xA1; array_enc << 0x03D2 when 0xA2; array_enc << 0x2032 when 0xA3; array_enc << 0x2264 when 0xA4; array_enc << 0x2215 when 0xA5; array_enc << 0x221E when 0xA6; array_enc << 0x0192 when 0xA7; array_enc << 0x2663 when 0xA8; array_enc << 0x2666 when 0xA9; array_enc << 0x2665 when 0xAA; array_enc << 0x2660 when 0xAB; array_enc << 0x2194 when 0xAC; array_enc << 0x2190 when 0xAD; array_enc << 0x2191 when 0xAE; array_enc << 0x2192 when 0xAF; array_enc << 0x2193 when 0xB2; array_enc << 0x2033 when 0xB3; array_enc << 0x2265 when 0xB4; array_enc << 0x00D7 when 0xB5; array_enc << 0x221D when 0xB6; array_enc << 0x2202 when 0xB7; array_enc << 0x2022 when 0xB8; array_enc << 0x00F7 when 0xB9; array_enc << 0x2260 when 0xBA; array_enc << 0x2261 when 0xBB; array_enc << 0x2248 when 0xBC; array_enc << 0x2026 when 0xBD; array_enc << 0xF8E6 when 0xBE; array_enc << 0xF8E7 when 0xBF; array_enc << 0x21B5 when 0xC0; array_enc << 0x2135 when 0xC1; array_enc << 0x2111 when 0xC2; array_enc << 0x211C when 0xC3; array_enc << 0x2118 when 0xC4; array_enc << 0x2297 when 0xC5; array_enc << 0x2295 when 0xC6; array_enc << 0x2205 when 0xC7; array_enc << 0x2229 when 0xC8; array_enc << 0x222A when 0xC9; array_enc << 0x2283 when 0xCA; array_enc << 0x2287 when 0xCB; array_enc << 0x2284 when 0xCC; array_enc << 0x2282 when 0xCD; array_enc << 0x2286 when 0xCE; array_enc << 0x2208 when 0xCF; array_enc << 0x2209 when 0xD0; array_enc << 0x2220 when 0xD1; array_enc << 0x2207 when 0xD2; array_enc << 0xF6DA when 0xD3; array_enc << 0xF6D9 when 0xD4; array_enc << 0xF6DB when 0xD5; array_enc << 0x220F when 0xD6; array_enc << 0x221A when 0xD7; array_enc << 0x22C5 when 0xD8; array_enc << 0x00AC when 0xD9; array_enc << 0x2227 when 0xDA; array_enc << 0x2228 when 0xDB; array_enc << 0x21D4 when 0xDC; array_enc << 0x21D0 when 0xDD; array_enc << 0x21D1 when 0xDE; array_enc << 0x21D2 when 0xDF; array_enc << 0x21D3 when 0xE0; array_enc << 0x25CA when 0xE1; array_enc << 0x2329 when 0xE2; array_enc << 0xF8E8 when 0xE3; array_enc << 0xF8E9 when 0xE4; array_enc << 0xF8EA when 0xE5; array_enc << 0x2211 when 0xE6; array_enc << 0xF8EB when 0xE7; array_enc << 0xF8EC when 0xE8; array_enc << 0xF8ED when 0xE9; array_enc << 0xF8EE when 0xEA; array_enc << 0xF8EF when 0xEB; array_enc << 0xF8F0 when 0xEC; array_enc << 0xF8F1 when 0xED; array_enc << 0xF8F2 when 0xEE; array_enc << 0xF8F3 when 0xEF; array_enc << 0xF8F4 when 0xF1; array_enc << 0x232A when 0xF2; array_enc << 0x222B when 0xF3; array_enc << 0x2320 when 0xF4; array_enc << 0xF8F5 when 0xF5; array_enc << 0x2321 when 0xF6; array_enc << 0xF8F6 when 0xF7; array_enc << 0xF8F7 when 0xF8; array_enc << 0xF8F8 when 0xF9; array_enc << 0xF8F9 when 0xFA; array_enc << 0xF8FA when 0xFB; array_enc << 0xF8FB when 0xFC; array_enc << 0xF8FC when 0xFD; array_enc << 0xF8FD when 0xFE; array_enc << 0xF8FE else array_enc << num end end end # replace charcters that didn't convert to unicode nicely with something valid array_enc.collect! { |c| c ? c : PDF::Reader::Encoding::UNKNOWN_CHAR } # convert any glyph names to unicode codepoints array_enc = self.process_glyphnames(array_enc) # pack all our Unicode codepoints into a UTF-8 string ret = array_enc.pack("U*") # set the strings encoding correctly under ruby 1.9+ ret.force_encoding("UTF-8") if ret.respond_to?(:force_encoding) return ret end