prawn 0.13.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 (348) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +10 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -16
  6. data/Rakefile +17 -39
  7. data/lib/prawn/document/bounding_box.rb +85 -42
  8. data/lib/prawn/document/column_box.rb +21 -11
  9. data/lib/prawn/document/internals.rb +40 -147
  10. data/lib/prawn/document/span.rb +25 -17
  11. data/lib/prawn/document.rb +286 -245
  12. data/lib/prawn/encoding.rb +68 -101
  13. data/lib/prawn/errors.rb +47 -43
  14. data/lib/prawn/font.rb +204 -155
  15. data/lib/prawn/font_metric_cache.rb +25 -21
  16. data/lib/prawn/fonts/afm.rb +292 -0
  17. data/lib/prawn/{font → fonts}/dfont.rb +7 -13
  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 +142 -80
  21. data/lib/prawn/graphics/blend_mode.rb +65 -0
  22. data/lib/prawn/graphics/cap_style.rb +6 -5
  23. data/lib/prawn/graphics/color.rb +47 -44
  24. data/lib/prawn/graphics/dash.rb +30 -13
  25. data/lib/prawn/graphics/join_style.rb +13 -6
  26. data/lib/prawn/graphics/patterns.rb +221 -90
  27. data/lib/prawn/graphics/transformation.rb +21 -12
  28. data/lib/prawn/graphics/transparency.rb +21 -17
  29. data/lib/prawn/graphics.rb +155 -128
  30. data/lib/prawn/{layout/grid.rb → grid.rb} +110 -47
  31. data/lib/prawn/image_handler.rb +16 -2
  32. data/lib/prawn/images/image.rb +4 -2
  33. data/lib/prawn/images/jpg.rb +39 -30
  34. data/lib/prawn/images/png.rb +132 -169
  35. data/lib/prawn/images.rb +70 -62
  36. data/lib/prawn/measurement_extensions.rb +15 -10
  37. data/lib/prawn/measurements.rb +22 -23
  38. data/lib/prawn/outline.rb +301 -13
  39. data/lib/prawn/repeater.rb +19 -17
  40. data/lib/prawn/security/arcfour.rb +54 -0
  41. data/lib/prawn/security.rb +108 -86
  42. data/lib/prawn/soft_mask.rb +40 -41
  43. data/lib/prawn/stamp.rb +29 -12
  44. data/lib/prawn/text/box.rb +27 -29
  45. data/lib/prawn/text/formatted/arranger.rb +110 -67
  46. data/lib/prawn/text/formatted/box.rb +233 -165
  47. data/lib/prawn/text/formatted/fragment.rb +27 -27
  48. data/lib/prawn/text/formatted/line_wrap.rb +137 -97
  49. data/lib/prawn/text/formatted/parser.rb +149 -127
  50. data/lib/prawn/text/formatted/wrap.rb +57 -37
  51. data/lib/prawn/text/formatted.rb +6 -4
  52. data/lib/prawn/text.rb +105 -73
  53. data/lib/prawn/transformation_stack.rb +44 -0
  54. data/lib/prawn/utilities.rb +11 -21
  55. data/lib/prawn/version.rb +5 -0
  56. data/lib/prawn/view.rb +101 -0
  57. data/lib/prawn.rb +42 -68
  58. data/{data/images/fractal.jpg → manual/absolute_position.pdf} +0 -0
  59. data/manual/basic_concepts/adding_pages.rb +9 -10
  60. data/manual/basic_concepts/basic_concepts.rb +33 -24
  61. data/manual/basic_concepts/creation.rb +10 -11
  62. data/manual/basic_concepts/cursor.rb +9 -10
  63. data/manual/basic_concepts/measurement.rb +10 -11
  64. data/manual/basic_concepts/origin.rb +8 -9
  65. data/manual/basic_concepts/other_cursor_helpers.rb +17 -18
  66. data/manual/basic_concepts/view.rb +48 -0
  67. data/manual/bounding_box/bounding_box.rb +31 -29
  68. data/manual/bounding_box/bounds.rb +17 -18
  69. data/manual/bounding_box/canvas.rb +8 -9
  70. data/manual/bounding_box/creation.rb +8 -9
  71. data/manual/bounding_box/indentation.rb +22 -23
  72. data/manual/bounding_box/nesting.rb +32 -25
  73. data/manual/bounding_box/russian_boxes.rb +19 -19
  74. data/manual/bounding_box/stretchy.rb +18 -20
  75. data/manual/contents.rb +35 -0
  76. data/manual/cover.rb +43 -0
  77. data/manual/document_and_page_options/background.rb +16 -14
  78. data/manual/document_and_page_options/document_and_page_options.rb +26 -23
  79. data/manual/document_and_page_options/metadata.rb +21 -19
  80. data/manual/document_and_page_options/page_margins.rb +20 -22
  81. data/manual/document_and_page_options/page_size.rb +15 -15
  82. data/manual/document_and_page_options/print_scaling.rb +23 -0
  83. data/manual/example_helper.rb +5 -408
  84. data/manual/graphics/blend_mode.rb +52 -0
  85. data/manual/graphics/circle_and_ellipse.rb +8 -9
  86. data/manual/graphics/color.rb +11 -13
  87. data/manual/graphics/common_lines.rb +13 -12
  88. data/manual/graphics/fill_and_stroke.rb +10 -11
  89. data/manual/graphics/fill_rules.rb +13 -12
  90. data/manual/graphics/gradients.rb +28 -22
  91. data/manual/graphics/graphics.rb +52 -46
  92. data/manual/graphics/helper.rb +20 -10
  93. data/manual/graphics/line_width.rb +13 -12
  94. data/manual/graphics/lines_and_curves.rb +13 -14
  95. data/manual/graphics/polygon.rb +10 -12
  96. data/manual/graphics/rectangle.rb +7 -8
  97. data/manual/graphics/rotate.rb +9 -12
  98. data/manual/graphics/scale.rb +19 -18
  99. data/manual/graphics/soft_masks.rb +5 -7
  100. data/manual/graphics/stroke_cap.rb +10 -11
  101. data/manual/graphics/stroke_dash.rb +16 -17
  102. data/manual/graphics/stroke_join.rb +10 -11
  103. data/manual/graphics/translate.rb +13 -13
  104. data/manual/graphics/transparency.rb +11 -13
  105. data/manual/{manual/how_to_read_this_manual.rb → how_to_read_this_manual.rb} +23 -25
  106. data/manual/images/absolute_position.rb +9 -10
  107. data/manual/images/fit.rb +9 -10
  108. data/manual/images/horizontal.rb +13 -14
  109. data/manual/images/images.rb +31 -30
  110. data/manual/images/plain_image.rb +6 -7
  111. data/manual/images/scale.rb +12 -13
  112. data/manual/images/vertical.rb +19 -17
  113. data/manual/images/width_and_height.rb +13 -14
  114. data/manual/layout/boxes.rb +14 -15
  115. data/manual/layout/content.rb +12 -13
  116. data/manual/layout/layout.rb +19 -20
  117. data/manual/layout/simple_grid.rb +8 -9
  118. data/manual/outline/add_subsection_to.rb +26 -27
  119. data/manual/outline/insert_section_after.rb +19 -20
  120. data/manual/outline/outline.rb +23 -22
  121. data/manual/outline/sections_and_pages.rb +24 -25
  122. data/manual/repeatable_content/alternate_page_numbering.rb +36 -0
  123. data/manual/repeatable_content/page_numbering.rb +20 -19
  124. data/manual/repeatable_content/repeatable_content.rb +26 -22
  125. data/manual/repeatable_content/repeater.rb +18 -19
  126. data/manual/repeatable_content/stamp.rb +18 -19
  127. data/manual/security/encryption.rb +8 -11
  128. data/manual/security/permissions.rb +20 -15
  129. data/manual/security/security.rb +20 -20
  130. data/manual/table.rb +16 -0
  131. data/manual/text/alignment.rb +17 -18
  132. data/manual/text/color.rb +13 -13
  133. data/manual/text/column_box.rb +10 -12
  134. data/manual/text/fallback_fonts.rb +29 -25
  135. data/manual/text/font.rb +17 -18
  136. data/manual/text/font_size.rb +21 -22
  137. data/manual/text/font_style.rb +12 -10
  138. data/manual/text/formatted_callbacks.rb +36 -26
  139. data/manual/text/formatted_text.rb +41 -34
  140. data/manual/text/free_flowing_text.rb +28 -29
  141. data/manual/text/inline.rb +23 -26
  142. data/manual/text/kerning_and_character_spacing.rb +20 -21
  143. data/manual/text/leading.rb +10 -11
  144. data/manual/text/line_wrapping.rb +40 -21
  145. data/manual/text/paragraph_indentation.rb +17 -12
  146. data/manual/text/positioned_text.rb +19 -20
  147. data/manual/text/registering_families.rb +33 -30
  148. data/manual/text/rendering_and_color.rb +11 -12
  149. data/manual/text/right_to_left_text.rb +31 -20
  150. data/manual/text/rotation.rb +36 -27
  151. data/manual/text/single_usage.rb +13 -14
  152. data/manual/text/text.rb +62 -62
  153. data/manual/text/text_box_excess.rb +22 -19
  154. data/manual/text/text_box_extensions.rb +21 -18
  155. data/manual/text/text_box_overflow.rb +28 -21
  156. data/manual/text/utf8.rb +16 -17
  157. data/manual/text/win_ansi_charset.rb +29 -26
  158. data/prawn.gemspec +45 -43
  159. data/spec/extensions/encoding_helpers.rb +4 -3
  160. data/spec/prawn/document/bounding_box_spec.rb +550 -0
  161. data/spec/prawn/document/column_box_spec.rb +75 -0
  162. data/spec/prawn/document/security_spec.rb +176 -0
  163. data/spec/prawn/document_annotations_spec.rb +76 -0
  164. data/spec/prawn/document_destinations_spec.rb +15 -0
  165. data/spec/prawn/document_grid_spec.rb +99 -0
  166. data/spec/prawn/document_reference_spec.rb +27 -0
  167. data/spec/prawn/document_span_spec.rb +44 -0
  168. data/spec/prawn/document_spec.rb +805 -0
  169. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  170. data/spec/prawn/font_spec.rb +544 -0
  171. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  172. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  173. data/spec/prawn/graphics_spec.rb +872 -0
  174. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  175. data/spec/prawn/image_handler_spec.rb +53 -0
  176. data/spec/prawn/images/jpg_spec.rb +20 -0
  177. data/spec/prawn/images/png_spec.rb +283 -0
  178. data/spec/prawn/images_spec.rb +229 -0
  179. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  180. data/spec/prawn/outline_spec.rb +512 -0
  181. data/spec/prawn/repeater_spec.rb +166 -0
  182. data/spec/prawn/soft_mask_spec.rb +74 -0
  183. data/spec/prawn/stamp_spec.rb +173 -0
  184. data/spec/prawn/text/box_spec.rb +1110 -0
  185. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  186. data/spec/prawn/text/formatted/box_spec.rb +849 -0
  187. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  188. data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
  189. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  190. data/spec/prawn/text_draw_text_spec.rb +150 -0
  191. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  192. data/spec/prawn/text_spacing_spec.rb +95 -0
  193. data/spec/prawn/text_spec.rb +603 -0
  194. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  195. data/spec/prawn/transformation_stack_spec.rb +66 -0
  196. data/spec/prawn/view_spec.rb +63 -0
  197. data/spec/prawn_manual_spec.rb +35 -0
  198. data/spec/spec_helper.rb +22 -21
  199. data.tar.gz.sig +0 -0
  200. metadata +168 -307
  201. metadata.gz.sig +0 -0
  202. data/README.md +0 -109
  203. data/data/encodings/win_ansi.txt +0 -29
  204. data/data/images/16bit.alpha +0 -0
  205. data/data/images/16bit.dat +0 -0
  206. data/data/images/16bit.png +0 -0
  207. data/data/images/arrow.png +0 -0
  208. data/data/images/arrow2.png +0 -0
  209. data/data/images/barcode_issue.png +0 -0
  210. data/data/images/dice.alpha +0 -0
  211. data/data/images/dice.dat +0 -0
  212. data/data/images/dice.png +0 -0
  213. data/data/images/dice_interlaced.png +0 -0
  214. data/data/images/indexed_color.dat +0 -0
  215. data/data/images/indexed_color.png +0 -0
  216. data/data/images/letterhead.jpg +0 -0
  217. data/data/images/page_white_text.alpha +0 -0
  218. data/data/images/page_white_text.dat +0 -0
  219. data/data/images/page_white_text.png +0 -0
  220. data/data/images/pigs.jpg +0 -0
  221. data/data/images/prawn.png +0 -0
  222. data/data/images/ruport.png +0 -0
  223. data/data/images/ruport_data.dat +0 -0
  224. data/data/images/ruport_transparent.png +0 -0
  225. data/data/images/ruport_type0.png +0 -0
  226. data/data/images/stef.jpg +0 -0
  227. data/data/images/tru256.bmp +0 -0
  228. data/data/images/web-links.dat +0 -1
  229. data/data/images/web-links.png +0 -0
  230. data/data/pdfs/complex_template.pdf +0 -0
  231. data/data/pdfs/contains_ttf_font.pdf +0 -0
  232. data/data/pdfs/encrypted.pdf +0 -0
  233. data/data/pdfs/form.pdf +1 -819
  234. data/data/pdfs/hexagon.pdf +0 -61
  235. data/data/pdfs/indirect_reference.pdf +0 -86
  236. data/data/pdfs/multipage_template.pdf +0 -127
  237. data/data/pdfs/nested_pages.pdf +0 -118
  238. data/data/pdfs/page_without_mediabox.pdf +0 -193
  239. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  240. data/data/pdfs/two_hexagons.pdf +0 -90
  241. data/data/pdfs/version_1_6.pdf +0 -61
  242. data/data/shift_jis_text.txt +0 -1
  243. data/lib/pdf/core/annotations.rb +0 -60
  244. data/lib/pdf/core/byte_string.rb +0 -9
  245. data/lib/pdf/core/destinations.rb +0 -90
  246. data/lib/pdf/core/document_state.rb +0 -78
  247. data/lib/pdf/core/filter_list.rb +0 -51
  248. data/lib/pdf/core/filters.rb +0 -36
  249. data/lib/pdf/core/graphics_state.rb +0 -68
  250. data/lib/pdf/core/literal_string.rb +0 -16
  251. data/lib/pdf/core/name_tree.rb +0 -177
  252. data/lib/pdf/core/object_store.rb +0 -320
  253. data/lib/pdf/core/outline.rb +0 -315
  254. data/lib/pdf/core/page.rb +0 -212
  255. data/lib/pdf/core/page_geometry.rb +0 -126
  256. data/lib/pdf/core/pdf_object.rb +0 -124
  257. data/lib/pdf/core/reference.rb +0 -103
  258. data/lib/pdf/core/stream.rb +0 -98
  259. data/lib/pdf/core/text.rb +0 -275
  260. data/lib/pdf/core.rb +0 -35
  261. data/lib/prawn/compatibility.rb +0 -91
  262. data/lib/prawn/document/graphics_state.rb +0 -73
  263. data/lib/prawn/document/snapshot.rb +0 -89
  264. data/lib/prawn/font/afm.rb +0 -203
  265. data/lib/prawn/layout.rb +0 -20
  266. data/lib/prawn/table/cell/image.rb +0 -70
  267. data/lib/prawn/table/cell/in_table.rb +0 -27
  268. data/lib/prawn/table/cell/span_dummy.rb +0 -92
  269. data/lib/prawn/table/cell/subtable.rb +0 -65
  270. data/lib/prawn/table/cell/text.rb +0 -153
  271. data/lib/prawn/table/cell.rb +0 -770
  272. data/lib/prawn/table/cells.rb +0 -295
  273. data/lib/prawn/table.rb +0 -643
  274. data/manual/example_file.rb +0 -116
  275. data/manual/example_package.rb +0 -53
  276. data/manual/example_section.rb +0 -46
  277. data/manual/manual/cover.rb +0 -35
  278. data/manual/manual/foreword.rb +0 -85
  279. data/manual/manual/manual.rb +0 -35
  280. data/manual/syntax_highlight.rb +0 -52
  281. data/manual/table/basic_block.rb +0 -53
  282. data/manual/table/before_rendering_page.rb +0 -26
  283. data/manual/table/cell_border_lines.rb +0 -24
  284. data/manual/table/cell_borders_and_bg.rb +0 -31
  285. data/manual/table/cell_dimensions.rb +0 -30
  286. data/manual/table/cell_text.rb +0 -38
  287. data/manual/table/column_widths.rb +0 -30
  288. data/manual/table/content_and_subtables.rb +0 -39
  289. data/manual/table/creation.rb +0 -27
  290. data/manual/table/filtering.rb +0 -36
  291. data/manual/table/flow_and_header.rb +0 -17
  292. data/manual/table/image_cells.rb +0 -33
  293. data/manual/table/position.rb +0 -29
  294. data/manual/table/row_colors.rb +0 -20
  295. data/manual/table/span.rb +0 -30
  296. data/manual/table/style.rb +0 -22
  297. data/manual/table/table.rb +0 -52
  298. data/manual/table/width.rb +0 -27
  299. data/manual/templates/full_template.rb +0 -25
  300. data/manual/templates/page_template.rb +0 -48
  301. data/manual/templates/templates.rb +0 -27
  302. data/manual/text/group.rb +0 -29
  303. data/spec/acceptance/png.rb +0 -23
  304. data/spec/annotations_spec.rb +0 -74
  305. data/spec/bounding_box_spec.rb +0 -493
  306. data/spec/cell_spec.rb +0 -628
  307. data/spec/column_box_spec.rb +0 -33
  308. data/spec/destinations_spec.rb +0 -15
  309. data/spec/document_spec.rb +0 -761
  310. data/spec/extensions/mocha.rb +0 -44
  311. data/spec/filters_spec.rb +0 -34
  312. data/spec/font_metric_cache_spec.rb +0 -52
  313. data/spec/font_spec.rb +0 -464
  314. data/spec/formatted_text_arranger_spec.rb +0 -421
  315. data/spec/formatted_text_box_spec.rb +0 -650
  316. data/spec/formatted_text_fragment_spec.rb +0 -298
  317. data/spec/graphics_spec.rb +0 -651
  318. data/spec/grid_spec.rb +0 -85
  319. data/spec/image_handler_spec.rb +0 -42
  320. data/spec/images_spec.rb +0 -157
  321. data/spec/inline_formatted_text_parser_spec.rb +0 -564
  322. data/spec/jpg_spec.rb +0 -25
  323. data/spec/line_wrap_spec.rb +0 -333
  324. data/spec/measurement_units_spec.rb +0 -23
  325. data/spec/name_tree_spec.rb +0 -112
  326. data/spec/object_store_spec.rb +0 -170
  327. data/spec/outline_spec.rb +0 -448
  328. data/spec/pdf_object_spec.rb +0 -172
  329. data/spec/png_spec.rb +0 -240
  330. data/spec/reference_spec.rb +0 -82
  331. data/spec/repeater_spec.rb +0 -158
  332. data/spec/security_spec.rb +0 -158
  333. data/spec/snapshot_spec.rb +0 -186
  334. data/spec/soft_mask_spec.rb +0 -117
  335. data/spec/span_spec.rb +0 -44
  336. data/spec/stamp_spec.rb +0 -158
  337. data/spec/stream_spec.rb +0 -58
  338. data/spec/stroke_styles_spec.rb +0 -211
  339. data/spec/table/span_dummy_spec.rb +0 -17
  340. data/spec/table_spec.rb +0 -1355
  341. data/spec/template_spec.rb +0 -351
  342. data/spec/text_at_spec.rb +0 -130
  343. data/spec/text_box_spec.rb +0 -1030
  344. data/spec/text_rendering_mode_spec.rb +0 -45
  345. data/spec/text_spacing_spec.rb +0 -93
  346. data/spec/text_spec.rb +0 -425
  347. data/spec/text_with_inline_formatting_spec.rb +0 -35
  348. data/spec/transparency_spec.rb +0 -89
@@ -1,28 +1,28 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for document encryption.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::Example.generate("security.pdf", :page_size => "FOLIO") do
9
-
10
- package "security" do |p|
11
-
12
- p.example "encryption", :eval_source => false, :full_source => true
13
- p.example "permissions", :eval_source => false, :full_source => true
14
-
5
+ require_relative '../example_helper'
6
+
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
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
- Prawn::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
18
+ Prawn::ManualBuilder::Example.generate(filename) do
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
- Prawn::Example.generate(filename) do
11
- text "Default color is black"
9
+ Prawn::ManualBuilder::Example.generate(filename) do
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
- Prawn::Example.generate(filename) do
13
- text "The Prince", :align => :center, :size => 18
14
- text "Niccolò Machiavelli", :align => :center, :size => 14
11
+ Prawn::ManualBuilder::Example.generate(filename) do
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::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
- Prawn::Example.generate(filename) do
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
-
17
- file = "#{Prawn::DATADIR}/fonts/Action Man.dfont"
18
- font_families["Action Man"] = {
19
- :normal => { :file => file, :font => "ActionMan" },
15
+
16
+ file = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
17
+ font_families['Panic Sans'] = {
18
+ normal: { file: file, font: 'PanicSans' }
20
19
  }
21
-
22
- font("Action Man") 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"])
20
+
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
- Prawn::Example.generate(filename) do
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."
26
-
23
+ font 'Times-Roman'
24
+ text 'Written in Times.'
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."
34
-
32
+ text 'Written in Times again as we left the previous block.'
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,36 +10,35 @@
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
- Prawn::Example.generate(filename) do
17
+ Prawn::ManualBuilder::Example.generate(filename) do
19
18
  text "Let's see which is the current font_size: #{font_size.inspect}"
20
-
19
+
21
20
  move_down 10
22
21
  font_size 16
23
- text "Yeah, something bigger!"
24
-
22
+ text 'Yeah, something bigger!'
23
+
25
24
  move_down 10
26
- font_size(25) { text "Even bigger!" }
27
-
25
+ font_size(25) { text 'Even bigger!' }
26
+
28
27
  move_down 10
29
- text "Back to 16 again."
30
-
28
+ text 'Back to 16 again.'
29
+
31
30
  move_down 10
32
- text "Single line on 20 using the :size option.", :size => 20
33
-
31
+ text 'Single line on 20 using the :size option.', size: 20
32
+
34
33
  move_down 10
35
- text "Back to 16 once more."
36
-
34
+ text 'Back to 16 once more.'
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
- Prawn::Example.generate(filename) do
15
- ["Courier", "Helvetica", "Times-Roman"].each do |example_font|
13
+ Prawn::ManualBuilder::Example.generate(filename) do
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
-
18
- [:bold, :bold_italic, :italic, :normal].each do |style|
19
- font example_font, :style => style
19
+
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
- Prawn::Example.generate(filename) do
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
-
44
- @document.fill_circle(fragment.top_left, @radius)
45
- @document.fill_circle(fragment.top_right, @radius)
43
+ @document.stroke_polygon(
44
+ fragment.top_left,
45
+ fragment.top_right,
46
+ fragment.bottom_right,
47
+ fragment.bottom_left
48
+ )
49
+
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)
53
-
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
57
+ highlight = HighlightCallback.new(color: 'ffff00', document: self)
58
+ border = ConnectedBorderCallback.new(radius: 2.5, document: self)
59
+
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
  #
@@ -17,38 +17,45 @@
17
17
  # <code>:character_spacing</code> (additional space between the characters),
18
18
  # <code>:font</code> (the name of a registered font), <code>:color</code> (the
19
19
  # same input accepted by <code>fill_color</code> and <code>stroke_color</code>),
20
- # <code>:link</code> (an URL to create a link), <code>:anchor</code> (a
21
- # destination inside the document), and <code>:local</code> (a link to a local
22
- # file).
23
- #
24
- require File.expand_path(File.join(File.dirname(__FILE__),
25
- %w[.. example_helper]))
20
+ # <code>:link</code> (an URL to create a link), and <code>:local</code>
21
+ # (a link to a local file).
22
+
23
+ require_relative '../example_helper'
26
24
 
27
25
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
28
- Prawn::Example.generate(filename) do
29
- formatted_text [ { :text => "Some bold. ", :styles => [:bold] },
30
- { :text => "Some italic. ", :styles => [:italic] },
31
- { :text => "Bold italic. ", :styles => [:bold, :italic] },
32
- { :text => "Bigger Text. ", :size => 20 },
33
- { :text => "More spacing. ", :character_spacing => 3 },
34
- { :text => "Different Font. ", :font => "Courier" },
35
- { :text => "Some coloring. ", :color => "FF00FF" },
36
- { :text => "Link to the wiki. ",
37
- :color => "0000FF",
38
- :link => "https://github.com/prawnpdf/prawn/wiki" },
39
- { :text => "Link to the Text Reference. " ,
40
- :color => "0000FF",
41
- :anchor => "Text Reference" },
42
- { :text => "Link to a local file. ",
43
- :color => "0000FF",
44
- :local => "./local_file.txt" }
45
- ]
46
-
47
- formatted_text_box [ { :text => "Just your regular" },
48
- { :text => " text_box ", :font => "Courier" },
49
- { :text => "with some additional formatting options " +
50
- "added to the mix.",
51
- :color => [50, 100, 0, 0],
52
- :styles => [:italic] }
53
- ], :at => [100, 100], :width => 200, :height => 100
26
+ Prawn::ManualBuilder::Example.generate(filename) do
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
+ ])
46
+
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
+ )
54
61
  end