eideticpdf 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- data/fonts/AntiqueOlive-Bold.afm +406 -0
- data/fonts/AntiqueOlive-Bold.inf +27 -0
- data/fonts/AntiqueOlive-Compact.afm +401 -0
- data/fonts/AntiqueOlive-Compact.inf +27 -0
- data/fonts/AntiqueOlive-Italic.afm +401 -0
- data/fonts/AntiqueOlive-Italic.inf +27 -0
- data/fonts/AntiqueOlive-Roman.afm +409 -0
- data/fonts/AntiqueOlive-Roman.inf +27 -0
- data/fonts/AvantGarde-Book.afm +667 -0
- data/fonts/AvantGarde-Book.inf +26 -0
- data/fonts/AvantGarde-BookOblique.afm +667 -0
- data/fonts/AvantGarde-BookOblique.inf +26 -0
- data/fonts/AvantGarde-Demi.afm +673 -0
- data/fonts/AvantGarde-Demi.inf +26 -0
- data/fonts/AvantGarde-DemiOblique.afm +673 -0
- data/fonts/AvantGarde-DemiOblique.inf +26 -0
- data/fonts/Bookman-Demi.afm +669 -0
- data/fonts/Bookman-Demi.inf +25 -0
- data/fonts/Bookman-DemiItalic.afm +669 -0
- data/fonts/Bookman-DemiItalic.inf +25 -0
- data/fonts/Bookman-Light.afm +643 -0
- data/fonts/Bookman-Light.inf +25 -0
- data/fonts/Bookman-LightItalic.afm +620 -0
- data/fonts/Bookman-LightItalic.inf +25 -0
- data/fonts/Clarendon-Bold.afm +412 -0
- data/fonts/Clarendon-Bold.inf +27 -0
- data/fonts/Clarendon-Light.afm +410 -0
- data/fonts/Clarendon-Light.inf +27 -0
- data/fonts/Clarendon.afm +410 -0
- data/fonts/Clarendon.inf +27 -0
- data/fonts/CooperBlack-Italic.afm +421 -0
- data/fonts/CooperBlack-Italic.inf +26 -0
- data/fonts/CooperBlack.afm +427 -0
- data/fonts/CooperBlack.inf +26 -0
- data/fonts/Coronet-Regular.afm +327 -0
- data/fonts/Coronet-Regular.inf +25 -0
- data/fonts/Courier-Bold.afm +342 -0
- data/fonts/Courier-Bold.inf +26 -0
- data/fonts/Courier-BoldOblique.afm +342 -0
- data/fonts/Courier-BoldOblique.inf +26 -0
- data/fonts/Courier-Oblique.afm +342 -0
- data/fonts/Courier-Oblique.inf +26 -0
- data/fonts/Courier.afm +342 -0
- data/fonts/Courier.inf +26 -0
- data/fonts/Eurostile.afm +419 -0
- data/fonts/Eurostile.inf +27 -0
- data/fonts/Goudy-ExtraBold.afm +412 -0
- data/fonts/Goudy-ExtraBold.inf +27 -0
- data/fonts/Helvetica-Bold.afm +2827 -0
- data/fonts/Helvetica-Bold.inf +26 -0
- data/fonts/Helvetica-BoldOblique.afm +2827 -0
- data/fonts/Helvetica-BoldOblique.inf +26 -0
- data/fonts/Helvetica-Condensed-Bold.afm +623 -0
- data/fonts/Helvetica-Condensed-Bold.inf +25 -0
- data/fonts/Helvetica-Condensed-BoldObl.afm +623 -0
- data/fonts/Helvetica-Condensed-BoldObl.inf +25 -0
- data/fonts/Helvetica-Condensed-Oblique.afm +528 -0
- data/fonts/Helvetica-Condensed-Oblique.inf +25 -0
- data/fonts/Helvetica-Condensed.afm +528 -0
- data/fonts/Helvetica-Condensed.inf +25 -0
- data/fonts/Helvetica-Narrow-Bold.afm +1439 -0
- data/fonts/Helvetica-Narrow-Bold.inf +26 -0
- data/fonts/Helvetica-Narrow-BoldOblique.afm +1439 -0
- data/fonts/Helvetica-Narrow-BoldOblique.inf +26 -0
- data/fonts/Helvetica-Narrow-Oblique.afm +1556 -0
- data/fonts/Helvetica-Narrow-Oblique.inf +26 -0
- data/fonts/Helvetica-Narrow.afm +1556 -0
- data/fonts/Helvetica-Narrow.inf +26 -0
- data/fonts/Helvetica-Oblique.afm +3051 -0
- data/fonts/Helvetica-Oblique.inf +26 -0
- data/fonts/Helvetica.afm +3051 -0
- data/fonts/Helvetica.inf +26 -0
- data/fonts/LetterGothic-Bold.afm +443 -0
- data/fonts/LetterGothic-Bold.inf +26 -0
- data/fonts/LetterGothic-BoldSlanted.afm +443 -0
- data/fonts/LetterGothic-BoldSlanted.inf +26 -0
- data/fonts/LetterGothic-Slanted.afm +443 -0
- data/fonts/LetterGothic-Slanted.inf +26 -0
- data/fonts/LetterGothic.afm +443 -0
- data/fonts/LetterGothic.inf +26 -0
- data/fonts/LubalinGraph-Book.afm +351 -0
- data/fonts/LubalinGraph-Book.inf +25 -0
- data/fonts/LubalinGraph-BookOblique.afm +351 -0
- data/fonts/LubalinGraph-BookOblique.inf +25 -0
- data/fonts/LubalinGraph-Demi.afm +351 -0
- data/fonts/LubalinGraph-Demi.inf +25 -0
- data/fonts/LubalinGraph-DemiOblique.afm +351 -0
- data/fonts/LubalinGraph-DemiOblique.inf +25 -0
- data/fonts/Marigold.afm +491 -0
- data/fonts/Marigold.inf +27 -0
- data/fonts/MonaLisa-Recut.afm +663 -0
- data/fonts/MonaLisa-Recut.inf +27 -0
- data/fonts/NewCenturySchlbk-Bold.afm +886 -0
- data/fonts/NewCenturySchlbk-Bold.inf +25 -0
- data/fonts/NewCenturySchlbk-BoldItalic.afm +1521 -0
- data/fonts/NewCenturySchlbk-BoldItalic.inf +26 -0
- data/fonts/NewCenturySchlbk-Italic.afm +1113 -0
- data/fonts/NewCenturySchlbk-Italic.inf +26 -0
- data/fonts/NewCenturySchlbk-Roman.afm +1067 -0
- data/fonts/NewCenturySchlbk-Roman.inf +26 -0
- data/fonts/Optima-Bold.afm +515 -0
- data/fonts/Optima-Bold.inf +27 -0
- data/fonts/Optima-BoldItalic.afm +712 -0
- data/fonts/Optima-BoldItalic.inf +26 -0
- data/fonts/Optima-Italic.afm +737 -0
- data/fonts/Optima-Italic.inf +26 -0
- data/fonts/Optima.afm +501 -0
- data/fonts/Optima.inf +27 -0
- data/fonts/Palatino-Bold.afm +675 -0
- data/fonts/Palatino-Bold.inf +26 -0
- data/fonts/Palatino-BoldItalic.afm +702 -0
- data/fonts/Palatino-BoldItalic.inf +26 -0
- data/fonts/Palatino-Italic.afm +700 -0
- data/fonts/Palatino-Italic.inf +26 -0
- data/fonts/Palatino-Roman.afm +718 -0
- data/fonts/Palatino-Roman.inf +26 -0
- data/fonts/StempelGaramond-Bold.afm +412 -0
- data/fonts/StempelGaramond-Bold.inf +27 -0
- data/fonts/StempelGaramond-BoldItalic.afm +413 -0
- data/fonts/StempelGaramond-BoldItalic.inf +27 -0
- data/fonts/StempelGaramond-Italic.afm +413 -0
- data/fonts/StempelGaramond-Italic.inf +27 -0
- data/fonts/StempelGaramond-Roman.afm +412 -0
- data/fonts/StempelGaramond-Roman.inf +27 -0
- data/fonts/Symbol.afm +213 -0
- data/fonts/Symbol.inf +27 -0
- data/fonts/Times-Bold.afm +2588 -0
- data/fonts/Times-Bold.inf +26 -0
- data/fonts/Times-BoldItalic.afm +2384 -0
- data/fonts/Times-BoldItalic.inf +26 -0
- data/fonts/Times-Italic.afm +2667 -0
- data/fonts/Times-Italic.inf +26 -0
- data/fonts/Times-Roman.afm +2419 -0
- data/fonts/Times-Roman.inf +26 -0
- data/fonts/Univers-Bold.afm +712 -0
- data/fonts/Univers-Bold.inf +27 -0
- data/fonts/Univers-BoldOblique.afm +712 -0
- data/fonts/Univers-BoldOblique.inf +27 -0
- data/fonts/Univers-Condensed.afm +403 -0
- data/fonts/Univers-Condensed.inf +27 -0
- data/fonts/Univers-CondensedOblique.afm +403 -0
- data/fonts/Univers-CondensedOblique.inf +27 -0
- data/fonts/Univers-Light.afm +737 -0
- data/fonts/Univers-Light.inf +27 -0
- data/fonts/Univers-LightOblique.afm +737 -0
- data/fonts/Univers-LightOblique.inf +27 -0
- data/fonts/Univers-Oblique.afm +656 -0
- data/fonts/Univers-Oblique.inf +27 -0
- data/fonts/Univers.afm +656 -0
- data/fonts/Univers.inf +27 -0
- data/fonts/ZapfChancery-MediumItalic.afm +842 -0
- data/fonts/ZapfChancery-MediumItalic.inf +26 -0
- data/fonts/ZapfDingbats.afm +225 -0
- data/fonts/ZapfDingbats.inf +26 -0
- data/lib/epdfafm.rb +334 -0
- data/lib/epdfdw.rb +710 -0
- data/lib/epdfk.rb +3142 -0
- data/lib/epdfo.rb +882 -0
- data/lib/epdfpw.rb +1749 -0
- data/lib/epdfs.rb +101 -0
- data/lib/epdfsw.rb +267 -0
- data/lib/epdft.rb +145 -0
- data/lib/epdftt.rb +458 -0
- data/test/pdf_tests.rb +16 -0
- data/test/test.rb +816 -0
- data/test/test_epdfafm.rb +202 -0
- data/test/test_epdfdw.rb +369 -0
- data/test/test_epdfk.rb +47 -0
- data/test/test_epdfo.rb +762 -0
- data/test/test_epdfpw.rb +129 -0
- data/test/test_epdfs.rb +54 -0
- data/test/test_epdfsw.rb +314 -0
- data/test/test_epdft.rb +198 -0
- data/test/test_epdftt.rb +34 -0
- data/test/test_helpers.rb +18 -0
- data/test/testimg.jpg +0 -0
- 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
|