eideticpdf 0.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. data/fonts/AntiqueOlive-Bold.afm +406 -0
  2. data/fonts/AntiqueOlive-Bold.inf +27 -0
  3. data/fonts/AntiqueOlive-Compact.afm +401 -0
  4. data/fonts/AntiqueOlive-Compact.inf +27 -0
  5. data/fonts/AntiqueOlive-Italic.afm +401 -0
  6. data/fonts/AntiqueOlive-Italic.inf +27 -0
  7. data/fonts/AntiqueOlive-Roman.afm +409 -0
  8. data/fonts/AntiqueOlive-Roman.inf +27 -0
  9. data/fonts/AvantGarde-Book.afm +667 -0
  10. data/fonts/AvantGarde-Book.inf +26 -0
  11. data/fonts/AvantGarde-BookOblique.afm +667 -0
  12. data/fonts/AvantGarde-BookOblique.inf +26 -0
  13. data/fonts/AvantGarde-Demi.afm +673 -0
  14. data/fonts/AvantGarde-Demi.inf +26 -0
  15. data/fonts/AvantGarde-DemiOblique.afm +673 -0
  16. data/fonts/AvantGarde-DemiOblique.inf +26 -0
  17. data/fonts/Bookman-Demi.afm +669 -0
  18. data/fonts/Bookman-Demi.inf +25 -0
  19. data/fonts/Bookman-DemiItalic.afm +669 -0
  20. data/fonts/Bookman-DemiItalic.inf +25 -0
  21. data/fonts/Bookman-Light.afm +643 -0
  22. data/fonts/Bookman-Light.inf +25 -0
  23. data/fonts/Bookman-LightItalic.afm +620 -0
  24. data/fonts/Bookman-LightItalic.inf +25 -0
  25. data/fonts/Clarendon-Bold.afm +412 -0
  26. data/fonts/Clarendon-Bold.inf +27 -0
  27. data/fonts/Clarendon-Light.afm +410 -0
  28. data/fonts/Clarendon-Light.inf +27 -0
  29. data/fonts/Clarendon.afm +410 -0
  30. data/fonts/Clarendon.inf +27 -0
  31. data/fonts/CooperBlack-Italic.afm +421 -0
  32. data/fonts/CooperBlack-Italic.inf +26 -0
  33. data/fonts/CooperBlack.afm +427 -0
  34. data/fonts/CooperBlack.inf +26 -0
  35. data/fonts/Coronet-Regular.afm +327 -0
  36. data/fonts/Coronet-Regular.inf +25 -0
  37. data/fonts/Courier-Bold.afm +342 -0
  38. data/fonts/Courier-Bold.inf +26 -0
  39. data/fonts/Courier-BoldOblique.afm +342 -0
  40. data/fonts/Courier-BoldOblique.inf +26 -0
  41. data/fonts/Courier-Oblique.afm +342 -0
  42. data/fonts/Courier-Oblique.inf +26 -0
  43. data/fonts/Courier.afm +342 -0
  44. data/fonts/Courier.inf +26 -0
  45. data/fonts/Eurostile.afm +419 -0
  46. data/fonts/Eurostile.inf +27 -0
  47. data/fonts/Goudy-ExtraBold.afm +412 -0
  48. data/fonts/Goudy-ExtraBold.inf +27 -0
  49. data/fonts/Helvetica-Bold.afm +2827 -0
  50. data/fonts/Helvetica-Bold.inf +26 -0
  51. data/fonts/Helvetica-BoldOblique.afm +2827 -0
  52. data/fonts/Helvetica-BoldOblique.inf +26 -0
  53. data/fonts/Helvetica-Condensed-Bold.afm +623 -0
  54. data/fonts/Helvetica-Condensed-Bold.inf +25 -0
  55. data/fonts/Helvetica-Condensed-BoldObl.afm +623 -0
  56. data/fonts/Helvetica-Condensed-BoldObl.inf +25 -0
  57. data/fonts/Helvetica-Condensed-Oblique.afm +528 -0
  58. data/fonts/Helvetica-Condensed-Oblique.inf +25 -0
  59. data/fonts/Helvetica-Condensed.afm +528 -0
  60. data/fonts/Helvetica-Condensed.inf +25 -0
  61. data/fonts/Helvetica-Narrow-Bold.afm +1439 -0
  62. data/fonts/Helvetica-Narrow-Bold.inf +26 -0
  63. data/fonts/Helvetica-Narrow-BoldOblique.afm +1439 -0
  64. data/fonts/Helvetica-Narrow-BoldOblique.inf +26 -0
  65. data/fonts/Helvetica-Narrow-Oblique.afm +1556 -0
  66. data/fonts/Helvetica-Narrow-Oblique.inf +26 -0
  67. data/fonts/Helvetica-Narrow.afm +1556 -0
  68. data/fonts/Helvetica-Narrow.inf +26 -0
  69. data/fonts/Helvetica-Oblique.afm +3051 -0
  70. data/fonts/Helvetica-Oblique.inf +26 -0
  71. data/fonts/Helvetica.afm +3051 -0
  72. data/fonts/Helvetica.inf +26 -0
  73. data/fonts/LetterGothic-Bold.afm +443 -0
  74. data/fonts/LetterGothic-Bold.inf +26 -0
  75. data/fonts/LetterGothic-BoldSlanted.afm +443 -0
  76. data/fonts/LetterGothic-BoldSlanted.inf +26 -0
  77. data/fonts/LetterGothic-Slanted.afm +443 -0
  78. data/fonts/LetterGothic-Slanted.inf +26 -0
  79. data/fonts/LetterGothic.afm +443 -0
  80. data/fonts/LetterGothic.inf +26 -0
  81. data/fonts/LubalinGraph-Book.afm +351 -0
  82. data/fonts/LubalinGraph-Book.inf +25 -0
  83. data/fonts/LubalinGraph-BookOblique.afm +351 -0
  84. data/fonts/LubalinGraph-BookOblique.inf +25 -0
  85. data/fonts/LubalinGraph-Demi.afm +351 -0
  86. data/fonts/LubalinGraph-Demi.inf +25 -0
  87. data/fonts/LubalinGraph-DemiOblique.afm +351 -0
  88. data/fonts/LubalinGraph-DemiOblique.inf +25 -0
  89. data/fonts/Marigold.afm +491 -0
  90. data/fonts/Marigold.inf +27 -0
  91. data/fonts/MonaLisa-Recut.afm +663 -0
  92. data/fonts/MonaLisa-Recut.inf +27 -0
  93. data/fonts/NewCenturySchlbk-Bold.afm +886 -0
  94. data/fonts/NewCenturySchlbk-Bold.inf +25 -0
  95. data/fonts/NewCenturySchlbk-BoldItalic.afm +1521 -0
  96. data/fonts/NewCenturySchlbk-BoldItalic.inf +26 -0
  97. data/fonts/NewCenturySchlbk-Italic.afm +1113 -0
  98. data/fonts/NewCenturySchlbk-Italic.inf +26 -0
  99. data/fonts/NewCenturySchlbk-Roman.afm +1067 -0
  100. data/fonts/NewCenturySchlbk-Roman.inf +26 -0
  101. data/fonts/Optima-Bold.afm +515 -0
  102. data/fonts/Optima-Bold.inf +27 -0
  103. data/fonts/Optima-BoldItalic.afm +712 -0
  104. data/fonts/Optima-BoldItalic.inf +26 -0
  105. data/fonts/Optima-Italic.afm +737 -0
  106. data/fonts/Optima-Italic.inf +26 -0
  107. data/fonts/Optima.afm +501 -0
  108. data/fonts/Optima.inf +27 -0
  109. data/fonts/Palatino-Bold.afm +675 -0
  110. data/fonts/Palatino-Bold.inf +26 -0
  111. data/fonts/Palatino-BoldItalic.afm +702 -0
  112. data/fonts/Palatino-BoldItalic.inf +26 -0
  113. data/fonts/Palatino-Italic.afm +700 -0
  114. data/fonts/Palatino-Italic.inf +26 -0
  115. data/fonts/Palatino-Roman.afm +718 -0
  116. data/fonts/Palatino-Roman.inf +26 -0
  117. data/fonts/StempelGaramond-Bold.afm +412 -0
  118. data/fonts/StempelGaramond-Bold.inf +27 -0
  119. data/fonts/StempelGaramond-BoldItalic.afm +413 -0
  120. data/fonts/StempelGaramond-BoldItalic.inf +27 -0
  121. data/fonts/StempelGaramond-Italic.afm +413 -0
  122. data/fonts/StempelGaramond-Italic.inf +27 -0
  123. data/fonts/StempelGaramond-Roman.afm +412 -0
  124. data/fonts/StempelGaramond-Roman.inf +27 -0
  125. data/fonts/Symbol.afm +213 -0
  126. data/fonts/Symbol.inf +27 -0
  127. data/fonts/Times-Bold.afm +2588 -0
  128. data/fonts/Times-Bold.inf +26 -0
  129. data/fonts/Times-BoldItalic.afm +2384 -0
  130. data/fonts/Times-BoldItalic.inf +26 -0
  131. data/fonts/Times-Italic.afm +2667 -0
  132. data/fonts/Times-Italic.inf +26 -0
  133. data/fonts/Times-Roman.afm +2419 -0
  134. data/fonts/Times-Roman.inf +26 -0
  135. data/fonts/Univers-Bold.afm +712 -0
  136. data/fonts/Univers-Bold.inf +27 -0
  137. data/fonts/Univers-BoldOblique.afm +712 -0
  138. data/fonts/Univers-BoldOblique.inf +27 -0
  139. data/fonts/Univers-Condensed.afm +403 -0
  140. data/fonts/Univers-Condensed.inf +27 -0
  141. data/fonts/Univers-CondensedOblique.afm +403 -0
  142. data/fonts/Univers-CondensedOblique.inf +27 -0
  143. data/fonts/Univers-Light.afm +737 -0
  144. data/fonts/Univers-Light.inf +27 -0
  145. data/fonts/Univers-LightOblique.afm +737 -0
  146. data/fonts/Univers-LightOblique.inf +27 -0
  147. data/fonts/Univers-Oblique.afm +656 -0
  148. data/fonts/Univers-Oblique.inf +27 -0
  149. data/fonts/Univers.afm +656 -0
  150. data/fonts/Univers.inf +27 -0
  151. data/fonts/ZapfChancery-MediumItalic.afm +842 -0
  152. data/fonts/ZapfChancery-MediumItalic.inf +26 -0
  153. data/fonts/ZapfDingbats.afm +225 -0
  154. data/fonts/ZapfDingbats.inf +26 -0
  155. data/lib/epdfafm.rb +334 -0
  156. data/lib/epdfdw.rb +710 -0
  157. data/lib/epdfk.rb +3142 -0
  158. data/lib/epdfo.rb +882 -0
  159. data/lib/epdfpw.rb +1749 -0
  160. data/lib/epdfs.rb +101 -0
  161. data/lib/epdfsw.rb +267 -0
  162. data/lib/epdft.rb +145 -0
  163. data/lib/epdftt.rb +458 -0
  164. data/test/pdf_tests.rb +16 -0
  165. data/test/test.rb +816 -0
  166. data/test/test_epdfafm.rb +202 -0
  167. data/test/test_epdfdw.rb +369 -0
  168. data/test/test_epdfk.rb +47 -0
  169. data/test/test_epdfo.rb +762 -0
  170. data/test/test_epdfpw.rb +129 -0
  171. data/test/test_epdfs.rb +54 -0
  172. data/test/test_epdfsw.rb +314 -0
  173. data/test/test_epdft.rb +198 -0
  174. data/test/test_epdftt.rb +34 -0
  175. data/test/test_helpers.rb +18 -0
  176. data/test/testimg.jpg +0 -0
  177. metadata +247 -0
@@ -0,0 +1,26 @@
1
+ FontName (ZapfChancery-MediumItalic)
2
+ FullName (ITC Zapf Chancery Medium Italic)
3
+ AppleName (Zapf Chancery)
4
+ AppleFONDID 18
5
+ FamilyName (ITC Zapf Chancery)
6
+ version (002.000)
7
+ isFixedPitch false
8
+ CharacterSet (isoadobe)
9
+ Encoding (StandardEncoding)
10
+ ItalicAngle -14
11
+ CapHeight 594
12
+ UnderlinePosition -100
13
+ UnderlineThickness 50
14
+ StemWidth 70
15
+ Serif true
16
+ Pi false
17
+ SuperiorBaseline 244
18
+ MSMenuName (ZapfChancery)
19
+ VPMenuName (Zapf Chancery)
20
+ WORDMenuName (ZapfChancery)
21
+ VPTypefaceID 29
22
+ VPStyle (N)
23
+ PCFileNamePrefix (ZCMI_)
24
+ PCLTypefaceID 20523
25
+ PCLStrokeWeight 0
26
+ PCLStyle 1
@@ -0,0 +1,225 @@
1
+ StartFontMetrics 4.1
2
+ Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.
3
+ Comment Creation Date: Thu May 1 15:14:13 1997
4
+ Comment UniqueID 43082
5
+ Comment VMusage 45775 55535
6
+ FontName ZapfDingbats
7
+ FullName ITC Zapf Dingbats
8
+ FamilyName ZapfDingbats
9
+ Weight Medium
10
+ ItalicAngle 0
11
+ IsFixedPitch false
12
+ CharacterSet Special
13
+ FontBBox -1 -143 981 820
14
+ UnderlinePosition -100
15
+ UnderlineThickness 50
16
+ Version 002.000
17
+ Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.
18
+ EncodingScheme FontSpecific
19
+ StdHW 28
20
+ StdVW 90
21
+ StartCharMetrics 202
22
+ C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
23
+ C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;
24
+ C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;
25
+ C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;
26
+ C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;
27
+ C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;
28
+ C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;
29
+ C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;
30
+ C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;
31
+ C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ;
32
+ C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;
33
+ C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;
34
+ C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;
35
+ C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;
36
+ C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;
37
+ C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;
38
+ C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;
39
+ C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;
40
+ C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;
41
+ C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;
42
+ C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;
43
+ C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;
44
+ C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;
45
+ C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;
46
+ C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;
47
+ C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;
48
+ C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;
49
+ C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;
50
+ C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;
51
+ C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;
52
+ C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;
53
+ C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;
54
+ C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;
55
+ C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;
56
+ C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;
57
+ C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;
58
+ C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;
59
+ C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;
60
+ C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;
61
+ C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;
62
+ C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;
63
+ C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;
64
+ C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;
65
+ C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;
66
+ C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;
67
+ C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;
68
+ C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;
69
+ C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;
70
+ C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;
71
+ C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;
72
+ C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;
73
+ C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;
74
+ C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;
75
+ C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;
76
+ C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;
77
+ C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;
78
+ C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;
79
+ C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;
80
+ C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;
81
+ C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;
82
+ C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;
83
+ C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;
84
+ C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;
85
+ C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;
86
+ C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;
87
+ C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;
88
+ C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;
89
+ C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;
90
+ C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;
91
+ C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;
92
+ C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;
93
+ C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;
94
+ C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;
95
+ C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;
96
+ C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;
97
+ C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;
98
+ C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;
99
+ C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;
100
+ C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;
101
+ C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;
102
+ C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;
103
+ C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;
104
+ C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;
105
+ C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;
106
+ C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;
107
+ C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;
108
+ C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;
109
+ C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;
110
+ C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;
111
+ C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;
112
+ C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;
113
+ C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;
114
+ C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;
115
+ C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;
116
+ C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;
117
+ C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ;
118
+ C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ;
119
+ C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ;
120
+ C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ;
121
+ C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ;
122
+ C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ;
123
+ C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ;
124
+ C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ;
125
+ C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ;
126
+ C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ;
127
+ C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ;
128
+ C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ;
129
+ C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ;
130
+ C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ;
131
+ C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;
132
+ C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;
133
+ C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;
134
+ C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;
135
+ C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;
136
+ C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;
137
+ C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;
138
+ C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;
139
+ C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;
140
+ C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;
141
+ C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;
142
+ C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;
143
+ C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;
144
+ C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;
145
+ C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;
146
+ C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;
147
+ C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;
148
+ C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;
149
+ C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;
150
+ C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;
151
+ C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;
152
+ C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;
153
+ C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;
154
+ C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;
155
+ C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;
156
+ C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;
157
+ C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;
158
+ C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;
159
+ C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;
160
+ C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;
161
+ C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;
162
+ C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;
163
+ C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;
164
+ C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;
165
+ C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;
166
+ C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;
167
+ C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;
168
+ C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;
169
+ C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;
170
+ C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;
171
+ C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;
172
+ C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;
173
+ C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;
174
+ C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;
175
+ C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;
176
+ C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;
177
+ C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;
178
+ C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;
179
+ C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;
180
+ C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;
181
+ C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;
182
+ C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;
183
+ C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;
184
+ C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;
185
+ C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;
186
+ C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;
187
+ C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;
188
+ C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;
189
+ C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;
190
+ C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;
191
+ C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;
192
+ C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;
193
+ C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;
194
+ C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;
195
+ C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;
196
+ C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;
197
+ C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;
198
+ C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;
199
+ C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;
200
+ C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;
201
+ C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;
202
+ C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;
203
+ C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;
204
+ C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;
205
+ C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;
206
+ C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;
207
+ C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;
208
+ C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;
209
+ C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;
210
+ C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;
211
+ C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;
212
+ C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;
213
+ C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;
214
+ C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;
215
+ C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;
216
+ C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;
217
+ C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;
218
+ C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;
219
+ C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;
220
+ C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;
221
+ C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;
222
+ C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;
223
+ C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;
224
+ EndCharMetrics
225
+ EndFontMetrics
@@ -0,0 +1,26 @@
1
+ FontName (ZapfDingbats)
2
+ FullName (ITC Zapf Dingbats)
3
+ AppleName (Zapf Dingbats)
4
+ AppleFONDID 13
5
+ FamilyName (ITC Zapf Dingbats)
6
+ version (002.000)
7
+ isFixedPitch false
8
+ CharacterSet (charset)
9
+ Encoding (encoding.ps)
10
+ ItalicAngle 0
11
+ CapHeight 692
12
+ UnderlinePosition -100
13
+ UnderlineThickness 50
14
+ StemWidth 90
15
+ Serif false
16
+ Pi true
17
+ MSMenuName (ZapfDingbats)
18
+ VPMenuName (Zapf Dingbats)
19
+ WORDMenuName (ZapfDingbats)
20
+ VPTypefaceID 129
21
+ VPStyle (N)
22
+ PCFileNamePrefix (ZD___)
23
+ PCLTypefaceID 20525
24
+ PCLStrokeWeight 0
25
+ PCLStyle 0
26
+ PCLSymbolSet 10L
data/lib/epdfafm.rb ADDED
@@ -0,0 +1,334 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: ASCII-8BIT
3
+ #
4
+ # Created by Brent Rowland on 2007-12-18.
5
+ # Copyright (c) 2007, Eidetic Software. All rights reserved.
6
+
7
+ require 'epdfk'
8
+ require 'epdfo'
9
+ require 'epdfs'
10
+
11
+ module EideticPDF
12
+ module AFM # :nodoc: all
13
+ # AfmChar = Struct.new(:code, :name, :w0x, :w1x, :w0y, :w1y, :w0, :w1, :vv, :b, :l)
14
+ AfmChar = Struct.new(:code, :name, :width)
15
+ FontPath = [File.join(File.dirname(__FILE__), '..', 'fonts')]
16
+
17
+ class Codepoints
18
+ def self.for_encoding(encoding)
19
+ require 'iconv'
20
+ encoding = 'CP1252' if encoding == 'WinAnsiEncoding'
21
+ @@codepoints_by_encoding ||= {}
22
+ @@codepoints_by_encoding[encoding] ||= Iconv.open("UCS-2BE//IGNORE", encoding) do |ic|
23
+ (0..255).map { |c| ic.iconv(c.chr) }.map { |s| s.unpack('n') }.map { |a| a.first }
24
+ end
25
+ end
26
+ end
27
+
28
+ class Glyphs
29
+ def self.for_codepoints(codepoints)
30
+ codepoints.map { |codepoint| PdfK::glyph_name(codepoint) }
31
+ end
32
+
33
+ def self.for_encoding(encoding)
34
+ @@glyphs_by_encoding ||= {}
35
+ @@glyphs_by_encoding[encoding] ||= for_codepoints(Codepoints.for_encoding(encoding))
36
+ end
37
+
38
+ def self.widths_for_glyphs(glyphs, chars_by_name)
39
+ glyphs.map { |glyph| (ch = chars_by_name[glyph]) ? ch.width : 0 }
40
+ end
41
+
42
+ def self.widths_for_encoding(encoding, chars_by_name)
43
+ widths_for_glyphs(for_encoding(encoding), chars_by_name)
44
+ end
45
+
46
+ def self.differences_for_encodings(encoding1, encoding2)
47
+ @@glyph_differences_for_encodings ||= {}
48
+ key = "#{encoding1}-#{encoding2}"
49
+ result = @@glyph_differences_for_encodings[key]
50
+ if result.nil?
51
+ glyphs1, glyphs2 = for_encoding(encoding1), for_encoding(encoding2)
52
+ diffs = []
53
+ same = true
54
+ 1.upto(255) do |i|
55
+ if same
56
+ if (glyphs1[i] != glyphs2[i]) and !glyphs2[i].nil?
57
+ same = false
58
+ diffs << PdfObjects::PdfInteger.new(i)
59
+ diffs << PdfObjects::PdfName.new(glyphs2[i])
60
+ end
61
+ else
62
+ if glyphs1[i] == glyphs2[i]
63
+ same = true
64
+ else
65
+ diffs << PdfObjects::PdfName.new(glyphs2[i])
66
+ end
67
+ end
68
+ end
69
+ result = @@glyph_differences_for_encodings[key] = PdfObjects::PdfArray.new(diffs)
70
+ end
71
+ result
72
+ end
73
+ end
74
+
75
+ class AdobeFontMetrics
76
+ FixedPitch = 0x01
77
+ Serif = 0x02
78
+ Symbolic = 0x04
79
+ Script = 0x08
80
+ NonSymbolic = 0x20
81
+ Italic = 0x40
82
+ AllCap = 0x10000
83
+ SmallCap = 0x20000
84
+ ForceBold = 0x40000
85
+
86
+ attr_reader :font_name, :full_name, :family_name, :weight, :italic_angle, :is_fixed_pitch
87
+ attr_reader :font_b_box, :underline_position, :underline_thickness, :missing_width, :leading
88
+ attr_reader :version, :notice
89
+ attr_reader :character_set, :encoding_scheme
90
+ attr_reader :cap_height, :x_height, :ascender, :descender, :std_h_w, :std_v_w, :serif
91
+ attr_reader :chars_by_name, :chars_by_code
92
+
93
+ def load_afm(lines)
94
+ lines.each do |line|
95
+ break if @kern_data_started
96
+ if @char_metrics_started
97
+ load_char_metrics(line)
98
+ else
99
+ load_line(line)
100
+ end
101
+ end
102
+ # symbolic fonts don't specify ascender and descender, so default to reasonable numbers.
103
+ @ascender ||= 750
104
+ @descender ||= -188
105
+ @missing_width = 0 # for CJK charsets only?
106
+ @leading = 0 # for CJK charsets only?
107
+ self
108
+ end
109
+
110
+ def load_inf(lines)
111
+ lines.grep(/^Serif/).each do |line|
112
+ load_line(line)
113
+ end
114
+ self
115
+ end
116
+
117
+ def flags
118
+ @flags = 0
119
+ @flags |= FixedPitch if @is_fixed_pitch
120
+ @flags |= Serif if @serif
121
+ if ['Symbol','ZapfDingbats'].include?(@family_name)
122
+ @flags |= Symbolic
123
+ else
124
+ @flags |= NonSymbolic
125
+ end
126
+ # TODO: detect Script
127
+ @flags |= Italic if @italic_angle != 0
128
+ @flags |= ForceBold if @weight =~ /Bold|Demi/i
129
+ @flags
130
+ end
131
+
132
+ def italic
133
+ @italic_angle != 0
134
+ end
135
+
136
+ def needs_descriptor(encoding)
137
+ if encoding_scheme == 'FontSpecific'
138
+ false
139
+ else
140
+ !(0...14).include?(PdfK::font_index(font_name)) || !PdfK::STANDARD_ENCODINGS.include?(encoding)
141
+ end
142
+ end
143
+
144
+ def differences(encoding)
145
+ if (encoding != :unicode) and needs_descriptor(encoding)
146
+ Glyphs.differences_for_encodings('WinAnsiEncoding', encoding)
147
+ else
148
+ false
149
+ end
150
+ end
151
+
152
+ def widths(encoding)
153
+ result = (@widths ||= {})[encoding]
154
+ if result.nil?
155
+ if encoding == :unicode
156
+ result = Hash.new(missing_width)
157
+ chars_by_name.each do |name, ch|
158
+ results[PdfK::CODEPOINTS[name]] = ch.width
159
+ end
160
+ elsif encoding.nil? or encoding == 'StandardEncoding'
161
+ result = Array.new(256, 0)
162
+ chars_by_code.each do |ch|
163
+ result[ch.code] = ch.width unless ch.nil?
164
+ end
165
+ else
166
+ result = Glyphs.widths_for_encoding(encoding, chars_by_name)
167
+ end
168
+ @widths[encoding] = result
169
+ end
170
+ result
171
+ end
172
+
173
+ def self.load(afm_file)
174
+ result = self.new
175
+ result.load_afm(IO.readlines(afm_file))
176
+ inf_file = afm_file.sub(/\.afm$/, '.inf')
177
+ result.load_inf(IO.readlines(inf_file)) if File.exist?(inf_file)
178
+ result
179
+ end
180
+
181
+ def self.find_font(full_name)
182
+ if full_name.is_a?(Regexp)
183
+ afm_cache.find { |afm| full_name =~ afm.font_name }
184
+ else
185
+ afm_cache.find { |afm| full_name.casecmp(afm.font_name) == 0 }
186
+ end
187
+ end
188
+
189
+ def self.find_fonts(options)
190
+ afm_cache.select do |afm|
191
+ options.all? do |key, value|
192
+ if value.respond_to?(:to_str)
193
+ value.casecmp(afm.send(key)) == 0
194
+ elsif value.is_a?(Regexp)
195
+ value =~ afm.send(key)
196
+ else
197
+ value == afm.send(key)
198
+ end
199
+ end
200
+ end
201
+ end
202
+
203
+ def self.afm_cache(reload=false)
204
+ return $afm_cache unless $afm_cache.nil? or reload
205
+ $afm_cache = []
206
+ FontPath.each do |path|
207
+ Dir[File.join(path, '*.afm')].each do |file|
208
+ $afm_cache << AdobeFontMetrics.load(file)
209
+ end
210
+ end
211
+ $afm_cache
212
+ end
213
+
214
+ protected
215
+ def load_line(line)
216
+ case line
217
+ when /^FontName\s+(.*)$/
218
+ @font_name = $1.chomp
219
+ when /^FullName\s+(.*)/
220
+ @full_name = $1.chomp
221
+ when /^FamilyName\s+(.*)/
222
+ @family_name = $1.chomp
223
+ when /^Weight\s+(\w+)/
224
+ @weight = $1
225
+ when /^ItalicAngle\s+(-?\d+(\.\d+)?)/
226
+ @italic_angle = $1.to_f
227
+ when /^IsFixedPitch\s+(\w+)/
228
+ @is_fixed_pitch = ($1 == 'true')
229
+ when /^CharacterSet\s+(\w+)/
230
+ @character_set = $1
231
+ when /^FontBBox((\s+-?\d+){4})/
232
+ @font_b_box = $1.split.map { |d| d.to_i }
233
+ when /^UnderlinePosition\s+(-?\d+)/
234
+ @underline_position = $1.to_i
235
+ when /^UnderlineThickness\s+(\d+)/
236
+ @underline_thickness = $1.to_i
237
+ when /^Version\s+(.*)/
238
+ @version = $1.chomp
239
+ when /^Notice\s+(.*)/
240
+ @notice = $1.chomp
241
+ when /^EncodingScheme\s+(\w+)/
242
+ @encoding_scheme = $1
243
+ when /^CapHeight\s+(\d+)/
244
+ @cap_height = $1.to_i
245
+ when /^XHeight\s+(\d+)/
246
+ @x_height = $1.to_i
247
+ when /^Ascender\s+(\d+)/
248
+ @ascender = $1.to_i
249
+ when /^Descender\s+(-?\d+)/
250
+ @descender = $1.to_i
251
+ when /^StdHW\s+(\d+)/
252
+ @std_h_w = $1.to_i
253
+ when /^StdVW\s+(\d+)/
254
+ @std_v_w = $1.to_i
255
+ when /^StartCharMetrics/
256
+ @chars_by_name = {}
257
+ @chars_by_code = []
258
+ @char_metrics_started = true
259
+ when /^Serif\s+(\w+)/
260
+ @serif = ($1 == 'true')
261
+ when /^StartKernData/
262
+ @kern_data_started = true
263
+ end
264
+ end
265
+
266
+ def load_char_metrics(line)
267
+ if line =~ /^EndCharMetrics/
268
+ @char_metrics_started = false
269
+ else
270
+ ch = AfmChar.new
271
+ if line =~ /^C\s+(-?\d+)\s*;\s*WX\s+(\d+)\s*;\s*N\s+(\w+)/
272
+ ch.code = $1.to_i
273
+ ch.width = $2.to_i
274
+ ch.name = $3
275
+ else
276
+ line.split(';').map { |kv| kv.strip }.each do |kv|
277
+ k, v = kv.split
278
+ case k
279
+ when 'C' then ch.code = v.to_i
280
+ when 'CH' then ch.code = v[1..-2].to_i(16)
281
+ when 'WX', 'W0X' then ch.width = v.to_i
282
+ when 'N' then ch.name = v
283
+ end
284
+ end
285
+ end
286
+ raise Exception.new("bad: #{kv}") if ch.name.nil? or ch.code.nil?
287
+ @chars_by_name[ch.name] = ch
288
+ # cbc1 = @chars_by_code.compact.size
289
+ @chars_by_code[ch.code] = ch if ch.code > 0
290
+ # cbc2 = @chars_by_code.compact.size
291
+ # raise Exception.new("trouble: #{line}") if cbc2 != cbc1 + 1 and ch.code > 0
292
+ end
293
+ end
294
+ end
295
+
296
+ def find_font(family, weight='', style='')
297
+ italic = (style =~ /Italic|Oblique/i) ? '(Italic|Obl(ique)?)' : ''
298
+ weight_style = "#{weight}#{italic}"
299
+ re_s = '^' + family
300
+ if weight_style.empty?
301
+ re_s << '(-Roman)?'
302
+ else
303
+ re_s << '-' << weight_style
304
+ end
305
+ re_s << '$'
306
+ re = Regexp.new(re_s, Regexp::IGNORECASE)
307
+ afm = AdobeFontMetrics.find_font(re)
308
+ end
309
+
310
+ def font_metrics(name, options={})
311
+ afm = find_font(name, options[:weight], options[:style])
312
+ raise Exception.new("Unknown font %s." % name) if afm.nil?
313
+ encoding = (afm.encoding_scheme == 'FontSpecific') ? nil : options[:encoding] || 'WinAnsiEncoding'
314
+ needs_descriptor = afm.needs_descriptor(encoding)
315
+ differences = afm.differences(encoding)
316
+ widths = afm.widths(encoding)
317
+ cwidths = widths.compact.extend(Statistics)
318
+ fm = PdfK::FontMetrics.new(needs_descriptor, widths, afm.ascender, afm.descender, afm.flags, afm.font_b_box, afm.missing_width,
319
+ afm.std_v_w, afm.std_h_w, afm.italic_angle, afm.cap_height, afm.x_height, afm.leading, cwidths.max, cwidths.mean.round,
320
+ afm.underline_position, afm.underline_thickness, differences)
321
+ fm
322
+ end
323
+
324
+ def font_weights(family_name)
325
+ AdobeFontMetrics.find_fonts(:family_name => family_name).map { |afm| afm.weight }.sort.uniq
326
+ end
327
+
328
+ def font_names(reload=false)
329
+ AdobeFontMetrics.afm_cache(reload).map { |afm| afm.font_name }
330
+ end
331
+
332
+ module_function :find_font, :font_metrics, :font_weights, :font_names
333
+ end
334
+ end