File Coverage

blib/lib/PostScript/MailLabels/BasicData.pm
Criterion Covered Total %
statement 52 66 78.7
branch n/a
condition 1 3 33.3
subroutine 9 11 81.8
pod 0 8 0.0
total 62 88 70.4


line stmt bran cond sub pod time code
1             package PostScript::MailLabels::BasicData;
2              
3 1     1   5 use strict;
  1         2  
  1         36  
4 1     1   5 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
  1         2  
  1         154  
5              
6             require Exporter;
7              
8             @ISA = qw(Exporter);
9             # Items to export into callers namespace by default. Note: do not export
10             # names by default without a very good reason. Use EXPORT_OK instead.
11             # Do not simply export all your public functions/methods/constants.
12             @EXPORT = qw( );
13              
14             $VERSION = '1.30';
15              
16 1     1   8 use Carp;
  1         1  
  1         6116  
17              
18             sub new {
19 1     1 0 2 my $proto = shift;
20 1   33     12 my $class = ref($proto) || $proto;
21 1         1 my $self = {};
22              
23 1         3 $self->{FONTS} = {}; # font metrics
24 1         4 $self->{PAPER} = []; # paper size names
25 1         2 $self->{HEIGHT} = {}; # paper heights in points
26 1         2 $self->{WIDTH} = {}; # paper widths in points
27 1         2 $self->{POSTNET} = []; # Postscript definition for PostNet font
28 1         2 $self->{DYMO} = {}; # Avery (tm) label descriptions
29 1         2 $self->{AVERY} = {}; # Avery (tm) label descriptions
30             # layout=>[paper-size,[list of product codes], description,
31             # number per sheet, left-offset, top-offset, width, height,
32             # x_gap, y_gap ]
33             # distances measured in points
34              
35 1         3 bless $self, $class;
36              
37 1         4 $self->initialize;
38              
39 1         8 return $self;
40             }
41              
42             sub initialize {
43              
44             # Load the data on various fonts into hashes
45              
46 1     1 0 2 my $self = shift;
47              
48              
49 1         4 font_metrics($self); # initialize font hash
50              
51 1         7 Calibrate($self); # initialize Calibration code
52              
53 1         3 TestPage($self); # initialize TestPage code
54              
55 1         2 PostNetPreamble($self); # initialize PostNET code
56              
57             # Some standard paper sizes
58              
59 1         5 @{$self->{PAPER}} = qw( Letter Legal Ledger Tabloid A0 A1 A2 A3 A4 A5 A6 A7 A8
  1         11  
60             A9 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 Envelope10 Envelope9 Envelope6_3_4
61             EnvelopeC5
62             EnvelopeDL Folio Executive Userdefined
63             Dymo-11351 Dymo-11352 Dymo-11353 Dymo-11354 Dymo-11355 Dymo-11356
64             Dymo-14681 Dymo-30252 Dymo-30253 Dymo-30256 Dymo-30258 Dymo-30277
65             Dymo-30299 Dymo-30320 Dymo-30321 Dymo-30323 Dymo-30324 Dymo-30325
66             Dymo-30326 Dymo-30327 Dymo-30330 Dymo-30332 Dymo-30333 Dymo-30334
67             Dymo-30335 Dymo-30336 Dymo-30337 Dymo-30339 Dymo-30345 Dymo-30346
68             Dymo-30347 Dymo-30348 Dymo-30364 Dymo-30365 Dymo-30370 Dymo-30373
69             Dymo-30374 Dymo-30376 Dymo-30383 Dymo-30384 Dymo-30387 Dymo-30854
70             Dymo-30856 Dymo-30857 Dymo-30886 Dymo-99010 Dymo-99012 Dymo-99014
71             Dymo-99015 Dymo-99016 Dymo-99017 Dymo-99018 Dymo-99019
72              
73             );
74              
75             # Dimensions of standard papers in points (1/72 inches)
76              
77 1         6 %{$self->{WIDTH}} = ( Letter => 612, Legal => 612,
  1         607  
78             Ledger => 1224, Tabloid => 792,
79             A0 => 2384, A1 => 1684,
80             A2 => 1191, A3 => 842,
81             A4 => 595, A5 => 420,
82             A6 => 297, A7 => 210,
83             A8 => 148, A9 => 105,
84             B0 => 2920, B1 => 2064,
85             B2 => 1460, B3 => 1032,
86             B4 => 729, B5 => 516,
87             B6 => 363, B7 => 258,
88             B8 => 181, B9 => 127,
89             B10 => 91, Envelope10 => 297,
90             Envelope9 => 279, Envelope6_3_4 => 261,
91             EnvelopeC5 => 461, EnvelopeDL => 312,
92             Folio => 595, Executive => 522,
93             Userdefined => 0,
94             'Dymo-11351' => 64,
95             'Dymo-11352' => 154,
96             'Dymo-11353' => 72,
97             'Dymo-11354' => 90,
98             'Dymo-11355' => 144,
99             'Dymo-11356' => 252,
100             'Dymo-14681' => 188,
101             'Dymo-30252' => 252,
102             'Dymo-30253' => 252,
103             'Dymo-30256' => 288,
104             'Dymo-30258' => 198,
105             'Dymo-30277' => 248,
106             'Dymo-30299' => 64,
107             'Dymo-30320' => 252,
108             'Dymo-30321' => 252,
109             'Dymo-30323' => 286,
110             'Dymo-30324' => 198,
111             'Dymo-30325' => 424,
112             'Dymo-30326' => 221,
113             'Dymo-30327' => 248,
114             'Dymo-30330' => 144,
115             'Dymo-30332' => 72,
116             'Dymo-30333' => 72,
117             'Dymo-30334' => 90,
118             'Dymo-30335' => 86,
119             'Dymo-30336' => 154,
120             'Dymo-30337' => 252,
121             'Dymo-30339' => 203,
122             'Dymo-30345' => 180,
123             'Dymo-30346' => 136,
124             'Dymo-30347' => 108,
125             'Dymo-30348' => 90,
126             'Dymo-30364' => 288,
127             'Dymo-30365' => 252,
128             'Dymo-30370' => 169,
129             'Dymo-30373' => 144,
130             'Dymo-30374' => 252,
131             'Dymo-30376' => 144,
132             'Dymo-30383' => 504,
133             'Dymo-30384' => 540,
134             'Dymo-30387' => 756,
135             'Dymo-30854' => 188,
136             'Dymo-30856' => 292,
137             'Dymo-30857' => 288,
138             'Dymo-30886' => 126,
139             'Dymo-99010' => 252,
140             'Dymo-99012' => 252,
141             'Dymo-99014' => 286,
142             'Dymo-99015' => 198,
143             'Dymo-99016' => 221,
144             'Dymo-99017' => 144,
145             'Dymo-99018' => 539,
146             'Dymo-99019' => 539,
147             );
148 1         9 %{$self->{HEIGHT}} = ( Letter => 792, Legal => 1008,
  1         34  
149             Ledger => 792, Tabloid => 1224,
150             A0 => 3370, A1 => 2384,
151             A2 => 1684, A3 => 1191,
152             A4 => 842, A5 => 595,
153             A6 => 420, A7 => 297,
154             A8 => 210, A9 => 148,
155             B0 => 4127, B1 => 2920,
156             B2 => 2064, B3 => 1460,
157             B4 => 1032, B5 => 729,
158             B6 => 516, B7 => 363,
159             B8 => 258, B9 => 181,
160             B10 => 127, Envelope10 => 684,
161             Envelope9 => 639, Envelope6_3_4 => 468,
162             EnvelopeC5 => 648, EnvelopeDL => 624,
163             Folio => 935, Executive => 756,
164             Userdefined => 0,
165             'Dymo-11351' => 154,
166             'Dymo-11352' => 72,
167             'Dymo-11353' => 72,
168             'Dymo-11354' => 162,
169             'Dymo-11355' => 54,
170             'Dymo-11356' => 118,
171             'Dymo-14681' => 167,
172             'Dymo-30252' => 79,
173             'Dymo-30253' => 167,
174             'Dymo-30256' => 167,
175             'Dymo-30258' => 154,
176             'Dymo-30277' => 82,
177             'Dymo-30299' => 154,
178             'Dymo-30320' => 79,
179             'Dymo-30321' => 102,
180             'Dymo-30323' => 154,
181             'Dymo-30324' => 154,
182             'Dymo-30325' => 54,
183             'Dymo-30326' => 131,
184             'Dymo-30327' => 57,
185             'Dymo-30330' => 54,
186             'Dymo-30332' => 72,
187             'Dymo-30333' => 72,
188             'Dymo-30334' => 162,
189             'Dymo-30335' => 73,
190             'Dymo-30336' => 72,
191             'Dymo-30337' => 118,
192             'Dymo-30339' => 54,
193             'Dymo-30345' => 54,
194             'Dymo-30346' => 36,
195             'Dymo-30347' => 72,
196             'Dymo-30348' => 65,
197             'Dymo-30364' => 167,
198             'Dymo-30365' => 168,
199             'Dymo-30370' => 144,
200             'Dymo-30373' => 71,
201             'Dymo-30374' => 144,
202             'Dymo-30376' => 80,
203             'Dymo-30383' => 162,
204             'Dymo-30384' => 167,
205             'Dymo-30387' => 167,
206             'Dymo-30854' => 167,
207             'Dymo-30856' => 176,
208             'Dymo-30857' => 167,
209             'Dymo-30886' => 112,
210             'Dymo-99010' => 79,
211             'Dymo-99012' => 102,
212             'Dymo-99014' => 154,
213             'Dymo-99015' => 154,
214             'Dymo-99016' => 139,
215             'Dymo-99017' => 36,
216             'Dymo-99018' => 108,
217             'Dymo-99019' => 167,
218              
219             );
220              
221             # layout=>[paper-size,[list of product codes], description,
222             # number per sheet, left-offset, top-offset, width, height,
223             # x_gap, y_gap ]
224             # distances measured in points
225             # Aug 2004 updated using data from http://www.worldlabel.com
226 1         132 %{$self->{AVERY}} = (
  1         24  
227             '5096' => ['Letter',[qw/5096/], 'diskette', 9,
228             9, 36, 198, 198, 0, 18,
229             ],
230             '5160' => ['Letter',[qw/5160 8250 8560 8660/], 'address', 30,
231             13.5, 36, 189, 72, 9, 0,
232             ],
233             '5161' => ['Letter',[qw/5161/], 'address', 20,
234             11.2464, 36, 288, 72, 11.2464, 0,
235             ],
236             '5162' => ['Letter',[qw/5162 8252 8662/], 'address', 14,
237             11.2536, 63, 285.7536, 101.2536, 13.5, 0,
238             ],
239             '5163' => ['Letter',[qw/5163 8253 8663/], 'special', 10,
240             13.5, 36, 288, 144, 9, 0,
241             ],
242             '5164' => ['Letter',[qw/5164 8254/], 'shipping', 6,
243             10.656, 36, 288, 239.76, 14.6232, 0,
244             ],
245             '5165' => ['Letter',[qw/5165 8255 8665/], 'full sheet', 1,
246             0, 0, 612, 792, 0, 0,
247             ],
248             '5167' => ['Letter',[qw/5167 8257 8667/], 'return address', 80,
249             21.3768, 36, 126, 36, 21.7512, 0,
250             ],
251             '5190' => ['Letter',[qw/5190/], 'diskette', 15,
252             13.5, 18, 192.024, 144, 4.5, 12.0744,
253             ],
254             '5193' => ['Letter',[qw/5193/], 'special', 24,
255             29.2536, 38.2536, 117, 117, 28.1232, 2.7,
256             ],
257             '5194' => ['Letter',[qw/5194/], 'special', 12,
258             29.2536, 39.3696, 176.6232, 176.6232, 18, 2.2536,
259             ],
260             '5195' => ['Letter',[qw/5195/], 'special', 6,
261             46.1232, 34.8768, 238.5, 238.5, 42.7536, 3.3768,
262             ],
263             '5196' => ['Letter',[qw/5196/], 'diskette', 9,
264             9, 36, 198, 198, 0, 18,
265             ],
266             '5197' => ['Letter',[qw/5197/], 'special', 12,
267             11.8152, 72, 288, 108, 12.3768, 0,
268             ],
269             '5198' => ['Letter',[qw/5198/], 'audio cassette', 12,
270             36, 38.2464, 252, 119.2464, 36, 0,
271             ],
272             '5199-F' => ['Letter',[qw/5199-F/], 'VHS Face', 10,
273             76.5, 65.2464, 220.5, 132.3, 18, 0,
274             ],
275             '5199-S' => ['Letter',[qw/5199-S/], 'VHS spine', 15,
276             95.6232, 33.7536, 420.7536, 48.2976, 0, 0,
277             ],
278             '5260' => ['Letter',[qw/5260/], 'address', 30,
279             13.5, 36, 189, 72, 9, 0,
280             ],
281             '5261' => ['Letter',[qw/5261/], 'address', 20,
282             11.2464, 36, 288, 72, 11.2464, 0,
283             ],
284             '5262' => ['Letter',[qw/5262/], 'address', 14,
285             11.2536, 63, 285.7536, 101.2536, 13.5, 0,
286             ],
287             '5263' => ['Letter',[qw/5263/], 'shipping', 10,
288             13.5, 36, 288, 144, 9, 0,
289             ],
290             '5264' => ['Letter',[qw/5264/], 'shipping', 6,
291             10.656, 36, 288, 239.76, 14.6232, 0,
292             ],
293             '5265' => ['Letter',[qw/5265/], 'full sheet', 1,
294             0, 0, 612, 792, 0, 0,
295             ],
296             '5266' => ['Letter', [qw/8066 8166 8366/], 'file folder', 30,
297             36, 36, 247.5, 49.5, 39.384, 0,
298             ],
299             '5267' => ['Letter',[qw/5267/], 'return address', 80,
300             21.3768, 36, 126, 36, 21.7512, 0,
301             ],
302             '5293' => ['Letter',[qw/5293/], 'special', 24,
303             29.2536, 38.2536, 117, 117, 28.1232, 2.7,
304             ],
305             '5294' => ['Letter',[qw/5294/], 'special', 12,
306             29.2536, 39.3696, 176.6232, 176.6232, 18, 2.2536,
307             ],
308             '5295' => ['Letter',[qw/5295/], 'special', 6,
309             46.1232, 34.8768, 238.5, 238.5, 42.7536, 3.3768,
310             ],
311             '5395' => ['Letter', [qw/8395/], 'name badge', 8,
312             undef, undef, undef, undef, undef, undef,
313             ],
314             '5526' => ['Letter', [qw/5526/], 'shipping label', 2,
315             0.0, 0.0, 612.0, 396.0, 0.0, 0.0,
316             ],
317             '5663' => ['Letter',[qw/5663/], 'address', 10,
318             0, 36, 306, 144, 0, 0,
319             ],
320             '5667' => ['Letter',[qw/5667/], 'return address', 80,
321             21.3768, 36, 126, 36, 21.7512, 0,
322             ],
323             '5824' => ['Letter',[qw/5824/], 'CD-Rom', 2,
324             144, 36, 324, 324, 0, 72,
325             ],
326             '5896' => ['Letter',[qw/5896/], 'diskette', 9,
327             9, 36, 198, 198, 0, 18,
328             ],
329             '5960' => ['Letter',[qw/5960/], 'address', 30,
330             13.5, 36, 189, 72, 9, 0,
331             ],
332             '5961' => ['Letter',[qw/5961/], 'address', 20,
333             11.2464, 36, 288, 72, 11.2464, 0,
334             ],
335             '5962' => ['Letter',[qw/5962/], 'address', 14,
336             11.2536, 63, 285.7536, 101.2536, 13.5, 0,
337             ],
338             '5963' => ['Letter',[qw/5963/], 'special', 10,
339             13.5, 36, 288, 144, 9, 0,
340             ],
341             '5970' => ['Letter',[qw/5970/], 'address', 30,
342             13.5, 36, 189, 72, 9, 0,
343             ],
344             '5971' => ['Letter',[qw/5971/], 'address', 30,
345             13.5, 36, 189, 72, 9, 0,
346             ],
347             '5972' => ['Letter',[qw/5972/], 'address', 30,
348             13.5, 36, 189, 72, 9, 0,
349             ],
350             '5979' => ['Letter',[qw/5979/], 'address', 30,
351             13.5, 36, 189, 72, 9, 0,
352             ],
353             '5980' => ['Letter',[qw/5980/], 'address', 30,
354             13.5, 36, 189, 72, 9, 0,
355             ],
356             '6490' => ['Letter', [qw/8096/], '3 1/2 inch diskette, non-wrap', 15,
357             undef, undef, undef, undef, undef, undef,
358             ],
359             '8160' => ['Letter',[qw/8160/], 'address', 30,
360             13.5, 36, 189, 72, 9, 0,
361             ],
362             '8161' => ['Letter',[qw/8161/], 'address', 20,
363             11.2464, 36, 288, 72, 11.2464, 0,
364             ],
365             '8162' => ['Letter',[qw/8162/], 'address', 14,
366             11.2536, 63, 285.7536, 101.2536, 13.5, 0,
367             ],
368             '8163' => ['Letter',[qw/8163/], 'special', 10,
369             13.5, 36, 288, 144, 9, 0,
370             ],
371             '8164' => ['Letter',[qw/8164/], 'shipping', 6,
372             10.656, 36, 288, 239.76, 14.6232, 0,
373             ],
374             '8165' => ['Letter',[qw/8165/], 'full sheet', 1,
375             0, 0, 612, 792, 0, 0,
376             ],
377             '8167' => ['Letter',[qw/8167 8667/], 'return address', 80,
378             21.3768, 36, 126, 36, 21.7512, 0,
379             ],
380             '8196' => ['Letter',[qw/8196/], 'diskette', 9,
381             9, 36, 198, 198, 0, 18,
382             ],
383             '8460' => ['Letter',[qw/8460/], 'address', 30,
384             13.5, 36, 189, 72, 9, 0,
385             ],
386             '8462' => ['Letter',[qw/8462/], 'address', 14,
387             11.2536, 63, 285.7536, 101.2536, 13.5, 0,
388             ],
389             '8463' => ['Letter',[qw/8463/], 'shipping', 10,
390             13.5, 36, 288, 144, 9, 0,
391             ],
392             '8923' => ['Letter', [ 8923 ], 'shipping', 10,
393             13.5, 36, 288, 144, 27, 0,
394             ]
395             );
396            
397            
398             # extracted from the CUPS drivers supplied by Dymo
399             # follow the links for the downloads and SDK
400             # https://global.dymo.com:443/enUS/RNW/RNW.html
401 1         141 %{$self->{DYMO}} = (
  1         40  
402             '11351' => [ 'Dymo-11351', [qw/11351/], 'Jewelry Label', 1,
403             0, 0, 64, 154, 0, 0
404             ],
405             '11352' => [ 'Dymo-11352', [qw/11352/], 'Return Address Int', 1,
406             0, 0, 154, 72, 0, 0
407             ],
408             '11353' => [ 'Dymo-11353', [qw/11353/], 'Multi-Purpose', 1,
409             0, 0, 72, 72, 0, 0
410             ],
411             '11354' => [ 'Dymo-11354', [qw/11354/], 'Multi-Purpose', 1,
412             0, 0, 90, 162, 0, 0
413             ],
414             '11355' => [ 'Dymo-11355', [qw/11355/], 'Multi-Purpose', 1,
415             0, 0, 144, 54, 0, 0
416             ],
417             '11356' => [ 'Dymo-11356', [qw/11356/], 'White Name badge', 1,
418             0, 0, 252, 118, 0, 0
419             ],
420             '14681' => [ 'Dymo-14681', [qw/14681/], 'CD/DVD Label', 1,
421             0, 0, 188, 167, 0, 0
422             ],
423             '30252' => [ 'Dymo-30252', [qw/30252/], 'Address', 1,
424             0, 0, 252, 79, 0, 0
425             ],
426             '30253' => [ 'Dymo-30253', [qw/30253/], 'Address (2 up)', 1,
427             0, 0, 252, 167, 0, 0
428             ],
429             '30256' => [ 'Dymo-30256', [qw/30256/], 'Shipping', 1,
430             0, 0, 288, 167, 0, 0
431             ],
432             '30258' => [ 'Dymo-30258', [qw/30258/], 'Diskette', 1,
433             0, 0, 198, 154, 0, 0
434             ],
435             '30277' => [ 'Dymo-30277', [qw/30277/], 'File Folder (2 up)', 1,
436             0, 0, 248, 82, 0, 0
437             ],
438             '30299' => [ 'Dymo-30299', [qw/30299/], 'Jewelry Label (2 up)', 1,
439             0, 0, 64, 154, 0, 0
440             ],
441             '30320' => [ 'Dymo-30320', [qw/30320/], 'Address', 1,
442             0, 0, 252, 79, 0, 0
443             ],
444             '30321' => [ 'Dymo-30321', [qw/30321/], 'Large Address', 1,
445             0, 0, 252, 102, 0, 0
446             ],
447             '30323' => [ 'Dymo-30323', [qw/30323/], 'Shipping', 1,
448             0, 0, 286, 154, 0, 0
449             ],
450             '30324' => [ 'Dymo-30324', [qw/30324/], 'Diskette', 1,
451             0, 0, 198, 154, 0, 0
452             ],
453             '30325' => [ 'Dymo-30325', [qw/30325/], 'Video Spine', 1,
454             0, 0, 424, 54, 0, 0
455             ],
456             '30326' => [ 'Dymo-30326', [qw/30326/], 'Video Top', 1,
457             0, 0, 221, 131, 0, 0
458             ],
459             '30327' => [ 'Dymo-30327', [qw/30327/], 'File Folder', 1,
460             0, 0, 248, 57, 0, 0
461             ],
462             '30330' => [ 'Dymo-30330', [qw/30330/], 'Return Address', 1,
463             0, 0, 144, 54, 0, 0
464             ],
465             '30332' => [ 'Dymo-30332', [qw/30332/], '1 in x 1 in', 1,
466             0, 0, 72, 72, 0, 0
467             ],
468             '30333' => [ 'Dymo-30333', [qw/30333/], '1/2 in x 1 in (2 up)', 1,
469             0, 0, 72, 72, 0, 0
470             ],
471             '30334' => [ 'Dymo-30334', [qw/30334/], '2-1/4 in x 1-1/4 in', 1,
472             0, 0, 90, 162, 0, 0
473             ],
474             '30335' => [ 'Dymo-30335', [qw/30335/], '1/2 in x 1/2 in (4 up)', 1,
475             0, 0, 86, 73, 0, 0
476             ],
477             '30336' => [ 'Dymo-30336', [qw/30336/], '1 in x 2-1/8 in', 1,
478             0, 0, 154, 72, 0, 0
479             ],
480             '30337' => [ 'Dymo-30337', [qw/30337/], 'Audio Cassette', 1,
481             0, 0, 252, 118, 0, 0
482             ],
483             '30339' => [ 'Dymo-30339', [qw/30339/], '8mm Video (2 up)', 1,
484             0, 0, 203, 54, 0, 0
485             ],
486             '30345' => [ 'Dymo-30345', [qw/30345/], '3/4 in x 2-1/2 in', 1,
487             0, 0, 180, 54, 0, 0
488             ],
489             '30346' => [ 'Dymo-30346', [qw/30346/], '1/2 in x 1-7/8 in', 1,
490             0, 0, 136, 36, 0, 0
491             ],
492             '30347' => [ 'Dymo-30347', [qw/30347/], '1 in x 1-1/2 in', 1,
493             0, 0, 108, 72, 0, 0
494             ],
495             '30348' => [ 'Dymo-30348', [qw/30348/], '9/10 in x 1-1/4 in', 1,
496             0, 0, 90, 65, 0, 0
497             ],
498             '30364' => [ 'Dymo-30364', [qw/30364/], 'Name Badge Label', 1,
499             0, 0, 288, 167, 0, 0
500             ],
501             '30365' => [ 'Dymo-30365', [qw/30365/], 'Name Badge Card', 1,
502             0, 0, 252, 168, 0, 0
503             ],
504             '30370' => [ 'Dymo-30370', [qw/30370/], 'Zip Disk', 1,
505             0, 0, 169, 144, 0, 0
506             ],
507             '30373' => [ 'Dymo-30373', [qw/30373/], 'Price Tag Label', 1,
508             0, 0, 144, 71, 0, 0
509             ],
510             '30374' => [ 'Dymo-30374', [qw/30374/], 'Appointment Card', 1,
511             0, 0, 252, 144, 0, 0
512             ],
513             '30376' => [ 'Dymo-30376', [qw/30376/], 'Hanging File Insert', 1,
514             0, 0, 144, 80, 0, 0
515             ],
516             '30383' => [ 'Dymo-30383', [qw/30383/], 'PC Postage 3-Part', 1,
517             0, 0, 504, 162, 0, 0
518             ],
519             '30384' => [ 'Dymo-30384', [qw/30384/], 'PC Postage 2-Part', 1,
520             0, 0, 540, 167, 0, 0
521             ],
522             '30387' => [ 'Dymo-30387', [qw/30387/], 'PC Postage EPS', 1,
523             0, 0, 756, 167, 0, 0
524             ],
525             '30854' => [ 'Dymo-30854', [qw/30854/], 'CD Label', 1,
526             0, 0, 188, 167, 0, 0
527             ],
528             '30856' => [ 'Dymo-30856', [qw/30856/], 'Badge Card Label', 1,
529             0, 0, 292, 176, 0, 0
530             ],
531             '30857' => [ 'Dymo-30857', [qw/30857/], 'Badge Label', 1,
532             0, 0, 288, 167, 0, 0
533             ],
534             '30886' => [ 'Dymo-30886', [qw/30886/], 'CD Label', 1,
535             0, 0, 126, 112, 0, 0
536             ],
537             '99010' => [ 'Dymo-99010', [qw/99010/], 'Standard Address', 1,
538             0, 0, 252, 79, 0, 0
539             ],
540             '99012' => [ 'Dymo-99012', [qw/99012/], 'Large Address', 1,
541             0, 0, 252, 102, 0, 0
542             ],
543             '99014' => [ 'Dymo-99014', [qw/99014/], 'Shipping', 1,
544             0, 0, 286, 154, 0, 0
545             ],
546             '99015' => [ 'Dymo-99015', [qw/99015/], 'Diskette', 1,
547             0, 0, 198, 154, 0, 0
548             ],
549             '99016' => [ 'Dymo-99016', [qw/99016/], 'Video Top', 1,
550             0, 0, 221, 139, 0, 0
551             ],
552             '99017' => [ 'Dymo-99017', [qw/99017/], 'Suspension File', 1,
553             0, 0, 144, 36, 0, 0
554             ],
555             '99018' => [ 'Dymo-99018', [qw/99018/], 'Small Lever Arch', 1,
556             0, 0, 539, 108, 0, 0
557             ],
558             '99019' => [ 'Dymo-99019', [qw/99019/], 'Large Lever Arch', 1,
559             0, 0, 539, 167, 0, 0
560             ],
561             );
562            
563             }
564              
565             sub Calibrate {
566 1     1 0 3 my $self = shift;
567              
568 1         2 my $calibrate = <<'CALIBRATE';
569             %!PS
570              
571             % This code copyright 1999, Alan Jackson, alan@ajackson.org and is
572             % protected under the Open Source license. Code may be copied and
573             % modified so long as attribution to the original author is
574             % maintained.
575              
576             % fields to replace are xcenter, ycenter (center of page in points)
577             % inc (either 0.1 inch or 0.1 cm in units of points)
578             % numx and numy : number of time to loop for x and y axes
579             % and pagesize
580              
581             % set the pagesize in points here
582             %pagesize%
583             gsave
584             %translate%
585              
586             /fontsize 15 def
587             /Helvetica findfont fontsize scalefont setfont
588              
589             % draw x and y rules for calibration
590             % ycenter will be 5.5*72 for Letter paper (8.5x11)
591             % inc will be 7.2 for units = english, and 2.83465 for units = metric
592             /makerule { 0 %ycenter% moveto % left edge, center page
593             /label (1) def
594             /indx 0 def
595             1 1 %numx% {
596             1 1 4 {
597             pop % clear index from stack
598             %inc% 0 rlineto
599             0 4 rlineto
600             0 -4 rmoveto
601             } for
602             %inc% 0 rlineto
603             0 6 rlineto
604             0 -6 rmoveto
605             1 1 4 {
606             pop % clear index from stack
607             %inc% 0 rlineto
608             0 4 rlineto
609             0 -4 rmoveto
610             } for
611             %inc% 0 rlineto
612             0 8 rlineto
613             0 4 rmoveto
614             label show
615             label stringwidth pop -1 mul 0 rmoveto
616             /indx indx 1 add def % increment indx
617             /label indx 1 add 3 string cvs def % increment label
618             0 -21 rlineto
619             0 9 rmoveto
620             } for
621             %xcenter% 0 moveto % bottom edge, center page
622             /label (1) def
623             /indx 0 def
624             1 1 %numy% {
625             1 1 4 { % minor ticks
626             pop % clear index from stack
627             0 %inc% rlineto
628             4 0 rlineto
629             -4 0 rmoveto
630             } for
631             0 %inc% rlineto
632             6 0 rlineto
633             -6 0 rmoveto
634             1 1 4 {
635             pop % clear index from stack
636             0 %inc% rlineto
637             4 0 rlineto
638             -4 0 rmoveto
639             } for
640             0 %inc% rlineto
641             8 0 rlineto
642             4 0 rmoveto
643             label show
644             label stringwidth pop -1 mul 0 rmoveto
645             /indx indx 1 add def % increment indx
646             /label indx 1 add 3 string cvs def % increment label
647             -20 0 rlineto
648             8 0 rmoveto
649             } for
650             stroke
651             } def
652              
653             makerule % calibrate
654            
655             showpage
656             grestore
657             %------------- end of Calibrate definition
658             CALIBRATE
659              
660 1         3 $self->{CALIBRATE} = $calibrate;
661              
662 1         3 return ;
663             }
664              
665             sub TestPage {
666 1     1 0 2 my $self = shift;
667              
668 1         2 my $testpage = <<'TESTPAGE';
669             %!PS
670              
671             % This code copyright 1999, Alan Jackson, alan@ajackson.org and is
672             % protected under the Open Source license. Code may be copied and
673             % modified so long as attribution to the original author is
674             % maintained.
675              
676             % fields to replace are many :
677             % paperwidth, paperheight, boxwidth, boxheight, xgap, ygap, rows,
678             % cols, by (beginning y coord)
679             % xadjust, yadjust, and the 4 non-printing border widths,
680             % lbor, rbor, tbor, bbor
681             % and pagesize
682              
683             % set the pagesize in points here
684             %pagesize%
685             gsave
686             %translate%
687              
688             % nominal measurements
689             /paperwidth %paperwidth% def % total width of paper
690             /paperheight %paperheight% def % total height of paper
691             /boxwidth %boxwidth% def % label width
692             /boxheight %boxheight% def % label height
693             /xgap %xgap% def % x gap between labels
694             /ygap %ygap% def % y gap between labels
695             /rows %rows% def % rows of labels on each page
696             /cols %cols% def % columns of labels on each page
697             /by %by% def % gap between top of first label and top of page
698              
699             % adjustments
700             /xadjust %xadjust% def % adjustment if paper not x centered
701             /yadjust %yadjust% def % adjustment if paper not y centered
702             /lbor %lbor% def % left border
703             /rbor paperwidth %rbor% sub def % right border coordinate
704             /tbor %tbor% def % top border
705             /bbor %bbor% def % bottom border
706              
707             /lbor lbor xadjust sub store
708             /rbor rbor xadjust sub store
709              
710             % calculated values
711             /bx paperwidth cols 1 sub xgap mul boxwidth cols mul add sub 2 div store % begin x
712              
713             /fontsize 15 def
714             /Helvetica findfont fontsize scalefont setfont
715             1 setlinewidth
716              
717             /prtnum { 3 string cvs show} def % diagnostic routine to print a number
718              
719             % printable area vertically
720             % if not enough room, adjust number of rows...
721             /rowmsg false def % print message about missing row?
722             rows boxheight mul by add paperheight bbor sub gt {
723             /rows rows 1 sub store /rowmsg true def} if
724              
725             % draw a box
726             /makebox {
727             width 0 rlineto
728             gsave
729             adj_r {[5] 0 setdash} if
730             0 -1 boxheight mul rlineto stroke
731             grestore
732             0 -1 boxheight mul rmoveto
733             -1 width mul 0 rlineto
734             gsave
735             adj_l {[5] 0 setdash} if
736             0 boxheight rlineto stroke
737             grestore
738             0 boxheight rmoveto
739             closepath
740             stroke
741             } def
742              
743             /y paperheight by sub yadjust sub def % initial y position
744             /x bx def
745              
746             % print messages about xadjust and yadjust
747             gsave
748             2 setlinewidth
749             x y moveto
750             20 -20 rmoveto
751             (Slide test sheet right) show
752             x y moveto
753             20 -40 rmoveto
754             (x-adjust positive) show
755             x y moveto
756             20 -60 rmoveto
757             60 0 rlineto
758             gsave
759             -10 -5 rlineto 0 10 rlineto 10 -5 rlineto closepath fill
760             grestore
761             stroke
762              
763             x y moveto
764             20 -20 rmoveto
765             boxwidth 0 rmoveto
766             gsave (Slide test sheet down) show
767             20 0 rmoveto
768             0 -60 rlineto
769             gsave
770             -5 10 rlineto 10 0 rlineto -5 -10 rlineto closepath fill
771             grestore
772             stroke
773             grestore
774             0 -20 rmoveto
775             gsave (y-adjust positive) show grestore
776             grestore
777              
778             /boxes { 1 1 rows {
779             /x bx store
780             0 y moveto
781             1 1 cols {
782             /adj_l false def % was left box edge adjusted?
783             /adj_r false def % was right box edge adjusted?
784             x lbor lt {/adj_l true def} if % set adjusted start x flag
785             /sx x store
786             adj_l {/sx lbor store} if
787             %/sx x lbor lt lbor x ifelse store % set adjusted start x
788             /x x boxwidth add store
789             x rbor gt {/adj_r true def} if % set adjusted start x flag
790             /ex x store
791             adj_r {/se rbor store} if
792             %/ex x rbor gt rbor x ifelse store % set adjusted end x
793             /x x xgap add store
794             /width ex sx sub store
795             sx xadjust add y moveto
796             makebox
797             } for
798             /y y boxheight sub ygap sub store
799             } for
800             } def
801              
802             boxes
803              
804             % If I had to delete the bottom row, plop out a message now
805             rowmsg {
806             paperwidth 5 div y boxheight 2 div sub moveto
807             /fontsize 20 def
808             /Helvetica findfont fontsize scalefont setfont
809             (Bottom gap too large, last row cannot be printed) show
810             } if
811             showpage
812             grestore
813             %------------- end of TestPage definition
814             TESTPAGE
815              
816 1         2 $self->{TESTPAGE} = $testpage;
817              
818 1         2 return ;
819             }
820              
821              
822             sub PostNetPreamble {
823 1     1 0 2 my $self = shift;
824              
825 1         1 my $postnet = <<'POSTNET';
826             % --------- This preamble which defines the PostNet barcode font is
827             % entirely the work of James Cloos, and is included under
828             % under the GNU General Public License - AKJ
829             % Copyright 1998 James H. Cloos, Jr.
830             %
831             % This program is free software; you can redistribute it and/or modify
832             % it under the terms of the GNU General Public License as published by
833             % the Free Software Foundation; either version 2 of the License, or
834             % (at your option) any later version.
835             %
836             % This program is distributed in the hope that it will be useful,
837             % but WITHOUT ANY WARRANTY; without even the implied warranty of
838             % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
839             % GNU General Public License for more details.
840             %
841             % You should have received a copy of the GNU General Public License
842             % along with this program; if not, write to the Free Software
843             % Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
844             %%CreationDate: Wed Oct 21 17:00:00 1998
845             %%VMusage: 10288 22058
846             %%EndComments
847             13 dict begin
848             /FontInfo 10 dict dup begin
849             /version (001.001) readonly def
850             /FullName (PostNetJHC) readonly def
851             /FamilyName (PostNetJHC) readonly def
852             /Weight (Regular) readonly def
853             /isFixedPitch false def
854             /ItalicAngle 0 def
855             /UnderlinePosition -100 def
856             /UnderlineThickness 50 def
857             /em 1000 def
858             /Notice (Copyright 1998 James H. Cloos, Jr . All rights reserved. This font comes with ABSOLUTELY NO WARRANTY. See http://www.gnu.org/copyleft/gpl.html for licensing details.) readonly def
859             /URI (http://www.jhcloos.com/fonts/PostNetJHC/) readonly def
860             end readonly def
861             /FontName /PostNetJHC def
862             /Encoding 256 array
863             0 1 255 {1 index exch /.notdef put} for
864             dup 0 /Bit0 put
865             dup 1 /Bit1 put
866             dup 32 /space put
867             dup 48 /zero put
868             dup 49 /one put
869             dup 50 /two put
870             dup 51 /three put
871             dup 52 /four put
872             dup 53 /five put
873             dup 54 /six put
874             dup 55 /seven put
875             dup 56 /eight put
876             dup 57 /nine put
877             dup 64 /Bit0 put
878             dup 65 /Bit1 put
879             dup 73 /Bit1 put
880             dup 105 /Bit0 put
881             dup 108 /Bit1 put
882             dup 128 /Bit0 put
883             dup 129 /Bit1 put
884             readonly def
885             /PaintType 0 def
886             /FontType 1 def
887             /FontMatrix [0.001 0 0 0.001 0 0] def
888             /FontBBox{75 0 1275 750}readonly def
889             %/UniqueID 4868163 def
890             currentdict end
891             currentfile eexec
892             D9D66F633B846A989B9974B0179FC6CC445BC38EFAFB1C60E150200B01283902
893             00956D5A3FA23F12B16BBE726CDB04BF5C3735C6A64EE4C726FB54193D2A9178
894             E8BEF86C2BD24D424E6F696123E4F6B02776289A94EC1C898CC54AACE563FBA3
895             DC4DF816B0BA01BECB15E83218E249909F17D372F6251AABF785B0F4F205FDEA
896             43B9815AA797DCBEAF168FF712ED9DCED6F0522E45460115556BBCA903296950
897             BD100179EFCA89CA764A610025380564661B0AE777B69B493B722AF87CA817B6
898             9B8ADE842CC66B8A2726B5E5983F6D6ED8227B8DACE73A6A0A1CE8CA437622DA
899             CE3673351FFE7AE87701DFB60BBF975D35490B82009434EBDFFA7020C63DB421
900             82C13809DE9604371ACBF26A53FDE357FA677206425B6FA0305F5A618CC86CE8
901             2C3071982E7305DFC160A58A4B0DE6D8A193C6E5216B21AFA42C0512FF5FA6C1
902             917259929A01B41B0165094E7D5A2F7A5A783A3D9170BF001B478FC28061CE2E
903             CC092EFBF740B69F81A070F74FDEFB84DD55D05668D7597476FA3742646CAFAE
904             116A8A31A19A5E70C4C2F1ED2F77B75562F3D48655CD461D48D3321A7B10FF68
905             B51966B8A2375CD1F10905AA45E9D75E7E726E057588B3DBCAF9707DA409E3A1
906             87B24F60F5B1F657C5655F42A78E4050C5D3848CEB00249B0515992442DC91A8
907             8D3FE1D0C0217C0585511F65105098EF2D52D9EEC7D8E2D80FA8AED8C2040DE5
908             F957131A39536951EFB522944E2DF3D5883B269ECDC990DE319638F33921836F
909             65E8D41801AE7DBAC1C61FF6680220518E4939CA9CFA646B8B2A96A5F77403C2
910             B2748756A957684E72F780029AEFB80C63EB982891241245ADAD5B9102F1A07E
911             B20AA2BD613BA11A3EFA25147C33C1362DE3BF8FC843DB6185280FA0E4816AD2
912             7E3F078A7CD8AFDF1B5B6E702264617CCB4471576CEBB5CE6CE82C3071892ABF
913             F6539908B0D1067748E7BC0BC4375AC8E398BD48099B7E1146009F94A3A874B8
914             CCE062FEF0B00AB3F47CDF9711889A829C23FAF4D8EF7C5006A95C47B02238A8
915             B7904D05AADA96DC48BBDC7718085EDA095425937519D129EC18921B9CBA591A
916             60F606DED42A871F64D678E122558CB70037E3DE179FF4C5DD9DD0683AB1E3F4
917             09951F2615040D45E022D7575AC3577306EDF5D20D3A4CE1BEAE331C85FABFD6
918             926C01F1FDB6B6761D0A0D241C7F1B1969E4B8602E43F27044510746B64A0123
919             ECA0060488E8C971CB071B322EB6E8FC6D5145978F709A77F13B5B6DE52808E2
920             4E882FD49B7066378FA5B1F1F84174BAEF8D2C98185EF0240A26213BBDA38A3A
921             8C13D52838CA82C2AE6ECC77D8A4F609E2AC0CFFF6D60934950634AFA6E51DFD
922             64F382402A876DAB67D6E2FB25599C0B43AB6AF85CD5E73A009A9C8F56A984A4
923             660FFF7E410F08E697FB1DF003506431C5103BDC2148F3882EE8F3FEC301966B
924             204A76216540DA4D03F83E01E1DCAA4F310CD0C57E74F388F7CC5DFA8FD3520D
925             29229A03479E037EBC482A527D6BE25D96514D3D606078C9B69A2368F220DEAA
926             E14C77A045B55FCDC2B6EE53D13940A4A198B93208070E94D32BF8D6E12C8B5C
927             0035D23CE18B8B511467538DBCB51089301C9DF636A3D8C60935F0A4222555AC
928             FFBDA6E29262C710D38F7CE8D3E6FD657420CD720FF4CF6C723AB0E38DF87B51
929             2E9B8764BC316378C7CB29A682625A940A0D160AAA1A4499C3CAC253C70946C4
930             4F87285646991C13
931             0000000000000000000000000000000000000000000000000000000000000000
932             0000000000000000000000000000000000000000000000000000000000000000
933             0000000000000000000000000000000000000000000000000000000000000000
934             0000000000000000000000000000000000000000000000000000000000000000
935             0000000000000000000000000000000000000000000000000000000000000000
936             0000000000000000000000000000000000000000000000000000000000000000
937             0000000000000000000000000000000000000000000000000000000000000000
938             0000000000000000000000000000000000000000000000000000000000000000
939             cleartomark
940             %------------- end of PostNet definition
941             POSTNET
942              
943 1         3 $self->{POSTNET} = $postnet;
944              
945 1         8 return ;
946             }
947              
948             # ****************************************************************
949             sub font_metrics {
950             # Most of this code was pulled from the PostScript::Metrics
951             # module by Shawn Wallace
952              
953 1     1 0 2 my $self = shift;
954 1         952 %{$self->{FONTS}} = (
  1         97  
955             'AvantGarde-Demi' => [
956             280, 280, 360, 560, 560, 860, 680, 280, 380, 380, 440, 600, 280, 420, 280,
957             460, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600,
958             600, 560, 740, 740, 580, 780, 700, 520, 480, 840, 680, 280, 480, 620, 440,
959             900, 740, 840, 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, 500, 320,
960             640, 320, 600, 500, 280, 660, 660, 640, 660, 640, 280, 660, 600, 240, 260,
961             580, 240, 940, 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, 560, 580,
962             460, 340, 600, 340, 600,
963             ],
964             'AvantGarde-DemiOblique' => [
965             280, 280, 360, 560, 560, 860, 680, 280, 380, 380, 440, 600, 280, 420, 280,
966             460, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600,
967             600, 560, 740, 740, 580, 780, 700, 520, 480, 840, 680, 280, 480, 620, 440,
968             900, 740, 840, 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, 500, 320,
969             640, 320, 600, 500, 280, 660, 660, 640, 660, 640, 280, 660, 600, 240, 260,
970             580, 240, 940, 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, 560, 580,
971             460, 340, 600, 340, 600,
972             ],
973             'AvantGarde-Book' => [
974             277, 295, 309, 554, 554, 775, 757, 351, 369, 369, 425, 606, 277, 332, 277,
975             437, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, 606, 606,
976             606, 591, 867, 740, 574, 813, 744, 536, 485, 872, 683, 226, 482, 591, 462,
977             919, 740, 869, 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, 480, 351,
978             605, 351, 606, 500, 351, 683, 682, 647, 685, 650, 314, 673, 610, 200, 203,
979             502, 200, 938, 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, 480, 536,
980             425, 351, 672, 351, 606,
981             ],
982             'AvantGarde-BookOblique' => [
983             277, 295, 309, 554, 554, 775, 757, 351, 369, 369, 425, 606, 277, 332, 277,
984             437, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, 606, 606,
985             606, 591, 867, 740, 574, 813, 744, 536, 485, 872, 683, 226, 482, 591, 462,
986             919, 740, 869, 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, 480, 351,
987             605, 351, 606, 500, 351, 683, 682, 647, 685, 650, 314, 673, 610, 200, 203,
988             502, 200, 938, 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, 480, 536,
989             425, 351, 672, 351, 606,
990             ],
991             'Bookman-Demi' => [
992             340, 360, 420, 660, 660, 940, 800, 320, 320, 320, 460, 600, 340, 360, 340,
993             600, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 340, 340, 600, 600,
994             600, 660, 820, 720, 720, 740, 780, 720, 680, 780, 820, 400, 640, 800, 640,
995             940, 740, 800, 660, 800, 780, 660, 700, 740, 720, 940, 780, 700, 640, 300,
996             600, 300, 600, 500, 320, 580, 600, 580, 640, 580, 380, 580, 680, 360, 340,
997             660, 340, 1000, 680, 620, 640, 620, 460, 520, 460, 660, 600, 800, 600, 620,
998             560, 320, 600, 320, 600,
999             ],
1000             'Bookman-DemiItalic' => [
1001             340, 320, 380, 680, 680, 880, 980, 320, 260, 260, 460, 600, 340, 280, 340,
1002             360, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 340, 340, 620, 600,
1003             620, 620, 780, 720, 720, 700, 760, 720, 660, 760, 800, 380, 620, 780, 640,
1004             860, 740, 760, 640, 760, 740, 700, 700, 740, 660, 1000, 740, 660, 680, 260,
1005             580, 260, 620, 500, 320, 680, 600, 560, 680, 560, 420, 620, 700, 380, 320,
1006             700, 380, 960, 680, 600, 660, 620, 500, 540, 440, 680, 540, 860, 620, 600,
1007             560, 300, 620, 300, 620,
1008             ],
1009             'Bookman-Light' => [
1010             320, 300, 380, 620, 620, 900, 800, 220, 300, 300, 440, 600, 320, 400, 320,
1011             600, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 320, 320, 600, 600,
1012             600, 540, 820, 680, 740, 740, 800, 720, 640, 800, 800, 340, 600, 720, 600,
1013             920, 740, 800, 620, 820, 720, 660, 620, 780, 700, 960, 720, 640, 640, 300,
1014             600, 300, 600, 500, 220, 580, 620, 520, 620, 520, 320, 540, 660, 300, 300,
1015             620, 300, 940, 660, 560, 620, 580, 440, 520, 380, 680, 520, 780, 560, 540,
1016             480, 280, 600, 280, 600,
1017             ],
1018             'Bookman-LightItalic' => [
1019             300, 320, 360, 620, 620, 800, 820, 280, 280, 280, 440, 600, 300, 320, 300,
1020             600, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 300, 300, 600, 600,
1021             600, 540, 780, 700, 720, 720, 740, 680, 620, 760, 800, 320, 560, 720, 580,
1022             860, 720, 760, 600, 780, 700, 640, 600, 720, 680, 960, 700, 660, 580, 260,
1023             600, 260, 600, 500, 280, 620, 600, 480, 640, 540, 340, 560, 620, 280, 280,
1024             600, 280, 880, 620, 540, 600, 560, 400, 540, 340, 620, 540, 880, 540, 600,
1025             520, 360, 600, 380, 600,
1026             ],
1027             'Courier-Bold' => [
1028             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1029             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1030             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1031             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1032             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1033             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1034             600, 600, 600, 600, 600,
1035             ],
1036             'Courier-BoldOblique' => [
1037             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1038             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1039             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1040             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1041             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1042             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1043             600, 600, 600, 600, 600,
1044             ],
1045             'Courier' => [
1046             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1047             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1048             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1049             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1050             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1051             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1052             600, 600, 600, 600, 600,
1053             ],
1054             'Courier-Oblique' => [
1055             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1056             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1057             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1058             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1059             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1060             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1061             600, 600, 600, 600, 600,
1062             ],
1063             'Helvetica-Bold' => [
1064             278, 333, 474, 556, 556, 889, 722, 278, 333, 333, 389, 584, 278, 333, 278,
1065             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,
1066             584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611,
1067             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333,
1068             278, 333, 584, 556, 278, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278,
1069             556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556,
1070             500, 389, 280, 389, 584,
1071             ],
1072             'Helvetica-Narrow-Bold' => [
1073             228, 273, 389, 456, 456, 729, 592, 228, 273, 273, 319, 479, 228, 273, 228,
1074             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, 479, 479,
1075             479, 501, 800, 592, 592, 592, 592, 547, 501, 638, 592, 228, 456, 592, 501,
1076             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 273,
1077             228, 273, 479, 456, 228, 456, 501, 456, 501, 456, 273, 501, 501, 228, 228,
1078             456, 228, 729, 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, 456, 456,
1079             410, 319, 230, 319, 479,
1080             ],
1081             'Helvetica-BoldOblique' => [
1082             278, 333, 474, 556, 556, 889, 722, 278, 333, 333, 389, 584, 278, 333, 278,
1083             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,
1084             584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611,
1085             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333,
1086             278, 333, 584, 556, 278, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278,
1087             556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556,
1088             500, 389, 280, 389, 584,
1089             ],
1090             'Helvetica-Narrow-BoldOblique' => [
1091             228, 273, 389, 456, 456, 729, 592, 228, 273, 273, 319, 479, 228, 273, 228,
1092             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, 479, 479,
1093             479, 501, 800, 592, 592, 592, 592, 547, 501, 638, 592, 228, 456, 592, 501,
1094             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 273,
1095             228, 273, 479, 456, 228, 456, 501, 456, 501, 456, 273, 501, 501, 228, 228,
1096             456, 228, 729, 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, 456, 456,
1097             410, 319, 230, 319, 479,
1098             ],
1099             'Helvetica' => [
1100             278, 278, 355, 556, 556, 889, 667, 222, 333, 333, 389, 584, 278, 333, 278,
1101             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,
1102             584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556,
1103             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278,
1104             278, 278, 469, 556, 222, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222,
1105             500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500,
1106             500, 334, 260, 334, 584,
1107             ],
1108             'Helvetica-Narrow' => [
1109             228, 228, 291, 456, 456, 729, 547, 182, 273, 273, 319, 479, 228, 273, 228,
1110             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, 479, 479,
1111             479, 456, 832, 547, 547, 592, 592, 547, 501, 638, 592, 228, 410, 547, 456,
1112             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 228,
1113             228, 228, 385, 456, 182, 456, 456, 410, 456, 456, 228, 456, 456, 182, 182,
1114             410, 182, 683, 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, 410, 410,
1115             410, 274, 213, 274, 479,
1116             ],
1117             'Helvetica-Oblique' => [
1118             278, 278, 355, 556, 556, 889, 667, 222, 333, 333, 389, 584, 278, 333, 278,
1119             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,
1120             584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556,
1121             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278,
1122             278, 278, 469, 556, 222, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222,
1123             500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500,
1124             500, 334, 260, 334, 584,
1125             ],
1126             'Helvetica-Narrow-Oblique' => [
1127             228, 228, 291, 456, 456, 729, 547, 182, 273, 273, 319, 479, 228, 273, 228,
1128             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, 479, 479,
1129             479, 456, 832, 547, 547, 592, 592, 547, 501, 638, 592, 228, 410, 547, 456,
1130             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 228,
1131             228, 228, 385, 456, 182, 456, 456, 410, 456, 456, 228, 456, 456, 182, 182,
1132             410, 182, 683, 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, 410, 410,
1133             410, 274, 213, 274, 479,
1134             ],
1135             'Hershey-Script-Simplex-Oblique' => [
1136             500, 321, 571, 679, 679, 786, 857, 321, 464, 464, 536, 857, 321, 857,
1137             286, 714, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 321, 321,
1138             786, 857, 786, 679, 893, 643, 750, 643, 750, 643, 643, 750, 786, 536,
1139             464, 786, 607, 1107, 786, 679, 821, 714, 821, 643, 607, 786, 750, 929,
1140             786, 750, 679, 429, 200, 429, 500, 500, 321, 500, 429, 321, 500, 286,
1141             214, 464, 464, 179, 179, 429, 214, 821, 571, 429, 464, 464, 393, 321,
1142             250, 464, 464, 679, 500, 464, 429, 429, 214, 429, 786,
1143             ],
1144             'NewCenturySchlbk-Bold' => [
1145             287, 296, 333, 574, 574, 833, 852, 241, 389, 389, 500, 606, 278, 333, 278,
1146             278, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 278, 278, 606, 606,
1147             606, 500, 747, 759, 778, 778, 833, 759, 722, 833, 870, 444, 648, 815, 722,
1148             981, 833, 833, 759, 833, 815, 667, 722, 833, 759, 981, 722, 722, 667, 389,
1149             606, 389, 606, 500, 241, 611, 648, 556, 667, 574, 389, 611, 685, 370, 352,
1150             667, 352, 963, 685, 611, 667, 648, 519, 500, 426, 685, 611, 889, 611, 611,
1151             537, 389, 606, 389, 606,
1152             ],
1153             'NewCenturySchlbk-BoldItalic' => [
1154             287, 333, 400, 574, 574, 889, 889, 259, 407, 407, 500, 606, 287, 333, 287,
1155             278, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 287, 287, 606, 606,
1156             606, 481, 747, 741, 759, 759, 833, 741, 704, 815, 870, 444, 667, 778, 704,
1157             944, 852, 833, 741, 833, 796, 685, 722, 833, 741, 944, 741, 704, 704, 407,
1158             606, 407, 606, 500, 259, 667, 611, 537, 667, 519, 389, 611, 685, 389, 370,
1159             648, 389, 944, 685, 574, 648, 630, 519, 481, 407, 685, 556, 833, 574, 519,
1160             519, 407, 606, 407, 606,
1161             ],
1162             'NewCenturySchlbk-Roman' => [
1163             278, 296, 389, 556, 556, 833, 815, 204, 333, 333, 500, 606, 278, 333, 278,
1164             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 606, 606,
1165             606, 444, 737, 722, 722, 722, 778, 722, 667, 778, 833, 407, 556, 778, 667,
1166             944, 815, 778, 667, 778, 722, 630, 667, 815, 722, 981, 704, 704, 611, 333,
1167             606, 333, 606, 500, 204, 556, 556, 444, 574, 500, 333, 537, 611, 315, 296,
1168             593, 315, 889, 611, 500, 574, 556, 444, 463, 389, 611, 537, 778, 537, 537,
1169             481, 333, 606, 333, 606,
1170             ],
1171             'NewCenturySchlbk-Italic' => [
1172             278, 333, 400, 556, 556, 833, 852, 204, 333, 333, 500, 606, 278, 333, 278,
1173             606, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 606, 606,
1174             606, 444, 747, 704, 722, 722, 778, 722, 667, 778, 833, 407, 611, 741, 667,
1175             944, 815, 778, 667, 778, 741, 667, 685, 815, 704, 926, 704, 685, 667, 333,
1176             606, 333, 606, 500, 204, 574, 556, 444, 611, 444, 333, 537, 611, 333, 315,
1177             556, 333, 889, 611, 500, 574, 556, 444, 444, 352, 611, 519, 778, 500, 500,
1178             463, 333, 606, 333, 606,
1179             ],
1180             'Palatino-Bold' => [
1181             250, 278, 402, 500, 500, 889, 833, 278, 333, 333, 444, 606, 250, 333, 250,
1182             296, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1183             606, 444, 747, 778, 667, 722, 833, 611, 556, 833, 833, 389, 389, 778, 611,
1184             1000, 833, 833, 611, 833, 722, 611, 667, 778, 778, 1000, 667, 667, 667, 333,
1185             606, 333, 606, 500, 278, 500, 611, 444, 611, 500, 389, 556, 611, 333, 333,
1186             611, 333, 889, 611, 556, 611, 611, 389, 444, 333, 611, 556, 833, 500, 556,
1187             500, 310, 606, 310, 606,
1188             ],
1189             'Palatino-BoldItalic' => [
1190             250, 333, 500, 500, 500, 889, 833, 278, 333, 333, 444, 606, 250, 389, 250,
1191             315, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1192             606, 444, 833, 722, 667, 685, 778, 611, 556, 778, 778, 389, 389, 722, 611,
1193             944, 778, 833, 667, 833, 722, 556, 611, 778, 667, 1000, 722, 611, 667, 333,
1194             606, 333, 606, 500, 278, 556, 537, 444, 556, 444, 333, 500, 556, 333, 333,
1195             556, 333, 833, 556, 556, 556, 537, 389, 444, 389, 556, 556, 833, 500, 556,
1196             500, 333, 606, 333, 606,
1197             ],
1198             'Palatino-Roman' => [
1199             250, 278, 371, 500, 500, 840, 778, 278, 333, 333, 389, 606, 250, 333, 250,
1200             606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1201             606, 444, 747, 778, 611, 709, 774, 611, 556, 763, 832, 337, 333, 726, 611,
1202             946, 831, 786, 604, 786, 668, 525, 613, 778, 722, 1000, 667, 667, 667, 333,
1203             606, 333, 606, 500, 278, 500, 553, 444, 611, 479, 333, 556, 582, 291, 234,
1204             556, 291, 883, 582, 546, 601, 560, 395, 424, 326, 603, 565, 834, 516, 556,
1205             500, 333, 606, 333, 606,
1206             ],
1207             'Palatino-Italic' => [
1208             250, 333, 500, 500, 500, 889, 778, 278, 333, 333, 389, 606, 250, 333, 250,
1209             296, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1210             606, 500, 747, 722, 611, 667, 778, 611, 556, 722, 778, 333, 333, 667, 556,
1211             944, 778, 778, 611, 778, 667, 556, 611, 778, 722, 944, 722, 667, 667, 333,
1212             606, 333, 606, 500, 278, 444, 463, 407, 500, 389, 278, 500, 500, 278, 278,
1213             444, 278, 778, 556, 444, 500, 463, 389, 389, 333, 556, 500, 722, 500, 500,
1214             444, 333, 606, 333, 606,
1215             ],
1216             'Symbol' => [
1217             250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549, 250,
1218             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 549, 549,
1219             549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333, 631, 722, 686,
1220             889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768, 645, 795, 611, 333,
1221             863, 333, 658, 500, 500, 631, 549, 549, 494, 439, 521, 411, 603, 329, 603,
1222             549, 549, 576, 521, 549, 549, 521, 549, 603, 439, 576, 713, 686, 493, 686,
1223             494, 480, 200, 480, 549,
1224             ],
1225             'Times-Bold' => [
1226             250, 333, 555, 500, 500, 1000, 833, 333, 333, 333, 500, 570, 250, 333, 250,
1227             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,
1228             570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667,
1229             944, 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333,
1230             278, 333, 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333,
1231             556, 278, 833, 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500,
1232             444, 394, 220, 394, 520,
1233             ],
1234             'Times-BoldItalic' => [
1235             250, 389, 555, 500, 500, 833, 778, 333, 333, 333, 500, 570, 250, 333, 250,
1236             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,
1237             570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611,
1238             889, 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333,
1239             278, 333, 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278,
1240             500, 278, 778, 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444,
1241             389, 348, 220, 348, 570,
1242             ],
1243             'Times-Roman' => [
1244             250, 333, 408, 500, 500, 833, 778, 333, 333, 333, 500, 564, 250, 333, 250,
1245             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,
1246             564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611,
1247             889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333,
1248             278, 333, 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278,
1249             500, 278, 778, 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500,
1250             444, 480, 200, 480, 541,
1251             ],
1252             'Times-Italic' => [
1253             250, 333, 420, 500, 500, 833, 778, 333, 333, 333, 500, 675, 250, 333, 250,
1254             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,
1255             675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556,
1256             833, 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389,
1257             278, 389, 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278,
1258             444, 278, 722, 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444,
1259             389, 400, 275, 400, 541,
1260             ],
1261             'Utopia-Bold' => [
1262             210, 278, 473, 560, 560, 887, 748, 252, 365, 365, 442, 600, 280, 392, 280,
1263             378, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600,
1264             600, 456, 833, 644, 683, 689, 777, 629, 593, 726, 807, 384, 386, 707, 585,
1265             918, 739, 768, 650, 768, 684, 561, 624, 786, 645, 933, 634, 617, 614, 335,
1266             379, 335, 600, 500, 252, 544, 605, 494, 605, 519, 342, 533, 631, 316, 316,
1267             582, 309, 948, 638, 585, 615, 597, 440, 446, 370, 629, 520, 774, 522, 524,
1268             483, 365, 284, 365, 600,
1269             ],
1270             'Utopia-BoldItalic' => [
1271             210, 285, 455, 560, 560, 896, 752, 246, 350, 350, 500, 600, 280, 392, 280,
1272             260, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600,
1273             600, 454, 828, 634, 680, 672, 774, 622, 585, 726, 800, 386, 388, 688, 586,
1274             921, 741, 761, 660, 761, 681, 551, 616, 776, 630, 920, 630, 622, 618, 350,
1275             460, 350, 600, 500, 246, 596, 586, 456, 609, 476, 348, 522, 629, 339, 333,
1276             570, 327, 914, 635, 562, 606, 584, 440, 417, 359, 634, 518, 795, 516, 489,
1277             466, 340, 265, 340, 600,
1278             ],
1279             'Utopia-Regular' => [
1280             225, 242, 458, 530, 530, 838, 706, 278, 350, 350, 412, 570, 265, 392, 265,
1281             460, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 265, 265, 570, 570,
1282             570, 389, 793, 635, 646, 684, 779, 606, 580, 734, 798, 349, 350, 658, 568,
1283             944, 780, 762, 600, 762, 644, 541, 621, 791, 634, 940, 624, 588, 610, 330,
1284             460, 330, 570, 500, 278, 523, 598, 496, 598, 514, 319, 520, 607, 291, 280,
1285             524, 279, 923, 619, 577, 608, 591, 389, 436, 344, 606, 504, 768, 486, 506,
1286             480, 340, 228, 340, 570,
1287             ],
1288             'Utopia-Italic' => [
1289             225, 240, 402, 530, 530, 826, 725, 216, 350, 350, 412, 570, 265, 392, 265,
1290             270, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 265, 265, 570, 570,
1291             570, 425, 794, 624, 632, 661, 763, 596, 571, 709, 775, 345, 352, 650, 565,
1292             920, 763, 753, 614, 753, 640, 533, 606, 794, 637, 946, 632, 591, 622, 330,
1293             390, 330, 570, 500, 216, 561, 559, 441, 587, 453, 315, 499, 607, 317, 309,
1294             545, 306, 912, 618, 537, 590, 559, 402, 389, 341, 618, 510, 785, 516, 468,
1295             468, 340, 270, 340, 570,
1296             ],
1297             'ZapfChancery-MediumItalic' => [
1298             220, 280, 220, 440, 440, 680, 780, 240, 260, 220, 420, 520, 220, 280, 220,
1299             340, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 260, 240, 520, 520,
1300             520, 380, 700, 620, 600, 520, 700, 620, 580, 620, 680, 380, 400, 660, 580,
1301             840, 700, 600, 540, 600, 600, 460, 500, 740, 640, 880, 560, 560, 620, 240,
1302             480, 320, 520, 500, 240, 420, 420, 340, 440, 340, 320, 400, 440, 240, 220,
1303             440, 240, 620, 460, 400, 440, 400, 300, 320, 320, 460, 440, 680, 420, 400,
1304             440, 240, 520, 240, 520,
1305             ],
1306             'ZapfDingbats' => [
1307             278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855, 911,
1308             933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759, 754, 494,
1309             552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823, 789, 841, 823,
1310             833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776, 768, 792, 759, 707,
1311             708, 682, 701, 826, 815, 789, 789, 707, 687, 696, 689, 786, 787, 713, 791,
1312             785, 791, 873, 761, 762, 762, 759, 759, 892, 892, 788, 784, 438, 138, 277,
1313             415, 392, 392, 668, 668,
1314             ],
1315              
1316              
1317             'NimbusSanL-Regu' => [
1318             278, 278, 355, 556, 556, 889, 667, 221, 333, 333, 389, 584, 278, 584, 278,
1319             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,
1320             584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556,
1321             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278,
1322             278, 278, 469, 556, 222, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222,
1323             500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500,
1324             500, 334, 260, 334, 584,
1325             ],
1326             'NimbusSanL-Bold' => [
1327             278, 333, 474, 556, 556, 889, 722, 278, 333, 333, 389, 584, 278, 584, 278,
1328             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,
1329             584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611,
1330             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333,
1331             278, 333, 584, 556, 278, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278,
1332             556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556,
1333             500, 389, 280, 389, 584,
1334             ],
1335             'NimbusSanL-ReguItal' => [
1336             278, 278, 355, 556, 556, 889, 667, 222, 333, 333, 389, 584, 278, 584, 278,
1337             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,
1338             584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556,
1339             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278,
1340             278, 278, 469, 556, 222, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222,
1341             500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500,
1342             500, 334, 260, 334, 584,
1343             ],
1344             'NimbusSanL-BoldItal' => [
1345             278, 333, 474, 556, 556, 889, 722, 278, 333, 333, 389, 584, 278, 584, 278,
1346             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,
1347             584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611,
1348             833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333,
1349             278, 333, 584, 556, 278, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278,
1350             556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556,
1351             500, 389, 280, 389, 584,
1352             ],
1353             'URWGothicL-Book' => [
1354             277, 295, 309, 554, 554, 775, 757, 351, 369, 369, 425, 606, 277, 606, 277,
1355             437, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, 606, 606,
1356             606, 591, 867, 740, 574, 813, 744, 536, 485, 872, 683, 226, 482, 591, 462,
1357             919, 740, 869, 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, 480, 351,
1358             605, 351, 606, 500, 351, 683, 682, 647, 685, 650, 314, 673, 610, 200, 203,
1359             502, 200, 938, 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, 480, 536,
1360             425, 351, 672, 351, 606,
1361             ],
1362             'NimbusSanL-ReguCond' => [
1363             228, 228, 291, 456, 456, 729, 547, 182, 273, 273, 319, 479, 228, 479, 228,
1364             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, 479, 479,
1365             479, 456, 832, 547, 547, 592, 592, 547, 501, 638, 592, 228, 410, 547, 456,
1366             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 228,
1367             228, 228, 385, 456, 182, 456, 456, 410, 456, 456, 228, 456, 456, 182, 182,
1368             410, 182, 683, 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, 410, 410,
1369             410, 274, 213, 274, 479,
1370             ],
1371             'URWGothicL-Demi' => [
1372             280, 280, 360, 560, 560, 860, 680, 280, 380, 380, 440, 600, 280, 600, 280,
1373             460, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600,
1374             600, 560, 740, 740, 580, 780, 700, 520, 480, 840, 680, 280, 480, 620, 440,
1375             900, 740, 840, 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, 500, 320,
1376             640, 320, 600, 500, 280, 660, 660, 640, 660, 640, 280, 660, 600, 240, 260,
1377             580, 240, 940, 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, 560, 580,
1378             460, 340, 600, 340, 600,
1379             ],
1380             'NimbusSanL-BoldCond' => [
1381             228, 273, 389, 456, 456, 729, 592, 228, 273, 273, 319, 479, 228, 479, 228,
1382             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, 479, 479,
1383             479, 501, 800, 592, 592, 592, 592, 547, 501, 638, 592, 228, 456, 592, 501,
1384             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 273,
1385             228, 273, 479, 456, 228, 456, 501, 456, 501, 456, 273, 501, 501, 228, 228,
1386             456, 228, 729, 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, 456, 456,
1387             410, 319, 230, 319, 479,
1388             ],
1389             'URWGothicL-BookObli' => [
1390             277, 295, 309, 554, 554, 775, 757, 351, 369, 369, 425, 606, 277, 606, 277,
1391             437, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, 606, 606,
1392             606, 591, 867, 740, 574, 813, 744, 536, 485, 872, 683, 226, 482, 591, 462,
1393             919, 740, 869, 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, 480, 351,
1394             605, 351, 606, 500, 351, 683, 682, 647, 685, 650, 314, 673, 610, 200, 203,
1395             502, 200, 938, 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, 480, 536,
1396             425, 351, 672, 351, 606,
1397             ],
1398             'NimbusSanL-ReguCondItal' => [
1399             228, 228, 291, 456, 456, 729, 547, 182, 273, 273, 319, 479, 228, 479, 228,
1400             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, 479, 479,
1401             479, 456, 832, 547, 547, 592, 592, 547, 501, 638, 592, 228, 410, 547, 456,
1402             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 228,
1403             228, 228, 385, 456, 182, 456, 456, 410, 456, 456, 228, 456, 456, 182, 182,
1404             410, 182, 683, 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, 410, 410,
1405             410, 274, 213, 274, 479,
1406             ],
1407             'URWGothicL-DemiObli' => [
1408             280, 280, 360, 560, 560, 860, 680, 280, 380, 380, 440, 600, 280, 600, 280,
1409             460, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600,
1410             600, 560, 740, 740, 580, 780, 700, 520, 480, 840, 680, 280, 480, 620, 440,
1411             900, 740, 840, 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, 500, 320,
1412             640, 320, 600, 500, 280, 660, 660, 640, 660, 640, 280, 660, 600, 240, 260,
1413             580, 240, 940, 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, 560, 580,
1414             460, 340, 600, 340, 600,
1415             ],
1416             'NimbusSanL-BoldCondItal' => [
1417             228, 273, 389, 456, 456, 729, 592, 228, 273, 273, 319, 479, 228, 479, 228,
1418             228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, 479, 479,
1419             479, 501, 800, 592, 592, 592, 592, 547, 501, 638, 592, 228, 456, 592, 501,
1420             683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 273,
1421             228, 273, 479, 456, 228, 456, 501, 456, 501, 456, 273, 501, 501, 228, 228,
1422             456, 228, 729, 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, 456, 456,
1423             410, 319, 230, 319, 479,
1424             ],
1425             'URWBookmanL-Ligh' => [
1426             320, 300, 380, 620, 620, 900, 800, 220, 300, 300, 440, 600, 320, 600, 320,
1427             600, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 320, 320, 600, 600,
1428             600, 540, 820, 680, 740, 740, 800, 720, 640, 800, 800, 340, 600, 720, 600,
1429             920, 740, 800, 620, 820, 720, 660, 620, 780, 700, 960, 720, 640, 640, 300,
1430             600, 300, 600, 500, 220, 580, 620, 520, 620, 520, 320, 540, 660, 300, 300,
1431             620, 300, 940, 660, 560, 620, 580, 440, 520, 380, 680, 520, 780, 560, 540,
1432             480, 280, 600, 280, 600,
1433             ],
1434             'NimbusRomNo9L-Regu' => [
1435             250, 333, 408, 500, 500, 833, 778, 333, 333, 333, 500, 564, 250, 564, 250,
1436             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,
1437             564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611,
1438             889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333,
1439             278, 333, 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278,
1440             500, 278, 778, 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500,
1441             444, 480, 200, 480, 541,
1442             ],
1443             'URWBookmanL-DemiBold' => [
1444             340, 360, 420, 660, 660, 940, 800, 320, 320, 320, 460, 600, 340, 600, 340,
1445             600, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 340, 340, 600, 600,
1446             600, 660, 820, 720, 720, 740, 780, 720, 680, 780, 820, 400, 640, 800, 640,
1447             940, 740, 800, 660, 800, 780, 660, 700, 740, 720, 940, 780, 700, 640, 300,
1448             600, 300, 600, 500, 320, 580, 600, 580, 640, 580, 380, 580, 680, 360, 340,
1449             660, 340, 1000, 680, 620, 640, 620, 460, 520, 460, 660, 600, 800, 600, 620,
1450             560, 320, 600, 320, 600,
1451             ],
1452             'NimbusRomNo9L-Medi' => [
1453             250, 333, 555, 500, 500, 1000, 833, 333, 333, 333, 500, 570, 250, 570, 250,
1454             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,
1455             570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667,
1456             944, 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333,
1457             278, 333, 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333,
1458             556, 278, 833, 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500,
1459             444, 394, 220, 394, 520,
1460             ],
1461             'URWBookmanL-LighItal' => [
1462             300, 320, 360, 620, 620, 800, 820, 280, 280, 280, 440, 600, 300, 600, 300,
1463             600, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 300, 300, 600, 600,
1464             600, 540, 780, 700, 720, 720, 740, 680, 620, 760, 800, 320, 560, 720, 580,
1465             860, 720, 760, 600, 780, 700, 640, 600, 720, 680, 960, 700, 660, 580, 260,
1466             600, 260, 600, 500, 280, 620, 600, 480, 640, 540, 340, 560, 620, 280, 280,
1467             600, 280, 880, 620, 540, 600, 560, 400, 540, 340, 620, 540, 880, 540, 600,
1468             520, 360, 600, 380, 600,
1469             ],
1470             'NimbusRomNo9L-ReguItal' => [
1471             250, 333, 420, 500, 500, 833, 778, 333, 333, 333, 500, 675, 250, 675, 250,
1472             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,
1473             675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556,
1474             833, 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389,
1475             278, 389, 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278,
1476             444, 278, 722, 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444,
1477             389, 400, 275, 400, 541,
1478             ],
1479             'URWBookmanL-DemiBoldItal' => [
1480             340, 320, 380, 680, 680, 880, 980, 320, 260, 260, 460, 600, 340, 600, 340,
1481             360, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 340, 340, 620, 600,
1482             620, 620, 780, 720, 720, 700, 760, 720, 660, 760, 800, 380, 620, 780, 640,
1483             860, 740, 760, 640, 760, 740, 700, 700, 740, 660, 1000, 740, 660, 680, 260,
1484             580, 260, 620, 500, 320, 680, 600, 560, 680, 560, 420, 620, 700, 380, 320,
1485             700, 380, 960, 680, 600, 660, 620, 500, 540, 440, 680, 540, 860, 620, 600,
1486             560, 300, 620, 300, 620,
1487             ],
1488             'NimbusRomNo9L-MediItal' => [
1489             250, 389, 555, 500, 500, 833, 778, 333, 333, 333, 500, 570, 250, 606, 250,
1490             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,
1491             570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611,
1492             889, 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333,
1493             278, 333, 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278,
1494             500, 278, 778, 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444,
1495             389, 348, 220, 348, 570,
1496             ],
1497             'CharterBT-Bold' => [
1498             291, 340, 339, 736, 581, 888, 741, 255, 428, 428, 500, 833, 289, 833, 289,
1499             491, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 340, 340, 833, 833,
1500             833, 487, 917, 651, 628, 638, 716, 596, 552, 710, 760, 354, 465, 650, 543,
1501             883, 727, 752, 587, 752, 671, 568, 603, 705, 635, 946, 637, 610, 592, 443,
1502             491, 443, 1000, 500, 255, 544, 577, 476, 596, 524, 341, 551, 597, 305, 297,
1503             553, 304, 892, 605, 577, 591, 575, 421, 447, 358, 600, 513, 799, 531, 515,
1504             495, 493, 500, 493, 833,
1505             ],
1506             'NimbusMonL-Regu' => [
1507             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1508             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1509             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1510             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1511             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1512             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1513             600, 600, 600, 600, 600,
1514             ],
1515             'CharterBT-BoldItalic' => [
1516             293, 340, 339, 751, 586, 898, 730, 261, 420, 420, 500, 833, 292, 833, 294,
1517             481, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 346, 346, 833, 833,
1518             833, 492, 936, 634, 628, 625, 702, 581, 539, 693, 747, 353, 474, 653, 529,
1519             894, 712, 729, 581, 729, 645, 553, 584, 701, 617, 921, 608, 586, 572, 449,
1520             481, 449, 1000, 500, 261, 572, 556, 437, 579, 464, 325, 517, 595, 318, 297,
1521             559, 307, 883, 600, 550, 565, 562, 449, 403, 366, 599, 492, 768, 510, 494,
1522             465, 487, 500, 487, 833,
1523             ],
1524             'NimbusMonL-Bold' => [
1525             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1526             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1527             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1528             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1529             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1530             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1531             600, 600, 600, 600, 600,
1532             ],
1533             'CharterBT-Roman' => [
1534             278, 338, 331, 745, 556, 852, 704, 201, 417, 417, 500, 833, 278, 833, 278,
1535             481, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 319, 319, 833, 833,
1536             833, 486, 942, 639, 604, 632, 693, 576, 537, 694, 738, 324, 444, 611, 520,
1537             866, 713, 731, 558, 731, 646, 556, 597, 694, 618, 928, 600, 586, 586, 421,
1538             481, 421, 1000, 500, 201, 507, 539, 446, 565, 491, 321, 523, 564, 280, 266,
1539             517, 282, 843, 568, 539, 551, 531, 382, 400, 334, 569, 494, 771, 503, 495,
1540             468, 486, 500, 486, 833,
1541             ],
1542             'CharterBT-Italic' => [
1543             278, 338, 331, 745, 556, 852, 704, 201, 419, 419, 500, 833, 278, 833, 278,
1544             481, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 319, 319, 833, 833,
1545             833, 486, 942, 606, 588, 604, 671, 546, 509, 664, 712, 312, 447, 625, 498,
1546             839, 683, 708, 542, 708, 602, 537, 565, 664, 590, 898, 569, 562, 556, 421,
1547             481, 421, 1000, 500, 201, 525, 507, 394, 523, 424, 292, 481, 551, 287, 269,
1548             514, 275, 815, 556, 502, 516, 512, 398, 370, 333, 553, 454, 713, 477, 475,
1549             440, 486, 500, 486, 833,
1550             ],
1551             'NimbusMonL-ReguObli' => [
1552             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1553             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1554             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1555             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1556             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1557             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1558             600, 600, 600, 600, 600,
1559             ],
1560             'CenturySchL-Roma' => [
1561             278, 296, 389, 556, 556, 833, 815, 204, 333, 333, 500, 606, 278, 606, 278,
1562             278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 606, 606,
1563             606, 444, 737, 722, 722, 722, 778, 722, 667, 778, 833, 407, 556, 778, 667,
1564             944, 815, 778, 667, 778, 722, 630, 667, 815, 722, 981, 704, 704, 611, 333,
1565             606, 333, 606, 500, 204, 556, 556, 444, 574, 500, 333, 537, 611, 315, 296,
1566             593, 315, 889, 611, 500, 574, 556, 444, 463, 389, 611, 537, 778, 537, 537,
1567             481, 333, 606, 333, 606,
1568             ],
1569             'NimbusMonL-BoldObli' => [
1570             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1571             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1572             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1573             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1574             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1575             600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1576             600, 600, 600, 600, 600,
1577             ],
1578             'CenturySchL-Bold' => [
1579             287, 296, 333, 574, 574, 833, 852, 241, 389, 389, 500, 606, 278, 606, 278,
1580             278, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 278, 278, 606, 606,
1581             606, 500, 747, 759, 778, 778, 833, 759, 722, 833, 870, 444, 648, 815, 722,
1582             981, 833, 833, 759, 833, 815, 667, 722, 833, 759, 981, 722, 722, 667, 389,
1583             606, 389, 606, 500, 241, 611, 648, 556, 667, 574, 389, 611, 685, 370, 352,
1584             667, 352, 963, 685, 611, 667, 648, 519, 500, 426, 685, 611, 889, 611, 611,
1585             537, 389, 606, 389, 606,
1586             ],
1587             'URWPalladioL-Roma' => [
1588             250, 278, 371, 500, 500, 840, 778, 278, 333, 333, 389, 606, 250, 606, 250,
1589             606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1590             606, 444, 747, 778, 611, 709, 774, 611, 556, 763, 832, 337, 333, 726, 611,
1591             946, 831, 786, 604, 786, 668, 525, 613, 778, 722, 1000, 667, 667, 667, 333,
1592             606, 333, 606, 500, 278, 500, 553, 444, 611, 479, 333, 556, 582, 291, 234,
1593             556, 291, 883, 582, 546, 601, 560, 395, 424, 326, 603, 565, 834, 516, 556,
1594             500, 333, 606, 333, 606,
1595             ],
1596             'CenturySchL-Ital' => [
1597             278, 333, 400, 556, 556, 833, 852, 204, 333, 333, 500, 606, 278, 606, 278,
1598             606, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 606, 606,
1599             606, 444, 747, 704, 722, 722, 778, 722, 667, 778, 833, 407, 611, 741, 667,
1600             944, 815, 778, 667, 778, 741, 667, 685, 815, 704, 926, 704, 685, 667, 333,
1601             606, 333, 606, 500, 204, 574, 556, 444, 611, 444, 333, 537, 611, 333, 315,
1602             556, 333, 889, 611, 500, 574, 556, 444, 444, 352, 611, 519, 778, 500, 500,
1603             463, 333, 606, 333, 606,
1604             ],
1605             'URWPalladioL-Bold' => [
1606             250, 278, 402, 500, 500, 889, 833, 278, 333, 333, 444, 606, 250, 606, 250,
1607             296, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1608             606, 444, 747, 778, 667, 722, 833, 611, 556, 833, 833, 389, 389, 778, 611,
1609             1000, 833, 833, 611, 833, 722, 611, 667, 778, 778, 1000, 667, 667, 667, 333,
1610             606, 333, 606, 500, 278, 500, 611, 444, 611, 500, 389, 556, 611, 333, 333,
1611             611, 333, 889, 611, 556, 611, 611, 389, 444, 333, 611, 556, 833, 500, 556,
1612             500, 310, 606, 310, 606,
1613             ],
1614             'CenturySchL-BoldItal' => [
1615             287, 333, 400, 574, 574, 889, 889, 259, 407, 407, 500, 606, 287, 606, 287,
1616             278, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 287, 287, 606, 606,
1617             606, 481, 747, 741, 759, 759, 833, 741, 704, 815, 870, 444, 667, 778, 704,
1618             944, 852, 833, 741, 833, 796, 685, 722, 833, 741, 944, 741, 704, 704, 407,
1619             606, 407, 606, 500, 259, 667, 611, 537, 667, 519, 389, 611, 685, 389, 370,
1620             648, 389, 944, 685, 574, 648, 630, 519, 481, 407, 685, 556, 833, 574, 519,
1621             519, 407, 606, 407, 606,
1622             ],
1623             'URWPalladioL-Ital' => [
1624             250, 333, 500, 500, 500, 889, 778, 278, 333, 333, 389, 606, 250, 606, 250,
1625             296, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1626             606, 500, 747, 722, 611, 667, 778, 611, 556, 722, 778, 333, 333, 667, 556,
1627             944, 778, 778, 611, 778, 667, 556, 611, 778, 722, 944, 722, 667, 667, 333,
1628             606, 333, 606, 500, 278, 444, 463, 407, 500, 389, 278, 500, 500, 278, 278,
1629             444, 278, 778, 556, 444, 500, 463, 389, 389, 333, 556, 500, 722, 500, 500,
1630             444, 333, 606, 333, 606,
1631             ],
1632             'Dingbats' => [
1633             278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1634             278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1635             278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1636             278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1637             278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1638             278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1639             278, 278, 278, 278, 278,
1640             ],
1641             'URWPalladioL-BoldItal' => [
1642             250, 333, 500, 500, 500, 889, 833, 278, 333, 333, 444, 606, 250, 606, 250,
1643             315, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606,
1644             606, 444, 833, 722, 667, 685, 778, 611, 556, 778, 778, 389, 389, 722, 611,
1645             944, 778, 833, 667, 833, 722, 556, 611, 778, 667, 1000, 722, 611, 667, 333,
1646             606, 333, 606, 500, 278, 556, 537, 444, 556, 444, 333, 500, 556, 333, 333,
1647             556, 333, 833, 556, 556, 556, 537, 389, 444, 389, 556, 556, 833, 500, 556,
1648             500, 333, 606, 333, 606,
1649             ],
1650             'StandardSymL' => [
1651             250, 333, 250, 500, 250, 833, 778, 250, 333, 333, 250, 549, 250, 549, 250,
1652             278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 549, 549,
1653             549, 444, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1654             250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 333,
1655             250, 333, 250, 500, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1656             250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1657             250, 480, 200, 480, 250,
1658             ],
1659             'URWChanceryL-MediItal' => [
1660             220, 280, 220, 440, 440, 680, 780, 240, 260, 220, 420, 520, 220, 520, 220,
1661             340, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 260, 240, 520, 520,
1662             520, 380, 700, 620, 600, 520, 700, 620, 580, 620, 680, 380, 400, 660, 580,
1663             840, 700, 600, 540, 600, 600, 460, 500, 740, 640, 880, 560, 560, 620, 240,
1664             480, 320, 520, 500, 240, 420, 420, 340, 440, 340, 320, 400, 440, 240, 220,
1665             440, 240, 620, 460, 400, 440, 400, 300, 320, 320, 460, 440, 680, 420, 400,
1666             440, 240, 520, 240, 520,
1667             ],
1668             'PostNetJHC' => [
1669             1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,
1670             1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,
1671             1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,
1672             1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,
1673             270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,
1674             270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,
1675             270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,
1676             270,270,270,270,270,
1677             ],
1678             );
1679             }
1680              
1681             sub stringwidth {
1682 0     0 0   my ($self,$string, $fontname, $fontsize) = @_;
1683 0           my $returnval = 0;
1684            
1685 0           foreach my $char (unpack("C*",$string)) {
1686 0           $returnval+=$self->{FONTS}{$fontname}->[$char-32];
1687             }
1688 0           return ($returnval*$fontsize/1000);
1689              
1690             }
1691              
1692              
1693             sub ListFonts {
1694 0     0 0   my $self = shift;
1695 0           my @tmp = %{$self->{FONTS}};
  0            
1696 0           my @returnval =();
1697 0           while (@tmp) {
1698 0           push @returnval, shift(@tmp);
1699 0           shift @tmp;
1700             }
1701 0           return sort( {$a cmp $b;} @returnval);
  0            
1702             }
1703              
1704             1;
1705             __END__