rbpdf-fruitcake0525 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +96 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE.TXT +504 -0
  5. data/README.md +64 -0
  6. data/Rakefile +12 -0
  7. data/lib/core/rmagick.rb +93 -0
  8. data/lib/htmlcolors.rb +207 -0
  9. data/lib/rbpdf.rb +15138 -0
  10. data/lib/rbpdf/version.rb +3 -0
  11. data/lib/unicode_data.rb +18315 -0
  12. data/logo_example.png +0 -0
  13. data/rbpdf.gemspec +37 -0
  14. data/test/err_font1.rb +3 -0
  15. data/test/err_font2.rb +4 -0
  16. data/test/logo_rbpdf_8bit.gif +0 -0
  17. data/test/logo_rbpdf_8bit.jpg +0 -0
  18. data/test/logo_rbpdf_8bit.png +0 -0
  19. data/test/logo_rbpdf_8bit_alpha.gif +0 -0
  20. data/test/logo_rbpdf_mono_gray.jpg +0 -0
  21. data/test/logo_rbpdf_mono_gray.png +0 -0
  22. data/test/logo_rbpdf_mono_rgb.jpg +0 -0
  23. data/test/logo_rbpdf_mono_rgb.png +0 -0
  24. data/test/png_test_alpha.png +0 -0
  25. data/test/png_test_msk_alpha.png +0 -0
  26. data/test/png_test_non_alpha.png +0 -0
  27. data/test/rbpdf_bidi_test.rb +438 -0
  28. data/test/rbpdf_bookmark_test.rb +56 -0
  29. data/test/rbpdf_cell_test.rb +266 -0
  30. data/test/rbpdf_content_test.rb +196 -0
  31. data/test/rbpdf_css_test.rb +636 -0
  32. data/test/rbpdf_dom_test.rb +338 -0
  33. data/test/rbpdf_font_func_test.rb +41 -0
  34. data/test/rbpdf_font_style_test.rb +33 -0
  35. data/test/rbpdf_font_test.rb +291 -0
  36. data/test/rbpdf_format_test.rb +26 -0
  37. data/test/rbpdf_func_test.rb +135 -0
  38. data/test/rbpdf_html_anchor_test.rb +107 -0
  39. data/test/rbpdf_html_func_test.rb +166 -0
  40. data/test/rbpdf_html_test.rb +580 -0
  41. data/test/rbpdf_htmlcell_test.rb +64 -0
  42. data/test/rbpdf_image_rmagick_test.rb +294 -0
  43. data/test/rbpdf_image_test.rb +107 -0
  44. data/test/rbpdf_test.rb +377 -0
  45. data/test/rbpdf_transaction_test.rb +199 -0
  46. data/test/rbpdf_viewerpreferences_test.rb +37 -0
  47. data/test/rbpdf_write_test.rb +225 -0
  48. data/test/test_helper.rb +4 -0
  49. data/test_unicode.rbpdf +115 -0
  50. data/utf8test.txt +120 -0
  51. metadata +205 -0
@@ -0,0 +1,338 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < Test::Unit::TestCase
4
+ class MYPDF < RBPDF
5
+ def getHtmlDomArray(html)
6
+ super
7
+ end
8
+ def openHTMLTagHandler(dom, key, cell)
9
+ super
10
+ end
11
+ def get_temp_rtl
12
+ @tmprtl
13
+ end
14
+ end
15
+
16
+ test "Dom Basic" do
17
+ pdf = MYPDF.new
18
+
19
+ # Simple Text
20
+ dom = pdf.getHtmlDomArray('abc')
21
+ assert_equal 0, dom[0]['parent'] # Root
22
+ assert_equal false, dom[0]['tag']
23
+ assert_equal({'tag'=>false, 'value'=>'abc', 'elkey'=>0, 'parent'=>0, 'block'=>false}, dom[1])
24
+
25
+ # Simple Tag
26
+ dom = pdf.getHtmlDomArray('<b>abc</b>')
27
+ assert_equal dom.length, 4
28
+
29
+ assert_equal 0, dom[0]['parent'] # Root
30
+ assert_equal false, dom[0]['tag']
31
+ assert_equal({}, dom[0]['attribute'])
32
+
33
+ assert_equal dom[1]['parent'], 0 # parent -> parent tag key
34
+ assert_equal dom[1]['elkey'], 0
35
+ assert_equal dom[1]['tag'], true
36
+ assert_equal dom[1]['opening'], true
37
+ assert_equal dom[1]['value'], 'b'
38
+ assert_equal dom[1]['attribute'], {}
39
+
40
+ assert_equal({'tag' => false, 'value'=>'abc', 'elkey'=>1, 'parent'=>1, 'block'=>false}, dom[2]) # parent -> open tag key
41
+
42
+ assert_equal dom[3]['parent'], 1 # parent -> open tag key
43
+ assert_equal dom[3]['elkey'], 2
44
+ assert_equal dom[3]['tag'], true
45
+ assert_equal dom[3]['opening'], false
46
+ assert_equal dom[3]['value'], 'b'
47
+
48
+ # Error Tag (doble colse tag)
49
+ dom = pdf.getHtmlDomArray('</ul></div>')
50
+
51
+ assert_equal 0, dom[0]['parent'] # Root
52
+ assert_equal false, dom[0]['tag']
53
+ assert_equal({}, dom[0]['attribute'])
54
+
55
+ if dom.length == 3 # for Rails 3.x/4.0/4.1 (no use Rails 4.2 later)
56
+ assert_equal dom[1]['parent'], 0 # parent -> Root key
57
+ assert_equal dom[1]['elkey'], 0
58
+ assert_equal dom[1]['tag'], true
59
+ assert_equal dom[1]['opening'], false
60
+ assert_equal dom[1]['value'], 'ul'
61
+
62
+ assert_equal dom[2]['parent'], 0 # parent -> Root key
63
+ assert_equal dom[2]['elkey'], 1
64
+ assert_equal dom[2]['tag'], true
65
+ assert_equal dom[2]['opening'], false
66
+ assert_equal dom[2]['value'], 'div'
67
+ end
68
+
69
+ # Attribute
70
+ dom = pdf.getHtmlDomArray('<p style="text-align:justify">abc</p>')
71
+ assert_equal dom.length, 4
72
+
73
+ assert_equal 0, dom[0]['parent'] # Root
74
+ assert_equal false, dom[0]['tag']
75
+ assert_equal({}, dom[0]['attribute'])
76
+
77
+ assert_equal dom[1]['parent'], 0 # parent -> parent tag key
78
+ assert_equal dom[1]['elkey'], 0
79
+ assert_equal dom[1]['tag'], true
80
+ assert_equal dom[1]['opening'], true
81
+ assert_equal dom[1]['value'], 'p'
82
+ assert_not_nil dom[1]['attribute']
83
+ assert_equal dom[1]['attribute']['style'].gsub(' ', ''), 'text-align:justify;'
84
+ assert_equal dom[1]['align'], 'J'
85
+
86
+ # Table border
87
+ dom = pdf.getHtmlDomArray('<table border="1"><tr><td>abc</td></tr></table>')
88
+ ## added marker tag (by getHtmlDomArray()) ##
89
+ # '<table border="1"><tr><td>abc<marker style="font-size:0"/></td></tr></table>'
90
+ assert_equal dom.length, 9
91
+
92
+ assert_equal dom[1]['parent'], 0 # parent -> parent tag key
93
+ assert_equal dom[1]['elkey'], 0
94
+ assert_equal dom[1]['tag'], true
95
+ assert_equal dom[1]['opening'], true
96
+ assert_equal dom[1]['value'], 'table'
97
+ assert_equal dom[1]['attribute']['border'], '1'
98
+
99
+ ## marker tag (by getHtmlDomArray())
100
+ assert_equal dom[5]['parent'], 3 # parent -> parent tag key
101
+ assert_equal dom[5]['elkey'], 4
102
+ assert_equal dom[5]['tag'], true
103
+ assert_equal dom[5]['opening'], true
104
+ assert_equal dom[5]['value'], 'marker'
105
+ assert_equal dom[5]['attribute']['style'], 'font-size:0'
106
+
107
+ # Table td Width
108
+ dom = pdf.getHtmlDomArray('<table><tr><td width="10">abc</td></tr></table>')
109
+ ## added marker tag (by getHtmlDomArray()) ##
110
+ # '<table><tr><td width="10">abc<marker style="font-size:0"/></td></tr></table>'
111
+ assert_equal dom.length, 9
112
+
113
+ assert_equal dom[3]['parent'], 2 # parent -> parent tag key
114
+ assert_equal dom[3]['elkey'], 2
115
+ assert_equal dom[3]['tag'], true
116
+ assert_equal dom[3]['opening'], true
117
+ assert_equal dom[3]['value'], 'td'
118
+ assert_equal dom[3]['width'], '10'
119
+ end
120
+
121
+ test "Dom self close tag test" do
122
+ pdf = MYPDF.new
123
+
124
+ # Simple Tag
125
+ dom = pdf.getHtmlDomArray('<b>ab<br>c</b>')
126
+ assert_equal dom.length, 6
127
+
128
+ assert_equal 0, dom[0]['parent'] # Root
129
+ assert_equal false, dom[0]['tag']
130
+ assert_equal({}, dom[0]['attribute'])
131
+
132
+ # <b>
133
+ assert_equal dom[1]['parent'], 0 # parent -> parent tag key
134
+ assert_equal dom[1]['elkey'], 0
135
+ assert_equal dom[1]['tag'], true
136
+ assert_equal dom[1]['opening'], true
137
+ assert_equal dom[1]['value'], 'b'
138
+ assert_equal dom[1]['attribute'], {}
139
+
140
+ # ab
141
+ assert_equal({'tag' => false, 'value'=>'ab', 'elkey'=>1, 'parent'=>1, 'block'=>false}, dom[2]) # parent -> open tag key
142
+
143
+ # <br>
144
+ assert_equal dom[3]['parent'], 1 # parent -> open tag key
145
+ assert_equal dom[3]['elkey'], 2
146
+ assert_equal dom[3]['tag'], true
147
+ assert_equal dom[3]['opening'], true
148
+ assert_equal dom[3]['value'], 'br'
149
+ assert_equal dom[3]['attribute'], {}
150
+
151
+ # c
152
+ assert_equal({'tag' => false, 'value'=>'c', 'elkey'=>3, 'parent'=>1, 'block'=>false}, dom[4]) # parent -> open tag key
153
+
154
+ # </b>
155
+ assert_equal dom[5]['parent'], 1 # parent -> open tag key
156
+ assert_equal dom[5]['elkey'], 4
157
+ assert_equal dom[5]['tag'], true
158
+ assert_equal dom[5]['opening'], false
159
+ assert_equal dom[5]['value'], 'b'
160
+
161
+ dom2 = pdf.getHtmlDomArray('<b>ab<br/>c</b>')
162
+ assert_equal dom, dom2
163
+
164
+ htmlcontent = '<b><img src="/public/ng.png" alt="test alt attribute" width="30" height="30" border="0"/></b>'
165
+ dom1 = pdf.getHtmlDomArray(htmlcontent)
166
+ htmlcontent = '<b><img src="/public/ng.png" alt="test alt attribute" width="30" height="30" border="0"></b>'
167
+ dom2 = pdf.getHtmlDomArray(htmlcontent)
168
+ assert_equal dom1, dom2
169
+
170
+ dom1 = pdf.getHtmlDomArray('<b>ab<hr/>c</b>')
171
+ dom2 = pdf.getHtmlDomArray('<b>ab<hr>c</b>')
172
+ assert_equal dom1, dom2
173
+ end
174
+
175
+ test "Dom HTMLTagHandler Basic test" do
176
+ pdf = MYPDF.new
177
+ pdf.add_page
178
+
179
+ # Simple HTML
180
+ htmlcontent = '<h1>HTML Example</h1>'
181
+ dom1 = pdf.getHtmlDomArray(htmlcontent)
182
+ dom2 = pdf.openHTMLTagHandler(dom1, 1, false)
183
+ assert_equal dom1, dom2
184
+ end
185
+
186
+ test "Dom HTMLTagHandler DIR RTL test" do
187
+ pdf = MYPDF.new
188
+ pdf.add_page
189
+ temprtl = pdf.get_temp_rtl
190
+ assert_equal temprtl, false
191
+
192
+ # LTR, ltr
193
+ htmlcontent = '<p dir="ltr">HTML Example</p>'
194
+ dom = pdf.getHtmlDomArray(htmlcontent)
195
+ dom = pdf.openHTMLTagHandler(dom, 1, false)
196
+
197
+ assert_equal dom[1]['tag'], true
198
+ assert_equal dom[1]['opening'], true
199
+ assert_equal dom[1]['value'], 'p'
200
+ assert_equal dom[1]['attribute']['dir'], 'ltr'
201
+
202
+ temprtl = pdf.get_temp_rtl
203
+ assert_equal temprtl, false
204
+
205
+ # LTR, rtl
206
+ htmlcontent = '<p dir="rtl">HTML Example</p>'
207
+ dom = pdf.getHtmlDomArray(htmlcontent)
208
+ dom = pdf.openHTMLTagHandler(dom, 1, false)
209
+ assert_equal dom.length, 4
210
+
211
+ assert_equal dom[1]['tag'], true
212
+ assert_equal dom[1]['opening'], true
213
+ assert_equal dom[1]['value'], 'p'
214
+ assert_equal dom[1]['attribute']['dir'], 'rtl'
215
+
216
+ temprtl = pdf.get_temp_rtl
217
+ assert_equal temprtl, 'R'
218
+
219
+ # LTR, ltr
220
+ htmlcontent = '<p dir="ltr">HTML Example</p>'
221
+ dom = pdf.getHtmlDomArray(htmlcontent)
222
+ dom = pdf.openHTMLTagHandler(dom, 1, false)
223
+
224
+ assert_equal dom[1]['tag'], true
225
+ assert_equal dom[1]['opening'], true
226
+ assert_equal dom[1]['value'], 'p'
227
+ assert_equal dom[1]['attribute']['dir'], 'ltr'
228
+
229
+ temprtl = pdf.get_temp_rtl
230
+ assert_equal temprtl, false
231
+ end
232
+
233
+ test "Dom HTMLTagHandler DIR LTR test" do
234
+ pdf = MYPDF.new
235
+ pdf.add_page
236
+ temprtl = pdf.get_temp_rtl
237
+ assert_equal temprtl, false
238
+ pdf.set_rtl(true)
239
+
240
+ # RTL, ltr
241
+ htmlcontent = '<p dir="ltr">HTML Example</p>'
242
+ dom = pdf.getHtmlDomArray(htmlcontent)
243
+ dom = pdf.openHTMLTagHandler(dom, 1, false)
244
+ assert_equal dom.length, 4
245
+
246
+ assert_equal dom[1]['tag'], true
247
+ assert_equal dom[1]['opening'], true
248
+ assert_equal dom[1]['value'], 'p'
249
+ assert_equal dom[1]['attribute']['dir'], 'ltr'
250
+
251
+ temprtl = pdf.get_temp_rtl
252
+ assert_equal temprtl, 'L'
253
+
254
+ # RTL, rtl
255
+ htmlcontent = '<p dir="rtl">HTML Example</p>'
256
+ dom = pdf.getHtmlDomArray(htmlcontent)
257
+ dom = pdf.openHTMLTagHandler(dom, 1, false)
258
+ assert_equal dom.length, 4
259
+
260
+ assert_equal dom[1]['tag'], true
261
+ assert_equal dom[1]['opening'], true
262
+ assert_equal dom[1]['value'], 'p'
263
+ assert_equal dom[1]['attribute']['dir'], 'rtl'
264
+
265
+ temprtl = pdf.get_temp_rtl
266
+ assert_equal temprtl, false
267
+ end
268
+
269
+ test "Dom HTMLTagHandler img y position with height attribute test" do
270
+ pdf = MYPDF.new
271
+ pdf.add_page
272
+
273
+ # Image Error HTML
274
+ htmlcontent = '<img src="/public/ng.png" alt="test alt attribute" width="30" height="30" border="0"/>'
275
+ dom1 = pdf.getHtmlDomArray(htmlcontent)
276
+ y1 = pdf.get_y
277
+
278
+ dom2 = pdf.openHTMLTagHandler(dom1, 1, false)
279
+ y2 = pdf.get_y
280
+ assert_equal dom1, dom2
281
+ assert_equal pdf.get_image_rby - (12 / pdf.get_scale_factor) , y2
282
+ end
283
+
284
+ test "Dom HTMLTagHandler img y position without height attribute test" do
285
+ pdf = MYPDF.new
286
+ pdf.add_page
287
+
288
+ # Image Error HTML
289
+ htmlcontent = '<img src="/public/ng.png" alt="test alt attribute" border="0"/>'
290
+ dom1 = pdf.getHtmlDomArray(htmlcontent)
291
+ y1 = pdf.get_y
292
+
293
+ dom2 = pdf.openHTMLTagHandler(dom1, 1, false)
294
+ y2 = pdf.get_y
295
+ assert_equal dom1, dom2
296
+ assert_equal y1, y2
297
+ end
298
+
299
+ test "Dom open angled bracket '<' test" do
300
+ pdf = MYPDF.new
301
+ pdf.add_page
302
+
303
+ htmlcontent = "<p>AAA '<'-BBB << <<< '</' '<//' '<///' CCC.</p>"
304
+ dom = pdf.getHtmlDomArray(htmlcontent)
305
+ assert_equal dom.length, 4
306
+
307
+ assert_equal 0, dom[0]['parent'] # Root
308
+ assert_equal false, dom[0]['tag']
309
+ assert_equal({}, dom[0]['attribute'])
310
+
311
+ assert_equal 0, dom[1]['parent'] # parent -> parent tag key
312
+ assert_equal 0, dom[1]['elkey']
313
+ assert_equal true, dom[1]['tag']
314
+ assert_equal true, dom[1]['opening']
315
+ assert_equal 'p', dom[1]['value']
316
+ assert_equal({}, dom[1]['attribute'])
317
+
318
+ assert_equal 1, dom[2]['parent'] # parent -> open tag key
319
+ assert_equal 1, dom[2]['elkey']
320
+ assert_equal false, dom[2]['tag']
321
+ assert_equal "AAA '<'-BBB << <<< '</' '<//' '<///' CCC.", dom[2]['value']
322
+
323
+ assert_equal 1, dom[3]['parent'] # parent -> open tag key
324
+ assert_equal 2, dom[3]['elkey']
325
+ assert_equal true, dom[3]['tag']
326
+ assert_equal false, dom[3]['opening']
327
+ assert_equal 'p', dom[3]['value']
328
+ end
329
+
330
+ test "getHtmlDomArray encoding test" do
331
+ return unless 'test'.respond_to?(:force_encoding)
332
+
333
+ pdf = MYPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
334
+ htmlcontent = 'test'.force_encoding('ASCII-8BIT')
335
+ dom = pdf.getHtmlDomArray(htmlcontent)
336
+ assert_equal htmlcontent.encoding.to_s, 'ASCII-8BIT'
337
+ end
338
+ end
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfFontFuncTest < Test::Unit::TestCase
4
+ class MYPDF < RBPDF
5
+ def putAPXObject(w=0, h=0, stream='')
6
+ super
7
+ end
8
+ end
9
+ test "Font get_font_descent function test 1" do
10
+ pdf = RBPDF.new
11
+ fontdescent = pdf.get_font_descent('times', '', 18)
12
+ assert_in_delta 0.95, fontdescent, 0.01
13
+ end
14
+
15
+ test "Font get_font_descent function test 2" do
16
+ pdf = RBPDF.new
17
+ fontdescent = pdf.get_font_descent('freesans', '', 18)
18
+ assert_in_delta 1.91, fontdescent, 0.01
19
+ end
20
+
21
+ test "Font get_font_ascent function test 1" do
22
+ pdf = RBPDF.new
23
+ fontascent = pdf.get_font_ascent('times', '', 18)
24
+ assert_in_delta 5.39, fontascent, 0.01
25
+ end
26
+
27
+ test "Font get_font_ascent function test 2" do
28
+ pdf = RBPDF.new
29
+ fontascent = pdf.get_font_ascent('freesans', '', 18)
30
+ assert_in_delta 6.35, fontascent, 0.01
31
+ end
32
+
33
+ test "putAPXObject test" do
34
+ pdf = MYPDF.new
35
+
36
+ apxo_obj_id = pdf.putAPXObject
37
+ assert_equal apxo_obj_id, 400001
38
+ apxo_obj_id = pdf.putAPXObject
39
+ assert_equal apxo_obj_id, 400002
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfFontStyleTest < Test::Unit::TestCase
4
+ class MYPDF < RBPDF
5
+ def dounderline(x, y, txt)
6
+ super
7
+ end
8
+ def dolinethrough(x, y, txt)
9
+ super
10
+ end
11
+ def dooverline(x, y, txt)
12
+ super
13
+ end
14
+ end
15
+
16
+ test "Font dounderline function test 1" do
17
+ pdf = MYPDF.new
18
+ line = pdf.dounderline(10, 10, "test")
19
+ assert_equal line, '28.35 812.94 19.34 -0.60 re f'
20
+ end
21
+
22
+ test "Font dolinethrough function test 1" do
23
+ pdf = MYPDF.new
24
+ line = pdf.dolinethrough(10, 10, "test")
25
+ assert_equal line, '28.35 816.94 19.34 -0.60 re f'
26
+ end
27
+
28
+ test "Font dooverline function test 1" do
29
+ pdf = MYPDF.new
30
+ line = pdf.dooverline(10, 10, "test")
31
+ assert_equal line, '28.35 824.34 19.34 -0.60 re f'
32
+ end
33
+ end
@@ -0,0 +1,291 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfFontTest < Test::Unit::TestCase
4
+ class MYPDF < RBPDF
5
+ def putfonts()
6
+ super
7
+ end
8
+
9
+ def getFontBuffer(font)
10
+ super
11
+ end
12
+
13
+ def getFontsList()
14
+ super
15
+ end
16
+
17
+ def fontlist()
18
+ @fontlist
19
+ end
20
+ end
21
+
22
+ test "Font subsetting enable/disable test" do
23
+ pdf = MYPDF.new
24
+ subsetting = pdf.get_font_subsetting
25
+ assert_equal true, subsetting
26
+
27
+ pdf.set_font_subsetting(false)
28
+ subsetting = pdf.get_font_subsetting
29
+ assert_equal false, subsetting
30
+
31
+ pdf.set_font_subsetting(true)
32
+ subsetting = pdf.get_font_subsetting
33
+ assert_equal true, subsetting
34
+ end
35
+
36
+ test "Font getFontsList" do
37
+ pdf = MYPDF.new
38
+ pdf.getFontsList()
39
+ fonts = pdf.fontlist()
40
+ assert fonts.include?('kozminproregular')
41
+ end
42
+
43
+ test "core Font test" do
44
+ pdf = MYPDF.new
45
+
46
+ pdf.set_font('helvetica', '', 18)
47
+ pdf.set_font('helvetica', 'B', 18)
48
+ pdf.set_font('helvetica', 'I', 18)
49
+ pdf.set_font('helvetica', 'BI', 18)
50
+
51
+ font = pdf.getFontBuffer('helvetica')
52
+ assert_equal font['name'], 'Helvetica'
53
+ assert_equal font['dw'], 556
54
+ font = pdf.getFontBuffer('helveticaB')
55
+ assert_equal font['name'], 'Helvetica-Bold'
56
+ assert_equal font['dw'], 556
57
+ font = pdf.getFontBuffer('helveticaI')
58
+ assert_equal font['name'], 'Helvetica-Oblique'
59
+ assert_equal font['dw'], 556
60
+ font = pdf.getFontBuffer('helveticaBI')
61
+ assert_equal font['name'], 'Helvetica-BoldOblique'
62
+ assert_equal font['dw'], 556
63
+
64
+ pdf.set_font('times', '', 18)
65
+ pdf.set_font('times', 'B', 18)
66
+ pdf.set_font('times', 'I', 18)
67
+ pdf.set_font('times', 'BI', 18)
68
+
69
+ font = pdf.getFontBuffer('times')
70
+ assert_equal font['name'], 'Times-Roman'
71
+ font = pdf.getFontBuffer('timesB')
72
+ assert_equal font['name'], 'Times-Bold'
73
+ font = pdf.getFontBuffer('timesI')
74
+ assert_equal font['name'], 'Times-Italic'
75
+ font = pdf.getFontBuffer('timesBI')
76
+ assert_equal font['name'], 'Times-BoldItalic'
77
+
78
+ pdf.set_font('courier', '', 18)
79
+ pdf.set_font('courier', 'B', 18)
80
+ pdf.set_font('courier', 'I', 18)
81
+ pdf.set_font('courier', 'BI', 18)
82
+
83
+ font = pdf.getFontBuffer('courier')
84
+ assert_equal font['name'], 'Courier'
85
+ font = pdf.getFontBuffer('courierB')
86
+ assert_equal font['name'], 'Courier-Bold'
87
+ font = pdf.getFontBuffer('courierI')
88
+ assert_equal font['name'], 'Courier-Oblique'
89
+ font = pdf.getFontBuffer('courierBI')
90
+ assert_equal font['name'], 'Courier-BoldOblique'
91
+
92
+ pdf.set_font('symbol', '', 18)
93
+ font = pdf.getFontBuffer('symbol')
94
+ assert_equal font['name'], 'Symbol'
95
+
96
+ pdf.set_font('zapfdingbats', '', 18)
97
+ font = pdf.getFontBuffer('zapfdingbats')
98
+ assert_equal font['name'], 'ZapfDingbats'
99
+
100
+ pdf.putfonts()
101
+ end
102
+
103
+ test "TrueTypeUnicode Subset Font test" do
104
+ pdf = MYPDF.new
105
+ pdf.set_font_subsetting(true)
106
+
107
+ pdf.set_font('freesans', '', 18)
108
+ pdf.set_font('freesans', 'B', 18)
109
+ pdf.set_font('freesans', 'I', 18)
110
+ pdf.set_font('freesans', 'BI', 18)
111
+
112
+ pdf.set_font('freeserif', '', 18)
113
+ pdf.set_font('freeserif', 'B', 18)
114
+ pdf.set_font('freeserif', 'I', 18)
115
+ pdf.set_font('freeserif', 'BI', 18)
116
+
117
+ pdf.set_font('freemono', '', 18)
118
+ pdf.set_font('freemono', 'B', 18)
119
+ pdf.set_font('freemono', 'I', 18)
120
+ pdf.set_font('freemono', 'BI', 18)
121
+
122
+ pdf.set_font('dejavusans', '', 18)
123
+ pdf.set_font('dejavusans', 'B', 18)
124
+ pdf.set_font('dejavusans', 'I', 18)
125
+ pdf.set_font('dejavusans', 'BI', 18)
126
+
127
+ pdf.set_font('dejavusanscondensed', '', 18)
128
+ pdf.set_font('dejavusanscondensed', 'B', 18)
129
+ pdf.set_font('dejavusanscondensed', 'I', 18)
130
+ pdf.set_font('dejavusanscondensed', 'BI', 18)
131
+
132
+ pdf.set_font('dejavusansmono', '', 18)
133
+ pdf.set_font('dejavusansmono', 'B', 18)
134
+ pdf.set_font('dejavusansmono', 'I', 18)
135
+ pdf.set_font('dejavusansmono', 'BI', 18)
136
+
137
+ pdf.set_font('dejavuserif', '', 18)
138
+ pdf.set_font('dejavuserif', 'B', 18)
139
+ pdf.set_font('dejavuserif', 'I', 18)
140
+ pdf.set_font('dejavuserif', 'BI', 18)
141
+
142
+ pdf.set_font('dejavuserifcondensed', '', 18)
143
+ pdf.set_font('dejavuserifcondensed', 'B', 18)
144
+ pdf.set_font('dejavuserifcondensed', 'I', 18)
145
+ pdf.set_font('dejavuserifcondensed', 'BI', 18)
146
+
147
+ pdf.set_font('dejavusansextralight', '', 18)
148
+
149
+ pdf.putfonts()
150
+ end
151
+
152
+ test "TrueTypeUnicode Font test" do
153
+ pdf = MYPDF.new
154
+ pdf.set_font_subsetting(false)
155
+
156
+ pdf.set_font('freesans', '', 18)
157
+ pdf.set_font('freesans', 'B', 18)
158
+ pdf.set_font('freesans', 'I', 18)
159
+ pdf.set_font('freesans', 'BI', 18)
160
+
161
+ pdf.set_font('freeserif', '', 18)
162
+ pdf.set_font('freeserif', 'B', 18)
163
+ pdf.set_font('freeserif', 'I', 18)
164
+ pdf.set_font('freeserif', 'BI', 18)
165
+
166
+ pdf.set_font('freemono', '', 18)
167
+ pdf.set_font('freemono', 'B', 18)
168
+ pdf.set_font('freemono', 'I', 18)
169
+ pdf.set_font('freemono', 'BI', 18)
170
+
171
+ pdf.set_font('dejavusans', '', 18)
172
+ pdf.set_font('dejavusans', 'B', 18)
173
+ pdf.set_font('dejavusans', 'I', 18)
174
+ pdf.set_font('dejavusans', 'BI', 18)
175
+
176
+ pdf.set_font('dejavusanscondensed', '', 18)
177
+ pdf.set_font('dejavusanscondensed', 'B', 18)
178
+ pdf.set_font('dejavusanscondensed', 'I', 18)
179
+ pdf.set_font('dejavusanscondensed', 'BI', 18)
180
+
181
+ pdf.set_font('dejavusansmono', '', 18)
182
+ pdf.set_font('dejavusansmono', 'B', 18)
183
+ pdf.set_font('dejavusansmono', 'I', 18)
184
+ pdf.set_font('dejavusansmono', 'BI', 18)
185
+
186
+ pdf.set_font('dejavuserif', '', 18)
187
+ pdf.set_font('dejavuserif', 'B', 18)
188
+ pdf.set_font('dejavuserif', 'I', 18)
189
+ pdf.set_font('dejavuserif', 'BI', 18)
190
+
191
+ pdf.set_font('dejavuserifcondensed', '', 18)
192
+ pdf.set_font('dejavuserifcondensed', 'B', 18)
193
+ pdf.set_font('dejavuserifcondensed', 'I', 18)
194
+ pdf.set_font('dejavuserifcondensed', 'BI', 18)
195
+
196
+ pdf.set_font('dejavusansextralight', '', 18)
197
+
198
+ pdf.putfonts()
199
+ end
200
+
201
+ test "cidfont0 Font test" do
202
+ pdf = MYPDF.new
203
+
204
+ pdf.set_font('cid0cs', '', 18)
205
+ pdf.set_font('cid0cs', 'B', 18)
206
+ pdf.set_font('cid0cs', 'I', 18)
207
+ pdf.set_font('cid0cs', 'BI', 18)
208
+
209
+ pdf.set_font('cid0ct', '', 18)
210
+ pdf.set_font('cid0ct', 'B', 18)
211
+ pdf.set_font('cid0ct', 'I', 18)
212
+ pdf.set_font('cid0ct', 'BI', 18)
213
+
214
+ pdf.set_font('cid0jp', '', 18)
215
+ pdf.set_font('cid0jp', 'B', 18)
216
+ pdf.set_font('cid0jp', 'I', 18)
217
+ pdf.set_font('cid0jp', 'BI', 18)
218
+
219
+ pdf.set_font('cid0kr', '', 18)
220
+ pdf.set_font('cid0kr', 'B', 18)
221
+ pdf.set_font('cid0kr', 'I', 18)
222
+ pdf.set_font('cid0kr', 'BI', 18)
223
+
224
+ pdf.set_font('kozgopromedium', '', 18)
225
+ pdf.set_font('kozgopromedium', 'B', 18)
226
+ pdf.set_font('kozgopromedium', 'I', 18)
227
+ pdf.set_font('kozgopromedium', 'BI', 18)
228
+
229
+ font = pdf.getFontBuffer('kozgopromedium')
230
+ assert_equal font['desc']['StemV'], 99
231
+ assert_equal font['desc']['ItalicAngle'], 0
232
+
233
+ font = pdf.getFontBuffer('kozgopromediumB')
234
+ assert_equal font['desc']['StemV'], 99 * 2
235
+ assert_equal font['desc']['ItalicAngle'], 0
236
+
237
+ font = pdf.getFontBuffer('kozgopromediumI')
238
+ assert_equal font['desc']['StemV'], 99
239
+ assert_equal font['desc']['ItalicAngle'], -11
240
+
241
+ font = pdf.getFontBuffer('kozgopromediumBI')
242
+ assert_equal font['desc']['StemV'], 99 * 2
243
+ assert_equal font['desc']['ItalicAngle'], -11
244
+
245
+ pdf.set_font('kozminproregular', '', 18)
246
+ pdf.set_font('kozminproregular', 'B', 18)
247
+ pdf.set_font('kozminproregular', 'I', 18)
248
+ pdf.set_font('kozminproregular', 'BI', 18)
249
+
250
+ pdf.set_font('msungstdlight', '', 18)
251
+ pdf.set_font('msungstdlight', 'B', 18)
252
+ pdf.set_font('msungstdlight', 'I', 18)
253
+ pdf.set_font('msungstdlight', 'BI', 18)
254
+
255
+ pdf.set_font('stsongstdlight', '', 18)
256
+ pdf.set_font('stsongstdlight', 'B', 18)
257
+ pdf.set_font('stsongstdlight', 'I', 18)
258
+ pdf.set_font('stsongstdlight', 'BI', 18)
259
+
260
+ pdf.set_font('hysmyeongjostdmedium', '', 18)
261
+ pdf.set_font('hysmyeongjostdmedium', 'B', 18)
262
+ pdf.set_font('hysmyeongjostdmedium', 'I', 18)
263
+ pdf.set_font('hysmyeongjostdmedium', 'BI', 18)
264
+
265
+ pdf.putfonts()
266
+ end
267
+
268
+ test "Font Error test" do
269
+ pdf = RBPDF.new
270
+ RBPDF.k_path_fonts = File.join File.dirname(__FILE__)
271
+
272
+ err = assert_raises(RuntimeError) {
273
+ pdf.set_font('err_font', '', 18)
274
+ }
275
+ assert_equal 'RBPDF error: Could not include font definition file: err_font', err.message
276
+
277
+ err = assert_raises(RuntimeError) {
278
+ pdf.set_font('err_font1', '', 18)
279
+ }
280
+ assert_match /RBPDF error: The font definition file has a bad format: .*err_font1.rb/, err.message
281
+
282
+ err = assert_raises(RuntimeError) {
283
+ pdf.set_font('err_font2', '', 18)
284
+ }
285
+ assert_equal 'RBPDF error: Unknow font type: Type0', err.message
286
+
287
+ # Font path reset test
288
+ pdf = RBPDF.new
289
+ pdf.set_font('helvetica', '', 18)
290
+ end
291
+ end