prawn 1.1.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +1 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +9 -40
  7. data/lib/prawn/document/bounding_box.rb +54 -40
  8. data/lib/prawn/document/column_box.rb +8 -10
  9. data/lib/prawn/document/internals.rb +39 -146
  10. data/lib/prawn/document/span.rb +23 -17
  11. data/lib/prawn/document.rb +217 -182
  12. data/lib/prawn/encoding.rb +69 -101
  13. data/lib/prawn/errors.rb +47 -43
  14. data/lib/prawn/font.rb +124 -104
  15. data/lib/prawn/font_metric_cache.rb +23 -21
  16. data/lib/prawn/fonts/afm.rb +292 -0
  17. data/lib/prawn/{font → fonts}/dfont.rb +5 -12
  18. data/lib/prawn/fonts/otf.rb +11 -0
  19. data/lib/prawn/fonts/ttc.rb +36 -0
  20. data/lib/prawn/{font → fonts}/ttf.rb +140 -88
  21. data/lib/prawn/graphics/blend_mode.rb +65 -0
  22. data/lib/prawn/graphics/cap_style.rb +5 -5
  23. data/lib/prawn/graphics/color.rb +46 -44
  24. data/lib/prawn/graphics/dash.rb +27 -11
  25. data/lib/prawn/graphics/join_style.rb +11 -6
  26. data/lib/prawn/graphics/patterns.rb +220 -78
  27. data/lib/prawn/graphics/transformation.rb +20 -12
  28. data/lib/prawn/graphics/transparency.rb +20 -18
  29. data/lib/prawn/graphics.rb +153 -115
  30. data/lib/prawn/grid.rb +93 -50
  31. data/lib/prawn/image_handler.rb +4 -4
  32. data/lib/prawn/images/image.rb +3 -2
  33. data/lib/prawn/images/jpg.rb +31 -24
  34. data/lib/prawn/images/png.rb +101 -68
  35. data/lib/prawn/images.rb +64 -56
  36. data/lib/prawn/measurement_extensions.rb +10 -9
  37. data/lib/prawn/measurements.rb +20 -23
  38. data/lib/prawn/outline.rb +96 -75
  39. data/lib/prawn/repeater.rb +16 -16
  40. data/lib/prawn/security/arcfour.rb +2 -2
  41. data/lib/prawn/security.rb +100 -85
  42. data/lib/prawn/soft_mask.rb +37 -38
  43. data/lib/prawn/stamp.rb +28 -13
  44. data/lib/prawn/text/box.rb +24 -29
  45. data/lib/prawn/text/formatted/arranger.rb +108 -63
  46. data/lib/prawn/text/formatted/box.rb +187 -124
  47. data/lib/prawn/text/formatted/fragment.rb +24 -20
  48. data/lib/prawn/text/formatted/line_wrap.rb +133 -73
  49. data/lib/prawn/text/formatted/parser.rb +147 -127
  50. data/lib/prawn/text/formatted/wrap.rb +48 -35
  51. data/lib/prawn/text/formatted.rb +5 -5
  52. data/lib/prawn/text.rb +103 -68
  53. data/lib/prawn/transformation_stack.rb +44 -0
  54. data/lib/prawn/utilities.rb +10 -22
  55. data/lib/prawn/version.rb +5 -0
  56. data/lib/prawn/view.rb +101 -0
  57. data/lib/prawn.rb +39 -54
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +34 -25
  60. data/manual/basic_concepts/creation.rb +10 -11
  61. data/manual/basic_concepts/cursor.rb +4 -5
  62. data/manual/basic_concepts/measurement.rb +8 -9
  63. data/manual/basic_concepts/origin.rb +5 -6
  64. data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
  65. data/manual/basic_concepts/view.rb +48 -0
  66. data/manual/bounding_box/bounding_box.rb +30 -28
  67. data/manual/bounding_box/bounds.rb +12 -13
  68. data/manual/bounding_box/canvas.rb +7 -8
  69. data/manual/bounding_box/creation.rb +6 -7
  70. data/manual/bounding_box/indentation.rb +14 -15
  71. data/manual/bounding_box/nesting.rb +25 -18
  72. data/manual/bounding_box/russian_boxes.rb +18 -18
  73. data/manual/bounding_box/stretchy.rb +12 -14
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -32
  76. data/manual/document_and_page_options/background.rb +15 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +24 -22
  78. data/manual/document_and_page_options/metadata.rb +20 -18
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -13
  81. data/manual/document_and_page_options/print_scaling.rb +18 -15
  82. data/manual/example_helper.rb +5 -4
  83. data/manual/graphics/blend_mode.rb +52 -0
  84. data/manual/graphics/circle_and_ellipse.rb +4 -5
  85. data/manual/graphics/color.rb +7 -9
  86. data/manual/graphics/common_lines.rb +7 -8
  87. data/manual/graphics/fill_and_stroke.rb +5 -6
  88. data/manual/graphics/fill_rules.rb +12 -11
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +46 -40
  91. data/manual/graphics/helper.rb +19 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +8 -9
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -9
  97. data/manual/graphics/scale.rb +14 -13
  98. data/manual/graphics/soft_masks.rb +4 -6
  99. data/manual/graphics/stroke_cap.rb +7 -8
  100. data/manual/graphics/stroke_dash.rb +15 -16
  101. data/manual/graphics/stroke_join.rb +6 -7
  102. data/manual/graphics/translate.rb +10 -10
  103. data/manual/graphics/transparency.rb +7 -9
  104. data/manual/how_to_read_this_manual.rb +8 -9
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +10 -11
  108. data/manual/images/images.rb +28 -27
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +16 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +10 -11
  114. data/manual/layout/content.rb +9 -10
  115. data/manual/layout/layout.rb +17 -18
  116. data/manual/layout/simple_grid.rb +6 -7
  117. data/manual/outline/add_subsection_to.rb +20 -21
  118. data/manual/outline/insert_section_after.rb +15 -16
  119. data/manual/outline/outline.rb +22 -21
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +36 -0
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +27 -23
  124. data/manual/repeatable_content/repeater.rb +15 -16
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +8 -11
  127. data/manual/security/permissions.rb +20 -15
  128. data/manual/security/security.rb +18 -18
  129. data/manual/table.rb +16 -0
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -12
  132. data/manual/text/column_box.rb +9 -11
  133. data/manual/text/fallback_fonts.rb +25 -21
  134. data/manual/text/font.rb +11 -12
  135. data/manual/text/font_size.rb +13 -14
  136. data/manual/text/font_style.rb +10 -8
  137. data/manual/text/formatted_callbacks.rb +33 -23
  138. data/manual/text/formatted_text.rb +36 -25
  139. data/manual/text/free_flowing_text.rb +22 -23
  140. data/manual/text/inline.rb +18 -19
  141. data/manual/text/kerning_and_character_spacing.rb +14 -15
  142. data/manual/text/leading.rb +7 -8
  143. data/manual/text/line_wrapping.rb +37 -18
  144. data/manual/text/paragraph_indentation.rb +15 -10
  145. data/manual/text/positioned_text.rb +16 -17
  146. data/manual/text/registering_families.rb +27 -24
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +30 -19
  149. data/manual/text/rotation.rb +33 -24
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +56 -54
  152. data/manual/text/text_box_excess.rb +20 -17
  153. data/manual/text/text_box_extensions.rb +18 -15
  154. data/manual/text/text_box_overflow.rb +24 -17
  155. data/manual/text/utf8.rb +12 -13
  156. data/manual/text/win_ansi_charset.rb +28 -25
  157. data/prawn.gemspec +45 -50
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +550 -0
  160. data/spec/prawn/document/column_box_spec.rb +75 -0
  161. data/spec/prawn/document/security_spec.rb +176 -0
  162. data/spec/prawn/document_annotations_spec.rb +76 -0
  163. data/spec/prawn/document_destinations_spec.rb +15 -0
  164. data/spec/prawn/document_grid_spec.rb +99 -0
  165. data/spec/prawn/document_reference_spec.rb +27 -0
  166. data/spec/prawn/document_span_spec.rb +44 -0
  167. data/spec/prawn/document_spec.rb +805 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +544 -0
  170. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  171. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  172. data/spec/prawn/graphics_spec.rb +872 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/prawn/image_handler_spec.rb +53 -0
  175. data/spec/prawn/images/jpg_spec.rb +20 -0
  176. data/spec/prawn/images/png_spec.rb +283 -0
  177. data/spec/prawn/images_spec.rb +229 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +512 -0
  180. data/spec/prawn/repeater_spec.rb +166 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +173 -0
  183. data/spec/prawn/text/box_spec.rb +1110 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +849 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +150 -0
  190. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  191. data/spec/prawn/text_spacing_spec.rb +95 -0
  192. data/spec/prawn/text_spec.rb +603 -0
  193. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  194. data/spec/prawn/transformation_stack_spec.rb +66 -0
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +19 -25
  198. data.tar.gz.sig +0 -0
  199. metadata +113 -276
  200. metadata.gz.sig +0 -0
  201. data/data/encodings/win_ansi.txt +0 -29
  202. data/data/images/16bit.alpha +0 -0
  203. data/data/images/16bit.color +0 -0
  204. data/data/images/16bit.png +0 -0
  205. data/data/images/arrow.png +0 -0
  206. data/data/images/arrow2.png +0 -0
  207. data/data/images/dice.alpha +0 -0
  208. data/data/images/dice.color +0 -0
  209. data/data/images/dice.png +0 -0
  210. data/data/images/dice_interlaced.png +0 -0
  211. data/data/images/fractal.jpg +0 -0
  212. data/data/images/indexed_color.dat +0 -0
  213. data/data/images/indexed_color.png +0 -0
  214. data/data/images/letterhead.jpg +0 -0
  215. data/data/images/license.md +0 -8
  216. data/data/images/page_white_text.alpha +0 -0
  217. data/data/images/page_white_text.color +0 -0
  218. data/data/images/page_white_text.png +0 -0
  219. data/data/images/pigs.jpg +0 -0
  220. data/data/images/prawn.png +0 -0
  221. data/data/images/ruport.png +0 -0
  222. data/data/images/ruport_data.dat +0 -0
  223. data/data/images/ruport_transparent.png +0 -0
  224. data/data/images/ruport_type0.png +0 -0
  225. data/data/images/stef.jpg +0 -0
  226. data/data/images/tru256.bmp +0 -0
  227. data/data/images/web-links.dat +0 -1
  228. data/data/images/web-links.png +0 -0
  229. data/data/pdfs/complex_template.pdf +0 -0
  230. data/data/pdfs/contains_ttf_font.pdf +0 -0
  231. data/data/pdfs/encrypted.pdf +0 -0
  232. data/data/pdfs/form.pdf +1 -819
  233. data/data/pdfs/hexagon.pdf +0 -61
  234. data/data/pdfs/indirect_reference.pdf +0 -86
  235. data/data/pdfs/multipage_template.pdf +0 -127
  236. data/data/pdfs/nested_pages.pdf +0 -118
  237. data/data/pdfs/page_without_mediabox.pdf +0 -193
  238. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  239. data/data/pdfs/two_hexagons.pdf +0 -90
  240. data/data/pdfs/version_1_6.pdf +0 -61
  241. data/data/shift_jis_text.txt +0 -1
  242. data/lib/prawn/document/graphics_state.rb +0 -73
  243. data/lib/prawn/font/afm.rb +0 -247
  244. data/lib/prawn/table/cell/image.rb +0 -69
  245. data/lib/prawn/table/cell/in_table.rb +0 -33
  246. data/lib/prawn/table/cell/span_dummy.rb +0 -93
  247. data/lib/prawn/table/cell/subtable.rb +0 -66
  248. data/lib/prawn/table/cell/text.rb +0 -154
  249. data/lib/prawn/table/cell.rb +0 -772
  250. data/lib/prawn/table/cells.rb +0 -255
  251. data/lib/prawn/table/column_width_calculator.rb +0 -182
  252. data/lib/prawn/table.rb +0 -644
  253. data/manual/table/basic_block.rb +0 -53
  254. data/manual/table/before_rendering_page.rb +0 -26
  255. data/manual/table/cell_border_lines.rb +0 -24
  256. data/manual/table/cell_borders_and_bg.rb +0 -31
  257. data/manual/table/cell_dimensions.rb +0 -30
  258. data/manual/table/cell_text.rb +0 -38
  259. data/manual/table/column_widths.rb +0 -30
  260. data/manual/table/content_and_subtables.rb +0 -39
  261. data/manual/table/creation.rb +0 -27
  262. data/manual/table/filtering.rb +0 -36
  263. data/manual/table/flow_and_header.rb +0 -17
  264. data/manual/table/image_cells.rb +0 -33
  265. data/manual/table/position.rb +0 -29
  266. data/manual/table/row_colors.rb +0 -20
  267. data/manual/table/span.rb +0 -30
  268. data/manual/table/style.rb +0 -22
  269. data/manual/table/table.rb +0 -52
  270. data/manual/table/width.rb +0 -27
  271. data/spec/acceptance/png.rb +0 -25
  272. data/spec/annotations_spec.rb +0 -74
  273. data/spec/bounding_box_spec.rb +0 -510
  274. data/spec/cell_spec.rb +0 -629
  275. data/spec/column_box_spec.rb +0 -65
  276. data/spec/destinations_spec.rb +0 -15
  277. data/spec/document_spec.rb +0 -730
  278. data/spec/extensions/mocha.rb +0 -46
  279. data/spec/font_metric_cache_spec.rb +0 -52
  280. data/spec/font_spec.rb +0 -449
  281. data/spec/formatted_text_arranger_spec.rb +0 -421
  282. data/spec/formatted_text_box_spec.rb +0 -639
  283. data/spec/formatted_text_fragment_spec.rb +0 -298
  284. data/spec/graphics_spec.rb +0 -669
  285. data/spec/grid_spec.rb +0 -96
  286. data/spec/image_handler_spec.rb +0 -54
  287. data/spec/images_spec.rb +0 -153
  288. data/spec/inline_formatted_text_parser_spec.rb +0 -564
  289. data/spec/jpg_spec.rb +0 -25
  290. data/spec/line_wrap_spec.rb +0 -344
  291. data/spec/measurement_units_spec.rb +0 -25
  292. data/spec/outline_spec.rb +0 -430
  293. data/spec/png_spec.rb +0 -237
  294. data/spec/reference_spec.rb +0 -25
  295. data/spec/repeater_spec.rb +0 -160
  296. data/spec/security_spec.rb +0 -158
  297. data/spec/soft_mask_spec.rb +0 -79
  298. data/spec/span_spec.rb +0 -44
  299. data/spec/stamp_spec.rb +0 -160
  300. data/spec/stroke_styles_spec.rb +0 -211
  301. data/spec/table/span_dummy_spec.rb +0 -17
  302. data/spec/table_spec.rb +0 -1527
  303. data/spec/text_at_spec.rb +0 -115
  304. data/spec/text_box_spec.rb +0 -1034
  305. data/spec/text_rendering_mode_spec.rb +0 -45
  306. data/spec/text_spacing_spec.rb +0 -93
  307. data/spec/text_spec.rb +0 -437
  308. data/spec/text_with_inline_formatting_spec.rb +0 -35
  309. data/spec/transparency_spec.rb +0 -91
@@ -1,344 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
4
-
5
- describe "Core::Text::Formatted::LineWrap#wrap_line" do
6
- before(:each) do
7
- create_pdf
8
- @arranger = Prawn::Text::Formatted::Arranger.new(@pdf)
9
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
10
- @one_word_width = 50
11
- end
12
- it "should strip leading and trailing spaces" do
13
- array = [{ :text => " hello world, " },
14
- { :text => "goodbye ", :style => [:bold] }]
15
- @arranger.format_array = array
16
- string = @line_wrap.wrap_line(:arranger => @arranger,
17
- :width => 300,
18
- :document => @pdf)
19
- string.should == "hello world, goodbye"
20
- end
21
- it "should strip trailing spaces when a white-space-only fragment was" +
22
- " successfully pushed onto the end of a line but no other non-white" +
23
- " space fragment fits after it" do
24
- array = [{ :text => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " },
25
- { :text => " ", :style => [:bold] },
26
- { :text => " bbbbbbbbbbbbbbbbbbbbbbbbbbbb" }]
27
- @arranger.format_array = array
28
- string = @line_wrap.wrap_line(:arranger => @arranger,
29
- :width => 300,
30
- :document => @pdf)
31
- string.should == "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
32
- end
33
- it "should raise_error CannotFit if a too-small width is given" do
34
- array = [{ :text => " hello world, " },
35
- { :text => "goodbye ", :style => [:bold] }]
36
- @arranger.format_array = array
37
- lambda do
38
- @line_wrap.wrap_line(:arranger => @arranger,
39
- :width => 1,
40
- :document => @pdf)
41
- end.should raise_error(Prawn::Errors::CannotFit)
42
- end
43
-
44
- it "should break on space" do
45
- array = [{ :text => "hello world" }]
46
- @arranger.format_array = array
47
- string = @line_wrap.wrap_line(:arranger => @arranger,
48
- :width => @one_word_width,
49
- :document => @pdf)
50
- string.should == "hello"
51
- end
52
-
53
- it "should break on zero-width space" do
54
- @pdf.font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf")
55
- array = [{ :text => "hello#{Prawn::Text::ZWSP}world" }]
56
- @arranger.format_array = array
57
- string = @line_wrap.wrap_line(:arranger => @arranger,
58
- :width => @one_word_width,
59
- :document => @pdf)
60
- string.should == "hello"
61
- end
62
-
63
- it "should not display zero-width space" do
64
- @pdf.font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf")
65
- array = [{ :text => "hello#{Prawn::Text::ZWSP}world" }]
66
- @arranger.format_array = array
67
- string = @line_wrap.wrap_line(:arranger => @arranger,
68
- :width => 300,
69
- :document => @pdf)
70
- string.should == "helloworld"
71
- end
72
-
73
- it "should break on tab" do
74
- array = [{ :text => "hello\tworld" }]
75
- @arranger.format_array = array
76
- string = @line_wrap.wrap_line(:arranger => @arranger,
77
- :width => @one_word_width,
78
- :document => @pdf)
79
- string.should == "hello"
80
- end
81
-
82
- it "should break on hyphens" do
83
- array = [{ :text => "hello-world" }]
84
- @arranger.format_array = array
85
- string = @line_wrap.wrap_line(:arranger => @arranger,
86
- :width => @one_word_width,
87
- :document => @pdf)
88
- string.should == "hello-"
89
- end
90
-
91
- it "should not break after a hyphen that follows white space and" +
92
- "precedes a word" do
93
- array = [{ :text => "hello -" }]
94
- @arranger.format_array = array
95
- string = @line_wrap.wrap_line(:arranger => @arranger,
96
- :width => @one_word_width,
97
- :document => @pdf)
98
- string.should == "hello -"
99
-
100
- array = [{ :text => "hello -world" }]
101
- @arranger.format_array = array
102
- string = @line_wrap.wrap_line(:arranger => @arranger,
103
- :width => @one_word_width,
104
- :document => @pdf)
105
- string.should == "hello"
106
- end
107
-
108
- it "should break on a soft hyphen" do
109
- string = @pdf.font.normalize_encoding("hello#{Prawn::Text::SHY}world")
110
- array = [{ :text => string }]
111
- @arranger.format_array = array
112
- string = @line_wrap.wrap_line(:arranger => @arranger,
113
- :width => @one_word_width,
114
- :document => @pdf)
115
- expected = @pdf.font.normalize_encoding("hello#{Prawn::Text::SHY}")
116
- expected.force_encoding(Encoding::UTF_8)
117
- string.should == expected
118
-
119
- @pdf.font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf")
120
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
121
-
122
- string = "hello#{Prawn::Text::SHY}world"
123
- array = [{ :text => string }]
124
- @arranger.format_array = array
125
- string = @line_wrap.wrap_line(:arranger => @arranger,
126
- :width => @one_word_width,
127
- :document => @pdf)
128
- string.should == "hello#{Prawn::Text::SHY}"
129
- end
130
-
131
- it "should not display soft hyphens except at the end of a line" do
132
- string = @pdf.font.normalize_encoding("hello#{Prawn::Text::SHY}world")
133
- array = [{ :text => string }]
134
- @arranger.format_array = array
135
- string = @line_wrap.wrap_line(:arranger => @arranger,
136
- :width => 300,
137
- :document => @pdf)
138
- string.should == "helloworld"
139
-
140
- @pdf.font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf")
141
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
142
-
143
- string = "hello#{Prawn::Text::SHY}world"
144
- array = [{ :text => string }]
145
- @arranger.format_array = array
146
- string = @line_wrap.wrap_line(:arranger => @arranger,
147
- :width => 300,
148
- :document => @pdf)
149
- string.should == "helloworld"
150
- end
151
-
152
- it "should not break before a hard hyphen that follows a word" do
153
- enough_width_for_hello_world = 60
154
-
155
- array = [{ :text => "hello world" }]
156
- @arranger.format_array = array
157
- string = @line_wrap.wrap_line(:arranger => @arranger,
158
- :width => enough_width_for_hello_world,
159
- :document => @pdf)
160
- string.should == "hello world"
161
-
162
- array = [{ :text => "hello world-" }]
163
- @arranger.format_array = array
164
- string = @line_wrap.wrap_line(:arranger => @arranger,
165
- :width => enough_width_for_hello_world,
166
- :document => @pdf)
167
- string.should == "hello"
168
-
169
- @pdf.font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf")
170
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
171
- enough_width_for_hello_world = 68
172
-
173
- array = [{ :text => "hello world" }]
174
- @arranger.format_array = array
175
- string = @line_wrap.wrap_line(:arranger => @arranger,
176
- :width => enough_width_for_hello_world,
177
- :document => @pdf)
178
- string.should == "hello world"
179
-
180
- array = [{ :text => "hello world-" }]
181
- @arranger.format_array = array
182
- string = @line_wrap.wrap_line(:arranger => @arranger,
183
- :width => enough_width_for_hello_world,
184
- :document => @pdf)
185
- string.should == "hello"
186
- end
187
-
188
- it "should not break after a hard hyphen that follows a soft hyphen and" +
189
- "precedes a word" do
190
- string = @pdf.font.normalize_encoding("hello#{Prawn::Text::SHY}-")
191
- array = [{ :text => string }]
192
- @arranger.format_array = array
193
- string = @line_wrap.wrap_line(:arranger => @arranger,
194
- :width => @one_word_width,
195
- :document => @pdf)
196
- string.should == "hello-"
197
-
198
- string = @pdf.font.normalize_encoding("hello#{Prawn::Text::SHY}-world")
199
- array = [{ :text => string }]
200
- @arranger.format_array = array
201
- string = @line_wrap.wrap_line(:arranger => @arranger,
202
- :width => @one_word_width,
203
- :document => @pdf)
204
- expected = @pdf.font.normalize_encoding("hello#{Prawn::Text::SHY}")
205
- expected.force_encoding(Encoding::UTF_8)
206
- string.should == expected
207
-
208
- @pdf.font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf")
209
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
210
-
211
- string = "hello#{Prawn::Text::SHY}-"
212
- array = [{ :text => string }]
213
- @arranger.format_array = array
214
- string = @line_wrap.wrap_line(:arranger => @arranger,
215
- :width => @one_word_width,
216
- :document => @pdf)
217
- string.should == "hello-"
218
-
219
- string = "hello#{Prawn::Text::SHY}-world"
220
- array = [{ :text => string }]
221
- @arranger.format_array = array
222
- string = @line_wrap.wrap_line(:arranger => @arranger,
223
- :width => @one_word_width,
224
- :document => @pdf)
225
- string.should == "hello#{Prawn::Text::SHY}"
226
- end
227
-
228
- it "should process UTF-8 chars", :unresolved, :issue => 693 do
229
- array = [{ :text => "Test" }]
230
- @arranger.format_array = array
231
-
232
- # Should not raise an encoding error
233
- string = @line_wrap.wrap_line(:arranger => @arranger,
234
- :width => 300,
235
- :document => @pdf)
236
- string.should == "Test"
237
- end
238
- end
239
-
240
- describe "Core::Text::Formatted::LineWrap#space_count" do
241
- before(:each) do
242
- create_pdf
243
- @arranger = Prawn::Text::Formatted::Arranger.new(@pdf)
244
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
245
- end
246
- it "should return the number of spaces in the last wrapped line" do
247
- array = [{ :text => "hello world, " },
248
- { :text => "goodbye", :style => [:bold] }]
249
- @arranger.format_array = array
250
- @line_wrap.wrap_line(:arranger => @arranger,
251
- :width => 300,
252
- :document => @pdf)
253
- @line_wrap.space_count.should == 2
254
- end
255
- it "should exclude preceding and trailing spaces from the count" do
256
- array = [{ :text => " hello world, " },
257
- { :text => "goodbye ", :style => [:bold] }]
258
- @arranger.format_array = array
259
- @line_wrap.wrap_line(:arranger => @arranger,
260
- :width => 300,
261
- :document => @pdf)
262
- @line_wrap.space_count.should == 2
263
- end
264
- end
265
-
266
- describe "Core::Text::Formatted::LineWrap" do
267
- before(:each) do
268
- create_pdf
269
- @arranger = Prawn::Text::Formatted::Arranger.new(@pdf)
270
- array = [{ :text => "hello\nworld\n\n\nhow are you?" },
271
- { :text => "\n" },
272
- { :text => "\n" },
273
- { :text => "" },
274
- { :text => "fine, thanks. " * 4 },
275
- { :text => "" },
276
- { :text => "\n" },
277
- { :text => "" }]
278
- @arranger.format_array = array
279
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
280
- end
281
- it "should only return an empty string if nothing fit or there" +
282
- "was nothing to wrap" do
283
- 8.times do
284
- line = @line_wrap.wrap_line(:arranger => @arranger,
285
- :width => 200,
286
- :document => @pdf)
287
- line.should_not be_empty
288
- end
289
- line = @line_wrap.wrap_line(:arranger => @arranger,
290
- :width => 200,
291
- :document => @pdf)
292
- line.should be_empty
293
- end
294
- end
295
-
296
- describe "Core::Text::Formatted::LineWrap#paragraph_finished?" do
297
- before(:each) do
298
- create_pdf
299
- @arranger = Prawn::Text::Formatted::Arranger.new(@pdf)
300
- @line_wrap = Prawn::Text::Formatted::LineWrap.new
301
- @one_word_width = 50
302
- end
303
- it "should be_false when the last printed line is not the end of the paragraph" do
304
- array = [{ :text => "hello world" }]
305
- @arranger.format_array = array
306
- string = @line_wrap.wrap_line(:arranger => @arranger,
307
- :width => @one_word_width,
308
- :document => @pdf)
309
-
310
- @line_wrap.paragraph_finished?.should == false
311
- end
312
- it "should be_true when the last printed line is the last fragment to print" do
313
- array = [{ :text => "hello world" }]
314
- @arranger.format_array = array
315
- string = @line_wrap.wrap_line(:arranger => @arranger,
316
- :width => @one_word_width,
317
- :document => @pdf)
318
- string = @line_wrap.wrap_line(:arranger => @arranger,
319
- :width => @one_word_width,
320
- :document => @pdf)
321
-
322
- @line_wrap.paragraph_finished?.should == true
323
- end
324
- it "should be_true when a newline exists on the current line" do
325
- array = [{ :text => "hello\n world" }]
326
- @arranger.format_array = array
327
- string = @line_wrap.wrap_line(:arranger => @arranger,
328
- :width => @one_word_width,
329
- :document => @pdf)
330
-
331
- @line_wrap.paragraph_finished?.should == true
332
- end
333
- it "should be_true when a newline exists in the next fragment" do
334
- array = [{ :text => "hello " },
335
- { :text => " \n" },
336
- { :text => "world" }]
337
- @arranger.format_array = array
338
- string = @line_wrap.wrap_line(:arranger => @arranger,
339
- :width => @one_word_width,
340
- :document => @pdf)
341
-
342
- @line_wrap.paragraph_finished?.should == true
343
- end
344
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
4
- require "prawn/measurement_extensions"
5
-
6
- describe "Measurement units" do
7
-
8
- it "should convert units to PostScriptPoints" do
9
- 1.mm.should be_within(0.000000001).of(2.834645669)
10
- 1.mm.should == (72 / 25.4)
11
- 2.mm.should == (2 * 72 / 25.4)
12
- 3.mm.should == 3 * 72 / 25.4
13
- -3.mm.should == -3 * 72/25.4
14
- 1.cm.should == 10 * 72 / 25.4
15
- 1.dm.should == 100 * 72 / 25.4
16
- 1.m.should == 1000 * 72 / 25.4
17
-
18
- 1.in.should == 72
19
- 1.ft.should == 72 * 12
20
- 1.yd.should == 72 * 12 * 3
21
- 1.pt.should == 1
22
- end
23
-
24
- end
25
-