prawn 1.1.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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,28 +1,28 @@
1
- # encoding: utf-8
2
- #
3
- # Examples for document encryption.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
1
+ # frozen_string_literal: true
7
2
 
8
- Prawn::ManualBuilder::Example.generate("security.pdf", :page_size => "FOLIO") do
3
+ # Examples for document encryption.
9
4
 
10
- package "security" do |p|
5
+ require_relative '../example_helper'
11
6
 
12
- p.example "encryption", :eval_source => false, :full_source => true
13
- p.example "permissions", :eval_source => false, :full_source => true
7
+ Prawn::ManualBuilder::Example.generate('security.pdf', page_size: 'FOLIO') do
8
+ package 'security' do |p|
9
+ p.example 'encryption', eval_source: false, full_source: true
10
+ p.example 'permissions', eval_source: false, full_source: true
14
11
 
15
12
  p.intro do
16
- prose("Security lets you control who can read the document by defining a password.
13
+ prose <<-TEXT
14
+ Security lets you control who can read the document by defining
15
+ a password.
17
16
 
18
- The examples include:")
17
+ The examples include:
18
+ TEXT
19
19
 
20
- list( "How to encrypt the document without the need for a password",
21
- "How to configure the regular user permitions",
22
- "How to require a password for the regular user",
23
- "How to set a owner password that bypass the document permissions"
24
- )
20
+ list(
21
+ 'How to encrypt the document without the need for a password',
22
+ 'How to configure the regular user permissions',
23
+ 'How to require a password for the regular user',
24
+ 'How to set a owner password that bypass the document permissions'
25
+ )
25
26
  end
26
-
27
27
  end
28
28
  end
data/manual/table.rb ADDED
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'example_helper'
4
+
5
+ filename = File.basename(__FILE__).gsub('.rb', '.pdf')
6
+
7
+ Prawn::ManualBuilder::Example.generate(filename) do
8
+ header('Prawn::Table')
9
+
10
+ prose <<-END_TEXT
11
+ As of Prawn 1.2.0, Prawn::Table has been extracted into its own
12
+ semi-officially supported gem.
13
+
14
+ Please see https://github.com/prawnpdf/prawn-table for more details.
15
+ END_TEXT
16
+ end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Horizontal text alignment can be achieved by supplying the <code>:align</code>
4
4
  # option to the text methods. Available options are <code>:left</code>
5
5
  # (default), <code>:right</code>, <code>:center</code>, and
@@ -11,34 +11,33 @@
11
11
  #
12
12
  # Both forms of alignment will be evaluated in the context of the current
13
13
  # bounding_box.
14
- #
15
- require File.expand_path(File.join(File.dirname(__FILE__),
16
- %w[.. example_helper]))
14
+
15
+ require_relative '../example_helper'
17
16
 
18
17
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
19
18
  Prawn::ManualBuilder::Example.generate(filename) do
20
- text "This text should be left aligned"
21
- text "This text should be centered", :align => :center
22
- text "This text should be right aligned", :align => :right
19
+ text 'This text should be left aligned'
20
+ text 'This text should be centered', align: :center
21
+ text 'This text should be right aligned', align: :right
23
22
 
24
- bounding_box([0, 220], :width => 250, :height => 220) do
25
- text "This text is flowing from the left. " * 4
23
+ bounding_box([0, 220], width: 250, height: 220) do
24
+ text 'This text is flowing from the left. ' * 4
26
25
 
27
26
  move_down 15
28
- text "This text is flowing from the center. " * 3, :align => :center
27
+ text 'This text is flowing from the center. ' * 3, align: :center
29
28
 
30
29
  move_down 15
31
- text "This text is flowing from the right. " * 4, :align => :right
30
+ text 'This text is flowing from the right. ' * 4, align: :right
32
31
 
33
32
  move_down 15
34
- text "This text is justified. " * 6, :align => :justify
33
+ text 'This text is justified. ' * 6, align: :justify
35
34
  transparent(0.5) { stroke_bounds }
36
35
  end
37
36
 
38
- bounding_box([300, 220], :width => 250, :height => 220) do
39
- text "This text should be vertically top aligned"
40
- text "This text should be vertically centered", :valign => :center
41
- text "This text should be vertically bottom aligned", :valign => :bottom
37
+ bounding_box([300, 220], width: 250, height: 220) do
38
+ text 'This text should be vertically top aligned'
39
+ text 'This text should be vertically centered', valign: :center
40
+ text 'This text should be vertically bottom aligned', valign: :bottom
42
41
  transparent(0.5) { stroke_bounds }
43
42
  end
44
43
  end
data/manual/text/color.rb CHANGED
@@ -1,24 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>:color</code> attribute can give a block of text a default color,
4
4
  # in RGB hex format or 4-value CMYK.
5
- #
6
- require File.expand_path(File.join(File.dirname(__FILE__),
7
- %w[.. example_helper]))
5
+
6
+ require_relative '../example_helper'
8
7
 
9
8
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
10
9
  Prawn::ManualBuilder::Example.generate(filename) do
11
- text "Default color is black"
10
+ text 'Default color is black'
12
11
  move_down 25
13
12
 
14
- text "Changed to red", :color => "FF0000"
13
+ text 'Changed to red', color: 'FF0000'
15
14
  move_down 25
16
15
 
17
- text "CMYK color", :color => [22, 55, 79, 30]
16
+ text 'CMYK color', color: [22, 55, 79, 30]
18
17
  move_down 25
19
18
 
20
- text "Also works with <color rgb='ff0000'>inline</color> formatting",
21
- :color => "0000FF",
22
- :inline_format => true
19
+ text(
20
+ "Also works with <color rgb='ff0000'>inline</color> formatting",
21
+ color: '0000FF',
22
+ inline_format: true
23
+ )
23
24
  end
24
-
@@ -1,21 +1,20 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>column_box</code> method allows you to define columns that flow
4
4
  # their contents from one section to the next. You can have a number of columns
5
5
  # on the page, and only when the last column overflows will a new page be
6
6
  # created.
7
- #
8
- require File.expand_path(File.join(File.dirname(__FILE__),
9
- %w[.. example_helper]))
7
+
8
+ require_relative '../example_helper'
10
9
 
11
10
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
12
11
  Prawn::ManualBuilder::Example.generate(filename) do
13
- text "The Prince", :align => :center, :size => 18
14
- text "Niccolò Machiavelli", :align => :center, :size => 14
12
+ text 'The Prince', align: :center, size: 18
13
+ text 'Niccolò Machiavelli', align: :center, size: 14
15
14
  move_down 12
16
15
 
17
- column_box([0, cursor], :columns => 2, :width => bounds.width) do
18
- text((<<-END.gsub(/\s+/, ' ') + "\n\n") * 3)
16
+ column_box([0, cursor], columns: 2, width: bounds.width) do
17
+ text("#{<<~TEXT.gsub(/\s+/, ' ')}\n\n" * 3)
19
18
  All the States and Governments by which men are or ever have been ruled,
20
19
  have been and are either Republics or Princedoms. Princedoms are either
21
20
  hereditary, in which the sovereignty is derived through an ancient line
@@ -26,7 +25,6 @@ Prawn::ManualBuilder::Example.generate(filename) do
26
25
  acquired have either been used to live under a Prince or have been free;
27
26
  and he who acquires them does so either by his own arms or by the arms of
28
27
  others, and either by good fortune or by merit.
29
- END
28
+ TEXT
30
29
  end
31
30
  end
32
-
@@ -1,37 +1,41 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn enables the declaration of fallback fonts for those glyphs that may not
4
4
  # be present in the desired font. Use the <code>:fallback_fonts</code> option
5
5
  # with any of the text or text box methods, or set fallback_fonts document-wide.
6
- #
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
6
+
7
+ require_relative '../example_helper'
9
8
 
10
9
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
10
  Prawn::ManualBuilder::Example.generate(filename) do
12
11
  file = "#{Prawn::DATADIR}/fonts/gkai00mp.ttf"
13
- font_families["Kai"] = {
14
- :normal => { :file => file, :font => "Kai" }
12
+ font_families['Kai'] = {
13
+ normal: { file: file, font: 'Kai' }
15
14
  }
16
15
 
17
16
  file = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
18
- font_families["Panic Sans"] = {
19
- :normal => { :file => file, :font => "PanicSans" },
17
+ font_families['Panic Sans'] = {
18
+ normal: { file: file, font: 'PanicSans' }
20
19
  }
21
20
 
22
- font("Panic Sans") do
23
- text("When fallback fonts are included, each glyph will be rendered " +
24
- "using the first font that includes the glyph, starting with the " +
25
- "current font and then moving through the fallback fonts from left " +
26
- "to right." +
27
- "\n\n" +
28
- "hello ƒ 你好\n再见 ƒ goodbye",
29
- :fallback_fonts => ["Times-Roman", "Kai"])
21
+ font('Panic Sans') do
22
+ text(
23
+ 'When fallback fonts are included, each glyph will be rendered ' \
24
+ 'using the first font that includes the glyph, starting with the ' \
25
+ 'current font and then moving through the fallback fonts from left ' \
26
+ 'to right.' \
27
+ "\n\n" \
28
+ "hello ƒ 你好\n再见 ƒ goodbye",
29
+ fallback_fonts: %w[Times-Roman Kai]
30
+ )
30
31
  end
31
32
  move_down 20
32
33
 
33
- formatted_text([ { :text => "Fallback fonts can even override" },
34
- { :text => "fragment fonts (你好)", :font => "Times-Roman" },
35
- ],
36
- :fallback_fonts => ["Times-Roman", "Kai"])
34
+ formatted_text(
35
+ [
36
+ { text: 'Fallback fonts can even override' },
37
+ { text: 'fragment fonts (你好)', font: 'Times-Roman' }
38
+ ],
39
+ fallback_fonts: %w[Times-Roman Kai]
40
+ )
37
41
  end
data/manual/text/font.rb CHANGED
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>font</code> method can be used in three different ways.
4
4
  #
5
5
  # If we don't pass it any arguments it will return the current font being used
@@ -12,30 +12,29 @@
12
12
  # specified font will only be used to render text inside the block.
13
13
  #
14
14
  # The default font is Helvetica.
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
15
+
16
+ require_relative '../example_helper'
18
17
 
19
18
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
20
19
  Prawn::ManualBuilder::Example.generate(filename) do
21
20
  text "Let's see which font we are using: #{font.inspect}"
22
21
 
23
22
  move_down 20
24
- font "Times-Roman"
25
- text "Written in Times."
23
+ font 'Times-Roman'
24
+ text 'Written in Times.'
26
25
 
27
26
  move_down 20
28
- font("Courier") do
29
- text "Written in Courier because we are inside the block."
27
+ font('Courier') do
28
+ text 'Written in Courier because we are inside the block.'
30
29
  end
31
30
 
32
31
  move_down 20
33
- text "Written in Times again as we left the previous block."
32
+ text 'Written in Times again as we left the previous block.'
34
33
 
35
34
  move_down 20
36
35
  text "Let's see which font we are using again: #{font.inspect}"
37
36
 
38
37
  move_down 20
39
- font "Helvetica"
40
- text "Back to normal."
38
+ font 'Helvetica'
39
+ text 'Back to normal.'
41
40
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>font_size</code> method works just like the <code>font</code>
4
4
  # method.
5
5
  #
@@ -10,9 +10,8 @@
10
10
  # option to the text methods.
11
11
  #
12
12
  # The default font size is <code>12</code>.
13
- #
14
- require File.expand_path(File.join(File.dirname(__FILE__),
15
- %w[.. example_helper]))
13
+
14
+ require_relative '../example_helper'
16
15
 
17
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
18
17
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -20,26 +19,26 @@ Prawn::ManualBuilder::Example.generate(filename) do
20
19
 
21
20
  move_down 10
22
21
  font_size 16
23
- text "Yeah, something bigger!"
22
+ text 'Yeah, something bigger!'
24
23
 
25
24
  move_down 10
26
- font_size(25) { text "Even bigger!" }
25
+ font_size(25) { text 'Even bigger!' }
27
26
 
28
27
  move_down 10
29
- text "Back to 16 again."
28
+ text 'Back to 16 again.'
30
29
 
31
30
  move_down 10
32
- text "Single line on 20 using the :size option.", :size => 20
31
+ text 'Single line on 20 using the :size option.', size: 20
33
32
 
34
33
  move_down 10
35
- text "Back to 16 once more."
34
+ text 'Back to 16 once more.'
36
35
 
37
36
  move_down 10
38
- font("Courier", :size => 10) do
39
- text "Yeah, using Courier 10 courtesy of the font method."
37
+ font('Courier', size: 10) do
38
+ text 'Yeah, using Courier 10 courtesy of the font method.'
40
39
  end
41
40
 
42
41
  move_down 10
43
- font("Helvetica", :size => 12)
44
- text "Back to normal"
42
+ font('Helvetica', size: 12)
43
+ text 'Back to normal'
45
44
  end
@@ -1,22 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Most font families come with some styles other than normal. Most common are
4
4
  # <code>bold</code>, <code>italic</code> and <code>bold_italic</code>.
5
5
  #
6
6
  # The style can be set the using the <code>:style</code> option, with either the
7
7
  # <code>font</code> method which will set the font and style for rest of the
8
8
  # document, or with the inline text methods.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
9
+
10
+ require_relative '../example_helper'
12
11
 
13
12
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
13
  Prawn::ManualBuilder::Example.generate(filename) do
15
- ["Courier", "Helvetica", "Times-Roman"].each do |example_font|
14
+ fonts = %w[Courier Helvetica Times-Roman]
15
+ styles = %i[bold bold_italic italic normal]
16
+
17
+ fonts.each do |example_font|
16
18
  move_down 20
17
19
 
18
- [:bold, :bold_italic, :italic, :normal].each do |style|
19
- font example_font, :style => style
20
+ styles.each do |style|
21
+ font example_font, style: style
20
22
  text "I'm writing in #{example_font} (#{style})"
21
23
  end
22
24
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>:callback</code> option is also available for the formatted text
4
4
  # methods.
5
5
  #
@@ -10,51 +10,61 @@
10
10
  #
11
11
  # This example defines two new callback classes and provide callback objects
12
12
  # for the formatted_text
13
- #
14
- require File.expand_path(File.join(File.dirname(__FILE__),
15
- %w[.. example_helper]))
13
+
14
+ require_relative '../example_helper'
16
15
 
17
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
18
17
  Prawn::ManualBuilder::Example.generate(filename) do
19
18
  class HighlightCallback
20
19
  def initialize(options)
21
- @color = options[:color]
20
+ @color = options[:color]
22
21
  @document = options[:document]
23
22
  end
24
23
 
25
24
  def render_behind(fragment)
26
- original_color = @document.fill_color
25
+ original_color = @document.fill_color
27
26
  @document.fill_color = @color
28
- @document.fill_rectangle(fragment.top_left, fragment.width,
29
- fragment.height)
27
+ @document.fill_rectangle(
28
+ fragment.top_left,
29
+ fragment.width,
30
+ fragment.height
31
+ )
30
32
  @document.fill_color = original_color
31
33
  end
32
34
  end
33
35
 
34
36
  class ConnectedBorderCallback
35
37
  def initialize(options)
36
- @radius = options[:radius]
38
+ @radius = options[:radius]
37
39
  @document = options[:document]
38
40
  end
39
41
 
40
42
  def render_in_front(fragment)
41
- @document.stroke_polygon(fragment.top_left, fragment.top_right,
42
- fragment.bottom_right, fragment.bottom_left)
43
+ @document.stroke_polygon(
44
+ fragment.top_left,
45
+ fragment.top_right,
46
+ fragment.bottom_right,
47
+ fragment.bottom_left
48
+ )
43
49
 
44
- @document.fill_circle(fragment.top_left, @radius)
45
- @document.fill_circle(fragment.top_right, @radius)
50
+ @document.fill_circle(fragment.top_left, @radius)
51
+ @document.fill_circle(fragment.top_right, @radius)
46
52
  @document.fill_circle(fragment.bottom_right, @radius)
47
- @document.fill_circle(fragment.bottom_left, @radius)
53
+ @document.fill_circle(fragment.bottom_left, @radius)
48
54
  end
49
55
  end
50
56
 
51
- highlight = HighlightCallback.new(:color => 'ffff00', :document => self)
52
- border = ConnectedBorderCallback.new(:radius => 2.5, :document => self)
57
+ highlight = HighlightCallback.new(color: 'ffff00', document: self)
58
+ border = ConnectedBorderCallback.new(radius: 2.5, document: self)
53
59
 
54
- formatted_text [ { :text => "hello", :callback => highlight },
55
- { :text => " " },
56
- { :text => "world", :callback => border },
57
- { :text => " " },
58
- { :text => "hello world", :callback => [highlight, border] }
59
- ], :size => 20
60
+ formatted_text(
61
+ [
62
+ { text: 'hello', callback: highlight },
63
+ { text: ' ' },
64
+ { text: 'world', callback: border },
65
+ { text: ' ' },
66
+ { text: 'hello world', callback: [highlight, border] }
67
+ ],
68
+ size: 20
69
+ )
60
70
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # There are two other text methods available: <code>formatted_text</code> and
4
4
  # <code>formatted_text_box</code>.
5
5
  #
@@ -20,31 +20,42 @@
20
20
  # <code>:link</code> (an URL to create a link), and <code>:local</code>
21
21
  # (a link to a local file).
22
22
 
23
- require File.expand_path(File.join(File.dirname(__FILE__),
24
- %w[.. example_helper]))
23
+ require_relative '../example_helper'
25
24
 
26
25
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
27
26
  Prawn::ManualBuilder::Example.generate(filename) do
28
- formatted_text [ { :text => "Some bold. ", :styles => [:bold] },
29
- { :text => "Some italic. ", :styles => [:italic] },
30
- { :text => "Bold italic. ", :styles => [:bold, :italic] },
31
- { :text => "Bigger Text. ", :size => 20 },
32
- { :text => "More spacing. ", :character_spacing => 3 },
33
- { :text => "Different Font. ", :font => "Courier" },
34
- { :text => "Some coloring. ", :color => "FF00FF" },
35
- { :text => "Link to the wiki. ",
36
- :color => "0000FF",
37
- :link => "https://github.com/prawnpdf/prawn/wiki" },
38
- { :text => "Link to a local file. ",
39
- :color => "0000FF",
40
- :local => "./local_file.txt" }
41
- ]
27
+ formatted_text([
28
+ { text: 'Some bold. ', styles: [:bold] },
29
+ { text: 'Some italic. ', styles: [:italic] },
30
+ { text: 'Bold italic. ', styles: %i[bold italic] },
31
+ { text: 'Bigger Text. ', size: 20 },
32
+ { text: 'More spacing. ', character_spacing: 3 },
33
+ { text: 'Different Font. ', font: 'Courier' },
34
+ { text: 'Some coloring. ', color: 'FF00FF' },
35
+ {
36
+ text: 'Link to the wiki. ',
37
+ color: '0000FF',
38
+ link: 'https://github.com/prawnpdf/prawn/wiki'
39
+ },
40
+ {
41
+ text: 'Link to a local file. ',
42
+ color: '0000FF',
43
+ local: './local_file.txt'
44
+ }
45
+ ])
42
46
 
43
- formatted_text_box [ { :text => "Just your regular" },
44
- { :text => " text_box ", :font => "Courier" },
45
- { :text => "with some additional formatting options " +
46
- "added to the mix.",
47
- :color => [50, 100, 0, 0],
48
- :styles => [:italic] }
49
- ], :at => [100, 100], :width => 200, :height => 100
47
+ formatted_text_box(
48
+ [
49
+ { text: 'Just your regular' },
50
+ { text: ' text_box ', font: 'Courier' },
51
+ {
52
+ text: 'with some additional formatting options added to the mix.',
53
+ color: [50, 100, 0, 0],
54
+ styles: [:italic]
55
+ }
56
+ ],
57
+ at: [100, 100],
58
+ width: 200,
59
+ height: 100
60
+ )
50
61
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Text rendering can be as simple or as complex as you want.
4
4
  #
5
5
  # This example covers the most basic method: <code>text</code>. It is meant for
@@ -12,40 +12,39 @@
12
12
  #
13
13
  # This example also shows text flowing across pages following the margin box and
14
14
  # other bounding boxes.
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
15
+
16
+ require_relative '../example_helper'
18
17
 
19
18
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
20
19
  Prawn::ManualBuilder::Example.generate(filename) do
21
20
  move_cursor_to 50
22
- text "This text will flow to the next page. " * 20
21
+ text 'This text will flow to the next page. ' * 20
23
22
 
24
23
  y_position = cursor - 50
25
- bounding_box([0, y_position], :width => 200, :height => 150) do
24
+ bounding_box([0, y_position], width: 200, height: 150) do
26
25
  transparent(0.5) { stroke_bounds }
27
- text "This text will flow along this bounding box we created for it. " * 5
26
+ text 'This text will flow along this bounding box we created for it. ' * 5
28
27
  end
29
28
 
30
- bounding_box([300, y_position], :width => 200, :height => 150) do
31
- transparent(0.5) { stroke_bounds } # This will stroke on one page
29
+ bounding_box([300, y_position], width: 200, height: 150) do
30
+ transparent(0.5) { stroke_bounds } # This will stroke on one page
32
31
 
33
- text "Now look what happens when the free flowing text reaches the end " +
34
- "of a bounding box that is narrower than the margin box." +
35
- " . " * 200 +
36
- "It continues on the next page as if the previous bounding box " +
37
- "was cloned. If we want it to have the same border as the one on " +
38
- "the previous page we will need to stroke the boundaries again."
32
+ text 'Now look what happens when the free flowing text reaches the end ' \
33
+ 'of a bounding box that is narrower than the margin box.' +
34
+ ' . ' * 200 +
35
+ 'It continues on the next page as if the previous bounding box ' \
36
+ 'was cloned. If we want it to have the same border as the one on ' \
37
+ 'the previous page we will need to stroke the boundaries again.'
39
38
 
40
- transparent(0.5) { stroke_bounds } # And this will stroke on the next
39
+ transparent(0.5) { stroke_bounds } # And this will stroke on the next
41
40
  end
42
41
 
43
42
  move_cursor_to 200
44
- span(350, :position => :center) do
45
- text "Span is a different kind of bounding box as it lets the text " +
46
- "flow gracefully onto the next page. It doesn't matter if the text " +
47
- "started on the middle of the previous page, when it flows to the " +
48
- "next page it will start at the beginning." + " _ " * 500 +
49
- "I told you it would start on the beginning of this page."
43
+ span(350, position: :center) do
44
+ text 'Span is a different kind of bounding box as it lets the text ' \
45
+ "flow gracefully onto the next page. It doesn't matter if the text " \
46
+ 'started on the middle of the previous page, when it flows to the ' \
47
+ "next page it will start at the beginning.#{' _ ' * 500}" \
48
+ 'I told you it would start on the beginning of this page.'
50
49
  end
51
50
  end