eventioz-pdf-writer 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +1 -0
  3. data/ChangeLog +113 -0
  4. data/Demo-README +43 -0
  5. data/Gemfile +4 -0
  6. data/LICENCE +131 -0
  7. data/README +33 -0
  8. data/Rakefile +1 -0
  9. data/Release-Announcement +87 -0
  10. data/bin/techbook +24 -0
  11. data/bugs/first_page_margins.rb +28 -0
  12. data/bugs/page_numbering_simple.rb +14 -0
  13. data/bugs/page_numbering_stop_and_start.rb +21 -0
  14. data/demo/chunkybacon.rb +36 -0
  15. data/demo/code.rb +71 -0
  16. data/demo/colornames.rb +47 -0
  17. data/demo/demo.rb +73 -0
  18. data/demo/gettysburg.rb +66 -0
  19. data/demo/hello.rb +26 -0
  20. data/demo/individual-i.rb +89 -0
  21. data/demo/pac.rb +70 -0
  22. data/demo/qr-language.rb +580 -0
  23. data/demo/qr-library.rb +380 -0
  24. data/images/bluesmoke.jpg +0 -0
  25. data/images/chunkybacon.jpg +0 -0
  26. data/images/chunkybacon.png +0 -0
  27. data/lib/pdf/charts.rb +13 -0
  28. data/lib/pdf/charts/stddev.rb +431 -0
  29. data/lib/pdf/core_ext/mutex.rb +11 -0
  30. data/lib/pdf/math.rb +108 -0
  31. data/lib/pdf/quickref.rb +333 -0
  32. data/lib/pdf/simpletable.rb +948 -0
  33. data/lib/pdf/techbook.rb +905 -0
  34. data/lib/pdf/writer.rb +2734 -0
  35. data/lib/pdf/writer/arc4.rb +63 -0
  36. data/lib/pdf/writer/fontmetrics.rb +203 -0
  37. data/lib/pdf/writer/fonts/Courier-Bold.afm +342 -0
  38. data/lib/pdf/writer/fonts/Courier-BoldOblique.afm +342 -0
  39. data/lib/pdf/writer/fonts/Courier-Oblique.afm +342 -0
  40. data/lib/pdf/writer/fonts/Courier.afm +342 -0
  41. data/lib/pdf/writer/fonts/Helvetica-Bold.afm +2827 -0
  42. data/lib/pdf/writer/fonts/Helvetica-BoldOblique.afm +2827 -0
  43. data/lib/pdf/writer/fonts/Helvetica-Oblique.afm +3051 -0
  44. data/lib/pdf/writer/fonts/Helvetica.afm +3051 -0
  45. data/lib/pdf/writer/fonts/MustRead.html +19 -0
  46. data/lib/pdf/writer/fonts/Symbol.afm +213 -0
  47. data/lib/pdf/writer/fonts/Times-Bold.afm +2588 -0
  48. data/lib/pdf/writer/fonts/Times-BoldItalic.afm +2384 -0
  49. data/lib/pdf/writer/fonts/Times-Italic.afm +2667 -0
  50. data/lib/pdf/writer/fonts/Times-Roman.afm +2419 -0
  51. data/lib/pdf/writer/fonts/ZapfDingbats.afm +225 -0
  52. data/lib/pdf/writer/graphics.rb +817 -0
  53. data/lib/pdf/writer/graphics/imageinfo.rb +365 -0
  54. data/lib/pdf/writer/lang.rb +43 -0
  55. data/lib/pdf/writer/lang/en.rb +99 -0
  56. data/lib/pdf/writer/object.rb +23 -0
  57. data/lib/pdf/writer/object/action.rb +35 -0
  58. data/lib/pdf/writer/object/annotation.rb +42 -0
  59. data/lib/pdf/writer/object/catalog.rb +39 -0
  60. data/lib/pdf/writer/object/contents.rb +70 -0
  61. data/lib/pdf/writer/object/destination.rb +40 -0
  62. data/lib/pdf/writer/object/encryption.rb +53 -0
  63. data/lib/pdf/writer/object/font.rb +72 -0
  64. data/lib/pdf/writer/object/fontdescriptor.rb +34 -0
  65. data/lib/pdf/writer/object/fontencoding.rb +40 -0
  66. data/lib/pdf/writer/object/image.rb +304 -0
  67. data/lib/pdf/writer/object/info.rb +51 -0
  68. data/lib/pdf/writer/object/outline.rb +30 -0
  69. data/lib/pdf/writer/object/outlines.rb +30 -0
  70. data/lib/pdf/writer/object/page.rb +195 -0
  71. data/lib/pdf/writer/object/pages.rb +115 -0
  72. data/lib/pdf/writer/object/procset.rb +46 -0
  73. data/lib/pdf/writer/object/viewerpreferences.rb +74 -0
  74. data/lib/pdf/writer/ohash.rb +58 -0
  75. data/lib/pdf/writer/oreader.rb +25 -0
  76. data/lib/pdf/writer/state.rb +48 -0
  77. data/lib/pdf/writer/strokestyle.rb +138 -0
  78. data/manual.pwd +5965 -0
  79. data/metaconfig +13 -0
  80. data/pdf-writer.gemspec +28 -0
  81. data/pre-setup.rb +56 -0
  82. data/setup.rb +1366 -0
  83. data/test/helper.rb +4 -0
  84. data/test/test_image_info.rb +16 -0
  85. data/test/test_page_numbering.rb +13 -0
  86. metadata +196 -0
@@ -0,0 +1,63 @@
1
+ #--
2
+ # PDF::Writer for Ruby.
3
+ # http://rubyforge.org/projects/ruby-pdf/
4
+ # Copyright 2003 - 2005 Austin Ziegler.
5
+ #
6
+ # Licensed under a MIT-style licence. See LICENCE in the main distribution
7
+ # for full licensing information.
8
+ #
9
+ # $Id$
10
+ #++
11
+ require 'digest/md5'
12
+
13
+ # ARC4 methods
14
+ # A series of function to implement ARC4 encoding in Ruby
15
+ class PDF::Writer::ARC4
16
+ # Initializes the ARC4 encryption with the specified key.
17
+ def initialize(key)
18
+ @key = key
19
+ end
20
+
21
+ # Initialize the encryption for processing a particular object.
22
+ def prepare(object)
23
+ hex = ("%06x" % [object.oid]).scan(/../).reverse
24
+ init(Digest::MD5.digest("#{@key}#{hex.pack('H10')}")[0...10])
25
+ end
26
+
27
+ # Initialize the ARC4 encryption.
28
+ def init(key)
29
+ @arc4 = ""
30
+
31
+ # Setup the control array
32
+ return if key.empty?
33
+
34
+ a = []
35
+ (0..255).each { |ii| a[ii] = "%c" % ii }
36
+
37
+ k = (key * 256)[0..255].split(//)
38
+
39
+ jj = 0
40
+ @arc4.each_with_index do |el, ii|
41
+ jj = ((jj + el.to_i) + k[ii].to_i) % 256
42
+ a[ii], a[jj] = a[jj], a[ii]
43
+ end
44
+ @arc4 = a.join
45
+ end
46
+
47
+ # ARC4 encrypt a text string
48
+ def encrypt(text)
49
+ len = text.size
50
+ a = b = 0
51
+ c = @arc4.dup
52
+ out = ""
53
+
54
+ text.each_byte do |x|
55
+ a = (a + 1) % 256
56
+ b = (b + c[a].to_i) % 256
57
+ c[a], c[b] = c[b], c[a]
58
+ k = (c[(c[a].to_i + c[b].to_i) % 256]).to_i
59
+ out << ("%c" % (x.to_i ^ k))
60
+ end
61
+ out
62
+ end
63
+ end
@@ -0,0 +1,203 @@
1
+ #--
2
+ # PDF::Writer for Ruby.
3
+ # http://rubyforge.org/projects/ruby-pdf/
4
+ # Copyright 2003 - 2005 Austin Ziegler.
5
+ #
6
+ # Licensed under a MIT-style licence. See LICENCE in the main distribution
7
+ # for full licensing information.
8
+ #
9
+ # $Id$
10
+ #++
11
+
12
+ class PDF::Writer::FontMetrics
13
+ METRICS_PATH = [ File.join(File.dirname(File.expand_path(__FILE__)), 'fonts') ]
14
+
15
+ KEYS = %w{FontName FullName FamilyName Weight ItalicAngle IsFixedPitch
16
+ CharacterSet UnderlinePosition UnderlineThickness Version
17
+ EncodingScheme CapHeight XHeight Ascender Descender StdHW StdVW
18
+ StartCharMetrics FontBBox C KPX}
19
+ KEYS.each { |k| attr_accessor k.downcase.intern }
20
+
21
+ def initialize
22
+ @kpx = {}
23
+ @c = {}
24
+ @version = 1
25
+ @font_num = nil
26
+ end
27
+
28
+ attr_accessor :font_num
29
+ attr_accessor :path
30
+ attr_accessor :differences
31
+ attr_accessor :encoding
32
+
33
+ NUMBER = /^[+\-0-9.]+$/o
34
+
35
+ # Open the font file and return a PDF::Writer::FontMetrics object
36
+ # containing it. The +font_name+ may specify just a font file or a full
37
+ # path. If a path is specified, that is the only place where the font
38
+ # file will be looked for.
39
+ def self.open(font_name)
40
+ file = font_name.gsub(/\\/o, "/")
41
+ dir = File.dirname(file)
42
+ name = File.basename(file)
43
+
44
+ metrics_path = []
45
+
46
+ # Check to see if the directory is "." or a non-path
47
+ if dir == "."
48
+ metrics_path << dir << METRICS_PATH << $LOAD_PATH
49
+ elsif dir !~ %r{^(\w:|/)}o and dir.index("/")
50
+ METRICS_PATH.each { |path| metrics_path << File.join(path, dir) }
51
+ $LOAD_PATH.each { |path| metrics_path << File.join(path, dir) }
52
+ else
53
+ metric_path = [ dir ]
54
+ end
55
+ metrics_path.flatten!
56
+
57
+ font = nil
58
+ afm = nil
59
+
60
+ metrics_path.each do |path|
61
+ afm_file = File.join(path, "#{name}.afm").gsub(/\.afm\.afm$/o, ".afm")
62
+ rfm_file = "#{afm_file}.rfm"
63
+
64
+ # Attempt to unmarshal an .afm.rfm file first. If it is loaded,
65
+ # we're in good shape.
66
+ begin
67
+ if File.exists?(rfm_file)
68
+ data = File.open(rfm_file, "rb") { |file| file.read }
69
+ font = Marshal.load(data)
70
+ return font
71
+ end
72
+ rescue
73
+ nil
74
+ end
75
+
76
+ # Attempt to open and process the font.
77
+ File.open(afm_file, "rb") do |file|
78
+ font = PDF::Writer::FontMetrics.new
79
+
80
+ # An AFM file contains key names followed by valuees.
81
+ file.each_line do |line|
82
+ line.chomp!
83
+ line.strip!
84
+ key, *values = line.split
85
+ next if key.nil?
86
+ op = "#{key.downcase}=".to_sym
87
+
88
+ # I probably need to deal with MetricsSet. The default value is
89
+ # 0, which is writing direction 0 (W0X). If MetricsSet 1 is
90
+ # specified, then only writing direction 1 is present (W1X). If
91
+ # MetricsSet 2 is specified, then both W0X and W1X are present.
92
+
93
+ # Measurements are always 1/1000th of a scale factor (point
94
+ # size). So a 12pt character with a width of 222 is going to be
95
+ # 222 * 12 / 1000 or 2.664 points wide.
96
+ case key
97
+ when 'FontName', 'FullName', 'FamilyName', 'Weight',
98
+ 'IsFixedPitch', 'CharacterSet', 'Version', 'EncodingScheme'
99
+ # These values are string values.
100
+ font.__send__(op, values.join(" "))
101
+ when 'ItalicAngle', 'UnderlinePosition', 'UnderlineThickness',
102
+ 'CapHeight', 'XHeight', 'Ascender', 'Descender', 'StdHW',
103
+ 'StdVW', 'StartCharMetrics'
104
+ # These values are floating point values.
105
+ font.__send__(op, values.join(" ").to_f)
106
+ when 'FontBBox'
107
+ # These values are an array of floating point values
108
+ font.fontbbox = values.map { |el| el.to_f }
109
+ when 'C', 'CH'
110
+ # Individual Character Metrics Values:
111
+ # C <character number>
112
+ # CH <hex character number>
113
+ # One of C or CH must be provided. Specifies the encoding
114
+ # number for the character. -1 if the character is not
115
+ # encoded in the font.
116
+ #
117
+ # WX <x width number>
118
+ # W0X <x0 width number>
119
+ # W1X <x1 width number>
120
+ # Character width in x for writing direction 0 (WX, W0X)
121
+ # or 1 (W1X) where y is 0. Optional.
122
+ #
123
+ # WY <y width number>
124
+ # W0Y <y0 width number>
125
+ # W1Y <y1 width number>
126
+ # Character width in y for writing direction 0 (WY, W0Y)
127
+ # or 1 (W1Y) where x is 0. Optional.
128
+ #
129
+ # W <x width> <y width>
130
+ # W0 <x0 width> <y0 width>
131
+ # W1 <x1 width> <y1 width>
132
+ # Character width in x, y for writing direction 0 (W, W0)
133
+ # or 1 (W1). Optional.
134
+ #
135
+ # VV <x number> <y number>
136
+ # Same as VVector in the global font definition, but for
137
+ # this single character. Optional.
138
+ #
139
+ # N <name>
140
+ # The PostScript name of the font. Optional.
141
+ #
142
+ # B <llx> <lly> <urx> <ury>
143
+ # Character bounding box for the lower left corner and the
144
+ # upper right corner. Optional.
145
+ #
146
+ # L <sucessor> <ligature>
147
+ # Ligature sequence where both <successor> and <ligature>
148
+ # are N <names>. For the fragment "N f; L i fi; L l fl",
149
+ # two ligatures are defined: fi and fl. Optional,
150
+ # multiples permitted.
151
+ #
152
+ # C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ;
153
+ bits = line.chomp.strip.split(/;/).collect { |r| r.strip }
154
+ dtmp = {}
155
+
156
+ bits.each do |bit|
157
+ b = bit.split
158
+ if b.size > 2
159
+ dtmp[b[0]] = []
160
+ b[1..-1].each do |z|
161
+ if z =~ NUMBER
162
+ dtmp[b[0]] << z.to_f
163
+ else
164
+ dtmp[b[0]] << z
165
+ end
166
+ end
167
+ elsif b.size == 2
168
+ if b[0] == 'C' and b[1] =~ NUMBER
169
+ dtmp[b[0]] = b[1].to_i
170
+ elsif b[0] == 'CH'
171
+ dtmp['C'] = b[1].to_i(16)
172
+ elsif b[1] =~ NUMBER
173
+ dtmp[b[0]] = b[1].to_f
174
+ else
175
+ dtmp[b[0]] = b[1]
176
+ end
177
+ end
178
+ end
179
+
180
+ font.c[dtmp['N']] = dtmp
181
+ font.c[dtmp['C']] = dtmp unless dtmp['C'].nil?
182
+ when 'KPX' # KPX Adieresis yacute -40
183
+ # KPX: Kerning Pair
184
+ font.kpx[values[0]] = { }
185
+ font.kpx[values[0]][values[1]] = values[2].to_f
186
+ end
187
+ end
188
+ font.path = afm_file
189
+ end rescue nil # Ignore file errors
190
+ break unless font.nil?
191
+ end
192
+
193
+ raise ArgumentError, "Font #{font_name} not found." if font.nil?
194
+ font
195
+ end
196
+
197
+ # Save the loaded font metrics file as a binary marshaled value.
198
+ def save_as_rfm
199
+ rfm = File.basename(@path).gsub(/\.afm.*$/, '')
200
+ rfm << ".afm.rfm"
201
+ File.open(rfm, "wb") { |file| file.write Marshal.dump(self) }
202
+ end
203
+ end
@@ -0,0 +1,342 @@
1
+ StartFontMetrics 4.1
2
+ Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
3
+ Comment Creation Date: Mon Jun 23 16:28:00 1997
4
+ Comment UniqueID 43048
5
+ Comment VMusage 41139 52164
6
+ FontName Courier-Bold
7
+ FullName Courier Bold
8
+ FamilyName Courier
9
+ Weight Bold
10
+ ItalicAngle 0
11
+ IsFixedPitch true
12
+ CharacterSet ExtendedRoman
13
+ FontBBox -113 -250 749 801
14
+ UnderlinePosition -100
15
+ UnderlineThickness 50
16
+ Version 003.000
17
+ Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
18
+ EncodingScheme AdobeStandardEncoding
19
+ CapHeight 562
20
+ XHeight 439
21
+ Ascender 629
22
+ Descender -157
23
+ StdHW 84
24
+ StdVW 106
25
+ StartCharMetrics 315
26
+ C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
27
+ C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ;
28
+ C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ;
29
+ C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ;
30
+ C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ;
31
+ C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ;
32
+ C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ;
33
+ C 39 ; WX 600 ; N quoteright ; B 171 277 423 562 ;
34
+ C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ;
35
+ C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ;
36
+ C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ;
37
+ C 43 ; WX 600 ; N plus ; B 71 39 529 478 ;
38
+ C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ;
39
+ C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ;
40
+ C 46 ; WX 600 ; N period ; B 192 -15 408 171 ;
41
+ C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ;
42
+ C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ;
43
+ C 49 ; WX 600 ; N one ; B 81 0 539 616 ;
44
+ C 50 ; WX 600 ; N two ; B 61 0 499 616 ;
45
+ C 51 ; WX 600 ; N three ; B 63 -15 501 616 ;
46
+ C 52 ; WX 600 ; N four ; B 53 0 507 616 ;
47
+ C 53 ; WX 600 ; N five ; B 70 -15 521 601 ;
48
+ C 54 ; WX 600 ; N six ; B 90 -15 521 616 ;
49
+ C 55 ; WX 600 ; N seven ; B 55 0 494 601 ;
50
+ C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ;
51
+ C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ;
52
+ C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ;
53
+ C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ;
54
+ C 60 ; WX 600 ; N less ; B 66 15 523 501 ;
55
+ C 61 ; WX 600 ; N equal ; B 71 118 529 398 ;
56
+ C 62 ; WX 600 ; N greater ; B 77 15 534 501 ;
57
+ C 63 ; WX 600 ; N question ; B 98 -14 501 580 ;
58
+ C 64 ; WX 600 ; N at ; B 16 -15 584 616 ;
59
+ C 65 ; WX 600 ; N A ; B -9 0 609 562 ;
60
+ C 66 ; WX 600 ; N B ; B 30 0 573 562 ;
61
+ C 67 ; WX 600 ; N C ; B 22 -18 560 580 ;
62
+ C 68 ; WX 600 ; N D ; B 30 0 594 562 ;
63
+ C 69 ; WX 600 ; N E ; B 25 0 560 562 ;
64
+ C 70 ; WX 600 ; N F ; B 39 0 570 562 ;
65
+ C 71 ; WX 600 ; N G ; B 22 -18 594 580 ;
66
+ C 72 ; WX 600 ; N H ; B 20 0 580 562 ;
67
+ C 73 ; WX 600 ; N I ; B 77 0 523 562 ;
68
+ C 74 ; WX 600 ; N J ; B 37 -18 601 562 ;
69
+ C 75 ; WX 600 ; N K ; B 21 0 599 562 ;
70
+ C 76 ; WX 600 ; N L ; B 39 0 578 562 ;
71
+ C 77 ; WX 600 ; N M ; B -2 0 602 562 ;
72
+ C 78 ; WX 600 ; N N ; B 8 -12 610 562 ;
73
+ C 79 ; WX 600 ; N O ; B 22 -18 578 580 ;
74
+ C 80 ; WX 600 ; N P ; B 48 0 559 562 ;
75
+ C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ;
76
+ C 82 ; WX 600 ; N R ; B 24 0 599 562 ;
77
+ C 83 ; WX 600 ; N S ; B 47 -22 553 582 ;
78
+ C 84 ; WX 600 ; N T ; B 21 0 579 562 ;
79
+ C 85 ; WX 600 ; N U ; B 4 -18 596 562 ;
80
+ C 86 ; WX 600 ; N V ; B -13 0 613 562 ;
81
+ C 87 ; WX 600 ; N W ; B -18 0 618 562 ;
82
+ C 88 ; WX 600 ; N X ; B 12 0 588 562 ;
83
+ C 89 ; WX 600 ; N Y ; B 12 0 589 562 ;
84
+ C 90 ; WX 600 ; N Z ; B 62 0 539 562 ;
85
+ C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ;
86
+ C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ;
87
+ C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ;
88
+ C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ;
89
+ C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
90
+ C 96 ; WX 600 ; N quoteleft ; B 178 277 428 562 ;
91
+ C 97 ; WX 600 ; N a ; B 35 -15 570 454 ;
92
+ C 98 ; WX 600 ; N b ; B 0 -15 584 626 ;
93
+ C 99 ; WX 600 ; N c ; B 40 -15 545 459 ;
94
+ C 100 ; WX 600 ; N d ; B 20 -15 591 626 ;
95
+ C 101 ; WX 600 ; N e ; B 40 -15 563 454 ;
96
+ C 102 ; WX 600 ; N f ; B 83 0 547 626 ; L i fi ; L l fl ;
97
+ C 103 ; WX 600 ; N g ; B 30 -146 580 454 ;
98
+ C 104 ; WX 600 ; N h ; B 5 0 592 626 ;
99
+ C 105 ; WX 600 ; N i ; B 77 0 523 658 ;
100
+ C 106 ; WX 600 ; N j ; B 63 -146 440 658 ;
101
+ C 107 ; WX 600 ; N k ; B 20 0 585 626 ;
102
+ C 108 ; WX 600 ; N l ; B 77 0 523 626 ;
103
+ C 109 ; WX 600 ; N m ; B -22 0 626 454 ;
104
+ C 110 ; WX 600 ; N n ; B 18 0 592 454 ;
105
+ C 111 ; WX 600 ; N o ; B 30 -15 570 454 ;
106
+ C 112 ; WX 600 ; N p ; B -1 -142 570 454 ;
107
+ C 113 ; WX 600 ; N q ; B 20 -142 591 454 ;
108
+ C 114 ; WX 600 ; N r ; B 47 0 580 454 ;
109
+ C 115 ; WX 600 ; N s ; B 68 -17 535 459 ;
110
+ C 116 ; WX 600 ; N t ; B 47 -15 532 562 ;
111
+ C 117 ; WX 600 ; N u ; B -1 -15 569 439 ;
112
+ C 118 ; WX 600 ; N v ; B -1 0 601 439 ;
113
+ C 119 ; WX 600 ; N w ; B -18 0 618 439 ;
114
+ C 120 ; WX 600 ; N x ; B 6 0 594 439 ;
115
+ C 121 ; WX 600 ; N y ; B -4 -142 601 439 ;
116
+ C 122 ; WX 600 ; N z ; B 81 0 520 439 ;
117
+ C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ;
118
+ C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ;
119
+ C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ;
120
+ C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ;
121
+ C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ;
122
+ C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ;
123
+ C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ;
124
+ C 164 ; WX 600 ; N fraction ; B 25 -60 576 661 ;
125
+ C 165 ; WX 600 ; N yen ; B 10 0 590 562 ;
126
+ C 166 ; WX 600 ; N florin ; B -30 -131 572 616 ;
127
+ C 167 ; WX 600 ; N section ; B 83 -70 517 580 ;
128
+ C 168 ; WX 600 ; N currency ; B 54 49 546 517 ;
129
+ C 169 ; WX 600 ; N quotesingle ; B 227 277 373 562 ;
130
+ C 170 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ;
131
+ C 171 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ;
132
+ C 172 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ;
133
+ C 173 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ;
134
+ C 174 ; WX 600 ; N fi ; B 12 0 593 626 ;
135
+ C 175 ; WX 600 ; N fl ; B 12 0 593 626 ;
136
+ C 177 ; WX 600 ; N endash ; B 65 203 535 313 ;
137
+ C 178 ; WX 600 ; N dagger ; B 106 -70 494 580 ;
138
+ C 179 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ;
139
+ C 180 ; WX 600 ; N periodcentered ; B 196 165 404 351 ;
140
+ C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ;
141
+ C 183 ; WX 600 ; N bullet ; B 140 132 460 430 ;
142
+ C 184 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ;
143
+ C 185 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ;
144
+ C 186 ; WX 600 ; N quotedblright ; B 61 277 525 562 ;
145
+ C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ;
146
+ C 188 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ;
147
+ C 189 ; WX 600 ; N perthousand ; B -113 -15 713 616 ;
148
+ C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ;
149
+ C 193 ; WX 600 ; N grave ; B 132 508 395 661 ;
150
+ C 194 ; WX 600 ; N acute ; B 205 508 468 661 ;
151
+ C 195 ; WX 600 ; N circumflex ; B 103 483 497 657 ;
152
+ C 196 ; WX 600 ; N tilde ; B 89 493 512 636 ;
153
+ C 197 ; WX 600 ; N macron ; B 88 505 512 585 ;
154
+ C 198 ; WX 600 ; N breve ; B 83 468 517 631 ;
155
+ C 199 ; WX 600 ; N dotaccent ; B 230 498 370 638 ;
156
+ C 200 ; WX 600 ; N dieresis ; B 128 498 472 638 ;
157
+ C 202 ; WX 600 ; N ring ; B 198 481 402 678 ;
158
+ C 203 ; WX 600 ; N cedilla ; B 205 -206 387 0 ;
159
+ C 205 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ;
160
+ C 206 ; WX 600 ; N ogonek ; B 169 -199 400 0 ;
161
+ C 207 ; WX 600 ; N caron ; B 103 493 497 667 ;
162
+ C 208 ; WX 600 ; N emdash ; B -10 203 610 313 ;
163
+ C 225 ; WX 600 ; N AE ; B -29 0 602 562 ;
164
+ C 227 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ;
165
+ C 232 ; WX 600 ; N Lslash ; B 39 0 578 562 ;
166
+ C 233 ; WX 600 ; N Oslash ; B 22 -22 578 584 ;
167
+ C 234 ; WX 600 ; N OE ; B -25 0 595 562 ;
168
+ C 235 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ;
169
+ C 241 ; WX 600 ; N ae ; B -4 -15 601 454 ;
170
+ C 245 ; WX 600 ; N dotlessi ; B 77 0 523 439 ;
171
+ C 248 ; WX 600 ; N lslash ; B 77 0 523 626 ;
172
+ C 249 ; WX 600 ; N oslash ; B 30 -24 570 463 ;
173
+ C 250 ; WX 600 ; N oe ; B -18 -15 611 454 ;
174
+ C 251 ; WX 600 ; N germandbls ; B 22 -15 596 626 ;
175
+ C -1 ; WX 600 ; N Idieresis ; B 77 0 523 761 ;
176
+ C -1 ; WX 600 ; N eacute ; B 40 -15 563 661 ;
177
+ C -1 ; WX 600 ; N abreve ; B 35 -15 570 661 ;
178
+ C -1 ; WX 600 ; N uhungarumlaut ; B -1 -15 628 661 ;
179
+ C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ;
180
+ C -1 ; WX 600 ; N Ydieresis ; B 12 0 589 761 ;
181
+ C -1 ; WX 600 ; N divide ; B 71 16 529 500 ;
182
+ C -1 ; WX 600 ; N Yacute ; B 12 0 589 784 ;
183
+ C -1 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ;
184
+ C -1 ; WX 600 ; N aacute ; B 35 -15 570 661 ;
185
+ C -1 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ;
186
+ C -1 ; WX 600 ; N yacute ; B -4 -142 601 661 ;
187
+ C -1 ; WX 600 ; N scommaaccent ; B 68 -250 535 459 ;
188
+ C -1 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ;
189
+ C -1 ; WX 600 ; N Uring ; B 4 -18 596 801 ;
190
+ C -1 ; WX 600 ; N Udieresis ; B 4 -18 596 761 ;
191
+ C -1 ; WX 600 ; N aogonek ; B 35 -199 586 454 ;
192
+ C -1 ; WX 600 ; N Uacute ; B 4 -18 596 784 ;
193
+ C -1 ; WX 600 ; N uogonek ; B -1 -199 585 439 ;
194
+ C -1 ; WX 600 ; N Edieresis ; B 25 0 560 761 ;
195
+ C -1 ; WX 600 ; N Dcroat ; B 30 0 594 562 ;
196
+ C -1 ; WX 600 ; N commaaccent ; B 205 -250 397 -57 ;
197
+ C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
198
+ C -1 ; WX 600 ; N Emacron ; B 25 0 560 708 ;
199
+ C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ;
200
+ C -1 ; WX 600 ; N aring ; B 35 -15 570 678 ;
201
+ C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 610 562 ;
202
+ C -1 ; WX 600 ; N lacute ; B 77 0 523 801 ;
203
+ C -1 ; WX 600 ; N agrave ; B 35 -15 570 661 ;
204
+ C -1 ; WX 600 ; N Tcommaaccent ; B 21 -250 579 562 ;
205
+ C -1 ; WX 600 ; N Cacute ; B 22 -18 560 784 ;
206
+ C -1 ; WX 600 ; N atilde ; B 35 -15 570 636 ;
207
+ C -1 ; WX 600 ; N Edotaccent ; B 25 0 560 761 ;
208
+ C -1 ; WX 600 ; N scaron ; B 68 -17 535 667 ;
209
+ C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ;
210
+ C -1 ; WX 600 ; N iacute ; B 77 0 523 661 ;
211
+ C -1 ; WX 600 ; N lozenge ; B 66 0 534 740 ;
212
+ C -1 ; WX 600 ; N Rcaron ; B 24 0 599 790 ;
213
+ C -1 ; WX 600 ; N Gcommaaccent ; B 22 -250 594 580 ;
214
+ C -1 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ;
215
+ C -1 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ;
216
+ C -1 ; WX 600 ; N Amacron ; B -9 0 609 708 ;
217
+ C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ;
218
+ C -1 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ;
219
+ C -1 ; WX 600 ; N Zdotaccent ; B 62 0 539 761 ;
220
+ C -1 ; WX 600 ; N Thorn ; B 48 0 557 562 ;
221
+ C -1 ; WX 600 ; N Omacron ; B 22 -18 578 708 ;
222
+ C -1 ; WX 600 ; N Racute ; B 24 0 599 784 ;
223
+ C -1 ; WX 600 ; N Sacute ; B 47 -22 553 784 ;
224
+ C -1 ; WX 600 ; N dcaron ; B 20 -15 727 626 ;
225
+ C -1 ; WX 600 ; N Umacron ; B 4 -18 596 708 ;
226
+ C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ;
227
+ C -1 ; WX 600 ; N threesuperior ; B 138 222 433 616 ;
228
+ C -1 ; WX 600 ; N Ograve ; B 22 -18 578 784 ;
229
+ C -1 ; WX 600 ; N Agrave ; B -9 0 609 784 ;
230
+ C -1 ; WX 600 ; N Abreve ; B -9 0 609 784 ;
231
+ C -1 ; WX 600 ; N multiply ; B 81 39 520 478 ;
232
+ C -1 ; WX 600 ; N uacute ; B -1 -15 569 661 ;
233
+ C -1 ; WX 600 ; N Tcaron ; B 21 0 579 790 ;
234
+ C -1 ; WX 600 ; N partialdiff ; B 63 -38 537 728 ;
235
+ C -1 ; WX 600 ; N ydieresis ; B -4 -142 601 638 ;
236
+ C -1 ; WX 600 ; N Nacute ; B 8 -12 610 784 ;
237
+ C -1 ; WX 600 ; N icircumflex ; B 73 0 523 657 ;
238
+ C -1 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ;
239
+ C -1 ; WX 600 ; N adieresis ; B 35 -15 570 638 ;
240
+ C -1 ; WX 600 ; N edieresis ; B 40 -15 563 638 ;
241
+ C -1 ; WX 600 ; N cacute ; B 40 -15 545 661 ;
242
+ C -1 ; WX 600 ; N nacute ; B 18 0 592 661 ;
243
+ C -1 ; WX 600 ; N umacron ; B -1 -15 569 585 ;
244
+ C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 790 ;
245
+ C -1 ; WX 600 ; N Iacute ; B 77 0 523 784 ;
246
+ C -1 ; WX 600 ; N plusminus ; B 71 24 529 515 ;
247
+ C -1 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ;
248
+ C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
249
+ C -1 ; WX 600 ; N Gbreve ; B 22 -18 594 784 ;
250
+ C -1 ; WX 600 ; N Idotaccent ; B 77 0 523 761 ;
251
+ C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ;
252
+ C -1 ; WX 600 ; N Egrave ; B 25 0 560 784 ;
253
+ C -1 ; WX 600 ; N racute ; B 47 0 580 661 ;
254
+ C -1 ; WX 600 ; N omacron ; B 30 -15 570 585 ;
255
+ C -1 ; WX 600 ; N Zacute ; B 62 0 539 784 ;
256
+ C -1 ; WX 600 ; N Zcaron ; B 62 0 539 790 ;
257
+ C -1 ; WX 600 ; N greaterequal ; B 26 0 523 696 ;
258
+ C -1 ; WX 600 ; N Eth ; B 30 0 594 562 ;
259
+ C -1 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ;
260
+ C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 523 626 ;
261
+ C -1 ; WX 600 ; N tcaron ; B 47 -15 532 703 ;
262
+ C -1 ; WX 600 ; N eogonek ; B 40 -199 563 454 ;
263
+ C -1 ; WX 600 ; N Uogonek ; B 4 -199 596 562 ;
264
+ C -1 ; WX 600 ; N Aacute ; B -9 0 609 784 ;
265
+ C -1 ; WX 600 ; N Adieresis ; B -9 0 609 761 ;
266
+ C -1 ; WX 600 ; N egrave ; B 40 -15 563 661 ;
267
+ C -1 ; WX 600 ; N zacute ; B 81 0 520 661 ;
268
+ C -1 ; WX 600 ; N iogonek ; B 77 -199 523 658 ;
269
+ C -1 ; WX 600 ; N Oacute ; B 22 -18 578 784 ;
270
+ C -1 ; WX 600 ; N oacute ; B 30 -15 570 661 ;
271
+ C -1 ; WX 600 ; N amacron ; B 35 -15 570 585 ;
272
+ C -1 ; WX 600 ; N sacute ; B 68 -17 535 661 ;
273
+ C -1 ; WX 600 ; N idieresis ; B 77 0 523 618 ;
274
+ C -1 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ;
275
+ C -1 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ;
276
+ C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ;
277
+ C -1 ; WX 600 ; N thorn ; B -14 -142 570 626 ;
278
+ C -1 ; WX 600 ; N twosuperior ; B 143 230 436 616 ;
279
+ C -1 ; WX 600 ; N Odieresis ; B 22 -18 578 761 ;
280
+ C -1 ; WX 600 ; N mu ; B -1 -142 569 439 ;
281
+ C -1 ; WX 600 ; N igrave ; B 77 0 523 661 ;
282
+ C -1 ; WX 600 ; N ohungarumlaut ; B 30 -15 668 661 ;
283
+ C -1 ; WX 600 ; N Eogonek ; B 25 -199 576 562 ;
284
+ C -1 ; WX 600 ; N dcroat ; B 20 -15 591 626 ;
285
+ C -1 ; WX 600 ; N threequarters ; B -47 -60 648 661 ;
286
+ C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ;
287
+ C -1 ; WX 600 ; N lcaron ; B 77 0 597 626 ;
288
+ C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 599 562 ;
289
+ C -1 ; WX 600 ; N Lacute ; B 39 0 578 784 ;
290
+ C -1 ; WX 600 ; N trademark ; B -9 230 749 562 ;
291
+ C -1 ; WX 600 ; N edotaccent ; B 40 -15 563 638 ;
292
+ C -1 ; WX 600 ; N Igrave ; B 77 0 523 784 ;
293
+ C -1 ; WX 600 ; N Imacron ; B 77 0 523 708 ;
294
+ C -1 ; WX 600 ; N Lcaron ; B 39 0 637 562 ;
295
+ C -1 ; WX 600 ; N onehalf ; B -47 -60 648 661 ;
296
+ C -1 ; WX 600 ; N lessequal ; B 26 0 523 696 ;
297
+ C -1 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ;
298
+ C -1 ; WX 600 ; N ntilde ; B 18 0 592 636 ;
299
+ C -1 ; WX 600 ; N Uhungarumlaut ; B 4 -18 638 784 ;
300
+ C -1 ; WX 600 ; N Eacute ; B 25 0 560 784 ;
301
+ C -1 ; WX 600 ; N emacron ; B 40 -15 563 585 ;
302
+ C -1 ; WX 600 ; N gbreve ; B 30 -146 580 661 ;
303
+ C -1 ; WX 600 ; N onequarter ; B -56 -60 656 661 ;
304
+ C -1 ; WX 600 ; N Scaron ; B 47 -22 553 790 ;
305
+ C -1 ; WX 600 ; N Scommaaccent ; B 47 -250 553 582 ;
306
+ C -1 ; WX 600 ; N Ohungarumlaut ; B 22 -18 628 784 ;
307
+ C -1 ; WX 600 ; N degree ; B 86 243 474 616 ;
308
+ C -1 ; WX 600 ; N ograve ; B 30 -15 570 661 ;
309
+ C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 790 ;
310
+ C -1 ; WX 600 ; N ugrave ; B -1 -15 569 661 ;
311
+ C -1 ; WX 600 ; N radical ; B -19 -104 473 778 ;
312
+ C -1 ; WX 600 ; N Dcaron ; B 30 0 594 790 ;
313
+ C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 580 454 ;
314
+ C -1 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ;
315
+ C -1 ; WX 600 ; N otilde ; B 30 -15 570 636 ;
316
+ C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 599 562 ;
317
+ C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 578 562 ;
318
+ C -1 ; WX 600 ; N Atilde ; B -9 0 609 759 ;
319
+ C -1 ; WX 600 ; N Aogonek ; B -9 -199 625 562 ;
320
+ C -1 ; WX 600 ; N Aring ; B -9 0 609 801 ;
321
+ C -1 ; WX 600 ; N Otilde ; B 22 -18 578 759 ;
322
+ C -1 ; WX 600 ; N zdotaccent ; B 81 0 520 638 ;
323
+ C -1 ; WX 600 ; N Ecaron ; B 25 0 560 790 ;
324
+ C -1 ; WX 600 ; N Iogonek ; B 77 -199 523 562 ;
325
+ C -1 ; WX 600 ; N kcommaaccent ; B 20 -250 585 626 ;
326
+ C -1 ; WX 600 ; N minus ; B 71 203 529 313 ;
327
+ C -1 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ;
328
+ C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ;
329
+ C -1 ; WX 600 ; N tcommaaccent ; B 47 -250 532 562 ;
330
+ C -1 ; WX 600 ; N logicalnot ; B 71 103 529 413 ;
331
+ C -1 ; WX 600 ; N odieresis ; B 30 -15 570 638 ;
332
+ C -1 ; WX 600 ; N udieresis ; B -1 -15 569 638 ;
333
+ C -1 ; WX 600 ; N notequal ; B 12 -47 537 563 ;
334
+ C -1 ; WX 600 ; N gcommaaccent ; B 30 -146 580 714 ;
335
+ C -1 ; WX 600 ; N eth ; B 58 -27 543 626 ;
336
+ C -1 ; WX 600 ; N zcaron ; B 81 0 520 667 ;
337
+ C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 592 454 ;
338
+ C -1 ; WX 600 ; N onesuperior ; B 153 230 447 616 ;
339
+ C -1 ; WX 600 ; N imacron ; B 77 0 523 585 ;
340
+ C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
341
+ EndCharMetrics
342
+ EndFontMetrics