Class: PDF::Reader::Encoding::ZapfDingbatsEncoding

Inherits:
PDF::Reader::Encoding show all
Defined in:
lib/pdf/reader/encoding.rb

Constant Summary

Constants inherited from PDF::Reader::Encoding

UNKNOWN_CHAR

Instance Attribute Summary

Attributes inherited from PDF::Reader::Encoding

#differences

Instance Method Summary collapse

Methods inherited from PDF::Reader::Encoding

factory

Instance Method Details

#to_utf8(str, tounicode = nil) ⇒ Object

convert a ZapfDingbatsEncoding string into UTF-8



811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
# File 'lib/pdf/reader/encoding.rb', line 811

def to_utf8(str, tounicode = nil)
  # mapping to unicode taken from:
  #   http://unicode.org/Public/MAPPINGS/VENDORS/ADOBE/zdingbat.txt
  array_symbol = str.unpack('C*')
  array_symbol = self.process_differences(array_symbol)
  array_enc = []
  array_symbol.each do |num|
    case num
    when 0x21; array_enc << 0x2701
    when 0x22; array_enc << 0x2702
    when 0x23; array_enc << 0x2703
    when 0x24; array_enc << 0x2704
    when 0x25; array_enc << 0x260E
    when 0x26; array_enc << 0x2706
    when 0x27; array_enc << 0x2707
    when 0x28; array_enc << 0x2708
    when 0x29; array_enc << 0x2709
    when 0x2A; array_enc << 0x261B
    when 0x2B; array_enc << 0x261E
    when 0x2C; array_enc << 0x270C
    when 0x2D; array_enc << 0x270D
    when 0x2E; array_enc << 0x270E
    when 0x2F; array_enc << 0x270F
    when 0x30; array_enc << 0x2710
    when 0x31; array_enc << 0x2711
    when 0x32; array_enc << 0x2712
    when 0x33; array_enc << 0x2713
    when 0x34; array_enc << 0x2714
    when 0x35; array_enc << 0x2715
    when 0x36; array_enc << 0x2716
    when 0x37; array_enc << 0x2717
    when 0x38; array_enc << 0x2718
    when 0x39; array_enc << 0x2719
    when 0x3A; array_enc << 0x271A
    when 0x3B; array_enc << 0x271B
    when 0x3C; array_enc << 0x271C
    when 0x3D; array_enc << 0x271D
    when 0x3E; array_enc << 0x271E
    when 0x3F; array_enc << 0x271E
    when 0x40; array_enc << 0x2720
    when 0x41; array_enc << 0x2721
    when 0x42; array_enc << 0x2722
    when 0x43; array_enc << 0x2723
    when 0x44; array_enc << 0x2724
    when 0x45; array_enc << 0x2725
    when 0x46; array_enc << 0x2726
    when 0x47; array_enc << 0x2727
    when 0x48; array_enc << 0x2605
    when 0x49; array_enc << 0x2729
    when 0x4A; array_enc << 0x272A
    when 0x4B; array_enc << 0x272B
    when 0x4C; array_enc << 0x272C
    when 0x4D; array_enc << 0x272D
    when 0x4E; array_enc << 0x272E
    when 0x4F; array_enc << 0x272F
    when 0x50; array_enc << 0x2730
    when 0x51; array_enc << 0x2731
    when 0x52; array_enc << 0x2732
    when 0x53; array_enc << 0x2733
    when 0x54; array_enc << 0x2734
    when 0x55; array_enc << 0x2735
    when 0x56; array_enc << 0x2736
    when 0x57; array_enc << 0x2737
    when 0x58; array_enc << 0x2738
    when 0x59; array_enc << 0x2739
    when 0x5A; array_enc << 0x273A
    when 0x5B; array_enc << 0x273B
    when 0x5C; array_enc << 0x273C
    when 0x5D; array_enc << 0x273D
    when 0x5E; array_enc << 0x273E
    when 0x5F; array_enc << 0x273F
    when 0x60; array_enc << 0x2740
    when 0x61; array_enc << 0x2741
    when 0x62; array_enc << 0x2742
    when 0x63; array_enc << 0x2743
    when 0x64; array_enc << 0x2744
    when 0x65; array_enc << 0x2745
    when 0x66; array_enc << 0x2746
    when 0x67; array_enc << 0x2747
    when 0x68; array_enc << 0x2748
    when 0x69; array_enc << 0x2749
    when 0x6A; array_enc << 0x274A
    when 0x6B; array_enc << 0x274B
    when 0x6C; array_enc << 0x25CF
    when 0x6D; array_enc << 0x274D
    when 0x6E; array_enc << 0x25A0
    when 0x6F; array_enc << 0x274F
    when 0x70; array_enc << 0x2750
    when 0x71; array_enc << 0x2751
    when 0x72; array_enc << 0x2752
    when 0x73; array_enc << 0x2753
    when 0x74; array_enc << 0x2754
    when 0x75; array_enc << 0x2755
    when 0x76; array_enc << 0x2756
    when 0x77; array_enc << 0x2757
    when 0x78; array_enc << 0x2758
    when 0x79; array_enc << 0x2759
    when 0x7A; array_enc << 0x275A
    when 0x7B; array_enc << 0x275B
    when 0x7C; array_enc << 0x275C
    when 0x7D; array_enc << 0x275D
    when 0x7E; array_enc << 0x275E
    when 0x80; array_enc << 0xF8D7
    when 0x81; array_enc << 0xF8D8
    when 0x82; array_enc << 0xF8D9
    when 0x83; array_enc << 0xF8DA
    when 0x84; array_enc << 0xF8DB
    when 0x85; array_enc << 0xF8DC
    when 0x86; array_enc << 0xF8DD
    when 0x87; array_enc << 0xF8DE
    when 0x88; array_enc << 0xF8DF
    when 0x89; array_enc << 0xF8E0
    when 0x8A; array_enc << 0xF8E1
    when 0x8B; array_enc << 0xF8E2
    when 0x8C; array_enc << 0xF8E3
    when 0x8D; array_enc << 0xF8E4
    when 0xA1; array_enc << 0x2761
    when 0xA2; array_enc << 0x2762
    when 0xA3; array_enc << 0x2763
    when 0xA4; array_enc << 0x2764
    when 0xA5; array_enc << 0x2765
    when 0xA6; array_enc << 0x2766
    when 0xA7; array_enc << 0x2767
    when 0xA8; array_enc << 0x2663
    when 0xA9; array_enc << 0x2666
    when 0xAA; array_enc << 0x2665
    when 0xAB; array_enc << 0x2660
    when 0xAC; array_enc << 0x2460
    when 0xAD; array_enc << 0x2461
    when 0xAE; array_enc << 0x2462
    when 0xAF; array_enc << 0x2463
    when 0xB0; array_enc << 0x2464
    when 0xB1; array_enc << 0x2465
    when 0xB2; array_enc << 0x2466
    when 0xB3; array_enc << 0x2467
    when 0xB4; array_enc << 0x2468
    when 0xB5; array_enc << 0x2469
    when 0xB6; array_enc << 0x2776
    when 0xB7; array_enc << 0x2777
    when 0xB8; array_enc << 0x2778
    when 0xB9; array_enc << 0x2779
    when 0xBA; array_enc << 0x277A
    when 0xBB; array_enc << 0x277B
    when 0xBC; array_enc << 0x277C
    when 0xBD; array_enc << 0x277D
    when 0xBE; array_enc << 0x277E
    when 0xBF; array_enc << 0x277F
    when 0xC0; array_enc << 0x2780
    when 0xC1; array_enc << 0x2781
    when 0xC2; array_enc << 0x2782
    when 0xC3; array_enc << 0x2783
    when 0xC4; array_enc << 0x2784
    when 0xC5; array_enc << 0x2785
    when 0xC6; array_enc << 0x2786
    when 0xC7; array_enc << 0x2787
    when 0xC8; array_enc << 0x2788
    when 0xC9; array_enc << 0x2789
    when 0xCA; array_enc << 0x278A
    when 0xCB; array_enc << 0x278B
    when 0xCC; array_enc << 0x278C
    when 0xCD; array_enc << 0x278D
    when 0xCE; array_enc << 0x278E
    when 0xCF; array_enc << 0x278F
    when 0xD0; array_enc << 0x2790
    when 0xD1; array_enc << 0x2791
    when 0xD2; array_enc << 0x2792
    when 0xD3; array_enc << 0x2793
    when 0xD4; array_enc << 0x2794
    when 0xD5; array_enc << 0x2795
    when 0xD6; array_enc << 0x2796
    when 0xD7; array_enc << 0x2797
    when 0xD8; array_enc << 0x2798
    when 0xD9; array_enc << 0x2799
    when 0xDA; array_enc << 0x279A
    when 0xDB; array_enc << 0x279B
    when 0xDC; array_enc << 0x279C
    when 0xDD; array_enc << 0x279D
    when 0xDE; array_enc << 0x279E
    when 0xDF; array_enc << 0x279F
    when 0xE0; array_enc << 0x27A0
    when 0xE1; array_enc << 0x27A1
    when 0xE2; array_enc << 0x27A2
    when 0xE3; array_enc << 0x27A3
    when 0xE4; array_enc << 0x27A4
    when 0xE5; array_enc << 0x27A5
    when 0xE6; array_enc << 0x27A6
    when 0xE7; array_enc << 0x27A7
    when 0xE8; array_enc << 0x27A8
    when 0xE9; array_enc << 0x27A9
    when 0xEA; array_enc << 0x27AA
    when 0xEB; array_enc << 0x27AB
    when 0xEC; array_enc << 0x27AC
    when 0xED; array_enc << 0x27AD
    when 0xEE; array_enc << 0x27AE
    when 0xEF; array_enc << 0x27AF
    when 0xF1; array_enc << 0x27B1
    when 0xF2; array_enc << 0x27B2
    when 0xF3; array_enc << 0x27B3
    when 0xF4; array_enc << 0x27B4
    when 0xF5; array_enc << 0x27B5
    when 0xF6; array_enc << 0x27B6
    when 0xF7; array_enc << 0x27B7
    when 0xF8; array_enc << 0x27B8
    when 0xF9; array_enc << 0x27B9
    when 0xFA; array_enc << 0x27BA
    when 0xFB; array_enc << 0x27BB
    when 0xFC; array_enc << 0x27BC
    when 0xFD; array_enc << 0x27BD
    when 0xFE; array_enc << 0x27BE
    else
      array_enc << num
    end
  end

  # convert any glyph names to unicode codepoints
  array_enc = self.process_glyphnames(array_enc)

  # replace charcters that didn't convert to unicode nicely with something valid
  array_enc.collect! { |c| c ? c : PDF::Reader::Encoding::UNKNOWN_CHAR }

  # 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